build-tool 0.6.4 → 0.6.5

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.
@@ -1,3 +1,8 @@
1
+ == Version 0.6.5
2
+ === Enhancements
3
+ - Archive Buildsystem now supports bzip2 compressed archives.
4
+ - Archive Buildsystem is much more fault tolerant now.
5
+
1
6
  == Version 0.6.4
2
7
  === Enhancements
3
8
  - Check for xdg-open before using it and give error message if missing.
@@ -128,47 +128,75 @@ def fetch( verbose = false )
128
128
  FileUtils.mkdir_p( File.dirname( local_path ) ) if !$noop
129
129
 
130
130
  # Download the archive
131
- logger.trace "get #{archive_name} from #{archive_url} to #{archive_local_path}"
131
+ logger.info"downloading #{archive_url}"
132
132
  if !$noop
133
- target = open( archive_local_path, "wb" )
134
- open( archive_url ) { |file|
135
- while c = file.getc
136
- target.putc c
133
+
134
+ begin
135
+
136
+ # We first open the archive. Will throw an exception if the url is invalid.
137
+ open( archive_url ) do |file|
138
+
139
+ begin
140
+
141
+ # Create the local file
142
+ open( archive_local_path, "wb" ) do |target|
143
+
144
+ # Copy
145
+ while c = file.getc
146
+ target.putc( c )
147
+ end
148
+
149
+ end
150
+
151
+ rescue
152
+
153
+ # Clean up
154
+ File.unlink( archive_local_path ) if File.exist?( archive_local_path )
155
+ raise
156
+
157
+ end
158
+
137
159
  end
138
- }
139
- target.close()
160
+
161
+ rescue StandardError => e
162
+
163
+ msg = "Failed to download #{archive_url}: #{e.to_s}"
164
+ logger.error( msg )
165
+ raise StandardError, msg
166
+
167
+ end
168
+
140
169
  end
141
170
  return 0
142
171
  end
143
172
 
144
173
  def guess_top_level_directory
145
174
  return "<topdir>" if $noop
146
- topdir = nil
175
+
176
+ # Find the command to list the archive content
147
177
  if archive_name =~ /(\.tgz|\.tar\.gz)$/
148
- if self.class.execute( "gunzip -c #{archive_local_path} | tar tf -" ) { |line|
149
- rc = /^([^\/]*)\//.match( line )
150
- if topdir and topdir != rc[1]
151
- raise StandardError, "Unable to determine toplevel directory for archive #{archive_name}!"
152
- end
153
- topdir = rc[1]
154
- } != 0
155
- # No topdir
156
- return nil
157
- end
178
+ cmd = "gzip -dc #{archive_local_path} | tar tf -"
158
179
  elsif archive_name =~ /(\.txz|\.tar\.xz)$/
159
- if self.class.execute( "xz -dc #{archive_local_path} | tar tf -" ) { |line|
160
- rc = /^([^\/]*)\//.match( line )
161
- if topdir and topdir != rc[1]
162
- raise StandardError, "Unable to determine toplevel directory for archive #{archive_name}!"
180
+ cmd = "xz -dc #{archive_local_path} | tar tf -"
181
+ elsif archive_name =~ /(\.tar\.bz2)$/
182
+ cmd = "bzip2 -dc #{archive_local_path} | tar tf -"
183
+ else
184
+ raise NotImplementedError, "'#{archive_name}' has a unsupported format."
185
+ end
186
+
187
+ # Then check for a toplevel directory.
188
+ topdir = nil
189
+ self.class.execute( cmd ) do |line|
190
+ rc = /^([^\/]*)\/?/.match( line )
191
+ if topdir
192
+ if topdir != rc[1]
193
+ return false
163
194
  end
195
+ else
164
196
  topdir = rc[1]
165
- } != 0
166
- # No topdir
167
- return nil
168
197
  end
169
- else
170
- raise NotImplementedError, "No idea how to unpack the archive '#{archive_name}'."
171
198
  end
199
+
172
200
  return topdir
173
201
  end
174
202
 
@@ -184,29 +212,31 @@ def rebase( verbose = false )
184
212
  return 0
185
213
  end
186
214
 
187
- # Create the directory we want to use to checkout
188
- FileUtils.mkdir_p local_path if !$noop
215
+ # Check if there is a common top level dir
216
+ # eg. my-package-0.4.7
217
+ if guess_top_level_directory()
218
+ strip_components = 1
219
+ else
220
+ strip_components = 0
221
+ end
189
222
 
223
+ # Get the command to unpack
190
224
  if archive_name =~ /(\.tgz|\.tar\.gz)$/
191
- if guess_top_level_directory()
192
- cmd = "gunzip -c #{archive_local_path} | tar --strip-components=1 --extract --file=- --directory=#{local_path}"
193
- else
194
- cmd = "gunzip -c #{archive_local_path} | tar --strip-components=0 --extract --file=- --directory=#{local_path}"
195
- end
196
- if self.class.execute( cmd ) != 0
197
- raise StandardError, "Failed to unpack the archive: $?"
198
- end
225
+ cmd = "gunzip -dc #{archive_local_path} | tar --strip-components=#{strip_components} --extract --file=- --directory=#{local_path}"
199
226
  elsif archive_name =~ /(\.txz|\.tar\.xz)$/
200
- if guess_top_level_directory()
201
- cmd = "xz -dc #{archive_local_path} | tar --strip-components=1 --extract --file=- --directory=#{local_path}"
202
- else
203
- cmd = "xz -dc #{archive_local_path} | tar --strip-components=0 --extract --file=- --directory=#{local_path}"
204
- end
205
- if self.class.execute( cmd ) != 0
206
- raise StandardError, "Failed to unpack the archive: $?"
207
- end
227
+ cmd = "xz -dc #{archive_local_path} | tar --strip-components=#{strip_components} --extract --file=- --directory=#{local_path}"
228
+ elsif archive_name =~ /\.tar\.bz2$/
229
+ cmd = "bzip2 -dc #{archive_local_path} | tar --strip-components=#{strip_components} --extract --file=- --directory=#{local_path}"
208
230
  else
209
- raise NotImplementedError, "No idea how to unpack the archive"
231
+ raise NotImplementedError, "'#{archive_name}' has unsupported format."
232
+ end
233
+
234
+ # Create the directory we want to use to checkout
235
+ FileUtils.mkdir_p local_path if !$noop
236
+
237
+ # Unpack
238
+ if self.class.execute( cmd ) != 0
239
+ raise StandardError, "Failed to unpack the archive: $?"
210
240
  end
211
241
 
212
242
  0
@@ -26,5 +26,5 @@ def recipe_version()
26
26
 
27
27
  end
28
28
 
29
- VERSION = Version.new( 0, 6, 4 )
29
+ VERSION = Version.new( 0, 6, 5 )
30
30
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: build-tool
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 4
10
- version: 0.6.4
9
+ - 5
10
+ version: 0.6.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michael Jansen
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-05-31 00:00:00 +02:00
18
+ date: 2012-06-03 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency