@@ -9,8 +9,7 @@ mod versions;
9
9
10
10
use crate :: manifest:: { Component , Manifest , Package , Rename , Target } ;
11
11
use crate :: versions:: { PkgType , Versions } ;
12
- use std:: collections:: BTreeMap ;
13
- use std:: collections:: HashMap ;
12
+ use std:: collections:: { BTreeMap , HashMap } ;
14
13
use std:: env;
15
14
use std:: fs:: { self , File } ;
16
15
use std:: io:: { self , Read , Write } ;
@@ -385,9 +384,12 @@ impl Builder {
385
384
386
385
fn target_host_combination ( & mut self , host : & str , manifest : & Manifest ) -> Option < Target > {
387
386
let filename = self . versions . tarball_name ( & PkgType :: Rust , host) . unwrap ( ) ;
388
- let digest = self . digests . remove ( & filename) ?;
389
- let xz_filename = filename. replace ( ".tar.gz" , ".tar.xz" ) ;
390
- let xz_digest = self . digests . remove ( & xz_filename) ;
387
+
388
+ let mut target = Target :: from_compressed_tar ( self , & filename) ;
389
+ if !target. available {
390
+ return None ;
391
+ }
392
+
391
393
let mut components = Vec :: new ( ) ;
392
394
let mut extensions = Vec :: new ( ) ;
393
395
@@ -443,15 +445,9 @@ impl Builder {
443
445
extensions. retain ( & has_component) ;
444
446
components. retain ( & has_component) ;
445
447
446
- Some ( Target {
447
- available : true ,
448
- url : Some ( self . url ( & filename) ) ,
449
- hash : Some ( digest) ,
450
- xz_url : xz_digest. as_ref ( ) . map ( |_| self . url ( & xz_filename) ) ,
451
- xz_hash : xz_digest,
452
- components : Some ( components) ,
453
- extensions : Some ( extensions) ,
454
- } )
448
+ target. components = Some ( components) ;
449
+ target. extensions = Some ( extensions) ;
450
+ Some ( target)
455
451
}
456
452
457
453
fn profile (
@@ -489,37 +485,19 @@ impl Builder {
489
485
let targets = targets
490
486
. iter ( )
491
487
. map ( |name| {
492
- if is_present {
493
- // The component generally exists, but it might still be missing for this target.
488
+ let target = if is_present {
494
489
let filename = self
495
490
. versions
496
491
. tarball_name ( & PkgType :: from_component ( pkgname) , name)
497
492
. unwrap ( ) ;
498
- let digest = match self . digests . remove ( & filename) {
499
- Some ( digest) => digest,
500
- // This component does not exist for this target -- skip it.
501
- None => return ( name. to_string ( ) , Target :: unavailable ( ) ) ,
502
- } ;
503
- let xz_filename = filename. replace ( ".tar.gz" , ".tar.xz" ) ;
504
- let xz_digest = self . digests . remove ( & xz_filename) ;
505
-
506
- (
507
- name. to_string ( ) ,
508
- Target {
509
- available : true ,
510
- url : Some ( self . url ( & filename) ) ,
511
- hash : Some ( digest) ,
512
- xz_url : xz_digest. as_ref ( ) . map ( |_| self . url ( & xz_filename) ) ,
513
- xz_hash : xz_digest,
514
- components : None ,
515
- extensions : None ,
516
- } ,
517
- )
493
+
494
+ Target :: from_compressed_tar ( self , & filename)
518
495
} else {
519
496
// If the component is not present for this build add it anyway but mark it as
520
497
// unavailable -- this way rustup won't allow upgrades without --force
521
- ( name. to_string ( ) , Target :: unavailable ( ) )
522
- }
498
+ Target :: unavailable ( )
499
+ } ;
500
+ ( name. to_string ( ) , target)
523
501
} )
524
502
. collect ( ) ;
525
503
@@ -533,8 +511,9 @@ impl Builder {
533
511
) ;
534
512
}
535
513
536
- fn url ( & self , filename : & str ) -> String {
537
- format ! ( "{}/{}/{}" , self . s3_address, self . date, filename)
514
+ fn url ( & self , path : & Path ) -> String {
515
+ let file_name = path. file_name ( ) . unwrap ( ) . to_str ( ) . unwrap ( ) ;
516
+ format ! ( "{}/{}/{}" , self . s3_address, self . date, file_name)
538
517
}
539
518
540
519
fn hash ( & self , path : & Path ) -> String {
0 commit comments