autoproj 2.0.0.rc37 → 2.0.0.rc38
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 +4 -2
- data/Rakefile +1 -1
- data/bin/autoproj_bootstrap +34 -2
- data/bin/autoproj_bootstrap.in +4 -2
- data/bin/autoproj_install +34 -2
- data/bin/autoproj_install.in +4 -2
- data/lib/autoproj.rb +9 -2
- data/lib/autoproj/autobuild.rb +13 -742
- data/lib/autoproj/autobuild_extensions/archive_importer.rb +44 -0
- data/lib/autoproj/autobuild_extensions/dsl.rb +439 -0
- data/lib/autoproj/autobuild_extensions/git.rb +116 -0
- data/lib/autoproj/autobuild_extensions/package.rb +159 -0
- data/lib/autoproj/autobuild_extensions/svn.rb +11 -0
- data/lib/autoproj/cli/base.rb +17 -18
- data/lib/autoproj/cli/clean.rb +1 -2
- data/lib/autoproj/cli/envsh.rb +1 -2
- data/lib/autoproj/cli/inspection_tool.rb +12 -21
- data/lib/autoproj/cli/locate.rb +130 -73
- data/lib/autoproj/cli/main.rb +31 -5
- data/lib/autoproj/cli/main_plugin.rb +79 -0
- data/lib/autoproj/cli/main_test.rb +19 -5
- data/lib/autoproj/cli/osdeps.rb +1 -2
- data/lib/autoproj/cli/patcher.rb +21 -0
- data/lib/autoproj/cli/query.rb +34 -41
- data/lib/autoproj/cli/show.rb +121 -52
- data/lib/autoproj/cli/status.rb +4 -5
- data/lib/autoproj/cli/tag.rb +1 -1
- data/lib/autoproj/cli/test.rb +7 -6
- data/lib/autoproj/cli/update.rb +8 -22
- data/lib/autoproj/cli/versions.rb +1 -2
- data/lib/autoproj/configuration.rb +1 -1
- data/lib/autoproj/environment.rb +2 -7
- data/lib/autoproj/exceptions.rb +10 -8
- data/lib/autoproj/find_workspace.rb +46 -12
- data/lib/autoproj/installation_manifest.rb +34 -25
- data/lib/autoproj/local_package_set.rb +86 -0
- data/lib/autoproj/manifest.rb +448 -503
- data/lib/autoproj/metapackage.rb +31 -5
- data/lib/autoproj/ops/configuration.rb +46 -45
- data/lib/autoproj/ops/import.rb +150 -60
- data/lib/autoproj/ops/install.rb +25 -1
- data/lib/autoproj/ops/loader.rb +4 -1
- data/lib/autoproj/ops/main_config_switcher.rb +4 -4
- data/lib/autoproj/ops/snapshot.rb +4 -3
- data/lib/autoproj/os_package_installer.rb +105 -46
- data/lib/autoproj/os_package_resolver.rb +63 -36
- data/lib/autoproj/package_definition.rb +1 -0
- data/lib/autoproj/package_managers/apt_dpkg_manager.rb +30 -27
- data/lib/autoproj/package_managers/bundler_manager.rb +64 -18
- data/lib/autoproj/package_managers/gem_manager.rb +4 -2
- data/lib/autoproj/package_managers/manager.rb +26 -7
- data/lib/autoproj/package_managers/shell_script_manager.rb +4 -4
- data/lib/autoproj/package_managers/zypper_manager.rb +1 -1
- data/lib/autoproj/package_manifest.rb +154 -137
- data/lib/autoproj/package_selection.rb +16 -2
- data/lib/autoproj/package_set.rb +352 -309
- data/lib/autoproj/query.rb +13 -1
- data/lib/autoproj/system.rb +2 -2
- data/lib/autoproj/test.rb +164 -11
- data/lib/autoproj/variable_expansion.rb +15 -42
- data/lib/autoproj/vcs_definition.rb +93 -76
- data/lib/autoproj/version.rb +1 -1
- data/lib/autoproj/workspace.rb +116 -80
- metadata +10 -2
@@ -0,0 +1,116 @@
|
|
1
|
+
module Autoproj
|
2
|
+
module AutobuildExtensions
|
3
|
+
module Git
|
4
|
+
# Reconfigures this importer to use an already existing checkout located
|
5
|
+
# in the given autoproj root
|
6
|
+
#
|
7
|
+
# @param [Autobuild::Package] the package we are dealing with
|
8
|
+
# @param [Autoproj::InstallationManifest] the other root's installation
|
9
|
+
# manifest
|
10
|
+
def pick_from_autoproj_root(package, installation_manifest)
|
11
|
+
other_pkg = installation_manifest[package.name]
|
12
|
+
return if !other_pkg || !File.directory?(other_pkg.srcdir)
|
13
|
+
self.relocate(other_pkg.srcdir)
|
14
|
+
true
|
15
|
+
end
|
16
|
+
|
17
|
+
# Get version information
|
18
|
+
#
|
19
|
+
# @option options [Boolean] local (true) whether the snapshot should access
|
20
|
+
# the remote repository to determine if the local commit is there, and
|
21
|
+
# determine what would be the best remote branch, or stick to information
|
22
|
+
# that is present locally
|
23
|
+
# @option options [Boolean] exact_state (true) whether the snapshot should
|
24
|
+
# point to a specific commit (either with a tag or with a commit ID), or
|
25
|
+
# only override the branch
|
26
|
+
# @return [Hash] the snapshot information, in a format that can be used by
|
27
|
+
# {#relocate}
|
28
|
+
def snapshot(package, target_dir = nil, only_local: true, exact_state: true)
|
29
|
+
if only_local
|
30
|
+
snapshot_local(package, exact_state: exact_state)
|
31
|
+
else
|
32
|
+
snapshot_against_remote(package, exact_state: exact_state)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def normalize_branch_name(name)
|
37
|
+
if name =~ /^refs\/heads\//
|
38
|
+
return name
|
39
|
+
else
|
40
|
+
"refs/heads/#{name}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Returns true if the given snapshot information is different from the
|
45
|
+
# configured importer state
|
46
|
+
#
|
47
|
+
# It tests only against the parameters returned by {#snapshot}
|
48
|
+
def snapshot_overrides?(snapshot)
|
49
|
+
# We have to normalize the branch and tag names
|
50
|
+
if snapshot_local = (snapshot['local_branch'] || snapshot['branch'])
|
51
|
+
snapshot_local = normalize_branch_name(snapshot_local)
|
52
|
+
local_branch = normalize_branch_name(self.local_branch)
|
53
|
+
return true if snapshot_local != local_branch
|
54
|
+
end
|
55
|
+
if snapshot_remote = (snapshot['remote_branch'] || snapshot['branch'])
|
56
|
+
snapshot_remote = normalize_branch_name(snapshot_remote)
|
57
|
+
remote_branch = normalize_branch_name(self.remote_branch)
|
58
|
+
return true if snapshot_remote != remote_branch
|
59
|
+
end
|
60
|
+
if snapshot_id = snapshot['commit']
|
61
|
+
return true if self.commit != snapshot_id
|
62
|
+
end
|
63
|
+
false
|
64
|
+
end
|
65
|
+
|
66
|
+
# @api private
|
67
|
+
def snapshot_against_remote(package, options = Hash.new)
|
68
|
+
info = Hash['tag' => nil, 'commit' => nil]
|
69
|
+
remote_revname = describe_commit_on_remote(package, 'HEAD', tags: options[:exact_state])
|
70
|
+
|
71
|
+
case remote_revname
|
72
|
+
when /^refs\/heads\/(.*)/
|
73
|
+
remote_branch = $1
|
74
|
+
if local_branch == remote_branch
|
75
|
+
info['branch'] = local_branch
|
76
|
+
else
|
77
|
+
info['local_branch'] = local_branch
|
78
|
+
info['remote_branch'] = remote_branch
|
79
|
+
end
|
80
|
+
when /^refs\/tags\/(.*)/
|
81
|
+
info['tag'] = $1
|
82
|
+
else
|
83
|
+
info['local_branch'] = local_branch
|
84
|
+
info['remote_branch'] = remote_revname
|
85
|
+
end
|
86
|
+
|
87
|
+
if options[:exact_state] && !info['tag']
|
88
|
+
info['commit'] = rev_parse(package, 'HEAD')
|
89
|
+
end
|
90
|
+
info
|
91
|
+
end
|
92
|
+
|
93
|
+
# @api private
|
94
|
+
def snapshot_local(package, options = Hash.new)
|
95
|
+
info = Hash.new
|
96
|
+
if local_branch != remote_branch
|
97
|
+
info['local_branch'] = local_branch
|
98
|
+
info['remote_branch'] = remote_branch
|
99
|
+
else
|
100
|
+
info['branch'] = branch
|
101
|
+
end
|
102
|
+
|
103
|
+
if options[:exact_state]
|
104
|
+
has_tag, described = describe_rev(package, 'HEAD')
|
105
|
+
if has_tag
|
106
|
+
info.merge('tag' => described, 'commit' => nil)
|
107
|
+
else
|
108
|
+
info.merge('tag' => nil, 'commit' => described)
|
109
|
+
end
|
110
|
+
else
|
111
|
+
info
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
@@ -0,0 +1,159 @@
|
|
1
|
+
module Autoproj
|
2
|
+
module AutobuildExtensions
|
3
|
+
module Package
|
4
|
+
# Tags explicitely added with #add_tag
|
5
|
+
attr_reader :added_tags
|
6
|
+
|
7
|
+
attr_reader :optional_dependencies
|
8
|
+
|
9
|
+
attr_reader :os_packages
|
10
|
+
|
11
|
+
attr_writer :ws
|
12
|
+
def ws
|
13
|
+
@ws ||= Autoproj.workspace
|
14
|
+
end
|
15
|
+
|
16
|
+
# The Autoproj::PackageManifest object that describes this package
|
17
|
+
attr_accessor :description
|
18
|
+
|
19
|
+
def initialize(spec = Hash.new)
|
20
|
+
super
|
21
|
+
@ws = nil
|
22
|
+
@os_packages = Set.new
|
23
|
+
@added_tags = Set.new
|
24
|
+
@optional_dependencies = Set.new
|
25
|
+
@description = PackageManifest.new(self, null: true)
|
26
|
+
end
|
27
|
+
|
28
|
+
# The set of tags for this package. This is an union of the tags
|
29
|
+
# contained in +description+ and the ones explicitely added with
|
30
|
+
# #add_tag
|
31
|
+
def tags
|
32
|
+
result = @added_tags.dup
|
33
|
+
if description
|
34
|
+
result |= description.tags.to_set
|
35
|
+
end
|
36
|
+
result
|
37
|
+
end
|
38
|
+
|
39
|
+
# Add a tag to the package. Use this if you don't want the tag to be
|
40
|
+
# shared with everyone that uses the package (i.e. cannot go in
|
41
|
+
# manifest.xml)
|
42
|
+
def add_tag(tag)
|
43
|
+
@added_tags << tag
|
44
|
+
end
|
45
|
+
|
46
|
+
# True if this package is tagged with the given tag string
|
47
|
+
def has_tag?(tag)
|
48
|
+
tags.include?(tag.to_s)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Asks autoproj to remove references to the given obsolete oroGen
|
52
|
+
# package
|
53
|
+
def remove_obsolete_installed_orogen_package(name)
|
54
|
+
post_install do
|
55
|
+
path = File.join(prefix, 'lib', 'pkgconfig')
|
56
|
+
Dir.glob(File.join(path, "#{name}-*.pc")) do |pcfile|
|
57
|
+
Autoproj.message " removing obsolete file #{pcfile}", :bold
|
58
|
+
FileUtils.rm_f pcfile
|
59
|
+
end
|
60
|
+
pcfile = File.join(path, "orogen-project-#{name}.pc")
|
61
|
+
if File.exist?(pcfile)
|
62
|
+
Autoproj.message " removing obsolete file #{pcfile}", :bold
|
63
|
+
FileUtils.rm_f pcfile
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# Asks autoproj to remove the given file in the package's installation
|
69
|
+
# prefix
|
70
|
+
def remove_obsolete_installed_file(*path)
|
71
|
+
post_install do
|
72
|
+
path = File.join(prefix, *path)
|
73
|
+
if File.exist?(path)
|
74
|
+
Autoproj.message " removing obsolete file #{path}", :bold
|
75
|
+
FileUtils.rm_f path
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# Ask autoproj to run the given block after this package has been
|
81
|
+
# imported
|
82
|
+
def post_import(&block)
|
83
|
+
Autoproj.post_import(self, &block)
|
84
|
+
end
|
85
|
+
|
86
|
+
def autoproj_name # :nodoc:
|
87
|
+
srcdir.gsub(/^#{Regexp.quote(ws.root_dir)}\//, '')
|
88
|
+
end
|
89
|
+
|
90
|
+
def depends_on(name)
|
91
|
+
if name.respond_to?(:name) # probably a Package object
|
92
|
+
name = name.name
|
93
|
+
end
|
94
|
+
|
95
|
+
pkg_autobuild, pkg_os = partition_package(name)
|
96
|
+
pkg_autobuild.each do |pkg|
|
97
|
+
super(pkg)
|
98
|
+
end
|
99
|
+
@os_packages.merge(pkg_os.to_set)
|
100
|
+
end
|
101
|
+
|
102
|
+
def all_dependencies_with_osdeps(set = Set.new)
|
103
|
+
original_set = set.dup
|
104
|
+
all_dependencies(set)
|
105
|
+
set.dup.each do |dep_pkg_name|
|
106
|
+
next if original_set.include?(dep_pkg_name)
|
107
|
+
if dep_pkg = ws.manifest.find_autobuild_package(dep_pkg_name)
|
108
|
+
set.merge(dep_pkg.os_packages)
|
109
|
+
else
|
110
|
+
raise ArgumentError, "#{dep_pkg_name}, which is listed as a dependency of #{name}, is not the name of a known package"
|
111
|
+
end
|
112
|
+
end
|
113
|
+
set.merge(os_packages)
|
114
|
+
set
|
115
|
+
end
|
116
|
+
|
117
|
+
def depends_on_os_package(name)
|
118
|
+
depends_on(name)
|
119
|
+
end
|
120
|
+
|
121
|
+
def remove_dependency(name)
|
122
|
+
dependencies.delete name
|
123
|
+
optional_dependencies.delete name
|
124
|
+
os_packages.delete name
|
125
|
+
end
|
126
|
+
|
127
|
+
def optional_dependency(name)
|
128
|
+
optional_dependencies << name
|
129
|
+
end
|
130
|
+
|
131
|
+
def partition_package(pkg_name)
|
132
|
+
pkg_autobuild, pkg_osdeps = [], []
|
133
|
+
ws.manifest.resolve_package_name(pkg_name).each do |type, dep_name|
|
134
|
+
if type == :osdeps
|
135
|
+
pkg_osdeps << dep_name
|
136
|
+
elsif type == :package
|
137
|
+
pkg_autobuild << dep_name
|
138
|
+
else raise Autoproj::InternalError, "expected package type to be either :osdeps or :package, got #{type.inspect}"
|
139
|
+
end
|
140
|
+
end
|
141
|
+
return pkg_autobuild, pkg_osdeps
|
142
|
+
end
|
143
|
+
|
144
|
+
def partition_optional_dependencies
|
145
|
+
packages, osdeps = [], []
|
146
|
+
optional_dependencies.each do |name|
|
147
|
+
begin
|
148
|
+
pkg_autobuild, pkg_osdeps = partition_package(name)
|
149
|
+
packages.concat(pkg_autobuild)
|
150
|
+
osdeps.concat(pkg_osdeps)
|
151
|
+
rescue Autoproj::PackageNotFound
|
152
|
+
# Simply ignore non-existent optional dependencies
|
153
|
+
end
|
154
|
+
end
|
155
|
+
return packages, osdeps
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
data/lib/autoproj/cli/base.rb
CHANGED
@@ -12,8 +12,8 @@ class Base
|
|
12
12
|
# @return [Workspace]
|
13
13
|
attr_reader :ws
|
14
14
|
|
15
|
-
def initialize(ws =
|
16
|
-
@ws =
|
15
|
+
def initialize(ws = Workspace.default)
|
16
|
+
@ws = ws
|
17
17
|
end
|
18
18
|
|
19
19
|
# Normalizes the arguments given by the user on the command line
|
@@ -56,7 +56,11 @@ def normalize_command_line_package_selection(selection)
|
|
56
56
|
# resolved
|
57
57
|
def resolve_user_selection(selected_packages, **options)
|
58
58
|
if selected_packages.empty?
|
59
|
-
|
59
|
+
selection = ws.manifest.default_packages
|
60
|
+
if Autoproj.verbose
|
61
|
+
Autoproj.message "selected packages: #{selection.each_package_name.to_a.sort.join(", ")}"
|
62
|
+
end
|
63
|
+
return selection, []
|
60
64
|
end
|
61
65
|
selected_packages = selected_packages.to_set
|
62
66
|
|
@@ -65,6 +69,7 @@ def resolve_user_selection(selected_packages, **options)
|
|
65
69
|
|
66
70
|
# Try to auto-add stuff if nonresolved
|
67
71
|
nonresolved.delete_if do |sel|
|
72
|
+
sel = File.expand_path(sel)
|
68
73
|
next if !File.directory?(sel)
|
69
74
|
while sel != '/'
|
70
75
|
handler, srcdir = Autoproj.package_handler_for(sel)
|
@@ -73,7 +78,7 @@ def resolve_user_selection(selected_packages, **options)
|
|
73
78
|
srcdir = File.expand_path(srcdir)
|
74
79
|
relative_to_root = Pathname.new(srcdir).relative_path_from(Pathname.new(ws.root_dir))
|
75
80
|
pkg = ws.in_package_set(ws.manifest.main_package_set, ws.manifest.file) do
|
76
|
-
send(handler, relative_to_root.to_s)
|
81
|
+
send(handler, relative_to_root.to_s, workspace: ws)
|
77
82
|
end
|
78
83
|
ws.setup_package_directories(pkg)
|
79
84
|
selected_packages.select(sel, pkg.name, weak: true)
|
@@ -85,7 +90,7 @@ def resolve_user_selection(selected_packages, **options)
|
|
85
90
|
end
|
86
91
|
|
87
92
|
if Autoproj.verbose
|
88
|
-
Autoproj.message "
|
93
|
+
Autoproj.message "selected packages: #{selected_packages.each_package_name.to_a.sort.join(", ")}"
|
89
94
|
end
|
90
95
|
return selected_packages, nonresolved
|
91
96
|
end
|
@@ -113,9 +118,10 @@ def resolve_user_selection(selected_packages, **options)
|
|
113
118
|
# @param [Boolean] recursive whether the resolution should be done
|
114
119
|
# recursively (i.e. dependencies of directly selected packages
|
115
120
|
# should be added) or not
|
116
|
-
# @param [
|
117
|
-
# that are not imported should simply be ignored
|
118
|
-
#
|
121
|
+
# @param [Symbol] non_imported_packages whether packages
|
122
|
+
# that are not imported should simply be ignored (:ignore),
|
123
|
+
# returned (:return) or should be checked out (:checkout). Setting
|
124
|
+
# checkout_only to true and this to anything but nil
|
119
125
|
# guarantees in effect that no import operation will take place,
|
120
126
|
# only loading
|
121
127
|
# @return [(Array<String>,Array<String>,PackageSelection)] the list
|
@@ -123,16 +129,8 @@ def resolve_user_selection(selected_packages, **options)
|
|
123
129
|
# the package selection resolution object
|
124
130
|
#
|
125
131
|
# @see resolve_user_selection
|
126
|
-
def resolve_selection(user_selection, checkout_only: true, only_local: false, recursive: true,
|
132
|
+
def resolve_selection(user_selection, checkout_only: true, only_local: false, recursive: true, non_imported_packages: :ignore)
|
127
133
|
resolved_selection, _ = resolve_user_selection(user_selection, filter: false)
|
128
|
-
if ignore_non_imported_packages
|
129
|
-
ws.manifest.each_autobuild_package do |pkg|
|
130
|
-
if !File.directory?(pkg.srcdir)
|
131
|
-
ws.manifest.ignore_package(pkg.name)
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
135
|
-
resolved_selection.filter_excluded_and_ignored_packages(ws.manifest)
|
136
134
|
|
137
135
|
ops = Ops::Import.new(ws)
|
138
136
|
source_packages, osdep_packages = ops.import_packages(
|
@@ -140,7 +138,8 @@ def resolve_selection(user_selection, checkout_only: true, only_local: false, re
|
|
140
138
|
checkout_only: checkout_only,
|
141
139
|
only_local: only_local,
|
142
140
|
recursive: recursive,
|
143
|
-
warn_about_ignored_packages: false
|
141
|
+
warn_about_ignored_packages: false,
|
142
|
+
non_imported_packages: non_imported_packages)
|
144
143
|
|
145
144
|
return source_packages, osdep_packages, resolved_selection
|
146
145
|
end
|
data/lib/autoproj/cli/clean.rb
CHANGED
@@ -19,8 +19,7 @@ def run(selection, options = Hash.new)
|
|
19
19
|
packages, _ = normalize_command_line_package_selection(selection)
|
20
20
|
source_packages, * = resolve_selection(
|
21
21
|
selection,
|
22
|
-
recursive: false
|
23
|
-
ignore_non_imported_packages: true)
|
22
|
+
recursive: false)
|
24
23
|
if packages.empty?
|
25
24
|
raise ArgumentError, "no packages or OS packages match #{selection.join(" ")}"
|
26
25
|
end
|
data/lib/autoproj/cli/envsh.rb
CHANGED
@@ -9,8 +9,7 @@ def validate_options(_unused, options = Hash.new)
|
|
9
9
|
|
10
10
|
def run(options = Hash.new)
|
11
11
|
initialize_and_load
|
12
|
-
finalize_setup(Array.new
|
13
|
-
ignore_non_imported_packages: true)
|
12
|
+
finalize_setup(Array.new)
|
14
13
|
|
15
14
|
options = Kernel.validate_options options,
|
16
15
|
shell_helpers: ws.config.shell_helpers?
|
@@ -5,16 +5,11 @@ module CLI
|
|
5
5
|
# Base class for CLI tools that do not change the state of the installed
|
6
6
|
# system
|
7
7
|
class InspectionTool < Base
|
8
|
-
def initialize_and_load(
|
9
|
-
options = Kernel.validate_options options,
|
10
|
-
mainline: nil
|
11
|
-
|
8
|
+
def initialize_and_load(mainline: nil)
|
12
9
|
Autoproj.silent do
|
13
10
|
ws.setup
|
14
|
-
if mainline
|
15
|
-
|
16
|
-
mainline = true
|
17
|
-
end
|
11
|
+
if mainline == 'mainline' || mainline == 'true'
|
12
|
+
mainline = true
|
18
13
|
end
|
19
14
|
ws.load_package_sets(mainline: mainline)
|
20
15
|
ws.config.save
|
@@ -25,9 +20,9 @@ def initialize_and_load(options = Hash.new)
|
|
25
20
|
# Finish loading the package information
|
26
21
|
#
|
27
22
|
# @param [Array<String>] packages the list of package names
|
28
|
-
# @
|
29
|
-
#
|
30
|
-
#
|
23
|
+
# @param [Symbol] non_imported_packages whether packages that are
|
24
|
+
# not yet imported should be ignored (:ignore) or returned
|
25
|
+
# (:return).
|
31
26
|
# @option options recursive (true) whether the package resolution
|
32
27
|
# should return the package(s) and their dependencies
|
33
28
|
#
|
@@ -35,11 +30,7 @@ def initialize_and_load(options = Hash.new)
|
|
35
30
|
# selected packages, the PackageSelection representing the
|
36
31
|
# selection resolution itself, and a flag telling whether some of
|
37
32
|
# the arguments were pointing within the configuration area
|
38
|
-
def finalize_setup(packages = [],
|
39
|
-
options = Kernel.validate_options options,
|
40
|
-
ignore_non_imported_packages: true,
|
41
|
-
recursive: true
|
42
|
-
|
33
|
+
def finalize_setup(packages = [], non_imported_packages: :ignore, recursive: true)
|
43
34
|
Autoproj.silent do
|
44
35
|
packages, config_selected = normalize_command_line_package_selection(packages)
|
45
36
|
# Call resolve_user_selection once to auto-add packages, so
|
@@ -47,7 +38,7 @@ def finalize_setup(packages = [], options = Hash.new)
|
|
47
38
|
resolve_user_selection(packages)
|
48
39
|
ws.finalize_package_setup
|
49
40
|
source_packages, osdep_packages, resolved_selection =
|
50
|
-
resolve_selection(packages,
|
41
|
+
resolve_selection(packages, recursive: recursive, non_imported_packages: non_imported_packages)
|
51
42
|
ws.finalize_setup
|
52
43
|
ws.export_installation_manifest
|
53
44
|
return source_packages, osdep_packages, resolved_selection, config_selected
|
@@ -57,14 +48,14 @@ def finalize_setup(packages = [], options = Hash.new)
|
|
57
48
|
def load_all_available_package_manifests
|
58
49
|
# Load the manifest for packages that are already present on the
|
59
50
|
# file system
|
60
|
-
ws.manifest.
|
61
|
-
if
|
51
|
+
ws.manifest.each_autobuild_package do |pkg|
|
52
|
+
if pkg.checked_out?
|
62
53
|
begin
|
63
|
-
ws.manifest.load_package_manifest(pkg.
|
54
|
+
ws.manifest.load_package_manifest(pkg.name)
|
64
55
|
rescue Interrupt
|
65
56
|
raise
|
66
57
|
rescue Exception => e
|
67
|
-
Autoproj.warn "cannot load package manifest for #{pkg.
|
58
|
+
Autoproj.warn "cannot load package manifest for #{pkg.name}: #{e.message}"
|
68
59
|
end
|
69
60
|
end
|
70
61
|
end
|