autoproj 1.13.7 → 2.0.0.b1
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/.gemtest +0 -0
- data/Manifest.txt +27 -21
- data/Rakefile +4 -6
- data/bin/alocate +5 -1
- data/bin/amake +3 -53
- data/bin/aup +3 -50
- data/bin/autoproj +3 -264
- data/bin/autoproj_bootstrap +294 -349
- data/bin/autoproj_bootstrap.in +27 -3
- data/lib/autoproj.rb +23 -1
- data/lib/autoproj/autobuild.rb +51 -89
- data/lib/autoproj/base.rb +0 -9
- data/lib/autoproj/build_option.rb +1 -3
- data/lib/autoproj/cli.rb +1 -0
- data/lib/autoproj/cli/base.rb +155 -0
- data/lib/autoproj/cli/bootstrap.rb +119 -0
- data/lib/autoproj/cli/build.rb +72 -0
- data/lib/autoproj/cli/cache.rb +31 -0
- data/lib/autoproj/cli/clean.rb +37 -0
- data/lib/autoproj/cli/commit.rb +41 -0
- data/lib/autoproj/cli/doc.rb +22 -0
- data/lib/autoproj/cli/envsh.rb +22 -0
- data/lib/autoproj/cli/inspection_tool.rb +73 -0
- data/lib/autoproj/cli/locate.rb +96 -0
- data/lib/autoproj/cli/log.rb +26 -0
- data/lib/autoproj/cli/main.rb +249 -0
- data/lib/autoproj/cli/main_test.rb +57 -0
- data/lib/autoproj/cli/osdeps.rb +30 -0
- data/lib/autoproj/cli/query.rb +43 -0
- data/lib/autoproj/cli/reconfigure.rb +19 -0
- data/lib/autoproj/cli/reset.rb +7 -32
- data/lib/autoproj/cli/show.rb +219 -0
- data/lib/autoproj/cli/snapshot.rb +1 -1
- data/lib/autoproj/cli/status.rb +149 -0
- data/lib/autoproj/cli/switch_config.rb +28 -0
- data/lib/autoproj/cli/tag.rb +9 -35
- data/lib/autoproj/cli/test.rb +34 -55
- data/lib/autoproj/cli/update.rb +158 -0
- data/lib/autoproj/cli/versions.rb +32 -69
- data/lib/autoproj/configuration.rb +95 -34
- data/lib/autoproj/default.osdeps +25 -35
- data/lib/autoproj/environment.rb +85 -63
- data/lib/autoproj/exceptions.rb +50 -0
- data/lib/autoproj/gitorious.rb +11 -9
- data/lib/autoproj/manifest.rb +199 -231
- data/lib/autoproj/metapackage.rb +0 -8
- data/lib/autoproj/ops/build.rb +1 -17
- data/lib/autoproj/ops/configuration.rb +92 -90
- data/lib/autoproj/ops/import.rb +222 -0
- data/lib/autoproj/ops/loader.rb +18 -8
- data/lib/autoproj/ops/main_config_switcher.rb +45 -73
- data/lib/autoproj/ops/snapshot.rb +5 -10
- data/lib/autoproj/ops/tools.rb +10 -44
- data/lib/autoproj/options.rb +35 -6
- data/lib/autoproj/osdeps.rb +97 -68
- data/lib/autoproj/package_selection.rb +39 -20
- data/lib/autoproj/package_set.rb +26 -24
- data/lib/autoproj/reporter.rb +91 -0
- data/lib/autoproj/system.rb +50 -149
- data/lib/autoproj/variable_expansion.rb +32 -6
- data/lib/autoproj/vcs_definition.rb +57 -17
- data/lib/autoproj/version.rb +1 -1
- data/lib/autoproj/workspace.rb +550 -0
- data/test/ops/test_snapshot.rb +26 -0
- data/test/test_package.rb +30 -0
- data/test/test_vcs_definition.rb +46 -0
- metadata +55 -50
- data/bin/autolocate +0 -3
- data/bin/autoproj-bootstrap +0 -68
- data/bin/autoproj-cache +0 -18
- data/bin/autoproj-clean +0 -13
- data/bin/autoproj-commit +0 -10
- data/bin/autoproj-create-set +0 -118
- data/bin/autoproj-doc +0 -28
- data/bin/autoproj-envsh +0 -14
- data/bin/autoproj-list +0 -69
- data/bin/autoproj-locate +0 -85
- data/bin/autoproj-log +0 -5
- data/bin/autoproj-query +0 -82
- data/bin/autoproj-reset +0 -13
- data/bin/autoproj-show +0 -192
- data/bin/autoproj-snapshot +0 -27
- data/bin/autoproj-switch-config +0 -24
- data/bin/autoproj-tag +0 -13
- data/bin/autoproj-test +0 -31
- data/bin/autoproj-versions +0 -20
- data/bin/autoproj_stress_test +0 -40
- data/lib/autoproj/cmdline.rb +0 -1649
data/bin/autoproj_bootstrap
CHANGED
@@ -74,7 +74,14 @@ module Autobuild
|
|
74
74
|
|
75
75
|
module Subprocess
|
76
76
|
def self.run(name, phase, *cmd)
|
77
|
-
|
77
|
+
if cmd.last.kind_of?(Hash)
|
78
|
+
options = cmd.pop
|
79
|
+
(options[:env] || Hash.new).each do |k, v|
|
80
|
+
ENV[k] = v
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
output = `#{cmd.join(" ")}`
|
78
85
|
if $?.exitstatus != 0
|
79
86
|
STDERR.puts "ERROR: failed to run #{cmd.join(" ")}"
|
80
87
|
STDERR.puts "ERROR: command output is: #{output}"
|
@@ -85,10 +92,8 @@ module Autobuild
|
|
85
92
|
end
|
86
93
|
|
87
94
|
module Autoproj
|
88
|
-
class InputError < RuntimeError; end
|
89
|
-
|
90
95
|
# Definition of an autoproj option as defined by
|
91
|
-
# {Configuration#
|
96
|
+
# {Configuration#declare}
|
92
97
|
class BuildOption
|
93
98
|
attr_reader :name
|
94
99
|
attr_reader :type
|
@@ -205,12 +210,15 @@ module Autoproj
|
|
205
210
|
attr_reader :declared_options
|
206
211
|
# The options that have already been shown to the user
|
207
212
|
attr_reader :displayed_options
|
213
|
+
# The path to the underlying configuration file
|
214
|
+
attr_reader :path
|
208
215
|
|
209
|
-
def initialize
|
216
|
+
def initialize(path = nil)
|
210
217
|
@config = Hash.new
|
211
218
|
@overrides = Hash.new
|
212
219
|
@declared_options = Hash.new
|
213
220
|
@displayed_options = Hash.new
|
221
|
+
@path = path
|
214
222
|
end
|
215
223
|
|
216
224
|
# Deletes the current value for an option
|
@@ -249,14 +257,14 @@ module Autoproj
|
|
249
257
|
end
|
250
258
|
|
251
259
|
# Get the value for a given option
|
252
|
-
def get(key, default_value
|
260
|
+
def get(key, *default_value)
|
253
261
|
if overrides.has_key?(key)
|
254
262
|
return overrides[key]
|
255
263
|
end
|
256
264
|
|
257
265
|
value, validated = config[key]
|
258
|
-
if value.nil? && !declared?(key) && !default_value.
|
259
|
-
default_value
|
266
|
+
if value.nil? && !declared?(key) && !default_value.empty?
|
267
|
+
default_value.first
|
260
268
|
elsif value.nil? || (declared?(key) && !validated)
|
261
269
|
value = configure(key)
|
262
270
|
else
|
@@ -332,15 +340,27 @@ module Autoproj
|
|
332
340
|
end
|
333
341
|
end
|
334
342
|
|
335
|
-
def load(
|
336
|
-
|
343
|
+
def load(options = Hash.new)
|
344
|
+
options = validate_options options,
|
345
|
+
path: self.path,
|
346
|
+
reconfigure: false
|
347
|
+
|
348
|
+
if h = YAML.load(File.read(options[:path]))
|
337
349
|
h.each do |key, value|
|
338
|
-
set(key, value, !reconfigure)
|
350
|
+
set(key, value, !options[:reconfigure])
|
339
351
|
end
|
340
352
|
end
|
341
353
|
end
|
342
354
|
|
343
|
-
def
|
355
|
+
def reconfigure!
|
356
|
+
new_config = Hash.new
|
357
|
+
config.each do |key, (value, user_validated)|
|
358
|
+
new_config[key] = [value, false]
|
359
|
+
end
|
360
|
+
@config = new_config
|
361
|
+
end
|
362
|
+
|
363
|
+
def save(path = self.path)
|
344
364
|
File.open(path, "w") do |io|
|
345
365
|
h = Hash.new
|
346
366
|
config.each do |key, value|
|
@@ -367,17 +387,13 @@ module Autoproj
|
|
367
387
|
end
|
368
388
|
|
369
389
|
def ruby_executable
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
# For Autoproj 2.0 forward compatibility
|
379
|
-
def shell_helpers=(flag)
|
380
|
-
Autoproj.shell_helpers = flag
|
390
|
+
if path = get('ruby_executable', nil)
|
391
|
+
path
|
392
|
+
else
|
393
|
+
path = OSDependencies.autodetect_ruby_program
|
394
|
+
set('ruby_executable', path, true)
|
395
|
+
path
|
396
|
+
end
|
381
397
|
end
|
382
398
|
|
383
399
|
def validate_ruby_executable
|
@@ -401,6 +417,14 @@ module Autoproj
|
|
401
417
|
use_prerelease
|
402
418
|
end
|
403
419
|
|
420
|
+
def shell_helpers?
|
421
|
+
get 'shell_helpers', true
|
422
|
+
end
|
423
|
+
|
424
|
+
def shell_helpers=(flag)
|
425
|
+
set 'shell_helpers', flag, true
|
426
|
+
end
|
427
|
+
|
404
428
|
def apply_autobuild_configuration
|
405
429
|
if has_value_for?('autobuild')
|
406
430
|
params = get('autobuild')
|
@@ -412,11 +436,46 @@ module Autoproj
|
|
412
436
|
end
|
413
437
|
end
|
414
438
|
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
439
|
+
# The directory in which packages will be installed.
|
440
|
+
#
|
441
|
+
# If it is a relative path, it is relative to the root dir of the
|
442
|
+
# installation.
|
443
|
+
#
|
444
|
+
# The default is "install"
|
445
|
+
#
|
446
|
+
# @return [String]
|
447
|
+
def prefix_dir
|
448
|
+
get('prefix', 'install')
|
449
|
+
end
|
450
|
+
|
451
|
+
# Defines the temporary area in which packages should put their build
|
452
|
+
# files
|
453
|
+
#
|
454
|
+
# If absolute, it is handled as {#prefix_dir}: the package name will be
|
455
|
+
# appended to it. If relative, it is relative to the package's source
|
456
|
+
# directory
|
457
|
+
#
|
458
|
+
# The default is "build"
|
459
|
+
#
|
460
|
+
# @return [String]
|
461
|
+
def build_dir
|
462
|
+
get('build', 'build')
|
463
|
+
end
|
464
|
+
|
465
|
+
# Returns true if there should be one prefix per package
|
466
|
+
#
|
467
|
+
# The default is false (disabled)
|
468
|
+
#
|
469
|
+
# @return [Boolean]
|
470
|
+
def separate_prefixes?
|
471
|
+
get('separate_prefixes', false)
|
472
|
+
end
|
473
|
+
|
474
|
+
# Controls whether there should be one prefix per package
|
475
|
+
#
|
476
|
+
# @see separate_prefixes?
|
477
|
+
def separate_prefixes=(flag)
|
478
|
+
set('separate_prefixes', flag, true)
|
420
479
|
end
|
421
480
|
|
422
481
|
# Returns true if packages and prefixes should be auto-generated, based
|
@@ -483,17 +542,17 @@ module Autoproj
|
|
483
542
|
set("#{utility_key(utility)}_default", true)
|
484
543
|
end
|
485
544
|
|
486
|
-
# Enables a utility for a
|
487
|
-
#
|
488
|
-
# Note that if the default for this utility is to be enabled, this is
|
489
|
-
# essentially a no-op.
|
545
|
+
# Enables a utility for a set of packages
|
490
546
|
#
|
491
547
|
# @param [String] utility the utility name (e.g. 'doc' or 'test')
|
492
|
-
# @param [String]
|
548
|
+
# @param [String] packages the package names
|
493
549
|
# @return [void]
|
494
|
-
def
|
550
|
+
def utility_enable(utility, *packages)
|
495
551
|
utility_config = get(utility_key(utility), Hash.new)
|
496
|
-
|
552
|
+
packages.each do |pkg_name|
|
553
|
+
utility_config[pkg_name] = true
|
554
|
+
end
|
555
|
+
set(utility_key(utility), utility_config)
|
497
556
|
end
|
498
557
|
|
499
558
|
# Disables a utility for all packages
|
@@ -515,11 +574,18 @@ module Autoproj
|
|
515
574
|
# essentially a no-op.
|
516
575
|
#
|
517
576
|
# @param [String] utility the utility name (e.g. 'doc' or 'test')
|
518
|
-
# @param [String]
|
577
|
+
# @param [String] packages the package names
|
519
578
|
# @return [void]
|
520
|
-
def
|
579
|
+
def utility_disable(utility, *packages)
|
521
580
|
utility_config = get(utility_key(utility), Hash.new)
|
522
|
-
|
581
|
+
packages.each do |pkg_name|
|
582
|
+
utility_config[pkg_name] = false
|
583
|
+
end
|
584
|
+
set(utility_key(utility), utility_config)
|
585
|
+
end
|
586
|
+
|
587
|
+
def merge(conf)
|
588
|
+
config.merge!(conf.config)
|
523
589
|
end
|
524
590
|
end
|
525
591
|
end
|
@@ -565,10 +631,6 @@ module Autoproj
|
|
565
631
|
@silent = true
|
566
632
|
end
|
567
633
|
|
568
|
-
def parse_package_entry(entry)
|
569
|
-
entry
|
570
|
-
end
|
571
|
-
|
572
634
|
# The primary name for this package manager
|
573
635
|
def name
|
574
636
|
names.first
|
@@ -578,7 +640,7 @@ module Autoproj
|
|
578
640
|
# order to have a properly functioning package manager
|
579
641
|
#
|
580
642
|
# This is e.g. needed for python pip or rubygems
|
581
|
-
def self.initialize_environment
|
643
|
+
def self.initialize_environment(_env = nil, _manifest = nil, _root_dir = Autoproj.root_dir)
|
582
644
|
end
|
583
645
|
end
|
584
646
|
|
@@ -843,7 +905,7 @@ fi
|
|
843
905
|
false)
|
844
906
|
end
|
845
907
|
|
846
|
-
def filter_uptodate_packages(packages)
|
908
|
+
def filter_uptodate_packages(packages, options = Hash.new)
|
847
909
|
# TODO there might be duplicates in packages which should be fixed
|
848
910
|
# somewhere else
|
849
911
|
packages = packages.uniq
|
@@ -910,7 +972,7 @@ fi
|
|
910
972
|
"zypper -n install '%s'")
|
911
973
|
end
|
912
974
|
|
913
|
-
def filter_uptodate_packages(packages)
|
975
|
+
def filter_uptodate_packages(packages, options = Hash.new)
|
914
976
|
result = `LANG=C rpm -q --whatprovides '#{packages.join("' '")}'`
|
915
977
|
has_all_pkgs = $?.success?
|
916
978
|
|
@@ -949,7 +1011,7 @@ fi
|
|
949
1011
|
"yum install -y '%s'")
|
950
1012
|
end
|
951
1013
|
|
952
|
-
def filter_uptodate_packages(packages)
|
1014
|
+
def filter_uptodate_packages(packages, options = Hash.new)
|
953
1015
|
result = `LANG=C rpm -q --queryformat "%{NAME}\n" '#{packages.join("' '")}'`
|
954
1016
|
|
955
1017
|
installed_packages = []
|
@@ -1052,7 +1114,7 @@ fi
|
|
1052
1114
|
end
|
1053
1115
|
end
|
1054
1116
|
|
1055
|
-
def filter_uptodate_packages(packages)
|
1117
|
+
def filter_uptodate_packages(packages, options = Hash.new)
|
1056
1118
|
packages.find_all do |package_name|
|
1057
1119
|
!installed?(package_name)
|
1058
1120
|
end
|
@@ -1062,43 +1124,65 @@ fi
|
|
1062
1124
|
# Package manager interface for the RubyGems system
|
1063
1125
|
class GemManager < Manager
|
1064
1126
|
class << self
|
1065
|
-
|
1127
|
+
attr_writer :with_prerelease
|
1066
1128
|
attr_accessor :with_doc
|
1067
1129
|
end
|
1068
1130
|
@with_prerelease = false
|
1069
1131
|
@with_doc = false
|
1070
1132
|
|
1133
|
+
def self.with_prerelease(*value)
|
1134
|
+
if value.empty?
|
1135
|
+
@with_prerelease
|
1136
|
+
else
|
1137
|
+
begin
|
1138
|
+
saved_flag = @with_prerelease
|
1139
|
+
@with_prerelease = value.first
|
1140
|
+
yield
|
1141
|
+
ensure
|
1142
|
+
@with_prerelease = saved_flag
|
1143
|
+
end
|
1144
|
+
end
|
1145
|
+
end
|
1146
|
+
|
1071
1147
|
# Filters all paths that come from other autoproj installations out
|
1072
1148
|
# of GEM_PATH
|
1073
|
-
def self.initialize_environment
|
1074
|
-
|
1075
|
-
(
|
1149
|
+
def self.initialize_environment(env = Autobuild.env, manifest = Autoproj.manifest, root_dir = Autoproj.root_dir)
|
1150
|
+
env.original_env['GEM_PATH'] =
|
1151
|
+
(env['GEM_PATH'] || "").split(File::PATH_SEPARATOR).find_all do |p|
|
1076
1152
|
!Autoproj.in_autoproj_installation?(p)
|
1077
1153
|
end.join(File::PATH_SEPARATOR)
|
1078
|
-
|
1079
|
-
|
1154
|
+
env.inherit 'GEM_PATH'
|
1155
|
+
env.init_from_env 'GEM_PATH'
|
1080
1156
|
|
1081
|
-
orig_gem_path =
|
1082
|
-
|
1083
|
-
|
1157
|
+
orig_gem_path = env.original_env['GEM_PATH'].split(File::PATH_SEPARATOR)
|
1158
|
+
env.system_env['GEM_PATH'] = Gem.default_path
|
1159
|
+
env.original_env['GEM_PATH'] = orig_gem_path.join(File::PATH_SEPARATOR)
|
1084
1160
|
|
1085
|
-
|
1161
|
+
manifest.each_reused_autoproj_installation do |p|
|
1086
1162
|
p_gems = File.join(p, '.gems')
|
1087
1163
|
if File.directory?(p_gems)
|
1088
|
-
|
1089
|
-
|
1164
|
+
env.push_path 'GEM_PATH', p_gems
|
1165
|
+
env.push_path 'PATH', File.join(p_gems, 'bin')
|
1090
1166
|
end
|
1091
1167
|
end
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1168
|
+
|
1169
|
+
@gem_home = (ENV['AUTOPROJ_GEM_HOME'] || File.join(root_dir, ".gems"))
|
1170
|
+
env.push_path 'GEM_PATH', gem_home
|
1171
|
+
env.set 'GEM_HOME', gem_home
|
1172
|
+
env.push_path 'PATH', "#{gem_home}/bin"
|
1095
1173
|
|
1096
1174
|
# Now, reset the directories in our own RubyGems instance
|
1097
|
-
Gem.paths =
|
1175
|
+
Gem.paths = env.resolved_env
|
1098
1176
|
|
1099
1177
|
use_cache_dir
|
1100
1178
|
end
|
1101
1179
|
|
1180
|
+
# Override the gem home detected by {initialize_environment}, or set
|
1181
|
+
# it in cases where calling {initialize_environment} is not possible
|
1182
|
+
def self.gem_home=(gem_home)
|
1183
|
+
@gem_home = gem_home
|
1184
|
+
end
|
1185
|
+
|
1102
1186
|
# A global cache directory that should be used to avoid
|
1103
1187
|
# re-downloading gems
|
1104
1188
|
def self.cache_dir
|
@@ -1124,7 +1208,7 @@ fi
|
|
1124
1208
|
|
1125
1209
|
# Return the directory in which RubyGems package should be installed
|
1126
1210
|
def self.gem_home
|
1127
|
-
|
1211
|
+
@gem_home
|
1128
1212
|
end
|
1129
1213
|
|
1130
1214
|
# Returns the set of default options that are added to gem
|
@@ -1218,7 +1302,9 @@ fi
|
|
1218
1302
|
Autoproj.message " installing/updating RubyGems dependencies: #{gems.map { |g| g.join(" ") }.sort.join(", ")}"
|
1219
1303
|
|
1220
1304
|
cmdlines.each do |c|
|
1221
|
-
Autobuild::Subprocess.run 'autoproj', 'osdeps', *c
|
1305
|
+
Autobuild::Subprocess.run 'autoproj', 'osdeps', *c,
|
1306
|
+
env: Hash['GEM_HOME' => Gem.paths.home,
|
1307
|
+
'GEM_PATH' => Gem.paths.path.join(":")]
|
1222
1308
|
end
|
1223
1309
|
gems.each do |name, v|
|
1224
1310
|
installed_gems << name
|
@@ -1229,7 +1315,10 @@ fi
|
|
1229
1315
|
|
1230
1316
|
# Returns the set of RubyGem packages in +packages+ that are not already
|
1231
1317
|
# installed, or that can be upgraded
|
1232
|
-
def filter_uptodate_packages(gems)
|
1318
|
+
def filter_uptodate_packages(gems, options = Hash.new)
|
1319
|
+
options = validate_options options,
|
1320
|
+
install_only: !Autobuild.do_update
|
1321
|
+
|
1233
1322
|
# Don't install gems that are already there ...
|
1234
1323
|
gems = gems.dup
|
1235
1324
|
gems.delete_if do |name, version|
|
@@ -1247,7 +1336,7 @@ fi
|
|
1247
1336
|
Gem.source_index.find_name(name, version_requirements)
|
1248
1337
|
end
|
1249
1338
|
|
1250
|
-
if !installed.empty? &&
|
1339
|
+
if !installed.empty? && !options[:install_only]
|
1251
1340
|
# Look if we can update the package ...
|
1252
1341
|
dep = Gem::Dependency.new(name, version_requirements)
|
1253
1342
|
available =
|
@@ -1336,14 +1425,14 @@ fi
|
|
1336
1425
|
|
1337
1426
|
attr_reader :installed_gems
|
1338
1427
|
|
1339
|
-
def self.initialize_environment
|
1340
|
-
|
1428
|
+
def self.initialize_environment(env = Autobuild.env, _manifest = nil, root_dir = Autoproj.root_dir)
|
1429
|
+
env.set 'PYTHONUSERBASE', pip_home(env, root_dir)
|
1341
1430
|
end
|
1342
1431
|
|
1343
1432
|
# Return the directory where python packages are installed to.
|
1344
1433
|
# The actual path is pip_home/lib/pythonx.y/site-packages.
|
1345
|
-
def self.pip_home
|
1346
|
-
|
1434
|
+
def self.pip_home(env = Autobuild.env, root_dir = Autobuild.root_dir)
|
1435
|
+
env['AUTOPROJ_PYTHONUSERBASE'] || File.join(root_dir,".pip")
|
1347
1436
|
end
|
1348
1437
|
|
1349
1438
|
|
@@ -1789,12 +1878,8 @@ fi
|
|
1789
1878
|
# Validate the options. We check on the availability of
|
1790
1879
|
# validate_options as to not break autoproj_bootstrap (in which
|
1791
1880
|
# validate_options is not available)
|
1792
|
-
options =
|
1793
|
-
|
1794
|
-
Kernel.validate_options options, :force => false
|
1795
|
-
else
|
1796
|
-
options.dup
|
1797
|
-
end
|
1881
|
+
options = validate_options options, force: false, config: Autoproj.config
|
1882
|
+
config = options.fetch(:config)
|
1798
1883
|
|
1799
1884
|
if user_os = ENV['AUTOPROJ_OS']
|
1800
1885
|
@operating_system =
|
@@ -1811,8 +1896,8 @@ fi
|
|
1811
1896
|
@operating_system = nil
|
1812
1897
|
elsif !@operating_system.nil? # @operating_system can be set to false to simulate an unknown OS
|
1813
1898
|
return @operating_system
|
1814
|
-
elsif
|
1815
|
-
os =
|
1899
|
+
elsif config.has_value_for?('operating_system')
|
1900
|
+
os = config.get('operating_system')
|
1816
1901
|
if os.respond_to?(:to_ary)
|
1817
1902
|
if os[0].respond_to?(:to_ary) && os[0].all? { |s| s.respond_to?(:to_str) } &&
|
1818
1903
|
os[1].respond_to?(:to_ary) && os[1].all? { |s| s.respond_to?(:to_str) }
|
@@ -1851,7 +1936,7 @@ fi
|
|
1851
1936
|
names, versions = normalize_os_representation(names, versions)
|
1852
1937
|
|
1853
1938
|
@operating_system = [names, versions]
|
1854
|
-
|
1939
|
+
config.set('operating_system', @operating_system, true)
|
1855
1940
|
Autobuild.progress :operating_system_autodetection, "operating system: #{(names - ['default']).join(",")} - #{(versions - ['default']).join(",")}"
|
1856
1941
|
@operating_system
|
1857
1942
|
ensure
|
@@ -1978,15 +2063,11 @@ fi
|
|
1978
2063
|
end
|
1979
2064
|
|
1980
2065
|
result.map do |handler, status, entries|
|
1981
|
-
|
1982
|
-
|
1983
|
-
|
1984
|
-
|
1985
|
-
e
|
1986
|
-
end
|
2066
|
+
if handler.respond_to?(:parse_package_entry)
|
2067
|
+
[handler, status, entries.map { |s| handler.parse_package_entry(s) }]
|
2068
|
+
else
|
2069
|
+
[handler, status, entries]
|
1987
2070
|
end
|
1988
|
-
|
1989
|
-
[handler, status, entries]
|
1990
2071
|
end
|
1991
2072
|
end
|
1992
2073
|
|
@@ -2136,8 +2217,6 @@ fi
|
|
2136
2217
|
return found, result
|
2137
2218
|
end
|
2138
2219
|
|
2139
|
-
class MissingOSDep < ConfigError; end
|
2140
|
-
|
2141
2220
|
# Resolves the given OS dependencies into the actual packages that need
|
2142
2221
|
# to be installed on this particular OS.
|
2143
2222
|
#
|
@@ -2255,7 +2334,7 @@ fi
|
|
2255
2334
|
HANDLE_OS = 'os'
|
2256
2335
|
HANDLE_NONE = 'none'
|
2257
2336
|
|
2258
|
-
def self.osdeps_mode_option_unsupported_os
|
2337
|
+
def self.osdeps_mode_option_unsupported_os(config = Autoproj.config)
|
2259
2338
|
long_doc =<<-EOT
|
2260
2339
|
The software packages that autoproj will have to build may require other
|
2261
2340
|
prepackaged softwares (a.k.a. OS dependencies) to be installed (RubyGems
|
@@ -2286,13 +2365,13 @@ So, what do you want ? (all, none or a comma-separated list of: gem pip)
|
|
2286
2365
|
EOT
|
2287
2366
|
message = [ "Which prepackaged software (a.k.a. 'osdeps') should autoproj install automatically (all, none or a comma-separated list of: gem pip) ?", long_doc.strip ]
|
2288
2367
|
|
2289
|
-
|
2368
|
+
config.declare 'osdeps_mode', 'string',
|
2290
2369
|
:default => 'ruby',
|
2291
2370
|
:doc => message,
|
2292
2371
|
:lowercase => true
|
2293
2372
|
end
|
2294
2373
|
|
2295
|
-
def self.osdeps_mode_option_supported_os
|
2374
|
+
def self.osdeps_mode_option_supported_os(config = Autoproj.config)
|
2296
2375
|
long_doc =<<-EOT
|
2297
2376
|
The software packages that autoproj will have to build may require other
|
2298
2377
|
prepackaged softwares (a.k.a. OS dependencies) to be installed (RubyGems
|
@@ -2327,17 +2406,17 @@ So, what do you want ? (all, none or a comma-separated list of: os gem pip)
|
|
2327
2406
|
EOT
|
2328
2407
|
message = [ "Which prepackaged software (a.k.a. 'osdeps') should autoproj install automatically (all, none or a comma-separated list of: os gem pip) ?", long_doc.strip ]
|
2329
2408
|
|
2330
|
-
|
2409
|
+
config.declare 'osdeps_mode', 'string',
|
2331
2410
|
:default => 'all',
|
2332
2411
|
:doc => message,
|
2333
2412
|
:lowercase => true
|
2334
2413
|
end
|
2335
2414
|
|
2336
|
-
def self.define_osdeps_mode_option
|
2415
|
+
def self.define_osdeps_mode_option(config = Autoproj.config)
|
2337
2416
|
if supported_operating_system?
|
2338
|
-
osdeps_mode_option_supported_os
|
2417
|
+
osdeps_mode_option_supported_os(config)
|
2339
2418
|
else
|
2340
|
-
osdeps_mode_option_unsupported_os
|
2419
|
+
osdeps_mode_option_unsupported_os(config)
|
2341
2420
|
end
|
2342
2421
|
end
|
2343
2422
|
|
@@ -2389,10 +2468,10 @@ So, what do you want ? (all, none or a comma-separated list of: os gem pip)
|
|
2389
2468
|
@osdeps_mode = OSDependencies.osdeps_mode
|
2390
2469
|
end
|
2391
2470
|
|
2392
|
-
def self.osdeps_mode
|
2471
|
+
def self.osdeps_mode(config = Autoproj.config)
|
2393
2472
|
while true
|
2394
2473
|
mode =
|
2395
|
-
if !
|
2474
|
+
if !config.has_value_for?('osdeps_mode') &&
|
2396
2475
|
mode_name = ENV['AUTOPROJ_OSDEPS_MODE']
|
2397
2476
|
begin OSDependencies.osdeps_mode_string_to_value(mode_name)
|
2398
2477
|
rescue ArgumentError
|
@@ -2400,7 +2479,7 @@ So, what do you want ? (all, none or a comma-separated list of: os gem pip)
|
|
2400
2479
|
nil
|
2401
2480
|
end
|
2402
2481
|
else
|
2403
|
-
mode_name =
|
2482
|
+
mode_name = config.get('osdeps_mode')
|
2404
2483
|
begin OSDependencies.osdeps_mode_string_to_value(mode_name)
|
2405
2484
|
rescue ArgumentError
|
2406
2485
|
Autoproj.warn "invalid osdeps mode stored in configuration file"
|
@@ -2410,12 +2489,12 @@ So, what do you want ? (all, none or a comma-separated list of: os gem pip)
|
|
2410
2489
|
|
2411
2490
|
if mode
|
2412
2491
|
@osdeps_mode = mode
|
2413
|
-
|
2492
|
+
config.set('osdeps_mode', mode_name, true)
|
2414
2493
|
return mode
|
2415
2494
|
end
|
2416
2495
|
|
2417
2496
|
# Invalid configuration values. Retry
|
2418
|
-
|
2497
|
+
config.reset('osdeps_mode')
|
2419
2498
|
ENV['AUTOPROJ_OSDEPS_MODE'] = nil
|
2420
2499
|
end
|
2421
2500
|
end
|
@@ -2437,7 +2516,8 @@ So, what do you want ? (all, none or a comma-separated list of: os gem pip)
|
|
2437
2516
|
def setup_package_handlers(options = Hash.new)
|
2438
2517
|
options =
|
2439
2518
|
if Kernel.respond_to?(:validate_options)
|
2440
|
-
Kernel.validate_options options,
|
2519
|
+
Kernel.validate_options options,
|
2520
|
+
osdeps_mode: osdeps_mode
|
2441
2521
|
else
|
2442
2522
|
options = options.dup
|
2443
2523
|
options[:osdeps_mode] ||= osdeps_mode
|
@@ -2480,7 +2560,7 @@ So, what do you want ? (all, none or a comma-separated list of: os gem pip)
|
|
2480
2560
|
# This is usually called as a rebuild step to make sure that all these
|
2481
2561
|
# packages are updated to whatever required the rebuild
|
2482
2562
|
def pristine(packages, options = Hash.new)
|
2483
|
-
|
2563
|
+
install(packages, options.merge(install_only: true))
|
2484
2564
|
packages = resolve_os_dependencies(packages)
|
2485
2565
|
|
2486
2566
|
_, other_packages =
|
@@ -2498,12 +2578,16 @@ So, what do you want ? (all, none or a comma-separated list of: os gem pip)
|
|
2498
2578
|
packages = packages.to_set - installed_packages
|
2499
2579
|
return false if packages.empty?
|
2500
2580
|
|
2581
|
+
filter_options, options =
|
2582
|
+
filter_options options, install_only: !Autobuild.do_update
|
2501
2583
|
setup_package_handlers(options)
|
2502
2584
|
|
2503
2585
|
packages = resolve_os_dependencies(packages)
|
2586
|
+
|
2587
|
+
needs_filter = (filter_uptodate_packages? || filter_options[:install_only])
|
2504
2588
|
packages = packages.map do |handler, list|
|
2505
|
-
if
|
2506
|
-
list = handler.filter_uptodate_packages(list)
|
2589
|
+
if needs_filter && handler.respond_to?(:filter_uptodate_packages)
|
2590
|
+
list = handler.filter_uptodate_packages(list, filter_options)
|
2507
2591
|
end
|
2508
2592
|
|
2509
2593
|
if !list.empty?
|
@@ -2523,6 +2607,17 @@ So, what do you want ? (all, none or a comma-separated list of: os gem pip)
|
|
2523
2607
|
end
|
2524
2608
|
true
|
2525
2609
|
end
|
2610
|
+
|
2611
|
+
def reinstall(options = Hash.new)
|
2612
|
+
# We also reinstall the osdeps that provide the
|
2613
|
+
# functionality
|
2614
|
+
managers = setup_package_handlers(options)
|
2615
|
+
managers.each do |mng|
|
2616
|
+
if mng.enabled? && mng.respond_to?(:reinstall)
|
2617
|
+
mng.reinstall
|
2618
|
+
end
|
2619
|
+
end
|
2620
|
+
end
|
2526
2621
|
end
|
2527
2622
|
end
|
2528
2623
|
|
@@ -2595,68 +2690,6 @@ end
|
|
2595
2690
|
|
2596
2691
|
|
2597
2692
|
module Autoproj
|
2598
|
-
# @deprecated use config.override instead
|
2599
|
-
def self.override_option(option_name, value)
|
2600
|
-
config.override(option_name, value)
|
2601
|
-
end
|
2602
|
-
# @deprecated use config.reset instead
|
2603
|
-
def self.reset_option(key)
|
2604
|
-
config.reset(key)
|
2605
|
-
end
|
2606
|
-
# @deprecated use config.set(key, value, user_validated) instead
|
2607
|
-
def self.change_option(key, value, user_validated = false)
|
2608
|
-
config.set(key, value, user_validated)
|
2609
|
-
end
|
2610
|
-
# @deprecated use config.validated_values instead
|
2611
|
-
def self.option_set
|
2612
|
-
config.validated_values
|
2613
|
-
end
|
2614
|
-
# @deprecated use config.get(key) instead
|
2615
|
-
def self.user_config(key)
|
2616
|
-
config.get(key)
|
2617
|
-
end
|
2618
|
-
# @deprecated use config.declare(name, type, options, &validator) instead
|
2619
|
-
def self.configuration_option(name, type, options, &validator)
|
2620
|
-
config.declare(name, type, options, &validator)
|
2621
|
-
end
|
2622
|
-
# @deprecated use config.declared?(name, type, options, &validator) instead
|
2623
|
-
def self.declared_option?(name)
|
2624
|
-
config.declared?(name)
|
2625
|
-
end
|
2626
|
-
# @deprecated use config.configure(option_name) instead
|
2627
|
-
def self.configure(option_name)
|
2628
|
-
config.configure(option_name)
|
2629
|
-
end
|
2630
|
-
# @deprecated use config.has_value_for?(name)
|
2631
|
-
def self.has_config_key?(name)
|
2632
|
-
config.has_value_for?(name)
|
2633
|
-
end
|
2634
|
-
|
2635
|
-
def self.save_config
|
2636
|
-
config.save(File.join(Autoproj.config_dir, "config.yml"))
|
2637
|
-
end
|
2638
|
-
|
2639
|
-
def self.config
|
2640
|
-
@config ||= Configuration.new
|
2641
|
-
end
|
2642
|
-
|
2643
|
-
def self.load_config
|
2644
|
-
config_file = File.join(Autoproj.config_dir, "config.yml")
|
2645
|
-
if File.exists?(config_file)
|
2646
|
-
config.load(config_file, reconfigure?)
|
2647
|
-
end
|
2648
|
-
end
|
2649
|
-
|
2650
|
-
class << self
|
2651
|
-
attr_accessor :reconfigure
|
2652
|
-
end
|
2653
|
-
def self.reconfigure?; @reconfigure end
|
2654
|
-
end
|
2655
|
-
|
2656
|
-
|
2657
|
-
module Autoproj
|
2658
|
-
class UserError < RuntimeError; end
|
2659
|
-
|
2660
2693
|
# OS-independent creation of symbolic links. Note that on windows, it only
|
2661
2694
|
# works for directories
|
2662
2695
|
def self.create_symlink(from, to)
|
@@ -2680,6 +2713,9 @@ module Autoproj
|
|
2680
2713
|
# This is mostly useful during bootstrapping (i.e. when the search would
|
2681
2714
|
# fail)
|
2682
2715
|
def self.root_dir=(dir)
|
2716
|
+
if @workspace && dir != @workspace.root_dir
|
2717
|
+
raise WorkspaceAlreadyCreated, "cannot switch global root directory after a workspace object got created"
|
2718
|
+
end
|
2683
2719
|
@root_dir = dir
|
2684
2720
|
end
|
2685
2721
|
|
@@ -2691,90 +2727,77 @@ module Autoproj
|
|
2691
2727
|
if @root_dir
|
2692
2728
|
return @root_dir
|
2693
2729
|
end
|
2694
|
-
|
2695
|
-
path
|
2696
|
-
while !path.root?
|
2697
|
-
if (path + "autoproj" + 'manifest').file?
|
2698
|
-
break
|
2699
|
-
end
|
2700
|
-
path = path.parent
|
2701
|
-
end
|
2702
|
-
|
2703
|
-
if path.root?
|
2730
|
+
path = Workspace.find_root_dir(dir)
|
2731
|
+
if !path
|
2704
2732
|
raise UserError, "not in a Autoproj installation"
|
2705
2733
|
end
|
2706
|
-
|
2707
|
-
result = path.to_s
|
2708
|
-
# I don't know if this is still useful or not ... but it does not hurt
|
2709
|
-
#
|
2710
|
-
# Preventing backslashed in path, that might be confusing on some path compares
|
2711
|
-
if Autobuild.windows?
|
2712
|
-
result = result.gsub(/\\/,'/')
|
2713
|
-
end
|
2714
|
-
result
|
2734
|
+
path
|
2715
2735
|
end
|
2716
2736
|
|
2717
|
-
#
|
2718
|
-
#
|
2719
|
-
# If the current directory is not in an autoproj installation,
|
2720
|
-
# raises UserError.
|
2737
|
+
# @deprecated use workspace.config_dir instead
|
2721
2738
|
def self.config_dir
|
2722
|
-
|
2739
|
+
Autoproj.warn "#{__method__} is deprecated, use workspace.config_dir instead"
|
2740
|
+
caller.each { |l| Autoproj.warn " #{l}" }
|
2741
|
+
workspace.config_dir
|
2723
2742
|
end
|
2724
|
-
|
2725
|
-
OVERRIDES_DIR = "overrides.d"
|
2726
|
-
|
2727
|
-
# Returns the directory containing overrides files
|
2728
|
-
#
|
2729
|
-
# If the current directory is not in an autoproj installation,
|
2730
|
-
# raises UserError.
|
2743
|
+
# @deprecated use workspace.overrides_dir instead
|
2731
2744
|
def self.overrides_dir
|
2732
|
-
|
2745
|
+
Autoproj.warn "#{__method__} is deprecated, use workspace.overrides_dir instead"
|
2746
|
+
caller.each { |l| Autoproj.warn " #{l}" }
|
2747
|
+
workspace.overrides_dir
|
2733
2748
|
end
|
2734
|
-
|
2735
2749
|
# @deprecated use Autobuild.find_in_path instead
|
2736
2750
|
#
|
2737
2751
|
# Warning: the autobuild method returns nil (instead of raising) if the
|
2738
2752
|
# argument cannot be found
|
2739
2753
|
def self.find_in_path(name)
|
2754
|
+
Autoproj.warn "#{__method__} is deprecated, use Autobuild.find_in_path instead"
|
2755
|
+
caller.each { |l| Autoproj.warn " #{l}" }
|
2740
2756
|
if path = Autobuild.find_in_path(name)
|
2741
2757
|
return path
|
2742
2758
|
else raise ArgumentError, "cannot find #{name} in PATH (#{ENV['PATH']})"
|
2743
2759
|
end
|
2744
2760
|
end
|
2745
|
-
|
2746
|
-
|
2747
|
-
|
2748
|
-
|
2749
|
-
# If it is a relative path, it is relative to the root dir of the
|
2750
|
-
# installation.
|
2751
|
-
#
|
2752
|
-
# The default is "install"
|
2753
|
-
attr_reader :prefix
|
2754
|
-
|
2755
|
-
# Change the value of 'prefix'
|
2756
|
-
def prefix=(new_path)
|
2757
|
-
@prefix = new_path
|
2758
|
-
Autoproj.change_option('prefix', new_path, true)
|
2759
|
-
end
|
2761
|
+
# @deprecated use workspace.prefix_dir instead
|
2762
|
+
def self.prefix
|
2763
|
+
Autoproj.warn_deprecated(__method__, 'workspace.prefix_dir')
|
2764
|
+
workspace.prefix_dir
|
2760
2765
|
end
|
2761
|
-
@
|
2762
|
-
|
2763
|
-
|
2764
|
-
|
2765
|
-
|
2766
|
-
#
|
2766
|
+
# @deprecated use workspace.prefix_dir= instead
|
2767
|
+
def self.prefix=(path)
|
2768
|
+
Autoproj.warn_deprecated(__method__, 'workspace.prefix_dir=')
|
2769
|
+
workspace.prefix_dir = path
|
2770
|
+
end
|
2771
|
+
# @deprecated use workspace.prefix_dir instead
|
2767
2772
|
def self.build_dir
|
2768
|
-
|
2773
|
+
Autoproj.warn_deprecated(__method__, 'workspace.prefix_dir')
|
2774
|
+
workspace.prefix_dir
|
2769
2775
|
end
|
2770
|
-
|
2771
|
-
#
|
2772
|
-
#
|
2773
|
-
# If the current directory is not in an autoproj installation, raises
|
2774
|
-
# UserError.
|
2776
|
+
# @deprecated compute the full path with File.join(config_dir, file)
|
2777
|
+
# directly instead
|
2775
2778
|
def self.config_file(file)
|
2779
|
+
Autoproj.warn_deprecated(__method__, 'compute the full path with File.join(config_dir, ...) instead')
|
2776
2780
|
File.join(config_dir, file)
|
2777
2781
|
end
|
2782
|
+
# @deprecated use workspace.remotes_dir instead
|
2783
|
+
def self.remotes_dir
|
2784
|
+
Autoproj.warn_deprecated(__method__, 'use workspace.remotes_dir instead')
|
2785
|
+
workspace.remotes_dir
|
2786
|
+
end
|
2787
|
+
# @deprecated use workspace.load or add a separate Loader object to your class
|
2788
|
+
def self.load(package_set, *path)
|
2789
|
+
Autoproj.warn_deprecated(
|
2790
|
+
__method__,
|
2791
|
+
'use workspace.load or add a separate Loader object to your class')
|
2792
|
+
workspace.load(package_set, *path)
|
2793
|
+
end
|
2794
|
+
# @deprecated use workspace.load_if_present or add a separate Loader object to your class
|
2795
|
+
def self.load_if_present(package_set, *path)
|
2796
|
+
Autoproj.warn_deprecated(
|
2797
|
+
__method__,
|
2798
|
+
'use workspace.load_if_present or add a separate Loader object to your class')
|
2799
|
+
workspace.load_if_present(package_set, *path)
|
2800
|
+
end
|
2778
2801
|
|
2779
2802
|
# Run the provided command as user
|
2780
2803
|
def self.run_as_user(*args)
|
@@ -2782,7 +2805,6 @@ module Autoproj
|
|
2782
2805
|
raise "failed to run #{args.join(" ")}"
|
2783
2806
|
end
|
2784
2807
|
end
|
2785
|
-
|
2786
2808
|
# Run the provided command as root, using sudo to gain root access
|
2787
2809
|
def self.run_as_root(*args)
|
2788
2810
|
if !system(Autobuild.tool_in_path('sudo'), *args)
|
@@ -2790,92 +2812,6 @@ module Autoproj
|
|
2790
2812
|
end
|
2791
2813
|
end
|
2792
2814
|
|
2793
|
-
# Return the directory in which remote package set definition should be
|
2794
|
-
# checked out
|
2795
|
-
def self.remotes_dir
|
2796
|
-
File.join(root_dir, ".remotes")
|
2797
|
-
end
|
2798
|
-
|
2799
|
-
|
2800
|
-
def self.env_inherit(*names)
|
2801
|
-
Autobuild.env_inherit(*names)
|
2802
|
-
end
|
2803
|
-
|
2804
|
-
# @deprecated use isolate_environment instead
|
2805
|
-
def self.set_initial_env
|
2806
|
-
isolate_environment
|
2807
|
-
end
|
2808
|
-
|
2809
|
-
# Initializes the environment variables to a "sane default"
|
2810
|
-
#
|
2811
|
-
# Use this in autoproj/init.rb to make sure that the environment will not
|
2812
|
-
# get polluted during the build.
|
2813
|
-
def self.isolate_environment
|
2814
|
-
Autobuild.env_inherit = false
|
2815
|
-
Autobuild.env_push_path 'PATH', "/usr/local/bin", "/usr/bin", "/bin"
|
2816
|
-
end
|
2817
|
-
|
2818
|
-
def self.prepare_environment
|
2819
|
-
# Set up some important autobuild parameters
|
2820
|
-
env_inherit 'PATH', 'PKG_CONFIG_PATH', 'RUBYLIB', \
|
2821
|
-
'LD_LIBRARY_PATH', 'CMAKE_PREFIX_PATH', 'PYTHONPATH'
|
2822
|
-
|
2823
|
-
env_set 'AUTOPROJ_CURRENT_ROOT', Autoproj.root_dir
|
2824
|
-
env_set 'RUBYOPT', "-rubygems"
|
2825
|
-
Autoproj::OSDependencies::PACKAGE_HANDLERS.each do |pkg_mng|
|
2826
|
-
pkg_mng.initialize_environment
|
2827
|
-
end
|
2828
|
-
end
|
2829
|
-
|
2830
|
-
class << self
|
2831
|
-
attr_writer :shell_helpers
|
2832
|
-
def shell_helpers?; !!@shell_helpers end
|
2833
|
-
end
|
2834
|
-
@shell_helpers = true
|
2835
|
-
|
2836
|
-
# Create the env.sh script in +subdir+. In general, +subdir+ should be nil.
|
2837
|
-
def self.export_env_sh(subdir = nil)
|
2838
|
-
# Make sure that we have as much environment as possible
|
2839
|
-
Autoproj::CmdLine.update_environment
|
2840
|
-
|
2841
|
-
filename = if subdir
|
2842
|
-
File.join(Autoproj.root_dir, subdir, ENV_FILENAME)
|
2843
|
-
else
|
2844
|
-
File.join(Autoproj.root_dir, ENV_FILENAME)
|
2845
|
-
end
|
2846
|
-
|
2847
|
-
shell_dir = File.expand_path(File.join("..", "..", "shell"), File.dirname(__FILE__))
|
2848
|
-
if Autoproj.shell_helpers?
|
2849
|
-
Autoproj.message "sourcing autoproj shell helpers"
|
2850
|
-
Autoproj.message "add \"Autoproj.shell_helpers = false\" in autoproj/init.rb to disable"
|
2851
|
-
Autobuild.env_source_after(File.join(shell_dir, "autoproj_sh"))
|
2852
|
-
end
|
2853
|
-
|
2854
|
-
File.open(filename, "w") do |io|
|
2855
|
-
if Autobuild.env_inherit
|
2856
|
-
io.write <<-EOF
|
2857
|
-
if test -n "$AUTOPROJ_CURRENT_ROOT" && test "$AUTOPROJ_CURRENT_ROOT" != "#{Autoproj.root_dir}"; then
|
2858
|
-
echo "the env.sh from $AUTOPROJ_CURRENT_ROOT is already loaded. Start a new shell before sourcing this one"
|
2859
|
-
return
|
2860
|
-
fi
|
2861
|
-
EOF
|
2862
|
-
end
|
2863
|
-
Autobuild.export_env_sh(io)
|
2864
|
-
end
|
2865
|
-
end
|
2866
|
-
|
2867
|
-
# @deprecated use Ops.loader.load or add a proper Loader object to your
|
2868
|
-
# class
|
2869
|
-
def self.load(package_set, *path)
|
2870
|
-
Ops.loader.load(package_set, *path)
|
2871
|
-
end
|
2872
|
-
|
2873
|
-
# @deprecated use Ops.loader.load_if_present or add a proper Loader object
|
2874
|
-
# to your class
|
2875
|
-
def self.load_if_present(package_set, *path)
|
2876
|
-
Ops.loader.load_if_present(package_set, *path)
|
2877
|
-
end
|
2878
|
-
|
2879
2815
|
# Look into +dir+, searching for shared libraries. For each library, display
|
2880
2816
|
# a warning message if this library has undefined symbols.
|
2881
2817
|
def self.validate_solib_dependencies(dir, exclude_paths = [])
|
@@ -2897,6 +2833,12 @@ DEFS = <<EODEFS
|
|
2897
2833
|
---
|
2898
2834
|
none: ignore
|
2899
2835
|
ruby19:
|
2836
|
+
debian:
|
2837
|
+
- ruby1.9.1
|
2838
|
+
- ruby1.9.1-dev
|
2839
|
+
- rubygems1.9.1
|
2840
|
+
- rake
|
2841
|
+
- rubygems-integration
|
2900
2842
|
ubuntu:
|
2901
2843
|
'12.04':
|
2902
2844
|
- ruby1.9.1
|
@@ -2905,7 +2847,17 @@ ruby19:
|
|
2905
2847
|
- ri1.9.1
|
2906
2848
|
- libopenssl-ruby1.9.1
|
2907
2849
|
- rake
|
2908
|
-
default:
|
2850
|
+
default:
|
2851
|
+
- ruby1.9.1
|
2852
|
+
- ruby1.9.1-dev
|
2853
|
+
- rubygems1.9.1
|
2854
|
+
- ri1.9.1
|
2855
|
+
- libopenssl-ruby1.9.1
|
2856
|
+
- rake
|
2857
|
+
- rubygems-integration
|
2858
|
+
gentoo:
|
2859
|
+
- dev-lang/ruby:1.9
|
2860
|
+
- rake
|
2909
2861
|
fedora:
|
2910
2862
|
'17':
|
2911
2863
|
- ruby
|
@@ -2940,13 +2892,12 @@ ruby20:
|
|
2940
2892
|
default: ignore
|
2941
2893
|
ruby21:
|
2942
2894
|
debian:
|
2943
|
-
|
2944
|
-
|
2945
|
-
|
2946
|
-
|
2947
|
-
- rubygems-integration
|
2895
|
+
- ruby2.1
|
2896
|
+
- ruby2.1-dev
|
2897
|
+
- rake
|
2898
|
+
- rubygems-integration
|
2948
2899
|
ubuntu:
|
2949
|
-
14.10
|
2900
|
+
'14.10':
|
2950
2901
|
- ruby2.1
|
2951
2902
|
- ruby2.1-dev
|
2952
2903
|
- rake
|
@@ -2956,29 +2907,6 @@ ruby21:
|
|
2956
2907
|
macos-brew:
|
2957
2908
|
- gem: rake
|
2958
2909
|
default: ignore
|
2959
|
-
ruby22:
|
2960
|
-
ubuntu:
|
2961
|
-
'15.10':
|
2962
|
-
- ruby2.2
|
2963
|
-
- ruby2.2-dev
|
2964
|
-
- rake
|
2965
|
-
- rubygems-integration
|
2966
|
-
default: ignore
|
2967
|
-
default: ignore
|
2968
|
-
ruby23:
|
2969
|
-
debian:
|
2970
|
-
unstable:
|
2971
|
-
- ruby2.3
|
2972
|
-
- ruby2.3-dev
|
2973
|
-
- rake
|
2974
|
-
- rubygems-integration
|
2975
|
-
ubuntu:
|
2976
|
-
'16.04':
|
2977
|
-
- ruby2.3-dev
|
2978
|
-
- rake
|
2979
|
-
- rubygems-integration
|
2980
|
-
default: ignore
|
2981
|
-
default: ignore
|
2982
2910
|
build-essential:
|
2983
2911
|
debian,ubuntu: build-essential
|
2984
2912
|
gentoo: ignore
|
@@ -2993,10 +2921,10 @@ build-essential:
|
|
2993
2921
|
- gcc-c++
|
2994
2922
|
default: clang
|
2995
2923
|
autobuild:
|
2996
|
-
- gem: autobuild
|
2924
|
+
- gem: autobuild
|
2997
2925
|
- osdep: readline
|
2998
2926
|
autoproj:
|
2999
|
-
- gem: autoproj
|
2927
|
+
- gem: autoproj
|
3000
2928
|
- osdep: readline
|
3001
2929
|
readline:
|
3002
2930
|
debian,ubuntu: libreadline-dev
|
@@ -3099,7 +3027,6 @@ pip:
|
|
3099
3027
|
fedora: python-pip
|
3100
3028
|
freebsd: pip
|
3101
3029
|
sudo:
|
3102
|
-
macos-brew: ignore
|
3103
3030
|
default: sudo
|
3104
3031
|
|
3105
3032
|
EODEFS
|
@@ -3151,6 +3078,24 @@ if !curdir_entries.empty? && ENV['AUTOPROJ_BOOTSTRAP_IGNORE_NONEMPTY_DIR'] != '1
|
|
3151
3078
|
end
|
3152
3079
|
end
|
3153
3080
|
|
3081
|
+
# While in here, we don't have utilrb
|
3082
|
+
module Kernel
|
3083
|
+
def filter_options(options, defaults)
|
3084
|
+
options = options.dup
|
3085
|
+
filtered = Hash.new
|
3086
|
+
defaults.each do |k, v|
|
3087
|
+
filtered[k] =
|
3088
|
+
if options.has_key?(k) then options.delete(k)
|
3089
|
+
else v
|
3090
|
+
end
|
3091
|
+
end
|
3092
|
+
return filtered, options
|
3093
|
+
end
|
3094
|
+
def validate_options(options, defaults)
|
3095
|
+
defaults.merge(options)
|
3096
|
+
end
|
3097
|
+
end
|
3098
|
+
|
3154
3099
|
# Environment is clean, so just mark it as so unconditionally
|
3155
3100
|
ENV['AUTOPROJ_BOOTSTRAP_IGNORE_NONEMPTY_DIR'] = '1'
|
3156
3101
|
|
@@ -3162,7 +3107,6 @@ ENV['GEM_HOME'] = gem_home
|
|
3162
3107
|
ENV['GEM_PATH'] = gem_path
|
3163
3108
|
ENV['PATH'] = "#{ENV['GEM_HOME']}/bin:#{ENV['PATH']}"
|
3164
3109
|
|
3165
|
-
|
3166
3110
|
Autoproj::OSDependencies.define_osdeps_mode_option
|
3167
3111
|
osdeps_mode = Autoproj::OSDependencies.osdeps_mode.join(",")
|
3168
3112
|
ENV['AUTOPROJ_OSDEPS_MODE'] = osdeps_mode
|
@@ -3181,6 +3125,7 @@ osdeps_management =
|
|
3181
3125
|
Autoproj::OSDependencies.new(YAML.load(DEFS))
|
3182
3126
|
end
|
3183
3127
|
osdeps_management.silent = false
|
3128
|
+
Autoproj::PackageManagers::GemManager.gem_home = gem_home
|
3184
3129
|
Autoproj::PackageManagers::GemManager.use_cache_dir
|
3185
3130
|
|
3186
3131
|
begin
|