autoproj 1.9.0 → 1.9.1
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.
- data/Manifest.txt +0 -2
- data/bin/autoproj +13 -30
- data/bin/autoproj-envsh +8 -5
- data/bin/autoproj_bootstrap +27 -8
- data/bin/autoproj_bootstrap.in +18 -0
- data/lib/autoproj/autobuild.rb +2 -3
- data/lib/autoproj/cmdline.rb +107 -32
- data/lib/autoproj/manifest.rb +83 -16
- data/lib/autoproj/osdeps.rb +8 -5
- data/lib/autoproj/system.rb +1 -3
- data/lib/autoproj/version.rb +1 -1
- metadata +41 -20
- data/bin/autoproj-list +0 -68
- data/bin/autoproj-show +0 -102
data/Manifest.txt
CHANGED
@@ -10,10 +10,8 @@ bin/autoproj
|
|
10
10
|
bin/autoproj-clean
|
11
11
|
bin/autoproj-create-set
|
12
12
|
bin/autoproj-envsh
|
13
|
-
bin/autoproj-list
|
14
13
|
bin/autoproj-locate
|
15
14
|
bin/autoproj-query
|
16
|
-
bin/autoproj-show
|
17
15
|
bin/autoproj_bootstrap
|
18
16
|
bin/autoproj_bootstrap.in
|
19
17
|
bin/autoproj_stress_test
|
data/bin/autoproj
CHANGED
@@ -18,33 +18,6 @@ def color(*args)
|
|
18
18
|
Autoproj.color(*args)
|
19
19
|
end
|
20
20
|
|
21
|
-
def report
|
22
|
-
Autobuild::Reporting.report do
|
23
|
-
yield
|
24
|
-
end
|
25
|
-
Autobuild::Reporting.success
|
26
|
-
|
27
|
-
rescue ConfigError => e
|
28
|
-
STDERR.puts
|
29
|
-
STDERR.puts color(e.message, :red, :bold)
|
30
|
-
if Autoproj.in_autoproj_installation?(Dir.pwd)
|
31
|
-
root_dir = /^#{Regexp.quote(Autoproj.root_dir)}(?!\/\.gems)/
|
32
|
-
e.backtrace.find_all { |path| path =~ root_dir }.
|
33
|
-
each do |path|
|
34
|
-
STDERR.puts color(" in #{path}", :red, :bold)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
if Autobuild.debug then raise
|
38
|
-
else exit 1
|
39
|
-
end
|
40
|
-
rescue Interrupt
|
41
|
-
STDERR.puts
|
42
|
-
STDERR.puts color("Interrupted by user", :red, :bold)
|
43
|
-
if Autobuild.debug then raise
|
44
|
-
else exit 1
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
21
|
Autoproj::OSDependencies.autodetect_ruby
|
49
22
|
|
50
23
|
# Check the first element of ARGV. If a tool called autoproj-VALUE exists, just
|
@@ -65,7 +38,7 @@ if File.file?("#{prefix}-#{ARGV.first}")
|
|
65
38
|
end
|
66
39
|
|
67
40
|
# Find the autoproj root dir
|
68
|
-
report do
|
41
|
+
Autoproj::CmdLine.report do
|
69
42
|
selected_packages =
|
70
43
|
begin Autoproj::CmdLine.parse_arguments(ARGV.dup)
|
71
44
|
rescue RuntimeError => e
|
@@ -150,12 +123,21 @@ EOTEXT
|
|
150
123
|
# First do the resolution to get auto-add, finalize the package
|
151
124
|
# configuration, and then re-resolve
|
152
125
|
Autoproj.silent do
|
153
|
-
|
126
|
+
begin
|
127
|
+
Autoproj::CmdLine.resolve_user_selection(selected_packages)
|
128
|
+
rescue Autoproj::Manifest::ExcludedSelection => e
|
129
|
+
raise e, "#{e.selection}, which is selected on the command line, cannot be built: #{e.message}"
|
130
|
+
end
|
154
131
|
end
|
155
132
|
# Now load the rest of the configuration
|
156
133
|
Autoproj::CmdLine.finalize_package_setup
|
157
134
|
# Finally, filter out exclusions
|
158
|
-
resolved_selected_packages =
|
135
|
+
resolved_selected_packages =
|
136
|
+
begin
|
137
|
+
Autoproj::CmdLine.resolve_user_selection(selected_packages)
|
138
|
+
rescue Autoproj::Manifest::ExcludedSelection => e
|
139
|
+
raise e, "#{e.sel}, which is selected on the command line, cannot be built: #{e.message}"
|
140
|
+
end
|
159
141
|
Autoproj::CmdLine.validate_user_selection(selected_packages, resolved_selected_packages)
|
160
142
|
|
161
143
|
if !selected_packages.empty?
|
@@ -258,6 +240,7 @@ EOTEXT
|
|
258
240
|
# line.
|
259
241
|
all_enabled_packages = Autoproj::CmdLine.import_packages(selected_packages)
|
260
242
|
Autoproj::CmdLine.load_all_available_package_manifests
|
243
|
+
Autoproj::CmdLine.export_installation_manifest
|
261
244
|
|
262
245
|
if Autoproj::CmdLine.update_os_dependencies? && !all_enabled_packages.empty?
|
263
246
|
begin
|
data/bin/autoproj-envsh
CHANGED
@@ -2,10 +2,13 @@
|
|
2
2
|
|
3
3
|
require 'autoproj'
|
4
4
|
require 'autoproj/cmdline'
|
5
|
-
Autoproj.
|
6
|
-
Autoproj
|
7
|
-
|
5
|
+
Autoproj::CmdLine.report do
|
6
|
+
Autoproj.silent do
|
7
|
+
Autoproj::CmdLine.initialize_root_directory
|
8
|
+
Autoproj::CmdLine.initialize_and_load(ARGV)
|
9
|
+
end
|
10
|
+
Autoproj.export_env_sh
|
11
|
+
Autoproj::CmdLine.export_installation_manifest
|
12
|
+
Autoproj.message "autoproj: updated #{Autoproj.root_dir}/#{Autoproj::ENV_FILENAME}", :green
|
8
13
|
end
|
9
|
-
Autoproj.export_env_sh
|
10
|
-
Autoproj.message "autoproj: updated #{Autoproj.root_dir}/#{Autoproj::ENV_FILENAME}", :green
|
11
14
|
|
data/bin/autoproj_bootstrap
CHANGED
@@ -5,6 +5,24 @@ if RUBY_VERSION < "1.8.7"
|
|
5
5
|
exit 1
|
6
6
|
end
|
7
7
|
|
8
|
+
if defined? Encoding # This is a 1.9-only thing
|
9
|
+
Encoding.default_internal = Encoding::UTF_8
|
10
|
+
Encoding.default_external = Encoding::UTF_8
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'rbconfig'
|
14
|
+
module Autobuild
|
15
|
+
@windows = RbConfig::CONFIG["host_os"] =~%r!(msdos|mswin|djgpp|mingw|[Ww]indows)!
|
16
|
+
def self.windows?
|
17
|
+
@windows
|
18
|
+
end
|
19
|
+
|
20
|
+
@macos = RbConfig::CONFIG["host_os"] = ~%r!([Dd]arwin)!
|
21
|
+
def self.macos?
|
22
|
+
@macos
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
8
26
|
require 'set'
|
9
27
|
curdir_entries = Dir.entries('.').to_set - [".", "..", "autoproj_bootstrap", ".gems", 'env.sh'].to_set
|
10
28
|
if !curdir_entries.empty? && ENV['AUTOPROJ_BOOTSTRAP_IGNORE_NONEMPTY_DIR'] != '1'
|
@@ -841,13 +859,13 @@ fi
|
|
841
859
|
end
|
842
860
|
else
|
843
861
|
Autoproj.message " autodetecting the operating system"
|
844
|
-
|
845
|
-
if
|
846
|
-
if
|
862
|
+
lsb_name, lsb_versions = os_from_lsb
|
863
|
+
if lsb_name
|
864
|
+
if lsb_name != "debian"
|
847
865
|
if File.exists?("/etc/debian_version")
|
848
|
-
@operating_system = [[
|
866
|
+
@operating_system = [[lsb_name, "debian"], lsb_versions]
|
849
867
|
else
|
850
|
-
@operating_system = [[
|
868
|
+
@operating_system = [[lsb_name], lsb_versions]
|
851
869
|
end
|
852
870
|
end
|
853
871
|
end
|
@@ -861,6 +879,9 @@ fi
|
|
861
879
|
if versions.first =~ /sid/
|
862
880
|
versions = ["unstable", "sid"]
|
863
881
|
end
|
882
|
+
if lsb_versions
|
883
|
+
lsb_versions.each { |v| versions << v if !versions.include?(v) }
|
884
|
+
end
|
864
885
|
[['debian'], versions]
|
865
886
|
elsif File.exists?('/etc/fedora-release')
|
866
887
|
release_string = File.read('/etc/fedora-release').strip
|
@@ -1808,9 +1829,7 @@ module Autoproj
|
|
1808
1829
|
def self.export_env_sh(subdir = nil)
|
1809
1830
|
# Make sure that we have the environment of all selected packages
|
1810
1831
|
if Autoproj.manifest # we don't have a manifest if we are bootstrapping
|
1811
|
-
Autoproj.
|
1812
|
-
Autobuild::Package[pkg_name].update_environment
|
1813
|
-
end
|
1832
|
+
Autoproj::CmdLine.update_environment
|
1814
1833
|
end
|
1815
1834
|
|
1816
1835
|
filename = if subdir
|
data/bin/autoproj_bootstrap.in
CHANGED
@@ -5,6 +5,24 @@ if RUBY_VERSION < "1.8.7"
|
|
5
5
|
exit 1
|
6
6
|
end
|
7
7
|
|
8
|
+
if defined? Encoding # This is a 1.9-only thing
|
9
|
+
Encoding.default_internal = Encoding::UTF_8
|
10
|
+
Encoding.default_external = Encoding::UTF_8
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'rbconfig'
|
14
|
+
module Autobuild
|
15
|
+
@windows = RbConfig::CONFIG["host_os"] =~%r!(msdos|mswin|djgpp|mingw|[Ww]indows)!
|
16
|
+
def self.windows?
|
17
|
+
@windows
|
18
|
+
end
|
19
|
+
|
20
|
+
@macos = RbConfig::CONFIG["host_os"] = ~%r!([Dd]arwin)!
|
21
|
+
def self.macos?
|
22
|
+
@macos
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
8
26
|
require 'set'
|
9
27
|
curdir_entries = Dir.entries('.').to_set - [".", "..", "autoproj_bootstrap", ".gems", 'env.sh'].to_set
|
10
28
|
if !curdir_entries.empty? && ENV['AUTOPROJ_BOOTSTRAP_IGNORE_NONEMPTY_DIR'] != '1'
|
data/lib/autoproj/autobuild.rb
CHANGED
@@ -299,9 +299,8 @@ module Autoproj
|
|
299
299
|
dir ||= find_topmost_directory_containing(full_path, 'CMakeLists.txt')
|
300
300
|
|
301
301
|
return "cmake_package", dir
|
302
|
-
elsif
|
303
|
-
|
304
|
-
find_topmost_directory_containing(full_path, "lib/*.rb")
|
302
|
+
elsif dir = find_topmost_directory_containing(full_path, "Rakefile") ||
|
303
|
+
find_topmost_directory_containing(full_path, "lib/*.rb")
|
305
304
|
|
306
305
|
return "ruby_package", dir
|
307
306
|
end
|
data/lib/autoproj/cmdline.rb
CHANGED
@@ -42,6 +42,46 @@ module Autoproj
|
|
42
42
|
end
|
43
43
|
|
44
44
|
module CmdLine
|
45
|
+
def self.handle_ruby_version
|
46
|
+
ruby = RbConfig::CONFIG['RUBY_INSTALL_NAME']
|
47
|
+
ruby_bindir = RbConfig::CONFIG['bindir']
|
48
|
+
|
49
|
+
ruby_executable = File.join(ruby_bindir, ruby)
|
50
|
+
if Autoproj.has_config_key?('ruby_executable')
|
51
|
+
expected = Autoproj.user_config('ruby_executable')
|
52
|
+
if expected != ruby_executable
|
53
|
+
raise ConfigError.new, "this autoproj installation was bootstrapped using #{expected}, but you are currently running under #{ruby_executable}. This is usually caused by calling a wrong gem program (for instance, gem1.8 instead of gem1.9.1)"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
Autoproj.change_option('ruby_executable', ruby_executable, true)
|
57
|
+
|
58
|
+
install_suffix = ""
|
59
|
+
if match = /ruby(.*)$/.match(ruby)
|
60
|
+
install_suffix = match[1]
|
61
|
+
end
|
62
|
+
|
63
|
+
bindir = File.join(Autoproj.build_dir, 'bin')
|
64
|
+
FileUtils.mkdir_p bindir
|
65
|
+
Autoproj.env_add 'PATH', bindir
|
66
|
+
|
67
|
+
File.open(File.join(bindir, 'ruby'), 'w') do |io|
|
68
|
+
io.puts "#! /bin/sh"
|
69
|
+
io.puts "exec #{File.join(ruby_bindir, ruby)} \"$@\""
|
70
|
+
end
|
71
|
+
FileUtils.chmod 0755, File.join(bindir, 'ruby')
|
72
|
+
|
73
|
+
subprograms = ['gem', 'irb'].each do |name|
|
74
|
+
# Look for the corresponding gem program
|
75
|
+
prg_name = "#{name}#{install_suffix}"
|
76
|
+
if File.file?(prg_path = File.join(ruby_bindir, prg_name))
|
77
|
+
File.open(File.join(bindir, name), 'w') do |io|
|
78
|
+
io.puts "#! /bin/sh"
|
79
|
+
io.puts "exec #{prg_path} \"$@\""
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
45
85
|
def self.initialize
|
46
86
|
if defined? Encoding # This is a 1.9-only thing
|
47
87
|
Encoding.default_internal = Encoding::UTF_8
|
@@ -59,14 +99,7 @@ module Autoproj
|
|
59
99
|
Autoproj.loaded_autobuild_files.clear
|
60
100
|
Autoproj.load_config
|
61
101
|
|
62
|
-
|
63
|
-
if Autoproj.has_config_key?('ruby_executable')
|
64
|
-
expected = Autoproj.user_config('ruby_executable')
|
65
|
-
if expected != ruby_executable
|
66
|
-
raise ConfigError.new, "this autoproj installation was bootstrapped using #{expected}, but you are currently running under #{ruby_executable}. This is usually caused by calling a wrong gem program (for instance, gem1.8 instead of gem1.9.1)"
|
67
|
-
end
|
68
|
-
end
|
69
|
-
Autoproj.change_option('ruby_executable', ruby_executable, true)
|
102
|
+
handle_ruby_version
|
70
103
|
|
71
104
|
if Autoproj.has_config_key?('autobuild')
|
72
105
|
params = Autoproj.user_config('autobuild')
|
@@ -102,19 +135,6 @@ module Autoproj
|
|
102
135
|
Autobuild.srcdir = Autoproj.root_dir
|
103
136
|
Autobuild.logdir = File.join(Autobuild.prefix, 'log')
|
104
137
|
|
105
|
-
ruby = RbConfig::CONFIG['RUBY_INSTALL_NAME']
|
106
|
-
if ruby != 'ruby'
|
107
|
-
bindir = File.join(Autoproj.build_dir, 'bin')
|
108
|
-
FileUtils.mkdir_p bindir
|
109
|
-
File.open(File.join(bindir, 'ruby'), 'w') do |io|
|
110
|
-
io.puts "#! /bin/sh"
|
111
|
-
io.puts "exec #{ruby} \"$@\""
|
112
|
-
end
|
113
|
-
FileUtils.chmod 0755, File.join(bindir, 'ruby')
|
114
|
-
|
115
|
-
Autoproj.env_add 'PATH', bindir
|
116
|
-
end
|
117
|
-
|
118
138
|
Autoproj.manifest = Manifest.new
|
119
139
|
|
120
140
|
local_source = LocalPackageSet.new(Autoproj.manifest)
|
@@ -332,16 +352,20 @@ module Autoproj
|
|
332
352
|
|
333
353
|
|
334
354
|
def self.setup_all_package_directories
|
335
|
-
|
355
|
+
# Override the package directories from our reused installations
|
356
|
+
imported_packages = Set.new
|
357
|
+
Autoproj.manifest.reused_installations.each do |manifest|
|
358
|
+
manifest.each do |pkg|
|
359
|
+
imported_packages << pkg.name
|
360
|
+
Autobuild::Package[pkg.name].srcdir = pkg.srcdir
|
361
|
+
Autobuild::Package[pkg.name].prefix = pkg.prefix
|
362
|
+
end
|
363
|
+
end
|
336
364
|
|
337
|
-
|
338
|
-
# working on the whole package set. Starting from now, we need to build the
|
339
|
-
# package sets based on the layout file
|
340
|
-
#
|
341
|
-
# First, we allow to user to specify packages based on disk paths, so
|
342
|
-
# resolve those
|
365
|
+
manifest = Autoproj.manifest
|
343
366
|
manifest.packages.each_value do |pkg_def|
|
344
367
|
pkg = pkg_def.autobuild
|
368
|
+
next if imported_packages.include?(pkg_def.name)
|
345
369
|
setup_package_directories(pkg)
|
346
370
|
end
|
347
371
|
end
|
@@ -371,10 +395,7 @@ module Autoproj
|
|
371
395
|
Autobuild::Package[pkg_name].disable
|
372
396
|
end
|
373
397
|
|
374
|
-
|
375
|
-
manifest.all_selected_packages.each do |pkg_name|
|
376
|
-
Autobuild::Package[pkg_name].update_environment
|
377
|
-
end
|
398
|
+
update_environment
|
378
399
|
|
379
400
|
# We now have processed the process setup blocks. All configuration
|
380
401
|
# should be done and we can save the configuration data.
|
@@ -392,6 +413,8 @@ module Autoproj
|
|
392
413
|
if File.directory?(pkg.autobuild.srcdir)
|
393
414
|
begin
|
394
415
|
manifest.load_package_manifest(pkg.autobuild.name)
|
416
|
+
rescue Interrupt
|
417
|
+
raise
|
395
418
|
rescue Exception => e
|
396
419
|
Autoproj.warn "cannot load package manifest for #{pkg.autobuild.name}: #{e.message}"
|
397
420
|
end
|
@@ -399,6 +422,19 @@ module Autoproj
|
|
399
422
|
end
|
400
423
|
end
|
401
424
|
|
425
|
+
def self.update_environment
|
426
|
+
Autoproj.manifest.reused_installations.each do |manifest|
|
427
|
+
manifest.each do |pkg|
|
428
|
+
Autobuild::Package[pkg.name].update_environment
|
429
|
+
end
|
430
|
+
end
|
431
|
+
|
432
|
+
# Make sure that we have the environment of all selected packages
|
433
|
+
manifest.all_selected_packages(false).each do |pkg_name|
|
434
|
+
Autobuild::Package[pkg_name].update_environment
|
435
|
+
end
|
436
|
+
end
|
437
|
+
|
402
438
|
def self.display_configuration(manifest, package_list = nil)
|
403
439
|
# Load the manifest for packages that are already present on the
|
404
440
|
# file system
|
@@ -670,6 +706,7 @@ module Autoproj
|
|
670
706
|
Autoproj.each_post_import_block(pkg) do |block|
|
671
707
|
block.call(pkg)
|
672
708
|
end
|
709
|
+
pkg.update_environment
|
673
710
|
|
674
711
|
# Verify that its dependencies are there, and add
|
675
712
|
# them to the selected_packages set so that they get
|
@@ -1527,6 +1564,7 @@ where 'mode' is one of:
|
|
1527
1564
|
do_switch_config(false, type, url, *options)
|
1528
1565
|
end
|
1529
1566
|
|
1567
|
+
handle_ruby_version
|
1530
1568
|
Autoproj.save_config
|
1531
1569
|
|
1532
1570
|
Autobuild.env_set 'RUBYOPT', '-rubygems'
|
@@ -1783,6 +1821,7 @@ where 'mode' is one of:
|
|
1783
1821
|
Autoproj::CmdLine.finalize_package_setup
|
1784
1822
|
|
1785
1823
|
load_all_available_package_manifests
|
1824
|
+
update_environment
|
1786
1825
|
remaining_arguments
|
1787
1826
|
end
|
1788
1827
|
|
@@ -1841,6 +1880,42 @@ where 'mode' is one of:
|
|
1841
1880
|
puts " #{Pathname.new(dir).relative_path_from(root)}"
|
1842
1881
|
end
|
1843
1882
|
end
|
1883
|
+
|
1884
|
+
def self.export_installation_manifest
|
1885
|
+
File.open(File.join(Autoproj.root_dir, ".autoproj-installation-manifest"), 'w') do |io|
|
1886
|
+
Autoproj.manifest.all_selected_packages.each do |pkg_name|
|
1887
|
+
pkg = Autobuild::Package[pkg_name]
|
1888
|
+
io.puts "#{pkg_name},#{pkg.srcdir},#{pkg.prefix}"
|
1889
|
+
end
|
1890
|
+
end
|
1891
|
+
end
|
1892
|
+
|
1893
|
+
def self.report
|
1894
|
+
Autobuild::Reporting.report do
|
1895
|
+
yield
|
1896
|
+
end
|
1897
|
+
Autobuild::Reporting.success
|
1898
|
+
|
1899
|
+
rescue ConfigError => e
|
1900
|
+
STDERR.puts
|
1901
|
+
STDERR.puts color(e.message, :red, :bold)
|
1902
|
+
if Autoproj.in_autoproj_installation?(Dir.pwd)
|
1903
|
+
root_dir = /^#{Regexp.quote(Autoproj.root_dir)}(?!\/\.gems)/
|
1904
|
+
e.backtrace.find_all { |path| path =~ root_dir }.
|
1905
|
+
each do |path|
|
1906
|
+
STDERR.puts color(" in #{path}", :red, :bold)
|
1907
|
+
end
|
1908
|
+
end
|
1909
|
+
if Autobuild.debug then raise
|
1910
|
+
else exit 1
|
1911
|
+
end
|
1912
|
+
rescue Interrupt
|
1913
|
+
STDERR.puts
|
1914
|
+
STDERR.puts color("Interrupted by user", :red, :bold)
|
1915
|
+
if Autobuild.debug then raise
|
1916
|
+
else exit 1
|
1917
|
+
end
|
1918
|
+
end
|
1844
1919
|
end
|
1845
1920
|
end
|
1846
1921
|
|
data/lib/autoproj/manifest.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'yaml'
|
2
|
+
require 'csv'
|
2
3
|
require 'utilrb/kernel/options'
|
3
4
|
require 'set'
|
4
5
|
require 'rexml/document'
|
@@ -966,7 +967,6 @@ module Autoproj
|
|
966
967
|
# The Manifest class represents the information included in the main
|
967
968
|
# manifest file, and allows to manipulate it
|
968
969
|
class Manifest
|
969
|
-
|
970
970
|
# Data structure used to use autobuild importers without a package, to
|
971
971
|
# import configuration data.
|
972
972
|
#
|
@@ -1023,7 +1023,7 @@ module Autoproj
|
|
1023
1023
|
|
1024
1024
|
@file = file
|
1025
1025
|
@data = data
|
1026
|
-
data['
|
1026
|
+
@ignored_packages |= (data['ignored_packages'] || Set.new)
|
1027
1027
|
data['exclude_packages'] ||= Set.new
|
1028
1028
|
|
1029
1029
|
if data['constants']
|
@@ -1044,6 +1044,12 @@ module Autoproj
|
|
1044
1044
|
# The path to the manifest file that has been loaded
|
1045
1045
|
attr_reader :file
|
1046
1046
|
|
1047
|
+
# The set of package names for packages that should be ignored
|
1048
|
+
attr_reader :ignored_packages
|
1049
|
+
|
1050
|
+
# A set of other autoproj installations that are being reused
|
1051
|
+
attr_reader :reused_installations
|
1052
|
+
|
1047
1053
|
# True if osdeps should be handled in update and build, or left to the
|
1048
1054
|
# osdeps command
|
1049
1055
|
def auto_osdeps?
|
@@ -1075,6 +1081,8 @@ module Autoproj
|
|
1075
1081
|
@osdeps_overrides = Hash.new
|
1076
1082
|
@metapackages = Hash.new
|
1077
1083
|
@ignored_os_dependencies = Set.new
|
1084
|
+
@reused_installations = Array.new
|
1085
|
+
@ignored_packages = Set.new
|
1078
1086
|
|
1079
1087
|
@constant_definitions = Hash.new
|
1080
1088
|
if Autoproj.has_config_key?('manifest_source')
|
@@ -1086,7 +1094,7 @@ module Autoproj
|
|
1086
1094
|
# Call this method to ignore a specific package. It must not be used in
|
1087
1095
|
# init.rb, as the manifest is not yet loaded then
|
1088
1096
|
def ignore_package(package_name)
|
1089
|
-
|
1097
|
+
@ignored_packages << package_name
|
1090
1098
|
end
|
1091
1099
|
|
1092
1100
|
# True if the given package should not be built, with the packages that
|
@@ -1094,7 +1102,7 @@ module Autoproj
|
|
1094
1102
|
#
|
1095
1103
|
# This is useful if the packages are already installed on this system.
|
1096
1104
|
def ignored?(package_name)
|
1097
|
-
|
1105
|
+
ignored_packages.any? do |l|
|
1098
1106
|
if package_name == l
|
1099
1107
|
true
|
1100
1108
|
elsif (pkg_set = metapackages[l]) && pkg_set.include?(package_name)
|
@@ -1107,7 +1115,7 @@ module Autoproj
|
|
1107
1115
|
|
1108
1116
|
# Enumerates the package names of all ignored packages
|
1109
1117
|
def each_ignored_package
|
1110
|
-
|
1118
|
+
ignored_packages.each do |l|
|
1111
1119
|
if pkg_set = metapackages[l]
|
1112
1120
|
pkg_set.each_package do |pkg|
|
1113
1121
|
yield(pkg.name)
|
@@ -1126,7 +1134,7 @@ module Autoproj
|
|
1126
1134
|
|
1127
1135
|
# Removes all registered ignored packages
|
1128
1136
|
def clear_ignored
|
1129
|
-
|
1137
|
+
ignored_packages.clear
|
1130
1138
|
end
|
1131
1139
|
|
1132
1140
|
# The set of package names that are listed in the excluded_packages
|
@@ -1767,7 +1775,7 @@ module Autoproj
|
|
1767
1775
|
else
|
1768
1776
|
pkg_set = find_metapackage(name)
|
1769
1777
|
if !pkg_set
|
1770
|
-
raise
|
1778
|
+
raise UnknownPackage.new(name), "#{name} is neither a package nor a package set name. Packages in autoproj must be declared in an autobuild file."
|
1771
1779
|
end
|
1772
1780
|
pkg_set.each_package.
|
1773
1781
|
map(&:name).
|
@@ -1813,22 +1821,27 @@ module Autoproj
|
|
1813
1821
|
metapackages.each_value(&block)
|
1814
1822
|
end
|
1815
1823
|
|
1816
|
-
# Returns the packages
|
1824
|
+
# Returns the packages selected in this manifest's layout
|
1817
1825
|
#
|
1818
|
-
#
|
1819
|
-
# Otherwise, return all packages.
|
1826
|
+
# @return [PackageSelection]
|
1820
1827
|
def layout_packages(validate)
|
1821
1828
|
result = PackageSelection.new
|
1822
1829
|
Autoproj.in_file(self.file) do
|
1823
1830
|
normalized_layout.each_key do |pkg_or_set|
|
1824
|
-
|
1831
|
+
begin
|
1832
|
+
result.select(pkg_or_set, resolve_package_set(pkg_or_set))
|
1833
|
+
rescue UnknownPackage => e
|
1834
|
+
raise e, "#{e.name}, which is selected in the layout, is unknown: #{e.message}", e.backtrace
|
1835
|
+
end
|
1825
1836
|
end
|
1826
1837
|
end
|
1827
1838
|
|
1828
1839
|
begin
|
1829
1840
|
result.filter_excluded_and_ignored_packages(self)
|
1830
|
-
rescue
|
1831
|
-
|
1841
|
+
rescue ExcludedSelection => e
|
1842
|
+
if validate
|
1843
|
+
raise e, "#{e.sel}, which is selected in the layout, cannot be built: #{e.message}", e.backtrace
|
1844
|
+
end
|
1832
1845
|
end
|
1833
1846
|
result
|
1834
1847
|
end
|
@@ -2086,6 +2099,24 @@ module Autoproj
|
|
2086
2099
|
@osdeps_overrides.delete(osdeps_name.to_s)
|
2087
2100
|
end
|
2088
2101
|
|
2102
|
+
# Exception raised by
|
2103
|
+
# PackageSelection#filter_excluded_and_ignored_packages when a given
|
2104
|
+
# selection is completely excluded
|
2105
|
+
class ExcludedSelection < ConfigError
|
2106
|
+
attr_reader :selection
|
2107
|
+
def initialize(selection)
|
2108
|
+
@selection = selection
|
2109
|
+
end
|
2110
|
+
end
|
2111
|
+
|
2112
|
+
# Exception raised when an unknown package is encountered
|
2113
|
+
class UnknownPackage < ConfigError
|
2114
|
+
attr_reader :name
|
2115
|
+
def initialize(name)
|
2116
|
+
@name = name
|
2117
|
+
end
|
2118
|
+
end
|
2119
|
+
|
2089
2120
|
# Class holding information about which packages have been selected, and
|
2090
2121
|
# why. It is used to decide whether some non-availability of packages
|
2091
2122
|
# are errors or simply warnings (i.e. if the user really wants a given
|
@@ -2162,12 +2193,12 @@ module Autoproj
|
|
2162
2193
|
if exclusions.size == 1
|
2163
2194
|
reason = exclusions[0][1]
|
2164
2195
|
if sel == exclusions[0][0]
|
2165
|
-
raise
|
2196
|
+
raise ExcludedSelection.new(sel), "it is excluded from the build: #{reason}"
|
2166
2197
|
else
|
2167
|
-
raise
|
2198
|
+
raise ExcludedSelection.new(sel), "it expands to #{exclusions.map(&:first).join(", ")}, which is excluded from the build: #{reason}"
|
2168
2199
|
end
|
2169
2200
|
else
|
2170
|
-
raise
|
2201
|
+
raise ExcludedSelection.new(sel), "it expands to #{exclusions.map(&:first).join(", ")}, and all these packages are excluded from the build:\n #{exclusions.map { |name, reason| "#{name}: #{reason}" }.join("\n ")}"
|
2171
2202
|
end
|
2172
2203
|
elsif !ignored.empty?
|
2173
2204
|
ignored.each do |pkg_name|
|
@@ -2300,6 +2331,21 @@ module Autoproj
|
|
2300
2331
|
end
|
2301
2332
|
result
|
2302
2333
|
end
|
2334
|
+
|
2335
|
+
def reuse(*dir)
|
2336
|
+
dir = File.expand_path(File.join(*dir), Autoproj.root_dir)
|
2337
|
+
if reused_installations.any? { |mnf| mnf.path == dir }
|
2338
|
+
return
|
2339
|
+
end
|
2340
|
+
|
2341
|
+
manifest = InstallationManifest.new(dir)
|
2342
|
+
manifest.load(File.join(dir, ".autoproj-installation-manifest"))
|
2343
|
+
@reused_installations << manifest
|
2344
|
+
manifest.each do |pkg|
|
2345
|
+
puts pkg.name
|
2346
|
+
ignore_package pkg.name
|
2347
|
+
end
|
2348
|
+
end
|
2303
2349
|
end
|
2304
2350
|
|
2305
2351
|
class << self
|
@@ -2317,6 +2363,27 @@ module Autoproj
|
|
2317
2363
|
osdeps
|
2318
2364
|
end
|
2319
2365
|
|
2366
|
+
# Manifest of installed packages imported from another autoproj installation
|
2367
|
+
class InstallationManifest
|
2368
|
+
Package = Struct.new :name, :srcdir, :prefix
|
2369
|
+
|
2370
|
+
attr_reader :path
|
2371
|
+
attr_reader :packages
|
2372
|
+
def initialize(path)
|
2373
|
+
@path = path
|
2374
|
+
end
|
2375
|
+
|
2376
|
+
def load(path)
|
2377
|
+
@packages = CSV.read(path).map do |row|
|
2378
|
+
Package.new(*row)
|
2379
|
+
end
|
2380
|
+
end
|
2381
|
+
|
2382
|
+
def each(&block)
|
2383
|
+
packages.each(&block)
|
2384
|
+
end
|
2385
|
+
end
|
2386
|
+
|
2320
2387
|
# Access to the information contained in a package's manifest.xml file
|
2321
2388
|
#
|
2322
2389
|
# Use PackageManifest.load to create
|
data/lib/autoproj/osdeps.rb
CHANGED
@@ -742,13 +742,13 @@ fi
|
|
742
742
|
end
|
743
743
|
else
|
744
744
|
Autoproj.message " autodetecting the operating system"
|
745
|
-
|
746
|
-
if
|
747
|
-
if
|
745
|
+
lsb_name, lsb_versions = os_from_lsb
|
746
|
+
if lsb_name
|
747
|
+
if lsb_name != "debian"
|
748
748
|
if File.exists?("/etc/debian_version")
|
749
|
-
@operating_system = [[
|
749
|
+
@operating_system = [[lsb_name, "debian"], lsb_versions]
|
750
750
|
else
|
751
|
-
@operating_system = [[
|
751
|
+
@operating_system = [[lsb_name], lsb_versions]
|
752
752
|
end
|
753
753
|
end
|
754
754
|
end
|
@@ -762,6 +762,9 @@ fi
|
|
762
762
|
if versions.first =~ /sid/
|
763
763
|
versions = ["unstable", "sid"]
|
764
764
|
end
|
765
|
+
if lsb_versions
|
766
|
+
lsb_versions.each { |v| versions << v if !versions.include?(v) }
|
767
|
+
end
|
765
768
|
[['debian'], versions]
|
766
769
|
elsif File.exists?('/etc/fedora-release')
|
767
770
|
release_string = File.read('/etc/fedora-release').strip
|
data/lib/autoproj/system.rb
CHANGED
@@ -148,9 +148,7 @@ module Autoproj
|
|
148
148
|
def self.export_env_sh(subdir = nil)
|
149
149
|
# Make sure that we have the environment of all selected packages
|
150
150
|
if Autoproj.manifest # we don't have a manifest if we are bootstrapping
|
151
|
-
Autoproj.
|
152
|
-
Autobuild::Package[pkg_name].update_environment
|
153
|
-
end
|
151
|
+
Autoproj::CmdLine.update_environment
|
154
152
|
end
|
155
153
|
|
156
154
|
filename = if subdir
|
data/lib/autoproj/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autoproj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.
|
4
|
+
version: 1.9.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: autobuild
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: 1.7.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.7.0
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: utilrb
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: 1.6.0
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.6.0
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: highline
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: 1.5.0
|
44
54
|
type: :runtime
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.5.0
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: rdoc
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ~>
|
@@ -54,18 +69,28 @@ dependencies:
|
|
54
69
|
version: '3.10'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '3.10'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: hoe
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ~>
|
64
84
|
- !ruby/object:Gem::Version
|
65
|
-
version: '3.
|
85
|
+
version: '3.4'
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '3.4'
|
69
94
|
description: autoproj is a manager for sets of software packages. It allows the user
|
70
95
|
to import and build packages from source, still using the underlying distribution's
|
71
96
|
native package manager for software that is available on it.
|
@@ -79,10 +104,8 @@ executables:
|
|
79
104
|
- autoproj-clean
|
80
105
|
- autoproj-create-set
|
81
106
|
- autoproj-envsh
|
82
|
-
- autoproj-list
|
83
107
|
- autoproj-locate
|
84
108
|
- autoproj-query
|
85
|
-
- autoproj-show
|
86
109
|
- autoproj_bootstrap
|
87
110
|
- autoproj_bootstrap.in
|
88
111
|
- autoproj_stress_test
|
@@ -105,10 +128,8 @@ files:
|
|
105
128
|
- bin/autoproj-clean
|
106
129
|
- bin/autoproj-create-set
|
107
130
|
- bin/autoproj-envsh
|
108
|
-
- bin/autoproj-list
|
109
131
|
- bin/autoproj-locate
|
110
132
|
- bin/autoproj-query
|
111
|
-
- bin/autoproj-show
|
112
133
|
- bin/autoproj_bootstrap
|
113
134
|
- bin/autoproj_bootstrap.in
|
114
135
|
- bin/autoproj_stress_test
|
@@ -172,14 +193,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
193
|
version: '0'
|
173
194
|
requirements: []
|
174
195
|
rubyforge_project: autobuild
|
175
|
-
rubygems_version: 1.8.
|
196
|
+
rubygems_version: 1.8.23
|
176
197
|
signing_key:
|
177
198
|
specification_version: 3
|
178
199
|
summary: Easy installation and management of sets of software packages
|
179
200
|
test_files:
|
180
|
-
- test/test_manifest.rb
|
181
|
-
- test/test_package_manifest.rb
|
182
201
|
- test/test_os_dependencies.rb
|
183
202
|
- test/test_debian.rb
|
203
|
+
- test/test_manifest.rb
|
184
204
|
- test/package_managers/test_apt_dpkg_manager.rb
|
185
205
|
- test/package_managers/test_gem.rb
|
206
|
+
- test/test_package_manifest.rb
|
data/bin/autoproj-list
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
#! /usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'autoproj'
|
4
|
-
require 'autoproj/cmdline'
|
5
|
-
|
6
|
-
Autoproj.silent do
|
7
|
-
Autoproj::CmdLine.initialize_root_directory
|
8
|
-
Autoproj::CmdLine.initialize_and_load(ARGV)
|
9
|
-
end
|
10
|
-
manifest = Autoproj.manifest
|
11
|
-
|
12
|
-
# Load the manifest for packages that are already present on the
|
13
|
-
# file system
|
14
|
-
manifest.packages.each_value do |pkg|
|
15
|
-
if File.directory?(pkg.autobuild.srcdir)
|
16
|
-
manifest.load_package_manifest(pkg.autobuild.name)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
all_packages = Hash.new
|
21
|
-
package_sets = manifest.each_package_set.to_a
|
22
|
-
package_sets.each do |pkg_set|
|
23
|
-
pkg_set.each_package.each do |pkg|
|
24
|
-
all_packages[pkg.name] = [pkg, pkg_set.name]
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
metapackages = manifest.metapackages.values
|
29
|
-
|
30
|
-
if package_sets.empty?
|
31
|
-
Autoproj.message("autoproj: no package sets defined in autoproj/manifest", :bold, :red)
|
32
|
-
exit(0)
|
33
|
-
end
|
34
|
-
|
35
|
-
Autoproj.message
|
36
|
-
Autoproj.message("autoproj: package sets", :bold)
|
37
|
-
package_sets.sort_by(&:name).each do |pkg_set|
|
38
|
-
next if pkg_set.empty?
|
39
|
-
if pkg_set.imported_from
|
40
|
-
Autoproj.message " #{pkg_set.name} (imported by #{pkg_set.imported_from.name})"
|
41
|
-
else
|
42
|
-
Autoproj.message " #{pkg_set.name} (listed in manifest)"
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
Autoproj.message
|
47
|
-
Autoproj.message("autoproj: metapackages", :bold)
|
48
|
-
metapackages.sort_by(&:name).each do |metap|
|
49
|
-
Autoproj.message " #{metap.name}"
|
50
|
-
end
|
51
|
-
|
52
|
-
packages_not_present = []
|
53
|
-
|
54
|
-
Autoproj.message
|
55
|
-
Autoproj.message("autoproj: packages", :bold)
|
56
|
-
all_packages.to_a.sort_by(&:first).map(&:last).each do |pkg, pkg_set|
|
57
|
-
if File.exists?(File.join(pkg.srcdir, "manifest.xml"))
|
58
|
-
manifest.load_package_manifest(pkg.name)
|
59
|
-
manifest.resolve_optional_dependencies
|
60
|
-
end
|
61
|
-
|
62
|
-
pkg_manifest = pkg.description
|
63
|
-
if File.directory?(pkg.srcdir)
|
64
|
-
Autoproj.message " #{pkg.name}#{": #{pkg_manifest.short_documentation}" if pkg_manifest && pkg_manifest.short_documentation}"
|
65
|
-
else
|
66
|
-
Autoproj.message " #{pkg.name}: not yet checked out", :magenta
|
67
|
-
end
|
68
|
-
end
|
data/bin/autoproj-show
DELETED
@@ -1,102 +0,0 @@
|
|
1
|
-
#! /usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'autoproj'
|
4
|
-
require 'autoproj/cmdline'
|
5
|
-
Autoproj.silent = true
|
6
|
-
Autoproj::CmdLine.initialize_root_directory
|
7
|
-
Autoproj::CmdLine.initialize_and_load(ARGV)
|
8
|
-
|
9
|
-
require 'pp'
|
10
|
-
default_packages = Autoproj.manifest.default_packages
|
11
|
-
revdeps = Autoproj.manifest.compute_revdeps
|
12
|
-
|
13
|
-
user_selection = ARGV.map do |arg|
|
14
|
-
if File.directory?(arg)
|
15
|
-
File.expand_path(arg)
|
16
|
-
else arg
|
17
|
-
end
|
18
|
-
end
|
19
|
-
resolved_selection = Autoproj::CmdLine.resolve_user_selection(user_selection, :filter => false)
|
20
|
-
packages = resolved_selection.selection.keys
|
21
|
-
|
22
|
-
def find_selection_path(from, to)
|
23
|
-
path = [from]
|
24
|
-
if from == to
|
25
|
-
return path
|
26
|
-
end
|
27
|
-
|
28
|
-
Autobuild::Package[from].dependencies.each do |dep_pkg_name|
|
29
|
-
if result = find_selection_path(dep_pkg_name, to)
|
30
|
-
return path + result
|
31
|
-
end
|
32
|
-
end
|
33
|
-
nil
|
34
|
-
end
|
35
|
-
|
36
|
-
packages.each do |name|
|
37
|
-
result = Autoproj.manifest.resolve_package_name(name, :filter => false)
|
38
|
-
packages, osdeps = result.partition { |type, name| type == :package }
|
39
|
-
packages = packages.map(&:last)
|
40
|
-
osdeps = osdeps.map(&:last)
|
41
|
-
|
42
|
-
packages.each do |pkg_name|
|
43
|
-
puts "source package #{pkg_name}"
|
44
|
-
if default_packages.include?(pkg_name)
|
45
|
-
selection = default_packages.selection[pkg_name]
|
46
|
-
if selection.include?(pkg_name) && selection.size == 1
|
47
|
-
puts " is directly selected by the manifest"
|
48
|
-
else
|
49
|
-
selection = selection.dup
|
50
|
-
selection.delete(pkg_name)
|
51
|
-
puts " is directly selected by the manifest via #{selection.to_a.join(", ")}"
|
52
|
-
end
|
53
|
-
else
|
54
|
-
puts " is not directly selected by the manifest"
|
55
|
-
end
|
56
|
-
if Autoproj.manifest.ignored?(pkg_name)
|
57
|
-
puts " is ignored"
|
58
|
-
end
|
59
|
-
if Autoproj.manifest.excluded?(pkg_name)
|
60
|
-
puts " is excluded: #{Autoproj.manifest.exclusion_reason(pkg_name)}"
|
61
|
-
end
|
62
|
-
|
63
|
-
all_reverse_dependencies = Set.new
|
64
|
-
pkg_revdeps = revdeps[pkg_name].dup.to_a
|
65
|
-
while !pkg_revdeps.empty?
|
66
|
-
parent_name = pkg_revdeps.shift
|
67
|
-
next if all_reverse_dependencies.include?(parent_name)
|
68
|
-
all_reverse_dependencies << parent_name
|
69
|
-
pkg_revdeps.concat(revdeps[parent_name].to_a)
|
70
|
-
end
|
71
|
-
if all_reverse_dependencies.empty?
|
72
|
-
puts " no reverse dependencies"
|
73
|
-
else
|
74
|
-
puts " reverse dependencies: #{all_reverse_dependencies.sort.join(", ")}"
|
75
|
-
end
|
76
|
-
|
77
|
-
selections = Set.new
|
78
|
-
all_reverse_dependencies = all_reverse_dependencies.to_a.sort
|
79
|
-
all_reverse_dependencies.each do |parent_name|
|
80
|
-
if default_packages.include?(parent_name)
|
81
|
-
selections |= default_packages.selection[parent_name]
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
if !selections.empty?
|
86
|
-
puts " selected by way of"
|
87
|
-
selections.each do |root_pkg|
|
88
|
-
path = find_selection_path(root_pkg, pkg_name)
|
89
|
-
puts " #{path.join(">")}"
|
90
|
-
end
|
91
|
-
end
|
92
|
-
puts " directly depends on: #{Autobuild::Package[pkg_name].dependencies.sort.join(", ")}"
|
93
|
-
end
|
94
|
-
|
95
|
-
osdeps.each do |pkg_name|
|
96
|
-
puts "the osdep '#{pkg_name}'"
|
97
|
-
Autoproj.osdeps.resolve_os_dependencies(pkg_name).each do |manager, packages|
|
98
|
-
puts " #{manager.names.first}: #{packages.map { |*subnames| subnames.join(" ") }.join(", ")}"
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|