aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorAlexey Gruzdev <alex.gruzdev@hotmail.com>2018-04-30 19:31:00 +0100
committerAlexey Gruzdev <alex.gruzdev@hotmail.com>2018-04-30 19:31:00 +0100
commitc72e6326dd4df3096144fe5cd510dc525ec39c9a (patch)
tree60b0d79153a484f6879ac4cf53d31c01950d1b5d /toolsrc/src
parent5897e96f9328584177fe9c13ce6b2db64d089962 (diff)
parenta9d989ec056246ea320a56ca7d02b161a6fee387 (diff)
downloadvcpkg-c72e6326dd4df3096144fe5cd510dc525ec39c9a.tar.gz
vcpkg-c72e6326dd4df3096144fe5cd510dc525ec39c9a.zip
Merge remote-tracking branch 'remotes/origin/master' into dev/agruzdev/yato
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/tests.paragraph.cpp9
-rw-r--r--toolsrc/src/tests.utils.cpp30
-rw-r--r--toolsrc/src/vcpkg/commands.ci.cpp6
-rw-r--r--toolsrc/src/vcpkg/commands.integrate.cpp87
-rw-r--r--toolsrc/src/vcpkg/userconfig.cpp11
5 files changed, 72 insertions, 71 deletions
diff --git a/toolsrc/src/tests.paragraph.cpp b/toolsrc/src/tests.paragraph.cpp
index dca89bc59..9a56ad9ee 100644
--- a/toolsrc/src/tests.paragraph.cpp
+++ b/toolsrc/src/tests.paragraph.cpp
@@ -5,15 +5,6 @@
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
-namespace Microsoft::VisualStudio::CppUnitTestFramework
-{
- template<>
- inline std::wstring ToString<vcpkg::PackageSpecParseResult>(const vcpkg::PackageSpecParseResult& t)
- {
- return ToString(static_cast<uint32_t>(t));
- }
-}
-
namespace Strings = vcpkg::Strings;
namespace UnitTest1
diff --git a/toolsrc/src/tests.utils.cpp b/toolsrc/src/tests.utils.cpp
index a3d8ffc7d..ac391f559 100644
--- a/toolsrc/src/tests.utils.cpp
+++ b/toolsrc/src/tests.utils.cpp
@@ -5,36 +5,6 @@
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
using namespace vcpkg;
-namespace Microsoft::VisualStudio::CppUnitTestFramework
-{
- std::wstring ToString(const vcpkg::Dependencies::InstallPlanType& t)
- {
- switch (t)
- {
- case Dependencies::InstallPlanType::ALREADY_INSTALLED: return L"ALREADY_INSTALLED";
- case Dependencies::InstallPlanType::BUILD_AND_INSTALL: return L"BUILD_AND_INSTALL";
- case Dependencies::InstallPlanType::EXCLUDED: return L"EXCLUDED";
- case Dependencies::InstallPlanType::UNKNOWN: return L"UNKNOWN";
- default: return ToString(static_cast<int>(t));
- }
- }
-
- std::wstring ToString(const vcpkg::Dependencies::RequestType& t)
- {
- switch (t)
- {
- case Dependencies::RequestType::AUTO_SELECTED: return L"AUTO_SELECTED";
- case Dependencies::RequestType::USER_REQUESTED: return L"USER_REQUESTED";
- case Dependencies::RequestType::UNKNOWN: return L"UNKNOWN";
- default: return ToString(static_cast<int>(t));
- }
- }
-
- std::wstring ToString(const vcpkg::PackageSpecParseResult& t) { return ToString(static_cast<uint32_t>(t)); }
-
- std::wstring ToString(const vcpkg::PackageSpec& t) { return ToString(t.to_string()); }
-}
-
std::unique_ptr<StatusParagraph> make_status_pgh(const char* name,
const char* depends,
const char* default_features,
diff --git a/toolsrc/src/vcpkg/commands.ci.cpp b/toolsrc/src/vcpkg/commands.ci.cpp
index 04b42ea00..e2b93dc7e 100644
--- a/toolsrc/src/vcpkg/commands.ci.cpp
+++ b/toolsrc/src/vcpkg/commands.ci.cpp
@@ -154,8 +154,10 @@ namespace vcpkg::Commands::CI
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet)
{
- Checks::check_exit(
- VCPKG_LINE_INFO, GlobalState::g_binary_caching, "The ci command requires binary caching to be enabled.");
+ if (!GlobalState::g_binary_caching)
+ {
+ System::println(System::Color::warning, "Warning: Running ci without binary caching!");
+ }
const ParsedArguments options = args.parse_arguments(COMMAND_STRUCTURE);
diff --git a/toolsrc/src/vcpkg/commands.integrate.cpp b/toolsrc/src/vcpkg/commands.integrate.cpp
index 2e1750c80..8897ea138 100644
--- a/toolsrc/src/vcpkg/commands.integrate.cpp
+++ b/toolsrc/src/vcpkg/commands.integrate.cpp
@@ -5,6 +5,7 @@
#include <vcpkg/base/system.h>
#include <vcpkg/base/util.h>
#include <vcpkg/commands.h>
+#include <vcpkg/userconfig.h>
namespace vcpkg::Commands::Integrate
{
@@ -156,8 +157,10 @@ namespace vcpkg::Commands::Integrate
}
#endif
+ static fs::path get_path_txt_path() { return get_user_dir() / "vcpkg.path.txt"; }
+
#if defined(_WIN32)
- static void integrate_install(const VcpkgPaths& paths)
+ static void integrate_install_msbuild14(Files::Filesystem& fs, const fs::path& tmp_dir)
{
static const std::array<fs::path, 2> OLD_SYSTEM_TARGET_FILES = {
System::get_program_files_32_bit().value_or_exit(VCPKG_LINE_INFO) /
@@ -168,8 +171,6 @@ namespace vcpkg::Commands::Integrate
System::get_program_files_32_bit().value_or_exit(VCPKG_LINE_INFO) /
"MSBuild/Microsoft.Cpp/v4.0/V140/ImportBefore/Default/vcpkg.system.props";
- auto& fs = paths.get_filesystem();
-
// TODO: This block of code should eventually be removed
for (auto&& old_system_wide_targets_file : OLD_SYSTEM_TARGET_FILES)
{
@@ -188,12 +189,6 @@ namespace vcpkg::Commands::Integrate
}
}
}
-
- std::error_code ec;
- const fs::path tmp_dir = paths.buildsystems / "tmp";
- fs.create_directory(paths.buildsystems, ec);
- fs.create_directory(tmp_dir, ec);
-
bool should_install_system = true;
const Expected<std::string> system_wide_file_contents = fs.read_contents(SYSTEM_WIDE_TARGETS_FILE);
static const std::regex RE(R"###(<!-- version (\d+) -->)###");
@@ -232,24 +227,52 @@ namespace vcpkg::Commands::Integrate
"Error: failed to copy targets file to %s",
SYSTEM_WIDE_TARGETS_FILE.string());
}
+ }
+#endif
- const fs::path appdata_src_path = tmp_dir / "vcpkg.user.targets";
- fs.write_contents(appdata_src_path,
- create_appdata_targets_shortcut(paths.buildsystems_msbuild_targets.string()));
- auto appdata_dst_path = get_appdata_targets_path();
+ static void integrate_install(const VcpkgPaths& paths)
+ {
+ auto& fs = paths.get_filesystem();
+
+#if defined(_WIN32)
+ {
+ std::error_code ec;
+ const fs::path tmp_dir = paths.buildsystems / "tmp";
+ fs.create_directory(paths.buildsystems, ec);
+ fs.create_directory(tmp_dir, ec);
+
+ integrate_install_msbuild14(fs, tmp_dir);
+
+ const fs::path appdata_src_path = tmp_dir / "vcpkg.user.targets";
+ fs.write_contents(appdata_src_path,
+ create_appdata_targets_shortcut(paths.buildsystems_msbuild_targets.string()));
+ auto appdata_dst_path = get_appdata_targets_path();
- const auto rc = fs.copy_file(appdata_src_path, appdata_dst_path, fs::copy_options::overwrite_existing, ec);
+ const auto rc = fs.copy_file(appdata_src_path, appdata_dst_path, fs::copy_options::overwrite_existing, ec);
+
+ if (!rc || ec)
+ {
+ System::println(System::Color::error,
+ "Error: Failed to copy file: %s -> %s",
+ appdata_src_path.string(),
+ appdata_dst_path.string());
+ Checks::exit_fail(VCPKG_LINE_INFO);
+ }
+ }
+#endif
- if (!rc || ec)
+ const auto pathtxt = get_path_txt_path();
+ std::error_code ec;
+ fs.write_contents(pathtxt, paths.root.generic_u8string(), ec);
+ if (ec)
{
- System::println(System::Color::error,
- "Error: Failed to copy file: %s -> %s",
- appdata_src_path.string(),
- appdata_dst_path.string());
+ System::println(System::Color::error, "Error: Failed to write file: %s", pathtxt.string());
Checks::exit_fail(VCPKG_LINE_INFO);
}
+
System::println(System::Color::success, "Applied user-wide integration for this vcpkg root.");
const fs::path cmake_toolchain = paths.buildsystems / "vcpkg.cmake";
+#if defined(_WIN32)
System::println(
R"(
All MSBuild C++ projects can now #include any installed libraries.
@@ -258,17 +281,29 @@ Installing new libraries will make them instantly available.
CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=%s")",
cmake_toolchain.generic_string());
+#else
+ System::println(
+ R"(
+CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=%s")",
+ cmake_toolchain.generic_string());
+#endif
Checks::exit_success(VCPKG_LINE_INFO);
}
static void integrate_remove(Files::Filesystem& fs)
{
+ std::error_code ec;
+ bool was_deleted = false;
+
+#if defined(_WIN32)
const fs::path path = get_appdata_targets_path();
- std::error_code ec;
- const bool was_deleted = fs.remove(path, ec);
+ was_deleted |= fs.remove(path, ec);
+ Checks::check_exit(VCPKG_LINE_INFO, !ec, "Error: Unable to remove user-wide integration: %s", ec.message());
+#endif
+ was_deleted |= fs.remove(get_path_txt_path(), ec);
Checks::check_exit(VCPKG_LINE_INFO, !ec, "Error: Unable to remove user-wide integration: %s", ec.message());
if (was_deleted)
@@ -282,7 +317,6 @@ CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=%s")",
Checks::exit_success(VCPKG_LINE_INFO);
}
-#endif
#if defined(WIN32)
static void integrate_project(const VcpkgPaths& paths)
@@ -343,7 +377,8 @@ With a project open, go to Tools->NuGet Package Manager->Package Manager Console
" vcpkg integrate powershell Enable PowerShell Tab-Completion\n";
#else
const char* const INTEGRATE_COMMAND_HELPSTRING =
- "No user-wide integration methods are available on this platform\n";
+ " vcpkg integrate install Make installed packages available user-wide.\n"
+ " vcpkg integrate remove Remove user-wide integration\n";
#endif
namespace Subcommand
@@ -373,7 +408,6 @@ With a project open, go to Tools->NuGet Package Manager->Package Manager Console
{
Util::unused(args.parse_arguments(COMMAND_STRUCTURE));
-#if defined(_WIN32)
if (args.command_arguments[0] == Subcommand::INSTALL)
{
return integrate_install(paths);
@@ -382,6 +416,7 @@ With a project open, go to Tools->NuGet Package Manager->Package Manager Console
{
return integrate_remove(paths.get_filesystem());
}
+#if defined(_WIN32)
if (args.command_arguments[0] == Subcommand::PROJECT)
{
return integrate_project(paths);
@@ -392,10 +427,8 @@ With a project open, go to Tools->NuGet Package Manager->Package Manager Console
paths.scripts / "addPoshVcpkgToPowershellProfile.ps1");
Checks::exit_success(VCPKG_LINE_INFO);
}
+#endif
Checks::exit_with_message(VCPKG_LINE_INFO, "Unknown parameter %s for integrate", args.command_arguments[0]);
-#else
- Checks::exit_success(VCPKG_LINE_INFO);
-#endif
}
}
diff --git a/toolsrc/src/vcpkg/userconfig.cpp b/toolsrc/src/vcpkg/userconfig.cpp
index 574a97b64..4945fdaaa 100644
--- a/toolsrc/src/vcpkg/userconfig.cpp
+++ b/toolsrc/src/vcpkg/userconfig.cpp
@@ -29,16 +29,21 @@ namespace
namespace vcpkg
{
- static fs::path get_config_path()
+ fs::path get_user_dir()
{
#if defined(_WIN32)
- return get_localappdata() / "vcpkg" / "config";
+ return get_localappdata() / "vcpkg";
#else
auto maybe_home = System::get_environment_variable("HOME");
- return fs::path(maybe_home.value_or("/var")) / ".vcpkg" / "config";
+ return fs::path(maybe_home.value_or("/var")) / ".vcpkg";
#endif
}
+ static fs::path get_config_path()
+ {
+ return get_user_dir() / "config";
+ }
+
UserConfig UserConfig::try_read_data(const Files::Filesystem& fs)
{
UserConfig ret;