aboutsummaryrefslogtreecommitdiff
path: root/toolsrc
diff options
context:
space:
mode:
Diffstat (limited to 'toolsrc')
-rw-r--r--toolsrc/include/vcpkg/vcpkgcmdarguments.h2
-rw-r--r--toolsrc/include/vcpkg/vcpkgpaths.h3
-rw-r--r--toolsrc/src/vcpkg-test/arguments.cpp4
-rw-r--r--toolsrc/src/vcpkg-test/commands.create.cpp27
-rw-r--r--toolsrc/src/vcpkg/commands.create.cpp6
-rw-r--r--toolsrc/src/vcpkg/vcpkgcmdarguments.cpp2
-rw-r--r--toolsrc/src/vcpkg/vcpkgpaths.cpp2
7 files changed, 17 insertions, 29 deletions
diff --git a/toolsrc/include/vcpkg/vcpkgcmdarguments.h b/toolsrc/include/vcpkg/vcpkgcmdarguments.h
index 16e433d63..f18f4843c 100644
--- a/toolsrc/include/vcpkg/vcpkgcmdarguments.h
+++ b/toolsrc/include/vcpkg/vcpkgcmdarguments.h
@@ -132,6 +132,8 @@ namespace vcpkg
std::unique_ptr<std::string> packages_root_dir;
constexpr static StringLiteral SCRIPTS_ROOT_DIR_ARG = "x-scripts-root";
std::unique_ptr<std::string> scripts_root_dir;
+ constexpr static StringLiteral BUILTIN_PORTS_ROOT_DIR_ARG = "x-builtin-ports-root";
+ std::unique_ptr<std::string> builtin_ports_root_dir;
constexpr static StringLiteral DEFAULT_VISUAL_STUDIO_PATH_ENV = "VCPKG_VISUAL_STUDIO_PATH";
std::unique_ptr<std::string> default_visual_studio_path;
diff --git a/toolsrc/include/vcpkg/vcpkgpaths.h b/toolsrc/include/vcpkg/vcpkgpaths.h
index 257ecf7bb..e71f28b0a 100644
--- a/toolsrc/include/vcpkg/vcpkgpaths.h
+++ b/toolsrc/include/vcpkg/vcpkgpaths.h
@@ -91,6 +91,7 @@ namespace vcpkg
fs::path community_triplets;
fs::path scripts;
fs::path prefab;
+ fs::path builtin_ports;
fs::path tools;
fs::path buildsystems;
@@ -142,7 +143,7 @@ namespace vcpkg
// the directory of the builtin ports
// this should be used only for helper commands, not core commands like `install`.
- fs::path builtin_ports_directory() const { return root / fs::u8path("ports"); }
+ fs::path builtin_ports_directory() const { return this->builtin_ports; }
private:
std::unique_ptr<details::VcpkgPathsImpl> m_pimpl;
diff --git a/toolsrc/src/vcpkg-test/arguments.cpp b/toolsrc/src/vcpkg-test/arguments.cpp
index 00a1beb81..f5cbf7b15 100644
--- a/toolsrc/src/vcpkg-test/arguments.cpp
+++ b/toolsrc/src/vcpkg-test/arguments.cpp
@@ -14,6 +14,7 @@ TEST_CASE ("VcpkgCmdArguments from lowercase argument sequence", "[arguments]")
std::vector<std::string> t = {"--vcpkg-root",
"C:\\vcpkg",
"--x-scripts-root=C:\\scripts",
+ "--x-builtin-ports-root=C:\\ports",
"--debug",
"--sendmetrics",
"--printmetrics",
@@ -25,6 +26,7 @@ TEST_CASE ("VcpkgCmdArguments from lowercase argument sequence", "[arguments]")
REQUIRE(*v.vcpkg_root_dir == "C:\\vcpkg");
REQUIRE(*v.scripts_root_dir == "C:\\scripts");
+ REQUIRE(*v.builtin_ports_root_dir == "C:\\ports");
REQUIRE(v.debug);
REQUIRE(*v.debug.get());
REQUIRE(v.send_metrics);
@@ -46,6 +48,7 @@ TEST_CASE ("VcpkgCmdArguments from uppercase argument sequence", "[arguments]")
std::vector<std::string> t = {"--VCPKG-ROOT",
"C:\\vcpkg",
"--X-SCRIPTS-ROOT=C:\\scripts",
+ "--X-BUILTIN-PORTS-ROOT=C:\\ports",
"--DEBUG",
"--SENDMETRICS",
"--PRINTMETRICS",
@@ -57,6 +60,7 @@ TEST_CASE ("VcpkgCmdArguments from uppercase argument sequence", "[arguments]")
REQUIRE(*v.vcpkg_root_dir == "C:\\vcpkg");
REQUIRE(*v.scripts_root_dir == "C:\\scripts");
+ REQUIRE(*v.builtin_ports_root_dir == "C:\\ports");
REQUIRE(v.debug);
REQUIRE(*v.debug.get());
REQUIRE(v.send_metrics);
diff --git a/toolsrc/src/vcpkg-test/commands.create.cpp b/toolsrc/src/vcpkg-test/commands.create.cpp
deleted file mode 100644
index 8b8dfa230..000000000
--- a/toolsrc/src/vcpkg-test/commands.create.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#include <catch2/catch.hpp>
-
-#include <vcpkg/base/files.h>
-
-#include <vcpkg/commands.create.h>
-#include <vcpkg/vcpkgcmdarguments.h>
-#include <vcpkg/vcpkgpaths.h>
-
-#include <iterator>
-#include <string>
-
-TEST_CASE ("create smoke test", "[commands-create]")
-{
- using namespace vcpkg;
- static const std::string argsRaw[] = {"create", "zlib2", "http://zlib.net/zlib-1.2.11.tar.gz", "zlib-1.2.11.zip"};
-
- auto& fsWrapper = Files::get_real_filesystem();
- VcpkgCmdArguments args = VcpkgCmdArguments::create_from_arg_sequence(std::begin(argsRaw), std::end(argsRaw));
- VcpkgPaths paths(fsWrapper, args);
- const auto exit_code = Commands::Create::perform(args, paths);
- REQUIRE(exit_code == 0);
- const auto expected_port = paths.builtin_ports_directory() / fs::u8path("zlib2");
- const auto expected_portfile_cmake = expected_port / fs::u8path("portfile.cmake");
- const auto lines = fsWrapper.read_lines(expected_portfile_cmake);
- REQUIRE(lines.has_value());
- fsWrapper.remove_all(expected_port, ignore_errors);
-}
diff --git a/toolsrc/src/vcpkg/commands.create.cpp b/toolsrc/src/vcpkg/commands.create.cpp
index c3268bd5e..28f0377c5 100644
--- a/toolsrc/src/vcpkg/commands.create.cpp
+++ b/toolsrc/src/vcpkg/commands.create.cpp
@@ -34,7 +34,11 @@ namespace vcpkg::Commands::Create
const std::string port_name = args.command_arguments.at(0);
const std::string url = remove_trailing_slashes(args.command_arguments.at(1));
- std::vector<System::CMakeVariable> cmake_args{{"CMD", "CREATE"}, {"PORT", port_name}, {"URL", url}};
+ std::vector<System::CMakeVariable> cmake_args{
+ {"CMD", "CREATE"},
+ {"PORT", port_name},
+ {"URL", url},
+ {"PORT_PATH", fs::generic_u8string(paths.builtin_ports_directory() / fs::u8path(port_name))}};
if (args.command_arguments.size() >= 3)
{
diff --git a/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp b/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp
index c311d28e9..5b25b32d8 100644
--- a/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp
+++ b/toolsrc/src/vcpkg/vcpkgcmdarguments.cpp
@@ -276,6 +276,7 @@ namespace vcpkg
{INSTALL_ROOT_DIR_ARG, &VcpkgCmdArguments::install_root_dir},
{PACKAGES_ROOT_DIR_ARG, &VcpkgCmdArguments::packages_root_dir},
{SCRIPTS_ROOT_DIR_ARG, &VcpkgCmdArguments::scripts_root_dir},
+ {BUILTIN_PORTS_ROOT_DIR_ARG, &VcpkgCmdArguments::builtin_ports_root_dir},
};
constexpr static std::pair<StringView, std::vector<std::string> VcpkgCmdArguments::*>
@@ -913,6 +914,7 @@ namespace vcpkg
constexpr StringLiteral VcpkgCmdArguments::INSTALL_ROOT_DIR_ARG;
constexpr StringLiteral VcpkgCmdArguments::PACKAGES_ROOT_DIR_ARG;
constexpr StringLiteral VcpkgCmdArguments::SCRIPTS_ROOT_DIR_ARG;
+ constexpr StringLiteral VcpkgCmdArguments::BUILTIN_PORTS_ROOT_DIR_ARG;
constexpr StringLiteral VcpkgCmdArguments::DEFAULT_VISUAL_STUDIO_PATH_ENV;
diff --git a/toolsrc/src/vcpkg/vcpkgpaths.cpp b/toolsrc/src/vcpkg/vcpkgpaths.cpp
index 869605ed5..5c7e6a77e 100644
--- a/toolsrc/src/vcpkg/vcpkgpaths.cpp
+++ b/toolsrc/src/vcpkg/vcpkgpaths.cpp
@@ -340,6 +340,8 @@ If you wish to silence this error and use classic mode, you can:
packages =
process_output_directory(filesystem, root, args.packages_root_dir.get(), "packages", VCPKG_LINE_INFO);
scripts = process_input_directory(filesystem, root, args.scripts_root_dir.get(), "scripts", VCPKG_LINE_INFO);
+ builtin_ports =
+ process_output_directory(filesystem, root, args.builtin_ports_root_dir.get(), "ports", VCPKG_LINE_INFO);
prefab = root / fs::u8path("prefab");
if (args.default_visual_studio_path)