autobuild 1.7.2 → 1.7.3.rc1

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