autoproj 1.7.4 → 1.7.5

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.
@@ -1,3 +1,15 @@
1
+ = Version 1.7.5
2
+ * quickfix release
3
+ * fix osdeps_mode issue on bootstrapping
4
+ * ignore osdeps-related errors in modes
5
+ where the osdeps should not be managed
6
+ by autoproj at all.
7
+ * fix expansion of array elements in source.yml
8
+ * finally got a way to have amake work. The
9
+ RubyGem packaging had replaced the executable
10
+ by a RubyGem wrapper, assuming it was a ruby
11
+ file (but it was a shell script)
12
+
1
13
  = Version 1.7.4
2
14
  * add amake to the gem (forgot it in 1.7.3)
3
15
  * fix some corner-cases in osdeps handling
@@ -2,7 +2,6 @@ History.txt
2
2
  Manifest.txt
3
3
  README.txt
4
4
  Rakefile
5
- bin/amake
6
5
  bin/autolocate
7
6
  bin/autoproj
8
7
  bin/autoproj_bootstrap
@@ -644,14 +644,18 @@ fi
644
644
  gems.delete_if do |name, version|
645
645
  version_requirements = Gem::Requirement.new(version || '>= 0')
646
646
  installed = Gem.source_index.find_name(name, version_requirements)
647
- if (!installed.empty? && !version) && Autobuild.do_update
647
+ if !installed.empty? && Autobuild.do_update
648
648
  # Look if we can update the package ...
649
649
  dep = Gem::Dependency.new(name, version_requirements)
650
- available = gem_fetcher.find_matching(dep, false, true, OSDependencies.gem_with_prerelease)
650
+ available = gem_fetcher.find_matching(dep, true, true, OSDependencies.gem_with_prerelease)
651
651
  installed_version = installed.map(&:version).max
652
652
  available_version = available.map { |(name, v), source| v }.max
653
653
  if !available_version
654
- raise ConfigError.new, "cannot find any gem with the name '#{name}'"
654
+ if version
655
+ raise ConfigError.new, "cannot find any gem with the name '#{name}' and version #{version}"
656
+ else
657
+ raise ConfigError.new, "cannot find any gem with the name '#{name}'"
658
+ end
655
659
  end
656
660
  needs_update = (available_version > installed_version)
657
661
  !needs_update
@@ -833,6 +837,14 @@ with the corresponding option (--all, --ruby, --os or --none).
833
837
  nil
834
838
  end
835
839
 
840
+ def installs_os_packages?
841
+ osdeps_mode == HANDLE_ALL || osdeps_mode == HANDLE_OS
842
+ end
843
+
844
+ def installs_ruby_packages?
845
+ osdeps_mode == HANDLE_ALL || osdeps_mode == HANDLE_RUBY
846
+ end
847
+
836
848
  def osdeps_interaction(osdeps, os_packages, shell_script, silent)
837
849
  if !OSDependencies.supported_operating_system?
838
850
  if silent
@@ -100,6 +100,13 @@ module Autobuild
100
100
  return
101
101
  end
102
102
 
103
+ @os_packages ||= Set.new
104
+ @ignored_os_dependencies ||= Set.new
105
+
106
+ if @os_packages.include?(name) || @ignored_os_dependencies.include?(name)
107
+ return
108
+ end
109
+
103
110
  explicit_selection = Autoproj.manifest.explicitly_selected_package?(name)
104
111
  osdeps_availability = Autoproj.osdeps.availability_of(name)
105
112
  available_as_source = Autobuild::Package[name]
@@ -107,7 +114,6 @@ module Autobuild
107
114
  # Prefer OS packages to source packages
108
115
  if !explicit_selection
109
116
  if osdeps_availability == Autoproj::OSDependencies::AVAILABLE
110
- @os_packages ||= Set.new
111
117
  @os_packages << name
112
118
  return
113
119
  end
@@ -118,16 +124,27 @@ module Autobuild
118
124
  # an external package. However, if it is also available as a
119
125
  # source package, prompt the user
120
126
  if !available_as_source || explicit_osdeps_selection(name)
121
- @os_packages ||= Set.new
122
127
  @os_packages << name
123
128
  return
124
129
  end
125
130
  end
126
131
 
132
+
127
133
  if !available_as_source
128
- # Call osdeps to get a proper error message
129
- osdeps, gems = Autoproj.osdeps.partition_packages([name].to_set, name => [self.name])
130
- Autoproj.osdeps.resolve_os_dependencies(osdeps)
134
+ begin
135
+ # Call osdeps to get a proper error message
136
+ osdeps, gems = Autoproj.osdeps.partition_packages([name].to_set, name => [self.name])
137
+ Autoproj.osdeps.resolve_os_dependencies(osdeps)
138
+ rescue ConfigError => e
139
+ if osdeps_availability != Autoproj::OSDependencies::NO_PACKAGE && !Autoproj.osdeps.installs_os_packages?
140
+ Autoproj.warn "in #{File.join(srcdir, 'manifest.xml')}: #{e.message}"
141
+ Autoproj.warn "this osdeps dependency is simply ignored as you asked autoproj to not install osdeps packages"
142
+ @ignored_os_dependencies << name
143
+ # We are not asked to install OS packages, just ignore
144
+ return
145
+ end
146
+ raise
147
+ end
131
148
  # Should never reach further than that
132
149
  end
133
150
  end
@@ -210,7 +227,7 @@ module Autoproj
210
227
 
211
228
  def self.define(package_type, spec, &block)
212
229
  package = Autobuild.send(package_type, spec)
213
- Autoproj.manifest.register_package package, block, *current_file
230
+ Autoproj.manifest.register_package(package, block, *current_file)
214
231
  package
215
232
  end
216
233
 
@@ -274,6 +291,19 @@ def ignore(*paths)
274
291
  end
275
292
  end
276
293
 
294
+ # Adds a new setup block to an existing package
295
+ def setup_package(package_name, &block)
296
+ if !block
297
+ raise ConfigError.new, "you must give a block to #setup_package"
298
+ end
299
+
300
+ package_definition = Autoproj.manifest.package(package_name)
301
+ if !package_definition
302
+ raise ConfigError.new, "#{package_name} is not a known package"
303
+ end
304
+ package_definition.add_setup_block(block)
305
+ end
306
+
277
307
  # Common setup for packages
278
308
  def package_common(package_type, spec, &block) # :nodoc:
279
309
  package_name = Autoproj.package_name_from_options(spec)
@@ -282,6 +312,7 @@ def package_common(package_type, spec, &block) # :nodoc:
282
312
  current_file = Autoproj.current_file[1]
283
313
  old_file = Autoproj.manifest.definition_file(package_name)
284
314
  Autoproj.warn "#{package_name} from #{current_file} is overriden by the definition in #{old_file}"
315
+
285
316
  return
286
317
  end
287
318
 
@@ -391,7 +422,7 @@ module Autoproj::RubyPackage
391
422
  end
392
423
 
393
424
  # The Rake task that is used to set up the package. Defaults to "default".
394
- # Set to nil to disable documentation generation
425
+ # Set to nil to disable setup altogether
395
426
  attr_accessor :rake_setup_task
396
427
  # The Rake task that is used to generate documentation. Defaults to "doc".
397
428
  # Set to nil to disable documentation generation
@@ -109,13 +109,20 @@ module Autoproj
109
109
  if osdeps_forced_mode
110
110
  Autoproj.osdeps.osdeps_mode = osdeps_forced_mode
111
111
  end
112
+
113
+ # Define the option NOW, as update_os_dependencies? needs to know in
114
+ # what mode we are.
115
+ #
116
+ # It might lead to having multiple operating system detections, but
117
+ # that's the best I can do for now.
118
+ Autoproj::OSDependencies.define_osdeps_mode_option
119
+ Autoproj.osdeps.osdeps_mode
120
+
112
121
  # Do that AFTER we have properly setup Autoproj.osdeps as to avoid
113
122
  # unnecessarily redetecting the operating system
114
123
  if update_os_dependencies? || osdeps?
115
124
  Autoproj.reset_option('operating_system')
116
125
  end
117
- Autoproj::OSDependencies.define_osdeps_mode_option
118
- Autoproj.osdeps.osdeps_mode
119
126
  end
120
127
 
121
128
  def self.update_myself
@@ -287,8 +294,8 @@ module Autoproj
287
294
  # Now call the blocks that the user defined in the autobuild files. We do it
288
295
  # now so that the various package directories are properly setup
289
296
  manifest.packages.each_value do |pkg|
290
- if pkg.user_block
291
- pkg.user_block[pkg.autobuild]
297
+ pkg.user_blocks.each do |blk|
298
+ blk[pkg.autobuild]
292
299
  end
293
300
  end
294
301
 
@@ -208,6 +208,8 @@ module Autoproj
208
208
  value[name] = expand(definition, definitions)
209
209
  end
210
210
  value
211
+ elsif value.respond_to?(:to_ary)
212
+ value.map { |val| expand(val, definitions) }
211
213
  else
212
214
  value = single_expansion(value, definitions)
213
215
  if contains_expansion?(value)
@@ -688,7 +690,23 @@ module Autoproj
688
690
  # DEPRECATED. For backward-compatibility only.
689
691
  LocalSource = LocalPackageSet
690
692
 
691
- PackageDefinition = Struct.new :autobuild, :user_block, :package_set, :file
693
+ # Class used to store information about a package definition
694
+ class PackageDefinition
695
+ attr_reader :autobuild
696
+ attr_reader :user_blocks
697
+ attr_reader :package_set
698
+ attr_reader :file
699
+
700
+ def initialize(autobuild, package_set, file)
701
+ @autobuild, @package_set, @file =
702
+ autobuild, package_set, file
703
+ @user_blocks = []
704
+ end
705
+
706
+ def add_setup_block(block)
707
+ user_blocks << block
708
+ end
709
+ end
692
710
 
693
711
  # The Manifest class represents the information included in the main
694
712
  # manifest file, and allows to manipulate it
@@ -1027,7 +1045,11 @@ module Autoproj
1027
1045
 
1028
1046
  # Register a new package
1029
1047
  def register_package(package, block, source, file)
1030
- @packages[package.name] = PackageDefinition.new(package, block, source, file)
1048
+ pkg = PackageDefinition.new(package, source, file)
1049
+ if block
1050
+ pkg.add_setup_block(block)
1051
+ end
1052
+ @packages[package.name] = pkg
1031
1053
  end
1032
1054
 
1033
1055
  def definition_source(package_name)
@@ -545,14 +545,18 @@ fi
545
545
  gems.delete_if do |name, version|
546
546
  version_requirements = Gem::Requirement.new(version || '>= 0')
547
547
  installed = Gem.source_index.find_name(name, version_requirements)
548
- if (!installed.empty? && !version) && Autobuild.do_update
548
+ if !installed.empty? && Autobuild.do_update
549
549
  # Look if we can update the package ...
550
550
  dep = Gem::Dependency.new(name, version_requirements)
551
- available = gem_fetcher.find_matching(dep, false, true, OSDependencies.gem_with_prerelease)
551
+ available = gem_fetcher.find_matching(dep, true, true, OSDependencies.gem_with_prerelease)
552
552
  installed_version = installed.map(&:version).max
553
553
  available_version = available.map { |(name, v), source| v }.max
554
554
  if !available_version
555
- raise ConfigError.new, "cannot find any gem with the name '#{name}'"
555
+ if version
556
+ raise ConfigError.new, "cannot find any gem with the name '#{name}' and version #{version}"
557
+ else
558
+ raise ConfigError.new, "cannot find any gem with the name '#{name}'"
559
+ end
556
560
  end
557
561
  needs_update = (available_version > installed_version)
558
562
  !needs_update
@@ -734,6 +738,14 @@ with the corresponding option (--all, --ruby, --os or --none).
734
738
  nil
735
739
  end
736
740
 
741
+ def installs_os_packages?
742
+ osdeps_mode == HANDLE_ALL || osdeps_mode == HANDLE_OS
743
+ end
744
+
745
+ def installs_ruby_packages?
746
+ osdeps_mode == HANDLE_ALL || osdeps_mode == HANDLE_RUBY
747
+ end
748
+
737
749
  def osdeps_interaction(osdeps, os_packages, shell_script, silent)
738
750
  if !OSDependencies.supported_operating_system?
739
751
  if silent
@@ -1,3 +1,3 @@
1
1
  module Autoproj
2
- VERSION = "1.7.4"
2
+ VERSION = "1.7.5"
3
3
  end
@@ -10,3 +10,10 @@ function acd {
10
10
  fi
11
11
  }
12
12
 
13
+ function amake {
14
+ if test -z "$@"; then
15
+ autoproj fast-build .
16
+ else
17
+ autoproj fast-build "$@"
18
+ fi
19
+ }
@@ -10,3 +10,11 @@ function acd {
10
10
  fi
11
11
  }
12
12
 
13
+ function amake {
14
+ if test -z "$@"; then
15
+ autoproj fast-build .
16
+ else
17
+ autoproj fast-build "$@"
18
+ fi
19
+ }
20
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autoproj
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 7
9
- - 4
10
- version: 1.7.4
9
+ - 5
10
+ version: 1.7.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sylvain Joyeux
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-01 00:00:00 +01:00
18
+ date: 2011-02-02 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -174,7 +174,6 @@ description: |-
174
174
  email:
175
175
  - sylvain.joyeux@dfki.de
176
176
  executables:
177
- - amake
178
177
  - autolocate
179
178
  - autoproj
180
179
  - autoproj_bootstrap
@@ -191,7 +190,6 @@ files:
191
190
  - Manifest.txt
192
191
  - README.txt
193
192
  - Rakefile
194
- - bin/amake
195
193
  - bin/autolocate
196
194
  - bin/autoproj
197
195
  - bin/autoproj_bootstrap
data/bin/amake DELETED
@@ -1,9 +0,0 @@
1
- #! /bin/sh
2
-
3
- if test -z "$@"; then
4
- autoproj fast-build .
5
- else
6
- autoproj fast-build "$@"
7
- fi
8
-
9
-