autoproj 1.7.14 → 1.7.15.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,22 @@
1
+ = Version 1.7.15
2
+ * remove dependency on nokogiri. This is the first step in an effort to make
3
+ autoproj as straightforward to bootstrap as possible.
4
+ * gracefully handle multiple autoproj instances trying to access the OS
5
+ packaging system concurrently. A message is now issued that one has to wait
6
+ for the other to finish. This is critical for build servers.
7
+ * allow conditional loading of osdeps file. The system works by adding suffixes
8
+ to Autoproj::OSDependencies.suffixes which tune what files to load. As an
9
+ example, autoproj's handling of Ruby adds either the ruby18 or ruby19 suffix,
10
+ which leads to either loading
11
+
12
+ file.osdeps-ruby18
13
+
14
+ or
15
+
16
+ file.osdeps-ruby19
17
+
18
+ after a file.osdeps "normal" file gets loaded.
19
+
1
20
  = Version 1.7.14
2
21
  * fix support for local package sets, i.e. package sets that are saved in
3
22
  autoproj/directory_name and are part of the main configuration VCS.
data/Rakefile CHANGED
@@ -16,14 +16,8 @@ Utilrb::Rake.hoe do
16
16
 
17
17
  extra_deps <<
18
18
  ['autobuild', '>= 1.5.33'] <<
19
- ['rmail', '>= 1.0.0'] <<
20
19
  ['utilrb', '>= 1.3.3'] <<
21
- ['nokogiri', '>= 1.3.3'] <<
22
20
  ['highline', '>= 1.5.0']
23
-
24
- extra_dev_deps <<
25
- ['webgen', '>= 0.5.9'] <<
26
- ['rdoc', '>= 2.4.0']
27
21
  end
28
22
  end
29
23
  end
data/bin/amake CHANGED
@@ -49,6 +49,7 @@ if remaining.grep(/^-/).size == remaining.size && !build_all
49
49
  end
50
50
 
51
51
  remaining.unshift mode
52
+ ORIGINAL_ARGV = ARGV.dup # This is used in case autoproj needs to update itself
52
53
  ARGV.clear
53
54
  ARGV.concat(remaining)
54
55
  load File.expand_path('autoproj', File.dirname(__FILE__))
data/bin/aup CHANGED
@@ -41,6 +41,7 @@ if remaining.grep(/^-/).size == remaining.size && !build_all
41
41
  end
42
42
  remaining.unshift 'update'
43
43
 
44
+ ORIGINAL_ARGV = ARGV.dup # This is used in case autoproj needs to update itself
44
45
  ARGV.clear
45
46
  ARGV.concat(remaining)
46
47
  load File.expand_path('autoproj', File.dirname(__FILE__))
@@ -100,16 +100,41 @@ end
100
100
  require 'tempfile'
101
101
  module Autoproj
102
102
  class OSDependencies
103
+ class << self
104
+ # When requested to load a file called X.Y, the osdeps code will
105
+ # also look for files called X-suffix.Y, where 'suffix' is an
106
+ # element in +osdeps_suffixes+
107
+ #
108
+ # A usage of this functionality is to make loading conditional to
109
+ # the available version of certain tools, namely Ruby. Autoproj for
110
+ # instance adds ruby18 when started on Ruby 1.8 and ruby19 when
111
+ # started on Ruby 1.9
112
+ attr_reader :suffixes
113
+ end
114
+ @suffixes = []
115
+
103
116
  def self.load(file)
104
- file = File.expand_path(file)
105
- begin
106
- data = YAML.load(File.read(file)) || Hash.new
107
- verify_definitions(data)
108
- rescue ArgumentError => e
109
- raise ConfigError.new, "error in #{file}: #{e.message}"
110
- end
117
+ if !File.file?(file)
118
+ raise ArgumentError, "no such file or directory #{file}"
119
+ end
120
+
121
+ candidates = [file]
122
+ candidates.concat(suffixes.map { |s| "#{file}-#{s}" })
123
+
124
+ result = OSDependencies.new
125
+ candidates.each do |file|
126
+ next if !File.file?(file)
127
+ file = File.expand_path(file)
128
+ begin
129
+ data = YAML.load(File.read(file)) || Hash.new
130
+ verify_definitions(data)
131
+ rescue ArgumentError => e
132
+ raise ConfigError.new, "error in #{file}: #{e.message}", e.backtrace
133
+ end
111
134
 
112
- OSDependencies.new(data, file)
135
+ result.merge(OSDependencies.new(data, file))
136
+ end
137
+ result
113
138
  end
114
139
 
115
140
  class << self
@@ -128,13 +153,16 @@ module Autoproj
128
153
  @aliases[new_name] = old_name
129
154
  end
130
155
 
156
+ def self.ruby_version_keyword
157
+ if RUBY_VERSION < "1.9.0" then "ruby18"
158
+ else "ruby19"
159
+ end
160
+ end
161
+
131
162
  def self.autodetect_ruby
132
- ruby_package =
133
- if RUBY_VERSION < "1.9.0" then "ruby18"
134
- else "ruby19"
135
- end
136
- self.alias(ruby_package, "ruby")
163
+ self.alias(ruby_version_keyword, "ruby")
137
164
  end
165
+ self.suffixes << ruby_version_keyword
138
166
 
139
167
  AUTOPROJ_OSDEPS = File.join(File.expand_path(File.dirname(__FILE__)), 'default.osdeps')
140
168
  def self.load_default
@@ -1030,12 +1058,23 @@ So, what do you want ? (all, ruby, os or none)
1030
1058
  Autoproj.progress shell_script
1031
1059
  end
1032
1060
 
1033
- Tempfile.open('osdeps_sh') do |io|
1034
- io.puts "#! /bin/bash"
1035
- io.puts GAIN_ROOT_ACCESS
1036
- io.write shell_script
1037
- io.flush
1038
- Autobuild::Subprocess.run 'autoproj', 'osdeps', '/bin/bash', io.path
1061
+ File.open('/tmp/autoproj_osdeps_lock', 'w') do |lock_io|
1062
+ begin
1063
+ while !lock_io.flock(File::LOCK_EX | File::LOCK_NB)
1064
+ Autoproj.progress " waiting for other autoproj instances to finish their osdeps installation"
1065
+ sleep 5
1066
+ end
1067
+
1068
+ Tempfile.open('osdeps_sh') do |io|
1069
+ io.puts "#! /bin/bash"
1070
+ io.puts GAIN_ROOT_ACCESS
1071
+ io.write shell_script
1072
+ io.flush
1073
+ Autobuild::Subprocess.run 'autoproj', 'osdeps', '/bin/bash', io.path
1074
+ end
1075
+ ensure
1076
+ lock_io.flock(File::LOCK_UN)
1077
+ end
1039
1078
  end
1040
1079
  did_something = true
1041
1080
  end
@@ -1588,7 +1627,7 @@ rescue Autoproj::ConfigError => e
1588
1627
  end
1589
1628
 
1590
1629
  # Now try to find out the name of the gem binary
1591
- PACKAGES = %w{libxml2 libxslt zlib build-essential lsb_release}
1630
+ PACKAGES = %w{lsb_release}
1592
1631
 
1593
1632
  ENV['RUBYOPT'] = "-rubygems"
1594
1633
  require 'rubygems'
@@ -165,7 +165,11 @@ module Autoproj
165
165
  ENV['AUTOPROJ_RESTARTING'] = '1'
166
166
  require 'rbconfig'
167
167
  ruby = RbConfig::CONFIG['RUBY_INSTALL_NAME']
168
- exec(ruby, $0, *ARGV)
168
+ if defined?(ORIGINAL_ARGV)
169
+ exec(ruby, $0, *ORIGINAL_ARGV)
170
+ else
171
+ exec(ruby, $0, *ARGV)
172
+ end
169
173
  end
170
174
  end
171
175
 
@@ -484,14 +488,10 @@ module Autoproj
484
488
  if selected_packages.empty?
485
489
  return manifest.default_packages
486
490
  end
487
- if selected_packages.empty? # no packages, terminate
488
- Autoproj.progress
489
- Autoproj.progress("autoproj: no packages defined", :red)
490
- exit 0
491
- end
492
491
  selected_packages = selected_packages.to_set
493
492
 
494
- selected_packages, nonresolved = manifest.expand_package_selection(selected_packages)
493
+ selected_packages, nonresolved = manifest.
494
+ expand_package_selection(selected_packages)
495
495
 
496
496
  # Try to auto-add stuff if nonresolved
497
497
  nonresolved.delete_if do |sel|
@@ -1,7 +1,7 @@
1
1
  require 'yaml'
2
2
  require 'utilrb/kernel/options'
3
- require 'nokogiri'
4
3
  require 'set'
4
+ require 'rexml/document'
5
5
 
6
6
  module Autoproj
7
7
  @build_system_dependencies = Set.new
@@ -1631,6 +1631,24 @@ module Autoproj
1631
1631
  result
1632
1632
  end
1633
1633
 
1634
+ # Resolves all the source-based dependencies of this package (excluding
1635
+ # the OS dependencies). The result is returned as a set of package
1636
+ # names.
1637
+ def resolve_packages_dependencies(*root_names)
1638
+ result = Set.new
1639
+ queue = root_names.dup
1640
+ while pkg_name = queue.shift
1641
+ next if result.include?(pkg_name)
1642
+ result << pkg_name
1643
+
1644
+ pkg = Autobuild::Package[pkg_name]
1645
+ pkg.dependencies.each do |dep_name|
1646
+ queue << dep_name
1647
+ end
1648
+ end
1649
+ result
1650
+ end
1651
+
1634
1652
  # Resolves a package name, where +name+ cannot be resolved as a
1635
1653
  # metapackage
1636
1654
  #
@@ -2050,8 +2068,10 @@ module Autoproj
2050
2068
  packages = all_layout_packages.
2051
2069
  find_all { |pkg_name| pkg_name =~ match_pkg_name }.
2052
2070
  to_set
2053
- matches[sel] = packages
2054
- expanded_packages |= packages
2071
+ if !packages.empty?
2072
+ matches[sel] = packages
2073
+ expanded_packages |= packages
2074
+ end
2055
2075
 
2056
2076
  each_metapackage do |pkg|
2057
2077
  if pkg.name =~ match_pkg_name
@@ -2141,11 +2161,19 @@ module Autoproj
2141
2161
  osdeps
2142
2162
  end
2143
2163
 
2164
+ # Access to the information contained in a package's manifest.xml file
2165
+ #
2166
+ # Use PackageManifest.load to create
2144
2167
  class PackageManifest
2168
+ # Load a manifest.xml file and returns the corresponding
2169
+ # PackageManifest object
2145
2170
  def self.load(package, file)
2146
- doc = Nokogiri::XML(File.read(file)) do |c|
2147
- c.noblanks
2148
- end
2171
+ doc =
2172
+ begin REXML::Document.new(File.read(file))
2173
+ rescue REXML::ParseException => e
2174
+ raise ConfigError, "invalid #{file}: #{e.message}"
2175
+ end
2176
+
2149
2177
  PackageManifest.new(package, doc)
2150
2178
  end
2151
2179
 
@@ -2160,30 +2188,25 @@ module Autoproj
2160
2188
  # contain multiple comma-separated tags
2161
2189
  def tags
2162
2190
  result = []
2163
- xml.xpath('//tags').each do |node|
2164
- result.concat(node.content.strip.split(','))
2191
+ xml.elements.each('package/tags') do |node|
2192
+ result.concat(node.text.strip.split(','))
2165
2193
  end
2166
2194
  result
2167
2195
  end
2168
2196
 
2169
2197
  def documentation
2170
- xml.xpath('//description').each do |node|
2171
- doc = node.content.strip
2172
- if doc.empty?
2173
- if doc = short_documentation
2174
- return doc
2175
- end
2176
- return "no documentation available for #{package.name} in its manifest.xml file"
2177
- else
2198
+ xml.elements.each('package/description') do |node|
2199
+ doc = node.text.strip
2200
+ if !doc.empty?
2178
2201
  return doc
2179
2202
  end
2180
2203
  end
2181
- nil
2204
+ return short_documentation
2182
2205
  end
2183
2206
 
2184
2207
  def short_documentation
2185
- xml.xpath('//description').each do |node|
2186
- doc = node['brief']
2208
+ xml.elements.each('package/description') do |node|
2209
+ doc = node.attributes['brief']
2187
2210
  if doc
2188
2211
  doc = doc.to_s.strip
2189
2212
  end
@@ -2191,7 +2214,7 @@ module Autoproj
2191
2214
  return doc.to_s
2192
2215
  end
2193
2216
  end
2194
- nil
2217
+ "no documentation available for #{package.name} in its manifest.xml file"
2195
2218
  end
2196
2219
 
2197
2220
  def initialize(package, doc)
@@ -2210,8 +2233,8 @@ module Autoproj
2210
2233
 
2211
2234
  def each_os_dependency
2212
2235
  if block_given?
2213
- xml.xpath('//rosdep').each do |node|
2214
- yield(node['name'], false)
2236
+ xml.elements.each('package/rosdep') do |node|
2237
+ yield(node.attributes['name'], false)
2215
2238
  end
2216
2239
  package.os_packages.each do |name|
2217
2240
  yield(name, false)
@@ -2223,12 +2246,12 @@ module Autoproj
2223
2246
 
2224
2247
  def each_package_dependency
2225
2248
  if block_given?
2226
- depend_nodes = xml.xpath('//depend').to_a +
2227
- xml.xpath('//depend_optional').to_a
2249
+ depend_nodes = xml.elements.to_a('package/depend') +
2250
+ xml.elements.to_a('package/depend_optional')
2228
2251
 
2229
2252
  depend_nodes.each do |node|
2230
- dependency = node['package']
2231
- optional = (node['optional'].to_s == '1' || node.name == "depend_optional")
2253
+ dependency = node.attributes['package']
2254
+ optional = (node.attributes['optional'].to_s == '1' || node.name == "depend_optional")
2232
2255
 
2233
2256
  if dependency
2234
2257
  yield(dependency, optional)
@@ -2240,6 +2263,49 @@ module Autoproj
2240
2263
  enum_for :each_package_dependency
2241
2264
  end
2242
2265
  end
2266
+
2267
+ # Enumerates the name and email of each author. If no email is present,
2268
+ # yields (name, nil)
2269
+ def each_author
2270
+ if !block_given?
2271
+ return enum_for(:each_author)
2272
+ end
2273
+
2274
+ xml.elements.each('package/author') do |author|
2275
+ author.text.strip.split(',').each do |str|
2276
+ name, email = str.split('/').map(&:strip)
2277
+ email = nil if email && email.empty?
2278
+ yield(name, email)
2279
+ end
2280
+ end
2281
+ end
2282
+
2283
+ # If +name+ points to a text element in the XML document, returns the
2284
+ # content of that element. If no element matches +name+, or if the
2285
+ # content is empty, returns nil
2286
+ def text_node(name)
2287
+ xml.elements.each(name) do |str|
2288
+ str = str.text.strip
2289
+ if !str.empty?
2290
+ return str
2291
+ end
2292
+ end
2293
+ nil
2294
+ end
2295
+
2296
+ # The package associated URL, usually meant to direct to a website
2297
+ #
2298
+ # Returns nil if there is none
2299
+ def url
2300
+ return text_node('package/url')
2301
+ end
2302
+
2303
+ # The package license name
2304
+ #
2305
+ # Returns nil if there is none
2306
+ def license
2307
+ return text_node('package/license')
2308
+ end
2243
2309
  end
2244
2310
  def self.add_osdeps_overrides(*args, &block)
2245
2311
  manifest.add_osdeps_overrides(*args, &block)
@@ -1,16 +1,41 @@
1
1
  require 'tempfile'
2
2
  module Autoproj
3
3
  class OSDependencies
4
+ class << self
5
+ # When requested to load a file called X.Y, the osdeps code will
6
+ # also look for files called X-suffix.Y, where 'suffix' is an
7
+ # element in +osdeps_suffixes+
8
+ #
9
+ # A usage of this functionality is to make loading conditional to
10
+ # the available version of certain tools, namely Ruby. Autoproj for
11
+ # instance adds ruby18 when started on Ruby 1.8 and ruby19 when
12
+ # started on Ruby 1.9
13
+ attr_reader :suffixes
14
+ end
15
+ @suffixes = []
16
+
4
17
  def self.load(file)
5
- file = File.expand_path(file)
6
- begin
7
- data = YAML.load(File.read(file)) || Hash.new
8
- verify_definitions(data)
9
- rescue ArgumentError => e
10
- raise ConfigError.new, "error in #{file}: #{e.message}"
11
- end
18
+ if !File.file?(file)
19
+ raise ArgumentError, "no such file or directory #{file}"
20
+ end
21
+
22
+ candidates = [file]
23
+ candidates.concat(suffixes.map { |s| "#{file}-#{s}" })
24
+
25
+ result = OSDependencies.new
26
+ candidates.each do |file|
27
+ next if !File.file?(file)
28
+ file = File.expand_path(file)
29
+ begin
30
+ data = YAML.load(File.read(file)) || Hash.new
31
+ verify_definitions(data)
32
+ rescue ArgumentError => e
33
+ raise ConfigError.new, "error in #{file}: #{e.message}", e.backtrace
34
+ end
12
35
 
13
- OSDependencies.new(data, file)
36
+ result.merge(OSDependencies.new(data, file))
37
+ end
38
+ result
14
39
  end
15
40
 
16
41
  class << self
@@ -29,13 +54,16 @@ module Autoproj
29
54
  @aliases[new_name] = old_name
30
55
  end
31
56
 
57
+ def self.ruby_version_keyword
58
+ if RUBY_VERSION < "1.9.0" then "ruby18"
59
+ else "ruby19"
60
+ end
61
+ end
62
+
32
63
  def self.autodetect_ruby
33
- ruby_package =
34
- if RUBY_VERSION < "1.9.0" then "ruby18"
35
- else "ruby19"
36
- end
37
- self.alias(ruby_package, "ruby")
64
+ self.alias(ruby_version_keyword, "ruby")
38
65
  end
66
+ self.suffixes << ruby_version_keyword
39
67
 
40
68
  AUTOPROJ_OSDEPS = File.join(File.expand_path(File.dirname(__FILE__)), 'default.osdeps')
41
69
  def self.load_default
@@ -931,12 +959,23 @@ So, what do you want ? (all, ruby, os or none)
931
959
  Autoproj.progress shell_script
932
960
  end
933
961
 
934
- Tempfile.open('osdeps_sh') do |io|
935
- io.puts "#! /bin/bash"
936
- io.puts GAIN_ROOT_ACCESS
937
- io.write shell_script
938
- io.flush
939
- Autobuild::Subprocess.run 'autoproj', 'osdeps', '/bin/bash', io.path
962
+ File.open('/tmp/autoproj_osdeps_lock', 'w') do |lock_io|
963
+ begin
964
+ while !lock_io.flock(File::LOCK_EX | File::LOCK_NB)
965
+ Autoproj.progress " waiting for other autoproj instances to finish their osdeps installation"
966
+ sleep 5
967
+ end
968
+
969
+ Tempfile.open('osdeps_sh') do |io|
970
+ io.puts "#! /bin/bash"
971
+ io.puts GAIN_ROOT_ACCESS
972
+ io.write shell_script
973
+ io.flush
974
+ Autobuild::Subprocess.run 'autoproj', 'osdeps', '/bin/bash', io.path
975
+ end
976
+ ensure
977
+ lock_io.flock(File::LOCK_UN)
978
+ end
940
979
  end
941
980
  did_something = true
942
981
  end
@@ -1,3 +1,3 @@
1
1
  module Autoproj
2
- VERSION = "1.7.14"
2
+ VERSION = "1.7.15.rc1"
3
3
  end
@@ -0,0 +1,65 @@
1
+ require 'test/unit'
2
+ require 'autoproj'
3
+
4
+ class TC_PackageManifest < Test::Unit::TestCase
5
+
6
+ DATA_DIR = File.expand_path('data', File.dirname(__FILE__))
7
+
8
+ FakePackage = Struct.new :name, :os_packages
9
+
10
+ attr_reader :pkg
11
+
12
+ def setup
13
+ @pkg = FakePackage.new('test', [])
14
+ end
15
+
16
+ def test_complete_manifest
17
+ data = File.join(DATA_DIR, 'full_manifest.xml')
18
+ manifest = Autoproj::PackageManifest.load(pkg, data)
19
+
20
+ assert_equal %w{tag1 tag2 tag3}, manifest.tags
21
+ assert_equal "full_doc", manifest.documentation
22
+ assert_equal "short_doc", manifest.short_documentation
23
+
24
+ deps = [['dep1', false], ['dep2', false]]
25
+ opt_deps = [['opt_dep1', true], ['opt_dep2', true]]
26
+ osdeps = [['osdep1', false], ['osdep2', false]]
27
+ pkg.os_packages << "osdep2"
28
+
29
+ assert_equal(osdeps, manifest.each_os_dependency.to_a)
30
+ assert_equal(deps + opt_deps, manifest.each_package_dependency.to_a)
31
+ assert_equal((deps + opt_deps + osdeps).to_set, manifest.each_dependency.to_set)
32
+
33
+ authors = [
34
+ ["Author1", "author1@email"],
35
+ ["Author2", "author2@email"],
36
+ ["Author3", nil]]
37
+ assert_equal(authors.to_set, manifest.each_author.to_set)
38
+
39
+ assert_equal('the_url', manifest.url)
40
+ assert_equal('BSD', manifest.license)
41
+ end
42
+
43
+ def test_empty_manifest
44
+ data = File.join(DATA_DIR, 'empty_manifest.xml')
45
+ manifest = Autoproj::PackageManifest.load(pkg, data)
46
+
47
+ assert_equal [], manifest.tags
48
+ assert(manifest.documentation =~ /no documentation available/)
49
+ assert(manifest.short_documentation =~ /no documentation available/)
50
+
51
+ assert(manifest.each_os_dependency.to_a.empty?)
52
+ assert(manifest.each_package_dependency.to_a.empty?)
53
+ assert(manifest.each_dependency.to_a.empty?)
54
+ assert(manifest.each_author.to_a.empty?)
55
+
56
+ assert_equal(nil, manifest.url)
57
+ assert_equal(nil, manifest.license)
58
+ end
59
+
60
+ def test_failure_on_wrong_document
61
+ data = File.join(DATA_DIR, 'invalid_manifest.xml')
62
+ assert_raises(Autoproj::ConfigError) { Autoproj::PackageManifest.load(pkg, data) }
63
+ end
64
+ end
65
+
metadata CHANGED
@@ -1,13 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autoproj
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease:
4
+ hash: 15424063
5
+ prerelease: 7
6
6
  segments:
7
7
  - 1
8
8
  - 7
9
- - 14
10
- version: 1.7.14
9
+ - 15
10
+ - rc
11
+ - 1
12
+ version: 1.7.15.rc1
11
13
  platform: ruby
12
14
  authors:
13
15
  - Sylvain Joyeux
@@ -15,7 +17,7 @@ autorequire:
15
17
  bindir: bin
16
18
  cert_chain: []
17
19
 
18
- date: 2011-11-03 00:00:00 Z
20
+ date: 2011-12-02 00:00:00 Z
19
21
  dependencies:
20
22
  - !ruby/object:Gem::Dependency
21
23
  name: autobuild
@@ -33,42 +35,10 @@ dependencies:
33
35
  version: 1.5.33
34
36
  type: :runtime
35
37
  version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: rmail
38
- prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 23
45
- segments:
46
- - 1
47
- - 0
48
- - 0
49
- version: 1.0.0
50
- type: :runtime
51
- version_requirements: *id002
52
38
  - !ruby/object:Gem::Dependency
53
39
  name: utilrb
54
40
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
56
- none: false
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- hash: 29
61
- segments:
62
- - 1
63
- - 3
64
- - 3
65
- version: 1.3.3
66
- type: :runtime
67
- version_requirements: *id003
68
- - !ruby/object:Gem::Dependency
69
- name: nokogiri
70
- prerelease: false
71
- requirement: &id004 !ruby/object:Gem::Requirement
41
+ requirement: &id002 !ruby/object:Gem::Requirement
72
42
  none: false
73
43
  requirements:
74
44
  - - ">="
@@ -80,11 +50,11 @@ dependencies:
80
50
  - 3
81
51
  version: 1.3.3
82
52
  type: :runtime
83
- version_requirements: *id004
53
+ version_requirements: *id002
84
54
  - !ruby/object:Gem::Dependency
85
55
  name: highline
86
56
  prerelease: false
87
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ requirement: &id003 !ruby/object:Gem::Requirement
88
58
  none: false
89
59
  requirements:
90
60
  - - ">="
@@ -96,43 +66,11 @@ dependencies:
96
66
  - 0
97
67
  version: 1.5.0
98
68
  type: :runtime
99
- version_requirements: *id005
100
- - !ruby/object:Gem::Dependency
101
- name: webgen
102
- prerelease: false
103
- requirement: &id006 !ruby/object:Gem::Requirement
104
- none: false
105
- requirements:
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- hash: 25
109
- segments:
110
- - 0
111
- - 5
112
- - 9
113
- version: 0.5.9
114
- type: :development
115
- version_requirements: *id006
116
- - !ruby/object:Gem::Dependency
117
- name: rdoc
118
- prerelease: false
119
- requirement: &id007 !ruby/object:Gem::Requirement
120
- none: false
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- hash: 31
125
- segments:
126
- - 2
127
- - 4
128
- - 0
129
- version: 2.4.0
130
- type: :development
131
- version_requirements: *id007
69
+ version_requirements: *id003
132
70
  - !ruby/object:Gem::Dependency
133
71
  name: hoe
134
72
  prerelease: false
135
- requirement: &id008 !ruby/object:Gem::Requirement
73
+ requirement: &id004 !ruby/object:Gem::Requirement
136
74
  none: false
137
75
  requirements:
138
76
  - - ~>
@@ -143,7 +81,7 @@ dependencies:
143
81
  - 12
144
82
  version: "2.12"
145
83
  type: :development
146
- version_requirements: *id008
84
+ version_requirements: *id004
147
85
  description: |-
148
86
  What is Autoproj
149
87
  ----------------
@@ -225,6 +163,7 @@ files:
225
163
  - test/data/test_manifest/autoproj/manifest
226
164
  - test/test_debian.rb
227
165
  - test/test_manifest.rb
166
+ - test/test_package_manifest.rb
228
167
  - .gemtest
229
168
  homepage: http://rock-robotics.org/autoproj
230
169
  licenses: []
@@ -247,12 +186,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
247
186
  required_rubygems_version: !ruby/object:Gem::Requirement
248
187
  none: false
249
188
  requirements:
250
- - - ">="
189
+ - - ">"
251
190
  - !ruby/object:Gem::Version
252
- hash: 3
191
+ hash: 25
253
192
  segments:
254
- - 0
255
- version: "0"
193
+ - 1
194
+ - 3
195
+ - 1
196
+ version: 1.3.1
256
197
  requirements: []
257
198
 
258
199
  rubyforge_project: autobuild
@@ -263,3 +204,4 @@ summary: Easy installation and management of software packages
263
204
  test_files:
264
205
  - test/test_manifest.rb
265
206
  - test/test_debian.rb
207
+ - test/test_package_manifest.rb