From 1433ed1f172417d404babf77409b365b34d617dd Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 29 Jul 2020 23:08:08 +0200 Subject: [PATCH 1/6] [vcpkg] add environment variable VCPKG_OVERLAY_PORTS --- toolsrc/include/vcpkg/vcpkgcmdarguments.h | 1 + toolsrc/src/vcpkg/vcpkgcmdarguments.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/toolsrc/include/vcpkg/vcpkgcmdarguments.h b/toolsrc/include/vcpkg/vcpkgcmdarguments.h index ddc407a35a4aff..82c4f6dc2363ce 100644 --- a/toolsrc/include/vcpkg/vcpkgcmdarguments.h +++ b/toolsrc/include/vcpkg/vcpkgcmdarguments.h @@ -130,6 +130,7 @@ namespace vcpkg constexpr static StringLiteral TRIPLET_ENV = "VCPKG_DEFAULT_TRIPLET"; constexpr static StringLiteral TRIPLET_ARG = "triplet"; std::unique_ptr triplet; + constexpr static StringLiteral OVERLAY_PORTS_ENV = "VCPKG_OVERLAY_PORTS"; constexpr static StringLiteral OVERLAY_PORTS_ARG = "overlay-ports"; std::vector overlay_ports; constexpr static StringLiteral OVERLAY_TRIPLETS_ARG = "overlay-triplets"; diff --git a/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp b/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp index 280faae0d80f19..98d253f502170c 100644 --- a/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp +++ b/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp @@ -611,6 +611,7 @@ namespace vcpkg table.format(opt(TRIPLET_ARG, " ", ""), "Specify the target architecture triplet. See 'vcpkg help triplet'"); table.format("", "(default: " + format_environment_variable("VCPKG_DEFAULT_TRIPLET") + ')'); table.format(opt(OVERLAY_PORTS_ARG, "=", ""), "Specify directories to be used when searching for ports"); + table.format("", "(default: " + format_environment_variable("VCPKG_OVERLAY_PORTS") + ')'); table.format(opt(OVERLAY_TRIPLETS_ARG, "=", ""), "Specify directories containing triplets files"); table.format(opt(BINARY_SOURCES_ARG, "=", ""), "Add sources for binary caching. See 'vcpkg help binarycaching'"); @@ -645,6 +646,19 @@ namespace vcpkg } } + { + const auto vcpkg_overlay_ports_env = System::get_environment_variable(OVERLAY_PORTS_ENV); + if(const auto unpacked = vcpkg_overlay_ports_env.get()) + { + #ifdef WIN32 + auto overlays = Strings::split(*unpacked, ';'); + #else + auto overlays = Strings::split(*unpacked, ':'); + #endif + overlay_ports.insert(std::begin(overlay_ports),std::begin(overlays), std::end(overlays)); + } + } + if (!vcpkg_root_dir) { const auto vcpkg_root_env = System::get_environment_variable(VCPKG_ROOT_DIR_ENV); From 8e754c24b62a35b2db6c632f6a29548764798cde Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 30 Jul 2020 22:01:26 +0200 Subject: [PATCH 2/6] add documentation for VCPKG_OVERLAY_PORTS --- docs/users/config-environment.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/users/config-environment.md b/docs/users/config-environment.md index ffa988cbc38346..22f7ff84a2d3e1 100644 --- a/docs/users/config-environment.md +++ b/docs/users/config-environment.md @@ -38,11 +38,19 @@ Example: `D:\2017` This environment variable can be set to a triplet name which will be used for unqualified triplet references in command lines. +#### VCPKG_OVERLAY_PORTS + +This environment variable allows users to override ports with alternate versions according to the +[ports overlay](../specifications/ports-overlay.md) specification. List paths to overlays using +the platform dependent PATH seperator (Windows `;` | others `:`) + +Example (Windows): `C:\custom-ports\boost;C:\custom-ports\sqlite3` + #### VCPKG_FORCE_SYSTEM_BINARIES This environment variable, if set, suppresses the downloading of CMake and Ninja and forces the use of the system binaries. -### VCPKG_KEEP_ENV_VARS +#### VCPKG_KEEP_ENV_VARS This environment variable can be set to a list of environment variables, separated by `;`, which will be propagated to the build environment. From 9ebf229043433813548f98172df7a82790d153e1 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 31 Jul 2020 21:38:21 +0200 Subject: [PATCH 3/6] append env overlay instead of prepending to give explicitly listed overlays priority --- toolsrc/src/vcpkg/vcpkgcmdarguments.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp b/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp index 98d253f502170c..adb54ec0d0f31f 100644 --- a/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp +++ b/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp @@ -655,7 +655,7 @@ namespace vcpkg #else auto overlays = Strings::split(*unpacked, ':'); #endif - overlay_ports.insert(std::begin(overlay_ports),std::begin(overlays), std::end(overlays)); + overlay_ports.insert(std::end(overlay_ports),std::begin(overlays), std::end(overlays)); } } From c2e02ed3c16a05418e4ef43252a3a768915cb9e3 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 31 Jul 2020 21:43:55 +0200 Subject: [PATCH 4/6] fix formating (manually) --- toolsrc/src/vcpkg/vcpkgcmdarguments.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp b/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp index adb54ec0d0f31f..ea53564be2fd1b 100644 --- a/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp +++ b/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp @@ -650,11 +650,11 @@ namespace vcpkg const auto vcpkg_overlay_ports_env = System::get_environment_variable(OVERLAY_PORTS_ENV); if(const auto unpacked = vcpkg_overlay_ports_env.get()) { - #ifdef WIN32 - auto overlays = Strings::split(*unpacked, ';'); - #else - auto overlays = Strings::split(*unpacked, ':'); - #endif +#ifdef WIN32 + auto overlays = Strings::split(*unpacked, ';'); +#else + auto overlays = Strings::split(*unpacked, ':'); +#endif overlay_ports.insert(std::end(overlay_ports),std::begin(overlays), std::end(overlays)); } } From dbf63c3cb2dc3f9d554847de342e5dc951d0d4ba Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 1 Aug 2020 22:00:36 +0200 Subject: [PATCH 5/6] manually fixing formating --- toolsrc/src/vcpkg/vcpkgcmdarguments.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp b/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp index ea53564be2fd1b..16ee78038b496e 100644 --- a/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp +++ b/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp @@ -648,14 +648,14 @@ namespace vcpkg { const auto vcpkg_overlay_ports_env = System::get_environment_variable(OVERLAY_PORTS_ENV); - if(const auto unpacked = vcpkg_overlay_ports_env.get()) + if (const auto unpacked = vcpkg_overlay_ports_env.get()) { #ifdef WIN32 auto overlays = Strings::split(*unpacked, ';'); #else auto overlays = Strings::split(*unpacked, ':'); #endif - overlay_ports.insert(std::end(overlay_ports),std::begin(overlays), std::end(overlays)); + overlay_ports.insert(std::end(overlay_ports), std::begin(overlays), std::end(overlays)); } } From eeb9e7bad4003b8a22fe0cc5e161a46b81b2f45c Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 3 Aug 2020 23:32:21 +0200 Subject: [PATCH 6/6] improve help text Co-authored-by: ras0219 <533828+ras0219@users.noreply.github.com> --- toolsrc/src/vcpkg/vcpkgcmdarguments.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp b/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp index 16ee78038b496e..bfac3787290fb6 100644 --- a/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp +++ b/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp @@ -611,7 +611,7 @@ namespace vcpkg table.format(opt(TRIPLET_ARG, " ", ""), "Specify the target architecture triplet. See 'vcpkg help triplet'"); table.format("", "(default: " + format_environment_variable("VCPKG_DEFAULT_TRIPLET") + ')'); table.format(opt(OVERLAY_PORTS_ARG, "=", ""), "Specify directories to be used when searching for ports"); - table.format("", "(default: " + format_environment_variable("VCPKG_OVERLAY_PORTS") + ')'); + table.format("", "(also: " + format_environment_variable("VCPKG_OVERLAY_PORTS") + ')'); table.format(opt(OVERLAY_TRIPLETS_ARG, "=", ""), "Specify directories containing triplets files"); table.format(opt(BINARY_SOURCES_ARG, "=", ""), "Add sources for binary caching. See 'vcpkg help binarycaching'");