@@ -94,7 +94,6 @@ pub(crate) struct Tarball<'a> {
9494 temp_dir : PathBuf ,
9595 image_dir : PathBuf ,
9696 overlay_dir : PathBuf ,
97- work_dir : PathBuf ,
9897
9998 include_target_in_component_name : bool ,
10099 is_preview : bool ,
@@ -113,12 +112,14 @@ impl<'a> Tarball<'a> {
113112 fn new_inner ( builder : & ' a Builder < ' a > , component : & str , target : Option < String > ) -> Self {
114113 let pkgname = crate :: dist:: pkgname ( builder, component) ;
115114
116- let temp_dir = builder. out . join ( "tmp" ) . join ( "tarball" ) . join ( component) ;
115+ let mut temp_dir = builder. out . join ( "tmp" ) . join ( "tarball" ) ;
116+ if let Some ( target) = & target {
117+ temp_dir = temp_dir. join ( target) ;
118+ }
117119 let _ = std:: fs:: remove_dir_all ( & temp_dir) ;
118120
119121 let image_dir = temp_dir. join ( "image" ) ;
120122 let overlay_dir = temp_dir. join ( "overlay" ) ;
121- let work_dir = temp_dir. join ( "work" ) ;
122123
123124 Self {
124125 builder,
@@ -132,7 +133,6 @@ impl<'a> Tarball<'a> {
132133 temp_dir,
133134 image_dir,
134135 overlay_dir,
135- work_dir,
136136
137137 include_target_in_component_name : false ,
138138 is_preview : false ,
@@ -200,7 +200,7 @@ impl<'a> Tarball<'a> {
200200
201201 pub ( crate ) fn persist_work_dir ( & mut self ) -> PathBuf {
202202 self . delete_temp_dir = false ;
203- self . work_dir . clone ( )
203+ self . temp_dir . clone ( )
204204 }
205205
206206 pub ( crate ) fn generate ( self ) -> PathBuf {
@@ -222,9 +222,8 @@ impl<'a> Tarball<'a> {
222222 cmd. arg ( "generate" )
223223 . arg ( "--image-dir" )
224224 . arg ( & this. image_dir )
225- . arg ( "--non-installed-overlay" )
226- . arg ( & this. overlay_dir )
227225 . arg ( format ! ( "--component-name={}" , & component_name) ) ;
226+ this. non_bare_args ( cmd) ;
228227 } )
229228 }
230229
@@ -236,14 +235,41 @@ impl<'a> Tarball<'a> {
236235 }
237236
238237 self . run ( |this, cmd| {
239- cmd. arg ( "combine" )
240- . arg ( "--input-tarballs" )
241- . arg ( input_tarballs)
242- . arg ( "--non-installed-overlay" )
243- . arg ( & this. overlay_dir ) ;
238+ cmd. arg ( "combine" ) . arg ( "--input-tarballs" ) . arg ( input_tarballs) ;
239+ this. non_bare_args ( cmd) ;
244240 } ) ;
245241 }
246242
243+ pub ( crate ) fn bare ( self ) -> PathBuf {
244+ self . run ( |this, cmd| {
245+ cmd. arg ( "tarball" )
246+ . arg ( "--input" )
247+ . arg ( & this. image_dir )
248+ . arg ( "--output" )
249+ . arg ( crate :: dist:: distdir ( this. builder ) . join ( this. package_name ( ) ) ) ;
250+ } )
251+ }
252+
253+ fn package_name ( & self ) -> String {
254+ if let Some ( target) = & self . target {
255+ format ! ( "{}-{}" , self . pkgname, target)
256+ } else {
257+ self . pkgname . clone ( )
258+ }
259+ }
260+
261+ fn non_bare_args ( & self , cmd : & mut Command ) {
262+ cmd. arg ( "--rel-manifest-dir=rustlib" )
263+ . arg ( "--legacy-manifest-dirs=rustlib,cargo" )
264+ . arg ( format ! ( "--product-name={}" , self . product_name) )
265+ . arg ( format ! ( "--success-message={} installed." , self . component) )
266+ . arg ( format ! ( "--package-name={}" , self . package_name( ) ) )
267+ . arg ( "--non-installed-overlay" )
268+ . arg ( & self . overlay_dir )
269+ . arg ( "--output-dir" )
270+ . arg ( crate :: dist:: distdir ( self . builder ) ) ;
271+ }
272+
247273 fn run ( self , build_cli : impl FnOnce ( & Tarball < ' a > , & mut Command ) ) -> PathBuf {
248274 t ! ( std:: fs:: create_dir_all( & self . overlay_dir) ) ;
249275 self . builder . create ( & self . overlay_dir . join ( "version" ) , & self . overlay . version ( self . builder ) ) ;
@@ -256,32 +282,17 @@ impl<'a> Tarball<'a> {
256282
257283 let mut cmd = self . builder . tool_cmd ( crate :: tool:: Tool :: RustInstaller ) ;
258284
259- let package_name = if let Some ( target) = & self . target {
260- self . builder . info ( & format ! ( "Dist {} ({})" , self . component, target) ) ;
261- format ! ( "{}-{}" , self . pkgname, target)
262- } else {
263- self . builder . info ( & format ! ( "Dist {}" , self . component) ) ;
264- self . pkgname . clone ( )
265- } ;
266-
285+ let package_name = self . package_name ( ) ;
286+ self . builder . info ( & format ! ( "Dist {}" , package_name) ) ;
267287 let _time = crate :: util:: timeit ( self . builder ) ;
268288
269- let distdir = crate :: dist:: distdir ( self . builder ) ;
270289 build_cli ( & self , & mut cmd) ;
271- cmd. arg ( "--rel-manifest-dir=rustlib" )
272- . arg ( "--legacy-manifest-dirs=rustlib,cargo" )
273- . arg ( format ! ( "--product-name={}" , self . product_name) )
274- . arg ( format ! ( "--success-message={} installed." , self . component) )
275- . arg ( format ! ( "--package-name={}" , package_name) )
276- . arg ( "--work-dir" )
277- . arg ( self . work_dir )
278- . arg ( "--output-dir" )
279- . arg ( & distdir) ;
290+ cmd. arg ( "--work-dir" ) . arg ( & self . temp_dir ) ;
280291 self . builder . run ( & mut cmd) ;
281292 if self . delete_temp_dir {
282293 t ! ( std:: fs:: remove_dir_all( & self . temp_dir) ) ;
283294 }
284295
285- distdir. join ( format ! ( "{}.tar.gz" , package_name) )
296+ crate :: dist :: distdir ( self . builder ) . join ( format ! ( "{}.tar.gz" , package_name) )
286297 }
287298}
0 commit comments