@@ -348,9 +348,16 @@ def _cargo_build_script_impl(ctx):
348348
349349 env = dict ({})
350350
351+ if ctx .attr .use_default_shell_env == - 1 :
352+ use_default_shell_env = ctx .attr ._default_use_default_shell_env [BuildSettingInfo ].value
353+ elif ctx .attr .use_default_shell_env == 0 :
354+ use_default_shell_env = False
355+ else :
356+ use_default_shell_env = True
357+
351358 # If enabled, start with the default shell env, which contains any --action_env
352359 # settings passed in on the command line and defaults like $PATH.
353- if ctx . attr . use_default_shell_env :
360+ if use_default_shell_env :
354361 env .update (ctx .configuration .default_shell_env )
355362
356363 env .update ({
@@ -537,9 +544,7 @@ def _cargo_build_script_impl(ctx):
537544 progress_message = "Running Cargo build script {}" .format (pkg_name ),
538545 env = env ,
539546 toolchain = None ,
540- # If enabled, sets the $PATH environment variable so tools like `cmake`
541- # can probe $PATH for helper tools. Defaults to `True`.
542- use_default_shell_env = ctx .attr .use_default_shell_env ,
547+ use_default_shell_env = use_default_shell_env ,
543548 )
544549
545550 return [
@@ -628,13 +633,14 @@ cargo_build_script = rule(
628633 allow_files = True ,
629634 cfg = "exec" ,
630635 ),
631- "use_default_shell_env" : attr .bool (
636+ "use_default_shell_env" : attr .int (
632637 doc = dedent ("""\
633638 Whether or not to include the default shell environment for the build
634639 script action. By default Bazel's `default_shell_env` is set for build
635640 script actions so crates like `cmake` can probe $PATH to find tools.
636641 """ ),
637- default = True ,
642+ default = - 1 ,
643+ values = [- 1 , 0 , 1 ],
638644 ),
639645 "version" : attr .string (
640646 doc = "The semantic version (semver) of the crate" ,
@@ -654,6 +660,9 @@ cargo_build_script = rule(
654660 "_debug_std_streams_output_group" : attr .label (
655661 default = Label ("//cargo/settings:debug_std_streams_output_group" ),
656662 ),
663+ "_default_use_default_shell_env" : attr .label (
664+ default = Label ("//cargo/settings:use_default_shell_env" ),
665+ ),
657666 "_experimental_symlink_execroot" : attr .label (
658667 default = Label ("//cargo/settings:experimental_symlink_execroot" ),
659668 ),
0 commit comments