autoproj 1.7.13 → 1.7.14.rc1

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.
data/.gemtest ADDED
File without changes
data/History.txt CHANGED
@@ -1,3 +1,23 @@
1
+ = Version 1.7.14
2
+ * fix support for local package sets, i.e. package sets that are saved in
3
+ autoproj/directory_name and are part of the main configuration VCS.
4
+ * fix behavior of autoproj when adding a remote package set in
5
+ autoproj/manifest and calling amake my/package right away. Until now,
6
+ autoproj was yelling with a criptic message. It will now behave and check out
7
+ the new package set.
8
+ * add support for sourcing shell scripts from env.sh:
9
+ Autoproj.env_source_file(path)
10
+ * fix a Ruby 1.9 incompatibility
11
+ * better performance in e.g. autoproj query and autoproj locate (this speeds up
12
+ acd)
13
+ * accept amake --rebuild the same way than amake --force was accepted until now
14
+ * add support for including manifest.xml files in the package sets. This is
15
+ meant to be used for external packages that do not provide a manifest.
16
+ The manifests are listed in the package set's manifests/ subdirectory and
17
+ must match the package name, as e.g.
18
+ rock.git/external/yaml-cpp.xml
19
+ The package set's manifest takes precedence over the package one.
20
+
1
21
  = Version 1.7.13
2
22
  * bugfix release: fix HTTP fallback mechanism for gitorious servers
3
23
 
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  $LOAD_PATH.unshift File.join(Dir.pwd, 'lib')
2
2
 
3
+ task 'default'
3
4
  begin
4
5
  require 'hoe'
5
6
  namespace 'dist' do
data/bin/amake CHANGED
@@ -3,7 +3,7 @@
3
3
  require 'optparse'
4
4
 
5
5
  build_all = false
6
- force = false
6
+ mode = "build"
7
7
 
8
8
  parser = OptionParser.new do |opt|
9
9
  opt.banner = "amake [options] [dir_or_package]
@@ -17,7 +17,10 @@ Accepts all options from autoproj build plus the following options:
17
17
  build_all = true
18
18
  end
19
19
  opt.on('--force', 'runs autoproj force-build instead of autoproj build') do
20
- force = true
20
+ mode = "force-build"
21
+ end
22
+ opt.on('--rebuild', 'runs autoproj force-build instead of autoproj build') do
23
+ mode = "rebuild"
21
24
  end
22
25
  opt.on('--help', 'shows this help message') do
23
26
  puts parser
@@ -45,11 +48,7 @@ if remaining.grep(/^-/).size == remaining.size && !build_all
45
48
  remaining.push '.'
46
49
  end
47
50
 
48
- if force
49
- remaining.unshift "force-build"
50
- else
51
- remaining.unshift "build"
52
- end
51
+ remaining.unshift mode
53
52
  ARGV.clear
54
53
  ARGV.concat(remaining)
55
54
  load File.expand_path('autoproj', File.dirname(__FILE__))
data/bin/autoproj CHANGED
@@ -52,7 +52,16 @@ Autoproj::OSDependencies.autodetect_ruby
52
52
  prefix = File.expand_path(__FILE__)
53
53
  if File.file?("#{prefix}-#{ARGV.first}")
54
54
  binary = "#{prefix}-#{ARGV.shift}"
55
- exec(binary, *ARGV)
55
+ # RubyGems have a BIG performance problem when $LOADED_PATH starts to be
56
+ # big.
57
+ #
58
+ # So, if the sub-script is Ruby-based, just load it and exit
59
+ if File.readlines(binary).first =~ /ruby/
60
+ load binary
61
+ exit
62
+ else
63
+ exec(binary, *ARGV)
64
+ end
56
65
  end
57
66
 
58
67
  # Find the autoproj root dir
@@ -97,6 +106,14 @@ EOTEXT
97
106
  if selected_packages.empty?
98
107
  Autoproj::CmdLine.update_myself
99
108
  Autoproj::CmdLine.update_configuration
109
+ else
110
+ begin
111
+ old_value = Autobuild.do_update
112
+ Autobuild.do_update = false
113
+ Autoproj::CmdLine.update_configuration
114
+ ensure
115
+ Autobuild.do_update = old_value
116
+ end
100
117
  end
101
118
  Autoproj::CmdLine.load_configuration
102
119
  manifest = Autoproj.manifest
@@ -686,7 +686,12 @@ fi
686
686
  gems = gems.dup
687
687
  gems.delete_if do |name, version|
688
688
  version_requirements = Gem::Requirement.new(version || '>= 0')
689
- installed = Gem.source_index.find_name(name, version_requirements)
689
+ installed =
690
+ if Gem.source_index.respond_to?(:find_by_name)
691
+ Gem.source_index.find_by_name(name, version_requirements)
692
+ else
693
+ Gem.source_index.find_name(name, version_requirements)
694
+ end
690
695
  if !installed.empty? && Autobuild.do_update
691
696
  # Look if we can update the package ...
692
697
  dep = Gem::Dependency.new(name, version_requirements)
@@ -1370,37 +1375,22 @@ module Autoproj
1370
1375
  File.join(Autoproj.root_dir, "env.sh")
1371
1376
  end
1372
1377
 
1373
- File.open(filename, "w") do |io|
1374
- variables = []
1375
- Autobuild.environment.each do |name, value|
1376
- variables << name
1377
- shell_line = "#{name}=#{value.join(":")}"
1378
- if Autoproj.env_inherit?(name)
1379
- if value.empty?
1380
- next
1381
- else
1382
- shell_line << ":$#{name}"
1383
- end
1378
+ shell_dir = File.expand_path(File.join("..", "..", "shell"), File.dirname(__FILE__))
1379
+ if Autoproj.shell_helpers? && shell = ENV['SHELL']
1380
+ shell_kind = File.basename(shell)
1381
+ if shell_kind =~ /^\w+$/
1382
+ shell_file = File.join(shell_dir, "autoproj_#{shell_kind}")
1383
+ if File.exists?(shell_file)
1384
+ Autoproj.progress
1385
+ Autoproj.progress "autodetected the shell to be #{shell_kind}, sourcing autoproj shell helpers"
1386
+ Autoproj.progress "add \"Autoproj.shell_helpers = false\" in autoproj/init.rb to disable"
1387
+ Autobuild.env_source_file(shell_file)
1384
1388
  end
1385
- io.puts shell_line
1386
- end
1387
- variables.each do |var|
1388
- io.puts "export #{var}"
1389
1389
  end
1390
+ end
1390
1391
 
1391
- shell_dir = File.expand_path(File.join("..", "..", "shell"), File.dirname(__FILE__))
1392
- if Autoproj.shell_helpers? && shell = ENV['SHELL']
1393
- shell_kind = File.basename(shell)
1394
- if shell_kind =~ /^\w+$/
1395
- shell_file = File.join(shell_dir, "autoproj_#{shell_kind}")
1396
- if File.exists?(shell_file)
1397
- Autoproj.progress
1398
- Autoproj.progress "autodetected the shell to be #{shell_kind}, sourcing autoproj shell helpers"
1399
- Autoproj.progress "add \"Autoproj.shell_helpers = false\" in autoproj/init.rb to disable"
1400
- io.puts "source \"#{shell_file}\""
1401
- end
1402
- end
1403
- end
1392
+ File.open(filename, "w") do |io|
1393
+ Autobuild.export_env_sh(io)
1404
1394
  end
1405
1395
  end
1406
1396
 
@@ -493,7 +493,7 @@ module Autoproj
493
493
  sel = File.expand_path(sel)
494
494
  relative_to_root = Pathname.new(sel).relative_path_from(Pathname.new(Autoproj.root_dir))
495
495
  pkg = Autoproj.in_package_set(manifest.local_package_set, manifest.file) do
496
- send(handler, relative_to_root)
496
+ send(handler, relative_to_root.to_s)
497
497
  end
498
498
  setup_package_directories(pkg)
499
499
  selected_packages << pkg.name
@@ -1660,9 +1660,7 @@ export PATH=$GEM_HOME/bin:$PATH
1660
1660
 
1661
1661
  Autoproj::CmdLine.update_os_dependencies = false
1662
1662
  Autoproj::CmdLine.initialize
1663
- if Autobuild.do_update
1664
- Autoproj::CmdLine.update_configuration
1665
- end
1663
+ Autoproj::CmdLine.update_configuration
1666
1664
  Autoproj::CmdLine.load_configuration
1667
1665
  Autoproj::CmdLine.setup_all_package_directories
1668
1666
  Autoproj::CmdLine.finalize_package_setup
@@ -119,6 +119,12 @@ module Autoproj
119
119
  Autobuild.env_add_path(name, *value)
120
120
  end
121
121
 
122
+ # Requests that autoproj source the given shell script in its own env.sh
123
+ # script
124
+ def self.env_source_file(file)
125
+ Autobuild.env_source_file(file)
126
+ end
127
+
122
128
  # Representation of a VCS definition contained in a source.yml file or in
123
129
  # autoproj/manifest
124
130
  class VCSDefinition
@@ -495,6 +501,12 @@ module Autoproj
495
501
  # Create a PackageSet instance from its description as found in YAML
496
502
  # configuration files
497
503
  def self.from_spec(manifest, raw_spec, load_description)
504
+ if raw_spec.respond_to?(:to_str)
505
+ local_path = File.join(Autoproj.config_dir, raw_spec)
506
+ if File.directory?(local_path)
507
+ raw_spec = { :type => 'local', :url => local_path }
508
+ end
509
+ end
498
510
  spec = VCSDefinition.vcs_definition_to_hash(raw_spec)
499
511
  options, vcs_spec = Kernel.filter_options spec, :auto_imports => true
500
512
 
@@ -1782,17 +1794,21 @@ module Autoproj
1782
1794
  def load_package_manifest(pkg_name)
1783
1795
  pkg = packages.values.
1784
1796
  find { |pkg| pkg.autobuild.name == pkg_name }
1785
- package, source, file = pkg.autobuild, pkg.package_set, pkg.file
1797
+ package, package_set, file = pkg.autobuild, pkg.package_set, pkg.file
1786
1798
 
1787
1799
  if !pkg_name
1788
1800
  raise ArgumentError, "package #{pkg_name} is not defined"
1789
1801
  end
1790
1802
 
1791
- manifest_path = File.join(package.srcdir, "manifest.xml")
1792
- if !File.directory?(package.srcdir)
1793
- return
1794
- elsif !File.file?(manifest_path)
1795
- Autoproj.warn "#{package.name} from #{source.name} does not have a manifest"
1803
+ manifest_paths =
1804
+ [File.join(package_set.local_dir, "manifests", package.name + ".xml"), File.join(package.srcdir, "manifest.xml")]
1805
+ manifest_path = manifest_paths.find do |path|
1806
+ File.directory?(File.dirname(path)) &&
1807
+ File.file?(path)
1808
+ end
1809
+
1810
+ if !manifest_path
1811
+ Autoproj.warn "#{package.name} from #{package_set.name} does not have a manifest"
1796
1812
  return
1797
1813
  end
1798
1814
 
@@ -1809,10 +1825,10 @@ module Autoproj
1809
1825
  end
1810
1826
  rescue Autobuild::ConfigException => e
1811
1827
  raise ConfigError.new(manifest_path),
1812
- "manifest #{manifest_path} of #{package.name} from #{source.name} lists '#{name}' as dependency, which is listed in the layout of #{file} but has no autobuild definition", e.backtrace
1828
+ "manifest #{manifest_path} of #{package.name} from #{package_set.name} lists '#{name}' as dependency, which is listed in the layout of #{file} but has no autobuild definition", e.backtrace
1813
1829
  rescue ConfigError => e
1814
1830
  raise ConfigError.new(manifest_path),
1815
- "manifest #{manifest_path} of #{package.name} from #{source.name} lists '#{name}' as dependency, but it is neither a normal package nor an osdeps package. osdeps reports: #{e.message}", e.backtrace
1831
+ "manifest #{manifest_path} of #{package.name} from #{package_set.name} lists '#{name}' as dependency, but it is neither a normal package nor an osdeps package. osdeps reports: #{e.message}", e.backtrace
1816
1832
  end
1817
1833
  end
1818
1834
  end
@@ -587,7 +587,12 @@ fi
587
587
  gems = gems.dup
588
588
  gems.delete_if do |name, version|
589
589
  version_requirements = Gem::Requirement.new(version || '>= 0')
590
- installed = Gem.source_index.find_name(name, version_requirements)
590
+ installed =
591
+ if Gem.source_index.respond_to?(:find_by_name)
592
+ Gem.source_index.find_by_name(name, version_requirements)
593
+ else
594
+ Gem.source_index.find_name(name, version_requirements)
595
+ end
591
596
  if !installed.empty? && Autobuild.do_update
592
597
  # Look if we can update the package ...
593
598
  dep = Gem::Dependency.new(name, version_requirements)
@@ -1,4 +1,32 @@
1
1
  module Autoproj
2
+ # Match class for the query system.
3
+ #
4
+ # This class allows to create a query object based on a textual
5
+ # representation, and then match packages using this query object.
6
+ #
7
+ # The queries are of the form
8
+ #
9
+ # FIELD=VALUE:FIELD~VALUE:FIELD=VALUE
10
+ #
11
+ # The F=V form requires an exact match while F~V allows partial
12
+ # matches. The different matches are combined with AND (i.e. only packages
13
+ # matching all criterias will be returned)
14
+ #
15
+ # The following fields are allowed:
16
+ # * autobuild.name: the package name
17
+ # * autobuild.srcdir: the package source directory
18
+ # * autobuild.class.name: the package class
19
+ # * vcs.type: the VCS type (as used in the source.yml files)
20
+ # * vcs.url: the URL from the VCS. The exact semantic of it depends on the
21
+ # VCS type
22
+ # * package_set.name: the name of the package set that defines the package
23
+ #
24
+ # Some fields have shortcuts:
25
+ # * 'name' can be used instead of 'autobuild.name'
26
+ # * 'class' can be used instead of 'autobuild.class.name'
27
+ # * 'vcs' can be used instead of 'vcs.url'
28
+ # * 'package_set' can be used instead of 'package_set.name'
29
+ #
2
30
  class Query
3
31
  ALLOWED_FIELDS = [
4
32
  'autobuild.name',
@@ -9,8 +37,8 @@ module Autoproj
9
37
  'package_set.name'
10
38
  ]
11
39
  DEFAULT_FIELDS = {
40
+ 'name' => 'autobuild.name',
12
41
  'class' => 'autobuild.class.name',
13
- 'autobuild' => 'autobuild.name',
14
42
  'vcs' => 'vcs.url',
15
43
  'package_set' => 'package_set.name'
16
44
  }
@@ -24,11 +52,13 @@ module Autoproj
24
52
  attr_reader :fields
25
53
  attr_reader :value
26
54
  attr_predicate :use_dir_prefix?
55
+ attr_predicate :partial?
27
56
 
28
- def initialize(fields, value)
57
+ def initialize(fields, value, partial)
29
58
  @fields = fields
30
59
  @value = value
31
60
  @value_rx = Regexp.new(Regexp.quote(value), true)
61
+ @partial = partial
32
62
 
33
63
  directories = value.split('/')
34
64
  if !directories.empty?
@@ -47,13 +77,41 @@ module Autoproj
47
77
  end
48
78
  end
49
79
 
80
+ # Checks if +pkg+ matches the query
81
+ #
82
+ # Returns false if +pkg+ does not match the query and a true value
83
+ # otherwise.
84
+ #
85
+ # If the package matches, the returned value can be one of:
86
+ #
87
+ # EXACT:: this is an exact match
88
+ # PARTIAL::
89
+ # the expected value can be found in the package field. The
90
+ # match is done in a case-insensitive way
91
+ # DIR_PREFIX_STRONG::
92
+ # if the expected value contains '/' (directory
93
+ # marker), the package matches the following regular
94
+ # expression: /el\w+/el2\w+/el3$
95
+ # DIR_PREFIX_WEAK::
96
+ # if the expected value contains '/' (directory
97
+ # marker), the package matches the following regular
98
+ # expression: /el\w+/el2\w+/el3\w+
99
+ #
100
+ # If partial? is not set (i.e. if FIELD=VALUE was used), then only EXACT
101
+ # or false can be returned.
50
102
  def match(pkg)
51
103
  pkg_value = fields.inject(pkg) { |v, field_name| v.send(field_name) }
52
104
  pkg_value = pkg_value.to_s
53
105
 
54
106
  if pkg_value == value
55
107
  return EXACT
56
- elsif pkg_value =~ @value_rx
108
+ end
109
+
110
+ if !partial?
111
+ return
112
+ end
113
+
114
+ if pkg_value =~ @value_rx
57
115
  return PARTIAL
58
116
  end
59
117
 
@@ -67,8 +125,14 @@ module Autoproj
67
125
  end
68
126
  end
69
127
 
128
+ # Parse a single field in a query (i.e. a FIELD[=~]VALUE string)
70
129
  def self.parse(str)
71
130
  field, value = str.split('=')
131
+ if !value
132
+ partial = true
133
+ field, value = str.split('~')
134
+ end
135
+
72
136
  if DEFAULT_FIELDS[field]
73
137
  field = DEFAULT_FIELDS[field]
74
138
  end
@@ -79,15 +143,16 @@ module Autoproj
79
143
  end
80
144
 
81
145
  fields = field.split('.')
82
- new(fields, value)
146
+ new(fields, value, partial)
83
147
  end
84
148
 
149
+ # Parse a complete query
85
150
  def self.parse_query(query)
86
151
  query = query.split(':')
87
152
  query = query.map do |str|
88
- if str !~ /=/
89
- match_name = Query.parse("autobuild.name=#{str}")
90
- match_dir = Query.parse("autobuild.srcdir=#{str}")
153
+ if str !~ /[=~]/
154
+ match_name = Query.parse("autobuild.name~#{str}")
155
+ match_dir = Query.parse("autobuild.srcdir~#{str}")
91
156
  Or.new([match_name, match_dir])
92
157
  else
93
158
  Query.parse(str)
@@ -95,29 +160,31 @@ module Autoproj
95
160
  end
96
161
  And.new(query)
97
162
  end
98
- end
99
163
 
100
- class Or
101
- def initialize(submatches)
102
- @submatches = submatches
103
- end
104
- def match(pkg)
105
- @submatches.map { |m| m.match(pkg) }.compact.max
164
+ # Match object that combines multiple matches using a logical OR
165
+ class Or
166
+ def initialize(submatches)
167
+ @submatches = submatches
168
+ end
169
+ def match(pkg)
170
+ @submatches.map { |m| m.match(pkg) }.compact.max
171
+ end
106
172
  end
107
- end
108
173
 
109
- class And
110
- def initialize(submatches)
111
- @submatches = submatches
112
- end
113
- def match(pkg)
114
- matches = @submatches.map do |m|
115
- if p = m.match(pkg)
116
- p
117
- else return
174
+ # Match object that combines multiple matches using a logical AND
175
+ class And
176
+ def initialize(submatches)
177
+ @submatches = submatches
178
+ end
179
+ def match(pkg)
180
+ matches = @submatches.map do |m|
181
+ if p = m.match(pkg)
182
+ p
183
+ else return
184
+ end
118
185
  end
186
+ matches.min
119
187
  end
120
- matches.min
121
188
  end
122
189
  end
123
190
  end
@@ -126,37 +126,22 @@ module Autoproj
126
126
  File.join(Autoproj.root_dir, "env.sh")
127
127
  end
128
128
 
129
- File.open(filename, "w") do |io|
130
- variables = []
131
- Autobuild.environment.each do |name, value|
132
- variables << name
133
- shell_line = "#{name}=#{value.join(":")}"
134
- if Autoproj.env_inherit?(name)
135
- if value.empty?
136
- next
137
- else
138
- shell_line << ":$#{name}"
139
- end
129
+ shell_dir = File.expand_path(File.join("..", "..", "shell"), File.dirname(__FILE__))
130
+ if Autoproj.shell_helpers? && shell = ENV['SHELL']
131
+ shell_kind = File.basename(shell)
132
+ if shell_kind =~ /^\w+$/
133
+ shell_file = File.join(shell_dir, "autoproj_#{shell_kind}")
134
+ if File.exists?(shell_file)
135
+ Autoproj.progress
136
+ Autoproj.progress "autodetected the shell to be #{shell_kind}, sourcing autoproj shell helpers"
137
+ Autoproj.progress "add \"Autoproj.shell_helpers = false\" in autoproj/init.rb to disable"
138
+ Autobuild.env_source_file(shell_file)
140
139
  end
141
- io.puts shell_line
142
- end
143
- variables.each do |var|
144
- io.puts "export #{var}"
145
140
  end
141
+ end
146
142
 
147
- shell_dir = File.expand_path(File.join("..", "..", "shell"), File.dirname(__FILE__))
148
- if Autoproj.shell_helpers? && shell = ENV['SHELL']
149
- shell_kind = File.basename(shell)
150
- if shell_kind =~ /^\w+$/
151
- shell_file = File.join(shell_dir, "autoproj_#{shell_kind}")
152
- if File.exists?(shell_file)
153
- Autoproj.progress
154
- Autoproj.progress "autodetected the shell to be #{shell_kind}, sourcing autoproj shell helpers"
155
- Autoproj.progress "add \"Autoproj.shell_helpers = false\" in autoproj/init.rb to disable"
156
- io.puts "source \"#{shell_file}\""
157
- end
158
- end
159
- end
143
+ File.open(filename, "w") do |io|
144
+ Autobuild.export_env_sh(io)
160
145
  end
161
146
  end
162
147
 
@@ -1,3 +1,3 @@
1
1
  module Autoproj
2
- VERSION = "1.7.13"
2
+ VERSION = "1.7.14.rc1"
3
3
  end
data/shell/autoproj_bash CHANGED
@@ -1,6 +1,6 @@
1
1
  function acd {
2
2
  local pkg_path
3
- pkg_path=$(autoproj locate $1)
3
+ pkg_path=$(autoproj locate $1 | tail -1)
4
4
 
5
5
  if [ $? != 0 ]; then
6
6
  return 1
data/shell/autoproj_zsh CHANGED
@@ -1,6 +1,6 @@
1
1
  function acd {
2
2
  local pkg_path
3
- pkg_path=$(autoproj locate $1)
3
+ pkg_path=$(autoproj locate $1 | tail -1)
4
4
 
5
5
  if [ $? != 0 ]; then
6
6
  return 1
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: 17
5
- prerelease:
4
+ hash: 15424055
5
+ prerelease: 7
6
6
  segments:
7
7
  - 1
8
8
  - 7
9
- - 13
10
- version: 1.7.13
9
+ - 14
10
+ - rc
11
+ - 1
12
+ version: 1.7.14.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-08-23 00:00:00 Z
20
+ date: 2011-10-11 00:00:00 Z
19
21
  dependencies:
20
22
  - !ruby/object:Gem::Dependency
21
23
  name: autobuild
@@ -135,14 +137,13 @@ dependencies:
135
137
  requirement: &id008 !ruby/object:Gem::Requirement
136
138
  none: false
137
139
  requirements:
138
- - - ">="
140
+ - - ~>
139
141
  - !ruby/object:Gem::Version
140
- hash: 47
142
+ hash: 27
141
143
  segments:
142
144
  - 2
143
- - 8
144
- - 0
145
- version: 2.8.0
145
+ - 12
146
+ version: "2.12"
146
147
  type: :development
147
148
  version_requirements: *id008
148
149
  description: |-
@@ -226,6 +227,7 @@ files:
226
227
  - test/data/test_manifest/autoproj/manifest
227
228
  - test/test_debian.rb
228
229
  - test/test_manifest.rb
230
+ - .gemtest
229
231
  homepage: http://doudou.github.com/autoproj
230
232
  licenses: []
231
233
 
@@ -247,16 +249,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
247
249
  required_rubygems_version: !ruby/object:Gem::Requirement
248
250
  none: false
249
251
  requirements:
250
- - - ">="
252
+ - - ">"
251
253
  - !ruby/object:Gem::Version
252
- hash: 3
254
+ hash: 25
253
255
  segments:
254
- - 0
255
- version: "0"
256
+ - 1
257
+ - 3
258
+ - 1
259
+ version: 1.3.1
256
260
  requirements: []
257
261
 
258
262
  rubyforge_project: autobuild
259
- rubygems_version: 1.7.2
263
+ rubygems_version: 1.8.10
260
264
  signing_key:
261
265
  specification_version: 3
262
266
  summary: Easy installation and management of robotics software