@@ -94,7 +94,6 @@ pub(crate) struct Tarball<'a> {
94
94
temp_dir : PathBuf ,
95
95
image_dir : PathBuf ,
96
96
overlay_dir : PathBuf ,
97
- work_dir : PathBuf ,
98
97
99
98
include_target_in_component_name : bool ,
100
99
is_preview : bool ,
@@ -113,12 +112,14 @@ impl<'a> Tarball<'a> {
113
112
fn new_inner ( builder : & ' a Builder < ' a > , component : & str , target : Option < String > ) -> Self {
114
113
let pkgname = crate :: dist:: pkgname ( builder, component) ;
115
114
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
+ }
117
119
let _ = std:: fs:: remove_dir_all ( & temp_dir) ;
118
120
119
121
let image_dir = temp_dir. join ( "image" ) ;
120
122
let overlay_dir = temp_dir. join ( "overlay" ) ;
121
- let work_dir = temp_dir. join ( "work" ) ;
122
123
123
124
Self {
124
125
builder,
@@ -132,7 +133,6 @@ impl<'a> Tarball<'a> {
132
133
temp_dir,
133
134
image_dir,
134
135
overlay_dir,
135
- work_dir,
136
136
137
137
include_target_in_component_name : false ,
138
138
is_preview : false ,
@@ -200,7 +200,7 @@ impl<'a> Tarball<'a> {
200
200
201
201
pub ( crate ) fn persist_work_dir ( & mut self ) -> PathBuf {
202
202
self . delete_temp_dir = false ;
203
- self . work_dir . clone ( )
203
+ self . temp_dir . clone ( )
204
204
}
205
205
206
206
pub ( crate ) fn generate ( self ) -> PathBuf {
@@ -222,9 +222,8 @@ impl<'a> Tarball<'a> {
222
222
cmd. arg ( "generate" )
223
223
. arg ( "--image-dir" )
224
224
. arg ( & this. image_dir )
225
- . arg ( "--non-installed-overlay" )
226
- . arg ( & this. overlay_dir )
227
225
. arg ( format ! ( "--component-name={}" , & component_name) ) ;
226
+ this. non_bare_args ( cmd) ;
228
227
} )
229
228
}
230
229
@@ -236,14 +235,41 @@ impl<'a> Tarball<'a> {
236
235
}
237
236
238
237
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) ;
244
240
} ) ;
245
241
}
246
242
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
+
247
273
fn run ( self , build_cli : impl FnOnce ( & Tarball < ' a > , & mut Command ) ) -> PathBuf {
248
274
t ! ( std:: fs:: create_dir_all( & self . overlay_dir) ) ;
249
275
self . builder . create ( & self . overlay_dir . join ( "version" ) , & self . overlay . version ( self . builder ) ) ;
@@ -256,32 +282,17 @@ impl<'a> Tarball<'a> {
256
282
257
283
let mut cmd = self . builder . tool_cmd ( crate :: tool:: Tool :: RustInstaller ) ;
258
284
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) ) ;
267
287
let _time = crate :: util:: timeit ( self . builder ) ;
268
288
269
- let distdir = crate :: dist:: distdir ( self . builder ) ;
270
289
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 ) ;
280
291
self . builder . run ( & mut cmd) ;
281
292
if self . delete_temp_dir {
282
293
t ! ( std:: fs:: remove_dir_all( & self . temp_dir) ) ;
283
294
}
284
295
285
- distdir. join ( format ! ( "{}.tar.gz" , package_name) )
296
+ crate :: dist :: distdir ( self . builder ) . join ( format ! ( "{}.tar.gz" , package_name) )
286
297
}
287
298
}
0 commit comments