autoproj 2.10.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/.rubocop.yml +5 -8
- data/.travis.yml +5 -3
- data/autoproj.gemspec +7 -6
- data/bin/alog +1 -0
- data/bin/autoproj +1 -1
- data/bin/autoproj_bootstrap +149 -86
- data/bin/autoproj_bootstrap.in +9 -7
- data/bin/autoproj_install +148 -82
- data/bin/autoproj_install.in +8 -3
- data/lib/autoproj.rb +3 -0
- data/lib/autoproj/aruba_minitest.rb +15 -0
- data/lib/autoproj/autobuild_extensions/dsl.rb +61 -27
- data/lib/autoproj/base.rb +35 -6
- data/lib/autoproj/cli/base.rb +1 -1
- data/lib/autoproj/cli/build.rb +9 -3
- data/lib/autoproj/cli/cache.rb +79 -7
- data/lib/autoproj/cli/doc.rb +4 -18
- data/lib/autoproj/cli/inspection_tool.rb +5 -6
- data/lib/autoproj/cli/main.rb +41 -18
- data/lib/autoproj/cli/main_doc.rb +86 -0
- data/lib/autoproj/cli/main_plugin.rb +3 -0
- data/lib/autoproj/cli/main_test.rb +15 -0
- data/lib/autoproj/cli/show.rb +12 -18
- data/lib/autoproj/cli/status.rb +15 -9
- data/lib/autoproj/cli/test.rb +13 -84
- data/lib/autoproj/cli/update.rb +77 -19
- data/lib/autoproj/cli/utility.rb +136 -0
- data/lib/autoproj/configuration.rb +28 -4
- data/lib/autoproj/default.osdeps +18 -0
- data/lib/autoproj/installation_manifest.rb +7 -5
- data/lib/autoproj/manifest.rb +15 -21
- data/lib/autoproj/ops/build.rb +23 -27
- data/lib/autoproj/ops/cache.rb +151 -33
- data/lib/autoproj/ops/cached_env.rb +2 -2
- data/lib/autoproj/ops/import.rb +146 -80
- data/lib/autoproj/ops/install.rb +140 -79
- data/lib/autoproj/ops/phase_reporting.rb +49 -0
- data/lib/autoproj/ops/snapshot.rb +2 -1
- data/lib/autoproj/ops/tools.rb +2 -2
- data/lib/autoproj/os_package_installer.rb +19 -11
- data/lib/autoproj/package_definition.rb +29 -10
- data/lib/autoproj/package_managers/apt_dpkg_manager.rb +49 -28
- data/lib/autoproj/package_managers/bundler_manager.rb +257 -87
- data/lib/autoproj/package_managers/homebrew_manager.rb +2 -2
- data/lib/autoproj/package_managers/shell_script_manager.rb +44 -24
- data/lib/autoproj/package_manifest.rb +49 -34
- data/lib/autoproj/package_set.rb +48 -29
- data/lib/autoproj/repository_managers/apt.rb +0 -1
- data/lib/autoproj/test.rb +29 -10
- data/lib/autoproj/variable_expansion.rb +3 -1
- data/lib/autoproj/vcs_definition.rb +30 -15
- data/lib/autoproj/version.rb +1 -1
- data/lib/autoproj/workspace.rb +55 -13
- metadata +32 -28
data/lib/autoproj/cli/doc.rb
CHANGED
@@ -1,24 +1,10 @@
|
|
1
|
-
require 'autoproj/cli/
|
1
|
+
require 'autoproj/cli/utility'
|
2
2
|
|
3
3
|
module Autoproj
|
4
4
|
module CLI
|
5
|
-
class Doc <
|
6
|
-
def
|
7
|
-
|
8
|
-
if options[:no_deps_shortcut]
|
9
|
-
options[:deps] = false
|
10
|
-
end
|
11
|
-
return packages, options
|
12
|
-
end
|
13
|
-
|
14
|
-
def run(user_selection, deps: true)
|
15
|
-
initialize_and_load
|
16
|
-
packages, _ =
|
17
|
-
finalize_setup(user_selection, recursive: deps)
|
18
|
-
packages.each do |pkg|
|
19
|
-
ws.manifest.find_autobuild_package(pkg).disable_phases('import', 'prepare', 'install')
|
20
|
-
end
|
21
|
-
Autobuild.apply(packages, "autoproj-doc", ['doc'])
|
5
|
+
class Doc < Utility
|
6
|
+
def initialize(ws = Workspace.default, name: 'doc')
|
7
|
+
super
|
22
8
|
end
|
23
9
|
end
|
24
10
|
end
|
@@ -8,9 +8,7 @@ class InspectionTool < Base
|
|
8
8
|
def initialize_and_load(mainline: nil)
|
9
9
|
Autoproj.silent do
|
10
10
|
ws.setup
|
11
|
-
|
12
|
-
mainline = true
|
13
|
-
end
|
11
|
+
mainline = true if %w[mainline true].include?(mainline)
|
14
12
|
ws.load_package_sets(mainline: mainline)
|
15
13
|
ws.config.save
|
16
14
|
ws.setup_all_package_directories
|
@@ -22,7 +20,7 @@ def initialize_and_load(mainline: nil)
|
|
22
20
|
# @param [Array<String>] packages the list of package names
|
23
21
|
# @param [Symbol] non_imported_packages whether packages that are
|
24
22
|
# not yet imported should be ignored (:ignore) or returned
|
25
|
-
# (:return).
|
23
|
+
# (:return).
|
26
24
|
# @option options recursive (true) whether the package resolution
|
27
25
|
# should return the package(s) and their dependencies
|
28
26
|
#
|
@@ -32,7 +30,8 @@ def initialize_and_load(mainline: nil)
|
|
32
30
|
# the arguments were pointing within the configuration area
|
33
31
|
def finalize_setup(packages = [], non_imported_packages: :ignore, recursive: true, auto_exclude: false)
|
34
32
|
Autoproj.silent do
|
35
|
-
packages, config_selected =
|
33
|
+
packages, config_selected =
|
34
|
+
normalize_command_line_package_selection(packages)
|
36
35
|
# Call resolve_user_selection once to auto-add packages, so
|
37
36
|
# that they're available to e.g. overrides.rb
|
38
37
|
resolve_user_selection(packages)
|
@@ -41,7 +40,7 @@ def finalize_setup(packages = [], non_imported_packages: :ignore, recursive: tru
|
|
41
40
|
resolve_selection(packages, recursive: recursive, non_imported_packages: non_imported_packages, auto_exclude: auto_exclude)
|
42
41
|
ws.finalize_setup
|
43
42
|
ws.export_installation_manifest
|
44
|
-
|
43
|
+
[source_packages, osdep_packages, resolved_selection, config_selected]
|
45
44
|
end
|
46
45
|
end
|
47
46
|
end
|
data/lib/autoproj/cli/main.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'thor'
|
2
2
|
require 'tty/color'
|
3
|
+
require 'autoproj/cli/main_doc'
|
3
4
|
require 'autoproj/cli/main_test'
|
4
5
|
require 'autoproj/cli/main_plugin'
|
5
6
|
require 'autoproj/cli/main_global'
|
@@ -37,6 +38,10 @@ class Main < Thor
|
|
37
38
|
stop_on_unknown_option! :exec
|
38
39
|
check_unknown_options! except: :exec
|
39
40
|
|
41
|
+
def self.exit_on_failure?
|
42
|
+
true
|
43
|
+
end
|
44
|
+
|
40
45
|
class << self
|
41
46
|
# @api private
|
42
47
|
#
|
@@ -129,8 +134,9 @@ def run_autoproj_cli(filename, classname, report_options, *args, tool_failure_mo
|
|
129
134
|
end
|
130
135
|
cli = CLI.const_get(classname).new
|
131
136
|
begin
|
132
|
-
run_args = cli.validate_options(args, options.merge(extra_options))
|
133
|
-
|
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)
|
134
140
|
ensure
|
135
141
|
cli.notify_env_sh_updated if cli.respond_to?(:notify_env_sh_updated)
|
136
142
|
end
|
@@ -183,15 +189,6 @@ def status(*packages)
|
|
183
189
|
run_autoproj_cli(:status, :Status, Hash[], *packages)
|
184
190
|
end
|
185
191
|
|
186
|
-
desc 'doc [PACKAGES]', 'generate API documentation for packages that support it'
|
187
|
-
option :deps, type: :boolean, default: true,
|
188
|
-
desc: 'control whether documentation should be generated only for the packages given on the command line, or also for their dependencies. -n is a shortcut for --no-deps'
|
189
|
-
option :no_deps_shortcut, hide: true, aliases: '-n', type: :boolean,
|
190
|
-
desc: 'provide -n for --no-deps'
|
191
|
-
def doc(*packages)
|
192
|
-
run_autoproj_cli(:doc, :Doc, Hash[], *packages)
|
193
|
-
end
|
194
|
-
|
195
192
|
desc 'update [PACKAGES]', 'update packages'
|
196
193
|
option :aup, default: false, hide: true, type: :boolean,
|
197
194
|
desc: 'behave like aup'
|
@@ -232,6 +229,8 @@ def doc(*packages)
|
|
232
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"
|
233
230
|
option :auto_exclude, type: :boolean,
|
234
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'
|
235
234
|
def update(*packages)
|
236
235
|
report_options = Hash[silent: false, on_package_failures: default_report_on_package_failures]
|
237
236
|
if options[:auto_exclude]
|
@@ -304,13 +303,34 @@ def build(*packages)
|
|
304
303
|
end
|
305
304
|
end
|
306
305
|
|
307
|
-
desc 'cache CACHE_DIR', 'create or update a cache directory that
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
option :
|
313
|
-
|
306
|
+
desc 'cache CACHE_DIR', 'create or update a cache directory that '\
|
307
|
+
'can be given to AUTOBUILD_CACHE_DIR'
|
308
|
+
option :keep_going,
|
309
|
+
aliases: :k,
|
310
|
+
desc: 'do not stop on errors'
|
311
|
+
option :checkout_only,
|
312
|
+
aliases: :c, type: :boolean, default: false,
|
313
|
+
desc: 'only checkout packages, do not update already-cached ones'
|
314
|
+
option :all,
|
315
|
+
type: :boolean, default: true,
|
316
|
+
desc: 'cache all defined packages (the default), '\
|
317
|
+
' or only the selected ones'
|
318
|
+
option :packages,
|
319
|
+
type: :boolean, default: true,
|
320
|
+
desc: 'update the package cache'
|
321
|
+
option :gems,
|
322
|
+
type: :boolean, default: false,
|
323
|
+
desc: 'update the gems cache'
|
324
|
+
option :gems_compile_force,
|
325
|
+
type: :boolean, default: false,
|
326
|
+
desc: 'with --gems-compile, recompile existing gems as well'
|
327
|
+
option :gems_compile,
|
328
|
+
type: :array,
|
329
|
+
desc: 'pre-compile the following gems. This requires gem-compiler '\
|
330
|
+
'to be available in the workspace. Use GEM_NAME+ARTIFACT'\
|
331
|
+
'[+ARTIFACT] to add files or directories to the precompiled '\
|
332
|
+
'gems beyond what gem-compiler auto-adds (which is mostly '\
|
333
|
+
'dynamic libraries)'
|
314
334
|
def cache(*args)
|
315
335
|
run_autoproj_cli(:cache, :Cache, Hash[], *args)
|
316
336
|
end
|
@@ -360,6 +380,9 @@ def reconfigure
|
|
360
380
|
desc 'test', 'interface for running tests'
|
361
381
|
subcommand 'test', MainTest
|
362
382
|
|
383
|
+
desc 'doc', 'interface for generating documentation'
|
384
|
+
subcommand 'doc', MainDoc
|
385
|
+
|
363
386
|
desc 'show [PACKAGES]', 'show informations about package(s)'
|
364
387
|
option :mainline, type: :string,
|
365
388
|
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"
|
@@ -0,0 +1,86 @@
|
|
1
|
+
module Autoproj
|
2
|
+
module CLI
|
3
|
+
class MainDoc < Thor
|
4
|
+
namespace 'doc'
|
5
|
+
|
6
|
+
default_command 'exec'
|
7
|
+
|
8
|
+
no_commands do
|
9
|
+
def report(report_options = Hash.new)
|
10
|
+
options = self.options.merge(parent_options)
|
11
|
+
extra_options = Hash.new
|
12
|
+
if Autobuild::Subprocess.transparent_mode = options[:tool]
|
13
|
+
Autobuild.silent = true
|
14
|
+
Autobuild.color = false
|
15
|
+
report_options[:silent] = true
|
16
|
+
report_options[:on_package_failures] = :exit_silent
|
17
|
+
extra_options[:silent] = true
|
18
|
+
end
|
19
|
+
Autoproj.report(**Hash[debug: options[:debug]].merge(report_options)) do
|
20
|
+
yield(extra_options)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
desc 'enable [PACKAGES]', 'enable docs for the given packages (or for all packages if none are given)'
|
26
|
+
option :deps, type: :boolean, default: false,
|
27
|
+
desc: 'controls whether the dependencies of the packages given on the command line should be enabled as well (the default is not)'
|
28
|
+
def enable(*packages)
|
29
|
+
require 'autoproj/cli/doc'
|
30
|
+
report(silent: true) do
|
31
|
+
cli = Doc.new
|
32
|
+
args = cli.validate_options(packages, options)
|
33
|
+
cli.enable(*args)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
desc 'disable [PACKAGES]', 'disable docs for the given packages (or for all packages if none are given)'
|
38
|
+
option :deps, type: :boolean, default: false,
|
39
|
+
desc: 'controls whether the dependencies of the packages given on the command line should be disabled as well (the default is not)'
|
40
|
+
def disable(*packages)
|
41
|
+
require 'autoproj/cli/doc'
|
42
|
+
report(silent: true) do
|
43
|
+
cli = Doc.new
|
44
|
+
args = cli.validate_options(packages, options)
|
45
|
+
cli.disable(*args)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
desc 'list [PACKAGES]', 'show doc enable/disable status for the given packages (or all packages if none are given)'
|
50
|
+
option :deps, type: :boolean, default: true,
|
51
|
+
desc: 'controls whether the dependencies of the packages given on the command line should be disabled as well (the default is not)'
|
52
|
+
def list(*packages)
|
53
|
+
require 'autoproj/cli/doc'
|
54
|
+
report(silent: true) do
|
55
|
+
cli = Doc.new
|
56
|
+
args = cli.validate_options(packages, options)
|
57
|
+
cli.list(*args)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
desc 'exec [PACKAGES]', 'generate documentation for the given packages, or all if no packages are given on the command line'
|
62
|
+
option :deps, type: :boolean, default: false,
|
63
|
+
desc: 'controls whether to generate documentation of the dependencies of the packages given on the command line (the default is not)'
|
64
|
+
option :no_deps_shortcut, hide: true, aliases: '-n', type: :boolean,
|
65
|
+
desc: 'provide -n for --no-deps'
|
66
|
+
option :parallel, aliases: :p, type: :numeric,
|
67
|
+
desc: 'maximum number of parallel jobs'
|
68
|
+
option :tool, type: :boolean, default: false,
|
69
|
+
desc: "run in tool mode, which do not redirect the subcommand's outputs"
|
70
|
+
option :color, type: :boolean, default: TTY::Color.color?,
|
71
|
+
desc: 'enables or disables colored display (enabled by default if the terminal supports it)'
|
72
|
+
option :progress, type: :boolean, default: TTY::Color.color?,
|
73
|
+
desc: 'enables or disables progress display (enabled by default if the terminal supports it)'
|
74
|
+
def exec(*packages)
|
75
|
+
require 'autoproj/cli/doc'
|
76
|
+
options = self.options.merge(parent_options)
|
77
|
+
report do |extra_options|
|
78
|
+
cli = Doc.new
|
79
|
+
options.delete(:tool)
|
80
|
+
args = cli.validate_options(packages, options.merge(extra_options))
|
81
|
+
cli.run(*args)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -30,6 +30,8 @@ def write_plugin_list(plugins)
|
|
30
30
|
type: 'string', default: '>= 0'
|
31
31
|
option :git, desc: 'checkout a git repository instead of downloading the gem',
|
32
32
|
type: 'string'
|
33
|
+
option :branch, desc: 'choose the branch that should be checked out with --git',
|
34
|
+
type: 'string', default: 'master'
|
33
35
|
option :path, desc: 'use the plugin that is already present on this path',
|
34
36
|
type: 'string'
|
35
37
|
def install(name)
|
@@ -40,6 +42,7 @@ def install(name)
|
|
40
42
|
raise CLIInvalidArguments, "you can provide only one of --git or --path"
|
41
43
|
elsif options[:git]
|
42
44
|
gem_options[:git] = options[:git]
|
45
|
+
gem_options[:branch] = options[:branch]
|
43
46
|
elsif options[:path]
|
44
47
|
gem_options[:path] = options[:path]
|
45
48
|
end
|
@@ -22,6 +22,21 @@ def report(report_options = Hash.new)
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
+
desc 'default [on|off]', 'set whether tests are enabled or disabled by default, without touching existing settings'
|
26
|
+
def default(on_or_off)
|
27
|
+
require 'autoproj/cli/test'
|
28
|
+
report(silent: true) do
|
29
|
+
cli = Test.new
|
30
|
+
args = cli.validate_options([], options)
|
31
|
+
enabled = case on_or_off
|
32
|
+
when 'on' then true
|
33
|
+
when 'off' then false
|
34
|
+
else raise ArgumentError, "expected 'on' or 'off'"
|
35
|
+
end
|
36
|
+
cli.default(enabled)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
25
40
|
desc 'enable [PACKAGES]', 'enable tests for the given packages (or for all packages if none are given)'
|
26
41
|
option :deps, type: :boolean, default: false,
|
27
42
|
desc: 'controls whether the dependencies of the packages given on the command line should be enabled as well (the default is not)'
|
data/lib/autoproj/cli/show.rb
CHANGED
@@ -17,7 +17,8 @@ def run(user_selection, short: false, recursive: false, mainline: false, env: fa
|
|
17
17
|
source_packages, osdep_packages, * =
|
18
18
|
finalize_setup(user_selection, recursive: recursive, non_imported_packages: :return)
|
19
19
|
else
|
20
|
-
source_packages
|
20
|
+
source_packages = []
|
21
|
+
osdep_packages = []
|
21
22
|
end
|
22
23
|
|
23
24
|
all_matching_osdeps = osdep_packages.map { |pkg| [pkg, true] }
|
@@ -232,7 +233,7 @@ def display_common_information(pkg_name, default_packages, revdeps)
|
|
232
233
|
end
|
233
234
|
end
|
234
235
|
|
235
|
-
|
236
|
+
unless selections.empty?
|
236
237
|
puts " selected by way of"
|
237
238
|
selections.each do |root_pkg|
|
238
239
|
paths = find_selection_path(root_pkg, pkg_name)
|
@@ -248,9 +249,7 @@ def display_common_information(pkg_name, default_packages, revdeps)
|
|
248
249
|
end
|
249
250
|
|
250
251
|
def find_selection_path(from, to)
|
251
|
-
if from == to
|
252
|
-
return [[from]]
|
253
|
-
end
|
252
|
+
return [[from]] if from == to
|
254
253
|
|
255
254
|
all_paths = Array.new
|
256
255
|
ws.manifest.resolve_package_name(from).each do |pkg_type, pkg_name|
|
@@ -262,19 +261,17 @@ def find_selection_path(from, to)
|
|
262
261
|
|
263
262
|
pkg = ws.manifest.find_autobuild_package(pkg_name)
|
264
263
|
pkg.dependencies.each do |dep_pkg_name|
|
265
|
-
if result = find_selection_path(dep_pkg_name, to)
|
264
|
+
if (result = find_selection_path(dep_pkg_name, to))
|
266
265
|
all_paths.concat(result.map { |p| path + p })
|
267
266
|
end
|
268
267
|
end
|
269
|
-
if pkg.os_packages.include?(to)
|
270
|
-
all_paths << (path + [to])
|
271
|
-
end
|
268
|
+
all_paths << (path + [to]) if pkg.os_packages.include?(to)
|
272
269
|
end
|
273
270
|
|
274
271
|
# Now filter common trailing subpaths
|
275
272
|
all_paths = all_paths.sort_by(&:size)
|
276
273
|
filtered_paths = Array.new
|
277
|
-
|
274
|
+
until all_paths.empty?
|
278
275
|
path = all_paths.shift
|
279
276
|
filtered_paths << path
|
280
277
|
size = path.size
|
@@ -290,19 +287,15 @@ def vcs_to_array(vcs)
|
|
290
287
|
options = vcs.dup
|
291
288
|
type = options.delete('type')
|
292
289
|
url = options.delete('url')
|
293
|
-
else
|
290
|
+
else
|
294
291
|
options = vcs.options
|
295
292
|
type = vcs.type
|
296
293
|
url = vcs.url
|
297
294
|
end
|
298
295
|
|
299
296
|
fields = []
|
300
|
-
if type
|
301
|
-
|
302
|
-
end
|
303
|
-
if url
|
304
|
-
fields << ['url', url]
|
305
|
-
end
|
297
|
+
fields << ['type', type] if type
|
298
|
+
fields << ['url', url] if url
|
306
299
|
fields = fields.concat(options.to_a.sort_by { |k, _| k.to_s })
|
307
300
|
fields.map do |key, value|
|
308
301
|
if value.respond_to?(:to_str) && File.file?(value) && value =~ /^\//
|
@@ -315,9 +308,10 @@ def vcs_to_array(vcs)
|
|
315
308
|
def compute_all_revdeps(pkg_revdeps, revdeps)
|
316
309
|
pkg_revdeps = pkg_revdeps.dup
|
317
310
|
all_revdeps = Array.new
|
318
|
-
|
311
|
+
until pkg_revdeps.empty?
|
319
312
|
parent_name = pkg_revdeps.shift
|
320
313
|
next if all_revdeps.include?(parent_name)
|
314
|
+
|
321
315
|
all_revdeps << parent_name
|
322
316
|
pkg_revdeps.concat(revdeps[parent_name].to_a)
|
323
317
|
end
|
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}"
|