autoproj 2.0.0.rc5 → 2.0.0.rc6
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/bin/autoproj_bootstrap +158 -115
- data/bin/autoproj_install +159 -116
- data/bin/autoproj_install.in +1 -1
- data/lib/autoproj/autobuild.rb +2 -2
- data/lib/autoproj/cli/main.rb +13 -13
- data/lib/autoproj/cli/switch_config.rb +7 -2
- data/lib/autoproj/cli/update.rb +1 -8
- data/lib/autoproj/configuration.rb +10 -0
- data/lib/autoproj/environment.rb +3 -5
- data/lib/autoproj/ops/import.rb +5 -1
- data/lib/autoproj/ops/install.rb +158 -115
- data/lib/autoproj/ops/snapshot.rb +11 -3
- data/lib/autoproj/os_package_installer.rb +1 -1
- data/lib/autoproj/os_package_resolver.rb +31 -51
- data/lib/autoproj/package_managers/bundler_manager.rb +29 -29
- data/lib/autoproj/package_managers/gem_manager.rb +1 -1
- data/lib/autoproj/package_managers/shell_script_manager.rb +1 -1
- data/lib/autoproj/version.rb +1 -1
- data/lib/autoproj/workspace.rb +46 -9
- metadata +2 -3
- data/lib/autoproj/cli/upgrade.rb +0 -75
@@ -234,7 +234,7 @@ def save_import_state(name, versions)
|
|
234
234
|
# Ensure that our ref is being logged
|
235
235
|
FileUtils.touch File.join(git_dir, 'logs', *self.class.import_state_log_ref.split("/"))
|
236
236
|
# Create the commit with the versions info
|
237
|
-
commit_id = Snapshot.create_commit(main, import_state_log_file, name) do |io|
|
237
|
+
commit_id = Snapshot.create_commit(main, import_state_log_file, name, real_author: false) do |io|
|
238
238
|
YAML.dump(versions, io)
|
239
239
|
end
|
240
240
|
# And save it in our reflog
|
@@ -257,7 +257,7 @@ def save_import_state(name, versions)
|
|
257
257
|
# the root of the git repository
|
258
258
|
# @param [String] the commit message
|
259
259
|
# @return [String] the commit ID
|
260
|
-
def self.create_commit(pkg, path, message, parent_id = nil)
|
260
|
+
def self.create_commit(pkg, path, message, parent_id = nil, real_author: true)
|
261
261
|
importer = pkg.importer
|
262
262
|
object_id = Tempfile.open 'autoproj-versions' do |io|
|
263
263
|
yield(io)
|
@@ -274,6 +274,14 @@ def self.create_commit(pkg, path, message, parent_id = nil)
|
|
274
274
|
|
275
275
|
parent_id ||= importer.rev_parse(pkg, 'HEAD')
|
276
276
|
|
277
|
+
env = Hash.new
|
278
|
+
if !real_author
|
279
|
+
env['GIT_AUTHOR_NAME'] = 'autoproj'
|
280
|
+
env['GIT_AUTHOR_EMAIL'] = 'autoproj'
|
281
|
+
env['GIT_COMMITTER_NAME'] = 'autoproj'
|
282
|
+
env['GIT_COMMITTER_EMAIL'] = 'autoproj'
|
283
|
+
end
|
284
|
+
|
277
285
|
# Create the tree using a temporary index in order to not mess with
|
278
286
|
# the user's index state. read-tree initializes the new index and
|
279
287
|
# then we add the overrides file with update-index / write-tree
|
@@ -294,7 +302,7 @@ def self.create_commit(pkg, path, message, parent_id = nil)
|
|
294
302
|
|
295
303
|
importer.run_git_bare(
|
296
304
|
pkg, 'commit-tree',
|
297
|
-
tree_id, '-p', parent_id, input_streams: [message]).first
|
305
|
+
tree_id, '-p', parent_id, env: env, input_streams: [message]).first
|
298
306
|
end
|
299
307
|
end
|
300
308
|
end
|
@@ -160,7 +160,7 @@ def osdeps_mode_option_supported_os(config)
|
|
160
160
|
end
|
161
161
|
|
162
162
|
def define_osdeps_mode_option
|
163
|
-
if
|
163
|
+
if os_package_resolver.supported_operating_system?
|
164
164
|
osdeps_mode_option_supported_os(ws.config)
|
165
165
|
else
|
166
166
|
osdeps_mode_option_unsupported_os(ws.config)
|
@@ -137,7 +137,7 @@ def prefer_indep_over_os_packages=(flag); @prefer_indep_over_os_packages = flag
|
|
137
137
|
# @return [String]
|
138
138
|
def os_package_manager
|
139
139
|
if !instance_variable_defined?(:@os_package_manager)
|
140
|
-
os_names, _ =
|
140
|
+
os_names, _ = operating_system
|
141
141
|
os_name = os_names.find { |name| OS_PACKAGE_MANAGERS[name] }
|
142
142
|
@os_package_manager = OS_PACKAGE_MANAGERS[os_name]
|
143
143
|
if !@os_package_manager
|
@@ -162,6 +162,7 @@ def initialize(defs = Hash.new, file = nil)
|
|
162
162
|
|
163
163
|
@sources = Hash.new
|
164
164
|
@installed_packages = Set.new
|
165
|
+
@operating_system = self.class.operating_system
|
165
166
|
if file
|
166
167
|
defs.each_key do |package_name|
|
167
168
|
sources[package_name] = file
|
@@ -246,7 +247,7 @@ def self.verify_definitions(hash, path = [])
|
|
246
247
|
|
247
248
|
# Returns true if it is possible to install packages for the operating
|
248
249
|
# system on which we are installed
|
249
|
-
def
|
250
|
+
def supported_operating_system?
|
250
251
|
if @supported_operating_system.nil?
|
251
252
|
os_names, _ = operating_system
|
252
253
|
@supported_operating_system =
|
@@ -258,13 +259,6 @@ def self.supported_operating_system?
|
|
258
259
|
return @supported_operating_system
|
259
260
|
end
|
260
261
|
|
261
|
-
# Used mainly during testing to bypass the operating system
|
262
|
-
# autodetection
|
263
|
-
def self.operating_system=(values)
|
264
|
-
@supported_operating_system = nil
|
265
|
-
@operating_system = values
|
266
|
-
end
|
267
|
-
|
268
262
|
def self.guess_operating_system
|
269
263
|
if File.exists?('/etc/debian_version')
|
270
264
|
versions = [File.read('/etc/debian_version').strip]
|
@@ -345,6 +339,23 @@ def self.normalize_os_representation(names, versions)
|
|
345
339
|
return names, versions
|
346
340
|
end
|
347
341
|
|
342
|
+
def operating_system
|
343
|
+
@operating_system || self.class.operating_system
|
344
|
+
end
|
345
|
+
|
346
|
+
def operating_system=(values)
|
347
|
+
@supported_operating_system = nil
|
348
|
+
@operating_system = values
|
349
|
+
end
|
350
|
+
|
351
|
+
def self.operating_system
|
352
|
+
@operating_system
|
353
|
+
end
|
354
|
+
|
355
|
+
def self.operating_system=(values)
|
356
|
+
@operating_system = values
|
357
|
+
end
|
358
|
+
|
348
359
|
# Autodetects the operating system name and version
|
349
360
|
#
|
350
361
|
# +osname+ is the operating system name, all in lowercase (e.g. ubuntu,
|
@@ -355,41 +366,16 @@ def self.normalize_os_representation(names, versions)
|
|
355
366
|
# one.
|
356
367
|
#
|
357
368
|
# Examples: ['debian', ['sid', 'unstable']] or ['ubuntu', ['lucid lynx', '10.04']]
|
358
|
-
def self.
|
359
|
-
# Validate the options. We check on the availability of
|
360
|
-
# validate_options as to not break autoproj_bootstrap (in which
|
361
|
-
# validate_options is not available)
|
362
|
-
options = validate_options options, force: false, config: Autoproj.config
|
363
|
-
config = options.fetch(:config)
|
364
|
-
|
369
|
+
def self.autodetect_operating_system
|
365
370
|
if user_os = ENV['AUTOPROJ_OS']
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
end
|
372
|
-
return @operating_system
|
373
|
-
end
|
374
|
-
|
375
|
-
|
376
|
-
if options[:force]
|
377
|
-
@operating_system = nil
|
378
|
-
elsif !@operating_system.nil? # @operating_system can be set to false to simulate an unknown OS
|
379
|
-
return @operating_system
|
380
|
-
elsif config.has_value_for?('operating_system')
|
381
|
-
os = config.get('operating_system')
|
382
|
-
if os.respond_to?(:to_ary)
|
383
|
-
if os[0].respond_to?(:to_ary) && os[0].all? { |s| s.respond_to?(:to_str) } &&
|
384
|
-
os[1].respond_to?(:to_ary) && os[1].all? { |s| s.respond_to?(:to_str) }
|
385
|
-
@operating_system = os
|
386
|
-
return os
|
387
|
-
end
|
371
|
+
if user_os.empty?
|
372
|
+
return false
|
373
|
+
else
|
374
|
+
names, versions = user_os.split(':')
|
375
|
+
return normalize_os_representation(names.split(','), versions.split(','))
|
388
376
|
end
|
389
|
-
@operating_system = nil # Invalid OS format in the configuration file
|
390
377
|
end
|
391
378
|
|
392
|
-
Autobuild.progress :operating_system_autodetection, "autodetecting the operating system"
|
393
379
|
names, versions = os_from_os_release
|
394
380
|
|
395
381
|
if !names
|
@@ -415,13 +401,7 @@ def self.operating_system(options = Hash.new)
|
|
415
401
|
|
416
402
|
names = ensure_derivatives_refer_to_their_parents(names)
|
417
403
|
names, versions = normalize_os_representation(names, versions)
|
418
|
-
|
419
|
-
@operating_system = [names, versions]
|
420
|
-
config.set('operating_system', @operating_system, true)
|
421
|
-
Autobuild.progress :operating_system_autodetection, "operating system: #{(names - ['default']).join(",")} - #{(versions - ['default']).join(",")}"
|
422
|
-
@operating_system
|
423
|
-
ensure
|
424
|
-
Autobuild.progress_done :operating_system_autodetection
|
404
|
+
return [names, versions]
|
425
405
|
end
|
426
406
|
|
427
407
|
def self.os_from_os_release(filename = '/etc/os-release')
|
@@ -495,7 +475,7 @@ def resolve_package(name)
|
|
495
475
|
path = self.class.resolve_name(name)
|
496
476
|
name = path.last
|
497
477
|
|
498
|
-
os_names, os_versions =
|
478
|
+
os_names, os_versions = operating_system
|
499
479
|
os_names = os_names.dup
|
500
480
|
if prefer_indep_over_os_packages?
|
501
481
|
os_names.unshift 'default'
|
@@ -712,7 +692,7 @@ def resolve_os_packages(dependencies)
|
|
712
692
|
|
713
693
|
if result.empty?
|
714
694
|
if self.class.supported_operating_system?
|
715
|
-
os_names, os_versions =
|
695
|
+
os_names, os_versions = operating_system
|
716
696
|
raise MissingOSDep.new, "there is an osdeps definition for #{name}, but not for this operating system and version (resp. #{os_names.join(", ")} and #{os_versions.join(", ")})"
|
717
697
|
end
|
718
698
|
result = [[os_package_manager, FOUND_PACKAGES, [name]]]
|
@@ -781,9 +761,9 @@ def availability_of(name)
|
|
781
761
|
end
|
782
762
|
|
783
763
|
if resolved.empty?
|
784
|
-
if !
|
764
|
+
if !operating_system
|
785
765
|
return UNKNOWN_OS
|
786
|
-
elsif !
|
766
|
+
elsif !supported_operating_system?
|
787
767
|
return AVAILABLE
|
788
768
|
else return WRONG_OS
|
789
769
|
end
|
@@ -30,13 +30,9 @@ def initialize_environment
|
|
30
30
|
|
31
31
|
env.inherit 'GEM_PATH'
|
32
32
|
env.init_from_env 'GEM_PATH'
|
33
|
-
orig_gem_path = (env['GEM_PATH'] || "").split(File::PATH_SEPARATOR).find_all do |p|
|
34
|
-
!Workspace.in_autoproj_project?(p)
|
35
|
-
end
|
36
33
|
env.system_env['GEM_PATH'] = Gem.default_path
|
37
|
-
env.original_env['GEM_PATH'] = orig_gem_path.join(File::PATH_SEPARATOR)
|
38
34
|
|
39
|
-
if
|
35
|
+
if env.original_env['GEM_HOME'].empty?
|
40
36
|
env.unset('GEM_HOME')
|
41
37
|
end
|
42
38
|
|
@@ -44,8 +40,7 @@ def initialize_environment
|
|
44
40
|
env.inherit 'RUBYLIB'
|
45
41
|
original_rubylib =
|
46
42
|
(env['RUBYLIB'] || "").split(File::PATH_SEPARATOR).find_all do |p|
|
47
|
-
!
|
48
|
-
!p.start_with?(Bundler.rubygems.gem_dir) &&
|
43
|
+
!p.start_with?(Bundler.rubygems.gem_dir) &&
|
49
44
|
!Bundler.rubygems.gem_path.any? { |gem_p| p.start_with?(p) }
|
50
45
|
end
|
51
46
|
if system_rubylib = discover_rubylib
|
@@ -53,15 +48,7 @@ def initialize_environment
|
|
53
48
|
env.original_env['RUBYLIB'] = (original_rubylib - system_rubylib).join(File::PATH_SEPARATOR)
|
54
49
|
end
|
55
50
|
|
56
|
-
|
57
|
-
if ws.config.private_bundler?
|
58
|
-
env.add_path 'GEM_PATH', File.join(dot_autoproj, 'bundler')
|
59
|
-
end
|
60
|
-
if ws.config.private_autoproj?
|
61
|
-
env.add_path 'GEM_PATH', File.join(dot_autoproj, 'autoproj')
|
62
|
-
end
|
63
|
-
|
64
|
-
ws.manifest.each_reused_autoproj_installation do |p|
|
51
|
+
ws.config.each_reused_autoproj_installation do |p|
|
65
52
|
reused_w = ws.new(p)
|
66
53
|
reused_c = reused_w.load_config
|
67
54
|
if reused_c.private_gems?
|
@@ -70,7 +57,6 @@ def initialize_environment
|
|
70
57
|
env.add_path 'PATH', File.join(reused_w.prefix_dir, 'gems', 'bin')
|
71
58
|
end
|
72
59
|
|
73
|
-
|
74
60
|
gem_home = File.join(ws.prefix_dir, "gems")
|
75
61
|
if ws.config.private_gems?
|
76
62
|
env.set 'GEM_HOME', gem_home
|
@@ -86,9 +72,19 @@ def initialize_environment
|
|
86
72
|
end
|
87
73
|
|
88
74
|
env.set 'BUNDLE_GEMFILE', File.join(gem_home, 'Gemfile')
|
75
|
+
env.add_path 'PATH', Gem.bindir
|
89
76
|
env.add_path 'PATH', File.join(gem_home, 'bin')
|
90
|
-
|
91
|
-
|
77
|
+
|
78
|
+
dot_autoproj = ws.dot_autoproj_dir
|
79
|
+
if ws.config.private_bundler?
|
80
|
+
env.add_path 'PATH', File.join(dot_autoproj, 'bundler', 'bin')
|
81
|
+
env.add_path 'GEM_PATH', File.join(dot_autoproj, 'bundler')
|
82
|
+
end
|
83
|
+
env.add_path 'PATH', File.join(dot_autoproj, 'autoproj', 'bin')
|
84
|
+
if ws.config.private_autoproj?
|
85
|
+
env.add_path 'GEM_PATH', File.join(dot_autoproj, 'autoproj')
|
86
|
+
end
|
87
|
+
Autobuild.programs['bundler'] = 'bundler'
|
92
88
|
|
93
89
|
if bundle_rubylib = discover_bundle_rubylib
|
94
90
|
update_env_rubylib(bundle_rubylib, system_rubylib)
|
@@ -96,7 +92,7 @@ def initialize_environment
|
|
96
92
|
end
|
97
93
|
|
98
94
|
def update_env_rubylib(bundle_rubylib, system_rubylib = discover_rubylib)
|
99
|
-
current = ws.env.resolved_env['RUBYLIB'].split(File::PATH_SEPARATOR) + system_rubylib
|
95
|
+
current = (ws.env.resolved_env['RUBYLIB'] || '').split(File::PATH_SEPARATOR) + system_rubylib
|
100
96
|
(bundle_rubylib - current).each do |p|
|
101
97
|
ws.env.add_path('RUBYLIB', p)
|
102
98
|
end
|
@@ -148,6 +144,11 @@ def install(gems)
|
|
148
144
|
# Back up the existing gemfile, we'll restore it if something is
|
149
145
|
# wrong to avoid leaving bundler in an inconsistent state
|
150
146
|
backup_files(backups)
|
147
|
+
if !File.file?("#{gemfile_path}.orig")
|
148
|
+
File.open("#{gemfile_path}.orig", 'w') do |io|
|
149
|
+
io.puts "eval_gemfile \"#{File.join(ws.dot_autoproj_dir, 'autoproj', 'Gemfile')}\""
|
150
|
+
end
|
151
|
+
end
|
151
152
|
|
152
153
|
# Generate the gemfile and remove the lockfile
|
153
154
|
gems = gems.sort.map do |name|
|
@@ -161,16 +162,14 @@ def install(gems)
|
|
161
162
|
end
|
162
163
|
FileUtils.rm File.join(root_dir, 'Gemfile.lock')
|
163
164
|
|
164
|
-
|
165
|
-
options = ['--path', root_dir]
|
166
|
-
end
|
167
|
-
|
165
|
+
binstubs_path = File.join(root_dir, 'bin')
|
168
166
|
Bundler.with_clean_env do
|
169
167
|
connections = Set.new
|
170
168
|
Autobuild::Subprocess.run 'autoproj', 'osdeps',
|
171
169
|
Autobuild.tool('bundler'), 'install',
|
172
170
|
"--gemfile=#{gemfile_path}", *options,
|
173
|
-
"--binstubs",
|
171
|
+
"--binstubs", binstubs_path,
|
172
|
+
"--shebang", Gem.ruby,
|
174
173
|
env: Hash['BUNDLE_GEMFILE' => gemfile_path] do |line|
|
175
174
|
|
176
175
|
case line
|
@@ -196,6 +195,7 @@ def install(gems)
|
|
196
195
|
backup_restore(backups)
|
197
196
|
raise
|
198
197
|
ensure
|
198
|
+
FileUtils.rm_f File.join(binstubs_path, 'bundler')
|
199
199
|
backup_clean(backups)
|
200
200
|
end
|
201
201
|
|
@@ -204,8 +204,8 @@ def discover_rubylib
|
|
204
204
|
result = Bundler.clean_system(
|
205
205
|
Hash['RUBYLIB' => nil],
|
206
206
|
Autobuild.tool('ruby'), '-e', 'puts $LOAD_PATH',
|
207
|
-
out: io
|
208
|
-
|
207
|
+
out: io,
|
208
|
+
err: '/dev/null')
|
209
209
|
if result
|
210
210
|
io.readlines.map { |l| l.chomp }.find_all { |l| !l.empty? }
|
211
211
|
end
|
@@ -218,8 +218,8 @@ def discover_bundle_rubylib
|
|
218
218
|
result = Bundler.clean_system(
|
219
219
|
Hash['BUNDLE_GEMFILE' => gemfile],
|
220
220
|
Autobuild.tool('bundler'), 'exec', 'ruby', '-e', 'puts $LOAD_PATH',
|
221
|
-
out: io
|
222
|
-
|
221
|
+
out: io,
|
222
|
+
err: '/dev/null')
|
223
223
|
if result
|
224
224
|
io.readlines.map { |l| l.chomp }.find_all { |l| !l.empty? }
|
225
225
|
end
|
@@ -38,7 +38,7 @@ def initialize_environment
|
|
38
38
|
env.system_env['GEM_PATH'] = Gem.default_path
|
39
39
|
env.original_env['GEM_PATH'] = orig_gem_path.join(File::PATH_SEPARATOR)
|
40
40
|
|
41
|
-
ws.
|
41
|
+
ws.config.each_reused_autoproj_installation do |p|
|
42
42
|
p_gems = File.join(p, '.gems')
|
43
43
|
if File.directory?(p_gems)
|
44
44
|
env.push_path 'GEM_PATH', p_gems
|
@@ -184,7 +184,7 @@ def osdeps_interaction(os_packages, shell_script)
|
|
184
184
|
# packages. See the option in {#generate_auto_os_script}
|
185
185
|
# @return [Boolean] true if packages got installed, false otherwise
|
186
186
|
def install(packages, options = Hash.new)
|
187
|
-
handled_os =
|
187
|
+
handled_os = ws.supported_operating_system?
|
188
188
|
if handled_os
|
189
189
|
shell_script = generate_auto_os_script(packages, options)
|
190
190
|
user_shell_script = generate_user_os_script(packages, options)
|
data/lib/autoproj/version.rb
CHANGED
data/lib/autoproj/workspace.rb
CHANGED
@@ -18,6 +18,7 @@ def initialize(root_dir)
|
|
18
18
|
@env = Environment.new
|
19
19
|
env.source_before(File.join(dot_autoproj_dir, 'env.sh'))
|
20
20
|
@manifest = Manifest.new
|
21
|
+
|
21
22
|
@os_package_installer = OSPackageInstaller.new(self, os_package_resolver)
|
22
23
|
env.prepare(root_dir)
|
23
24
|
super(root_dir)
|
@@ -173,6 +174,8 @@ def load_config(reconfigure = false)
|
|
173
174
|
manifest.vcs = VCSDefinition.from_raw(
|
174
175
|
type: 'local', url: config_dir)
|
175
176
|
end
|
177
|
+
os_package_resolver.prefer_indep_over_os_packages = config.prefer_indep_over_os_packages?
|
178
|
+
OSPackageResolver.operating_system ||= config.get('operating_system', nil)
|
176
179
|
end
|
177
180
|
@config
|
178
181
|
end
|
@@ -183,8 +186,43 @@ def load_manifest
|
|
183
186
|
end
|
184
187
|
end
|
185
188
|
|
189
|
+
def autodetect_operating_system(force: false)
|
190
|
+
if force || !os_package_resolver.operating_system
|
191
|
+
begin
|
192
|
+
Autobuild.progress_start :operating_system_autodetection,
|
193
|
+
"autodetecting the operating system"
|
194
|
+
names, versions = OSPackageResolver.autodetect_operating_system
|
195
|
+
OSPackageResolver.operating_system = [names, versions]
|
196
|
+
Autobuild.progress :operating_system_autodetection,
|
197
|
+
"operating system: #{(names - ['default']).join(",")} - #{(versions - ['default']).join(",")}"
|
198
|
+
ensure
|
199
|
+
Autobuild.progress_done :operating_system_autodetection
|
200
|
+
end
|
201
|
+
config.set('operating_system', os_package_resolver.operating_system, true)
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
def operating_system
|
206
|
+
os_package_resolver.operating_system
|
207
|
+
end
|
208
|
+
|
209
|
+
def supported_operating_system?
|
210
|
+
os_package_resolver.supported_operating_system?
|
211
|
+
end
|
212
|
+
|
213
|
+
def setup_os_package_installer
|
214
|
+
autodetect_operating_system
|
215
|
+
os_package_installer.each_manager do |pkg_mng|
|
216
|
+
pkg_mng.initialize_environment
|
217
|
+
end
|
218
|
+
os_package_resolver.load_default
|
219
|
+
os_package_installer.define_osdeps_mode_option
|
220
|
+
os_package_installer.osdeps_mode
|
221
|
+
end
|
222
|
+
|
186
223
|
def setup
|
187
224
|
load_config
|
225
|
+
autodetect_operating_system
|
188
226
|
config.validate_ruby_executable
|
189
227
|
config.apply_autobuild_configuration
|
190
228
|
load_autoprojrc
|
@@ -206,14 +244,7 @@ def setup
|
|
206
244
|
Autobuild::Importer.default_cache_dirs = cache_dir
|
207
245
|
end
|
208
246
|
env.prepare(root_dir)
|
209
|
-
|
210
|
-
pkg_mng.initialize_environment
|
211
|
-
end
|
212
|
-
|
213
|
-
os_package_resolver.load_default
|
214
|
-
os_package_installer.define_osdeps_mode_option
|
215
|
-
os_package_installer.osdeps_mode
|
216
|
-
|
247
|
+
setup_os_package_installer
|
217
248
|
install_ruby_shims
|
218
249
|
end
|
219
250
|
|
@@ -333,6 +364,10 @@ def load_osdeps_from_package_sets
|
|
333
364
|
end
|
334
365
|
|
335
366
|
def load_package_sets(options = Hash.new)
|
367
|
+
if !File.file?(manifest_file_path) # empty install, just return
|
368
|
+
return
|
369
|
+
end
|
370
|
+
|
336
371
|
options = validate_options options,
|
337
372
|
only_local: false,
|
338
373
|
checkout_only: true,
|
@@ -525,7 +560,9 @@ def finalize_package_setup
|
|
525
560
|
end
|
526
561
|
|
527
562
|
manifest.each_package_set do |source|
|
528
|
-
|
563
|
+
if source.local_dir
|
564
|
+
load_if_present(source, source.local_dir, "overrides.rb")
|
565
|
+
end
|
529
566
|
end
|
530
567
|
|
531
568
|
Dir.glob(File.join( overrides_dir, "*.rb" ) ).sort.each do |file|
|