autoproj 2.0.0.rc5 → 2.0.0.rc6
Sign up to get free protection for your applications and to get access to all the features.
- 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|
|