autoproj 1.7.4 → 1.7.5

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