diff options
| author | Billy O'Neal <billy.oneal@gmail.com> | 2018-12-11 11:48:41 -0800 |
|---|---|---|
| committer | Robert Schumacher <roschuma@microsoft.com> | 2018-12-11 11:48:41 -0800 |
| commit | cf7e2f3906f78dcb89f320a642428b54c00e4e0b (patch) | |
| tree | 97fa82d41cc2e6580bf7c00be63d3e649d7ef514 /toolsrc/src | |
| parent | 9b8cc8095323a550ecd7a184881bd5802b5a313f (diff) | |
| download | vcpkg-cf7e2f3906f78dcb89f320a642428b54c00e4e0b.tar.gz vcpkg-cf7e2f3906f78dcb89f320a642428b54c00e4e0b.zip | |
Allow redirection of the downloads folder with an environment variable. (#4883)
* Add detection for VCPKG_DOWNLOADS environment variable in vcpkgpaths.cpp.
* Pass the downloads directory from VcpkgPaths to cmake.
* Also fixup bootstrap on *nix.
* Make error message a little prettier.
* Make that bash script actually work :)
* [vcpkg] Alter Optional<> usage style
* [vcpkg-docs] Add section on Environment Variables to the docs
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"; |
