@@ -84,7 +84,7 @@ pub(crate) struct Tarball<'a> {
8484
8585 pkgname : String ,
8686 component : String ,
87- target : String ,
87+ target : Option < String > ,
8888 product_name : String ,
8989 overlay : OverlayKind ,
9090
@@ -99,6 +99,14 @@ pub(crate) struct Tarball<'a> {
9999
100100impl < ' a > Tarball < ' a > {
101101 pub ( crate ) fn new ( builder : & ' a Builder < ' a > , component : & str , target : & str ) -> Self {
102+ Self :: new_inner ( builder, component, Some ( target. into ( ) ) )
103+ }
104+
105+ pub ( crate ) fn new_targetless ( builder : & ' a Builder < ' a > , component : & str ) -> Self {
106+ Self :: new_inner ( builder, component, None )
107+ }
108+
109+ fn new_inner ( builder : & ' a Builder < ' a > , component : & str , target : Option < String > ) -> Self {
102110 let pkgname = crate :: dist:: pkgname ( builder, component) ;
103111
104112 let temp_dir = builder. out . join ( "tmp" ) . join ( "tarball" ) . join ( component) ;
@@ -113,7 +121,7 @@ impl<'a> Tarball<'a> {
113121
114122 pkgname,
115123 component : component. into ( ) ,
116- target : target . into ( ) ,
124+ target,
117125 product_name : "Rust" . into ( ) ,
118126 overlay : OverlayKind :: Rust ,
119127
@@ -197,7 +205,14 @@ impl<'a> Tarball<'a> {
197205
198206 let mut cmd = self . builder . tool_cmd ( crate :: tool:: Tool :: RustInstaller ) ;
199207
200- self . builder . info ( & format ! ( "Dist {} ({})" , self . component, self . target) ) ;
208+ let package_name = if let Some ( target) = & self . target {
209+ self . builder . info ( & format ! ( "Dist {} ({})" , self . component, target) ) ;
210+ format ! ( "{}-{}" , self . pkgname, target)
211+ } else {
212+ self . builder . info ( & format ! ( "Dist {}" , self . component) ) ;
213+ self . pkgname . clone ( )
214+ } ;
215+
201216 let _time = crate :: util:: timeit ( self . builder ) ;
202217
203218 let mut component_name = self . component . clone ( ) ;
@@ -206,7 +221,11 @@ impl<'a> Tarball<'a> {
206221 }
207222 if self . include_target_in_component_name {
208223 component_name. push ( '-' ) ;
209- component_name. push_str ( & self . target ) ;
224+ component_name. push_str (
225+ & self
226+ . target
227+ . expect ( "include_target_in_component_name used in a targetless tarball" ) ,
228+ ) ;
210229 }
211230
212231 let distdir = crate :: dist:: distdir ( self . builder ) ;
@@ -222,12 +241,12 @@ impl<'a> Tarball<'a> {
222241 . arg ( & distdir)
223242 . arg ( "--non-installed-overlay" )
224243 . arg ( self . overlay_dir )
225- . arg ( format ! ( "--package-name={}-{} " , self . pkgname , self . target ) )
244+ . arg ( format ! ( "--package-name={}" , package_name ) )
226245 . arg ( "--legacy-manifest-dirs=rustlib,cargo" )
227246 . arg ( format ! ( "--component-name={}" , component_name) ) ;
228247 self . builder . run ( & mut cmd) ;
229248 t ! ( std:: fs:: remove_dir_all( & self . temp_dir) ) ;
230249
231- distdir. join ( format ! ( "{}-{} .tar.gz" , self . pkgname , self . target ) )
250+ distdir. join ( format ! ( "{}.tar.gz" , package_name ) )
232251 }
233252}
0 commit comments