lockf.rb 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/tests.yml +3 -3
- data/.gitignore +4 -10
- data/.rubocop.yml +9 -0
- data/Rakefile.rb +11 -3
- data/lib/lock/file/ffi.rb +11 -3
- data/lib/lock/file/version.rb +1 -1
- data/lib/lock/file.rb +5 -10
- data/lockf.rb.gemspec +1 -1
- data/test/lock_file_test.rb +1 -0
- data/test/readme_test.rb +9 -9
- metadata +8 -10
- data/.clang-format +0 -11
- data/.uncrustify.cfg +0 -2
- /data/share/lockf.rb/examples/{1_lockfile_blocking_variant.rb → 1_lock_file_blocking_variant.rb} +0 -0
- /data/share/lockf.rb/examples/{2_lockfile_nonblocking_variant.rb → 2_lock_file_nonblocking_variant.rb} +0 -0
- /data/share/lockf.rb/examples/{3_ffilockf_blocking_variant.rb → 3_ffi_lockf_blocking_variant.rb} +0 -0
- /data/share/lockf.rb/examples/{4_ffilockf_nonblocking_variant.rb → 4_ffi_lockf_nonblocking_variant.rb} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0f68d54d3ad30fc3c9c6316910adebcd74645876546aec01c86402261275ff6
|
4
|
+
data.tar.gz: ed9cbe6b94840dd3987d16825737b3e98c42efb4904f15fd2ef206ebd0ab431a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 663fb2919e2560b75307ce6ea01291582e61fca0fa14f9c86f54dfd7ab598a2301b361be09952800a93089a5010f53dcd8ee76870ba1cc44ff7470ef1295abb0
|
7
|
+
data.tar.gz: a249a8c95037378796bbc8cb4fd3224da60137117902ac189546860791bfa9b1256a26636895762ffbcd3a74037e4bb38c26d6aefe57721ca6d603a0022f1128
|
data/.github/workflows/tests.yml
CHANGED
@@ -11,8 +11,8 @@ jobs:
|
|
11
11
|
strategy:
|
12
12
|
fail-fast: false
|
13
13
|
matrix:
|
14
|
-
os: [ubuntu-latest]
|
15
|
-
ruby: [3.2]
|
14
|
+
os: [ubuntu-latest, macos-latest]
|
15
|
+
ruby: [3.2, 3.3]
|
16
16
|
runs-on: ${{ matrix.os }}
|
17
17
|
steps:
|
18
18
|
- uses: actions/checkout@v2
|
@@ -20,4 +20,4 @@ jobs:
|
|
20
20
|
with:
|
21
21
|
ruby-version: ${{ matrix.ruby }}
|
22
22
|
- run: bundle install
|
23
|
-
- run:
|
23
|
+
- run: ruby -S rake ci
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -14,6 +14,14 @@ Layout/MultilineMethodCallIndentation:
|
|
14
14
|
Enabled: false
|
15
15
|
Layout/ArgumentAlignment:
|
16
16
|
Enabled: false
|
17
|
+
Layout/MultilineArrayBraceLayout:
|
18
|
+
Enabled: false
|
19
|
+
Layout/ExtraSpacing:
|
20
|
+
Enabled: false
|
21
|
+
Style/MultilineIfModifier:
|
22
|
+
Enabled: false
|
23
|
+
Layout/ArrayAlignment:
|
24
|
+
Enabled: false
|
17
25
|
|
18
26
|
##
|
19
27
|
# Options for all cops.
|
@@ -23,3 +31,4 @@ AllCops:
|
|
23
31
|
- lib/*.rb
|
24
32
|
- lib/**/*.rb
|
25
33
|
- test/*.rb
|
34
|
+
- share/lockf.rb/examples/*.rb
|
data/Rakefile.rb
CHANGED
@@ -1,12 +1,20 @@
|
|
1
1
|
require "bundler/setup"
|
2
2
|
|
3
3
|
namespace :format do
|
4
|
-
desc "
|
5
|
-
task :
|
4
|
+
desc "Apply rubocop fixes"
|
5
|
+
task :apply do
|
6
6
|
sh "bundle exec rubocop -A"
|
7
7
|
end
|
8
|
+
|
9
|
+
desc "Run rubocop"
|
10
|
+
task :check do
|
11
|
+
sh "bundle exec rubocop"
|
12
|
+
end
|
8
13
|
end
|
9
|
-
task format: %w[format:
|
14
|
+
task format: %w[format:apply]
|
15
|
+
|
16
|
+
desc "Run CI tasks"
|
17
|
+
task ci: %i[format:check test]
|
10
18
|
|
11
19
|
desc "Run tests"
|
12
20
|
task :test do
|
data/lib/lock/file/ffi.rb
CHANGED
@@ -27,10 +27,18 @@ class Lock::File
|
|
27
27
|
.zero? || raise(SystemCallError.new("lockf", Fiddle.last_error))
|
28
28
|
end
|
29
29
|
|
30
|
-
|
31
|
-
|
30
|
+
##
|
31
|
+
# @return [Fiddle::Handle]
|
32
32
|
def libc
|
33
|
-
@libc ||=
|
33
|
+
@libc ||= begin
|
34
|
+
globs = %w[
|
35
|
+
/lib/libc.so.*
|
36
|
+
/usr/lib/libc.so.*
|
37
|
+
/lib/x86_64-linux-gnu/libc.so.*
|
38
|
+
/lib/i386-linux-gnu/libc.so.*
|
39
|
+
]
|
40
|
+
Fiddle.dlopen(Dir[*globs].first)
|
41
|
+
end
|
34
42
|
end
|
35
43
|
end
|
36
44
|
end
|
data/lib/lock/file/version.rb
CHANGED
data/lib/lock/file.rb
CHANGED
@@ -6,7 +6,6 @@ end unless defined?(Lock)
|
|
6
6
|
# [lockf(3)](https://man.freebsd.org/cgi/man.cgi?query=lockf&sektion=3)
|
7
7
|
# interface
|
8
8
|
class Lock::File
|
9
|
-
require "tmpdir"
|
10
9
|
require_relative "file/version"
|
11
10
|
require_relative "file/ffi"
|
12
11
|
require_relative "file/constants"
|
@@ -15,23 +14,19 @@ class Lock::File
|
|
15
14
|
include Constants
|
16
15
|
|
17
16
|
##
|
17
|
+
# Accepts the same parameters as Tempfile.new
|
18
|
+
#
|
18
19
|
# @example
|
19
20
|
# lockf = Lock::File.temporary_file
|
20
21
|
# lockf.lock
|
21
22
|
# # ...
|
22
23
|
#
|
23
|
-
# @param [String] basename
|
24
|
-
# @param [String] tmpdir
|
25
24
|
# @return [Lock::File]
|
26
25
|
# Returns a {Lock::File Lock::File} for a random,
|
27
26
|
# unlinked temporary file
|
28
|
-
def self.
|
27
|
+
def self.temporary_file(...)
|
29
28
|
require "tempfile" unless defined?(Tempfile)
|
30
|
-
|
31
|
-
Lock::File.new(file)
|
32
|
-
end
|
33
|
-
class << self
|
34
|
-
alias_method :temporary_file, :from_temporary_file
|
29
|
+
Lock::File.new Tempfile.new(...).tap(&:unlink)
|
35
30
|
end
|
36
31
|
|
37
32
|
##
|
@@ -62,7 +57,7 @@ class Lock::File
|
|
62
57
|
lockf(@file, F_LOCK, @size)
|
63
58
|
rescue Errno::EINTR => ex
|
64
59
|
tries += 1
|
65
|
-
tries == 3 ? raise(ex) : retry
|
60
|
+
(tries == 3) ? raise(ex) : retry
|
66
61
|
end
|
67
62
|
|
68
63
|
##
|
data/lockf.rb.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |gem|
|
|
14
14
|
|
15
15
|
gem.add_runtime_dependency "fiddle", "~> 1.1"
|
16
16
|
gem.add_development_dependency "yard", "~> 0.9"
|
17
|
-
gem.add_development_dependency "standard", "~> 1.
|
17
|
+
gem.add_development_dependency "standard", "~> 1.39"
|
18
18
|
gem.add_development_dependency "rubocop", "~> 1.29"
|
19
19
|
gem.add_development_dependency "test-unit", "~> 3.5"
|
20
20
|
gem.add_development_dependency "test-cmd.rb", "~> 0.12"
|
data/test/lock_file_test.rb
CHANGED
data/test/readme_test.rb
CHANGED
@@ -5,29 +5,29 @@ require "test/cmd"
|
|
5
5
|
|
6
6
|
class Lock::File::ReadmeTest < Test::Unit::TestCase
|
7
7
|
def test_lockfile_blocking_variant
|
8
|
-
r = ruby(readme_example("
|
9
|
-
["Lock acquired by parent process
|
10
|
-
"Child process waiting on lock
|
11
|
-
"Lock acquired by child process
|
8
|
+
r = ruby(readme_example("1_lock_file_blocking_variant.rb"))
|
9
|
+
["Lock acquired by parent process (.+)\n",
|
10
|
+
"Child process waiting on lock (.+)\n",
|
11
|
+
"Lock acquired by child process (.+)\n"
|
12
12
|
].each { assert_match Regexp.new(_1), r.stdout }
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_lockfile_nonblocking_variant
|
16
|
-
r = ruby(readme_example("
|
17
|
-
["Lock acquired by parent process
|
16
|
+
r = ruby(readme_example("2_lock_file_nonblocking_variant.rb"))
|
17
|
+
["Lock acquired by parent process (.+)\n",
|
18
18
|
"(Lock would block\n){3,4}",
|
19
|
-
"Lock acquired by child process
|
19
|
+
"Lock acquired by child process (.+)\n"
|
20
20
|
].each { assert_match Regexp.new(_1), r.stdout }
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_ffi_lockf_blocking_variant
|
24
24
|
assert_equal "Lock acquired\nLock released\n",
|
25
|
-
ruby(readme_example("
|
25
|
+
ruby(readme_example("3_ffi_lockf_blocking_variant.rb")).stdout
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_ffi_lockf_nonblocking_variant
|
29
29
|
assert_equal "Lock acquired\nLock released\n",
|
30
|
-
ruby(readme_example("
|
30
|
+
ruby(readme_example("4_ffi_lockf_nonblocking_variant.rb")).stdout
|
31
31
|
end
|
32
32
|
|
33
33
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lockf.rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- '0x1eef'
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-06-
|
11
|
+
date: 2024-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fiddle
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
47
|
+
version: '1.39'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
54
|
+
version: '1.39'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rubocop
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,12 +102,10 @@ extensions: []
|
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
104
|
- ".bundle/config"
|
105
|
-
- ".clang-format"
|
106
105
|
- ".github/workflows/tests.yml"
|
107
106
|
- ".gitignore"
|
108
107
|
- ".projectile"
|
109
108
|
- ".rubocop.yml"
|
110
|
-
- ".uncrustify.cfg"
|
111
109
|
- ".yardopts"
|
112
110
|
- Gemfile
|
113
111
|
- LICENSE
|
@@ -121,10 +119,10 @@ files:
|
|
121
119
|
- lib/lockf.rb
|
122
120
|
- lib/lockfile.rb
|
123
121
|
- lockf.rb.gemspec
|
124
|
-
- share/lockf.rb/examples/
|
125
|
-
- share/lockf.rb/examples/
|
126
|
-
- share/lockf.rb/examples/
|
127
|
-
- share/lockf.rb/examples/
|
122
|
+
- share/lockf.rb/examples/1_lock_file_blocking_variant.rb
|
123
|
+
- share/lockf.rb/examples/2_lock_file_nonblocking_variant.rb
|
124
|
+
- share/lockf.rb/examples/3_ffi_lockf_blocking_variant.rb
|
125
|
+
- share/lockf.rb/examples/4_ffi_lockf_nonblocking_variant.rb
|
128
126
|
- test/lock_file_test.rb
|
129
127
|
- test/readme_test.rb
|
130
128
|
- test/setup.rb
|
data/.clang-format
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
BasedOnStyle: LLVM
|
2
|
-
IndentWidth: 2
|
3
|
-
SortIncludes: false
|
4
|
-
UseTab: Never
|
5
|
-
BreakBeforeBraces: Allman
|
6
|
-
AllowShortFunctionsOnASingleLine: Inline
|
7
|
-
AlwaysBreakAfterDefinitionReturnType: TopLevel
|
8
|
-
BreakBeforeBinaryOperators: All
|
9
|
-
BinPackArguments: false
|
10
|
-
AlignConsecutiveAssignments: true
|
11
|
-
AlwaysBreakAfterReturnType: None
|
data/.uncrustify.cfg
DELETED
/data/share/lockf.rb/examples/{1_lockfile_blocking_variant.rb → 1_lock_file_blocking_variant.rb}
RENAMED
File without changes
|
File without changes
|
/data/share/lockf.rb/examples/{3_ffilockf_blocking_variant.rb → 3_ffi_lockf_blocking_variant.rb}
RENAMED
File without changes
|
File without changes
|