autobuild 1.7.2 → 1.7.3.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.
@@ -12,7 +12,7 @@ module Autobuild
12
12
  @windows
13
13
  end
14
14
 
15
- @macos = RbConfig::CONFIG["host_os"] = ~%r!([Dd]arwin)!
15
+ @macos = RbConfig::CONFIG["host_os"] =~%r!([Dd]arwin)!
16
16
  def self.macos?
17
17
  @macos
18
18
  end
@@ -212,6 +212,13 @@ module Autobuild
212
212
  end
213
213
  end
214
214
 
215
+ def self.env_remove_path(name, *paths)
216
+ paths.each do |p|
217
+ environment[name].delete(p)
218
+ end
219
+ env_update_var(name)
220
+ end
221
+
215
222
  def self.env_push_path(name, *values)
216
223
  if current = environment[name]
217
224
  current = current.dup
@@ -385,7 +392,3 @@ module Autobuild
385
392
  end
386
393
  end
387
394
 
388
- Autobuild.update_environment '/', ['PKG_CONFIG_PATH']
389
- Autobuild.update_environment '/usr', ['PKG_CONFIG_PATH']
390
- Autobuild.update_environment '/usr/local', ['PKG_CONFIG_PATH']
391
-
@@ -1,4 +1,5 @@
1
1
  require 'autobuild/importer'
2
+ require 'digest/sha1'
2
3
  require 'open-uri'
3
4
  require 'fileutils'
4
5
 
@@ -47,44 +48,42 @@ module Autobuild
47
48
 
48
49
 
49
50
  def get_url_on_windows(url, filename)
50
- uri = URI(url)
51
- STDOUT.puts("Host: #{uri.host} Port: #{uri.port} url: #{url}")
52
-
53
- http = Net::HTTP.new(uri.host,uri.port)
54
- http.use_ssl = true if uri.port == 443
55
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE #Unsure, critical?, Review this
56
- resp = http.get(uri.request_uri)
57
-
58
- if resp.code == "301" or resp.code == "302"
59
- get_url_on_windows(resp.header['location'],filename)
60
- else
61
- if(resp.message != 'OK')
62
- raise "Could not get File from url \"#{url}\", got response #{resp.message} (#{resp.code})"
63
- end
64
- open(filename, "wb") do |file|
65
- file.write(resp.body)
66
- end
67
- end
51
+ uri = URI(url)
52
+
53
+ http = Net::HTTP.new(uri.host,uri.port)
54
+ http.use_ssl = true if uri.port == 443
55
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE #Unsure, critical?, Review this
56
+ resp = http.get(uri.request_uri)
57
+
58
+ if resp.code == "301" or resp.code == "302"
59
+ get_url_on_windows(resp.header['location'],filename)
60
+ else
61
+ if resp.message != 'OK'
62
+ raise "Could not get File from url \"#{url}\", got response #{resp.message} (#{resp.code})"
63
+ end
64
+ open(filename, "wb") do |file|
65
+ file.write(resp.body)
66
+ end
67
+ end
68
68
  end
69
69
 
70
- def extract_tar_on_windows(filename,target)
71
-
72
- Gem::Package::TarReader.new(Zlib::GzipReader.open(filename)).each do |entry|
73
- newname = File.join(target,entry.full_name.slice(entry.full_name.index('/'),entry.full_name.size))
74
- if(entry.directory?)
75
- FileUtils.mkdir_p(newname)
76
- end
77
- if(entry.file?)
78
- dir = newname.slice(0,newname.rindex('/'))
79
- if(!File.directory?(dir))
80
- FileUtils.mkdir_p(dir)
81
- end
82
- open(newname, "wb") do |file|
83
- file.write(entry.read)
84
- end
85
- end
86
- end
87
- end
70
+ def extract_tar_on_windows(filename,target)
71
+ Gem::Package::TarReader.new(Zlib::GzipReader.open(filename)).each do |entry|
72
+ newname = File.join(target,entry.full_name.slice(entry.full_name.index('/'),entry.full_name.size))
73
+ if(entry.directory?)
74
+ FileUtils.mkdir_p(newname)
75
+ end
76
+ if(entry.file?)
77
+ dir = newname.slice(0,newname.rindex('/'))
78
+ if(!File.directory?(dir))
79
+ FileUtils.mkdir_p(dir)
80
+ end
81
+ open(newname, "wb") do |file|
82
+ file.write(entry.read)
83
+ end
84
+ end
85
+ end
86
+ end
88
87
 
89
88
  # Updates the downloaded file in cache only if it is needed
90
89
  def update_cache(package)
@@ -123,24 +122,32 @@ module Autobuild
123
122
  if do_update
124
123
  FileUtils.mkdir_p(cachedir)
125
124
  begin
126
- if(WINDOWS)
127
- get_url_on_windows(@url, "#{cachefile}.partial")
128
- else
129
- Subprocess.run(package, :import, Autobuild.tool('wget'), '-q', '-P', cachedir, @url, '-O', "#{cachefile}.partial")
130
- end
125
+ if(WINDOWS)
126
+ get_url_on_windows(@url, "#{cachefile}.partial")
127
+ else
128
+ Subprocess.run(package, :import, Autobuild.tool('wget'), '-q', '-P', cachedir, @url, '-O', "#{cachefile}.partial")
129
+ end
131
130
  rescue Exception
132
131
  FileUtils.rm_f "#{cachefile}.partial"
133
132
  raise
134
133
  end
135
134
  FileUtils.mv "#{cachefile}.partial", cachefile
136
- true
137
135
  end
136
+
137
+ @cachefile_digest = Digest::SHA1.hexdigest File.read(cachefile)
138
+
139
+ do_update
138
140
  end
139
141
 
140
142
  # The source URL
141
143
  attr_reader :url
142
144
  # The local file (either a downloaded file if +url+ is not local, or +url+ itself)
143
145
  attr_reader :cachefile
146
+ # The SHA1 digest of the current cachefile. It is updated only once the
147
+ # cachefile has been downloaded
148
+ #
149
+ # @return [String] hexadecimal SHA1 digest of the file
150
+ attr_reader :cachefile_digest
144
151
  # The unpack mode. One of Zip, Bzip, Gzip or Plain
145
152
  attr_reader :mode
146
153
  # The directory in which remote files are cached
@@ -190,15 +197,61 @@ module Autobuild
190
197
  end
191
198
 
192
199
  def update(package) # :nodoc:
193
- if update_cache(package)
200
+ needs_update = update_cache(package)
201
+
202
+ if !File.file?(checkout_digest_stamp(package))
203
+ write_checkout_digest_stamp(package)
204
+ end
205
+
206
+ if needs_update || archive_changed?(package)
194
207
  checkout(package)
195
208
  end
196
209
  rescue OpenURI::HTTPError
197
210
  raise Autobuild::Exception.new(package.name, :import)
198
211
  end
199
212
 
213
+ def checkout_digest_stamp(package)
214
+ File.join(package.srcdir, "archive-autobuild-stamp")
215
+ end
216
+
217
+ def write_checkout_digest_stamp(package)
218
+ File.open(checkout_digest_stamp(package), 'w') do |io|
219
+ io.write cachefile_digest
220
+ end
221
+ end
222
+
223
+ # Returns true if the archive that has been used to checkout this
224
+ # package is different from the one we are supposed to checkout now
225
+ def archive_changed?(package)
226
+ checkout_digest = File.read(checkout_digest_stamp(package)).strip
227
+ checkout_digest != cachefile_digest
228
+ end
229
+
200
230
  def checkout(package) # :nodoc:
201
231
  update_cache(package)
232
+
233
+ # Check whether the archive file changed, and if that is the case
234
+ # then ask the user about deleting the folder
235
+ if File.file?(checkout_digest_stamp(package)) && archive_changed?(package)
236
+ package.progress_done
237
+ package.message "The archive #{@url.to_s} is different from the one currently checked out at #{package.srcdir}", :bold
238
+ package.message " I will have to delete the current folder to go on with the update"
239
+ response = HighLine.new.ask " Continue (yes or no) ? If no, this update will be ignored, which can lead to build problems.", String do |q|
240
+ q.overwrite = true
241
+ q.in = ['yes', 'no']
242
+ q.default = 'yes'
243
+ q.case = :downcase
244
+ end
245
+ if response == "no"
246
+ package.message " Not updating #{package.srcdir}"
247
+ return
248
+ else
249
+ package.message " Deleting #{package.srcdir}"
250
+ FileUtils.rm_rf package.srcdir
251
+ package.progress "checking out %s"
252
+ end
253
+ end
254
+
202
255
  # Un-apply any existing patch so that, when the files get
203
256
  # overwritten by the new checkout, the patch are re-applied
204
257
  patch(package, [])
@@ -227,17 +280,18 @@ module Autobuild
227
280
  cmd << '--strip-components=1'
228
281
  end
229
282
 
230
- if(WINDOWS)
231
- extract_tar_on_windows(cachefile,package.srcdir)
232
- else
233
- Subprocess.run(package, :import, Autobuild.tool('tar'), *cmd)
234
- end
283
+ if(WINDOWS)
284
+ extract_tar_on_windows(cachefile,package.srcdir)
285
+ else
286
+ Subprocess.run(package, :import, Autobuild.tool('tar'), *cmd)
287
+ end
235
288
  end
289
+ write_checkout_digest_stamp(package)
236
290
 
237
291
  rescue OpenURI::HTTPError
238
292
  raise Autobuild::Exception.new(package.name, :import)
239
293
  rescue SubcommandFailed
240
- FileUtils.rm_f cachefile
294
+ FileUtils.rm_f cachefile
241
295
  raise
242
296
  end
243
297
  end
@@ -111,9 +111,9 @@ module Autobuild
111
111
 
112
112
  # Raises ConfigException if the current directory is not a git
113
113
  # repository
114
- def validate_srcdir(package)
115
- if !File.directory?(File.join(package.srcdir, '.git'))
116
- raise ConfigException.new(package, 'import'), "while importing #{package.name}, #{package.srcdir} is not a git repository"
114
+ def validate_importdir(package)
115
+ if !File.directory?(File.join(package.importdir, '.git'))
116
+ raise ConfigException.new(package, 'import'), "while importing #{package.name}, #{package.importdir} is not a git repository"
117
117
  end
118
118
  end
119
119
 
@@ -121,8 +121,8 @@ module Autobuild
121
121
  # ID on success, nil on failure. Expects the current directory to be the
122
122
  # package's source directory.
123
123
  def fetch_remote(package)
124
- validate_srcdir(package)
125
- Dir.chdir(package.srcdir) do
124
+ validate_importdir(package)
125
+ Dir.chdir(package.importdir) do
126
126
  # If we are checking out a specific commit, we don't know which
127
127
  # branch to refer to in git fetch. So, we have to set up the
128
128
  # remotes and call git fetch directly (so that all branches get
@@ -186,8 +186,8 @@ module Autobuild
186
186
  # Returns a Importer::Status object that represents the status of this
187
187
  # package w.r.t. the root repository
188
188
  def status(package, only_local = false)
189
- Dir.chdir(package.srcdir) do
190
- validate_srcdir(package)
189
+ Dir.chdir(package.importdir) do
190
+ validate_importdir(package)
191
191
  remote_commit = nil
192
192
  if only_local
193
193
  remote_commit = `git show-ref -s refs/remotes/autobuild/#{remote_branch}`.chomp
@@ -316,8 +316,8 @@ module Autobuild
316
316
  end
317
317
 
318
318
  def update(package)
319
- validate_srcdir(package)
320
- Dir.chdir(package.srcdir) do
319
+ validate_importdir(package)
320
+ Dir.chdir(package.importdir) do
321
321
  fetch_commit = fetch_remote(package)
322
322
 
323
323
  # If we are tracking a commit/tag, just check it out and return
@@ -376,7 +376,7 @@ module Autobuild
376
376
  status = merge_status(package, fetch_commit)
377
377
  if status.needs_update?
378
378
  if !merge? && status.status == Status::NEEDS_MERGE
379
- raise PackageException.new(package, 'import'), "the local branch '#{local_branch}' and the remote branch #{branch} of #{package.name} have diverged, and I therefore refuse to update automatically. Go into #{package.srcdir} and either reset the local branch or merge the remote changes"
379
+ raise PackageException.new(package, 'import'), "the local branch '#{local_branch}' and the remote branch #{branch} of #{package.name} have diverged, and I therefore refuse to update automatically. Go into #{package.importdir} and either reset the local branch or merge the remote changes"
380
380
  end
381
381
  Subprocess.run(package, :import, Autobuild.tool('git'), 'merge', fetch_commit)
382
382
  end
@@ -384,15 +384,15 @@ module Autobuild
384
384
  end
385
385
 
386
386
  def checkout(package)
387
- base_dir = File.expand_path('..', package.srcdir)
387
+ base_dir = File.expand_path('..', package.importdir)
388
388
  if !File.directory?(base_dir)
389
389
  FileUtils.mkdir_p base_dir
390
390
  end
391
391
 
392
392
  Subprocess.run(package, :import,
393
- Autobuild.tool('git'), 'clone', '-o', 'autobuild', repository, package.srcdir)
393
+ Autobuild.tool('git'), 'clone', '-o', 'autobuild', repository, package.importdir)
394
394
 
395
- Dir.chdir(package.srcdir) do
395
+ Dir.chdir(package.importdir) do
396
396
  if push_to
397
397
  Subprocess.run(package, :import, Autobuild.tool('git'), 'config',
398
398
  "--replace-all", "remote.autobuild.pushurl", push_to)
@@ -36,28 +36,28 @@ module Autobuild
36
36
  private
37
37
 
38
38
  def update(package) # :nodoc:
39
- Dir.chdir(package.srcdir) {
39
+ Dir.chdir(package.importdir) {
40
40
  old_lang, ENV['LC_ALL'] = ENV['LC_ALL'], 'C'
41
41
  svninfo = IO.popen("svn info") { |io| io.readlines }
42
42
  ENV['LC_ALL'] = old_lang
43
43
  unless url = svninfo.grep(/^URL: /).first
44
44
  if svninfo.grep(/is not a working copy/).empty?
45
- raise ConfigException.new(package, 'import'), "#{package.srcdir} is not a Subversion working copy"
45
+ raise ConfigException.new(package, 'import'), "#{package.importdir} is not a Subversion working copy"
46
46
  else
47
- raise ConfigException.new(package, 'import'), "Bug: cannot get SVN information for #{package.srcdir}"
47
+ raise ConfigException.new(package, 'import'), "Bug: cannot get SVN information for #{package.importdir}"
48
48
  end
49
49
  end
50
50
  url.chomp =~ /URL: (.+)/
51
51
  source = $1
52
52
  if source != @source
53
- raise ConfigException.new(package, 'import'), "current checkout found at #{package.srcdir} is from #{source}, was expecting #{@source}"
53
+ raise ConfigException.new(package, 'import'), "current checkout found at #{package.importdir} is from #{source}, was expecting #{@source}"
54
54
  end
55
55
  Subprocess.run(package, :import, @program, 'up', "--non-interactive", *@options_up)
56
56
  }
57
57
  end
58
58
 
59
59
  def checkout(package) # :nodoc:
60
- options = [ @program, 'co', "--non-interactive" ] + @options_co + [ @source, package.srcdir ]
60
+ options = [ @program, 'co', "--non-interactive" ] + @options_co + [ @source, package.importdir ]
61
61
  Subprocess.run(package, :import, *options)
62
62
  end
63
63
  end
@@ -67,6 +67,7 @@ class Importer
67
67
  # More options are specific to each importer type.
68
68
  def initialize(options)
69
69
  @options = options.dup
70
+ @options[:retry_count] = Integer(@options[:retry_count] || 0)
70
71
  end
71
72
 
72
73
  # The number of times update / checkout should be retried before giving up.
@@ -83,7 +84,7 @@ class Importer
83
84
  #
84
85
  # See also #retry_count
85
86
  def retry_count=(count)
86
- @options[:retry_count] = count
87
+ @options[:retry_count] = Integer(count)
87
88
  end
88
89
 
89
90
  def patches
@@ -152,7 +153,7 @@ class Importer
152
153
  if retry_count > self.retry_count
153
154
  raise
154
155
  end
155
- package.message "update failed in #{package.srcdir}, retrying (#{retry_count}/#{self.retry_count})"
156
+ package.message "update failed in #{package.importdir}, retrying (#{retry_count}/#{self.retry_count})"
156
157
  retry
157
158
  ensure
158
159
  package.progress_done "updated %s"
@@ -178,8 +179,8 @@ class Importer
178
179
  if retry_count > self.retry_count
179
180
  raise
180
181
  end
181
- package.message "checkout of %s failed, deleting the source directory #{package.srcdir} and retrying (#{retry_count}/#{self.retry_count})"
182
- FileUtils.rm_rf package.srcdir
182
+ package.message "checkout of %s failed, deleting the source directory #{package.importdir} and retrying (#{retry_count}/#{self.retry_count})"
183
+ FileUtils.rm_rf package.importdir
183
184
  retry
184
185
  end
185
186
  end
@@ -189,18 +190,18 @@ class Importer
189
190
  rescue Interrupt
190
191
  raise
191
192
  rescue ::Exception
192
- package.message "checkout of %s failed, deleting the source directory #{package.srcdir}"
193
- FileUtils.rm_rf package.srcdir
193
+ package.message "checkout of %s failed, deleting the source directory #{package.importdir}"
194
+ FileUtils.rm_rf package.importdir
194
195
  raise
195
196
  rescue Autobuild::Exception => e
196
- FileUtils.rm_rf package.srcdir
197
+ FileUtils.rm_rf package.importdir
197
198
  fallback(e, package, :import, package)
198
199
  end
199
200
 
200
201
  # Performs the import of +package+
201
202
  def import(package)
202
- srcdir = package.srcdir
203
- if File.directory?(srcdir)
203
+ importdir = package.importdir
204
+ if File.directory?(importdir)
204
205
  package.isolate_errors(false) do
205
206
  if Autobuild.do_update
206
207
  perform_update(package)
@@ -212,8 +213,8 @@ class Importer
212
213
  end
213
214
  end
214
215
 
215
- elsif File.exists?(srcdir)
216
- raise ConfigException.new(package, 'import'), "#{srcdir} exists but is not a directory"
216
+ elsif File.exists?(importdir)
217
+ raise ConfigException.new(package, 'import'), "#{importdir} exists but is not a directory"
217
218
  else
218
219
  perform_checkout(package)
219
220
  end
@@ -236,15 +237,15 @@ class Importer
236
237
 
237
238
  private
238
239
 
239
- # We assume that package.srcdir already exists (checkout is supposed to
240
+ # We assume that package.importdir already exists (checkout is supposed to
240
241
  # have been called)
241
242
  def patchlist(package)
242
- File.join(package.srcdir, "patches-autobuild-stamp")
243
+ File.join(package.importdir, "patches-autobuild-stamp")
243
244
  end
244
245
 
245
246
  def call_patch(package, reverse, file, patch_level)
246
247
  patch = Autobuild.tool('patch')
247
- Dir.chdir(package.srcdir) do
248
+ Dir.chdir(package.importdir) do
248
249
  Subprocess.run(package, :patch, patch, "-p#{patch_level}", (reverse ? '-R' : nil), '--forward', :input => file)
249
250
  end
250
251
  end
@@ -53,6 +53,10 @@ module Autobuild
53
53
  # set the source directory. If a relative path is given,
54
54
  # it is relative to Autobuild.srcdir. Defaults to #name
55
55
  attr_writer :srcdir
56
+ # set the importdir, this can be different than the sourcedir
57
+ # if the source-root is in an subfolder of the package itself
58
+ # then the importdir will be the root
59
+ attr_writer :importdir
56
60
  # set the installation directory. If a relative path is given,
57
61
  # it is relative to Autobuild.prefix. Defaults to ''
58
62
  attr_writer :prefix
@@ -81,6 +85,8 @@ module Autobuild
81
85
 
82
86
  # Absolute path to the source directory. See #srcdir=
83
87
  def srcdir; File.expand_path(@srcdir || name, Autobuild.srcdir) end
88
+ # Absolute path to the import directory. See #importdir=
89
+ def importdir; File.expand_path(@importdir || srcdir, Autobuild.srcdir) end
84
90
  # Absolute path to the installation directory. See #prefix=
85
91
  def prefix; File.expand_path(@prefix || '', Autobuild.prefix) end
86
92
  # Absolute path to the log directory for this package. See #logdir=
@@ -83,8 +83,8 @@ module Autobuild
83
83
  end
84
84
 
85
85
  # Displays a warning message
86
- def self.warn(message)
87
- Autobuild.message(" WARN: #{message}", :magenta)
86
+ def self.warn(message, *style)
87
+ Autobuild.message(" WARN: #{message}", :magenta, *style)
88
88
  end
89
89
 
90
90
 
@@ -1,5 +1,5 @@
1
1
  module Autobuild
2
- VERSION = "1.7.2" unless defined? Autobuild::VERSION
2
+ VERSION = "1.7.3.rc1" unless defined? Autobuild::VERSION
3
3
  end
4
4
 
5
5
 
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autobuild
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.2
5
- prerelease:
4
+ version: 1.7.3.rc1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Sylvain Joyeux
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-21 00:00:00.000000000 Z
12
+ date: 2013-04-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &19781840 !ruby/object:Gem::Requirement
16
+ requirement: &13319080 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.9.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *19781840
24
+ version_requirements: *13319080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: utilrb
27
- requirement: &20807120 !ruby/object:Gem::Requirement
27
+ requirement: &13318200 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.6.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *20807120
35
+ version_requirements: *13318200
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: highline
38
- requirement: &20806420 !ruby/object:Gem::Requirement
38
+ requirement: &13317360 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *20806420
46
+ version_requirements: *13317360
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rdoc
49
- requirement: &20805740 !ruby/object:Gem::Requirement
49
+ requirement: &13316460 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '3.10'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *20805740
57
+ version_requirements: *13316460
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: hoe
60
- requirement: &20804820 !ruby/object:Gem::Requirement
60
+ requirement: &13315640 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '3.5'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *20804820
68
+ version_requirements: *13315640
69
69
  description: Collection of classes to handle build systems (CMake, autotools, ...)
70
70
  and import mechanisms (tarballs, CVS, SVN, git, ...). It also offers a Rake integration
71
71
  to import and build such software packages. It is the backbone of the autoproj (http://rock-robotics.org/autoproj)
@@ -140,9 +140,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
140
140
  required_rubygems_version: !ruby/object:Gem::Requirement
141
141
  none: false
142
142
  requirements:
143
- - - ! '>='
143
+ - - ! '>'
144
144
  - !ruby/object:Gem::Version
145
- version: '0'
145
+ version: 1.3.1
146
146
  requirements: []
147
147
  rubyforge_project: autobuild
148
148
  rubygems_version: 1.8.11
@@ -150,8 +150,8 @@ signing_key:
150
150
  specification_version: 3
151
151
  summary: Library to handle build systems and import mechanisms
152
152
  test_files:
153
+ - test/test_import_cvs.rb
153
154
  - test/test_reporting.rb
154
155
  - test/test_subcommand.rb
155
156
  - test/test_import_svn.rb
156
- - test/test_import_cvs.rb
157
157
  - test/test_import_tar.rb