@@ -19,9 +19,9 @@ use crate::rendering::template_engine::TemplateEngine;
19
19
use crate :: select:: Select ;
20
20
use crate :: splicing:: default_splicing_package_crate_id;
21
21
use crate :: utils:: starlark:: {
22
- self , Alias , CargoBuildScript , CommonAttrs , Data , ExportsFiles , Filegroup , Glob , Label , Load ,
23
- Package , RustBinary , RustLibrary , RustProcMacro , SelectDict , SelectList , SelectScalar ,
24
- SelectSet , Starlark , TargetCompatibleWith ,
22
+ self , Alias , CargoBuildScript , CargoTomlEnvVars , CommonAttrs , Data , ExportsFiles , Filegroup ,
23
+ Glob , Label , Load , Package , RustBinary , RustLibrary , RustProcMacro , SelectDict , SelectList ,
24
+ SelectScalar , SelectSet , Starlark , TargetCompatibleWith ,
25
25
} ;
26
26
use crate :: utils:: target_triple:: TargetTriple ;
27
27
use crate :: utils:: { self , sanitize_repository_name} ;
@@ -360,6 +360,12 @@ impl Renderer {
360
360
platforms : & Platforms ,
361
361
krate : & CrateContext ,
362
362
) -> Result < String > {
363
+ let mut krate = krate. clone ( ) ;
364
+ krate
365
+ . common_attrs
366
+ . rustc_env_files
367
+ . insert ( ":cargo_toml_env_vars" . to_owned ( ) , None ) ;
368
+
363
369
let mut starlark = Vec :: new ( ) ;
364
370
365
371
// Banner comment for top of the file.
@@ -433,6 +439,12 @@ impl Renderer {
433
439
starlark. push ( Starlark :: Package ( package) ) ;
434
440
}
435
441
442
+ load ( "@rules_rust//cargo:defs.bzl" , "cargo_toml_env_vars" ) ;
443
+ starlark. push ( Starlark :: CargoTomlEnvVars ( CargoTomlEnvVars {
444
+ name : "cargo_toml_env_vars" . to_owned ( ) ,
445
+ src : "Cargo.toml" . to_owned ( ) ,
446
+ } ) ) ;
447
+
436
448
for rule in & krate. targets {
437
449
if let Some ( override_target) = krate. override_targets . get ( rule. override_target_key ( ) ) {
438
450
starlark. push ( Starlark :: Alias ( Alias {
@@ -446,7 +458,7 @@ impl Renderer {
446
458
Rule :: BuildScript ( target) => {
447
459
load ( "@rules_rust//cargo:defs.bzl" , "cargo_build_script" ) ;
448
460
let cargo_build_script =
449
- self . make_cargo_build_script ( platforms, krate, target) ?;
461
+ self . make_cargo_build_script ( platforms, & krate, target) ?;
450
462
starlark. push ( Starlark :: CargoBuildScript ( cargo_build_script) ) ;
451
463
starlark. push ( Starlark :: Alias ( Alias {
452
464
rule : AliasRule :: default ( ) . rule ( ) ,
@@ -458,17 +470,17 @@ impl Renderer {
458
470
Rule :: ProcMacro ( target) => {
459
471
load ( "@rules_rust//rust:defs.bzl" , "rust_proc_macro" ) ;
460
472
let rust_proc_macro =
461
- self . make_rust_proc_macro ( platforms, krate, target) ?;
473
+ self . make_rust_proc_macro ( platforms, & krate, target) ?;
462
474
starlark. push ( Starlark :: RustProcMacro ( rust_proc_macro) ) ;
463
475
}
464
476
Rule :: Library ( target) => {
465
477
load ( "@rules_rust//rust:defs.bzl" , "rust_library" ) ;
466
- let rust_library = self . make_rust_library ( platforms, krate, target) ?;
478
+ let rust_library = self . make_rust_library ( platforms, & krate, target) ?;
467
479
starlark. push ( Starlark :: RustLibrary ( rust_library) ) ;
468
480
}
469
481
Rule :: Binary ( target) => {
470
482
load ( "@rules_rust//rust:defs.bzl" , "rust_binary" ) ;
471
- let rust_binary = self . make_rust_binary ( platforms, krate, target) ?;
483
+ let rust_binary = self . make_rust_binary ( platforms, & krate, target) ?;
472
484
starlark. push ( Starlark :: RustBinary ( rust_binary) ) ;
473
485
}
474
486
}
0 commit comments