rscons 1.18.0 → 1.19.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/lib/rscons.rb +1 -0
- data/lib/rscons/cache.rb +10 -10
- data/lib/rscons/environment.rb +22 -5
- data/lib/rscons/util.rb +34 -0
- data/lib/rscons/version.rb +1 -1
- data/rscons.gemspec +1 -1
- metadata +8 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8c7771e92dd77c04d253785e7c9a8d41afdf507d0e7d8a2e7276b9d3fa34b3c4
|
|
4
|
+
data.tar.gz: 7134613cd37d9b3d4c57e619f42658acbace9ce8cb2ad8d031597d5d00e3334e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 34b8ede6f30e98ffa18bc66c1efe2d374adafc7395487fa86f994f170fd86628813f7a4df66db594e0691ea91288345519ad3670d19c4b112b9681cc6c33e144
|
|
7
|
+
data.tar.gz: 4550902549425f79320a5c780d94a7e562a67b16894a9b42d223f91f2fafa50a9ee997d7254b092fd94931849f3c9b816358db96b765cce0700c469ae15592f6
|
data/lib/rscons.rb
CHANGED
data/lib/rscons/cache.rb
CHANGED
|
@@ -282,6 +282,16 @@ module Rscons
|
|
|
282
282
|
@cache["directories"].keys
|
|
283
283
|
end
|
|
284
284
|
|
|
285
|
+
# Return a file's checksum, or the previously calculated checksum for
|
|
286
|
+
# the same file.
|
|
287
|
+
#
|
|
288
|
+
# @param file [String] The file name.
|
|
289
|
+
#
|
|
290
|
+
# @return [String] The file's checksum.
|
|
291
|
+
def lookup_checksum(file)
|
|
292
|
+
@lookup_checksums[file] || calculate_checksum(file)
|
|
293
|
+
end
|
|
294
|
+
|
|
285
295
|
private
|
|
286
296
|
|
|
287
297
|
# Return a String key based on the target name to use in the on-disk cache.
|
|
@@ -312,16 +322,6 @@ module Rscons
|
|
|
312
322
|
@lookup_checksums = {}
|
|
313
323
|
end
|
|
314
324
|
|
|
315
|
-
# Return a file's checksum, or the previously calculated checksum for
|
|
316
|
-
# the same file.
|
|
317
|
-
#
|
|
318
|
-
# @param file [String] The file name.
|
|
319
|
-
#
|
|
320
|
-
# @return [String] The file's checksum.
|
|
321
|
-
def lookup_checksum(file)
|
|
322
|
-
@lookup_checksums[file] || calculate_checksum(file)
|
|
323
|
-
end
|
|
324
|
-
|
|
325
325
|
# Calculate and return a file's checksum.
|
|
326
326
|
#
|
|
327
327
|
# @param file [String] The file name.
|
data/lib/rscons/environment.rb
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
require "fileutils"
|
|
2
2
|
require "set"
|
|
3
3
|
require "shellwords"
|
|
4
|
-
require "thwait"
|
|
5
4
|
|
|
6
5
|
module Rscons
|
|
7
6
|
# The Environment class is the main programmatic interface to Rscons. It
|
|
@@ -341,6 +340,7 @@ module Rscons
|
|
|
341
340
|
cache.clear_checksum_cache!
|
|
342
341
|
|
|
343
342
|
if job
|
|
343
|
+
validate_user_deps(job[:target], @user_deps[job[:target]], cache)
|
|
344
344
|
result = run_builder(job[:builder],
|
|
345
345
|
job[:target],
|
|
346
346
|
job[:sources],
|
|
@@ -1011,10 +1011,7 @@ module Rscons
|
|
|
1011
1011
|
!thread.alive?
|
|
1012
1012
|
end
|
|
1013
1013
|
else
|
|
1014
|
-
|
|
1015
|
-
raise "No threads to wait for"
|
|
1016
|
-
end
|
|
1017
|
-
ThreadsWait.new(*threads).next_wait
|
|
1014
|
+
Util.wait_for_thread(*threads)
|
|
1018
1015
|
end
|
|
1019
1016
|
end
|
|
1020
1017
|
|
|
@@ -1107,5 +1104,25 @@ module Rscons
|
|
|
1107
1104
|
end
|
|
1108
1105
|
deps
|
|
1109
1106
|
end
|
|
1107
|
+
|
|
1108
|
+
# Ensures that user dependencies exist with valid checksums in the
|
|
1109
|
+
# cache. Raises an exception if any dependency is invalid.
|
|
1110
|
+
#
|
|
1111
|
+
# @param target [String]
|
|
1112
|
+
# Target to be built
|
|
1113
|
+
# @param user_deps [Array<String>, nil]
|
|
1114
|
+
# User dependencies of the target
|
|
1115
|
+
# @param cache [Cache]
|
|
1116
|
+
# Rscons cache instance
|
|
1117
|
+
#
|
|
1118
|
+
# @return [void]
|
|
1119
|
+
def validate_user_deps(target, user_deps, cache)
|
|
1120
|
+
return if user_deps.nil?
|
|
1121
|
+
user_deps.each do |dep|
|
|
1122
|
+
if cache.lookup_checksum(dep) == ""
|
|
1123
|
+
raise "User dependency #{dep} of target #{target} is invalid"
|
|
1124
|
+
end
|
|
1125
|
+
end
|
|
1126
|
+
end
|
|
1110
1127
|
end
|
|
1111
1128
|
end
|
data/lib/rscons/util.rb
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Rscons
|
|
2
|
+
# A collection of stand-alone utility methods.
|
|
3
|
+
module Util
|
|
4
|
+
class << self
|
|
5
|
+
|
|
6
|
+
# Wait for any of a number of threads to complete.
|
|
7
|
+
#
|
|
8
|
+
# @param threads [Array<Thread>]
|
|
9
|
+
# Threads to wait for.
|
|
10
|
+
#
|
|
11
|
+
# @return [Thread]
|
|
12
|
+
# The Thread that completed.
|
|
13
|
+
def wait_for_thread(*threads)
|
|
14
|
+
if threads.empty?
|
|
15
|
+
raise "No threads to wait for"
|
|
16
|
+
end
|
|
17
|
+
queue = Queue.new
|
|
18
|
+
threads.each do |thread|
|
|
19
|
+
# Create a wait thread for each thread we're waiting for.
|
|
20
|
+
Thread.new do
|
|
21
|
+
begin
|
|
22
|
+
thread.join
|
|
23
|
+
ensure
|
|
24
|
+
queue.push(thread)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
# Wait for any thread to complete.
|
|
29
|
+
queue.pop
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
data/lib/rscons/version.rb
CHANGED
data/rscons.gemspec
CHANGED
|
@@ -22,7 +22,7 @@ Gem::Specification.new do |gem|
|
|
|
22
22
|
|
|
23
23
|
gem.add_development_dependency "rspec"
|
|
24
24
|
gem.add_development_dependency "rake"
|
|
25
|
-
gem.add_development_dependency "simplecov"
|
|
25
|
+
gem.add_development_dependency "simplecov", "~> 0.15.0"
|
|
26
26
|
gem.add_development_dependency "yard"
|
|
27
27
|
gem.add_development_dependency "rdoc"
|
|
28
28
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rscons
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.19.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Josh Holtrop
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-04-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: json
|
|
@@ -62,16 +62,16 @@ dependencies:
|
|
|
62
62
|
name: simplecov
|
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
|
64
64
|
requirements:
|
|
65
|
-
- - "
|
|
65
|
+
- - "~>"
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
|
-
version:
|
|
67
|
+
version: 0.15.0
|
|
68
68
|
type: :development
|
|
69
69
|
prerelease: false
|
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
|
71
71
|
requirements:
|
|
72
|
-
- - "
|
|
72
|
+
- - "~>"
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
|
-
version:
|
|
74
|
+
version: 0.15.0
|
|
75
75
|
- !ruby/object:Gem::Dependency
|
|
76
76
|
name: yard
|
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -131,6 +131,7 @@ files:
|
|
|
131
131
|
- lib/rscons/environment.rb
|
|
132
132
|
- lib/rscons/job_set.rb
|
|
133
133
|
- lib/rscons/threaded_command.rb
|
|
134
|
+
- lib/rscons/util.rb
|
|
134
135
|
- lib/rscons/varset.rb
|
|
135
136
|
- lib/rscons/version.rb
|
|
136
137
|
- rscons.gemspec
|
|
@@ -153,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
153
154
|
- !ruby/object:Gem::Version
|
|
154
155
|
version: '0'
|
|
155
156
|
requirements: []
|
|
156
|
-
rubygems_version: 3.
|
|
157
|
+
rubygems_version: 3.1.2
|
|
157
158
|
signing_key:
|
|
158
159
|
specification_version: 4
|
|
159
160
|
summary: Software construction library inspired by SCons and implemented in Ruby
|