autoproj 2.0.0.rc38 → 2.0.0.rc39

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.
@@ -149,15 +149,13 @@ def queue_import_work(executor, completion_queue, pkg, retry_count: nil, **impor
149
149
  import_future.execute
150
150
  end
151
151
 
152
- class ImportFailed < RuntimeError; end
153
-
154
152
  # Import all packages from the given selection, and their
155
153
  # dependencies
156
- def import_selected_packages(selection, updated_packages,
154
+ def import_selected_packages(selection,
157
155
  parallel: ws.config.parallel_import_level,
158
156
  recursive: true,
159
157
  retry_count: nil,
160
- ignore_errors: false,
158
+ keep_going: false,
161
159
  install_vcs_packages: Hash.new,
162
160
  non_imported_packages: :checkout,
163
161
  **import_options)
@@ -189,10 +187,10 @@ def import_selected_packages(selection, updated_packages,
189
187
  all_processed_packages = Set.new
190
188
  main_thread_imports = Array.new
191
189
  package_queue = selected_packages.to_a.sort_by(&:name)
192
- failures = Hash.new
190
+ failures = Array.new
193
191
  missing_vcs = Array.new
194
192
  installed_vcs_packages = Set['none', 'local']
195
- while failures.empty? || ignore_errors
193
+ while failures.empty? || keep_going
196
194
  # Queue work for all packages in the queue
197
195
  package_queue.each do |pkg|
198
196
  # Remove packages that have already been processed
@@ -283,7 +281,7 @@ def import_selected_packages(selection, updated_packages,
283
281
  if !reason.kind_of?(Interrupt)
284
282
  Autoproj.error "#{reason}"
285
283
  end
286
- failures[pkg] = reason
284
+ failures << reason
287
285
  end
288
286
  else
289
287
  if new_packages = post_package_import(selection, manifest, pkg.autobuild, reverse_dependencies)
@@ -299,29 +297,19 @@ def import_selected_packages(selection, updated_packages,
299
297
  end
300
298
  end
301
299
 
302
- if !failures.empty?
303
- raise ImportFailed, "import of #{failures.size} packages failed: #{failures.keys.map(&:name).sort.join(", ")}"
304
- end
305
-
306
300
  all_processed_packages.delete_if do |processed_pkg|
307
301
  ws.manifest.excluded?(processed_pkg.name) || ws.manifest.ignored?(processed_pkg.name)
308
302
  end
309
- all_processed_packages
303
+ return all_processed_packages, failures
310
304
 
311
305
  ensure
312
- if failures && !failures.empty? && !ignore_errors
306
+ if failures && !failures.empty? && !keep_going
313
307
  Autoproj.error "waiting for pending import jobs to finish"
314
308
  end
315
309
  if executor
316
310
  executor.shutdown
317
311
  executor.wait_for_termination
318
312
  end
319
- if all_processed_packages
320
- all_updated_packages = all_processed_packages.find_all do |processed_pkg|
321
- processed_pkg.autobuild.updated?
322
- end
323
- updated_packages.concat(all_updated_packages.map(&:name))
324
- end
325
313
  end
326
314
 
327
315
  def finalize_package_load(processed_packages)
@@ -373,22 +361,24 @@ def import_packages(selection,
373
361
  warn_about_ignored_packages: true,
374
362
  warn_about_excluded_packages: true,
375
363
  recursive: true,
376
- ignore_errors: false,
364
+ keep_going: false,
377
365
  install_vcs_packages: Hash.new,
378
366
  **import_options)
379
367
 
380
- # Used in the ensure block, initialize as soon as possible
381
- updated_packages = Array.new
382
-
383
368
  manifest = ws.manifest
384
369
 
385
- all_processed_packages = import_selected_packages(
386
- selection, updated_packages,
370
+ all_processed_packages, failures = import_selected_packages(
371
+ selection,
387
372
  non_imported_packages: non_imported_packages,
388
- ignore_errors: ignore_errors,
373
+ keep_going: keep_going,
389
374
  recursive: recursive,
390
375
  install_vcs_packages: install_vcs_packages,
391
376
  **import_options)
377
+
378
+ if !keep_going && !failures.empty?
379
+ raise failures.first
380
+ end
381
+
392
382
  finalize_package_load(all_processed_packages)
393
383
 
394
384
  all_enabled_osdeps = selection.each_osdep_package_name.to_set
@@ -414,18 +404,34 @@ def import_packages(selection,
414
404
  end
415
405
  end
416
406
 
417
- return all_enabled_sources, all_enabled_osdeps
407
+ if !failures.empty?
408
+ raise PackageImportFailed.new(
409
+ failures, source_packages: all_enabled_sources,
410
+ osdep_packages: all_enabled_osdeps)
411
+ else
412
+ return all_enabled_sources, all_enabled_osdeps
413
+ end
418
414
 
419
415
  ensure
420
- if ws.config.import_log_enabled? && !updated_packages.empty? && Autoproj::Ops::Snapshot.update_log_available?(manifest)
416
+ if ws.config.import_log_enabled? && Autoproj::Ops::Snapshot.update_log_available?(manifest)
417
+ update_log_for_processed_packages(all_processed_packages || Array.new, $!)
418
+ end
419
+ end
420
+
421
+ def update_log_for_processed_packages(all_processed_packages, exception)
422
+ all_updated_packages = all_processed_packages.find_all do |processed_pkg|
423
+ processed_pkg.autobuild.updated?
424
+ end
425
+
426
+ if !all_updated_packages.empty?
421
427
  failure_message =
422
- if $!
423
- " (#{$!.message.split("\n").first})"
428
+ if exception
429
+ " (#{exception.message.split("\n").first})"
424
430
  end
425
- ops = Ops::Snapshot.new(ws.manifest, ignore_errors: true)
431
+ ops = Ops::Snapshot.new(ws.manifest, keep_going: true)
426
432
  ops.update_package_import_state(
427
433
  "#{$0} #{ARGV.join(" ")}#{failure_message}",
428
- updated_packages)
434
+ all_updated_packages.map(&:name))
429
435
  end
430
436
  end
431
437
  end
@@ -127,7 +127,7 @@ def switch_config(*args)
127
127
 
128
128
  url = VCSDefinition.to_absolute_url(url, ws.root_dir)
129
129
 
130
- if vcs && (vcs.type == type && vcs.url == url)
130
+ if vcs.type == type && vcs.url == url
131
131
  vcs = vcs.to_hash
132
132
  options.each do |opt|
133
133
  opt_name, opt_value = opt.split('=')
@@ -43,12 +43,9 @@ def sort_versions(versions)
43
43
  pkgs.sort_by { |vcs| vcs.keys.first }
44
44
  end
45
45
 
46
- def save_versions( versions, versions_file, options = Hash.new )
47
- options = Kernel.validate_options options,
48
- replace: false
49
-
46
+ def save_versions( versions, versions_file, replace: false)
50
47
  existing_versions = Array.new
51
- if !options[:replace] && File.exist?(versions_file)
48
+ if !replace && File.exist?(versions_file)
52
49
  existing_versions = YAML.load( File.read( versions_file ) ) ||
53
50
  Array.new
54
51
  end
@@ -80,25 +77,20 @@ def self.snapshot( packages, target_dir )
80
77
  #
81
78
  # @return [Boolean]
82
79
  # @see initialize error_or_warn
83
- def ignore_errors?; !!@ignore_errors end
80
+ def keep_going?; !!@keep_going end
84
81
 
85
- def initialize(manifest, options = Hash.new)
82
+ def initialize(manifest, keep_going: false)
86
83
  @manifest = manifest
87
- options = Kernel.validate_options options,
88
- ignore_errors: false
89
- @ignore_errors = options[:ignore_errors]
84
+ @keep_going = keep_going
90
85
  end
91
86
 
92
- def snapshot_package_sets(target_dir = nil, options = Hash.new)
93
- options = Kernel.validate_options options,
94
- only_local: true
95
-
87
+ def snapshot_package_sets(target_dir = nil, only_local: true)
96
88
  result = Array.new
97
89
  manifest.each_package_set do |pkg_set|
98
90
  next if pkg_set.local?
99
91
 
100
92
  vcs_info =
101
- begin pkg_set.snapshot(target_dir, only_local: options[:only_local])
93
+ begin pkg_set.snapshot(target_dir, only_local: only_local)
102
94
  rescue Exception => e
103
95
  error_or_warn(pkg_set, e)
104
96
  next
@@ -116,7 +108,7 @@ def snapshot_package_sets(target_dir = nil, options = Hash.new)
116
108
  def error_or_warn(package, error)
117
109
  if error.kind_of?(Interrupt)
118
110
  raise
119
- elsif ignore_errors?
111
+ elsif keep_going?
120
112
  if !error.respond_to?(:to_str)
121
113
  error = error.message
122
114
  end
@@ -128,10 +120,7 @@ def error_or_warn(package, error)
128
120
  end
129
121
  end
130
122
 
131
- def snapshot_packages(packages, target_dir = nil, options = Hash.new)
132
- options = Kernel.validate_options options,
133
- only_local: true
134
-
123
+ def snapshot_packages(packages, target_dir = nil, only_local: true)
135
124
  result = Array.new
136
125
  packages.each do |package_name|
137
126
  package = manifest.find_package_definition(package_name)
@@ -148,7 +137,7 @@ def snapshot_packages(packages, target_dir = nil, options = Hash.new)
148
137
  end
149
138
 
150
139
  vcs_info =
151
- begin importer.snapshot(package.autobuild, target_dir, only_local: options[:only_local])
140
+ begin importer.snapshot(package.autobuild, target_dir, only_local: only_local)
152
141
  rescue Exception => e
153
142
  error_or_warn(package, e)
154
143
  next
@@ -50,6 +50,7 @@ def initialize(ws, os_package_resolver, package_managers: PACKAGE_MANAGERS)
50
50
  @installed_resolved_packages = Hash.new { |h, k| h[k] = Set.new }
51
51
  @silent = true
52
52
  @filter_uptodate_packages = true
53
+ @osdeps_mode = nil
53
54
 
54
55
  @package_managers = Hash.new
55
56
  package_managers.each do |name, klass|
@@ -134,7 +134,7 @@ def prefer_indep_over_os_packages=(flag); @prefer_indep_over_os_packages = flag
134
134
  # Use to override the autodetected OS-specific package handler
135
135
  def os_package_manager=(manager_name)
136
136
  if manager_name && !package_managers.include?(manager_name)
137
- raise ArgumentError, "#{manager_name} is not a known package manager"
137
+ raise ArgumentError, "#{manager_name} is not a known package manager, known managers are #{package_managers.to_a.sort.join(", ")}"
138
138
  end
139
139
  @os_package_manager = manager_name
140
140
  end
@@ -214,8 +214,6 @@ def invalidate_resolve_package_cache
214
214
  # defined in both OSPackageResolver objects, the information in +info+
215
215
  # takes precedence
216
216
  def merge(info)
217
- invalidate_resolve_package_cache
218
-
219
217
  @definitions = definitions.merge(info.definitions) do |h, v1, v2|
220
218
  if v1 != v2
221
219
  old = source_of(h)
@@ -224,11 +222,11 @@ def merge(info)
224
222
  # Warn if the new osdep definition resolves to a different
225
223
  # set of packages than the old one
226
224
  old_resolved = resolve_package(h).inject(Hash.new) do |osdep_h, (handler, status, list)|
227
- osdep_h[handler] = [status, list]
225
+ osdep_h[handler] = [status, list.dup]
228
226
  osdep_h
229
227
  end
230
228
  new_resolved = info.resolve_package(h).inject(Hash.new) do |osdep_h, (handler, status, list)|
231
- osdep_h[handler] = [status, list]
229
+ osdep_h[handler] = [status, list.dup]
232
230
  osdep_h
233
231
  end
234
232
  if old_resolved != new_resolved
@@ -237,6 +235,8 @@ def merge(info)
237
235
  end
238
236
  v2
239
237
  end
238
+ invalidate_resolve_package_cache
239
+
240
240
  @sources = sources.merge(info.sources)
241
241
  @all_definitions = all_definitions.merge(info.all_definitions) do |package_name, all_defs, new_all_defs|
242
242
  all_defs = all_defs.dup
@@ -270,6 +270,12 @@ def self.verify_definitions(hash, path = [])
270
270
  end
271
271
  end
272
272
 
273
+ # Whether the operating system could be autodetected successfully
274
+ def known_operating_system?
275
+ os_names, _ = operating_system
276
+ !os_names.empty?
277
+ end
278
+
273
279
  # Returns true if it is possible to install packages for the operating
274
280
  # system on which we are installed
275
281
  def supported_operating_system?
@@ -497,26 +503,27 @@ def resolve_package(name)
497
503
  path = self.class.resolve_name(name)
498
504
  name = path.last
499
505
 
500
- os_names, os_versions = operating_system
501
- os_names = os_names.dup
502
- if prefer_indep_over_os_packages?
503
- os_names.unshift 'default'
504
- else
505
- os_names.push 'default'
506
- end
507
-
508
506
  dep_def = definitions[name]
509
507
  if !dep_def
510
508
  return (resolve_package_cache[name] = nil)
511
509
  end
512
510
 
511
+ os_names, os_versions = operating_system
512
+
513
513
  # Partition the found definition in all entries that are interesting
514
514
  # for us: toplevel os-independent package managers, os-dependent
515
515
  # package managers and os-independent package managers selected by
516
516
  # OS or version
517
- if !os_names
517
+ if os_names.empty?
518
518
  os_names = ['default']
519
519
  os_versions = ['default']
520
+ else
521
+ os_names = os_names.dup
522
+ if prefer_indep_over_os_packages?
523
+ os_names.unshift 'default'
524
+ else
525
+ os_names.push 'default'
526
+ end
520
527
  end
521
528
 
522
529
  result = []
@@ -545,6 +552,10 @@ def resolve_package(name)
545
552
  end
546
553
  end
547
554
 
555
+ result.each do |args|
556
+ args.last.freeze
557
+ end
558
+ result.freeze
548
559
  resolve_package_cache[name] = result
549
560
  end
550
561
 
@@ -714,7 +725,11 @@ def resolve_os_packages(dependencies)
714
725
 
715
726
  if result.empty?
716
727
  os_names, os_versions = operating_system
717
- 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(", ")})"
728
+ if os_names.empty?
729
+ raise MissingOSDep.new, "there is an osdeps definition for #{name}, but autoproj cannot detect the local operation system"
730
+ else
731
+ 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(", ")})"
732
+ end
718
733
  end
719
734
 
720
735
  result.each do |handler, status, packages|
@@ -724,7 +739,7 @@ def resolve_os_packages(dependencies)
724
739
  if entry = all_packages.find { |h, _| h == handler }
725
740
  entry[1].concat(packages)
726
741
  else
727
- all_packages << [handler, packages]
742
+ all_packages << [handler, packages.dup]
728
743
  end
729
744
  end
730
745
  end
@@ -784,13 +799,14 @@ def availability_of(name)
784
799
  end
785
800
 
786
801
  if resolved.empty?
787
- if !operating_system
802
+ if known_operating_system?
803
+ return WRONG_OS
804
+ else
788
805
  return UNKNOWN_OS
789
- else return WRONG_OS
790
806
  end
791
807
  end
792
808
 
793
- resolved = resolved.delete_if { |_, status, list| status == FOUND_PACKAGES && list.empty? }
809
+ resolved = resolved.find_all { |_, status, list| status != FOUND_PACKAGES || !list.empty? }
794
810
  failed = resolved.find_all do |_, status, _|
795
811
  status == FOUND_NONEXISTENT
796
812
  end
@@ -32,6 +32,9 @@ def self.root_dir=(dir)
32
32
  def self.root_dir(dir = Dir.pwd)
33
33
  if @root_dir
34
34
  return @root_dir
35
+ elsif !dir
36
+ @root_dir = ni
37
+ return
35
38
  end
36
39
  path = Autoproj.find_workspace_dir(dir)
37
40
  if !path
data/lib/autoproj/test.rb CHANGED
@@ -292,12 +292,29 @@ def ws_define_package_set(name, vcs = VCSDefinition.from_raw(type: 'none'), **op
292
292
  package_set
293
293
  end
294
294
 
295
+ def ws_create_local_package_set(name, path, source_data: Hash.new, **options)
296
+ vcs = VCSDefinition.from_raw(type: 'local', url: path)
297
+ package_set = PackageSet.new(ws, vcs, name: name, **options)
298
+ FileUtils.mkdir_p(path)
299
+ File.open(File.join(path, 'source.yml'), 'w') do |io|
300
+ YAML.dump(Hash['name' => name].merge(source_data), io)
301
+ end
302
+ ws.manifest.register_package_set(package_set)
303
+ package_set
304
+ end
305
+
295
306
  def ws_add_package_set_to_layout(name, vcs = VCSDefinition.from_raw(type: 'none'), **options)
296
307
  package_set = ws_define_package_set(name, vcs, **options)
297
308
  ws.manifest.add_package_set_to_layout(package_set)
298
309
  package_set
299
310
  end
300
311
 
312
+ def ws_add_metapackage_to_layout(name, *packages)
313
+ meta = ws.manifest.metapackage(name, *packages)
314
+ ws.manifest.add_metapackage_to_layout(meta)
315
+ meta
316
+ end
317
+
301
318
  def ws_define_osdep_entries(entries)
302
319
  ws_os_package_resolver.add_entries(entries)
303
320
  end
@@ -1,3 +1,3 @@
1
1
  module Autoproj
2
- VERSION = "2.0.0.rc38"
2
+ VERSION = "2.0.0.rc39"
3
3
  end
@@ -138,17 +138,9 @@ def config_file_path
138
138
  File.join(dot_autoproj_dir, 'config.yml')
139
139
  end
140
140
 
141
- # The path to a workspace's manifest file given its root dir
142
- #
143
- # @param [String] root_dir the workspace root directory
144
- # @return [String]
145
- def self.manifest_file_path_for(root_dir)
146
- File.join(root_dir, 'autoproj', 'manifest')
147
- end
148
-
149
141
  # The path to the workspace's manifest file
150
142
  def manifest_file_path
151
- self.class.manifest_file_path_for(root_dir)
143
+ File.join(root_dir, 'autoproj', config.get('manifest_name', 'manifest'))
152
144
  end
153
145
 
154
146
  # Return the directory in which remote package set definition should be
@@ -210,12 +202,6 @@ def save_config
210
202
  config.save(config_file_path)
211
203
  end
212
204
 
213
- def load_manifest
214
- if File.exist?(manifest_file_path)
215
- manifest.load(manifest_file_path)
216
- end
217
- end
218
-
219
205
  def autodetect_operating_system(force: false)
220
206
  if force || !os_package_resolver.operating_system
221
207
  begin
@@ -262,7 +248,9 @@ def setup
262
248
  config.each_reused_autoproj_installation do |p|
263
249
  manifest.reuse(p)
264
250
  end
265
- load_manifest
251
+ if File.exist?(manifest_file_path)
252
+ manifest.load(manifest_file_path)
253
+ end
266
254
 
267
255
  Autobuild.prefix = prefix_dir
268
256
  FileUtils.mkdir_p File.join(prefix_dir, '.autoproj')
@@ -386,6 +374,20 @@ def set_as_main_workspace
386
374
  Autoproj.workspace = self
387
375
  Autoproj.root_dir = root_dir
388
376
  Autobuild.env = env
377
+
378
+ if block_given?
379
+ begin
380
+ yield
381
+ ensure
382
+ clear_main_workspace
383
+ end
384
+ end
385
+ end
386
+
387
+ def clear_main_workspace
388
+ Autoproj.workspace = nil
389
+ Autoproj.root_dir = nil
390
+ Autobuild.env = nil
389
391
  end
390
392
 
391
393
  # Loads autoproj/init.rb
@@ -418,127 +420,29 @@ def load_autoprojrc
418
420
  end
419
421
  end
420
422
 
421
- # Load OS dependency information contained in our registered package
422
- # sets into the provided osdep object
423
- #
424
- # This is included in {load_package_sets}
425
- #
426
- # @return [void]
427
- def load_osdeps_from_package_sets
428
- manifest.each_package_set do |pkg_set|
429
- pkg_set.each_osdeps_file do |file|
430
- file_osdeps = pkg_set.load_osdeps(file, operating_system: os_package_resolver.operating_system)
431
- os_package_resolver.merge(file_osdeps)
432
- end
433
- end
434
- end
435
-
436
- def load_package_sets(options = Hash.new)
423
+ def load_package_sets(only_local: false,
424
+ checkout_only: true,
425
+ reconfigure: false,
426
+ keep_going: false,
427
+ mainline: nil,
428
+ reset: false,
429
+ retry_count: nil)
437
430
  if !File.file?(manifest_file_path) # empty install, just return
438
431
  return
439
432
  end
440
433
 
441
- options = validate_options options,
442
- only_local: false,
443
- checkout_only: true,
444
- silent: false, # NOTE: this is ignored, enclose call with Autoproj.silent { }
445
- reconfigure: false,
446
- ignore_errors: false,
447
- mainline: nil,
448
- reset: false,
449
- retry_count: nil
450
-
451
- Ops::Configuration.new(self).
452
- load_package_sets(only_local: options[:only_local],
453
- checkout_only: options[:checkout_only],
454
- ignore_errors: options[:ignore_errors],
455
- reset: options[:reset],
456
- retry_count: options[:retry_count])
457
-
458
- manifest.each_package_set do |pkg_set|
459
- if Gem::Version.new(pkg_set.required_autoproj_version) > Gem::Version.new(Autoproj::VERSION)
460
- raise ConfigError.new(pkg_set.source_file), "the #{pkg_set.name} package set requires autoproj v#{pkg_set.required_autoproj_version} but this is v#{Autoproj::VERSION}"
461
- end
462
- end
463
-
464
- # Loads OS package definitions once and for all
465
- load_osdeps_from_package_sets
466
-
467
- # Load the required autobuild definitions
468
- Autoproj.message("autoproj: loading ...", :bold)
469
- if !options[:reconfigure]
434
+ if !reconfigure
470
435
  Autoproj.message("run 'autoproj reconfigure' to change configuration options", :bold)
471
436
  Autoproj.message("and use 'autoproj switch-config' to change the remote source for", :bold)
472
437
  Autoproj.message("autoproj's main build configuration", :bold)
473
438
  end
474
- manifest.each_package_set do |pkg_set|
475
- pkg_set.each_autobuild_file do |path|
476
- import_autobuild_file pkg_set, path
477
- end
478
- end
479
-
480
- # Now, load the package's importer configurations (from the various
481
- # source.yml files)
482
- mainline = options[:mainline]
483
- if mainline.respond_to?(:to_str)
484
- mainline = manifest.package_set(mainline)
485
- end
486
- manifest.load_importers(mainline: mainline)
487
-
488
- # Auto-add packages that are
489
- # * present on disk
490
- # * listed in the layout part of the manifest
491
- # * but have no definition
492
- explicit = manifest.normalized_layout
493
- explicit.each do |pkg_or_set, layout_level|
494
- next if manifest.find_autobuild_package(pkg_or_set)
495
- next if manifest.has_package_set?(pkg_or_set)
496
-
497
- # This is not known. Check if we can auto-add it
498
- full_path = File.expand_path(File.join(root_dir, layout_level, pkg_or_set))
499
- next if !File.directory?(full_path)
500
-
501
- handler, _srcdir = Autoproj.package_handler_for(full_path)
502
- if handler
503
- Autoproj.message " auto-adding #{pkg_or_set} #{"in #{layout_level} " if layout_level != "/"}using the #{handler.gsub(/_package/, '')} package handler"
504
- in_package_set(manifest.main_package_set, manifest.file) do
505
- send(handler, pkg_or_set)
506
- end
507
- else
508
- Autoproj.warn "cannot auto-add #{pkg_or_set}: unknown package type"
509
- end
510
- end
511
-
512
- manifest.each_autobuild_package do |pkg|
513
- Autobuild.each_utility do |uname, _|
514
- pkg.utility(uname).enabled =
515
- config.utility_enabled_for?(uname, pkg.name)
516
- end
517
- end
518
-
519
- # And exclude any package that is not available on this particular
520
- # configuration
521
- mark_unavailable_osdeps_as_excluded
522
- end
523
-
524
- def mark_unavailable_osdeps_as_excluded
525
- os_package_resolver.all_package_names.each do |osdep_name|
526
- # If the osdep can be replaced by source packages, there's
527
- # nothing to do really. The exclusions of the source packages
528
- # will work as expected
529
- if manifest.osdeps_overrides[osdep_name] || manifest.find_autobuild_package(osdep_name)
530
- next
531
- end
532
-
533
- case os_package_resolver.availability_of(osdep_name)
534
- when OSPackageResolver::UNKNOWN_OS
535
- manifest.exclude_package(osdep_name, "this operating system is unknown to autoproj")
536
- when OSPackageResolver::WRONG_OS
537
- manifest.exclude_package(osdep_name, "there are definitions for it, but not for this operating system")
538
- when OSPackageResolver::NONEXISTENT
539
- manifest.exclude_package(osdep_name, "it is marked as unavailable for this operating system")
540
- end
541
- end
439
+ Ops::Configuration.new(self).
440
+ load_package_sets(only_local: only_local,
441
+ checkout_only: checkout_only,
442
+ keep_going: keep_going,
443
+ reset: reset,
444
+ retry_count: retry_count,
445
+ mainline: mainline)
542
446
  end
543
447
 
544
448
  def load_packages(selection = manifest.default_packages(false), options = Hash.new)
@@ -705,7 +609,7 @@ def all_os_packages(import_missing: false, parallel: config.parallel_import_leve
705
609
  _, all_os_packages =
706
610
  ops.import_packages(manifest.default_packages,
707
611
  checkout_only: true, only_local: true, reset: false,
708
- recursive: true, ignore_errors: true, parallel: parallel,
612
+ recursive: true, keep_going: true, parallel: parallel,
709
613
  retry_count: 0)
710
614
  all_os_packages
711
615
  else
@@ -761,7 +665,9 @@ def self.workspace
761
665
 
762
666
  def self.workspace=(ws)
763
667
  @workspace = ws
764
- self.root_dir = ws.root_dir
668
+ if ws
669
+ self.root_dir = ws.root_dir
670
+ end
765
671
  end
766
672
 
767
673
  def self.env