@@ -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 } ;
@@ -389,9 +388,12 @@ impl Builder {
389
388
390
389
fn target_host_combination ( & mut self , host : & str , manifest : & Manifest ) -> Option < Target > {
391
390
let filename = self . versions . tarball_name ( & PkgType :: Rust , host) . unwrap ( ) ;
392
- let digest = self . digests . remove ( & filename) ?;
393
- let xz_filename = filename. replace ( ".tar.gz" , ".tar.xz" ) ;
394
- let xz_digest = self . digests . remove ( & xz_filename) ;
391
+
392
+ let mut target = Target :: from_compressed_tar ( self , & filename) ;
393
+ if !target. available {
394
+ return None ;
395
+ }
396
+
395
397
let mut components = Vec :: new ( ) ;
396
398
let mut extensions = Vec :: new ( ) ;
397
399
@@ -447,15 +449,9 @@ impl Builder {
447
449
extensions. retain ( & has_component) ;
448
450
components. retain ( & has_component) ;
449
451
450
- Some ( Target {
451
- available : true ,
452
- url : Some ( self . url ( & filename) ) ,
453
- hash : Some ( digest) ,
454
- xz_url : xz_digest. as_ref ( ) . map ( |_| self . url ( & xz_filename) ) ,
455
- xz_hash : xz_digest,
456
- components : Some ( components) ,
457
- extensions : Some ( extensions) ,
458
- } )
452
+ target. components = Some ( components) ;
453
+ target. extensions = Some ( extensions) ;
454
+ Some ( target)
459
455
}
460
456
461
457
fn profile (
@@ -493,37 +489,19 @@ impl Builder {
493
489
let targets = targets
494
490
. iter ( )
495
491
. map ( |name| {
496
- if is_present {
497
- // The component generally exists, but it might still be missing for this target.
492
+ let target = if is_present {
498
493
let filename = self
499
494
. versions
500
495
. tarball_name ( & PkgType :: from_component ( pkgname) , name)
501
496
. unwrap ( ) ;
502
- let digest = match self . digests . remove ( & filename) {
503
- Some ( digest) => digest,
504
- // This component does not exist for this target -- skip it.
505
- None => return ( name. to_string ( ) , Target :: unavailable ( ) ) ,
506
- } ;
507
- let xz_filename = filename. replace ( ".tar.gz" , ".tar.xz" ) ;
508
- let xz_digest = self . digests . remove ( & xz_filename) ;
509
-
510
- (
511
- name. to_string ( ) ,
512
- Target {
513
- available : true ,
514
- url : Some ( self . url ( & filename) ) ,
515
- hash : Some ( digest) ,
516
- xz_url : xz_digest. as_ref ( ) . map ( |_| self . url ( & xz_filename) ) ,
517
- xz_hash : xz_digest,
518
- components : None ,
519
- extensions : None ,
520
- } ,
521
- )
497
+
498
+ Target :: from_compressed_tar ( self , & filename)
522
499
} else {
523
500
// If the component is not present for this build add it anyway but mark it as
524
501
// unavailable -- this way rustup won't allow upgrades without --force
525
- ( name. to_string ( ) , Target :: unavailable ( ) )
526
- }
502
+ Target :: unavailable ( )
503
+ } ;
504
+ ( name. to_string ( ) , target)
527
505
} )
528
506
. collect ( ) ;
529
507
@@ -537,8 +515,9 @@ impl Builder {
537
515
) ;
538
516
}
539
517
540
- fn url ( & self , filename : & str ) -> String {
541
- format ! ( "{}/{}/{}" , self . s3_address, self . date, filename)
518
+ fn url ( & self , path : & Path ) -> String {
519
+ let file_name = path. file_name ( ) . unwrap ( ) . to_str ( ) . unwrap ( ) ;
520
+ format ! ( "{}/{}/{}" , self . s3_address, self . date, file_name)
542
521
}
543
522
544
523
fn hash ( & self , path : & Path ) -> String {
0 commit comments