diff options
| author | ras0219 <533828+ras0219@users.noreply.github.com> | 2020-12-17 11:35:08 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-17 11:35:08 -0800 |
| commit | 9a81392e48e88ac4789107b100b93504d4ac713c (patch) | |
| tree | 895a03748f7f93a09b23c22463c050ad0dabe896 /toolsrc/src | |
| parent | a268c5a7f1aa0e933924bc09d48d92f0120769e5 (diff) | |
| download | vcpkg-9a81392e48e88ac4789107b100b93504d4ac713c.tar.gz vcpkg-9a81392e48e88ac4789107b100b93504d4ac713c.zip | |
[vcpkg] `VCPKG_ENV_PASSTHROUGH_UNTRACKED` (#15115)
* [vcpkg] Add VCPKG_ENV_PASSTHROUGH_UNTRACKED
* [vcpkg] CR comments
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
Diffstat (limited to 'toolsrc/src')
| -rw-r--r-- | toolsrc/src/vcpkg/build.cpp | 18 | ||||
| -rw-r--r-- | toolsrc/src/vcpkg/commands.env.cpp | 7 |
2 files changed, 20 insertions, 5 deletions
diff --git a/toolsrc/src/vcpkg/build.cpp b/toolsrc/src/vcpkg/build.cpp index 4cc4c2987..b01162b4f 100644 --- a/toolsrc/src/vcpkg/build.cpp +++ b/toolsrc/src/vcpkg/build.cpp @@ -896,11 +896,13 @@ namespace vcpkg::Build Hash::Algorithm::Sha1)); } - for (const auto& env_var : pre_build_info.passthrough_env_vars) + for (const auto& env_var : pre_build_info.passthrough_env_vars_tracked) { - abi_tag_entries.emplace_back( - "ENV:" + env_var, - Hash::get_string_hash(System::get_environment_variable(env_var).value_or(""), Hash::Algorithm::Sha1)); + if (auto e = System::get_environment_variable(env_var)) + { + abi_tag_entries.emplace_back( + "ENV:" + env_var, Hash::get_string_hash(e.value_or_exit(VCPKG_LINE_INFO), Hash::Algorithm::Sha1)); + } } } @@ -1305,6 +1307,7 @@ namespace vcpkg::Build CHAINLOAD_TOOLCHAIN_FILE, BUILD_TYPE, ENV_PASSTHROUGH, + ENV_PASSTHROUGH_UNTRACKED, PUBLIC_ABI_OVERRIDE, LOAD_VCVARS_ENV, }; @@ -1318,6 +1321,7 @@ namespace vcpkg::Build {"VCPKG_CHAINLOAD_TOOLCHAIN_FILE", VcpkgTripletVar::CHAINLOAD_TOOLCHAIN_FILE}, {"VCPKG_BUILD_TYPE", VcpkgTripletVar::BUILD_TYPE}, {"VCPKG_ENV_PASSTHROUGH", VcpkgTripletVar::ENV_PASSTHROUGH}, + {"VCPKG_ENV_PASSTHROUGH_UNTRACKED", VcpkgTripletVar::ENV_PASSTHROUGH_UNTRACKED}, {"VCPKG_PUBLIC_ABI_OVERRIDE", VcpkgTripletVar::PUBLIC_ABI_OVERRIDE}, {"VCPKG_LOAD_VCVARS_ENV", VcpkgTripletVar::LOAD_VCVARS_ENV}, }; @@ -1365,7 +1369,11 @@ namespace vcpkg::Build variable_value); break; case VcpkgTripletVar::ENV_PASSTHROUGH: - passthrough_env_vars = Strings::split(variable_value, ';'); + passthrough_env_vars_tracked = Strings::split(variable_value, ';'); + Util::Vectors::append(&passthrough_env_vars, passthrough_env_vars_tracked); + break; + case VcpkgTripletVar::ENV_PASSTHROUGH_UNTRACKED: + Util::Vectors::append(&passthrough_env_vars, Strings::split(variable_value, ';')); break; case VcpkgTripletVar::PUBLIC_ABI_OVERRIDE: public_abi_override = variable_value.empty() ? nullopt : Optional<std::string>{variable_value}; diff --git a/toolsrc/src/vcpkg/commands.env.cpp b/toolsrc/src/vcpkg/commands.env.cpp index eadfd5bc0..d05a6ef50 100644 --- a/toolsrc/src/vcpkg/commands.env.cpp +++ b/toolsrc/src/vcpkg/commands.env.cpp @@ -75,6 +75,13 @@ namespace vcpkg::Commands::Env extra_env.emplace("PYTHONPATH", fs::u8string(paths.installed / fs::u8path(triplet.to_string()) / fs::u8path("python"))); if (path_vars.size() > 0) extra_env.emplace("PATH", Strings::join(";", path_vars)); + for (auto&& passthrough : pre_build_info.passthrough_env_vars) + { + if (auto e = System::get_environment_variable(passthrough)) + { + extra_env.emplace(passthrough, e.value_or_exit(VCPKG_LINE_INFO)); + } + } auto env = [&] { auto clean_env = System::get_modified_clean_environment(extra_env); |
