aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/vcpkg/build.cpp3
-rw-r--r--toolsrc/src/vcpkg/vcpkgpaths.cpp27
2 files changed, 28 insertions, 2 deletions
diff --git a/toolsrc/src/vcpkg/build.cpp b/toolsrc/src/vcpkg/build.cpp
index 0e60fd50e..67d9b63ed 100644
--- a/toolsrc/src/vcpkg/build.cpp
+++ b/toolsrc/src/vcpkg/build.cpp
@@ -372,7 +372,8 @@ namespace vcpkg::Build
{"TARGET_TRIPLET", spec.triplet().canonical_name()},
{"VCPKG_PLATFORM_TOOLSET", toolset.version.c_str()},
{"VCPKG_USE_HEAD_VERSION",
- Util::Enum::to_bool(config.build_package_options.use_head_version) ? "1" : "0"},
+ Util::Enum::to_bool(config.build_package_options.use_head_version) ? "1" : "0"},
+ {"DOWNLOADS", paths.downloads},
{"_VCPKG_NO_DOWNLOADS", !Util::Enum::to_bool(config.build_package_options.allow_downloads) ? "1" : "0"},
{"_VCPKG_DOWNLOAD_TOOL", to_string(config.build_package_options.download_tool)},
{"GIT", git_exe_path},
diff --git a/toolsrc/src/vcpkg/vcpkgpaths.cpp b/toolsrc/src/vcpkg/vcpkgpaths.cpp
index 9a51818e8..a92a5673e 100644
--- a/toolsrc/src/vcpkg/vcpkgpaths.cpp
+++ b/toolsrc/src/vcpkg/vcpkgpaths.cpp
@@ -34,7 +34,32 @@ namespace vcpkg
paths.packages = paths.root / "packages";
paths.buildtrees = paths.root / "buildtrees";
- paths.downloads = paths.root / "downloads";
+
+ const auto overriddenDownloadsPath = System::get_environment_variable("VCPKG_DOWNLOADS");
+ if (auto odp = overriddenDownloadsPath.get())
+ {
+ auto asPath = fs::u8path(*odp);
+ if (!fs::stdfs::is_directory(asPath))
+ {
+ Metrics::g_metrics.lock()->track_property("error", "Invalid VCPKG_DOWNLOADS override directory.");
+ Checks::exit_with_message(
+ VCPKG_LINE_INFO,
+ "Invalid downloads override directory: %s; "
+ "create that directory or unset VCPKG_DOWNLOADS to use the default downloads location.",
+ asPath.u8string());
+ }
+
+ paths.downloads = fs::stdfs::canonical(std::move(asPath), ec);
+ if (ec)
+ {
+ return ec;
+ }
+ }
+ else
+ {
+ paths.downloads = paths.root / "downloads";
+ }
+
paths.ports = paths.root / "ports";
paths.installed = paths.root / "installed";
paths.triplets = paths.root / "triplets";