@@ -245,7 +245,7 @@ impl<'meta> Fixups<'meta> {
245
245
/// dependencies referencing them are conditional).
246
246
pub fn emit_buildscript_rules (
247
247
& self ,
248
- buildscript_build : RustBinary ,
248
+ mut buildscript_build : RustBinary ,
249
249
config : & ' meta Config ,
250
250
manifest_dir : Option < SubtargetOrPath > ,
251
251
) -> anyhow:: Result < Vec < Rule > > {
@@ -308,44 +308,28 @@ impl<'meta> Fixups<'meta> {
308
308
}
309
309
}
310
310
311
+ let mut buildscript = None ;
311
312
let ( local_manifest_dir, manifest_dir) = match manifest_dir {
312
313
None => ( None , None ) ,
313
314
Some ( SubtargetOrPath :: Path ( path) ) => ( Some ( path) , None ) ,
314
315
Some ( SubtargetOrPath :: Subtarget ( subtarget) ) => ( None , Some ( subtarget) ) ,
315
316
} ;
316
- let default_buildscript_build_and_run = || {
317
- (
318
- buildscript_build. clone ( ) ,
319
- BuildscriptGenrule {
320
- name : self . buildscript_genrule_name ( ) ,
321
- buildscript_rule : buildscript_rule_name. clone ( ) ,
322
- package_name : self . package . name . clone ( ) ,
323
- version : self . package . version . clone ( ) ,
324
- features : buck:: Selectable :: Value ( features. clone ( ) ) ,
325
- env : BTreeMap :: new ( ) ,
326
- local_manifest_dir : local_manifest_dir. clone ( ) ,
327
- manifest_dir : manifest_dir. clone ( ) ,
328
- } ,
329
- )
317
+ let default_buildscript_run = || BuildscriptGenrule {
318
+ name : self . buildscript_genrule_name ( ) ,
319
+ buildscript_rule : buildscript_rule_name. clone ( ) ,
320
+ package_name : self . package . name . clone ( ) ,
321
+ version : self . package . version . clone ( ) ,
322
+ features : buck:: Selectable :: Value ( features. clone ( ) ) ,
323
+ env : BTreeMap :: new ( ) ,
324
+ local_manifest_dir : local_manifest_dir. clone ( ) ,
325
+ manifest_dir : manifest_dir. clone ( ) ,
330
326
} ;
331
- let mut buildscript = None ;
332
327
333
328
let mut cxx_library = Vec :: new ( ) ;
334
329
let mut prebuilt_cxx_library = Vec :: new ( ) ;
335
330
for ( _platform, fixup) in self . fixup_config . configs ( & self . package . version ) {
336
331
if let Some ( BuildscriptRun { env } ) = & fixup. buildscript . run {
337
- let ( buildscript_build, buildscript_run) =
338
- buildscript. get_or_insert_with ( default_buildscript_build_and_run) ;
339
-
340
- buildscript_build. common . base . env . unwrap_mut ( ) . extend (
341
- fixup
342
- . buildscript
343
- . build
344
- . env
345
- . iter ( )
346
- . map ( |( k, v) | ( k. clone ( ) , StringOrPath :: String ( v. clone ( ) ) ) ) ,
347
- ) ;
348
-
332
+ let buildscript_run = buildscript. get_or_insert_with ( default_buildscript_run) ;
349
333
buildscript_run. env . extend (
350
334
env. iter ( )
351
335
. map ( |( k, v) | ( k. clone ( ) , StringOrPath :: String ( v. clone ( ) ) ) ) ,
@@ -528,7 +512,17 @@ impl<'meta> Fixups<'meta> {
528
512
}
529
513
}
530
514
531
- if let Some ( ( mut buildscript_build, mut buildscript_run) ) = buildscript {
515
+ if let Some ( mut buildscript_run) = buildscript {
516
+ buildscript_build. common . base . env . unwrap_mut ( ) . extend (
517
+ self . fixup_config
518
+ . base
519
+ . buildscript
520
+ . build
521
+ . env
522
+ . iter ( )
523
+ . map ( |( k, v) | ( k. clone ( ) , StringOrPath :: String ( v. clone ( ) ) ) ) ,
524
+ ) ;
525
+
532
526
for ( _platform, fixup) in self . fixup_config . configs ( & self . package . version ) {
533
527
for cargo_env in fixup. cargo_env . iter ( ) {
534
528
let required = !matches ! ( fixup. cargo_env, CargoEnvs :: All ) ;
0 commit comments