autoproj 2.0.0.rc38 → 2.0.0.rc39

Sign up to get free protection for your applications and to get access to all the features.
@@ -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