autoproj 1.7.21.b2 → 1.7.21.b3

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ Utilrb::Rake.hoe do
7
7
  Hoe.spec 'autoproj' do
8
8
  self.developer "Sylvain Joyeux", "sylvain.joyeux@dfki.de"
9
9
 
10
- self.url = ["http://rock-robotics.org/autoproj",
10
+ self.url = ["http://rock-robotics.org/documentation/autoproj",
11
11
  "git://github.com/doudou/autoproj.git"]
12
12
  self.rubyforge_name = 'autobuild'
13
13
  self.summary = 'Easy installation and management of software packages'
@@ -93,7 +93,7 @@ EOTEXT
93
93
  root_dir = Autoproj.root_dir
94
94
  selected_packages.map! do |name|
95
95
  if File.directory?(name)
96
- File.expand_path(name)
96
+ File.expand_path(name) + File::SEPARATOR
97
97
  else
98
98
  name
99
99
  end
@@ -188,6 +188,9 @@ fi
188
188
  attr_writer :needs_locking
189
189
  def needs_locking?; !!@needs_locking end
190
190
 
191
+ attr_reader :auto_install_cmd
192
+ attr_reader :user_install_cmd
193
+
191
194
  def initialize(names, needs_locking, user_install_cmd, auto_install_cmd)
192
195
  super(names)
193
196
  @needs_locking, @user_install_cmd, @auto_install_cmd =
@@ -205,7 +208,7 @@ fi
205
208
  (auto_install_cmd % [os_packages.join("' '")])
206
209
  end
207
210
 
208
- def osdeps_interaction(osdeps, os_packages, shell_script)
211
+ def osdeps_interaction(os_packages, shell_script)
209
212
  if OSDependencies.force_osdeps
210
213
  return true
211
214
  elsif enabled?
@@ -242,11 +245,11 @@ fi
242
245
  def install(packages)
243
246
  handled_os = OSDependencies.supported_operating_system?
244
247
  if handled_os
245
- shell_script = generate_auto_os_script(os_packages)
246
- user_shell_script = generate_user_os_script(os_packages)
248
+ shell_script = generate_auto_os_script(packages)
249
+ user_shell_script = generate_user_os_script(packages)
247
250
  end
248
- if osdeps_interaction(osdeps, os_packages, user_shell_script)
249
- Autoproj.message " installing OS packages: #{os_packages.sort.join(", ")}"
251
+ if osdeps_interaction(packages, user_shell_script)
252
+ Autoproj.message " installing OS packages: #{packages.sort.join(", ")}"
250
253
 
251
254
  if Autoproj.verbose
252
255
  Autoproj.message "Generating installation script for non-ruby OS dependencies"
@@ -331,7 +334,7 @@ fi
331
334
 
332
335
  def gem_fetcher
333
336
  if !@gem_fetcher
334
- Autoproj.message "looking for RubyGems updates"
337
+ Autoproj.message " looking for RubyGems updates"
335
338
  @gem_fetcher = Gem::SpecFetcher.fetcher
336
339
  end
337
340
  @gem_fetcher
@@ -372,7 +375,7 @@ fi
372
375
  end
373
376
 
374
377
  if gems_interaction(gems, cmdlines)
375
- Autoproj.message "installing/updating RubyGems dependencies: #{gems.map { |g| g.join(" ") }.sort.join(", ")}"
378
+ Autoproj.message " installing/updating RubyGems dependencies: #{gems.map { |g| g.join(" ") }.sort.join(", ")}"
376
379
 
377
380
  cmdlines.each do |c|
378
381
  Autobuild::Subprocess.run 'autoproj', 'osdeps', *c
@@ -528,6 +531,7 @@ fi
528
531
  self.alias(ruby_version_keyword, "ruby")
529
532
  end
530
533
  self.suffixes << ruby_version_keyword
534
+ autodetect_ruby
531
535
 
532
536
  AUTOPROJ_OSDEPS = File.join(File.expand_path(File.dirname(__FILE__)), 'default.osdeps')
533
537
  def self.load_default
@@ -639,17 +643,20 @@ fi
639
643
  end
640
644
 
641
645
  # Perform some sanity checks on the given osdeps definitions
642
- def self.verify_definitions(hash)
646
+ def self.verify_definitions(hash, path = [])
643
647
  hash.each do |key, value|
644
- if !key.kind_of?(String)
645
- raise ArgumentError, "invalid osdeps definition: found an #{key.class}. Don't forget to put quotes around numbers"
648
+ if value && !key.kind_of?(String)
649
+ raise ArgumentError, "invalid osdeps definition: found an #{key.class} as a key in #{path.join("/")}. Don't forget to put quotes around numbers"
650
+ elsif !value && (key.kind_of?(Hash) || key.kind_of?(Array))
651
+ verify_definitions(key)
646
652
  end
647
653
  next if !value
654
+
648
655
  if value.kind_of?(Array) || value.kind_of?(Hash)
649
- verify_definitions(value)
656
+ verify_definitions(value, (path + [key]))
650
657
  else
651
658
  if !value.kind_of?(String)
652
- raise ArgumentError, "invalid osdeps definition: found an #{value.class}. Don't forget to put quotes around numbers"
659
+ raise ArgumentError, "invalid osdeps definition: found an #{value.class} as a value in #{path.join("/")}. Don't forget to put quotes around numbers"
653
660
  end
654
661
  end
655
662
  end
@@ -799,6 +806,10 @@ fi
799
806
  # name and version. The package list might be empty even if status ==
800
807
  # FOUND_PACKAGES, for instance if the ignore keyword is used.
801
808
  def resolve_package(name)
809
+ while OSDependencies.aliases.has_key?(name)
810
+ name = OSDependencies.aliases[name]
811
+ end
812
+
802
813
  os_names, os_versions = OSDependencies.operating_system
803
814
 
804
815
  dep_def = definitions[name]
@@ -1724,7 +1735,7 @@ archive:
1724
1735
  - tar
1725
1736
  - unzip
1726
1737
  lsb_release:
1727
- arch:
1738
+ arch: ignore
1728
1739
  gentoo: sys-apps/lsb-release
1729
1740
  debian,ubuntu: lsb-release
1730
1741
  ruby18:
@@ -1769,8 +1780,8 @@ cmake:
1769
1780
  gentoo: dev-util/cmake
1770
1781
  debian,ubuntu: cmake
1771
1782
  build-essential:
1772
- arch:
1773
- gentoo:
1783
+ arch: ignore
1784
+ gentoo: ignore
1774
1785
  debian,ubuntu: build-essential
1775
1786
  libxslt:
1776
1787
  arch: libxslt
@@ -1834,7 +1845,7 @@ end
1834
1845
  # run autoproj bootstrap manually.
1835
1846
  if ARGV.first != "localdev"
1836
1847
  if ARGV.first == "dev"
1837
- Autoproj::OSDependencies.gem_with_prerelease = true
1848
+ Autoproj::PackageManagers::GemManager.with_prerelease = true
1838
1849
  ARGV.shift
1839
1850
  end
1840
1851
  begin
@@ -1844,7 +1855,7 @@ if ARGV.first != "localdev"
1844
1855
  STDERR.puts "failed: #{e.message}"
1845
1856
  exit(1)
1846
1857
  end
1847
- Autoproj::OSDependencies.gem_with_prerelease = false
1858
+ Autoproj::PackageManagers::GemManager.with_prerelease = false
1848
1859
 
1849
1860
  if !system('autoproj', 'bootstrap', *ARGV)
1850
1861
  STDERR.puts "ERROR: failed to run autoproj bootstrap #{ARGV.join(", ")}"
@@ -1,10 +1,13 @@
1
1
  require 'highline'
2
- require 'utilrb/module/attr_predicate'
3
2
  module Autoproj
4
3
  class << self
5
4
  attr_accessor :verbose
6
5
  attr_reader :console
7
- attr_predicate :silent?, true
6
+
7
+ def silent?
8
+ !!@silent
9
+ end
10
+ attr_writer :silent=
8
11
  end
9
12
  @silent = false
10
13
  @verbose = false
@@ -36,8 +36,8 @@ ruby19:
36
36
 
37
37
  build-essential:
38
38
  debian,ubuntu: build-essential
39
- gentoo:
40
- arch:
39
+ gentoo: ignore
40
+ arch: ignore
41
41
 
42
42
  libxml2:
43
43
  debian,ubuntu: libxml2-dev
@@ -82,7 +82,7 @@ autotools:
82
82
  lsb_release:
83
83
  debian,ubuntu: lsb-release
84
84
  gentoo: sys-apps/lsb-release
85
- arch:
85
+ arch: ignore
86
86
 
87
87
  archive:
88
88
  debian,ubuntu: [tar, unzip]
@@ -2098,7 +2098,7 @@ module Autoproj
2098
2098
  match_pkg_name = Regexp.new(Regexp.quote(sel))
2099
2099
  all_packages.each do |pkg_name|
2100
2100
  pkg = Autobuild::Package[pkg_name]
2101
- if pkg_name =~ match_pkg_name || sel =~ Regexp.new("^#{Regexp.quote(pkg.srcdir)}") || pkg.srcdir =~ Regexp.new("^#{Regexp.quote(sel)}")
2101
+ if pkg_name =~ match_pkg_name || "#{sel}/" =~ Regexp.new("^#{Regexp.quote(pkg.srcdir)}/") || pkg.srcdir =~ Regexp.new("^#{Regexp.quote(sel)}")
2102
2102
  # Check-out packages that are not in the manifest only
2103
2103
  # if they are explicitely selected
2104
2104
  if !all_layout_packages.include?(pkg.name)
@@ -89,6 +89,9 @@ fi
89
89
  attr_writer :needs_locking
90
90
  def needs_locking?; !!@needs_locking end
91
91
 
92
+ attr_reader :auto_install_cmd
93
+ attr_reader :user_install_cmd
94
+
92
95
  def initialize(names, needs_locking, user_install_cmd, auto_install_cmd)
93
96
  super(names)
94
97
  @needs_locking, @user_install_cmd, @auto_install_cmd =
@@ -106,7 +109,7 @@ fi
106
109
  (auto_install_cmd % [os_packages.join("' '")])
107
110
  end
108
111
 
109
- def osdeps_interaction(osdeps, os_packages, shell_script)
112
+ def osdeps_interaction(os_packages, shell_script)
110
113
  if OSDependencies.force_osdeps
111
114
  return true
112
115
  elsif enabled?
@@ -143,11 +146,11 @@ fi
143
146
  def install(packages)
144
147
  handled_os = OSDependencies.supported_operating_system?
145
148
  if handled_os
146
- shell_script = generate_auto_os_script(os_packages)
147
- user_shell_script = generate_user_os_script(os_packages)
149
+ shell_script = generate_auto_os_script(packages)
150
+ user_shell_script = generate_user_os_script(packages)
148
151
  end
149
- if osdeps_interaction(osdeps, os_packages, user_shell_script)
150
- Autoproj.message " installing OS packages: #{os_packages.sort.join(", ")}"
152
+ if osdeps_interaction(packages, user_shell_script)
153
+ Autoproj.message " installing OS packages: #{packages.sort.join(", ")}"
151
154
 
152
155
  if Autoproj.verbose
153
156
  Autoproj.message "Generating installation script for non-ruby OS dependencies"
@@ -232,7 +235,7 @@ fi
232
235
 
233
236
  def gem_fetcher
234
237
  if !@gem_fetcher
235
- Autoproj.message "looking for RubyGems updates"
238
+ Autoproj.message " looking for RubyGems updates"
236
239
  @gem_fetcher = Gem::SpecFetcher.fetcher
237
240
  end
238
241
  @gem_fetcher
@@ -273,7 +276,7 @@ fi
273
276
  end
274
277
 
275
278
  if gems_interaction(gems, cmdlines)
276
- Autoproj.message "installing/updating RubyGems dependencies: #{gems.map { |g| g.join(" ") }.sort.join(", ")}"
279
+ Autoproj.message " installing/updating RubyGems dependencies: #{gems.map { |g| g.join(" ") }.sort.join(", ")}"
277
280
 
278
281
  cmdlines.each do |c|
279
282
  Autobuild::Subprocess.run 'autoproj', 'osdeps', *c
@@ -429,6 +432,7 @@ fi
429
432
  self.alias(ruby_version_keyword, "ruby")
430
433
  end
431
434
  self.suffixes << ruby_version_keyword
435
+ autodetect_ruby
432
436
 
433
437
  AUTOPROJ_OSDEPS = File.join(File.expand_path(File.dirname(__FILE__)), 'default.osdeps')
434
438
  def self.load_default
@@ -540,17 +544,20 @@ fi
540
544
  end
541
545
 
542
546
  # Perform some sanity checks on the given osdeps definitions
543
- def self.verify_definitions(hash)
547
+ def self.verify_definitions(hash, path = [])
544
548
  hash.each do |key, value|
545
- if !key.kind_of?(String)
546
- raise ArgumentError, "invalid osdeps definition: found an #{key.class}. Don't forget to put quotes around numbers"
549
+ if value && !key.kind_of?(String)
550
+ raise ArgumentError, "invalid osdeps definition: found an #{key.class} as a key in #{path.join("/")}. Don't forget to put quotes around numbers"
551
+ elsif !value && (key.kind_of?(Hash) || key.kind_of?(Array))
552
+ verify_definitions(key)
547
553
  end
548
554
  next if !value
555
+
549
556
  if value.kind_of?(Array) || value.kind_of?(Hash)
550
- verify_definitions(value)
557
+ verify_definitions(value, (path + [key]))
551
558
  else
552
559
  if !value.kind_of?(String)
553
- raise ArgumentError, "invalid osdeps definition: found an #{value.class}. Don't forget to put quotes around numbers"
560
+ raise ArgumentError, "invalid osdeps definition: found an #{value.class} as a value in #{path.join("/")}. Don't forget to put quotes around numbers"
554
561
  end
555
562
  end
556
563
  end
@@ -700,6 +707,10 @@ fi
700
707
  # name and version. The package list might be empty even if status ==
701
708
  # FOUND_PACKAGES, for instance if the ignore keyword is used.
702
709
  def resolve_package(name)
710
+ while OSDependencies.aliases.has_key?(name)
711
+ name = OSDependencies.aliases[name]
712
+ end
713
+
703
714
  os_names, os_versions = OSDependencies.operating_system
704
715
 
705
716
  dep_def = definitions[name]
@@ -1,3 +1,3 @@
1
1
  module Autoproj
2
- VERSION = "1.7.21.b2"
2
+ VERSION = "1.7.21.b3"
3
3
  end
@@ -50,6 +50,20 @@ class TC_OSDependencies < Test::Unit::TestCase
50
50
  assert_equal expected, osdeps.resolve_package('pkg')
51
51
  end
52
52
 
53
+ def test_resolve_package_applies_aliases
54
+ data = { 'pkg' => {
55
+ 'test' => {
56
+ 'v1.0' => 'pkg1.0',
57
+ 'v1.1' => 'pkg1.1',
58
+ 'default' => 'pkgdef'
59
+ }
60
+ } }
61
+ Autoproj::OSDependencies.alias('pkg', 'bla')
62
+ osdeps = create_osdep(data)
63
+ expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg1.0']]]
64
+ assert_equal expected, osdeps.resolve_package('bla')
65
+ end
66
+
53
67
  def test_resolve_specific_os_name_and_version_single_package
54
68
  data = { 'pkg' => {
55
69
  'test' => {
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autoproj
3
3
  version: !ruby/object:Gem::Version
4
- hash: 139
4
+ hash: 137
5
5
  prerelease: 7
6
6
  segments:
7
7
  - 1
8
8
  - 7
9
9
  - 21
10
10
  - b
11
- - 2
12
- version: 1.7.21.b2
11
+ - 3
12
+ version: 1.7.21.b3
13
13
  platform: ruby
14
14
  authors:
15
15
  - Sylvain Joyeux
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2012-03-11 00:00:00 Z
20
+ date: 2012-03-30 00:00:00 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: autobuild
@@ -169,7 +169,7 @@ files:
169
169
  - test/package_managers/test_gem.rb
170
170
  - test/test_package_manifest.rb
171
171
  - .gemtest
172
- homepage: http://rock-robotics.org/autoproj
172
+ homepage: http://rock-robotics.org/documentation/autoproj
173
173
  licenses: []
174
174
 
175
175
  post_install_message: