@@ -116,10 +116,26 @@ struct Target {
116
116
available : bool ,
117
117
url : Option < String > ,
118
118
hash : Option < String > ,
119
+ xz_url : Option < String > ,
120
+ xz_hash : Option < String > ,
119
121
components : Option < Vec < Component > > ,
120
122
extensions : Option < Vec < Component > > ,
121
123
}
122
124
125
+ impl Target {
126
+ fn unavailable ( ) -> Target {
127
+ Target {
128
+ available : false ,
129
+ url : None ,
130
+ hash : None ,
131
+ xz_url : None ,
132
+ xz_hash : None ,
133
+ components : None ,
134
+ extensions : None ,
135
+ }
136
+ }
137
+ }
138
+
123
139
#[ derive( RustcEncodable ) ]
124
140
struct Component {
125
141
pkg : String ,
@@ -242,16 +258,12 @@ impl Builder {
242
258
let digest = match self . digests . remove ( & filename) {
243
259
Some ( digest) => digest,
244
260
None => {
245
- pkg. target . insert ( host. to_string ( ) , Target {
246
- available : false ,
247
- url : None ,
248
- hash : None ,
249
- components : None ,
250
- extensions : None ,
251
- } ) ;
261
+ pkg. target . insert ( host. to_string ( ) , Target :: unavailable ( ) ) ;
252
262
continue
253
263
}
254
264
} ;
265
+ let xz_filename = filename. replace ( ".tar.gz" , ".tar.xz" ) ;
266
+ let xz_digest = self . digests . remove ( & xz_filename) ;
255
267
let mut components = Vec :: new ( ) ;
256
268
let mut extensions = Vec :: new ( ) ;
257
269
@@ -293,8 +305,10 @@ impl Builder {
293
305
294
306
pkg. target . insert ( host. to_string ( ) , Target {
295
307
available : true ,
296
- url : Some ( self . url ( "rust" , host ) ) ,
308
+ url : Some ( self . url ( & filename ) ) ,
297
309
hash : Some ( digest) ,
310
+ xz_url : xz_digest. as_ref ( ) . map ( |_| self . url ( & xz_filename) ) ,
311
+ xz_hash : xz_digest,
298
312
components : Some ( components) ,
299
313
extensions : Some ( extensions) ,
300
314
} ) ;
@@ -312,21 +326,17 @@ impl Builder {
312
326
let filename = self . filename ( pkgname, name) ;
313
327
let digest = match self . digests . remove ( & filename) {
314
328
Some ( digest) => digest,
315
- None => {
316
- return ( name. to_string ( ) , Target {
317
- available : false ,
318
- url : None ,
319
- hash : None ,
320
- components : None ,
321
- extensions : None ,
322
- } )
323
- }
329
+ None => return ( name. to_string ( ) , Target :: unavailable ( ) ) ,
324
330
} ;
331
+ let xz_filename = filename. replace ( ".tar.gz" , ".tar.xz" ) ;
332
+ let xz_digest = self . digests . remove ( & xz_filename) ;
325
333
326
334
( name. to_string ( ) , Target {
327
335
available : true ,
328
- url : Some ( self . url ( pkgname , name ) ) ,
336
+ url : Some ( self . url ( & filename ) ) ,
329
337
hash : Some ( digest) ,
338
+ xz_url : xz_digest. as_ref ( ) . map ( |_| self . url ( & xz_filename) ) ,
339
+ xz_hash : xz_digest,
330
340
components : None ,
331
341
extensions : None ,
332
342
} )
@@ -338,11 +348,11 @@ impl Builder {
338
348
} ) ;
339
349
}
340
350
341
- fn url ( & self , component : & str , target : & str ) -> String {
351
+ fn url ( & self , filename : & str ) -> String {
342
352
format ! ( "{}/{}/{}" ,
343
353
self . s3_address,
344
354
self . date,
345
- self . filename( component , target ) )
355
+ filename)
346
356
}
347
357
348
358
fn filename ( & self , component : & str , target : & str ) -> String {
0 commit comments