autoproj 2.12.1 → 2.13.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/.travis.yml +5 -3
- data/autoproj.gemspec +6 -6
- data/bin/alog +1 -0
- data/bin/autoproj_bootstrap +1 -1
- data/bin/autoproj_install +1 -1
- data/lib/autoproj.rb +2 -0
- data/lib/autoproj/autobuild_extensions/dsl.rb +2 -2
- data/lib/autoproj/cli/main.rb +5 -2
- data/lib/autoproj/cli/status.rb +15 -9
- data/lib/autoproj/cli/update.rb +65 -9
- data/lib/autoproj/cli/utility.rb +4 -3
- data/lib/autoproj/configuration.rb +3 -3
- data/lib/autoproj/default.osdeps +11 -0
- data/lib/autoproj/manifest.rb +2 -2
- data/lib/autoproj/ops/import.rb +14 -1
- data/lib/autoproj/ops/install.rb +1 -1
- data/lib/autoproj/ops/tools.rb +2 -2
- data/lib/autoproj/package_definition.rb +1 -1
- data/lib/autoproj/package_set.rb +2 -2
- data/lib/autoproj/test.rb +6 -4
- data/lib/autoproj/variable_expansion.rb +3 -1
- data/lib/autoproj/vcs_definition.rb +25 -12
- data/lib/autoproj/version.rb +1 -1
- data/lib/autoproj/workspace.rb +2 -1
- metadata +15 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0594abdc1c9523788d70185cef7fee0094e70aa0aad5a7c06432e78fd3f2324
|
4
|
+
data.tar.gz: 7fbde174feb043143cf9d64a23517858982216bd15e33c659954085f5168af64
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82529e41b820b90048063019025470390718393f7479dfbf9714d4898abdc6d8a327306f1b672191f48e925b1af8c2e05e94583a4f9dde8a418f6aac11a99523
|
7
|
+
data.tar.gz: 9eeec00ec5b9aaaa565e85a65b2a07a22ba0701044657434d2a99c837174e0d87551a389f73d3ee55eff0f05ee2221b61c7f35e2b057c2fe5bbfbbe568015723
|
data/.travis.yml
CHANGED
data/autoproj.gemspec
CHANGED
@@ -25,14 +25,14 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
26
26
|
|
27
27
|
s.add_runtime_dependency "bundler"
|
28
|
-
s.add_runtime_dependency "autobuild", ">= 1.
|
28
|
+
s.add_runtime_dependency "autobuild", ">= 1.21.0"
|
29
29
|
s.add_runtime_dependency "backports", '~> 3.0'
|
30
30
|
s.add_runtime_dependency "utilrb", '~> 3.0.0', ">= 3.0.0"
|
31
|
-
s.add_runtime_dependency "thor", '~>
|
32
|
-
s.add_runtime_dependency 'concurrent-ruby', '~> 1.
|
33
|
-
s.add_runtime_dependency 'tty-color', '~> 0.
|
34
|
-
s.add_runtime_dependency 'tty-prompt', '~> 0.
|
35
|
-
s.add_runtime_dependency 'tty-spinner', '~> 0.
|
31
|
+
s.add_runtime_dependency "thor", '~> 1.0'
|
32
|
+
s.add_runtime_dependency 'concurrent-ruby', '~> 1.1'
|
33
|
+
s.add_runtime_dependency 'tty-color', '~> 0.5.0'
|
34
|
+
s.add_runtime_dependency 'tty-prompt', '~> 0.21.0'
|
35
|
+
s.add_runtime_dependency 'tty-spinner', '~> 0.9.0'
|
36
36
|
s.add_runtime_dependency 'rb-inotify' if RbConfig::CONFIG['target_os'] =~ /linux/
|
37
37
|
s.add_runtime_dependency 'xdg', '= 2.2.5'
|
38
38
|
s.add_development_dependency "flexmock", '~> 2.0', ">= 2.0.0"
|
data/bin/alog
CHANGED
data/bin/autoproj_bootstrap
CHANGED
@@ -264,7 +264,7 @@ module Autoproj
|
|
264
264
|
end
|
265
265
|
|
266
266
|
def add_seed_config(path)
|
267
|
-
@config.merge!(YAML.safe_load(File.read(path)))
|
267
|
+
@config.merge!(YAML.safe_load(File.read(path), [Symbol]))
|
268
268
|
end
|
269
269
|
|
270
270
|
# Parse the provided command line options and returns the non-options
|
data/bin/autoproj_install
CHANGED
@@ -264,7 +264,7 @@ module Autoproj
|
|
264
264
|
end
|
265
265
|
|
266
266
|
def add_seed_config(path)
|
267
|
-
@config.merge!(YAML.safe_load(File.read(path)))
|
267
|
+
@config.merge!(YAML.safe_load(File.read(path), [Symbol]))
|
268
268
|
end
|
269
269
|
|
270
270
|
# Parse the provided command line options and returns the non-options
|
data/lib/autoproj.rb
CHANGED
@@ -9,6 +9,8 @@
|
|
9
9
|
require 'backports/2.4.0/nil_class/dup'
|
10
10
|
require 'backports/2.4.0/false_class/dup'
|
11
11
|
require 'backports/2.4.0/true_class/dup'
|
12
|
+
require 'backports/2.4.0/hash/transform_values'
|
13
|
+
require 'backports/2.5.0/hash/transform_keys'
|
12
14
|
|
13
15
|
require 'autobuild'
|
14
16
|
require 'autoproj/autobuild'
|
@@ -421,9 +421,9 @@ def source_package(options, workspace: Autoproj.workspace)
|
|
421
421
|
end
|
422
422
|
|
423
423
|
# @deprecated use Autoproj.config.declare instead
|
424
|
-
def configuration_option(*opts, &block)
|
424
|
+
def configuration_option(*opts, **kw, &block)
|
425
425
|
Autoproj.warn_deprecated __method__, "use Autoproj.config.declare instead"
|
426
|
-
Autoproj.config.declare(*opts, &block)
|
426
|
+
Autoproj.config.declare(*opts, **kw, &block)
|
427
427
|
end
|
428
428
|
|
429
429
|
# @deprecated use Autoproj.config.get instead
|
data/lib/autoproj/cli/main.rb
CHANGED
@@ -134,8 +134,9 @@ def run_autoproj_cli(filename, classname, report_options, *args, tool_failure_mo
|
|
134
134
|
end
|
135
135
|
cli = CLI.const_get(classname).new
|
136
136
|
begin
|
137
|
-
run_args = cli.validate_options(args, options.merge(extra_options))
|
138
|
-
|
137
|
+
*run_args, kw = cli.validate_options(args, options.merge(extra_options))
|
138
|
+
kw = (kw || {}).transform_keys(&:to_sym)
|
139
|
+
cli.run(*run_args, **kw)
|
139
140
|
ensure
|
140
141
|
cli.notify_env_sh_updated if cli.respond_to?(:notify_env_sh_updated)
|
141
142
|
end
|
@@ -228,6 +229,8 @@ def status(*packages)
|
|
228
229
|
desc: "compare to the given baseline. if 'true', the comparison will ignore any override, otherwise it will take into account overrides only up to the given package set"
|
229
230
|
option :auto_exclude, type: :boolean,
|
230
231
|
desc: 'if true, packages that fail to import will be excluded from the build'
|
232
|
+
option :ask, type: :boolean, default: false,
|
233
|
+
desc: 'ask whether each package should or should not be updated'
|
231
234
|
def update(*packages)
|
232
235
|
report_options = Hash[silent: false, on_package_failures: default_report_on_package_failures]
|
233
236
|
if options[:auto_exclude]
|
data/lib/autoproj/cli/status.rb
CHANGED
@@ -73,7 +73,7 @@ def snapshot_overrides_vcs?(importer, vcs, snapshot)
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
-
def report_exception(package_status, msg, e)
|
76
|
+
def self.report_exception(package_status, msg, e)
|
77
77
|
package_status.msg << Autoproj.color(" #{msg} (#{e})", :red)
|
78
78
|
if Autobuild.debug
|
79
79
|
package_status.msg.concat(e.backtrace.map do |line|
|
@@ -82,8 +82,8 @@ def report_exception(package_status, msg, e)
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
-
PackageStatus = Struct.new :msg, :sync, :uncommitted, :local, :remote
|
86
|
-
def status_of_package(package_description, only_local: false, snapshot: false)
|
85
|
+
PackageStatus = Struct.new :msg, :sync, :unexpected, :uncommitted, :local, :remote
|
86
|
+
def self.status_of_package(package_description, only_local: false, snapshot: false)
|
87
87
|
pkg = package_description.autobuild
|
88
88
|
importer = pkg.importer
|
89
89
|
package_status = PackageStatus.new(Array.new, false, false, false, false)
|
@@ -96,7 +96,7 @@ def status_of_package(package_description, only_local: false, snapshot: false)
|
|
96
96
|
else
|
97
97
|
begin status = importer.status(pkg, only_local: only_local)
|
98
98
|
rescue StandardError => e
|
99
|
-
report_exception(package_status, "failed to fetch status information", e)
|
99
|
+
self.report_exception(package_status, "failed to fetch status information", e)
|
100
100
|
return package_status
|
101
101
|
end
|
102
102
|
|
@@ -108,7 +108,7 @@ def status_of_package(package_description, only_local: false, snapshot: false)
|
|
108
108
|
rescue Autobuild::PackageException
|
109
109
|
Hash.new
|
110
110
|
rescue StandardError => e
|
111
|
-
report_exception(package_status, "failed to fetch snapshotting information", e)
|
111
|
+
self.report_exception(package_status, "failed to fetch snapshotting information", e)
|
112
112
|
return package_status
|
113
113
|
end
|
114
114
|
if snapshot_overrides_vcs?(importer, package_description.vcs, snapshot_version)
|
@@ -122,6 +122,7 @@ def status_of_package(package_description, only_local: false, snapshot: false)
|
|
122
122
|
end
|
123
123
|
|
124
124
|
status.unexpected_working_copy_state.each do |msg|
|
125
|
+
package_status.unexpected = true
|
125
126
|
package_status.msg << Autoproj.color(" #{msg}", :red, :bold)
|
126
127
|
end
|
127
128
|
|
@@ -173,13 +174,15 @@ def each_package_status(packages, parallel: ws.config.parallel_import_level, sna
|
|
173
174
|
end
|
174
175
|
noninteractive = noninteractive.map do |pkg|
|
175
176
|
future = Concurrent::Future.execute(executor: executor) do
|
176
|
-
status_of_package(
|
177
|
+
Status.status_of_package(
|
178
|
+
pkg, snapshot: snapshot, only_local: only_local
|
179
|
+
)
|
177
180
|
end
|
178
181
|
[pkg, future]
|
179
182
|
end
|
180
183
|
|
181
184
|
(noninteractive + interactive).each do |pkg, future|
|
182
|
-
if future
|
185
|
+
if future
|
183
186
|
if progress
|
184
187
|
wait_timeout = 1
|
185
188
|
while true
|
@@ -196,7 +199,10 @@ def each_package_status(packages, parallel: ws.config.parallel_import_level, sna
|
|
196
199
|
if !(status = future.value)
|
197
200
|
raise future.reason
|
198
201
|
end
|
199
|
-
else
|
202
|
+
else
|
203
|
+
status = Status.status_of_package(
|
204
|
+
pkg, snapshot: snapshot, only_local: only_local
|
205
|
+
)
|
200
206
|
end
|
201
207
|
|
202
208
|
result.uncommitted ||= status.uncommitted
|
@@ -263,7 +269,7 @@ def display_status(packages, parallel: ws.config.parallel_import_level, snapshot
|
|
263
269
|
sync_packages = ""
|
264
270
|
end
|
265
271
|
|
266
|
-
STDERR.print
|
272
|
+
STDERR.print
|
267
273
|
|
268
274
|
if status.msg.size == 1
|
269
275
|
Autoproj.message "#{pkg_name}: #{status.msg.first}"
|
data/lib/autoproj/cli/update.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'autoproj/cli'
|
2
2
|
require 'autoproj/cli/base'
|
3
|
+
require 'autoproj/cli/status'
|
3
4
|
require 'autoproj/ops/import'
|
4
5
|
|
5
6
|
module Autoproj
|
@@ -66,17 +67,20 @@ def validate_options(selection, options)
|
|
66
67
|
return selection, options
|
67
68
|
end
|
68
69
|
|
69
|
-
def run(selected_packages, run_hook: false, report: true, **options)
|
70
|
+
def run(selected_packages, run_hook: false, report: true, ask: false, **options)
|
70
71
|
ws.manifest.accept_unavailable_osdeps = !options[:osdeps]
|
71
72
|
ws.setup
|
72
73
|
ws.autodetect_operating_system(force: true)
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
74
|
+
|
75
|
+
if ask
|
76
|
+
prompt = TTY::Prompt.new
|
77
|
+
options[:bundler] &&= prompt.yes?("Update bundler ?")
|
78
|
+
options[:autoproj] &&= prompt.yes?("Update autoproj ?")
|
78
79
|
end
|
79
80
|
|
81
|
+
ws.update_bundler if options[:bundler]
|
82
|
+
ws.update_autoproj if options[:autoproj]
|
83
|
+
|
80
84
|
begin
|
81
85
|
ws.load_package_sets(
|
82
86
|
mainline: options[:mainline],
|
@@ -84,7 +88,8 @@ def run(selected_packages, run_hook: false, report: true, **options)
|
|
84
88
|
checkout_only: !options[:config] || options[:checkout_only],
|
85
89
|
reset: options[:reset],
|
86
90
|
keep_going: options[:keep_going],
|
87
|
-
retry_count: options[:retry_count]
|
91
|
+
retry_count: options[:retry_count]
|
92
|
+
)
|
88
93
|
rescue ImportFailed => configuration_import_failure
|
89
94
|
if !options[:keep_going]
|
90
95
|
raise
|
@@ -122,6 +127,7 @@ def run(selected_packages, run_hook: false, report: true, **options)
|
|
122
127
|
parallel: options[:parallel] || ws.config.parallel_import_level,
|
123
128
|
retry_count: options[:retry_count],
|
124
129
|
auto_exclude: options[:auto_exclude],
|
130
|
+
ask: ask,
|
125
131
|
report: report)
|
126
132
|
|
127
133
|
ws.finalize_setup
|
@@ -193,14 +199,63 @@ def normalize_osdeps_options(
|
|
193
199
|
osdeps_options
|
194
200
|
end
|
195
201
|
|
202
|
+
class AskUpdateFilter
|
203
|
+
def initialize(prompt, parallel: 1, only_local: false)
|
204
|
+
@prompt = prompt
|
205
|
+
@only_local = only_local
|
206
|
+
@executor = Concurrent::FixedThreadPool.new(parallel, max_length: 0)
|
207
|
+
|
208
|
+
@parallel = parallel
|
209
|
+
@futures = {}
|
210
|
+
@lookahead_queue = []
|
211
|
+
end
|
212
|
+
|
213
|
+
def call(pkg)
|
214
|
+
unless (status = @futures.delete(pkg).value)
|
215
|
+
raise v.reason
|
216
|
+
end
|
217
|
+
|
218
|
+
clean = !status.unexpected &&
|
219
|
+
(status.sync || (status.local && !status.remote))
|
220
|
+
if clean
|
221
|
+
msg = Autobuild.color('already up-to-date', :green)
|
222
|
+
pkg.autobuild.message "#{msg} %s"
|
223
|
+
return false
|
224
|
+
end
|
225
|
+
|
226
|
+
Autobuild.progress_display_synchronize do
|
227
|
+
status.msg.each { |m| puts m }
|
228
|
+
@prompt.yes?("Update #{pkg.name} ?")
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
def lookahead(pkg)
|
233
|
+
@futures[pkg] = Concurrent::Future.execute(executor: @executor) do
|
234
|
+
Status.status_of_package(
|
235
|
+
pkg, snapshot: false, only_local: @only_local
|
236
|
+
)
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
196
241
|
def update_packages(selected_packages,
|
197
242
|
from: nil, checkout_only: false, only_local: false, reset: false,
|
198
243
|
deps: true, keep_going: false, parallel: 1,
|
199
244
|
retry_count: 0, osdeps: true, auto_exclude: false, osdeps_options: Hash.new,
|
200
|
-
report: true)
|
245
|
+
report: true, ask: false)
|
201
246
|
|
202
247
|
setup_update_from(from) if from
|
203
248
|
|
249
|
+
filter =
|
250
|
+
if ask
|
251
|
+
prompt = TTY::Prompt.new
|
252
|
+
filter = AskUpdateFilter.new(
|
253
|
+
prompt, parallel: parallel, only_local: only_local
|
254
|
+
)
|
255
|
+
else
|
256
|
+
->(pkg) { true }
|
257
|
+
end
|
258
|
+
|
204
259
|
ops = Autoproj::Ops::Import.new(
|
205
260
|
ws, report_path: (ws.import_report_path if report))
|
206
261
|
source_packages, osdep_packages =
|
@@ -213,7 +268,8 @@ def update_packages(selected_packages,
|
|
213
268
|
parallel: parallel,
|
214
269
|
retry_count: retry_count,
|
215
270
|
install_vcs_packages: (osdeps_options if osdeps),
|
216
|
-
auto_exclude: auto_exclude
|
271
|
+
auto_exclude: auto_exclude,
|
272
|
+
filter: filter)
|
217
273
|
[source_packages, osdep_packages, nil]
|
218
274
|
rescue ExcludedSelection => e
|
219
275
|
raise CLIInvalidSelection, e.message, e.backtrace
|
data/lib/autoproj/cli/utility.rb
CHANGED
@@ -70,7 +70,7 @@ def list(user_selection, options = {})
|
|
70
70
|
out_format = "%-#{w}s %-7s %-9s"
|
71
71
|
puts format(out_format, 'Package Name', 'Enabled', 'Available')
|
72
72
|
lines.each do |name, enabled, available|
|
73
|
-
puts(format(out_format, name, (!!enabled).to_s, (!!available).to_s))
|
73
|
+
puts(format(out_format, name, (!!enabled).to_s, (!!available).to_s)) # rubocop:disable Style/DoubleNegation
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
@@ -113,12 +113,12 @@ def apply_to_packages(packages, parallel: ws.config.parallel_build_level)
|
|
113
113
|
) do |pkg, phase|
|
114
114
|
reporting&.report_incremental(pkg) if phase == utility_name
|
115
115
|
end
|
116
|
-
|
117
116
|
ensure
|
118
117
|
reporting&.create_report(packages.map(&:autobuild))
|
119
118
|
end
|
120
119
|
|
121
120
|
def package_metadata(autobuild_package)
|
121
|
+
# rubocop:disable Style/DoubleNegation
|
122
122
|
u = autobuild_package.utility(@utility_name)
|
123
123
|
{
|
124
124
|
'source_dir' => u.source_dir,
|
@@ -127,8 +127,9 @@ def package_metadata(autobuild_package)
|
|
127
127
|
'enabled' => !!u.enabled?,
|
128
128
|
'invoked' => !!u.invoked?,
|
129
129
|
'success' => !!u.success?,
|
130
|
-
'installed' => !!u.installed
|
130
|
+
'installed' => !!u.installed?
|
131
131
|
}
|
132
|
+
# rubocop:enable Style/DoubleNegation
|
132
133
|
end
|
133
134
|
end
|
134
135
|
end
|
@@ -244,10 +244,10 @@ def save(path = self.path, force: false)
|
|
244
244
|
@modified = false
|
245
245
|
end
|
246
246
|
|
247
|
-
def each_reused_autoproj_installation
|
247
|
+
def each_reused_autoproj_installation(&block)
|
248
248
|
if has_value_for?('reused_autoproj_installations')
|
249
|
-
get('reused_autoproj_installations').each(&
|
250
|
-
else [].each(&
|
249
|
+
get('reused_autoproj_installations').each(&block)
|
250
|
+
else [].each(&block)
|
251
251
|
end
|
252
252
|
end
|
253
253
|
|
data/lib/autoproj/default.osdeps
CHANGED
@@ -92,6 +92,12 @@ ruby24:
|
|
92
92
|
ruby25:
|
93
93
|
default: ignore # we assume that if the user has a ruby 2.5 runtime, it is usable
|
94
94
|
|
95
|
+
ruby26:
|
96
|
+
default: ignore # we assume that if the user has a ruby 2.5 runtime, it is usable
|
97
|
+
|
98
|
+
ruby27:
|
99
|
+
default: ignore # we assume that if the user has a ruby 2.5 runtime, it is usable
|
100
|
+
|
95
101
|
build-essential:
|
96
102
|
debian,ubuntu: build-essential
|
97
103
|
gentoo: ignore
|
@@ -132,15 +138,19 @@ archive:
|
|
132
138
|
debian,ubuntu:
|
133
139
|
- tar
|
134
140
|
- unzip
|
141
|
+
- ca-certificates
|
135
142
|
gentoo:
|
136
143
|
- app-arch/tar
|
137
144
|
- app-arch/unzip
|
145
|
+
- app-misc/ca-certificates
|
138
146
|
arch:
|
139
147
|
- tar
|
140
148
|
- unzip
|
149
|
+
- ca-certificates
|
141
150
|
fedora:
|
142
151
|
- tar
|
143
152
|
- unzip
|
153
|
+
- ca-certificates
|
144
154
|
macos-port:
|
145
155
|
- gnutar
|
146
156
|
- unzip
|
@@ -149,6 +159,7 @@ archive:
|
|
149
159
|
opensuse:
|
150
160
|
- tar
|
151
161
|
- unzip
|
162
|
+
- ca-certificates
|
152
163
|
default: ignore
|
153
164
|
|
154
165
|
cvs:
|
data/lib/autoproj/manifest.rb
CHANGED
@@ -1237,7 +1237,7 @@ def self.config
|
|
1237
1237
|
workspace.config
|
1238
1238
|
end
|
1239
1239
|
|
1240
|
-
def self.add_osdeps_overrides(*args, &block)
|
1241
|
-
manifest.add_osdeps_overrides(*args, &block)
|
1240
|
+
def self.add_osdeps_overrides(*args, **kw, &block)
|
1241
|
+
manifest.add_osdeps_overrides(*args, **kw, &block)
|
1242
1242
|
end
|
1243
1243
|
end
|
data/lib/autoproj/ops/import.rb
CHANGED
@@ -199,6 +199,7 @@ def import_selected_packages(selection,
|
|
199
199
|
install_vcs_packages: Hash.new,
|
200
200
|
non_imported_packages: :checkout,
|
201
201
|
auto_exclude: auto_exclude?,
|
202
|
+
filter: ->(package) { true },
|
202
203
|
**import_options)
|
203
204
|
|
204
205
|
unless %i[checkout ignore return].include?(non_imported_packages)
|
@@ -235,6 +236,11 @@ def import_selected_packages(selection,
|
|
235
236
|
missing_vcs = Array.new
|
236
237
|
installed_vcs_packages = Set['none', 'local']
|
237
238
|
while failures.empty? || keep_going
|
239
|
+
# Allow 'filter' to parallelize as well
|
240
|
+
if filter.respond_to?(:lookahead)
|
241
|
+
package_queue.each { |pkg| filter.lookahead(pkg) }
|
242
|
+
end
|
243
|
+
|
238
244
|
# Queue work for all packages in the queue
|
239
245
|
package_queue.each do |pkg|
|
240
246
|
# Remove packages that have already been processed
|
@@ -255,6 +261,11 @@ def import_selected_packages(selection,
|
|
255
261
|
end
|
256
262
|
all_processed_packages << pkg
|
257
263
|
|
264
|
+
unless filter.call(pkg)
|
265
|
+
completion_queue << [pkg, Time.now]
|
266
|
+
next
|
267
|
+
end
|
268
|
+
|
258
269
|
importer = pkg.autobuild.importer
|
259
270
|
if !pre_package_import(selection, manifest, pkg.autobuild,
|
260
271
|
reverse_dependencies)
|
@@ -272,8 +283,8 @@ def import_selected_packages(selection,
|
|
272
283
|
next
|
273
284
|
end
|
274
285
|
|
275
|
-
pending_packages << pkg
|
276
286
|
begin
|
287
|
+
pending_packages << pkg
|
277
288
|
queue_import_work(
|
278
289
|
executor, completion_queue, pkg,
|
279
290
|
retry_count: retry_count,
|
@@ -432,6 +443,7 @@ def import_packages(selection,
|
|
432
443
|
keep_going: false,
|
433
444
|
install_vcs_packages: Hash.new,
|
434
445
|
auto_exclude: auto_exclude?,
|
446
|
+
filter: ->(pkg) { true },
|
435
447
|
**import_options)
|
436
448
|
|
437
449
|
manifest = ws.manifest
|
@@ -443,6 +455,7 @@ def import_packages(selection,
|
|
443
455
|
recursive: recursive,
|
444
456
|
install_vcs_packages: install_vcs_packages,
|
445
457
|
auto_exclude: auto_exclude,
|
458
|
+
filter: filter,
|
446
459
|
**import_options)
|
447
460
|
|
448
461
|
raise failures.first if !keep_going && !failures.empty?
|
data/lib/autoproj/ops/install.rb
CHANGED
@@ -254,7 +254,7 @@ def default_gemfile_contents(autoproj_version = ">= 2.0.0")
|
|
254
254
|
end
|
255
255
|
|
256
256
|
def add_seed_config(path)
|
257
|
-
@config.merge!(YAML.safe_load(File.read(path)))
|
257
|
+
@config.merge!(YAML.safe_load(File.read(path), [Symbol]))
|
258
258
|
end
|
259
259
|
|
260
260
|
# Parse the provided command line options and returns the non-options
|
data/lib/autoproj/ops/tools.rb
CHANGED
@@ -90,7 +90,7 @@ def apply_dependencies_from_manifest
|
|
90
90
|
autobuild.depends_on name
|
91
91
|
end
|
92
92
|
rescue ConfigError => e
|
93
|
-
raise
|
93
|
+
raise PackageNotFound.new(manifest.path),
|
94
94
|
"manifest #{manifest.path} of #{self.name} from "\
|
95
95
|
"#{package_set.name} lists '#{name}' as dependency, "\
|
96
96
|
'but it is neither a normal package nor an osdeps '\
|
data/lib/autoproj/package_set.rb
CHANGED
@@ -168,7 +168,7 @@ def initialize(
|
|
168
168
|
@version_control = Array.new
|
169
169
|
@overrides = Array.new
|
170
170
|
@raw_local_dir = raw_local_dir
|
171
|
-
@default_importer = VCSDefinition.from_raw(type: 'none')
|
171
|
+
@default_importer = VCSDefinition.from_raw({ type: 'none' })
|
172
172
|
|
173
173
|
@imports = Set.new
|
174
174
|
@imports_vcs = Array.new
|
@@ -239,7 +239,7 @@ def snapshot(target_dir, options = Hash.new)
|
|
239
239
|
else
|
240
240
|
package = create_autobuild_package
|
241
241
|
if package.importer.respond_to?(:snapshot)
|
242
|
-
package.importer.snapshot(package, target_dir, options)
|
242
|
+
package.importer.snapshot(package, target_dir, **options)
|
243
243
|
end
|
244
244
|
end
|
245
245
|
end
|
data/lib/autoproj/test.rb
CHANGED
@@ -333,8 +333,9 @@ def ws_clear_layout
|
|
333
333
|
ws.manifest.clear_layout
|
334
334
|
end
|
335
335
|
|
336
|
-
def ws_define_package_set(
|
337
|
-
|
336
|
+
def ws_define_package_set(
|
337
|
+
name, vcs = VCSDefinition.from_raw({ type: 'none' }), **options
|
338
|
+
)
|
338
339
|
package_set = PackageSet.new(ws, vcs, name: name, **options)
|
339
340
|
ws.manifest.register_package_set(package_set)
|
340
341
|
package_set
|
@@ -351,8 +352,9 @@ def ws_create_local_package_set(name, path, source_data: Hash.new, **options)
|
|
351
352
|
package_set
|
352
353
|
end
|
353
354
|
|
354
|
-
def ws_add_package_set_to_layout(
|
355
|
-
|
355
|
+
def ws_add_package_set_to_layout(
|
356
|
+
name, vcs = VCSDefinition.from_raw({ type: 'none' }), **options
|
357
|
+
)
|
356
358
|
package_set = ws_define_package_set(name, vcs, **options)
|
357
359
|
ws.manifest.add_package_set_to_layout(package_set)
|
358
360
|
package_set
|
@@ -80,7 +80,9 @@ def self.expand(value, definitions = Hash.new)
|
|
80
80
|
end
|
81
81
|
|
82
82
|
# True if the given string contains expansions
|
83
|
-
def self.contains_expansion?(string)
|
83
|
+
def self.contains_expansion?(string)
|
84
|
+
string.respond_to?(:to_str) && string.to_str =~ /\$/
|
85
|
+
end
|
84
86
|
|
85
87
|
def self.resolve_one_constant(name, value, result, definitions)
|
86
88
|
result[name] ||= single_expansion(value, result) do |missing_name|
|
@@ -33,7 +33,7 @@ class VCSDefinition
|
|
33
33
|
HistoryEntry = Struct.new :package_set, :vcs
|
34
34
|
RawEntry = Struct.new :package_set, :file, :vcs
|
35
35
|
|
36
|
-
def initialize(type, url, vcs_options, from: nil, raw:
|
36
|
+
def initialize(type, url, vcs_options, from: nil, raw: [], history: [])
|
37
37
|
if !raw.respond_to?(:to_ary)
|
38
38
|
raise ArgumentError, "wrong format for the raw field (#{raw.inspect})"
|
39
39
|
end
|
@@ -49,7 +49,7 @@ def initialize(type, url, vcs_options, from: nil, raw: Array.new, history: Array
|
|
49
49
|
|
50
50
|
# Create a null VCS object
|
51
51
|
def self.none
|
52
|
-
from_raw(type: 'none')
|
52
|
+
from_raw({ type: 'none' })
|
53
53
|
end
|
54
54
|
|
55
55
|
# Whether there is actually a version control definition
|
@@ -151,10 +151,14 @@ def self.normalize_vcs_hash(spec, base_dir: nil)
|
|
151
151
|
elsif base_dir
|
152
152
|
File.expand_path(short_url, base_dir)
|
153
153
|
else
|
154
|
-
raise ArgumentError,
|
154
|
+
raise ArgumentError,
|
155
|
+
"VCS path '#{short_url}' is relative and no "\
|
156
|
+
"base_dir was given"
|
155
157
|
end
|
156
158
|
if !File.directory?(source_dir)
|
157
|
-
raise ArgumentError,
|
159
|
+
raise ArgumentError,
|
160
|
+
"'#{short_url}' is neither a remote source "\
|
161
|
+
'specification, nor an existing local directory'
|
158
162
|
end
|
159
163
|
spec.merge!(type: 'local', url: source_dir)
|
160
164
|
end
|
@@ -195,17 +199,26 @@ def self.raw_spec_to_s(spec)
|
|
195
199
|
# @return [VCSDefinition]
|
196
200
|
# @raise ArgumentError if the raw specification does not match an
|
197
201
|
# expected format
|
198
|
-
def self.from_raw(spec, from: nil, raw:
|
202
|
+
def self.from_raw(spec, from: nil, raw: [], history: [])
|
199
203
|
normalized_spec = normalize_vcs_hash(spec)
|
200
204
|
if !(type = normalized_spec.delete(:type))
|
201
|
-
raise ArgumentError,
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
205
|
+
raise ArgumentError,
|
206
|
+
"the source specification #{raw_spec_to_s(spec)} normalizes "\
|
207
|
+
"into #{raw_spec_to_s(normalized_spec)}, "\
|
208
|
+
'which does not have a VCS type'
|
209
|
+
end
|
210
|
+
|
211
|
+
if !(url = normalized_spec.delete(:url)) && type != 'none'
|
212
|
+
raise ArgumentError,
|
213
|
+
"the source specification #{raw_spec_to_s(spec)} normalizes "\
|
214
|
+
"into #{raw_spec_to_s(normalized_spec)}, "\
|
215
|
+
'which does not have a URL. '\
|
216
|
+
'Only VCS of type \'none\' do not require one'
|
206
217
|
end
|
207
218
|
|
208
|
-
VCSDefinition.new(
|
219
|
+
VCSDefinition.new(
|
220
|
+
type, url, normalized_spec, from: from, history: history, raw: raw
|
221
|
+
)
|
209
222
|
end
|
210
223
|
|
211
224
|
def ==(other_vcs)
|
@@ -307,7 +320,7 @@ def self.call_source_handler(vcs, url, options)
|
|
307
320
|
if !handler
|
308
321
|
raise ArgumentError, "there is no source handler for #{vcs}"
|
309
322
|
else
|
310
|
-
|
323
|
+
handler.call(url, **options)
|
311
324
|
end
|
312
325
|
end
|
313
326
|
|
data/lib/autoproj/version.rb
CHANGED
data/lib/autoproj/workspace.rb
CHANGED
@@ -282,7 +282,8 @@ def load_config(reconfigure = false)
|
|
282
282
|
if (raw_vcs = config.get('manifest_source', nil))
|
283
283
|
VCSDefinition.from_raw(raw_vcs)
|
284
284
|
else
|
285
|
-
|
285
|
+
local_vcs = { type: 'local', url: config_dir }
|
286
|
+
VCSDefinition.from_raw(local_vcs)
|
286
287
|
end
|
287
288
|
|
288
289
|
if config.source_dir && Pathname.new(config.source_dir).absolute?
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autoproj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sylvain Joyeux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 1.21.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.
|
40
|
+
version: 1.21.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: backports
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,82 +78,70 @@ dependencies:
|
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
81
|
+
version: '1.0'
|
82
82
|
type: :runtime
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
88
|
+
version: '1.0'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: concurrent-ruby
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
93
|
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 1.
|
96
|
-
- - ">="
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: 1.0.0
|
95
|
+
version: '1.1'
|
99
96
|
type: :runtime
|
100
97
|
prerelease: false
|
101
98
|
version_requirements: !ruby/object:Gem::Requirement
|
102
99
|
requirements:
|
103
100
|
- - "~>"
|
104
101
|
- !ruby/object:Gem::Version
|
105
|
-
version: 1.
|
106
|
-
- - ">="
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
version: 1.0.0
|
102
|
+
version: '1.1'
|
109
103
|
- !ruby/object:Gem::Dependency
|
110
104
|
name: tty-color
|
111
105
|
requirement: !ruby/object:Gem::Requirement
|
112
106
|
requirements:
|
113
107
|
- - "~>"
|
114
108
|
- !ruby/object:Gem::Version
|
115
|
-
version: 0.
|
116
|
-
- - ">="
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: 0.4.0
|
109
|
+
version: 0.5.0
|
119
110
|
type: :runtime
|
120
111
|
prerelease: false
|
121
112
|
version_requirements: !ruby/object:Gem::Requirement
|
122
113
|
requirements:
|
123
114
|
- - "~>"
|
124
115
|
- !ruby/object:Gem::Version
|
125
|
-
version: 0.
|
126
|
-
- - ">="
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
version: 0.4.0
|
116
|
+
version: 0.5.0
|
129
117
|
- !ruby/object:Gem::Dependency
|
130
118
|
name: tty-prompt
|
131
119
|
requirement: !ruby/object:Gem::Requirement
|
132
120
|
requirements:
|
133
121
|
- - "~>"
|
134
122
|
- !ruby/object:Gem::Version
|
135
|
-
version: 0.
|
123
|
+
version: 0.21.0
|
136
124
|
type: :runtime
|
137
125
|
prerelease: false
|
138
126
|
version_requirements: !ruby/object:Gem::Requirement
|
139
127
|
requirements:
|
140
128
|
- - "~>"
|
141
129
|
- !ruby/object:Gem::Version
|
142
|
-
version: 0.
|
130
|
+
version: 0.21.0
|
143
131
|
- !ruby/object:Gem::Dependency
|
144
132
|
name: tty-spinner
|
145
133
|
requirement: !ruby/object:Gem::Requirement
|
146
134
|
requirements:
|
147
135
|
- - "~>"
|
148
136
|
- !ruby/object:Gem::Version
|
149
|
-
version: 0.
|
137
|
+
version: 0.9.0
|
150
138
|
type: :runtime
|
151
139
|
prerelease: false
|
152
140
|
version_requirements: !ruby/object:Gem::Requirement
|
153
141
|
requirements:
|
154
142
|
- - "~>"
|
155
143
|
- !ruby/object:Gem::Version
|
156
|
-
version: 0.
|
144
|
+
version: 0.9.0
|
157
145
|
- !ruby/object:Gem::Dependency
|
158
146
|
name: rb-inotify
|
159
147
|
requirement: !ruby/object:Gem::Requirement
|
@@ -466,8 +454,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
466
454
|
- !ruby/object:Gem::Version
|
467
455
|
version: '0'
|
468
456
|
requirements: []
|
469
|
-
|
470
|
-
rubygems_version: 2.7.6.2
|
457
|
+
rubygems_version: 3.1.2
|
471
458
|
signing_key:
|
472
459
|
specification_version: 4
|
473
460
|
summary: Easy installation and management of sets of software packages
|