From 9f3183eb7cbad68c891530a5375c2565e9fded3c Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Mon, 21 Mar 2022 12:16:43 -0700 Subject: [PATCH] Block features containing _ in their names. In https://github.com/microsoft/vcpkg-tool/pull/345#discussion_r831389137 Nicole indicated that the workaround here to support features with _ in their names is no longer relevant because the feature in question was already renamed before versioning. Since this is a change in the usable surface of the tool I extracted the change into its own more targeted PR. --- include/vcpkg/base/parse.h | 4 ++++ src/vcpkg/packagespec.cpp | 19 +++---------------- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/include/vcpkg/base/parse.h b/include/vcpkg/base/parse.h index dcadad2af9..44ccaf6ddd 100644 --- a/include/vcpkg/base/parse.h +++ b/include/vcpkg/base/parse.h @@ -84,6 +84,10 @@ namespace vcpkg::Parse static constexpr bool is_alphanum(char32_t ch) { return is_icase_alpha(ch) || is_ascii_digit(ch); } static constexpr bool is_alphadash(char32_t ch) { return is_icase_alpha(ch) || ch == '-'; } static constexpr bool is_alphanumdash(char32_t ch) { return is_alphanum(ch) || ch == '-'; } + static constexpr bool is_package_name_char(char32_t ch) + { + return is_lower_alpha(ch) || is_ascii_digit(ch) || ch == '-'; + } static constexpr bool is_hex_digit(char32_t ch) { diff --git a/src/vcpkg/packagespec.cpp b/src/vcpkg/packagespec.cpp index 0f175c6c35..a494ac3edb 100644 --- a/src/vcpkg/packagespec.cpp +++ b/src/vcpkg/packagespec.cpp @@ -99,19 +99,6 @@ namespace vcpkg return PackageSpec{name, t}; } - static bool is_package_name_char(char32_t ch) - { - return Parse::ParserBase::is_lower_alpha(ch) || Parse::ParserBase::is_ascii_digit(ch) || ch == '-'; - } - - static bool is_feature_name_char(char32_t ch) - { - // TODO: we do not intend underscores to be valid, however there is currently a feature using them - // (libwebp[vwebp_sdl]). - // TODO: we need to rename this feature, then remove underscores from this list. - return is_package_name_char(ch) || ch == '_'; - } - ExpectedS parse_qualified_specifier(StringView input) { auto parser = Parse::ParserBase(input, ""); @@ -124,7 +111,7 @@ namespace vcpkg Optional parse_feature_name(Parse::ParserBase& parser) { using Parse::ParserBase; - auto ret = parser.match_zero_or_more(is_feature_name_char).to_string(); + auto ret = parser.match_zero_or_more(ParserBase::is_package_name_char).to_string(); auto ch = parser.cur(); // ignores the feature name vwebp_sdl as a back-compat thing @@ -151,7 +138,7 @@ namespace vcpkg Optional parse_package_name(Parse::ParserBase& parser) { using Parse::ParserBase; - auto ret = parser.match_zero_or_more(is_package_name_char).to_string(); + auto ret = parser.match_zero_or_more(ParserBase::is_package_name_char).to_string(); auto ch = parser.cur(); if (ParserBase::is_upper_alpha(ch) || ch == '_') { @@ -221,7 +208,7 @@ namespace vcpkg if (ch == ':') { parser.next(); - ret.triplet = parser.match_zero_or_more(is_package_name_char).to_string(); + ret.triplet = parser.match_zero_or_more(ParserBase::is_package_name_char).to_string(); if (ret.triplet.get()->empty()) { parser.add_error("expected triplet name (must be lowercase, digits, '-')");