aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2012-09-14 19:23:46 +0100
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2012-09-14 19:23:46 +0100
commit86a45d96c02086d83b13856e43ff21aeb927aefd (patch)
tree1acd9a30da2aacf52c3bd574c0b42deb643e3bee
parentc824c864c34b7a8cfdb29d4c5a8033fc4202c1e1 (diff)
downloadpaludis-86a45d96c02086d83b13856e43ff21aeb927aefd.tar.gz
paludis-86a45d96c02086d83b13856e43ff21aeb927aefd.tar.xz
EAPi 5 has subslots
-rw-r--r--paludis/elike_package_dep_spec.cc61
-rw-r--r--paludis/elike_package_dep_spec.se1
-rw-r--r--paludis/repositories/e/e_installed_repository_id.cc2
-rw-r--r--paludis/repositories/e/e_repository_TEST_5.cc94
-rwxr-xr-xpaludis/repositories/e/e_repository_TEST_5_setup.sh29
-rw-r--r--paludis/repositories/e/e_slot_key.cc22
-rw-r--r--paludis/repositories/e/e_slot_key.hh1
-rw-r--r--paludis/repositories/e/eapi.cc1
-rw-r--r--paludis/repositories/e/eapi.hh2
-rw-r--r--paludis/repositories/e/eapis/0.conf1
-rw-r--r--paludis/repositories/e/eapis/5.conf3
-rw-r--r--paludis/repositories/e/eapis/exheres-0.conf1
-rw-r--r--paludis/repositories/e/eapis/paludis-1.conf1
-rw-r--r--paludis/repositories/e/ebuild_id.cc2
-rw-r--r--paludis/resolver/package_or_block_dep_spec.cc2
-rw-r--r--paludis/serialise.cc2
16 files changed, 213 insertions, 12 deletions
diff --git a/paludis/elike_package_dep_spec.cc b/paludis/elike_package_dep_spec.cc
index c1b08a9..aa4663a 100644
--- a/paludis/elike_package_dep_spec.cc
+++ b/paludis/elike_package_dep_spec.cc
@@ -286,6 +286,7 @@ paludis::elike_remove_trailing_slot_if_exists(std::string & s, PartiallyMadePack
if ("*" == match)
{
+ /* c/p:* */
if (! options[epdso_allow_slot_star_deps])
{
if (options[epdso_strict_parsing])
@@ -308,9 +309,26 @@ paludis::elike_remove_trailing_slot_if_exists(std::string & s, PartiallyMadePack
}
if (1 == match.length())
+ {
+ /* c/p:= */
result.slot_requirement(std::make_shared<ELikeSlotAnyAtAllLockedRequirement>());
+ }
else
- result.slot_requirement(std::make_shared<ELikeSlotExactPartialRequirement>(SlotName(s.substr(slot_p + 2)), std::make_shared<ELikeSlotAnyAtAllLockedRequirement>()));
+ {
+ std::string text(s.substr(slot_p + 2));
+ auto p(text.find('/'));
+ if (options[epdso_allow_subslot_deps] && std::string::npos != p)
+ {
+ /* c/p:=s/u */
+ result.slot_requirement(std::make_shared<ELikeSlotExactFullRequirement>(std::make_pair(SlotName(text.substr(0, p)), SlotName(text.substr(p + 1))),
+ std::make_shared<ELikeSlotAnyAtAllLockedRequirement>()));
+ }
+ else
+ {
+ /* c/p:=s */
+ result.slot_requirement(std::make_shared<ELikeSlotExactPartialRequirement>(SlotName(text), std::make_shared<ELikeSlotAnyAtAllLockedRequirement>()));
+ }
+ }
}
else
{
@@ -322,7 +340,46 @@ paludis::elike_remove_trailing_slot_if_exists(std::string & s, PartiallyMadePack
Log::get_instance()->message("e.package_dep_spec.slot_not_allowed", ll_warning, lc_context)
<< "Slot dependencies not safe for use here";
}
- result.slot_requirement(std::make_shared<ELikeSlotExactPartialRequirement>(SlotName(s.substr(slot_p + 1)), make_null_shared_ptr()));
+
+ std::string text(s.substr(slot_p + 1));
+ auto q(text.find('='));
+
+ if (options[epdso_allow_subslot_deps] && options[epdso_allow_slot_equal_deps] && std::string::npos != q)
+ {
+ std::string left_text(text.substr(0, q)), right_text(text.substr(q + 1));
+ auto p(right_text.find('/'));
+ if (std::string::npos != p)
+ {
+ /* c/p:l=s/u */
+ result.slot_requirement(std::make_shared<ELikeSlotExactFullRequirement>(std::make_pair(SlotName(right_text.substr(0, p)), SlotName(right_text.substr(p + 1))),
+ std::make_shared<ELikeSlotAnyPartialLockedRequirement>(SlotName(left_text))));
+ }
+ else if (right_text.empty())
+ {
+ /* c/p:l= */
+ result.slot_requirement(std::make_shared<ELikeSlotAnyPartialLockedRequirement>(SlotName(left_text)));
+ }
+ else
+ {
+ /* c/p:l=s */
+ result.slot_requirement(std::make_shared<ELikeSlotExactPartialRequirement>(SlotName(right_text),
+ std::make_shared<ELikeSlotAnyPartialLockedRequirement>(SlotName(left_text))));
+ }
+ }
+ else
+ {
+ auto p(text.find('/'));
+ if (options[epdso_allow_subslot_deps] && std::string::npos != p)
+ {
+ /* c/p:s/u */
+ result.slot_requirement(std::make_shared<ELikeSlotExactFullRequirement>(std::make_pair(SlotName(text.substr(0, p)), SlotName(text.substr(p + 1))), make_null_shared_ptr()));
+ }
+ else
+ {
+ /* c/p:s */
+ result.slot_requirement(std::make_shared<ELikeSlotExactPartialRequirement>(SlotName(text), make_null_shared_ptr()));
+ }
+ }
}
s.erase(slot_p);
}
diff --git a/paludis/elike_package_dep_spec.se b/paludis/elike_package_dep_spec.se
index ad244d1..25aaaf2 100644
--- a/paludis/elike_package_dep_spec.se
+++ b/paludis/elike_package_dep_spec.se
@@ -9,6 +9,7 @@ make_enum_ELikePackageDepSpecOption()
key epdso_allow_slot_deps "Allow :slot deps"
key epdso_allow_slot_star_deps "Allow :* slot deps"
key epdso_allow_slot_equal_deps "Allow := and :=blah slot deps"
+ key epdso_allow_subslot_deps "Allow subslots in slot deps"
key epdso_allow_repository_deps "Allow ::repo deps"
key epdso_allow_use_deps "Allow [use] deps"
key epdso_allow_use_deps_portage "Allow [use] deps with Portage syntax"
diff --git a/paludis/repositories/e/e_installed_repository_id.cc b/paludis/repositories/e/e_installed_repository_id.cc
index 0cd2266..c25d58b 100644
--- a/paludis/repositories/e/e_installed_repository_id.cc
+++ b/paludis/repositories/e/e_installed_repository_id.cc
@@ -226,7 +226,7 @@ EInstalledRepositoryID::need_keys_added() const
if (! vars->slot()->name().empty())
if ((_imp->dir / vars->slot()->name()).stat().exists())
{
- _imp->keys->slot = ESlotKeyStore::get_instance()->fetch(vars->slot(), file_contents(_imp->dir / vars->slot()->name()), mkt_internal);
+ _imp->keys->slot = ESlotKeyStore::get_instance()->fetch(*eapi(), vars->slot(), file_contents(_imp->dir / vars->slot()->name()), mkt_internal);
add_metadata_key(_imp->keys->slot);
}
diff --git a/paludis/repositories/e/e_repository_TEST_5.cc b/paludis/repositories/e/e_repository_TEST_5.cc
index bc9c86d..0c34243 100644
--- a/paludis/repositories/e/e_repository_TEST_5.cc
+++ b/paludis/repositories/e/e_repository_TEST_5.cc
@@ -49,6 +49,8 @@
#include <paludis/selection.hh>
#include <paludis/repository_factory.hh>
#include <paludis/choice.hh>
+#include <paludis/slot.hh>
+#include <paludis/unformatted_pretty_printer.hh>
#include <functional>
#include <set>
@@ -319,3 +321,95 @@ TEST(ERepository, RequiredUse)
}
}
+TEST(ERepository, SubSlots)
+{
+ FSPath root(FSPath::cwd() / "e_repository_TEST_5_dir" / "root");
+
+ TestEnvironment env;
+ env.set_system_root(FSPath("e_repository_TEST_5_dir/root").realpath());
+
+ std::shared_ptr<Map<std::string, std::string> > keys(std::make_shared<Map<std::string, std::string>>());
+ keys->insert("format", "e");
+ keys->insert("names_cache", "/var/empty");
+ keys->insert("location", stringify(FSPath::cwd() / "e_repository_TEST_5_dir" / "repo"));
+ keys->insert("profiles", stringify(FSPath::cwd() / "e_repository_TEST_5_dir" / "repo/profiles/profile"));
+ keys->insert("layout", "traditional");
+ keys->insert("eapi_when_unknown", "0");
+ keys->insert("eapi_when_unspecified", "0");
+ keys->insert("profile_eapi", "0");
+ keys->insert("distdir", stringify(FSPath::cwd() / "e_repository_TEST_5_dir" / "distdir"));
+ keys->insert("builddir", stringify(FSPath::cwd() / "e_repository_TEST_5_dir" / "build"));
+ std::shared_ptr<Repository> repo(ERepository::repository_factory_create(&env,
+ std::bind(from_keys, keys, std::placeholders::_1)));
+ env.add_repository(1, repo);
+
+ keys = std::make_shared<Map<std::string, std::string>>();
+ keys->insert("format", "vdb");
+ keys->insert("names_cache", "/var/empty");
+ keys->insert("location", stringify(FSPath::cwd() / "e_repository_TEST_5_dir" / "vdb"));
+ keys->insert("builddir", stringify(FSPath::cwd() / "e_repository_TEST_5_dir" / "build"));
+ keys->insert("root", stringify(FSPath("e_repository_TEST_5_dir/root").realpath()));
+ std::shared_ptr<Repository> installed_repo(VDBRepository::VDBRepository::repository_factory_create(&env,
+ std::bind(from_keys, keys, std::placeholders::_1)));
+ env.add_repository(0, installed_repo);
+
+ {
+ InstallAction install_action(make_named_values<InstallActionOptions>(
+ n::destination() = installed_repo,
+ n::make_output_manager() = &make_standard_output_manager,
+ n::perform_uninstall() = &cannot_uninstall,
+ n::replacing() = std::make_shared<PackageIDSequence>(),
+ n::want_phase() = &want_all_phases
+ ));
+
+ {
+ const std::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("=cat/subslots-5",
+ &env, { })), make_null_shared_ptr(), { }))]->last());
+ ASSERT_TRUE(bool(id));
+ EXPECT_EQ("5", visitor_cast<const MetadataValueKey<std::string> >(**id->find_metadata("EAPI"))->parse_value());
+ EXPECT_EQ("foo/bar", id->slot_key()->parse_value().raw_value());
+ EXPECT_EQ(SlotName("foo"), id->slot_key()->parse_value().match_values().first);
+ EXPECT_EQ(SlotName("bar"), id->slot_key()->parse_value().match_values().second);
+ EXPECT_EQ(SlotName("foo"), id->slot_key()->parse_value().parallel_value());
+
+ id->perform_action(install_action);
+ }
+
+ installed_repo->invalidate();
+
+ {
+ const std::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("=cat/subslots-5::installed",
+ &env, { })), make_null_shared_ptr(), { }))]->last());
+ ASSERT_TRUE(bool(id));
+ EXPECT_EQ("5", visitor_cast<const MetadataValueKey<std::string> >(**id->find_metadata("EAPI"))->parse_value());
+ EXPECT_EQ("foo/bar", id->slot_key()->parse_value().raw_value());
+ EXPECT_EQ(SlotName("foo"), id->slot_key()->parse_value().match_values().first);
+ EXPECT_EQ(SlotName("bar"), id->slot_key()->parse_value().match_values().second);
+ EXPECT_EQ(SlotName("foo"), id->slot_key()->parse_value().parallel_value());
+ }
+
+ {
+ const std::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("=cat/subslot-dep-5",
+ &env, { })), make_null_shared_ptr(), { }))]->last());
+ ASSERT_TRUE(bool(id));
+ EXPECT_EQ("5", visitor_cast<const MetadataValueKey<std::string> >(**id->find_metadata("EAPI"))->parse_value());
+ EXPECT_EQ("cat/subslots:= cat/subslots:foo=", id->build_dependencies_key()->pretty_print_value(UnformattedPrettyPrinter(), { }));
+ id->perform_action(install_action);
+ }
+
+ installed_repo->invalidate();
+
+ {
+ const std::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("=cat/subslot-dep-5::installed",
+ &env, { })), make_null_shared_ptr(), { }))]->last());
+ ASSERT_TRUE(bool(id));
+ EXPECT_EQ("5", visitor_cast<const MetadataValueKey<std::string> >(**id->find_metadata("EAPI"))->parse_value());
+ EXPECT_EQ("cat/subslots:=foo/bar cat/subslots:foo=foo/bar", id->build_dependencies_key()->pretty_print_value(UnformattedPrettyPrinter(), { }));
+ }
+ }
+}
+
diff --git a/paludis/repositories/e/e_repository_TEST_5_setup.sh b/paludis/repositories/e/e_repository_TEST_5_setup.sh
index 0cfff10..86aa5f8 100755
--- a/paludis/repositories/e/e_repository_TEST_5_setup.sh
+++ b/paludis/repositories/e/e_repository_TEST_5_setup.sh
@@ -414,5 +414,34 @@ src_prepare() {
}
END
+mkdir -p "cat/subslots" || exit 1
+cat << 'END' > cat/subslots/subslots-5.ebuild || exit 1
+EAPI="5"
+DESCRIPTION="The Description"
+HOMEPAGE="http://example.com/"
+SRC_URI=""
+SLOT="foo/bar"
+IUSE=""
+LICENSE="GPL-2"
+KEYWORDS="test"
+
+S="${WORKDIR}"
+END
+
+mkdir -p "cat/subslot-dep" || exit 1
+cat << 'END' > cat/subslot-dep/subslot-dep-5.ebuild || exit 1
+EAPI="5"
+DESCRIPTION="The Description"
+HOMEPAGE="http://example.com/"
+SRC_URI=""
+SLOT="0"
+IUSE=""
+LICENSE="GPL-2"
+KEYWORDS="test"
+DEPEND="cat/subslots:= cat/subslots:foo="
+
+S="${WORKDIR}"
+END
+
cd ..
cd ..
diff --git a/paludis/repositories/e/e_slot_key.cc b/paludis/repositories/e/e_slot_key.cc
index b286f78..ecc90d1 100644
--- a/paludis/repositories/e/e_slot_key.cc
+++ b/paludis/repositories/e/e_slot_key.cc
@@ -111,19 +111,31 @@ ESlotKeyStore::~ESlotKeyStore() = default;
const std::shared_ptr<const MetadataValueKey<Slot> >
ESlotKeyStore::fetch(
+ const EAPI & eapi,
const std::shared_ptr<const EAPIMetadataVariable> & v,
- const std::string & s,
- const MetadataKeyType t) const
+ const std::string & ss,
+ const MetadataKeyType mkt) const
{
+ std::string s(ss), t(ss);
+ if (eapi.supported()->ebuild_options()->has_subslots())
+ {
+ auto p(s.find('/'));
+ if (std::string::npos != p)
+ {
+ s = ss.substr(0, p);
+ t = ss.substr(p + 1);
+ }
+ }
+
Lock lock(_imp->mutex);
- ESlotKeyStoreIndex x(v, s, t);
+ ESlotKeyStoreIndex x(v, ss, mkt);
auto i(_imp->store.find(x));
if (i == _imp->store.end())
i = _imp->store.insert(std::make_pair(x, std::make_shared<const ESlotKey>(make_named_values<Slot>(
- n::match_values() = std::make_pair(s, s),
+ n::match_values() = std::make_pair(s, t),
n::parallel_value() = s,
- n::raw_value() = s), v, t))).first;
+ n::raw_value() = ss), v, mkt))).first;
return i->second;
}
diff --git a/paludis/repositories/e/e_slot_key.hh b/paludis/repositories/e/e_slot_key.hh
index 92aeee1..fd2115b 100644
--- a/paludis/repositories/e/e_slot_key.hh
+++ b/paludis/repositories/e/e_slot_key.hh
@@ -41,6 +41,7 @@ namespace paludis
public:
const std::shared_ptr<const MetadataValueKey<Slot> > fetch(
+ const EAPI &,
const std::shared_ptr<const EAPIMetadataVariable> &,
const std::string &,
const MetadataKeyType) const PALUDIS_ATTRIBUTE((warn_unused_result));
diff --git a/paludis/repositories/e/eapi.cc b/paludis/repositories/e/eapi.cc
index 053c9eb..89f1bc3 100644
--- a/paludis/repositories/e/eapi.cc
+++ b/paludis/repositories/e/eapi.cc
@@ -179,6 +179,7 @@ namespace
n::fix_mtimes() = destringify_key<bool>(k, "fix_mtimes"),
n::fs_location_description() = check_get(k, "fs_location_description"),
n::fs_location_name() = check_get(k, "fs_location_name"),
+ n::has_subslots() = destringify_key<bool>(k, "has_subslots"),
n::ignore_pivot_env_functions() = check_get(k, "ignore_pivot_env_functions"),
n::ignore_pivot_env_variables() = check_get(k, "ignore_pivot_env_variables"),
n::load_modules() = check_get(k, "load_modules"),
diff --git a/paludis/repositories/e/eapi.hh b/paludis/repositories/e/eapi.hh
index c575f89..fbd836b 100644
--- a/paludis/repositories/e/eapi.hh
+++ b/paludis/repositories/e/eapi.hh
@@ -143,6 +143,7 @@ namespace paludis
typedef Name<struct name_has_expensive_tests> has_expensive_tests;
typedef Name<struct name_has_optional_tests> has_optional_tests;
typedef Name<struct name_has_recommended_tests> has_recommended_tests;
+ typedef Name<struct name_has_subslots> has_subslots;
typedef Name<struct name_homepage> homepage;
typedef Name<struct name_ignore_pivot_env_functions> ignore_pivot_env_functions;
typedef Name<struct name_ignore_pivot_env_variables> ignore_pivot_env_variables;
@@ -426,6 +427,7 @@ namespace paludis
NamedValue<n::fix_mtimes, bool> fix_mtimes;
NamedValue<n::fs_location_description, std::string> fs_location_description;
NamedValue<n::fs_location_name, std::string> fs_location_name;
+ NamedValue<n::has_subslots, bool> has_subslots;
NamedValue<n::ignore_pivot_env_functions, std::string> ignore_pivot_env_functions;
NamedValue<n::ignore_pivot_env_variables, std::string> ignore_pivot_env_variables;
NamedValue<n::load_modules, std::string> load_modules;
diff --git a/paludis/repositories/e/eapis/0.conf b/paludis/repositories/e/eapis/0.conf
index fe1906f..c568fd1 100644
--- a/paludis/repositories/e/eapis/0.conf
+++ b/paludis/repositories/e/eapis/0.conf
@@ -283,6 +283,7 @@ no_s_workdir_fallback = false
use_with_enable_empty_third_argument = false
best_has_version_host_root = false
new_stdin = false
+has_subslots = false
unpack_suffixes = tar tar.gz,tgz,tar.Z tar.bz2,tbz2,tbz zip,ZIP,jar gz,Z,z bz2 rar,RAR lha,LHa,LHA,lzh a,deb tar.lzma lzma 7z,7Z
diff --git a/paludis/repositories/e/eapis/5.conf b/paludis/repositories/e/eapis/5.conf
index e3e0c32..d78733c 100644
--- a/paludis/repositories/e/eapis/5.conf
+++ b/paludis/repositories/e/eapis/5.conf
@@ -14,7 +14,7 @@ description_iuse = Listed relevant USE flags
vdb_from_env_variables = ${vdb_from_env_variables} IUSE_EFFECTIVE
package_dep_spec_parse_options = ${package_dep_spec_parse_options} \
- allow_slot_equal_deps allow_slot_star_deps
+ allow_slot_equal_deps allow_slot_star_deps allow_subslot_deps
ebuild_module_suffixes = 5 4 3 2 1 0
utility_path_suffixes = 5 4 3 2 1 0
@@ -33,4 +33,5 @@ new_stdin = true
require_use_expand_in_iuse = true
profile_iuse_injection = true
+has_subslots = true
diff --git a/paludis/repositories/e/eapis/exheres-0.conf b/paludis/repositories/e/eapis/exheres-0.conf
index 49c30d0..bb825fa 100644
--- a/paludis/repositories/e/eapis/exheres-0.conf
+++ b/paludis/repositories/e/eapis/exheres-0.conf
@@ -358,6 +358,7 @@ fix_mtimes = true
shell_options = extglob globstar
best_has_version_host_root = false
new_stdin = false
+has_subslots = false
unpack_suffixes = tar tar.gz,tgz,tar.Z tar.bz2,tbz2,tbz zip,ZIP,jar gz,Z,z bz2 rar,RAR lha,LHa,LHA,lzh a,deb tar.lzma lzma 7z,7Z tar.xz xz
diff --git a/paludis/repositories/e/eapis/paludis-1.conf b/paludis/repositories/e/eapis/paludis-1.conf
index 61f3396..5b66b19 100644
--- a/paludis/repositories/e/eapis/paludis-1.conf
+++ b/paludis/repositories/e/eapis/paludis-1.conf
@@ -34,6 +34,7 @@ fix_mtimes = false
fs_location_name = EBUILD
fs_location_description = Ebuild Location
allow_tokens_in_mask_files = false
+has_subslots = false
vdb_from_env_variables = \
CATEGORY CHOST COUNTER DEPEND DESCRIPTION EAPI FEATURES \
diff --git a/paludis/repositories/e/ebuild_id.cc b/paludis/repositories/e/ebuild_id.cc
index 180fd28..f0c36b2 100644
--- a/paludis/repositories/e/ebuild_id.cc
+++ b/paludis/repositories/e/ebuild_id.cc
@@ -1239,7 +1239,7 @@ void
EbuildID::load_slot(const std::shared_ptr<const EAPIMetadataVariable> & m, const std::string & v) const
{
Lock l(_imp->mutex);
- _imp->slot = ESlotKeyStore::get_instance()->fetch(m, v, mkt_internal);
+ _imp->slot = ESlotKeyStore::get_instance()->fetch(*eapi(), m, v, mkt_internal);
add_metadata_key(_imp->slot);
}
diff --git a/paludis/resolver/package_or_block_dep_spec.cc b/paludis/resolver/package_or_block_dep_spec.cc
index b1b5a58..36cee2f 100644
--- a/paludis/resolver/package_or_block_dep_spec.cc
+++ b/paludis/resolver/package_or_block_dep_spec.cc
@@ -110,7 +110,7 @@ PackageOrBlockDepSpec::deserialise(Deserialisation & d, const std::shared_ptr<co
epdso_allow_ranged_deps, epdso_allow_use_deps, epdso_allow_use_deps_portage,
epdso_allow_use_dep_defaults, epdso_allow_repository_deps, epdso_allow_slot_star_deps,
epdso_allow_slot_equal_deps, epdso_allow_slot_deps, epdso_allow_key_requirements,
- epdso_allow_use_dep_question_defaults },
+ epdso_allow_use_dep_question_defaults, epdso_allow_subslot_deps },
{ vso_flexible_dashes, vso_flexible_dots, vso_ignore_case,
vso_letters_anywhere, vso_dotted_suffixes }));
diff --git a/paludis/serialise.cc b/paludis/serialise.cc
index 4941e85..85277ee 100644
--- a/paludis/serialise.cc
+++ b/paludis/serialise.cc
@@ -375,7 +375,7 @@ DeserialisatorHandler<std::shared_ptr<const PackageID> >::handle(Deserialisation
epdso_allow_ranged_deps, epdso_allow_use_deps, epdso_allow_use_deps_portage,
epdso_allow_use_dep_defaults, epdso_allow_repository_deps, epdso_allow_slot_star_deps,
epdso_allow_slot_equal_deps, epdso_allow_slot_deps, epdso_allow_key_requirements,
- epdso_allow_use_dep_question_defaults },
+ epdso_allow_use_dep_question_defaults, epdso_allow_subslot_deps },
{ vso_flexible_dashes, vso_flexible_dots, vso_ignore_case,
vso_letters_anywhere, vso_dotted_suffixes }), make_null_shared_ptr(), { }))]->begin();
}