aboutsummaryrefslogtreecommitdiff
path: root/toolsrc
diff options
context:
space:
mode:
authorWimok Nupphiboon <wimok.mok@gmail.com>2018-03-30 21:58:49 +0700
committerWimok Nupphiboon <wimok.mok@gmail.com>2018-03-30 21:58:49 +0700
commitc681f4ee840c81a508fc0e8352c9aedf66fb5eaf (patch)
tree5bda96eca1cee03af97da726b9b3d3038d75fae1 /toolsrc
parent663be4bbffd435cf5e5fc62a0774c784c10ddc68 (diff)
parentf9d4692749ad68340a07453add49a8ef029fa155 (diff)
downloadvcpkg-c681f4ee840c81a508fc0e8352c9aedf66fb5eaf.tar.gz
vcpkg-c681f4ee840c81a508fc0e8352c9aedf66fb5eaf.zip
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'toolsrc')
-rw-r--r--toolsrc/CMakeLists.txt6
-rw-r--r--toolsrc/VERSION.txt2
-rw-r--r--toolsrc/include/vcpkg/base/util.h12
-rw-r--r--toolsrc/include/vcpkg/dependencies.h2
-rw-r--r--toolsrc/src/vcpkg/install.cpp11
-rw-r--r--toolsrc/src/vcpkg/paragraphs.cpp4
-rw-r--r--toolsrc/src/vcpkg/vcpkglib.cpp1
-rw-r--r--toolsrc/src/vcpkg/vcpkgpaths.cpp17
8 files changed, 38 insertions, 17 deletions
diff --git a/toolsrc/CMakeLists.txt b/toolsrc/CMakeLists.txt
index da0f41631..2a1304526 100644
--- a/toolsrc/CMakeLists.txt
+++ b/toolsrc/CMakeLists.txt
@@ -3,6 +3,12 @@ project(vcpkg C CXX)
if(CMAKE_COMPILER_IS_GNUXX OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set(GCC 1)
+elseif(CMAKE_CXX_COMPILER_ID MATCHES "AppleClang")
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS_EQUAL 9.0.0)
+ message(FATAL_ERROR "Apple clang versions 9 and below do not have support for the C++ Filesystem TS. Please install gcc6 or newer from homebrew (brew install gcc6).")
+ else()
+ set(CLANG 1)
+ endif()
elseif(CMAKE_CXX_COMPILER_ID MATCHES "[Cc]lang")
set(CLANG 1)
elseif(MSVC)
diff --git a/toolsrc/VERSION.txt b/toolsrc/VERSION.txt
index 1305e8f43..daa1cd86e 100644
--- a/toolsrc/VERSION.txt
+++ b/toolsrc/VERSION.txt
@@ -1 +1 @@
-"0.0.106" \ No newline at end of file
+"0.0.107" \ No newline at end of file
diff --git a/toolsrc/include/vcpkg/base/util.h b/toolsrc/include/vcpkg/base/util.h
index c73345719..7266fbbc6 100644
--- a/toolsrc/include/vcpkg/base/util.h
+++ b/toolsrc/include/vcpkg/base/util.h
@@ -3,6 +3,7 @@
#include <algorithm>
#include <map>
#include <mutex>
+#include <unordered_map>
#include <utility>
#include <vector>
@@ -29,6 +30,17 @@ namespace vcpkg::Util
}
}
+ namespace Maps
+ {
+ template<class K, class V1, class V2, class Func>
+ void transform_values(const std::unordered_map<K, V1>& container, std::unordered_map<K, V2>& output, Func func)
+ {
+ std::for_each(container.cbegin(), container.cend(), [&](const std::pair<const K, V1>& p) {
+ output[p.first] = func(p.second);
+ });
+ }
+ }
+
template<class Cont, class Func>
using FmapOut = decltype(std::declval<Func&>()(*begin(std::declval<Cont&>())));
diff --git a/toolsrc/include/vcpkg/dependencies.h b/toolsrc/include/vcpkg/dependencies.h
index 33af6c4f5..fea0d88a9 100644
--- a/toolsrc/include/vcpkg/dependencies.h
+++ b/toolsrc/include/vcpkg/dependencies.h
@@ -175,7 +175,7 @@ namespace vcpkg::Dependencies
const std::vector<FeatureSpec>& specs,
const StatusParagraphs& status_db);
- std::vector<AnyAction> create_feature_install_plan(const PortFileProvider& port_file_provider,
+ std::vector<AnyAction> create_feature_install_plan(const PortFileProvider& provider,
const std::vector<FeatureSpec>& specs,
const StatusParagraphs& status_db);
diff --git a/toolsrc/src/vcpkg/install.cpp b/toolsrc/src/vcpkg/install.cpp
index e30a34c18..1fbf6d97e 100644
--- a/toolsrc/src/vcpkg/install.cpp
+++ b/toolsrc/src/vcpkg/install.cpp
@@ -70,8 +70,8 @@ namespace vcpkg::Install
}
const std::string filename = file.filename().u8string();
- if (fs::is_regular_file(status) && (Strings::case_insensitive_ascii_equals(filename.c_str(), "CONTROL") ||
- Strings::case_insensitive_ascii_equals(filename.c_str(), "BUILD_INFO")))
+ if (fs::is_regular_file(status) && (Strings::case_insensitive_ascii_equals(filename, "CONTROL") ||
+ Strings::case_insensitive_ascii_equals(filename, "BUILD_INFO")))
{
// Do not copy the control file
continue;
@@ -558,16 +558,15 @@ namespace vcpkg::Install
Build::CleanBuildtrees::NO,
Build::CleanPackages::NO};
- // Note: action_plan will hold raw pointers to SourceControlFiles from this map
- std::vector<AnyAction> action_plan;
-
auto all_ports = Paragraphs::load_all_ports(paths.get_filesystem(), paths.ports);
std::unordered_map<std::string, SourceControlFile> scf_map;
for (auto&& port : all_ports)
scf_map[port->core_paragraph->name] = std::move(*port);
MapPortFileProvider provider(scf_map);
- action_plan = create_feature_install_plan(provider, FullPackageSpec::to_feature_specs(specs), status_db);
+ // Note: action_plan will hold raw pointers to SourceControlFiles from this map
+ std::vector<AnyAction> action_plan =
+ create_feature_install_plan(provider, FullPackageSpec::to_feature_specs(specs), status_db);
if (!GlobalState::feature_packages)
{
diff --git a/toolsrc/src/vcpkg/paragraphs.cpp b/toolsrc/src/vcpkg/paragraphs.cpp
index d0b0c0abf..41ffceec7 100644
--- a/toolsrc/src/vcpkg/paragraphs.cpp
+++ b/toolsrc/src/vcpkg/paragraphs.cpp
@@ -251,7 +251,9 @@ namespace vcpkg::Paragraphs
LoadResults try_load_all_ports(const Files::Filesystem& fs, const fs::path& ports_dir)
{
LoadResults ret;
- for (auto&& path : fs.get_files_non_recursive(ports_dir))
+ auto port_dirs = fs.get_files_non_recursive(ports_dir);
+ Util::sort(port_dirs);
+ for (auto&& path : port_dirs)
{
auto maybe_spgh = try_load_port(fs, path);
if (const auto spgh = maybe_spgh.get())
diff --git a/toolsrc/src/vcpkg/vcpkglib.cpp b/toolsrc/src/vcpkg/vcpkglib.cpp
index 220c29720..7979fd9a5 100644
--- a/toolsrc/src/vcpkg/vcpkglib.cpp
+++ b/toolsrc/src/vcpkg/vcpkglib.cpp
@@ -54,6 +54,7 @@ namespace vcpkg
StatusParagraphs current_status_db = load_current_database(fs, status_file, status_file_old);
auto update_files = fs.get_files_non_recursive(updates_dir);
+ Util::sort(update_files);
if (update_files.empty())
{
// updates directory is empty, control file is up-to-date.
diff --git a/toolsrc/src/vcpkg/vcpkgpaths.cpp b/toolsrc/src/vcpkg/vcpkgpaths.cpp
index c36def15d..a17ffeb05 100644
--- a/toolsrc/src/vcpkg/vcpkgpaths.cpp
+++ b/toolsrc/src/vcpkg/vcpkgpaths.cpp
@@ -46,9 +46,9 @@ namespace vcpkg
#if defined(_WIN32)
static constexpr StringLiteral OS_STRING = "";
#elif defined(__APPLE__)
- static constexpr StringLiteral OS_STRING = " os=\"osx\"";
+ static constexpr StringLiteral OS_STRING = R"(os="osx")";
#else // assume linux
- static constexpr StringLiteral OS_STRING = " os=\"linux\"";
+ static constexpr StringLiteral OS_STRING = R"(os="linux")";
#endif
static const fs::path XML_PATH = paths.scripts / "vcpkgTools.xml";
@@ -72,15 +72,15 @@ namespace vcpkg
};
static const std::string XML = paths.get_filesystem().read_contents(XML_PATH).value_or_exit(VCPKG_LINE_INFO);
- static const std::regex VERSION_REGEX{
- Strings::format(R"###(<requiredVersion>([\s\S]*?)</requiredVersion>)###", tool)};
+ static const std::regex VERSION_REGEX{R"###(<requiredVersion>([\s\S]*?)</requiredVersion>)###"};
static const std::regex EXE_RELATIVE_PATH_REGEX{
- Strings::format(R"###(<exeRelativePath%s>([\s\S]*?)</exeRelativePath>)###", OS_STRING)};
+ Strings::format(R"###(<exeRelativePath>([\s\S]*?)</exeRelativePath>)###")};
static const std::regex ARCHIVE_RELATIVE_PATH_REGEX{
- Strings::format(R"###(<archiveRelativePath%s>([\s\S]*?)</archiveRelativePath>)###", OS_STRING)};
- static const std::regex URL_REGEX{Strings::format(R"###(<url%s>([\s\S]*?)</url>)###", OS_STRING)};
+ Strings::format(R"###(<archiveRelativePath>([\s\S]*?)</archiveRelativePath>)###")};
+ static const std::regex URL_REGEX{Strings::format(R"###(<url>([\s\S]*?)</url>)###")};
- const std::regex tool_regex{Strings::format(R"###(<tool[\s]+name="%s">([\s\S]*?)</tool>)###", tool)};
+ const std::regex tool_regex{
+ Strings::format(R"###(<tool[\s]+name="%s"[\s]*%s>([\s\S]*?)</tool>)###", tool, OS_STRING)};
std::smatch match_tool;
const bool has_match_tool = std::regex_search(XML.cbegin(), XML.cend(), match_tool, tool_regex);
@@ -405,6 +405,7 @@ namespace vcpkg
{
output.push_back(path.stem().filename().string());
}
+ Util::sort(output);
return output;
});