diff options
Diffstat (limited to 'toolsrc/src')
| -rw-r--r-- | toolsrc/src/vcpkg/build.cpp | 3 | ||||
| -rw-r--r-- | toolsrc/src/vcpkg/vcpkgpaths.cpp | 27 |
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"; |
