autoproj 2.0.0.b1 → 2.0.0.b2
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/Rakefile +2 -1
- data/bin/autoproj_bootstrap +0 -1
- data/lib/autoproj/cli/bootstrap.rb +6 -2
- data/lib/autoproj/cli/build.rb +9 -2
- data/lib/autoproj/cli/cache.rb +4 -2
- data/lib/autoproj/cli/envsh.rb +1 -1
- data/lib/autoproj/cli/inspection_tool.rb +1 -0
- data/lib/autoproj/cli/locate.rb +29 -10
- data/lib/autoproj/cli/main.rb +7 -0
- data/lib/autoproj/cli/update.rb +9 -4
- data/lib/autoproj/cli/versions.rb +1 -1
- data/lib/autoproj/configuration.rb +0 -1
- data/lib/autoproj/installation_manifest.rb +52 -8
- data/lib/autoproj/ops/cache.rb +14 -3
- data/lib/autoproj/ops/import.rb +47 -31
- data/lib/autoproj/version.rb +1 -1
- data/lib/autoproj/workspace.rb +54 -31
- data/shell/autoproj_sh +1 -1
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2c8af79b50be1a3374d16bb769a5f8ca0015638
|
4
|
+
data.tar.gz: 355d629ec40fca2793098e454aee5a71e745a2f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0c2f5ea2df76ec3ac590a0fd9c4bd7d9b7f48c9c1812b1e371ebb736d533d36fc0a534dd93e1328fea9f6753b30e1eec798ee5280c2ba7f3c1ae5cf4f867bef
|
7
|
+
data.tar.gz: 83a685f81470eab8d5be0b4ec400b997568c2d91f83987bf42bf655b75a5c4032b1a688a19e4b3fdee570ce9219adcc8b2087606aa07ec2a1b8d6f60d9d76349
|
data/Rakefile
CHANGED
data/bin/autoproj_bootstrap
CHANGED
@@ -33,7 +33,7 @@ module Autoproj
|
|
33
33
|
return args, options
|
34
34
|
end
|
35
35
|
|
36
|
-
def restart_if_needed
|
36
|
+
def restart_if_needed(ws)
|
37
37
|
# Check if the .autoprojrc changed the PATH and therefore which autoproj script
|
38
38
|
# should be executed ... and restart if it did
|
39
39
|
autoproj_path = Autobuild.find_in_path('autoproj')
|
@@ -71,9 +71,13 @@ module Autoproj
|
|
71
71
|
|
72
72
|
def run(buildconf_info, options)
|
73
73
|
ws = Workspace.new(root_dir)
|
74
|
+
if config_path = options[:seed_config]
|
75
|
+
FileUtils.cp config_path, File.join(ws.config_dir, 'config.yml')
|
76
|
+
end
|
77
|
+
|
74
78
|
ws.setup
|
75
79
|
install_autoproj_gem_in_new_root(ws)
|
76
|
-
restart_if_needed
|
80
|
+
restart_if_needed(ws)
|
77
81
|
|
78
82
|
switcher = Ops::MainConfigSwitcher.new(ws)
|
79
83
|
begin
|
data/lib/autoproj/cli/build.rb
CHANGED
@@ -10,7 +10,7 @@ module Autoproj
|
|
10
10
|
selected_packages = ['.']
|
11
11
|
end
|
12
12
|
|
13
|
-
if
|
13
|
+
if options[:deps].nil?
|
14
14
|
options[:deps] =
|
15
15
|
!(options[:rebuild] || options[:force])
|
16
16
|
end
|
@@ -25,7 +25,13 @@ module Autoproj
|
|
25
25
|
Autobuild.ignore_errors = options[:keep_going]
|
26
26
|
|
27
27
|
command_line_selection, source_packages, osdep_packages =
|
28
|
-
super(selected_packages, options.merge(checkout_only: true))
|
28
|
+
super(selected_packages, options.merge(checkout_only: true, apply_post_install: false))
|
29
|
+
|
30
|
+
# Disable all packages that are not selected
|
31
|
+
ws.manifest.each_autobuild_package do |pkg|
|
32
|
+
next if source_packages.include?(pkg.name)
|
33
|
+
pkg.disable
|
34
|
+
end
|
29
35
|
|
30
36
|
ops = Ops::Build.new(ws.manifest)
|
31
37
|
if build_options[:rebuild] || build_options[:force]
|
@@ -64,6 +70,7 @@ module Autoproj
|
|
64
70
|
Autobuild.do_build = true
|
65
71
|
ops.build_packages(source_packages)
|
66
72
|
Autobuild.apply(source_packages, "autoproj-build", ['install'])
|
73
|
+
ws.apply_post_install
|
67
74
|
end
|
68
75
|
end
|
69
76
|
end
|
data/lib/autoproj/cli/cache.rb
CHANGED
@@ -18,12 +18,14 @@ module Autoproj
|
|
18
18
|
|
19
19
|
def run(cache_dir, options = Hash.new)
|
20
20
|
options = Kernel.validate_options options,
|
21
|
-
keep_going: false
|
21
|
+
keep_going: false,
|
22
|
+
checkout_only: false
|
22
23
|
|
23
24
|
initialize_and_load
|
25
|
+
finalize_setup
|
24
26
|
|
25
27
|
cache_op = Autoproj::Ops::Cache.new(cache_dir, ws.manifest)
|
26
|
-
cache_op.create_or_update(options
|
28
|
+
cache_op.create_or_update(options)
|
27
29
|
end
|
28
30
|
end
|
29
31
|
end
|
data/lib/autoproj/cli/envsh.rb
CHANGED
@@ -48,6 +48,7 @@ module Autoproj
|
|
48
48
|
source_packages, osdep_packages, resolved_selection =
|
49
49
|
resolve_selection(ws.manifest, packages, options)
|
50
50
|
ws.finalize_setup
|
51
|
+
ws.apply_post_install
|
51
52
|
ws.export_installation_manifest
|
52
53
|
return source_packages, osdep_packages, resolved_selection, config_selected
|
53
54
|
end
|
data/lib/autoproj/cli/locate.rb
CHANGED
@@ -11,6 +11,7 @@ module Autoproj
|
|
11
11
|
|
12
12
|
def initialize(ws = nil)
|
13
13
|
super
|
14
|
+
self.ws.load_config
|
14
15
|
|
15
16
|
@installation_manifest = Autoproj::InstallationManifest.new(self.ws.root_dir)
|
16
17
|
if !File.file?(installation_manifest.default_manifest_path)
|
@@ -24,22 +25,41 @@ module Autoproj
|
|
24
25
|
return selected.first, options
|
25
26
|
end
|
26
27
|
|
28
|
+
def result_value(pkg, options)
|
29
|
+
if options[:build]
|
30
|
+
if pkg.builddir
|
31
|
+
pkg.builddir
|
32
|
+
else
|
33
|
+
raise ConfigError, "#{pkg.name} does not have a build directory"
|
34
|
+
end
|
35
|
+
else
|
36
|
+
pkg.srcdir
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
27
40
|
def run(selection, options = Hash.new)
|
28
41
|
if !selection
|
29
|
-
|
42
|
+
if options[:build]
|
43
|
+
puts ws.prefix_dir
|
44
|
+
else
|
45
|
+
puts ws.root_dir
|
46
|
+
end
|
30
47
|
return
|
31
48
|
end
|
32
49
|
|
50
|
+
if File.directory?(selection)
|
51
|
+
selection = File.expand_path(selection)
|
52
|
+
end
|
53
|
+
|
33
54
|
selection_rx = Regexp.new(Regexp.quote(selection))
|
34
55
|
candidates = []
|
35
56
|
installation_manifest.each do |pkg|
|
36
57
|
name = pkg.name
|
37
|
-
|
38
|
-
|
39
|
-
puts srcdir
|
58
|
+
if name == selection || pkg.srcdir == selection
|
59
|
+
puts result_value(pkg, options)
|
40
60
|
return
|
41
61
|
elsif name =~ selection_rx
|
42
|
-
candidates <<
|
62
|
+
candidates << pkg
|
43
63
|
end
|
44
64
|
end
|
45
65
|
|
@@ -59,12 +79,11 @@ module Autoproj
|
|
59
79
|
candidates_strict = []
|
60
80
|
installation_manifest.each do |pkg|
|
61
81
|
name = pkg.name
|
62
|
-
srcdir = pkg.srcdir
|
63
82
|
if name =~ rx
|
64
|
-
candidates <<
|
83
|
+
candidates << pkg
|
65
84
|
end
|
66
85
|
if name =~ rx_strict
|
67
|
-
candidates_strict <<
|
86
|
+
candidates_strict << pkg
|
68
87
|
end
|
69
88
|
end
|
70
89
|
|
@@ -76,7 +95,7 @@ module Autoproj
|
|
76
95
|
if candidates.size > 1
|
77
96
|
# If there is more than one candidate, check if there are some that are not
|
78
97
|
# present on disk
|
79
|
-
present = candidates.find_all { |
|
98
|
+
present = candidates.find_all { |pkg| File.directory?(pkg.srcdir) }
|
80
99
|
if present.size == 1
|
81
100
|
candidates = present
|
82
101
|
end
|
@@ -87,7 +106,7 @@ module Autoproj
|
|
87
106
|
elsif candidates.size > 1
|
88
107
|
raise ArgumentError, "multiple packages match #{selection} in the current autoproj installation: #{candidates.join(", ")}"
|
89
108
|
else
|
90
|
-
puts candidates.first
|
109
|
+
puts result_value(candidates.first, options)
|
91
110
|
end
|
92
111
|
end
|
93
112
|
end
|
data/lib/autoproj/cli/main.rb
CHANGED
@@ -41,6 +41,9 @@ module Autoproj
|
|
41
41
|
option :reuse,
|
42
42
|
banner: 'DIR',
|
43
43
|
desc: 'reuse packages already built within the DIR autoproj workspace in this installation, if DIR is not given, reuses the installation whose env.sh is currently sourced'
|
44
|
+
option :seed_config,
|
45
|
+
banner: 'SEED_CONFIG',
|
46
|
+
desc: "a configuration file used to seed the bootstrap's configuration"
|
44
47
|
def bootstrap(*args)
|
45
48
|
run_autoproj_cli(:bootstrap, :Bootstrap, Hash[], *args)
|
46
49
|
end
|
@@ -116,6 +119,8 @@ module Autoproj
|
|
116
119
|
desc 'cache CACHE_DIR', 'create or update a cache directory that can be given to AUTOBUILD_CACHE_DIR'
|
117
120
|
option :keep_going, aliases: :k,
|
118
121
|
desc: 'do not stop on errors'
|
122
|
+
option :checkout_only, aliases: :c, type: :boolean, default: false,
|
123
|
+
desc: "only checkout packages, do not update already-cached ones"
|
119
124
|
def cache(cache_dir)
|
120
125
|
run_autoproj_cli(:cache, :Cache, Hash[], cache_dir)
|
121
126
|
end
|
@@ -128,6 +133,8 @@ module Autoproj
|
|
128
133
|
end
|
129
134
|
|
130
135
|
desc 'locate [PACKAGE]', 'return the path to the given package, or the path to the root if no packages are given on the command line'
|
136
|
+
option :build, aliases: :b, type: :boolean,
|
137
|
+
desc: "outputs the package's build directory instead of its source directory"
|
131
138
|
def locate(package = nil)
|
132
139
|
run_autoproj_cli(:locate, :Locate, Hash[], *Array(package))
|
133
140
|
end
|
data/lib/autoproj/cli/update.rb
CHANGED
@@ -32,12 +32,15 @@ module Autoproj
|
|
32
32
|
selected_packages, config_selected =
|
33
33
|
normalize_command_line_package_selection(selected_packages)
|
34
34
|
|
35
|
+
if options[:apply_post_install].nil?
|
36
|
+
options[:apply_post_install] = true
|
37
|
+
end
|
38
|
+
|
35
39
|
if options[:config].nil?
|
36
40
|
options[:config] = selected_packages.empty? || config_selected
|
37
41
|
end
|
38
42
|
|
39
43
|
ws.setup
|
40
|
-
ws.install_ruby_shims
|
41
44
|
|
42
45
|
# Do that AFTER we have properly setup ws.osdeps as to avoid
|
43
46
|
# unnecessarily redetecting the operating system
|
@@ -112,15 +115,17 @@ module Autoproj
|
|
112
115
|
ignore_errors: options[:keep_going])
|
113
116
|
|
114
117
|
ws.finalize_setup
|
115
|
-
|
118
|
+
if options[:apply_post_install]
|
119
|
+
ws.apply_post_install
|
120
|
+
end
|
116
121
|
ws.export_installation_manifest
|
117
122
|
|
118
123
|
if options[:osdeps] && !osdep_packages.empty?
|
119
124
|
ws.osdeps.install(osdep_packages, osdeps_options)
|
120
125
|
end
|
121
126
|
|
122
|
-
ws.
|
123
|
-
Autoproj.message "
|
127
|
+
ws.export_env_sh(source_packages)
|
128
|
+
Autoproj.message " updated #{ws.root_dir}/#{Autoproj::ENV_FILENAME}", :green
|
124
129
|
|
125
130
|
return command_line_selection, source_packages, osdep_packages
|
126
131
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Autoproj
|
2
2
|
# Manifest of installed packages imported from another autoproj installation
|
3
3
|
class InstallationManifest
|
4
|
-
Package = Struct.new :name, :srcdir, :prefix
|
4
|
+
Package = Struct.new :name, :srcdir, :prefix, :builddir, :dependencies
|
5
5
|
|
6
6
|
DEFAULT_MANIFEST_NAME = ".autoproj-installation-manifest"
|
7
7
|
|
@@ -9,15 +9,59 @@ module Autoproj
|
|
9
9
|
attr_reader :packages
|
10
10
|
def initialize(path)
|
11
11
|
@path = path
|
12
|
+
@packages = Hash.new
|
12
13
|
end
|
13
14
|
|
14
15
|
def default_manifest_path
|
15
16
|
File.join(path, DEFAULT_MANIFEST_NAME)
|
16
17
|
end
|
18
|
+
|
19
|
+
def exist?
|
20
|
+
File.exist?(default_manifest_path)
|
21
|
+
end
|
22
|
+
|
23
|
+
def [](name)
|
24
|
+
packages[name]
|
25
|
+
end
|
26
|
+
|
27
|
+
def []=(name, pkg)
|
28
|
+
packages[name] = pkg
|
29
|
+
end
|
30
|
+
|
31
|
+
def delete_if
|
32
|
+
packages.delete_if { |_, pkg| yield(pkg) }
|
33
|
+
end
|
17
34
|
|
18
35
|
def load(path = default_manifest_path)
|
19
|
-
@packages =
|
20
|
-
|
36
|
+
@packages = Hash.new
|
37
|
+
raw = YAML.load(File.open(path))
|
38
|
+
if raw.respond_to?(:to_str) # old CSV-based format
|
39
|
+
CSV.read(path).map do |row|
|
40
|
+
name, srcdir, prefix, builddir = *row
|
41
|
+
builddir = nil if builddir && builddir.empty?
|
42
|
+
packages[name] = Package.new(name, srcdir, prefix, builddir, [])
|
43
|
+
end
|
44
|
+
save(path)
|
45
|
+
else
|
46
|
+
raw.each do |entry|
|
47
|
+
pkg = Package.new(
|
48
|
+
entry['name'], entry['srcdir'], entry['prefix'],
|
49
|
+
entry['builddir'], entry['dependencies'])
|
50
|
+
packages[pkg.name] = pkg
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def save(path = default_manifest_path)
|
56
|
+
File.open(path, 'w') do |io|
|
57
|
+
marshalled_packages = packages.values.map do |v|
|
58
|
+
Hash['name' => v.name,
|
59
|
+
'srcdir' => v.srcdir,
|
60
|
+
'builddir' => (v.builddir if v.respond_to?(:builddir)),
|
61
|
+
'prefix' => v.prefix,
|
62
|
+
'dependencies' => v.dependencies]
|
63
|
+
end
|
64
|
+
YAML.dump(marshalled_packages, io)
|
21
65
|
end
|
22
66
|
end
|
23
67
|
|
@@ -26,17 +70,17 @@ module Autoproj
|
|
26
70
|
end
|
27
71
|
|
28
72
|
def [](name)
|
29
|
-
packages.find { |pkg| pkg.name == name }
|
73
|
+
packages.each_value.find { |pkg| pkg.name == name }
|
30
74
|
end
|
31
75
|
|
32
76
|
def self.from_root(root_dir)
|
33
77
|
manifest = InstallationManifest.new(root_dir)
|
34
|
-
|
35
|
-
|
36
|
-
raise ConfigError.new, "no .autoproj-installation-manifest file exists in #{root_dir}. You should probably rerun autoproj envsh in that folder first"
|
78
|
+
if !manifest.exist?
|
79
|
+
raise ConfigError.new, "no #{DEFAULT_MANIFEST_NAME} file exists in #{root_dir}. You should probably rerun autoproj envsh in that folder first"
|
37
80
|
end
|
38
|
-
manifest.load
|
81
|
+
manifest.load
|
39
82
|
manifest
|
40
83
|
end
|
41
84
|
end
|
42
85
|
end
|
86
|
+
|
data/lib/autoproj/ops/cache.rb
CHANGED
@@ -27,8 +27,12 @@ module Autoproj
|
|
27
27
|
File.join(cache_dir, 'git')
|
28
28
|
end
|
29
29
|
|
30
|
-
def cache_git(pkg)
|
30
|
+
def cache_git(pkg, options = Hash.new)
|
31
31
|
pkg.importdir = File.join(git_cache_dir, pkg.name)
|
32
|
+
if options[:checkout_only] && File.directory?(pkg.importdir)
|
33
|
+
return
|
34
|
+
end
|
35
|
+
|
32
36
|
pkg.importer.local_branch = nil
|
33
37
|
pkg.importer.remote_branch = nil
|
34
38
|
pkg.importer.remote_name = 'autobuild'
|
@@ -56,7 +60,13 @@ module Autoproj
|
|
56
60
|
end
|
57
61
|
end
|
58
62
|
|
59
|
-
def create_or_update(
|
63
|
+
def create_or_update(options = Hash.new)
|
64
|
+
options = Kernel.validate_options options,
|
65
|
+
keep_going: false,
|
66
|
+
checkout_only: false
|
67
|
+
keep_going = options[:keep_going]
|
68
|
+
checkout_only = options[:checkout_only]
|
69
|
+
|
60
70
|
FileUtils.mkdir_p cache_dir
|
61
71
|
|
62
72
|
packages = manifest.each_autobuild_package.
|
@@ -64,11 +74,12 @@ module Autoproj
|
|
64
74
|
total = packages.size
|
65
75
|
Autoproj.message "Handling #{total} packages"
|
66
76
|
packages.each_with_index do |pkg, i|
|
77
|
+
next if pkg.srcdir != pkg.importdir # No need to process this one, it is uses another package's import
|
67
78
|
begin
|
68
79
|
case pkg.importer
|
69
80
|
when Autobuild::Git
|
70
81
|
Autoproj.message " [#{i}/#{total}] caching #{pkg.name} (git)"
|
71
|
-
cache_git(pkg)
|
82
|
+
cache_git(pkg, checkout_only: checkout_only)
|
72
83
|
when Autobuild::ArchiveImporter
|
73
84
|
Autoproj.message " [#{i}/#{total}] caching #{pkg.name} (archive)"
|
74
85
|
cache_archive(pkg)
|
data/lib/autoproj/ops/import.rb
CHANGED
@@ -62,22 +62,19 @@ module Autoproj
|
|
62
62
|
end
|
63
63
|
new_packages
|
64
64
|
end
|
65
|
-
|
66
|
-
|
65
|
+
|
66
|
+
# Import all packages from the given selection, and their
|
67
|
+
# dependencies
|
68
|
+
def import_selected_packages(selection, updated_packages, options = Hash.new)
|
67
69
|
options, import_options = Kernel.filter_options options,
|
68
|
-
warn_about_ignored_packages: true,
|
69
|
-
warn_about_excluded_packages: true,
|
70
70
|
recursive: true
|
71
71
|
|
72
72
|
manifest = ws.manifest
|
73
73
|
|
74
|
-
updated_packages = Array.new
|
75
74
|
selected_packages = selection.each_source_package_name.map do |pkg_name|
|
76
75
|
manifest.find_autobuild_package(pkg_name)
|
77
76
|
end.to_set
|
78
77
|
|
79
|
-
# The set of all packages that are currently selected by +selection+
|
80
|
-
all_processed_packages = Set.new
|
81
78
|
# The reverse dependencies for the package tree. It is discovered as
|
82
79
|
# we go on with the import
|
83
80
|
#
|
@@ -86,6 +83,8 @@ module Autoproj
|
|
86
83
|
# package exclusion (and that does not affect optional dependencies)
|
87
84
|
reverse_dependencies = Hash.new { |h, k| h[k] = Set.new }
|
88
85
|
|
86
|
+
# The set of all packages that are currently selected by +selection+
|
87
|
+
all_processed_packages = Set.new
|
89
88
|
package_queue = selected_packages.to_a.sort_by(&:name)
|
90
89
|
while !package_queue.empty?
|
91
90
|
pkg = package_queue.shift
|
@@ -137,34 +136,41 @@ module Autoproj
|
|
137
136
|
Autoproj.each_post_import_block(pkg) do |block|
|
138
137
|
block.call(pkg)
|
139
138
|
end
|
140
|
-
pkg.update_environment
|
141
139
|
|
142
140
|
new_packages = import_next_step(pkg, reverse_dependencies)
|
143
141
|
|
144
142
|
# Excluded dependencies might have caused the package to be
|
145
143
|
# excluded as well ... do not add any dependency to the
|
146
144
|
# processing queue if it is the case
|
147
|
-
if
|
145
|
+
if manifest.excluded?(pkg.name)
|
146
|
+
selection.filter_excluded_and_ignored_packages(manifest)
|
147
|
+
elsif options[:recursive]
|
148
148
|
package_queue.concat(new_packages.sort_by(&:name))
|
149
149
|
end
|
150
|
-
|
151
|
-
# Verify that everything is still OK with the new
|
152
|
-
# exclusions/ignores
|
153
|
-
selection.filter_excluded_and_ignored_packages(manifest)
|
154
150
|
end
|
151
|
+
all_processed_packages
|
152
|
+
end
|
153
|
+
|
154
|
+
def finalize_package_load(processed_packages)
|
155
|
+
manifest = ws.manifest
|
155
156
|
|
156
|
-
|
157
|
-
|
158
|
-
# resolution process above
|
159
|
-
all_enabled_sources, all_enabled_osdeps =
|
160
|
-
Set.new, selection.each_osdep_package_name.to_set
|
161
|
-
package_queue = selection.each_source_package_name.to_a
|
157
|
+
all = Set.new
|
158
|
+
package_queue = manifest.all_layout_packages(false).each_source_package_name.to_a
|
162
159
|
while !package_queue.empty?
|
163
160
|
pkg_name = package_queue.shift
|
164
|
-
next if
|
165
|
-
|
161
|
+
next if all.include?(pkg_name)
|
162
|
+
all << pkg_name
|
163
|
+
|
164
|
+
next if manifest.ignored?(pkg_name) || manifest.excluded?(pkg_name)
|
166
165
|
|
167
166
|
pkg = manifest.find_autobuild_package(pkg_name)
|
167
|
+
if !processed_packages.include?(pkg.name)
|
168
|
+
manifest.load_package_manifest(pkg.name)
|
169
|
+
Autoproj.each_post_import_block(pkg) do |block|
|
170
|
+
block.call(pkg)
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
168
174
|
packages, osdeps = pkg.partition_optional_dependencies
|
169
175
|
packages.each do |pkg_name|
|
170
176
|
if !manifest.ignored?(pkg_name) && !manifest.excluded?(pkg_name)
|
@@ -172,19 +178,29 @@ module Autoproj
|
|
172
178
|
end
|
173
179
|
end
|
174
180
|
pkg.os_packages.merge(osdeps)
|
175
|
-
|
176
|
-
|
177
|
-
pkg.prepare if !pkg.disabled?
|
181
|
+
pkg.prepare
|
178
182
|
Rake::Task["#{pkg.name}-prepare"].instance_variable_set(:@already_invoked, true)
|
179
|
-
|
180
|
-
|
181
|
-
package_queue.concat(pkg.dependencies)
|
182
|
-
end
|
183
|
+
pkg.update_environment
|
184
|
+
package_queue.concat(pkg.dependencies)
|
183
185
|
end
|
186
|
+
all
|
187
|
+
end
|
184
188
|
|
185
|
-
|
186
|
-
|
187
|
-
|
189
|
+
def import_packages(selection, options = Hash.new)
|
190
|
+
options, import_options = Kernel.filter_options options,
|
191
|
+
warn_about_ignored_packages: true,
|
192
|
+
warn_about_excluded_packages: true,
|
193
|
+
recursive: true
|
194
|
+
|
195
|
+
manifest = ws.manifest
|
196
|
+
|
197
|
+
updated_packages = Array.new
|
198
|
+
all_processed_packages = import_selected_packages(
|
199
|
+
selection, updated_packages, import_options.merge(recursive: options[:recursive]))
|
200
|
+
finalize_package_load(all_processed_packages)
|
201
|
+
|
202
|
+
all_enabled_osdeps = selection.each_osdep_package_name.to_set
|
203
|
+
all_enabled_sources = all_processed_packages
|
188
204
|
|
189
205
|
if options[:warn_about_excluded_packages]
|
190
206
|
selection.exclusions.each do |sel, pkg_names|
|
data/lib/autoproj/version.rb
CHANGED
data/lib/autoproj/workspace.rb
CHANGED
@@ -173,6 +173,8 @@ module Autoproj
|
|
173
173
|
Autoproj::OSDependencies.define_osdeps_mode_option(config)
|
174
174
|
osdeps.load_default
|
175
175
|
osdeps.osdeps_mode
|
176
|
+
|
177
|
+
install_ruby_shims
|
176
178
|
end
|
177
179
|
|
178
180
|
def install_ruby_shims
|
@@ -220,7 +222,7 @@ module Autoproj
|
|
220
222
|
did_update =
|
221
223
|
begin
|
222
224
|
saved_flag = PackageManagers::GemManager.with_prerelease
|
223
|
-
PackageManagers::GemManager.with_prerelease =
|
225
|
+
PackageManagers::GemManager.with_prerelease = config.use_prerelease?
|
224
226
|
osdeps.install(%w{autobuild autoproj})
|
225
227
|
ensure
|
226
228
|
PackageManagers::GemManager.with_prerelease = saved_flag
|
@@ -346,7 +348,7 @@ module Autoproj
|
|
346
348
|
next if manifest.has_package_set?(pkg_or_set)
|
347
349
|
|
348
350
|
# This is not known. Check if we can auto-add it
|
349
|
-
full_path = File.expand_path(File.join(
|
351
|
+
full_path = File.expand_path(File.join(root_dir, layout_level, pkg_or_set))
|
350
352
|
next if !File.directory?(full_path)
|
351
353
|
|
352
354
|
handler, srcdir = Autoproj.package_handler_for(full_path)
|
@@ -446,19 +448,23 @@ module Autoproj
|
|
446
448
|
pkg = manifest.find_autobuild_package(pkg_name)
|
447
449
|
pkg.srcdir = File.join(root_dir, srcdir)
|
448
450
|
if pkg.respond_to?(:builddir)
|
449
|
-
|
450
|
-
# package name to it to make it unique
|
451
|
-
if Pathname.new(build_dir).absolute?
|
452
|
-
pkg.builddir = File.join(build_dir, pkg_name)
|
453
|
-
else
|
454
|
-
pkg.builddir = build_dir
|
455
|
-
end
|
451
|
+
pkg.builddir = compute_builddir(pkg)
|
456
452
|
end
|
457
453
|
|
458
454
|
pkg.prefix = File.join(prefix_dir, prefixdir)
|
459
455
|
pkg.doc_target_dir = File.join(prefix_dir, 'doc', pkg_name)
|
460
456
|
pkg.logdir = File.join(pkg.prefix, "log")
|
461
457
|
end
|
458
|
+
|
459
|
+
def compute_builddir(pkg)
|
460
|
+
# If we're given an absolute build dir, we have to append the
|
461
|
+
# package name to it to make it unique
|
462
|
+
if Pathname.new(build_dir).absolute?
|
463
|
+
File.join(build_dir, pkg.name)
|
464
|
+
else
|
465
|
+
build_dir
|
466
|
+
end
|
467
|
+
end
|
462
468
|
|
463
469
|
# Finalizes the configuration loading
|
464
470
|
#
|
@@ -479,7 +485,7 @@ module Autoproj
|
|
479
485
|
load_if_present(source, source.local_dir, "overrides.rb")
|
480
486
|
end
|
481
487
|
|
482
|
-
Dir.glob(File.join(
|
488
|
+
Dir.glob(File.join( overrides_dir, "*.rb" ) ).sort.each do |file|
|
483
489
|
load file
|
484
490
|
end
|
485
491
|
end
|
@@ -499,37 +505,54 @@ module Autoproj
|
|
499
505
|
end
|
500
506
|
end
|
501
507
|
|
502
|
-
setup_environment_from_packages
|
503
|
-
|
504
508
|
# We now have processed the process setup blocks. All configuration
|
505
509
|
# should be done and we can save the configuration data.
|
506
510
|
config.save
|
507
511
|
end
|
508
512
|
|
509
|
-
def
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
513
|
+
def all_present_packages
|
514
|
+
manifest.each_autobuild_package.
|
515
|
+
find_all { |pkg| File.directory?(pkg.srcdir) }.
|
516
|
+
map(&:name)
|
517
|
+
end
|
518
|
+
|
519
|
+
def export_installation_manifest(package_names = all_present_packages)
|
520
|
+
install_manifest = InstallationManifest.new(root_dir)
|
521
|
+
if install_manifest.exist?
|
522
|
+
install_manifest.load
|
523
|
+
end
|
524
|
+
# Delete obsolete entries
|
525
|
+
install_manifest.delete_if do |pkg|
|
526
|
+
!manifest.find_autobuild_package(pkg.name) ||
|
527
|
+
!File.directory?(pkg.srcdir)
|
519
528
|
end
|
529
|
+
# Update the new entries
|
530
|
+
package_names.each do |pkg_name|
|
531
|
+
install_manifest[pkg_name] =
|
532
|
+
manifest.find_autobuild_package(pkg_name)
|
533
|
+
end
|
534
|
+
# And save
|
535
|
+
install_manifest.save
|
536
|
+
end
|
520
537
|
|
521
|
-
|
522
|
-
|
523
|
-
|
538
|
+
def export_env_sh(package_names = all_present_packages, shell_helpers: true)
|
539
|
+
env = self.env.dup
|
540
|
+
manifest.all_selected_packages.each do |pkg_name|
|
541
|
+
pkg = manifest.find_autobuild_package(pkg_name)
|
542
|
+
if File.directory?(pkg.srcdir) && !pkg.applied_post_install?
|
543
|
+
pkg.apply_post_install
|
544
|
+
end
|
545
|
+
|
546
|
+
pkg.apply_env(env)
|
524
547
|
end
|
548
|
+
env.export_env_sh(shell_helpers: shell_helpers)
|
525
549
|
end
|
526
550
|
|
527
|
-
def
|
528
|
-
|
529
|
-
manifest.
|
530
|
-
|
531
|
-
|
532
|
-
end
|
551
|
+
def apply_post_install
|
552
|
+
manifest.all_selected_packages.each do |pkg_name|
|
553
|
+
pkg = manifest.find_autobuild_package(pkg_name)
|
554
|
+
if File.directory?(pkg.srcdir) && !pkg.applied_post_install?
|
555
|
+
pkg.apply_post_install
|
533
556
|
end
|
534
557
|
end
|
535
558
|
end
|
data/shell/autoproj_sh
CHANGED
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.0.0.
|
4
|
+
version: 2.0.0.b2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rock Core Developers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: autobuild
|
@@ -70,6 +70,26 @@ dependencies:
|
|
70
70
|
- - ">="
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: 1.7.0
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: thor
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 0.19.0
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.19.1
|
83
|
+
type: :runtime
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.19.0
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 0.19.1
|
73
93
|
- !ruby/object:Gem::Dependency
|
74
94
|
name: rdoc
|
75
95
|
requirement: !ruby/object:Gem::Requirement
|