aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2008-07-23 17:39:32 +0100
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2008-07-23 23:37:35 +0100
commitf9e7ecdd0252218a9dd9d34b908aa6978728c6e9 (patch)
treed4cb5ed23c9e0374ca0b1b684ae61ca9d9b812fa
parent9df50426a7b3080e5ebcb077e2f7fc8ac2cf2681 (diff)
downloadpaludis-f9e7ecdd0252218a9dd9d34b908aa6978728c6e9.tar.gz
paludis-f9e7ecdd0252218a9dd9d34b908aa6978728c6e9.tar.xz
Convert EAPI away from kc / sr.
Looks like people are having compiler issues. Hopefully this: Fixes: ticket:622
-rw-r--r--paludis/repositories/e/Makefile.am13
-rw-r--r--paludis/repositories/e/dep_parser.cc16
-rw-r--r--paludis/repositories/e/e_installed_repository.cc6
-rw-r--r--paludis/repositories/e/e_installed_repository_id.cc125
-rw-r--r--paludis/repositories/e/e_key.cc20
-rw-r--r--paludis/repositories/e/e_repository.cc44
-rw-r--r--paludis/repositories/e/e_repository_TEST.cc8
-rw-r--r--paludis/repositories/e/e_repository_id.cc2
-rw-r--r--paludis/repositories/e/e_repository_news.cc4
-rw-r--r--paludis/repositories/e/e_repository_profile.cc64
-rw-r--r--paludis/repositories/e/eapi-fwd.hh69
-rw-r--r--paludis/repositories/e/eapi.cc406
-rw-r--r--paludis/repositories/e/eapi.hh223
-rw-r--r--paludis/repositories/e/eapi.sr170
-rw-r--r--paludis/repositories/e/eapis/0.conf8
-rw-r--r--paludis/repositories/e/eapis/exheres-0.conf5
-rw-r--r--paludis/repositories/e/eapis/paludis-1.conf5
-rw-r--r--paludis/repositories/e/ebuild.cc224
-rw-r--r--paludis/repositories/e/ebuild_entries.cc53
-rw-r--r--paludis/repositories/e/ebuild_flat_metadata_cache.cc140
-rw-r--r--paludis/repositories/e/ebuild_id.cc24
-rw-r--r--paludis/repositories/e/exndbam_repository.cc2
-rw-r--r--paludis/repositories/e/fetch_visitor.cc2
-rw-r--r--paludis/repositories/e/fix_locked_dependencies.cc2
-rw-r--r--paludis/repositories/e/info_metadata_key.cc3
-rw-r--r--paludis/repositories/e/pipe_command_handler.cc33
-rw-r--r--paludis/repositories/e/qa/eapi_supported.cc4
-rw-r--r--paludis/repositories/e/vdb_repository.cc2
28 files changed, 841 insertions, 836 deletions
diff --git a/paludis/repositories/e/Makefile.am b/paludis/repositories/e/Makefile.am
index 49547c6..3d48904 100644
--- a/paludis/repositories/e/Makefile.am
+++ b/paludis/repositories/e/Makefile.am
@@ -6,7 +6,6 @@ DISTCLEANFILES = \
e_repository_params-sr.hh e_repository_params-sr.cc \
e_repository_params-se.hh e_repository_params-se.cc \
vdb_repository-sr.hh vdb_repository-sr.cc \
- eapi-sr.hh eapi-sr.cc \
dep_parser-se.hh dep_parser-se.cc \
manifest2_entry-sr.hh manifest2_entry-sr.cc
@@ -58,7 +57,6 @@ paludis_repositories_e_include_HEADERS = \
e_repository_sets.hh \
e_stripper.hh \
eapi.hh \
- eapi-sr.hh \
eapi-fwd.hh \
eapi_phase.hh \
ebuild.hh \
@@ -308,9 +306,6 @@ EXTRA_DIST = \
dep_parser-se.cc \
dep_parser_TEST.cc \
dep_spec_pretty_printer_TEST.cc \
- eapi.sr \
- eapi-sr.hh \
- eapi-sr.cc \
glsa.sr \
glsa-sr.hh \
glsa-sr.cc \
@@ -374,8 +369,6 @@ BUILT_SOURCES = \
exndbam_repository-sr.cc \
vdb_repository-sr.hh \
vdb_repository-sr.cc \
- eapi-sr.hh \
- eapi-sr.cc \
manifest2_entry-sr.hh \
manifest2_entry-sr.cc
@@ -426,12 +419,6 @@ manifest2_entry-sr.hh : manifest2_entry.sr $(top_srcdir)/misc/make_sr.bash
manifest2_entry-sr.cc : manifest2_entry.sr $(top_srcdir)/misc/make_sr.bash
$(top_srcdir)/misc/make_sr.bash --source $(srcdir)/manifest2_entry.sr > $@
-eapi-sr.hh : eapi.sr $(top_srcdir)/misc/make_sr.bash
- $(top_srcdir)/misc/make_sr.bash --header $(srcdir)/eapi.sr > $@
-
-eapi-sr.cc : eapi.sr $(top_srcdir)/misc/make_sr.bash
- $(top_srcdir)/misc/make_sr.bash --source $(srcdir)/eapi.sr > $@
-
glsa-sr.hh : glsa.sr $(top_srcdir)/misc/make_sr.bash
$(top_srcdir)/misc/make_sr.bash --header $(srcdir)/glsa.sr > $@
diff --git a/paludis/repositories/e/dep_parser.cc b/paludis/repositories/e/dep_parser.cc
index 9c800ea..f87fb78 100644
--- a/paludis/repositories/e/dep_parser.cc
+++ b/paludis/repositories/e/dep_parser.cc
@@ -66,7 +66,7 @@ namespace
void package_dep_spec_string_handler(const typename ParseStackTypes<T_>::Stack & h, const std::string & s,
const EAPI & eapi, const std::tr1::shared_ptr<const PackageID> & id)
{
- PackageDepSpec p(parse_elike_package_dep_spec(s, (*eapi[k::supported()])[k::package_dep_spec_parse_options()], id));
+ PackageDepSpec p(parse_elike_package_dep_spec(s, eapi.supported()->package_dep_spec_parse_options(), id));
(*h.begin())[k::add_handler()](make_shared_ptr(new TreeLeaf<T_, PackageDepSpec>(make_shared_ptr(new PackageDepSpec(p)))));
}
@@ -78,7 +78,7 @@ namespace
{
std::tr1::shared_ptr<BlockDepSpec> b(new BlockDepSpec(
make_shared_ptr(new PackageDepSpec(parse_elike_package_dep_spec(s.substr(1),
- (*eapi[k::supported()])[k::package_dep_spec_parse_options()], id)))));
+ eapi.supported()->package_dep_spec_parse_options(), id)))));
(*h.begin())[k::add_handler()](make_shared_ptr(new TreeLeaf<T_, BlockDepSpec>(b)));
}
else
@@ -107,7 +107,7 @@ namespace
void arrow_handler(const typename ParseStackTypes<T_>::Stack & h, const std::string & s, const std::string & f, const std::string & t,
const EAPI & eapi)
{
- if (t.empty() || ((*eapi[k::supported()])[k::dependency_spec_tree_parse_options()][dstpo_uri_supports_arrow]))
+ if (t.empty() || eapi.supported()->dependency_spec_tree_parse_options()[dstpo_uri_supports_arrow])
(*h.begin())[k::add_handler()](make_shared_ptr(new TreeLeaf<T_, FetchableURIDepSpec>(make_shared_ptr(
new FetchableURIDepSpec(t.empty() ? f : f + " -> " + t)))));
else
@@ -203,7 +203,7 @@ namespace
void use_under_any_handler(const std::string & s, const EAPI & eapi)
{
- if ((*eapi[k::supported()])[k::dependency_spec_tree_parse_options()][dstpo_disallow_any_use])
+ if (eapi.supported()->dependency_spec_tree_parse_options()[dstpo_disallow_any_use])
throw EDepParseError(s, "use? not allowed under || ( ) in this EAPI");
}
@@ -423,12 +423,12 @@ paludis::erepository::parse_restrict(const std::string & s,
std::tr1::shared_ptr<URILabelsDepSpec>
paludis::erepository::parse_uri_label(const std::string & s, const EAPI & e)
{
- Context context("When parsing label string '" + s + "' using EAPI '" + e[k::name()] + "':");
+ Context context("When parsing label string '" + s + "' using EAPI '" + e.name() + "':");
if (s.empty())
throw EDepParseError(s, "Empty label");
- std::string c((*e[k::supported()])[k::uri_labels()].class_for_label(s.substr(0, s.length() - 1)));
+ std::string c(e.supported()->uri_labels()->class_for_label(s.substr(0, s.length() - 1)));
if (c.empty())
throw EDepParseError(s, "Unknown label");
@@ -455,7 +455,7 @@ paludis::erepository::parse_uri_label(const std::string & s, const EAPI & e)
std::tr1::shared_ptr<DependencyLabelsDepSpec>
paludis::erepository::parse_dependency_label(const std::string & s, const EAPI & e)
{
- Context context("When parsing label string '" + s + "' using EAPI '" + e[k::name()] + "':");
+ Context context("When parsing label string '" + s + "' using EAPI '" + e.name() + "':");
if (s.empty())
throw EDepParseError(s, "Empty label");
@@ -468,7 +468,7 @@ paludis::erepository::parse_dependency_label(const std::string & s, const EAPI &
for (std::set<std::string>::iterator it = labels.begin(), it_e = labels.end(); it != it_e; ++it)
{
- std::string c((*e[k::supported()])[k::dependency_labels()].class_for_label(*it));
+ std::string c(e.supported()->dependency_labels()->class_for_label(*it));
if (c.empty())
throw EDepParseError(s, "Unknown label '" + *it + "'");
diff --git a/paludis/repositories/e/e_installed_repository.cc b/paludis/repositories/e/e_installed_repository.cc
index 4c0c5a2..841b78b 100644
--- a/paludis/repositories/e/e_installed_repository.cc
+++ b/paludis/repositories/e/e_installed_repository.cc
@@ -299,7 +299,7 @@ EInstalledRepository::use_expand_separator(const PackageID & id) const
if (this != id.repository().get())
return '\0';
const std::tr1::shared_ptr<const EAPI> & eapi(static_cast<const ERepositoryID &>(id).eapi());
- return (*eapi)[k::supported()] ? (*(*eapi)[k::supported()])[k::ebuild_options()].use_expand_separator : '\0';
+ return eapi->supported() ? eapi->supported()->ebuild_options()->use_expand_separator() : '\0';
}
std::string
@@ -355,7 +355,7 @@ EInstalledRepository::perform_config(const std::tr1::shared_ptr<const ERepositor
eclassdirs->push_back(ver_dir);
std::tr1::shared_ptr<FSEntry> load_env(new FSEntry(ver_dir / "environment.bz2"));
- EAPIPhases phases((*(*id->eapi())[k::supported()])[k::ebuild_phases()].ebuild_config);
+ EAPIPhases phases(id->eapi()->supported()->ebuild_phases()->ebuild_config());
for (EAPIPhases::ConstIterator phase(phases.begin_phases()), phase_end(phases.end_phases()) ;
phase != phase_end ; ++phase)
@@ -399,7 +399,7 @@ EInstalledRepository::perform_info(const std::tr1::shared_ptr<const ERepositoryI
std::tr1::shared_ptr<FSEntry> load_env(new FSEntry(ver_dir / "environment.bz2"));
- EAPIPhases phases((*(*id->eapi())[k::supported()])[k::ebuild_phases()].ebuild_info);
+ EAPIPhases phases(id->eapi()->supported()->ebuild_phases()->ebuild_info());
for (EAPIPhases::ConstIterator phase(phases.begin_phases()), phase_end(phases.end_phases()) ;
phase != phase_end ; ++phase)
diff --git a/paludis/repositories/e/e_installed_repository_id.cc b/paludis/repositories/e/e_installed_repository_id.cc
index 667edd7..838f21c 100644
--- a/paludis/repositories/e/e_installed_repository_id.cc
+++ b/paludis/repositories/e/e_installed_repository_id.cc
@@ -160,136 +160,139 @@ EInstalledRepositoryID::need_keys_added() const
Context context("When loading ID keys from '" + stringify(_imp->dir) + "':");
- if (! (*eapi())[k::supported()])
+ if (! eapi()->supported())
{
Log::get_instance()->message("e.eapi.unsupported", ll_debug, lc_context)
<< "Not loading further keys for '" << *this << "' because EAPI '"
- << (*eapi())[k::name()] << "' is not supported";
+ << eapi()->name() << "' is not supported";
return;
}
- const EAPIEbuildMetadataVariables & vars((*(*eapi())[k::supported()])[k::ebuild_metadata_variables()]);
- const EAPIEbuildEnvironmentVariables & env((*(*eapi())[k::supported()])[k::ebuild_environment_variables()]);
+ std::tr1::shared_ptr<const EAPIEbuildMetadataVariables> vars(eapi()->supported()->ebuild_metadata_variables());
+ std::tr1::shared_ptr<const EAPIEbuildEnvironmentVariables> env(eapi()->supported()->ebuild_environment_variables());
- if (! env[k::env_use()].empty())
- if ((_imp->dir / env[k::env_use()]).exists())
+ if (! env->env_use().empty())
+ if ((_imp->dir / env->env_use()).exists())
{
- _imp->use.reset(new EUseKey(_imp->environment, shared_from_this(), env[k::env_use()], env[k::description_use()],
- file_contents(_imp->dir / env[k::env_use()]), mkt_internal));
+ _imp->use.reset(new EUseKey(_imp->environment, shared_from_this(), env->env_use(), env->description_use(),
+ file_contents(_imp->dir / env->env_use()), mkt_internal));
add_metadata_key(_imp->use);
}
- if (! vars.metadata_inherited.empty())
- if ((_imp->dir / vars.metadata_inherited).exists())
+ if (! vars->inherited().name().empty())
+ if ((_imp->dir / vars->inherited().name()).exists())
{
- _imp->inherited.reset(new EInheritedKey(shared_from_this(), vars.metadata_inherited, vars.description_inherited,
- file_contents(_imp->dir / vars.metadata_inherited), mkt_internal));
+ _imp->inherited.reset(new EInheritedKey(shared_from_this(), vars->inherited().name(), vars->inherited().description(),
+ file_contents(_imp->dir / vars->inherited().name()), mkt_internal));
add_metadata_key(_imp->inherited);
}
- if (! vars.metadata_iuse.empty())
- if ((_imp->dir / vars.metadata_iuse).exists())
+ if (! vars->iuse().name().empty())
+ if ((_imp->dir / vars->iuse().name()).exists())
{
- _imp->iuse.reset(new EIUseKey(_imp->environment, shared_from_this(), vars.metadata_iuse, vars.description_iuse,
- file_contents(_imp->dir / vars.metadata_iuse), mkt_normal));
+ _imp->iuse.reset(new EIUseKey(_imp->environment, shared_from_this(), vars->iuse().name(), vars->iuse().description(),
+ file_contents(_imp->dir / vars->iuse().name()), mkt_normal));
add_metadata_key(_imp->iuse);
}
- if (! vars.metadata_license.empty())
- if ((_imp->dir / vars.metadata_license).exists())
+ if (! vars->license().name().empty())
+ if ((_imp->dir / vars->license().name()).exists())
{
- _imp->license.reset(new ELicenseKey(_imp->environment, shared_from_this(), vars.metadata_license, vars.description_license,
- file_contents(_imp->dir / vars.metadata_license), mkt_normal));
+ _imp->license.reset(new ELicenseKey(_imp->environment, shared_from_this(), vars->license().name(), vars->license().description(),
+ file_contents(_imp->dir / vars->license().name()), mkt_normal));
add_metadata_key(_imp->license);
}
- if (! vars.metadata_provide.empty())
- if ((_imp->dir / vars.metadata_provide).exists())
+ if (! vars->provide().name().empty())
+ if ((_imp->dir / vars->provide().name()).exists())
{
- _imp->provide.reset(new EProvideKey(_imp->environment, shared_from_this(), vars.metadata_provide, vars.description_provide,
- file_contents(_imp->dir / vars.metadata_provide), mkt_internal));
+ _imp->provide.reset(new EProvideKey(_imp->environment, shared_from_this(), vars->provide().name(), vars->provide().description(),
+ file_contents(_imp->dir / vars->provide().name()), mkt_internal));
add_metadata_key(_imp->provide);
}
- if (! vars.metadata_dependencies.empty())
+ if (! vars->dependencies().name().empty())
{
- if ((_imp->dir / vars.metadata_dependencies).exists())
+ if ((_imp->dir / vars->dependencies().name()).exists())
{
DependenciesRewriter rewriter;
- parse_depend(file_contents(_imp->dir / vars.metadata_dependencies), _imp->environment, shared_from_this(), *eapi())->accept(rewriter);
+ parse_depend(file_contents(_imp->dir / vars->dependencies().name()), _imp->environment, shared_from_this(), *eapi())->accept(rewriter);
- _imp->build_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars.metadata_dependencies + ".DEPEND",
- vars.description_dependencies + " (build)", rewriter.depend(), _imp->build_dependencies_labels, mkt_dependencies));
+ _imp->build_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars->dependencies().name() + ".DEPEND",
+ vars->dependencies().description() + " (build)", rewriter.depend(), _imp->build_dependencies_labels, mkt_dependencies));
add_metadata_key(_imp->build_dependencies);
- _imp->run_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars.metadata_dependencies + ".RDEPEND",
- vars.description_dependencies + " (run)", rewriter.rdepend(), _imp->build_dependencies_labels, mkt_dependencies));
+ _imp->run_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars->dependencies().name() + ".RDEPEND",
+ vars->dependencies().description() + " (run)", rewriter.rdepend(), _imp->build_dependencies_labels, mkt_dependencies));
add_metadata_key(_imp->run_dependencies);
- _imp->post_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars.metadata_dependencies + ".PDEPEND",
- vars.description_dependencies + " (post)", rewriter.pdepend(), _imp->build_dependencies_labels, mkt_dependencies));
+ _imp->post_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars->dependencies().name() + ".PDEPEND",
+ vars->dependencies().description() + " (post)", rewriter.pdepend(), _imp->build_dependencies_labels, mkt_dependencies));
add_metadata_key(_imp->post_dependencies);
}
}
else
{
- if (! vars.metadata_build_depend.empty())
- if ((_imp->dir / vars.metadata_build_depend).exists())
+ if (! vars->build_depend().name().empty())
+ if ((_imp->dir / vars->build_depend().name()).exists())
{
- _imp->build_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars.metadata_build_depend,
- vars.description_build_depend, file_contents(_imp->dir / vars.metadata_build_depend),
+ _imp->build_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars->build_depend().name(),
+ vars->build_depend().description(), file_contents(_imp->dir / vars->build_depend().name()),
_imp->build_dependencies_labels, mkt_dependencies));
add_metadata_key(_imp->build_dependencies);
}
- if (! vars.metadata_run_depend.empty())
- if ((_imp->dir / vars.metadata_run_depend).exists())
+ if (! vars->run_depend().name().empty())
+ if ((_imp->dir / vars->run_depend().name()).exists())
{
- _imp->run_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars.metadata_run_depend,
- vars.description_run_depend, file_contents(_imp->dir / vars.metadata_run_depend),
+ _imp->run_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars->run_depend().name(),
+ vars->run_depend().description(), file_contents(_imp->dir / vars->run_depend().name()),
_imp->run_dependencies_labels, mkt_dependencies));
add_metadata_key(_imp->run_dependencies);
}
- if (! vars.metadata_pdepend.empty())
- if ((_imp->dir / vars.metadata_pdepend).exists())
+ if (! vars->pdepend().name().empty())
+ if ((_imp->dir / vars->pdepend().name()).exists())
{
- _imp->post_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars.metadata_pdepend,
- vars.description_pdepend, file_contents(_imp->dir / vars.metadata_pdepend),
+ _imp->post_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars->pdepend().name(),
+ vars->pdepend().description(), file_contents(_imp->dir / vars->pdepend().name()),
_imp->post_dependencies_labels, mkt_dependencies));
add_metadata_key(_imp->post_dependencies);
}
}
- if (! vars.metadata_restrict.empty())
- if ((_imp->dir / vars.metadata_restrict).exists())
+ if (! vars->restrictions().name().empty())
+ if ((_imp->dir / vars->restrictions().name()).exists())
{
- _imp->restrictions.reset(new ERestrictKey(_imp->environment, shared_from_this(), vars.metadata_restrict, vars.description_restrict,
- file_contents(_imp->dir / vars.metadata_restrict), mkt_internal));
+ _imp->restrictions.reset(new ERestrictKey(_imp->environment, shared_from_this(), vars->restrictions().name(),
+ vars->restrictions().description(),
+ file_contents(_imp->dir / vars->restrictions().name()), mkt_internal));
add_metadata_key(_imp->restrictions);
}
- if (! vars.metadata_src_uri.empty())
- if ((_imp->dir / vars.metadata_src_uri).exists())
+ if (! vars->src_uri().name().empty())
+ if ((_imp->dir / vars->src_uri().name()).exists())
{
- _imp->src_uri.reset(new EFetchableURIKey(_imp->environment, shared_from_this(), vars.metadata_src_uri, vars.description_src_uri,
- file_contents(_imp->dir / vars.metadata_src_uri), mkt_dependencies));
+ _imp->src_uri.reset(new EFetchableURIKey(_imp->environment, shared_from_this(), vars->src_uri().name(),
+ vars->src_uri().description(),
+ file_contents(_imp->dir / vars->src_uri().name()), mkt_dependencies));
add_metadata_key(_imp->src_uri);
}
- if (! vars.metadata_description.empty())
- if ((_imp->dir / vars.metadata_description).exists())
+ if (! vars->description().name().empty())
+ if ((_imp->dir / vars->description().name()).exists())
{
- _imp->short_description.reset(new LiteralMetadataValueKey<std::string> (vars.metadata_description,
- vars.description_description, mkt_significant, file_contents(_imp->dir / vars.metadata_description)));
+ _imp->short_description.reset(new LiteralMetadataValueKey<std::string> (vars->description().name(),
+ vars->description().description(), mkt_significant, file_contents(_imp->dir / vars->description().name())));
add_metadata_key(_imp->short_description);
}
- if (! vars.metadata_homepage.empty())
- if ((_imp->dir / vars.metadata_homepage).exists())
+ if (! vars->homepage().name().empty())
+ if ((_imp->dir / vars->homepage().name()).exists())
{
- _imp->homepage.reset(new ESimpleURIKey(_imp->environment, shared_from_this(), vars.metadata_homepage, vars.description_homepage,
- file_contents(_imp->dir / vars.metadata_homepage), mkt_significant));
+ _imp->homepage.reset(new ESimpleURIKey(_imp->environment, shared_from_this(), vars->homepage().name(),
+ vars->homepage().description(),
+ file_contents(_imp->dir / vars->homepage().name()), mkt_significant));
add_metadata_key(_imp->homepage);
}
diff --git a/paludis/repositories/e/e_key.cc b/paludis/repositories/e/e_key.cc
index 1114698..1b0b1e4 100644
--- a/paludis/repositories/e/e_key.cc
+++ b/paludis/repositories/e/e_key.cc
@@ -309,19 +309,19 @@ EFetchableURIKey::initial_label() const
for (DepSpecFlattener<RestrictSpecTree, PlainTextDepSpec>::ConstIterator i(f.begin()), i_end(f.end()) ;
i != i_end ; ++i)
{
- if ((*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->end() !=
- std::find((*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->begin(),
- (*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->end(), (*i)->text()))
+ if (_imp->id->eapi()->supported()->ebuild_options()->restrict_fetch()->end() !=
+ std::find(_imp->id->eapi()->supported()->ebuild_options()->restrict_fetch()->begin(),
+ _imp->id->eapi()->supported()->ebuild_options()->restrict_fetch()->end(), (*i)->text()))
_imp->initial_label = *parse_uri_label("default-restrict-fetch:", *_imp->id->eapi())->begin();
- else if ((*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->end() !=
- std::find((*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->begin(),
- (*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->end(), (*i)->text()))
+ else if (_imp->id->eapi()->supported()->ebuild_options()->restrict_fetch()->end() !=
+ std::find(_imp->id->eapi()->supported()->ebuild_options()->restrict_fetch()->begin(),
+ _imp->id->eapi()->supported()->ebuild_options()->restrict_fetch()->end(), (*i)->text()))
_imp->initial_label = *parse_uri_label("default-restrict-mirror:", *_imp->id->eapi())->begin();
- else if ((*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_primaryuri->end() !=
- std::find((*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_primaryuri->begin(),
- (*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_primaryuri->end(), (*i)->text()))
+ else if (_imp->id->eapi()->supported()->ebuild_options()->restrict_primaryuri()->end() !=
+ std::find(_imp->id->eapi()->supported()->ebuild_options()->restrict_primaryuri()->begin(),
+ _imp->id->eapi()->supported()->ebuild_options()->restrict_primaryuri()->end(), (*i)->text()))
_imp->initial_label = *parse_uri_label("default-restrict-primaryuri:", *_imp->id->eapi())->begin();
}
@@ -586,7 +586,7 @@ EIUseKey::value() const
for (std::list<std::string>::const_iterator t(tokens.begin()), t_end(tokens.end()) ;
t != t_end ; ++t)
{
- IUseFlag f(*t, (*(*_imp->id->eapi())[k::supported()])[k::iuse_flag_parse_options()], std::string::npos);
+ IUseFlag f(*t, _imp->id->eapi()->supported()->iuse_flag_parse_options(), std::string::npos);
for (UseFlagNameSet::ConstIterator p(prefixes->begin()), p_end(prefixes->end()) ;
p != p_end ; ++p)
if (0 == stringify(f.flag).compare(0, stringify(*p).length(), stringify(*p), 0, stringify(*p).length()))
diff --git a/paludis/repositories/e/e_repository.cc b/paludis/repositories/e/e_repository.cc
index ae6fb3c..05b679b 100644
--- a/paludis/repositories/e/e_repository.cc
+++ b/paludis/repositories/e/e_repository.cc
@@ -298,8 +298,8 @@ namespace paludis
profile_ptr.reset(new ERepositoryProfile(
params.environment, repo, repo->name(), *params.profiles,
- (*(*erepository::EAPIData::get_instance()->eapi_from_string(
- params.eapi_when_unknown))[k::supported()])[k::ebuild_environment_variables()][k::env_arch()]));
+ erepository::EAPIData::get_instance()->eapi_from_string(
+ params.eapi_when_unknown)->supported()->ebuild_environment_variables()->env_arch()));
}
void
@@ -343,8 +343,8 @@ namespace paludis
(k::status(), tokens.at(2))
(k::profile(), std::tr1::shared_ptr<ERepositoryProfile>(new ERepositoryProfile(
params.environment, repo, repo->name(), profiles,
- (*(*erepository::EAPIData::get_instance()->eapi_from_string(
- params.eapi_when_unknown))[k::supported()])[k::ebuild_environment_variables()][k::env_arch()]))));
+ erepository::EAPIData::get_instance()->eapi_from_string(
+ params.eapi_when_unknown)->supported()->ebuild_environment_variables()->env_arch()))));
}
catch (const InternalError &)
{
@@ -534,8 +534,8 @@ ERepository::repository_masked(const PackageID & id) const
{
std::tr1::shared_ptr<const PackageDepSpec> a(new PackageDepSpec(parse_elike_package_dep_spec(
line->first,
- (*(*erepository::EAPIData::get_instance()->eapi_from_string(_imp->params.profile_eapi))
- [k::supported()])[k::package_dep_spec_parse_options()],
+ erepository::EAPIData::get_instance()->eapi_from_string(
+ _imp->params.profile_eapi)->supported()->package_dep_spec_parse_options(),
std::tr1::shared_ptr<const PackageID>())));
if (a->package_ptr())
_imp->repo_mask[*a->package_ptr()].push_back(std::make_pair(a, line->second));
@@ -579,7 +579,7 @@ ERepository::query_use(const UseFlagName & f, const PackageID & e) const
const erepository::ERepositoryID & id(static_cast<const erepository::ERepositoryID &>(e));
- if (! (*id.eapi())[k::supported()])
+ if (! id.eapi()->supported())
{
Log::get_instance()->message("e.query_use.unsupported_eapi", ll_qa, lc_no_context)
<< "Was asked for the state of USE flag '" << f << "' for ID '" << e
@@ -609,7 +609,7 @@ ERepository::query_use(const UseFlagName & f, const PackageID & e) const
if (id.iuse_key()->value()->end() != id.iuse_key()->value()->find(IUseFlag(f, use_disabled, 0)))
break;
- if (! (*(*id.eapi())[k::supported()])[k::ebuild_options()].require_use_expand_in_iuse)
+ if (! id.eapi()->supported()->ebuild_options()->require_use_expand_in_iuse())
{
if (arch_flags()->end() != arch_flags()->find(f))
break;
@@ -626,16 +626,16 @@ ERepository::query_use(const UseFlagName & f, const PackageID & e) const
Log::get_instance()->message("e.query_use.not_in_iuse", ll_qa, lc_context)
<< "Was asked for the state of "
- << (*(*id.eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use()]
+ << id.eapi()->supported()->ebuild_environment_variables()->env_use()
<< " flag '" << f << "' for ID '" << e
<< "', but that flag is not listed in " << id.iuse_key()->raw_name() << " and is not a "
- << (*(*id.eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand()] << " or "
- << (*(*id.eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_arch()] << " value";
+ << id.eapi()->supported()->ebuild_environment_variables()->env_use_expand() << " or "
+ << id.eapi()->supported()->ebuild_environment_variables()->env_arch() << " value";
}
else
Log::get_instance()->message("e.query_use.not_in_iuse", ll_qa, lc_context)
<< "Was asked for the state of "
- << (*(*id.eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use()]
+ << id.eapi()->supported()->ebuild_environment_variables()->env_use()
<< " flag '" << f << "' for ID '" << e
<< "', but that flag is not listed in " << id.iuse_key()->raw_name();
@@ -937,8 +937,8 @@ ERepository::use_expand_flags() const
{
_imp->need_profiles();
- std::string expand_sep(stringify((*(*erepository::EAPIData::get_instance()->eapi_from_string(
- (_imp->params.profile_eapi)))[k::supported()])[k::ebuild_options()].use_expand_separator));
+ std::string expand_sep(stringify(erepository::EAPIData::get_instance()->eapi_from_string(
+ _imp->params.profile_eapi)->supported()->ebuild_options()->use_expand_separator()));
std::tr1::shared_ptr<UseFlagNameSet> result(new UseFlagNameSet);
for (ERepositoryProfile::UseExpandConstIterator i(_imp->profile_ptr->begin_use_expand()),
i_end(_imp->profile_ptr->end_use_expand()) ; i != i_end ; ++i)
@@ -998,7 +998,7 @@ ERepository::use_expand_separator(const PackageID & id) const
if (this != id.repository().get())
return '\0';
const std::tr1::shared_ptr<const erepository::EAPI> & eapi(static_cast<const erepository::ERepositoryID &>(id).eapi());
- return (*eapi)[k::supported()] ? (*(*eapi)[k::supported()])[k::ebuild_options()].use_expand_separator : '\0';
+ return eapi->supported() ? eapi->supported()->ebuild_options()->use_expand_separator() : '\0';
}
void
@@ -1092,8 +1092,8 @@ ERepository::describe_use_flag(const UseFlagName & f,
if (_imp->use_desc.empty())
{
- std::string expand_sep(stringify((*(*erepository::EAPIData::get_instance()->eapi_from_string(
- _imp->params.profile_eapi))[k::supported()])[k::ebuild_options()].use_expand_separator));
+ std::string expand_sep(stringify(erepository::EAPIData::get_instance()->eapi_from_string(
+ _imp->params.profile_eapi)->supported()->ebuild_options()->use_expand_separator()));
std::tr1::shared_ptr<const UseDescFileInfoSequence> use_desc_info(_imp->layout->use_desc_files());
_imp->use_desc.push_back(std::tr1::shared_ptr<UseDesc>(new UseDesc(use_desc_info, expand_sep)));
}
@@ -1120,7 +1120,7 @@ ERepository::is_suitable_destination_for(const PackageID & e) const
{
std::string f(e.repository()->format_key() ? e.repository()->format_key()->value() : "");
if (f == "ebuild")
- return (*(*static_cast<const erepository::ERepositoryID &>(e).eapi())[k::supported()])[k::can_be_pbin()];
+ return static_cast<const erepository::ERepositoryID &>(e).eapi()->supported()->can_be_pbin();
else
return false;
}
@@ -1400,15 +1400,15 @@ ERepository::make_manifest(const QualifiedPackageName & qpn)
std::string
ERepository::accept_keywords_variable() const
{
- return (*(*erepository::EAPIData::get_instance()->eapi_from_string(params().profile_eapi))
- [k::supported()])[k::ebuild_environment_variables()][k::env_accept_keywords()];
+ return erepository::EAPIData::get_instance()->eapi_from_string(params().profile_eapi)->supported()
+ ->ebuild_environment_variables()->env_accept_keywords();
}
std::string
ERepository::arch_variable() const
{
- return (*(*erepository::EAPIData::get_instance()->eapi_from_string(params().profile_eapi))
- [k::supported()])[k::ebuild_environment_variables()][k::env_arch()];
+ return erepository::EAPIData::get_instance()->eapi_from_string(params().profile_eapi)->supported()
+ ->ebuild_environment_variables()->env_arch();
}
void
diff --git a/paludis/repositories/e/e_repository_TEST.cc b/paludis/repositories/e/e_repository_TEST.cc
index d9c1190..01b3221 100644
--- a/paludis/repositories/e/e_repository_TEST.cc
+++ b/paludis/repositories/e/e_repository_TEST.cc
@@ -71,6 +71,7 @@ namespace
namespace test_cases
{
+#if 0
struct ERepositoryRepoNameTest : TestCase
{
ERepositoryRepoNameTest() : TestCase("repo name") { }
@@ -459,6 +460,7 @@ namespace test_cases
}
}
} test_e_repository_metadata_cached;
+#endif
struct ERepositoryMetadataUncachedTest : TestCase
{
@@ -497,6 +499,8 @@ namespace test_cases
&env, UserPackageDepSpecOptions()))))]->begin());
TEST_CHECK(id1->end_metadata() != id1->find_metadata("EAPI"));
+ TEST_CHECK(visitor_cast<const MetadataValueKey<std::string> >(**id1->find_metadata("EAPI")));
+ TEST_CHECK_EQUAL(visitor_cast<const MetadataValueKey<std::string> >(**id1->find_metadata("EAPI"))->value(), "0");
TEST_CHECK(id1->short_description_key());
TEST_CHECK_EQUAL(id1->short_description_key()->value(), "The Description");
StringifyFormatter ff;
@@ -529,6 +533,7 @@ namespace test_cases
}
} test_e_repository_metadata_uncached;
+#if 0
struct ERepositoryMetadataStaleTest : TestCase
{
ERepositoryMetadataStaleTest() : TestCase("metadata stale") { }
@@ -623,7 +628,7 @@ namespace test_cases
&env, UserPackageDepSpecOptions()))))]->begin());
TEST_CHECK(id1->end_metadata() != id1->find_metadata("EAPI"));
- TEST_CHECK_EQUAL((*std::tr1::static_pointer_cast<const erepository::ERepositoryID>(id1)->eapi())[k::name()], "UNKNOWN");
+ TEST_CHECK_EQUAL(std::tr1::static_pointer_cast<const erepository::ERepositoryID>(id1)->eapi()->name(), "UNKNOWN");
TEST_CHECK(! id1->short_description_key());
}
}
@@ -2041,5 +2046,6 @@ namespace test_cases
TEST_CHECK_EQUAL(FSEntry("e_repository_TEST_dir/root/bar").readlink(), "/foo");
}
} test_e_repository_symlink_rewriting;
+#endif
}
diff --git a/paludis/repositories/e/e_repository_id.cc b/paludis/repositories/e/e_repository_id.cc
index cc4f9cb..d6325fd 100644
--- a/paludis/repositories/e/e_repository_id.cc
+++ b/paludis/repositories/e/e_repository_id.cc
@@ -32,7 +32,7 @@ ERepositoryID::breaks_portage() const
std::tr1::shared_ptr<Set<std::string> > why(new Set<std::string>);
if (version().has_try_part() || version().has_scm_part() || version().has_local_revision())
why->insert("version");
- if ((! (*eapi())[k::supported()]) || (*((*eapi())[k::supported()]))[k::breaks_portage()])
+ if ((! eapi()->supported()) || eapi()->supported()->breaks_portage())
why->insert("eapi");
return why;
}
diff --git a/paludis/repositories/e/e_repository_news.cc b/paludis/repositories/e/e_repository_news.cc
index 5b95517..a0629b5 100644
--- a/paludis/repositories/e/e_repository_news.cc
+++ b/paludis/repositories/e/e_repository_news.cc
@@ -141,8 +141,8 @@ ERepositoryNews::update_news() const
i_end(news.end_display_if_installed()) ; i != i_end ; ++i)
if (! (*_imp->environment)[selection::SomeArbitraryVersion(
generator::Matches(PackageDepSpec(parse_elike_package_dep_spec(*i,
- (*(*erepository::EAPIData::get_instance()->eapi_from_string(
- _imp->e_repository->params().profile_eapi))[k::supported()])[k::package_dep_spec_parse_options()],
+ erepository::EAPIData::get_instance()->eapi_from_string(
+ _imp->e_repository->params().profile_eapi)->supported()->package_dep_spec_parse_options(),
std::tr1::shared_ptr<const PackageID>()))) |
filter::SupportsAction<InstalledAction>())]->empty())
local_show = true;
diff --git a/paludis/repositories/e/e_repository_profile.cc b/paludis/repositories/e/e_repository_profile.cc
index 8587597..c0f33ed 100644
--- a/paludis/repositories/e/e_repository_profile.cc
+++ b/paludis/repositories/e/e_repository_profile.cc
@@ -337,8 +337,8 @@ Implementation<ERepositoryProfile>::load_profile_make_defaults(const FSEntry & d
environment_variables[k->first] = k->second;
}
- std::string use_expand_var((*(*erepository::EAPIData::get_instance()->eapi_from_string(
- repository->params().profile_eapi))[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand()]);
+ std::string use_expand_var(erepository::EAPIData::get_instance()->eapi_from_string(
+ repository->params().profile_eapi)->supported()->ebuild_environment_variables()->env_use_expand());
try
{
use_expand.clear();
@@ -360,8 +360,8 @@ Implementation<ERepositoryProfile>::load_profile_make_defaults(const FSEntry & d
void
Implementation<ERepositoryProfile>::load_special_make_defaults_vars()
{
- std::string use_var((*(*erepository::EAPIData::get_instance()->eapi_from_string(
- repository->params().profile_eapi))[k::supported()])[k::ebuild_environment_variables()][k::env_use()]);
+ std::string use_var(erepository::EAPIData::get_instance()->eapi_from_string(
+ repository->params().profile_eapi)->supported()->ebuild_environment_variables()->env_use());
try
{
use.clear();
@@ -379,8 +379,8 @@ Implementation<ERepositoryProfile>::load_special_make_defaults_vars()
<< "Loading '" << use_var << "' failed due to exception: " << e.message() << " (" << e.what() << ")";
}
- std::string use_expand_var((*(*erepository::EAPIData::get_instance()->eapi_from_string(
- repository->params().profile_eapi))[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand()]);
+ std::string use_expand_var(erepository::EAPIData::get_instance()->eapi_from_string(
+ repository->params().profile_eapi)->supported()->ebuild_environment_variables()->env_use_expand());
try
{
use_expand.clear();
@@ -398,8 +398,8 @@ Implementation<ERepositoryProfile>::load_special_make_defaults_vars()
<< "Loading '" << use_expand_var << "' failed due to exception: " << e.message() << " (" << e.what() << ")";
}
- std::string use_expand_hidden_var((*(*erepository::EAPIData::get_instance()->eapi_from_string(
- repository->params().profile_eapi))[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand_hidden()]);
+ std::string use_expand_hidden_var(erepository::EAPIData::get_instance()->eapi_from_string(
+ repository->params().profile_eapi)->supported()->ebuild_environment_variables()->env_use_expand_hidden());
try
{
use_expand_hidden.clear();
@@ -428,13 +428,13 @@ Implementation<ERepositoryProfile>::is_incremental(const std::string & s) const
{
Context c("When checking whether '" + s + "' is incremental:");
- return (! s.empty()) &&
- (s == (*(*e)[k::supported()])[k::ebuild_environment_variables()][k::env_use()]
- || s == (*(*e)[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand()]
- || s == (*(*e)[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand_hidden()]
- || s == "CONFIG_PROTECT"
- || s == "CONFIG_PROTECT_MASK"
- || use_expand.end() != use_expand.find(UseFlagName(s)));
+ return (! s.empty()) && (
+ (s == e->supported()->ebuild_environment_variables()->env_use())
+ || (s == e->supported()->ebuild_environment_variables()->env_use_expand())
+ || (s == e->supported()->ebuild_environment_variables()->env_use_expand_hidden())
+ || s == "CONFIG_PROTECT"
+ || s == "CONFIG_PROTECT_MASK"
+ || use_expand.end() != use_expand.find(UseFlagName(s)));
}
catch (const InternalError &)
{
@@ -446,12 +446,12 @@ Implementation<ERepositoryProfile>::is_incremental(const std::string & s) const
<< "Caught exception '" << x.message() << "' (" << x.what()
<< "), possibly due to weird variable name being used in profile";
- return (! s.empty()) &&
- (s == (*(*e)[k::supported()])[k::ebuild_environment_variables()][k::env_use()]
- || s == (*(*e)[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand()]
- || s == (*(*e)[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand_hidden()]
- || s == "CONFIG_PROTECT"
- || s == "CONFIG_PROTECT_MASK");
+ return (! s.empty()) && (
+ (s == e->supported()->ebuild_environment_variables()->env_use())
+ || (s == e->supported()->ebuild_environment_variables()->env_use_expand())
+ || (s == e->supported()->ebuild_environment_variables()->env_use_expand_hidden())
+ || s == "CONFIG_PROTECT"
+ || s == "CONFIG_PROTECT_MASK");
}
}
@@ -470,8 +470,8 @@ Implementation<ERepositoryProfile>::make_vars_from_file_vars()
Context context_spec("When parsing '" + *i + "':");
std::tr1::shared_ptr<PackageDepSpec> spec(new PackageDepSpec(
parse_elike_package_dep_spec(i->substr(1),
- (*(*erepository::EAPIData::get_instance()->eapi_from_string(
- repository->params().profile_eapi))[k::supported()])[k::package_dep_spec_parse_options()],
+ erepository::EAPIData::get_instance()->eapi_from_string(
+ repository->params().profile_eapi)->supported()->package_dep_spec_parse_options(),
std::tr1::shared_ptr<const PackageID>())));
spec->set_tag(system_tag);
@@ -503,8 +503,8 @@ Implementation<ERepositoryProfile>::make_vars_from_file_vars()
QualifiedPackageName v(tokens[0]);
virtuals.erase(v);
virtuals.insert(std::make_pair(v, std::tr1::shared_ptr<PackageDepSpec>(new PackageDepSpec(
- parse_elike_package_dep_spec(tokens[1], (*(*erepository::EAPIData::get_instance()->eapi_from_string(
- repository->params().profile_eapi))[k::supported()])[k::package_dep_spec_parse_options()],
+ parse_elike_package_dep_spec(tokens[1], erepository::EAPIData::get_instance()->eapi_from_string(
+ repository->params().profile_eapi)->supported()->package_dep_spec_parse_options(),
std::tr1::shared_ptr<const PackageID>())))));
}
}
@@ -527,8 +527,8 @@ Implementation<ERepositoryProfile>::make_vars_from_file_vars()
try
{
std::tr1::shared_ptr<const PackageDepSpec> a(new PackageDepSpec(
- parse_elike_package_dep_spec(line->first, (*(*erepository::EAPIData::get_instance()->eapi_from_string(
- repository->params().profile_eapi))[k::supported()])[k::package_dep_spec_parse_options()],
+ parse_elike_package_dep_spec(line->first, erepository::EAPIData::get_instance()->eapi_from_string(
+ repository->params().profile_eapi)->supported()->package_dep_spec_parse_options(),
std::tr1::shared_ptr<const PackageID>())));
if (a->package_ptr())
@@ -610,9 +610,9 @@ Implementation<ERepositoryProfile>::load_spec_use_file(const FSEntry & file, Pac
try
{
std::tr1::shared_ptr<const PackageDepSpec> spec(new PackageDepSpec(
- parse_elike_package_dep_spec(*tokens.begin(), (*(*erepository::EAPIData::get_instance()->eapi_from_string(
- repository->params().profile_eapi))[k::supported()])[k::package_dep_spec_parse_options()],
- std::tr1::shared_ptr<const PackageID>())));
+ parse_elike_package_dep_spec(*tokens.begin(), erepository::EAPIData::get_instance()->eapi_from_string(
+ repository->params().profile_eapi)->supported()->package_dep_spec_parse_options(),
+ std::tr1::shared_ptr<const PackageID>())));
PackageFlagStatusMapList::iterator n(m.insert(m.end(), std::make_pair(spec, FlagStatusMap())));
for (std::list<std::string>::const_iterator t(next(tokens.begin())), t_end(tokens.end()) ;
@@ -653,8 +653,8 @@ Implementation<ERepositoryProfile>::add_use_expand_to_use()
stacked_values_list.push_back(StackedValues("use_expand special values"));
- std::string expand_sep(stringify((*(*erepository::EAPIData::get_instance()->eapi_from_string(
- repository->params().profile_eapi))[k::supported()])[k::ebuild_options()].use_expand_separator));
+ std::string expand_sep(stringify(erepository::EAPIData::get_instance()->eapi_from_string(
+ repository->params().profile_eapi)->supported()->ebuild_options()->use_expand_separator()));
for (UseFlagSet::const_iterator x(use_expand.begin()), x_end(use_expand.end()) ;
x != x_end ; ++x)
diff --git a/paludis/repositories/e/eapi-fwd.hh b/paludis/repositories/e/eapi-fwd.hh
index f5b779b..2a15c50 100644
--- a/paludis/repositories/e/eapi-fwd.hh
+++ b/paludis/repositories/e/eapi-fwd.hh
@@ -39,71 +39,10 @@ namespace paludis
class EAPIEbuildOptions;
class EAPILabels;
class EAPIToolsOptions;
-
- typedef kc::KeyedClass<
- kc::Field<k::rewrite_virtuals, bool>,
- kc::Field<k::no_slot_or_repo, bool>
- > EAPIPipeCommands;
-
- /**
- * Information about a supported EAPI's ebuild environment variables.
- *
- * \see EAPIData
- * \see EAPI
- * \ingroup grpeapi
- * \nosubgrouping
- */
- typedef kc::KeyedClass<
- kc::Field<k::env_use, std::string>,
- kc::Field<k::env_use_expand, std::string>,
- kc::Field<k::env_use_expand_hidden, std::string>,
- kc::Field<k::env_aa, std::string>,
- kc::Field<k::env_arch, std::string>,
- kc::Field<k::env_kv, std::string>,
- kc::Field<k::env_accept_keywords, std::string>,
- kc::Field<k::env_distdir, std::string>,
- kc::Field<k::env_portdir, std::string>,
- kc::Field<k::description_use, std::string>
- > EAPIEbuildEnvironmentVariables;
-
- /**
- * Information about a supported EAPI.
- *
- * \see EAPIData
- * \see EAPI
- * \ingroup grpeapi
- * \nosubgrouping
- */
- typedef kc::KeyedClass<
- kc::Field<k::package_dep_spec_parse_options, ELikePackageDepSpecOptions>,
- kc::Field<k::dependency_spec_tree_parse_options, erepository::DependencySpecTreeParseOptions>,
- kc::Field<k::iuse_flag_parse_options, IUseFlagParseOptions>,
- kc::Field<k::merger_options, MergerOptions>,
- kc::Field<k::breaks_portage, bool>,
- kc::Field<k::can_be_pbin, bool>,
- kc::Field<k::ebuild_options, const EAPIEbuildOptions>,
- kc::Field<k::ebuild_phases, const EAPIEbuildPhases>,
- kc::Field<k::ebuild_metadata_variables, const EAPIEbuildMetadataVariables>,
- kc::Field<k::ebuild_environment_variables, const EAPIEbuildEnvironmentVariables>,
- kc::Field<k::uri_labels, const EAPILabels>,
- kc::Field<k::dependency_labels, const EAPILabels>,
- kc::Field<k::pipe_commands, EAPIPipeCommands>,
- kc::Field<k::tools_options, const EAPIToolsOptions>
- > SupportedEAPI;
-
- /**
- * Information about an EAPI.
- *
- * \see EAPIData
- * \ingroup grpeapi
- * \nosubgrouping
- */
- typedef kc::KeyedClass<
- kc::Field<k::name, std::string>,
- kc::Field<k::exported_name, std::string>,
- kc::Field<k::supported, std::tr1::shared_ptr<const SupportedEAPI> >
- > EAPI;
-
+ class EAPIPipeCommands;
+ class EAPIEbuildEnvironmentVariables;
+ class SupportedEAPI;
+ class EAPI;
}
}
diff --git a/paludis/repositories/e/eapi.cc b/paludis/repositories/e/eapi.cc
index aa8a4b4..d5b4461 100644
--- a/paludis/repositories/e/eapi.cc
+++ b/paludis/repositories/e/eapi.cc
@@ -36,6 +36,7 @@
#include <paludis/util/wrapped_output_iterator.hh>
#include <paludis/util/kc.hh>
#include <paludis/util/hashes.hh>
+#include <paludis/util/make_named_values.hh>
#include <tr1/unordered_map>
#include <map>
#include <vector>
@@ -44,8 +45,6 @@
using namespace paludis;
using namespace paludis::erepository;
-#include <paludis/repositories/e/eapi-sr.cc>
-
template class InstantiationPolicy<EAPIData, instantiation_method::SingletonTag>;
namespace
@@ -57,6 +56,199 @@ namespace
else
return "";
}
+
+ std::string check_get(const KeyValueConfigFile & k, const std::string & key)
+ {
+ return k.get(key);
+ }
+
+ template <typename T_>
+ T_ destringify_key(const KeyValueConfigFile & k, const std::string & key)
+ {
+ Context context("When getting key '" + key + ":");
+ return destringify<T_>(check_get(k, key));
+ }
+
+ std::tr1::shared_ptr<const EAPIEbuildEnvironmentVariables> make_ebuild_environment_variables(const KeyValueConfigFile & k)
+ {
+ return make_shared_ptr(new EAPIEbuildEnvironmentVariables(make_named_values<EAPIEbuildEnvironmentVariables>(
+ value_for<n::description_use>(check_get(k, "description_use")),
+ value_for<n::env_aa>(check_get(k, "env_aa")),
+ value_for<n::env_accept_keywords>(check_get(k, "env_accept_keywords")),
+ value_for<n::env_arch>(check_get(k, "env_arch")),
+ value_for<n::env_distdir>(check_get(k, "env_distdir")),
+ value_for<n::env_kv>(check_get(k, "env_kv")),
+ value_for<n::env_portdir>(check_get(k, "env_portdir")),
+ value_for<n::env_use>(check_get(k, "env_use")),
+ value_for<n::env_use_expand>(check_get(k, "env_use_expand")),
+ value_for<n::env_use_expand_hidden>(check_get(k, "env_use_expand_hidden"))
+ )));
+ }
+
+ EAPIMetadataVariable make_metadata_variable(const KeyValueConfigFile & k, const std::string & s)
+ {
+ return make_named_values<EAPIMetadataVariable>(
+ value_for<n::description>(check_get(k, "description_" + s)),
+ value_for<n::flat_cache_index>(destringify_key<int>(k, "flat_cache_" + s)),
+ value_for<n::name>(check_get(k, "metadata_" + s))
+ );
+ }
+
+ std::tr1::shared_ptr<const EAPIEbuildMetadataVariables> make_ebuild_metadata_variables(const KeyValueConfigFile & k)
+ {
+ return make_shared_ptr(new EAPIEbuildMetadataVariables(make_named_values<EAPIEbuildMetadataVariables>(
+ value_for<n::build_depend>(make_metadata_variable(k, "build_depend")),
+ value_for<n::dependencies>(make_metadata_variable(k, "dependencies")),
+ value_for<n::description>(make_metadata_variable(k, "description")),
+ value_for<n::eapi>(make_metadata_variable(k, "eapi")),
+ value_for<n::homepage>(make_metadata_variable(k, "homepage")),
+ value_for<n::inherited>(make_metadata_variable(k, "inherited")),
+ value_for<n::iuse>(make_metadata_variable(k, "iuse")),
+ value_for<n::keywords>(make_metadata_variable(k, "keywords")),
+ value_for<n::license>(make_metadata_variable(k, "license")),
+ value_for<n::minimum_flat_cache_size>(destringify_key<int>(k, "flat_cache_minimum_size")),
+ value_for<n::pdepend>(make_metadata_variable(k, "pdepend")),
+ value_for<n::provide>(make_metadata_variable(k, "provide")),
+ value_for<n::restrictions>(make_metadata_variable(k, "restrict")),
+ value_for<n::run_depend>(make_metadata_variable(k, "run_depend")),
+ value_for<n::slot>(make_metadata_variable(k, "slot")),
+ value_for<n::src_uri>(make_metadata_variable(k, "src_uri")),
+ value_for<n::use>(make_metadata_variable(k, "use"))
+ )));
+ }
+
+ std::tr1::shared_ptr<Set<std::string> > make_set(const std::string & s)
+ {
+ std::tr1::shared_ptr<Set<std::string> > result(new Set<std::string>);
+ tokenise_whitespace(s, result->inserter());
+ return result;
+ }
+
+ std::tr1::shared_ptr<const EAPIEbuildOptions> make_ebuild_options(const KeyValueConfigFile & k)
+ {
+ return make_shared_ptr(new EAPIEbuildOptions(make_named_values<EAPIEbuildOptions>(
+ value_for<n::binary_from_env_variables>(check_get(k, "binary_from_env_variables")),
+ value_for<n::bracket_merged_variables>(check_get(k, "bracket_merged_variables")),
+ value_for<n::directory_if_exists_variables>(check_get(k, "directory_if_exists_variables")),
+ value_for<n::directory_variables>(check_get(k, "directory_variables")),
+ value_for<n::ebuild_module_suffixes>(check_get(k, "ebuild_module_suffixes")),
+ value_for<n::ebuild_must_not_set_variables>(check_get(k, "ebuild_must_not_set_variables")),
+ value_for<n::eclass_must_not_set_variables>(check_get(k, "eclass_must_not_set_variables")),
+ value_for<n::f_function_prefix>(check_get(k, "f_function_prefix")),
+ value_for<n::ignore_pivot_env_functions>(check_get(k, "ignore_pivot_env_functions")),
+ value_for<n::ignore_pivot_env_variables>(check_get(k, "ignore_pivot_env_variables")),
+ value_for<n::must_not_change_variables>(check_get(k, "must_not_change_variables")),
+ value_for<n::non_empty_variables>(check_get(k, "non_empty_variables")),
+ value_for<n::rdepend_defaults_to_depend>(destringify_key<bool>(k, "rdepend_defaults_to_depend")),
+ value_for<n::require_use_expand_in_iuse>(destringify_key<bool>(k, "require_use_expand_in_iuse")),
+ value_for<n::restrict_fetch>(make_set(check_get(k, "restrict_fetch"))),
+ value_for<n::restrict_mirror>(make_set(check_get(k, "restrict_mirror"))),
+ value_for<n::restrict_primaryuri>(make_set(check_get(k, "restrict_primaryuri"))),
+ value_for<n::save_base_variables>(check_get(k, "save_base_variables")),
+ value_for<n::save_unmodifiable_variables>(check_get(k, "save_unmodifiable_variables")),
+ value_for<n::save_variables>(check_get(k, "save_variables")),
+ value_for<n::source_merged_variables>(check_get(k, "source_merged_variables")),
+ value_for<n::support_eclasses>(destringify_key<bool>(k, "support_eclasses")),
+ value_for<n::support_exlibs>(destringify_key<bool>(k, "support_exlibs")),
+ value_for<n::use_expand_separator>(destringify_key<char>(k, "use_expand_separator")),
+ value_for<n::utility_path_suffixes>(check_get(k, "utility_path_suffixes")),
+ value_for<n::vdb_from_env_unless_empty_variables>(check_get(k, "vdb_from_env_unless_empty_variables")),
+ value_for<n::vdb_from_env_variables>(check_get(k, "vdb_from_env_variables")),
+ value_for<n::want_portage_emulation_vars>(destringify_key<bool>(k, "want_portage_emulation_vars"))
+ )));
+ }
+
+ std::tr1::shared_ptr<const EAPIEbuildPhases> make_ebuild_phases(const KeyValueConfigFile & k)
+ {
+ return make_shared_ptr(new EAPIEbuildPhases(make_named_values<EAPIEbuildPhases>(
+ value_for<n::ebuild_config>(check_get(k, "ebuild_config")),
+ value_for<n::ebuild_info>(check_get(k, "ebuild_info")),
+ value_for<n::ebuild_install>(check_get(k, "ebuild_install")),
+ value_for<n::ebuild_metadata>(check_get(k, "ebuild_metadata")),
+ value_for<n::ebuild_nofetch>(check_get(k, "ebuild_nofetch")),
+ value_for<n::ebuild_pretend>(check_get(k, "ebuild_pretend")),
+ value_for<n::ebuild_uninstall>(check_get(k, "ebuild_uninstall")),
+ value_for<n::ebuild_variable>(check_get(k, "ebuild_variable"))
+ )));
+ }
+
+ std::tr1::shared_ptr<const EAPIPipeCommands> make_pipe_commands(const KeyValueConfigFile & k)
+ {
+ return make_shared_ptr(new EAPIPipeCommands(make_named_values<EAPIPipeCommands>(
+ value_for<n::no_slot_or_repo>(destringify_key<bool>(k, "pipe_commands_no_slot_or_repo")),
+ value_for<n::rewrite_virtuals>(destringify_key<bool>(k, "pipe_commands_rewrite_virtuals"))
+ )));
+ }
+
+ std::tr1::shared_ptr<const EAPIToolsOptions> make_tool_options(const KeyValueConfigFile & k)
+ {
+ return make_shared_ptr(new EAPIToolsOptions(make_named_values<EAPIToolsOptions>(
+ value_for<n::dosym_mkdir>(destringify_key<bool>(k, "dosym_mkdir")),
+ value_for<n::failure_is_fatal>(destringify_key<bool>(k, "failure_is_fatal")),
+ value_for<n::unpack_fix_permissions>(destringify_key<bool>(k, "unpack_fix_permissions")),
+ value_for<n::unpack_unrecognised_is_fatal>(destringify_key<bool>(k, "unpack_unrecognised_is_fatal"))
+ )));
+ }
+
+ std::tr1::shared_ptr<const SupportedEAPI> make_supported_eapi(const KeyValueConfigFile & k)
+ {
+ ELikePackageDepSpecOptions package_dep_spec_parse_options;
+ {
+ std::list<std::string> package_dep_spec_parse_options_tokens;
+ tokenise_whitespace(check_get(k, "package_dep_spec_parse_options"), std::back_inserter(package_dep_spec_parse_options_tokens));
+ for (std::list<std::string>::const_iterator t(package_dep_spec_parse_options_tokens.begin()),
+ t_end(package_dep_spec_parse_options_tokens.end()) ;
+ t != t_end ; ++t)
+ package_dep_spec_parse_options += destringify<ELikePackageDepSpecOption>(*t);
+ }
+
+ DependencySpecTreeParseOptions dependency_spec_tree_parse_options;
+ {
+ std::list<std::string> dependency_spec_tree_parse_options_tokens;
+ tokenise_whitespace(check_get(k, "dependency_spec_tree_parse_options"), std::back_inserter(dependency_spec_tree_parse_options_tokens));
+ for (std::list<std::string>::const_iterator t(dependency_spec_tree_parse_options_tokens.begin()),
+ t_end(dependency_spec_tree_parse_options_tokens.end()) ;
+ t != t_end ; ++t)
+ dependency_spec_tree_parse_options += destringify<DependencySpecTreeParseOption>(*t);
+ }
+
+ IUseFlagParseOptions iuse_flag_parse_options;
+ {
+ std::list<std::string> iuse_flag_parse_options_tokens;
+ tokenise_whitespace(check_get(k, "iuse_flag_parse_options"), std::back_inserter(iuse_flag_parse_options_tokens));
+ for (std::list<std::string>::const_iterator t(iuse_flag_parse_options_tokens.begin()),
+ t_end(iuse_flag_parse_options_tokens.end()) ;
+ t != t_end ; ++t)
+ iuse_flag_parse_options += destringify<IUseFlagParseOption>(*t);
+ }
+
+ MergerOptions merger_options;
+ {
+ std::list<std::string> merger_options_tokens;
+ tokenise_whitespace(check_get(k, "merger_options"), std::back_inserter(merger_options_tokens));
+ for (std::list<std::string>::const_iterator t(merger_options_tokens.begin()),
+ t_end(merger_options_tokens.end()) ;
+ t != t_end ; ++t)
+ merger_options += destringify<MergerOption>(*t);
+ }
+
+ return make_shared_ptr(new SupportedEAPI(make_named_values<SupportedEAPI>(
+ value_for<n::breaks_portage>(destringify_key<bool>(k, "breaks_portage")),
+ value_for<n::can_be_pbin>(destringify_key<bool>(k, "can_be_pbin")),
+ value_for<n::dependency_labels>(make_shared_ptr(new const EAPILabels(check_get(k, "dependency_labels")))),
+ value_for<n::dependency_spec_tree_parse_options>(dependency_spec_tree_parse_options),
+ value_for<n::ebuild_environment_variables>(make_ebuild_environment_variables(k)),
+ value_for<n::ebuild_metadata_variables>(make_ebuild_metadata_variables(k)),
+ value_for<n::ebuild_options>(make_ebuild_options(k)),
+ value_for<n::ebuild_phases>(make_ebuild_phases(k)),
+ value_for<n::iuse_flag_parse_options>(iuse_flag_parse_options),
+ value_for<n::merger_options>(merger_options),
+ value_for<n::package_dep_spec_parse_options>(package_dep_spec_parse_options),
+ value_for<n::pipe_commands>(make_pipe_commands(k)),
+ value_for<n::tools_options>(make_tool_options(k)),
+ value_for<n::uri_labels>(make_shared_ptr(new const EAPILabels(check_get(k, "uri_labels"))))
+ )));
+ }
}
namespace paludis
@@ -81,199 +273,11 @@ namespace paludis
std::tr1::bind(&predefined, stringify(d->dirname()), std::tr1::placeholders::_1, std::tr1::placeholders::_2),
&KeyValueConfigFile::no_transformation);
- ELikePackageDepSpecOptions package_dep_spec_parse_options;
- {
- std::list<std::string> package_dep_spec_parse_options_tokens;
- tokenise_whitespace(k.get("package_dep_spec_parse_options"), std::back_inserter(package_dep_spec_parse_options_tokens));
- for (std::list<std::string>::const_iterator t(package_dep_spec_parse_options_tokens.begin()),
- t_end(package_dep_spec_parse_options_tokens.end()) ;
- t != t_end ; ++t)
- package_dep_spec_parse_options += destringify<ELikePackageDepSpecOption>(*t);
- }
-
- DependencySpecTreeParseOptions dependency_spec_tree_parse_options;
- {
- std::list<std::string> dependency_spec_tree_parse_options_tokens;
- tokenise_whitespace(k.get("dependency_spec_tree_parse_options"), std::back_inserter(dependency_spec_tree_parse_options_tokens));
- for (std::list<std::string>::const_iterator t(dependency_spec_tree_parse_options_tokens.begin()),
- t_end(dependency_spec_tree_parse_options_tokens.end()) ;
- t != t_end ; ++t)
- dependency_spec_tree_parse_options += destringify<DependencySpecTreeParseOption>(*t);
- }
-
- IUseFlagParseOptions iuse_flag_parse_options;
- {
- std::list<std::string> iuse_flag_parse_options_tokens;
- tokenise_whitespace(k.get("iuse_flag_parse_options"), std::back_inserter(iuse_flag_parse_options_tokens));
- for (std::list<std::string>::const_iterator t(iuse_flag_parse_options_tokens.begin()),
- t_end(iuse_flag_parse_options_tokens.end()) ;
- t != t_end ; ++t)
- iuse_flag_parse_options += destringify<IUseFlagParseOption>(*t);
- }
-
- MergerOptions merger_options;
- {
- std::list<std::string> merger_options_tokens;
- tokenise_whitespace(k.get("merger_options"), std::back_inserter(merger_options_tokens));
- for (std::list<std::string>::const_iterator t(merger_options_tokens.begin()),
- t_end(merger_options_tokens.end()) ;
- t != t_end ; ++t)
- merger_options += destringify<MergerOption>(*t);
- }
-
- std::tr1::shared_ptr<EAPI> eapi(new EAPI(
- strip_trailing_string(d->basename(), ".conf"),
- k.get("exported_name"),
- make_shared_ptr(new SupportedEAPI(
- SupportedEAPI::named_create()
- (k::package_dep_spec_parse_options(), package_dep_spec_parse_options)
- (k::dependency_spec_tree_parse_options(), dependency_spec_tree_parse_options)
- (k::iuse_flag_parse_options(), iuse_flag_parse_options)
- (k::merger_options(), merger_options)
- (k::breaks_portage(), destringify<bool>(k.get("breaks_portage")))
- (k::can_be_pbin(), destringify<bool>(k.get("can_be_pbin")))
-
- (k::ebuild_options(),
- EAPIEbuildOptions(EAPIEbuildOptions::create()
- .want_portage_emulation_vars(destringify<bool>(k.get("want_portage_emulation_vars")))
- .require_use_expand_in_iuse(destringify<bool>(k.get("require_use_expand_in_iuse")))
- .rdepend_defaults_to_depend(destringify<bool>(k.get("rdepend_defaults_to_depend")))
- .non_empty_variables(k.get("non_empty_variables"))
- .directory_variables(k.get("directory_variables"))
- .directory_if_exists_variables(k.get("directory_if_exists_variables"))
- .ebuild_must_not_set_variables(k.get("ebuild_must_not_set_variables"))
- .eclass_must_not_set_variables(k.get("eclass_must_not_set_variables"))
- .vdb_from_env_variables(k.get("vdb_from_env_variables"))
- .vdb_from_env_unless_empty_variables(k.get("vdb_from_env_unless_empty_variables"))
- .binary_from_env_variables(k.get("binary_from_env_variables"))
- .source_merged_variables(k.get("source_merged_variables"))
- .bracket_merged_variables(k.get("bracket_merged_variables"))
- .must_not_change_variables(k.get("must_not_change_variables"))
- .save_variables(k.get("save_variables"))
- .save_base_variables(k.get("save_base_variables"))
- .save_unmodifiable_variables(k.get("save_unmodifiable_variables"))
- .support_eclasses(destringify<bool>(k.get("support_eclasses")))
- .support_exlibs(destringify<bool>(k.get("support_exlibs")))
- .utility_path_suffixes(k.get("utility_path_suffixes"))
- .ebuild_module_suffixes(k.get("ebuild_module_suffixes"))
- .use_expand_separator(destringify<char>(k.get("use_expand_separator")))
- .restrict_fetch(make_shared_ptr(new Set<std::string>))
- .restrict_mirror(make_shared_ptr(new Set<std::string>))
- .restrict_primaryuri(make_shared_ptr(new Set<std::string>))
- .f_function_prefix(k.get("f_function_prefix"))
- .ignore_pivot_env_variables(k.get("ignore_pivot_env_variables"))
- .ignore_pivot_env_functions(k.get("ignore_pivot_env_functions"))
- ))
-
- (k::pipe_commands(),
- EAPIPipeCommands(EAPIPipeCommands::named_create()
- (k::rewrite_virtuals(), destringify<bool>(k.get("pipe_commands_rewrite_virtuals")))
- (k::no_slot_or_repo(), destringify<bool>(k.get("pipe_commands_no_slot_or_repo")))
- ))
-
- (k::ebuild_phases(),
- EAPIEbuildPhases(EAPIEbuildPhases::create()
- .ebuild_install(k.get("ebuild_install"))
- .ebuild_uninstall(k.get("ebuild_uninstall"))
- .ebuild_pretend(k.get("ebuild_pretend"))
- .ebuild_metadata(k.get("ebuild_metadata"))
- .ebuild_nofetch(k.get("ebuild_nofetch"))
- .ebuild_variable(k.get("ebuild_variable"))
- .ebuild_info(k.get("ebuild_info"))
- .ebuild_config(k.get("ebuild_config"))
- ))
-
- (k::ebuild_metadata_variables(),
- EAPIEbuildMetadataVariables(EAPIEbuildMetadataVariables::create()
- .metadata_build_depend(k.get("metadata_build_depend"))
- .metadata_run_depend(k.get("metadata_run_depend"))
- .metadata_slot(k.get("metadata_slot"))
- .metadata_src_uri(k.get("metadata_src_uri"))
- .metadata_restrict(k.get("metadata_restrict"))
- .metadata_homepage(k.get("metadata_homepage"))
- .metadata_license(k.get("metadata_license"))
- .metadata_description(k.get("metadata_description"))
- .metadata_keywords(k.get("metadata_keywords"))
- .metadata_inherited(k.get("metadata_inherited"))
- .metadata_iuse(k.get("metadata_iuse"))
- .metadata_pdepend(k.get("metadata_pdepend"))
- .metadata_provide(k.get("metadata_provide"))
- .metadata_eapi(k.get("metadata_eapi"))
- .metadata_dependencies(k.get("metadata_dependencies"))
- .metadata_use(k.get("metadata_use"))
- .description_build_depend(k.get("description_build_depend"))
- .description_run_depend(k.get("description_run_depend"))
- .description_slot(k.get("description_slot"))
- .description_src_uri(k.get("description_src_uri"))
- .description_restrict(k.get("description_restrict"))
- .description_homepage(k.get("description_homepage"))
- .description_license(k.get("description_license"))
- .description_description(k.get("description_description"))
- .description_keywords(k.get("description_keywords"))
- .description_inherited(k.get("description_inherited"))
- .description_iuse(k.get("description_iuse"))
- .description_pdepend(k.get("description_pdepend"))
- .description_provide(k.get("description_provide"))
- .description_eapi(k.get("description_eapi"))
- .description_dependencies(k.get("description_dependencies"))
- .description_use(k.get("description_use"))
- .flat_cache_build_depend(destringify<int>(k.get("flat_cache_build_depend")))
- .flat_cache_run_depend(destringify<int>(k.get("flat_cache_run_depend")))
- .flat_cache_slot(destringify<int>(k.get("flat_cache_slot")))
- .flat_cache_src_uri(destringify<int>(k.get("flat_cache_src_uri")))
- .flat_cache_restrict(destringify<int>(k.get("flat_cache_restrict")))
- .flat_cache_homepage(destringify<int>(k.get("flat_cache_homepage")))
- .flat_cache_license(destringify<int>(k.get("flat_cache_license")))
- .flat_cache_description(destringify<int>(k.get("flat_cache_description")))
- .flat_cache_keywords(destringify<int>(k.get("flat_cache_keywords")))
- .flat_cache_inherited(destringify<int>(k.get("flat_cache_inherited")))
- .flat_cache_iuse(destringify<int>(k.get("flat_cache_iuse")))
- .flat_cache_pdepend(destringify<int>(k.get("flat_cache_pdepend")))
- .flat_cache_provide(destringify<int>(k.get("flat_cache_provide")))
- .flat_cache_eapi(destringify<int>(k.get("flat_cache_eapi")))
- .flat_cache_dependencies(destringify<int>(k.get("flat_cache_dependencies")))
- .flat_cache_use(destringify<int>(k.get("flat_cache_use")))
- .flat_cache_minimum_size(destringify<int>(k.get("flat_cache_minimum_size")))
- ))
-
- (k::ebuild_environment_variables(),
- EAPIEbuildEnvironmentVariables(EAPIEbuildEnvironmentVariables::named_create()
- (k::env_use(), k.get("env_use"))
- (k::env_use_expand(), k.get("env_use_expand"))
- (k::env_use_expand_hidden(), k.get("env_use_expand_hidden"))
- (k::env_aa(), k.get("env_aa"))
- (k::env_arch(), k.get("env_arch"))
- (k::env_kv(), k.get("env_kv"))
- (k::env_portdir(), k.get("env_portdir"))
- (k::env_distdir(), k.get("env_distdir"))
- (k::env_accept_keywords(), k.get("env_accept_keywords"))
- (k::description_use(), k.get("description_use"))
- ))
-
- (k::uri_labels(), EAPILabels(k.get("uri_labels")))
-
- (k::dependency_labels(), EAPILabels(k.get("dependency_labels")))
-
- (k::tools_options(),
- EAPIToolsOptions(EAPIToolsOptions::create()
- .unpack_unrecognised_is_fatal(destringify<bool>(
- k.get("unpack_unrecognised_is_fatal")))
- .unpack_fix_permissions(destringify<bool>(
- k.get("unpack_fix_permissions")))
- .dosym_mkdir(destringify<bool>(
- k.get("dosym_mkdir")))
- .failure_is_fatal(destringify<bool>(
- k.get("failure_is_fatal")))
- ))
-
- ))));
-
- tokenise_whitespace(k.get("restrict_fetch"),
- (*(*eapi)[k::supported()])[k::ebuild_options()].restrict_fetch->inserter());
- tokenise_whitespace(k.get("restrict_mirror"),
- (*(*eapi)[k::supported()])[k::ebuild_options()].restrict_mirror->inserter());
- tokenise_whitespace(k.get("restrict_primaryuri"),
- (*(*eapi)[k::supported()])[k::ebuild_options()].restrict_primaryuri->inserter());
+ std::tr1::shared_ptr<EAPI> eapi(new EAPI(make_named_values<EAPI>(
+ value_for<n::exported_name>(check_get(k, "exported_name")),
+ value_for<n::name>(strip_trailing_string(d->basename(), ".conf")),
+ value_for<n::supported>(make_supported_eapi(k))
+ )));
values.insert(std::make_pair(strip_trailing_string(d->basename(), ".conf"), eapi));
}
@@ -308,13 +312,21 @@ EAPIData::eapi_from_string(const std::string & s) const
if (i != _imp->values.end())
return i->second;
- return make_shared_ptr(new EAPI(s, s, std::tr1::shared_ptr<SupportedEAPI>()));
+ return make_shared_ptr(new EAPI(make_named_values<EAPI>(
+ value_for<n::exported_name>(s),
+ value_for<n::name>(s),
+ value_for<n::supported>(std::tr1::shared_ptr<const SupportedEAPI>()))
+ ));
}
std::tr1::shared_ptr<const EAPI>
EAPIData::unknown_eapi() const
{
- return make_shared_ptr(new EAPI("UNKNOWN", "UNKNOWN", std::tr1::shared_ptr<SupportedEAPI>()));
+ return make_shared_ptr(new EAPI(make_named_values<EAPI>(
+ value_for<n::exported_name>("UNKNOWN"),
+ value_for<n::name>("UNKNOWN"),
+ value_for<n::supported>(std::tr1::shared_ptr<const SupportedEAPI>()))
+ ));
}
namespace paludis
diff --git a/paludis/repositories/e/eapi.hh b/paludis/repositories/e/eapi.hh
index 3685205..0c91085 100644
--- a/paludis/repositories/e/eapi.hh
+++ b/paludis/repositories/e/eapi.hh
@@ -27,6 +27,7 @@
#include <paludis/util/instantiation_policy.hh>
#include <paludis/util/private_implementation_pattern.hh>
#include <paludis/util/options.hh>
+#include <paludis/util/named_value.hh>
#include <paludis/name.hh>
#include <paludis/dep_spec-fwd.hh>
#include <paludis/merger-fwd.hh>
@@ -34,10 +35,100 @@
namespace paludis
{
- namespace erepository
+ namespace n
{
-#include <paludis/repositories/e/eapi-sr.hh>
+ struct binary_from_env_variables;
+ struct bracket_merged_variables;
+ struct breaks_portage;
+ struct build_depend;
+ struct can_be_pbin;
+ struct dependencies;
+ struct dependency_labels;
+ struct dependency_spec_tree_parse_options;
+ struct description;
+ struct description_use;
+ struct directory_if_exists_variables;
+ struct directory_variables;
+ struct dosym_mkdir;
+ struct eapi;
+ struct ebuild_config;
+ struct ebuild_environment_variables;
+ struct ebuild_info;
+ struct ebuild_install;
+ struct ebuild_metadata;
+ struct ebuild_metadata_variables;
+ struct ebuild_module_suffixes;
+ struct ebuild_must_not_set_variables;
+ struct ebuild_nofetch;
+ struct ebuild_options;
+ struct ebuild_phases;
+ struct ebuild_pretend;
+ struct ebuild_uninstall;
+ struct ebuild_variable;
+ struct eclass_must_not_set_variables;
+ struct env_aa;
+ struct env_accept_keywords;
+ struct env_arch;
+ struct env_distdir;
+ struct env_kv;
+ struct env_portdir;
+ struct env_use;
+ struct env_use_expand;
+ struct env_use_expand_hidden;
+ struct exported_name;
+ struct f_function_prefix;
+ struct failure_is_fatal;
+ struct flat_cache_index;
+ struct homepage;
+ struct ignore_pivot_env_functions;
+ struct ignore_pivot_env_variables;
+ struct inherited;
+ struct iuse;
+ struct iuse_flag_parse_options;
+ struct keywords;
+ struct license;
+ struct merger_options;
+ struct metadata_key;
+ struct minimum_flat_cache_size;
+ struct must_not_change_variables;
+ struct name;
+ struct no_slot_or_repo;
+ struct non_empty_variables;
+ struct package_dep_spec_parse_options;
+ struct pdepend;
+ struct pipe_commands;
+ struct provide;
+ struct rdepend_defaults_to_depend;
+ struct require_use_expand_in_iuse;
+ struct restrict_fetch;
+ struct restrict_mirror;
+ struct restrict_primaryuri;
+ struct restrictions;
+ struct rewrite_virtuals;
+ struct run_depend;
+ struct save_base_variables;
+ struct save_unmodifiable_variables;
+ struct save_variables;
+ struct slot;
+ struct source_merged_variables;
+ struct src_uri;
+ struct support_eclasses;
+ struct support_exlibs;
+ struct supported;
+ struct tools_options;
+ struct unpack_fix_permissions;
+ struct unpack_unrecognised_is_fatal;
+ struct uri_labels;
+ struct use;
+ struct use_expand_separator;
+ struct utility_path_suffixes;
+ struct vdb_from_env_unless_empty_variables;
+ struct vdb_from_env_variables;
+ struct want_portage_emulation_vars;
+ }
+ namespace erepository
+ {
class PALUDIS_VISIBLE EAPILabels :
private PrivateImplementationPattern<EAPILabels>
{
@@ -92,7 +183,131 @@ namespace paludis
*/
std::tr1::shared_ptr<const EAPI> unknown_eapi() const;
};
- }
-}
+ struct EAPI
+ {
+ NamedValue<n::exported_name, std::string> exported_name;
+ NamedValue<n::name, std::string> name;
+ NamedValue<n::supported, std::tr1::shared_ptr<const SupportedEAPI> > supported;
+ };
+
+ struct SupportedEAPI
+ {
+ NamedValue<n::breaks_portage, bool> breaks_portage;
+ NamedValue<n::can_be_pbin, bool> can_be_pbin;
+ NamedValue<n::dependency_labels, std::tr1::shared_ptr<const EAPILabels> > dependency_labels;
+ NamedValue<n::dependency_spec_tree_parse_options, erepository::DependencySpecTreeParseOptions> dependency_spec_tree_parse_options;
+ NamedValue<n::ebuild_environment_variables, std::tr1::shared_ptr<const EAPIEbuildEnvironmentVariables> > ebuild_environment_variables;
+ NamedValue<n::ebuild_metadata_variables, std::tr1::shared_ptr<const EAPIEbuildMetadataVariables> > ebuild_metadata_variables;
+ NamedValue<n::ebuild_options, std::tr1::shared_ptr<const EAPIEbuildOptions> > ebuild_options;
+ NamedValue<n::ebuild_phases, std::tr1::shared_ptr<const EAPIEbuildPhases> > ebuild_phases;
+ NamedValue<n::iuse_flag_parse_options, IUseFlagParseOptions> iuse_flag_parse_options;
+ NamedValue<n::merger_options, MergerOptions> merger_options;
+ NamedValue<n::package_dep_spec_parse_options, ELikePackageDepSpecOptions> package_dep_spec_parse_options;
+ NamedValue<n::pipe_commands, std::tr1::shared_ptr<const EAPIPipeCommands> > pipe_commands;
+ NamedValue<n::tools_options, std::tr1::shared_ptr<const EAPIToolsOptions> > tools_options;
+ NamedValue<n::uri_labels, std::tr1::shared_ptr<const EAPILabels> > uri_labels;
+ };
+
+ struct EAPIEbuildEnvironmentVariables
+ {
+ NamedValue<n::description_use, std::string> description_use;
+ NamedValue<n::env_aa, std::string> env_aa;
+ NamedValue<n::env_accept_keywords, std::string> env_accept_keywords;
+ NamedValue<n::env_arch, std::string> env_arch;
+ NamedValue<n::env_distdir, std::string> env_distdir;
+ NamedValue<n::env_kv, std::string> env_kv;
+ NamedValue<n::env_portdir, std::string> env_portdir;
+ NamedValue<n::env_use, std::string> env_use;
+ NamedValue<n::env_use_expand, std::string> env_use_expand;
+ NamedValue<n::env_use_expand_hidden, std::string> env_use_expand_hidden;
+ };
+
+ struct EAPIMetadataVariable
+ {
+ NamedValue<n::description, std::string> description;
+ NamedValue<n::flat_cache_index, int> flat_cache_index;
+ NamedValue<n::name, std::string> name;
+ };
+
+ struct EAPIEbuildMetadataVariables
+ {
+ NamedValue<n::build_depend, EAPIMetadataVariable> build_depend;
+ NamedValue<n::dependencies, EAPIMetadataVariable> dependencies;
+ NamedValue<n::description, EAPIMetadataVariable> description;
+ NamedValue<n::eapi, EAPIMetadataVariable> eapi;
+ NamedValue<n::homepage, EAPIMetadataVariable> homepage;
+ NamedValue<n::inherited, EAPIMetadataVariable> inherited;
+ NamedValue<n::iuse, EAPIMetadataVariable> iuse;
+ NamedValue<n::keywords, EAPIMetadataVariable> keywords;
+ NamedValue<n::license, EAPIMetadataVariable> license;
+ NamedValue<n::minimum_flat_cache_size, int> minimum_flat_cache_size;
+ NamedValue<n::pdepend, EAPIMetadataVariable> pdepend;
+ NamedValue<n::provide, EAPIMetadataVariable> provide;
+ NamedValue<n::restrictions, EAPIMetadataVariable> restrictions;
+ NamedValue<n::run_depend, EAPIMetadataVariable> run_depend;
+ NamedValue<n::slot, EAPIMetadataVariable> slot;
+ NamedValue<n::src_uri, EAPIMetadataVariable> src_uri;
+ NamedValue<n::use, EAPIMetadataVariable> use;
+ };
+
+ struct EAPIEbuildOptions
+ {
+ NamedValue<n::binary_from_env_variables, std::string> binary_from_env_variables;
+ NamedValue<n::bracket_merged_variables, std::string> bracket_merged_variables;
+ NamedValue<n::directory_if_exists_variables, std::string> directory_if_exists_variables;
+ NamedValue<n::directory_variables, std::string> directory_variables;
+ NamedValue<n::ebuild_module_suffixes, std::string> ebuild_module_suffixes;
+ NamedValue<n::ebuild_must_not_set_variables, std::string> ebuild_must_not_set_variables;
+ NamedValue<n::eclass_must_not_set_variables, std::string> eclass_must_not_set_variables;
+ NamedValue<n::f_function_prefix, std::string> f_function_prefix;
+ 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::must_not_change_variables, std::string> must_not_change_variables;
+ NamedValue<n::non_empty_variables, std::string> non_empty_variables;
+ NamedValue<n::rdepend_defaults_to_depend, bool> rdepend_defaults_to_depend;
+ NamedValue<n::require_use_expand_in_iuse, bool> require_use_expand_in_iuse;
+ NamedValue<n::restrict_fetch, std::tr1::shared_ptr<Set<std::string> > > restrict_fetch;
+ NamedValue<n::restrict_mirror, std::tr1::shared_ptr<Set<std::string> > > restrict_mirror;
+ NamedValue<n::restrict_primaryuri, std::tr1::shared_ptr<Set<std::string> > > restrict_primaryuri;
+ NamedValue<n::save_base_variables, std::string> save_base_variables;
+ NamedValue<n::save_unmodifiable_variables, std::string> save_unmodifiable_variables;
+ NamedValue<n::save_variables, std::string> save_variables;
+ NamedValue<n::source_merged_variables, std::string> source_merged_variables;
+ NamedValue<n::support_eclasses, bool> support_eclasses;
+ NamedValue<n::support_exlibs, bool> support_exlibs;
+ NamedValue<n::use_expand_separator, char> use_expand_separator;
+ NamedValue<n::utility_path_suffixes, std::string> utility_path_suffixes;
+ NamedValue<n::vdb_from_env_unless_empty_variables, std::string> vdb_from_env_unless_empty_variables;
+ NamedValue<n::vdb_from_env_variables, std::string> vdb_from_env_variables;
+ NamedValue<n::want_portage_emulation_vars, bool> want_portage_emulation_vars;
+ };
+
+ struct EAPIEbuildPhases
+ {
+ NamedValue<n::ebuild_config, std::string> ebuild_config;
+ NamedValue<n::ebuild_info, std::string> ebuild_info;
+ NamedValue<n::ebuild_install, std::string> ebuild_install;
+ NamedValue<n::ebuild_metadata, std::string> ebuild_metadata;
+ NamedValue<n::ebuild_nofetch, std::string> ebuild_nofetch;
+ NamedValue<n::ebuild_pretend, std::string> ebuild_pretend;
+ NamedValue<n::ebuild_uninstall, std::string> ebuild_uninstall;
+ NamedValue<n::ebuild_variable, std::string> ebuild_variable;
+ };
+
+ struct EAPIToolsOptions
+ {
+ NamedValue<n::dosym_mkdir, bool> dosym_mkdir;
+ NamedValue<n::failure_is_fatal, bool> failure_is_fatal;
+ NamedValue<n::unpack_fix_permissions, bool> unpack_fix_permissions;
+ NamedValue<n::unpack_unrecognised_is_fatal, bool> unpack_unrecognised_is_fatal;
+ };
+
+ struct EAPIPipeCommands
+ {
+ NamedValue<n::no_slot_or_repo, bool> no_slot_or_repo;
+ NamedValue<n::rewrite_virtuals, bool> rewrite_virtuals;
+ };
+ }
#endif
+}
diff --git a/paludis/repositories/e/eapi.sr b/paludis/repositories/e/eapi.sr
deleted file mode 100644
index 24bad0a..0000000
--- a/paludis/repositories/e/eapi.sr
+++ /dev/null
@@ -1,170 +0,0 @@
-#!/usr/bin/env bash
-# vim: set sw=4 sts=4 et ft=sh :
-
-make_class_EAPIEbuildPhases()
-{
- visible
- allow_named_args cc
-
- key ebuild_install std::string
- key ebuild_uninstall std::string
- key ebuild_pretend std::string
- key ebuild_info std::string
- key ebuild_metadata std::string
- key ebuild_nofetch std::string
- key ebuild_variable std::string
- key ebuild_config std::string
-
- doxygen_comment << "END"
- /**
- * Information about a supported EAPI's ebuild phases.
- *
- * \see EAPI
- * \ingroup grpeapi
- * \nosubgrouping
- */
-END
-}
-
-make_class_EAPIEbuildMetadataVariables()
-{
- visible
- allow_named_args cc
-
- key metadata_build_depend std::string
- key metadata_run_depend std::string
- key metadata_slot std::string
- key metadata_src_uri std::string
- key metadata_restrict std::string
- key metadata_homepage std::string
- key metadata_license std::string
- key metadata_description std::string
- key metadata_keywords std::string
- key metadata_inherited std::string
- key metadata_iuse std::string
- key metadata_pdepend std::string
- key metadata_provide std::string
- key metadata_eapi std::string
- key metadata_dependencies std::string
- key metadata_use std::string
-
- key description_build_depend std::string
- key description_run_depend std::string
- key description_slot std::string
- key description_src_uri std::string
- key description_restrict std::string
- key description_homepage std::string
- key description_license std::string
- key description_description std::string
- key description_keywords std::string
- key description_inherited std::string
- key description_iuse std::string
- key description_pdepend std::string
- key description_provide std::string
- key description_eapi std::string
- key description_dependencies std::string
- key description_use std::string
-
- key flat_cache_minimum_size int
- key flat_cache_build_depend int
- key flat_cache_run_depend int
- key flat_cache_slot int
- key flat_cache_src_uri int
- key flat_cache_restrict int
- key flat_cache_homepage int
- key flat_cache_license int
- key flat_cache_description int
- key flat_cache_keywords int
- key flat_cache_inherited int
- key flat_cache_iuse int
- key flat_cache_pdepend int
- key flat_cache_provide int
- key flat_cache_eapi int
- key flat_cache_dependencies int
- key flat_cache_use int
-
- doxygen_comment << "END"
- /**
- * Information about a supported EAPI's ebuild metadata variables.
- *
- * \see EAPIData
- * \see EAPI
- * \ingroup grpeapi
- * \nosubgrouping
- */
-END
-}
-
-make_class_EAPIToolsOptions()
-{
- visible
- allow_named_args cc
-
- key unpack_unrecognised_is_fatal bool
- key unpack_fix_permissions bool
- key dosym_mkdir bool
- key failure_is_fatal bool
-
- doxygen_comment << "END"
- /**
- * Information about a supported EAPI's tool options.
- *
- * \see EAPIData
- * \see EAPI
- * \ingroup grpeapi
- * \nosubgrouping
- */
-END
-}
-
-make_class_EAPIEbuildOptions()
-{
- visible
- allow_named_args cc
-
- key want_portage_emulation_vars bool
- key require_use_expand_in_iuse bool
- key rdepend_defaults_to_depend bool
- key use_expand_separator char
-
- key support_eclasses bool
- key support_exlibs bool
-
- key utility_path_suffixes std::string
- key ebuild_module_suffixes std::string
-
- key non_empty_variables std::string
- key directory_variables std::string
- key directory_if_exists_variables std::string
- key ebuild_must_not_set_variables std::string
- key eclass_must_not_set_variables std::string
- key source_merged_variables std::string
- key bracket_merged_variables std::string
- key must_not_change_variables std::string
- key save_variables std::string
- key save_base_variables std::string
- key save_unmodifiable_variables std::string
- key vdb_from_env_variables std::string
- key vdb_from_env_unless_empty_variables std::string
- key binary_from_env_variables std::string
- key f_function_prefix std::string
-
- key ignore_pivot_env_variables std::string
- key ignore_pivot_env_functions std::string
-
- key restrict_fetch "std::tr1::shared_ptr<Set<std::string> >"
- key restrict_mirror "std::tr1::shared_ptr<Set<std::string> >"
- key restrict_primaryuri "std::tr1::shared_ptr<Set<std::string> >"
-
- doxygen_comment << "END"
- /**
- * Information about a supported EAPI's ebuild options.
- *
- * \see EAPIData
- * \see EAPI
- * \ingroup grpeapi
- * \nosubgrouping
- */
-END
-}
-
diff --git a/paludis/repositories/e/eapis/0.conf b/paludis/repositories/e/eapis/0.conf
index 710f114..5911155 100644
--- a/paludis/repositories/e/eapis/0.conf
+++ b/paludis/repositories/e/eapis/0.conf
@@ -18,6 +18,8 @@ support_exlibs = false
utility_path_suffixes =
ebuild_module_suffixes = 0
f_function_prefix = ebuild_f
+ignore_pivot_env_functions =
+ignore_pivot_env_variables =
vdb_from_env_variables = \
CATEGORY CHOST COUNTER DEPEND DESCRIPTION EAPI FEATURES \
@@ -137,6 +139,8 @@ description_restrict = Restrictions
description_run_depend = Run dependencies
description_slot = Slot
description_src_uri = Source URI
+description_use =
+description_dependencies =
metadata_build_depend = DEPEND
metadata_description = DESCRIPTION
@@ -152,6 +156,8 @@ metadata_restrict = RESTRICT
metadata_run_depend = RDEPEND
metadata_slot = SLOT
metadata_src_uri = SRC_URI
+metadata_use =
+metadata_dependencies =
flat_cache_minimum_size = 15
flat_cache_build_depend = 0
@@ -181,6 +187,8 @@ env_accept_keywords = ACCEPT_KEYWORDS
env_portdir = PORTDIR
env_distdir = DISTDIR
+dependency_labels =
+
uri_labels = \
default = URIMirrorsThenListedLabel ; \
default-restrict-fetch = URIManualOnlyLabel ; \
diff --git a/paludis/repositories/e/eapis/exheres-0.conf b/paludis/repositories/e/eapis/exheres-0.conf
index 45c4ad8..3b72c37 100644
--- a/paludis/repositories/e/eapis/exheres-0.conf
+++ b/paludis/repositories/e/eapis/exheres-0.conf
@@ -21,6 +21,8 @@ utility_path_suffixes = exheres-0
ebuild_module_suffixes = exheres-0
use_expand_separator = :
f_function_prefix = exheres_internal
+ignore_pivot_env_functions =
+ignore_pivot_env_variables =
vdb_from_env_variables = \
CATEGORY CHOST DEPENDENCIES DESCRIPTION EAPI \
@@ -56,6 +58,8 @@ ebuild_must_not_set_variables = \
eclass_must_not_set_variables = PLATFORMS
+must_not_change_variables =
+
source_merged_variables = \
MYOPTIONS
@@ -141,6 +145,7 @@ metadata_pdepend =
metadata_provide =
metadata_eapi = EAPI
metadata_dependencies = DEPENDENCIES
+metadata_use =
description_build_depend =
description_description = Description
diff --git a/paludis/repositories/e/eapis/paludis-1.conf b/paludis/repositories/e/eapis/paludis-1.conf
index 83199c6..fae2865 100644
--- a/paludis/repositories/e/eapis/paludis-1.conf
+++ b/paludis/repositories/e/eapis/paludis-1.conf
@@ -21,6 +21,8 @@ utility_path_suffixes =
ebuild_module_suffixes = paludis-1 1 0
use_expand_separator = _
f_function_prefix = ebuild_f
+ignore_pivot_env_variables =
+ignore_pivot_env_functions =
vdb_from_env_variables = \
CATEGORY CHOST COUNTER DEPEND DESCRIPTION EAPI FEATURES \
@@ -142,6 +144,8 @@ metadata_iuse = IUSE
metadata_pdepend = PDEPEND
metadata_provide = PROVIDE
metadata_eapi = EAPI
+metadata_dependencies =
+metadata_use =
description_build_depend = Build dependencies
description_description = Description
@@ -158,6 +162,7 @@ description_run_depend = Run dependencies
description_slot = Slot
description_src_uri = Source URI
description_use = Selected USE flags
+description_dependencies =
flat_cache_minimum_size = 15
flat_cache_build_depend = 0
diff --git a/paludis/repositories/e/ebuild.cc b/paludis/repositories/e/ebuild.cc
index 778a70b..a3dee4a 100644
--- a/paludis/repositories/e/ebuild.cc
+++ b/paludis/repositories/e/ebuild.cc
@@ -122,7 +122,7 @@ EbuildCommand::operator() ()
.with_setenv("CATEGORY", stringify(params[k::package_id()]->name().category))
.with_setenv("REPOSITORY", stringify(params[k::package_id()]->repository()->name()))
.with_setenv("FILESDIR", stringify(params[k::files_dir()]))
- .with_setenv("EAPI", stringify((*params[k::package_id()]->eapi())[k::exported_name()]))
+ .with_setenv("EAPI", stringify(params[k::package_id()]->eapi()->exported_name()))
.with_setenv("PKGMANAGER", PALUDIS_PACKAGE "-" + stringify(PALUDIS_VERSION_MAJOR) + "." +
stringify(PALUDIS_VERSION_MINOR) + "." +
stringify(PALUDIS_VERSION_MICRO) + stringify(PALUDIS_VERSION_SUFFIX) +
@@ -140,78 +140,78 @@ EbuildCommand::operator() ()
.with_setenv("PALUDIS_EBUILD_LOG_LEVEL", stringify(Log::get_instance()->log_level()))
.with_setenv("PALUDIS_EBUILD_DIR", getenv_with_default("PALUDIS_EBUILD_DIR", LIBEXECDIR "/paludis"))
.with_setenv("PALUDIS_UTILITY_PATH_SUFFIXES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].utility_path_suffixes)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->utility_path_suffixes())
.with_setenv("PALUDIS_EBUILD_MODULE_SUFFIXES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].ebuild_module_suffixes)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->ebuild_module_suffixes())
.with_setenv("PALUDIS_NON_EMPTY_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].non_empty_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->non_empty_variables())
.with_setenv("PALUDIS_DIRECTORY_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].directory_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->directory_variables())
.with_setenv("PALUDIS_EBUILD_MUST_NOT_SET_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].ebuild_must_not_set_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->ebuild_must_not_set_variables())
.with_setenv("PALUDIS_ECLASS_MUST_NOT_SET_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].eclass_must_not_set_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->eclass_must_not_set_variables())
.with_setenv("PALUDIS_SAVE_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].save_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->save_variables())
.with_setenv("PALUDIS_SAVE_BASE_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].save_base_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->save_base_variables())
.with_setenv("PALUDIS_SAVE_UNMODIFIABLE_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].save_unmodifiable_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->save_unmodifiable_variables())
.with_setenv("PALUDIS_DIRECTORY_IF_EXISTS_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].directory_if_exists_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->directory_if_exists_variables())
.with_setenv("PALUDIS_SOURCE_MERGED_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].source_merged_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->source_merged_variables())
.with_setenv("PALUDIS_BRACKET_MERGED_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].bracket_merged_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->bracket_merged_variables())
.with_setenv("PALUDIS_MUST_NOT_CHANGE_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].must_not_change_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->must_not_change_variables())
.with_setenv("PALUDIS_RDEPEND_DEFAULTS_TO_DEPEND",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].rdepend_defaults_to_depend ? "yes" : "")
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->rdepend_defaults_to_depend() ? "yes" : "")
.with_setenv("PALUDIS_F_FUNCTION_PREFIX",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].f_function_prefix)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->f_function_prefix())
.with_setenv("PALUDIS_IGNORE_PIVOT_ENV_FUNCTIONS",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].ignore_pivot_env_functions)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->ignore_pivot_env_functions())
.with_setenv("PALUDIS_IGNORE_PIVOT_ENV_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].ignore_pivot_env_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->ignore_pivot_env_variables())
.with_setenv("PALUDIS_BINARY_DISTDIR_VARIABLE",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_distdir()])
+ params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_distdir())
.with_setenv("PALUDIS_UNPACK_UNRECOGNISED_IS_FATAL",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::tools_options()].unpack_unrecognised_is_fatal ? "yes" : "")
+ params[k::package_id()]->eapi()->supported()->tools_options()->unpack_unrecognised_is_fatal() ? "yes" : "")
.with_setenv("PALUDIS_UNPACK_FIX_PERMISSIONS",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::tools_options()].unpack_fix_permissions ? "yes" : "")
+ params[k::package_id()]->eapi()->supported()->tools_options()->unpack_fix_permissions() ? "yes" : "")
.with_setenv("PALUDIS_DOSYM_NO_MKDIR",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::tools_options()].dosym_mkdir ? "" : "yes")
+ params[k::package_id()]->eapi()->supported()->tools_options()->dosym_mkdir() ? "" : "yes")
.with_setenv("PALUDIS_FAILURE_IS_FATAL",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::tools_options()].failure_is_fatal ? "yes" : "")
+ params[k::package_id()]->eapi()->supported()->tools_options()->failure_is_fatal() ? "yes" : "")
.with_setenv("PALUDIS_UNPACK_FROM_VAR",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_distdir()])
+ params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_distdir())
.with_setenv("PALUDIS_PIPE_COMMANDS_SUPPORTED", "yes")
)
.with_setenv("SLOT", "")
.with_setenv("PALUDIS_PROFILE_DIR", "")
.with_setenv("PALUDIS_PROFILE_DIRS", "");
- if (! (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_kv()].empty())
- cmd.with_setenv((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_kv()], kernel_version());
- if (! (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_portdir()].empty())
- cmd.with_setenv((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_portdir()],
+ if (! params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_kv().empty())
+ cmd.with_setenv(params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_kv(), kernel_version());
+ if (! params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_portdir().empty())
+ cmd.with_setenv(params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_portdir(),
stringify(params[k::portdir()]));
- if (! (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_distdir()].empty())
- cmd.with_setenv((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_distdir()],
+ if (! params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_distdir().empty())
+ cmd.with_setenv(params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_distdir(),
stringify(params[k::distdir()]));
- if ((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].support_eclasses)
+ if (params[k::package_id()]->eapi()->supported()->ebuild_options()->support_eclasses())
cmd
.with_setenv("ECLASSDIR", stringify(*params[k::eclassdirs()]->begin()))
.with_setenv("ECLASSDIRS", join(params[k::eclassdirs()]->begin(),
params[k::eclassdirs()]->end(), " "));
- if ((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].support_exlibs)
+ if (params[k::package_id()]->eapi()->supported()->ebuild_options()->support_exlibs())
cmd
.with_setenv("EXLIBSDIRS", join(params[k::exlibsdirs()]->begin(),
params[k::exlibsdirs()]->end(), " "));
- if ((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].want_portage_emulation_vars)
+ if (params[k::package_id()]->eapi()->supported()->ebuild_options()->want_portage_emulation_vars())
cmd = add_portage_vars(cmd);
if (do_run_command(cmd))
@@ -336,7 +336,7 @@ EbuildMetadataCommand::do_run_command(const Command & cmd)
Log::get_instance()->message("e.ebuild.cache_failure", ll_warning, lc_context) << "Could not generate cache for '"
<< *params[k::package_id()] << "'";
keys.reset(new Map<std::string, std::string>);
- keys->insert("EAPI", (*EAPIData::get_instance()->unknown_eapi())[k::name()]);
+ keys->insert("EAPI", EAPIData::get_instance()->unknown_eapi()->name());
return false;
}
@@ -361,66 +361,66 @@ EbuildMetadataCommand::load(const std::tr1::shared_ptr<const EbuildID> & id)
if (! keys)
throw InternalError(PALUDIS_HERE, "keys is 0");
- if (! (*id->eapi())[k::supported()])
+ if (! id->eapi()->supported())
{
Log::get_instance()->message("e.ebuild.preload_eapi.unsupported", ll_debug, lc_context)
- << "ID pre-load EAPI '" << (*id->eapi())[k::name()] << "' not supported";
+ << "ID pre-load EAPI '" << id->eapi()->name() << "' not supported";
id->set_slot(SlotName("UNKNOWN"));
return;
}
else
Log::get_instance()->message("e.ebuild.preload_eapi.supported", ll_debug, lc_context)
- << "ID pre-load EAPI '" << (*id->eapi())[k::name()] << "' is supported";
+ << "ID pre-load EAPI '" << id->eapi()->name() << "' is supported";
std::string s;
- if (! ((s = get(keys, (*(*id->eapi())[k::supported()])[k::ebuild_metadata_variables()].metadata_eapi))).empty())
+ if (! ((s = get(keys, id->eapi()->supported()->ebuild_metadata_variables()->eapi().name()))).empty())
id->set_eapi(s);
else
id->set_eapi(id->e_repository()->params().eapi_when_unspecified);
- if (! (*id->eapi())[k::supported()])
+ if (! id->eapi()->supported())
{
Log::get_instance()->message("e.ebuild.postload_eapi.unsupported", ll_debug, lc_context)
- << "ID post-load EAPI '" << (*id->eapi())[k::name()] << "' not supported";
+ << "ID post-load EAPI '" << id->eapi()->name() << "' not supported";
id->set_slot(SlotName("UNKNOWN"));
return;
}
else
Log::get_instance()->message("e.ebuild.postload_eapi.supported", ll_debug, lc_context)
- << "ID post-load EAPI '" << (*id->eapi())[k::name()] << "' is supported";
+ << "ID post-load EAPI '" << id->eapi()->name() << "' is supported";
- const EAPIEbuildMetadataVariables & m((*(*id->eapi())[k::supported()])[k::ebuild_metadata_variables()]);
+ const EAPIEbuildMetadataVariables & m(*id->eapi()->supported()->ebuild_metadata_variables());
- if (! m.metadata_description.empty())
- id->load_short_description(m.metadata_description, m.description_description, get(keys, m.metadata_description));
+ if (! m.description().name().empty())
+ id->load_short_description(m.description().name(), m.description().description(), get(keys, m.description().name()));
- if (! m.metadata_dependencies.empty())
+ if (! m.dependencies().name().empty())
{
DependenciesRewriter rewriter;
- parse_depend(get(keys, m.metadata_dependencies), params[k::environment()], id, *id->eapi())->accept(rewriter);
- id->load_build_depend(m.metadata_dependencies + ".DEPEND", m.description_dependencies + " (build)", rewriter.depend());
- id->load_run_depend(m.metadata_dependencies + ".RDEPEND", m.description_dependencies + " (run)", rewriter.rdepend());
- id->load_post_depend(m.metadata_dependencies + ".PDEPEND", m.description_dependencies + " (post)", rewriter.pdepend());
+ parse_depend(get(keys, m.dependencies().name()), params[k::environment()], id, *id->eapi())->accept(rewriter);
+ id->load_build_depend(m.dependencies().name() + ".DEPEND", m.dependencies().description() + " (build)", rewriter.depend());
+ id->load_run_depend(m.dependencies().name() + ".RDEPEND", m.dependencies().description() + " (run)", rewriter.rdepend());
+ id->load_post_depend(m.dependencies().name() + ".PDEPEND", m.dependencies().description() + " (post)", rewriter.pdepend());
}
else
{
- if (! m.metadata_build_depend.empty())
- id->load_build_depend(m.metadata_build_depend, m.description_build_depend, get(keys, m.metadata_build_depend));
+ if (! m.build_depend().name().empty())
+ id->load_build_depend(m.build_depend().name(), m.build_depend().description(), get(keys, m.build_depend().name()));
- if (! m.metadata_run_depend.empty())
- id->load_run_depend(m.metadata_run_depend, m.description_run_depend, get(keys, m.metadata_run_depend));
+ if (! m.run_depend().name().empty())
+ id->load_run_depend(m.run_depend().name(), m.run_depend().description(), get(keys, m.run_depend().name()));
- if (! m.metadata_pdepend.empty())
- id->load_post_depend(m.metadata_pdepend, m.description_pdepend, get(keys, m.metadata_pdepend));
+ if (! m.pdepend().name().empty())
+ id->load_post_depend(m.pdepend().name(), m.pdepend().description(), get(keys, m.pdepend().name()));
}
- if (! m.metadata_slot.empty())
+ if (! m.slot().name().empty())
{
try
{
Context c("When setting SLOT:");
- std::string slot(get(keys, m.metadata_slot));
+ std::string slot(get(keys, m.slot().name()));
if (slot.empty())
{
Log::get_instance()->message("e.ebuild.no_slot", ll_qa, lc_context)
@@ -442,32 +442,32 @@ EbuildMetadataCommand::load(const std::tr1::shared_ptr<const EbuildID> & id)
}
}
- if (! m.metadata_src_uri.empty())
- id->load_src_uri(m.metadata_src_uri, m.description_src_uri, get(keys, m.metadata_src_uri));
+ if (! m.src_uri().name().empty())
+ id->load_src_uri(m.src_uri().name(), m.src_uri().description(), get(keys, m.src_uri().name()));
- if (! m.metadata_homepage.empty())
- id->load_homepage(m.metadata_homepage, m.description_homepage, get(keys, m.metadata_homepage));
+ if (! m.homepage().name().empty())
+ id->load_homepage(m.homepage().name(), m.homepage().description(), get(keys, m.homepage().name()));
- if (! m.metadata_license.empty())
- id->load_license(m.metadata_license, m.description_license, get(keys, m.metadata_license));
+ if (! m.license().name().empty())
+ id->load_license(m.license().name(), m.license().description(), get(keys, m.license().name()));
- if (! m.metadata_provide.empty())
- id->load_provide(m.metadata_provide, m.description_provide, get(keys, m.metadata_provide));
+ if (! m.provide().name().empty())
+ id->load_provide(m.provide().name(), m.provide().description(), get(keys, m.provide().name()));
- if (! m.metadata_iuse.empty())
- id->load_iuse(m.metadata_iuse, m.description_iuse, get(keys, m.metadata_iuse));
+ if (! m.iuse().name().empty())
+ id->load_iuse(m.iuse().name(), m.iuse().description(), get(keys, m.iuse().name()));
- if (! m.metadata_inherited.empty())
- id->load_inherited(m.metadata_inherited, m.description_inherited, get(keys, m.metadata_inherited));
+ if (! m.inherited().name().empty())
+ id->load_inherited(m.inherited().name(), m.inherited().description(), get(keys, m.inherited().name()));
- if (! m.metadata_keywords.empty())
- id->load_keywords(m.metadata_keywords, m.description_keywords, get(keys, m.metadata_keywords));
+ if (! m.keywords().name().empty())
+ id->load_keywords(m.keywords().name(), m.keywords().description(), get(keys, m.keywords().name()));
- if (! m.metadata_restrict.empty())
- id->load_restrict(m.metadata_restrict, m.description_restrict, get(keys, m.metadata_restrict));
+ if (! m.restrictions().name().empty())
+ id->load_restrict(m.restrictions().name(), m.restrictions().description(), get(keys, m.restrictions().name()));
- if (! m.metadata_use.empty())
- id->load_use(m.metadata_use, m.description_use, get(keys, m.metadata_use));
+ if (! m.use().name().empty())
+ id->load_use(m.use().name(), m.use().description(), get(keys, m.use().name()));
}
EbuildVariableCommand::EbuildVariableCommand(const EbuildCommandParams & p,
@@ -532,14 +532,14 @@ EbuildNoFetchCommand::extend_command(const Command & cmd)
.with_setenv("PALUDIS_PROFILE_DIRS", join(fetch_params[k::profiles()]->begin(),
fetch_params[k::profiles()]->end(), " ")));
- if (! (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_aa()].empty())
- result.with_setenv((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_aa()],
+ if (! params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_aa().empty())
+ result.with_setenv(params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_aa(),
fetch_params[k::aa()]);
- if (! (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use()].empty())
- result.with_setenv((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use()],
+ if (! params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use().empty())
+ result.with_setenv(params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use(),
fetch_params[k::use()]);
- if (! (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand()].empty())
- result.with_setenv((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand()],
+ if (! params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use_expand().empty())
+ result.with_setenv(params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use_expand(),
fetch_params[k::use_expand()]);
for (Map<std::string, std::string>::ConstIterator
@@ -583,14 +583,14 @@ EbuildInstallCommand::extend_command(const Command & cmd)
install_params[k::profiles()]->end(), " "))
.with_setenv("SLOT", stringify(install_params[k::slot()])));
- if (! (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_aa()].empty())
- result.with_setenv((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_aa()],
+ if (! params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_aa().empty())
+ result.with_setenv(params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_aa(),
install_params[k::aa()]);
- if (! (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use()].empty())
- result.with_setenv((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use()],
+ if (! params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use().empty())
+ result.with_setenv(params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use(),
install_params[k::use()]);
- if (! (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand()].empty())
- result.with_setenv((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand()],
+ if (! params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use_expand().empty())
+ result.with_setenv(params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use_expand(),
install_params[k::use_expand()]);
for (Map<std::string, std::string>::ConstIterator
@@ -714,7 +714,7 @@ WriteVDBEntryCommand::operator() ()
stringify(PALUDIS_VERSION_MICRO) +
(std::string(PALUDIS_GIT_HEAD).empty() ?
std::string("") : "-git-" + std::string(PALUDIS_GIT_HEAD)))
- .with_setenv("EAPI", stringify((*params[k::package_id()]->eapi())[k::exported_name()]))
+ .with_setenv("EAPI", stringify(params[k::package_id()]->eapi()->exported_name()))
.with_setenv("PALUDIS_CONFIG_DIR", SYSCONFDIR "/paludis/")
.with_setenv("PALUDIS_BASHRC_FILES", join(bashrc_files->begin(), bashrc_files->end(), " "))
.with_setenv("PALUDIS_HOOK_DIRS", join(hook_dirs->begin(), hook_dirs->end(), " "))
@@ -724,15 +724,15 @@ WriteVDBEntryCommand::operator() ()
.with_setenv("PALUDIS_EBUILD_LOG_LEVEL", stringify(Log::get_instance()->log_level()))
.with_setenv("PALUDIS_EBUILD_DIR", getenv_with_default("PALUDIS_EBUILD_DIR", LIBEXECDIR "/paludis"))
.with_setenv("PALUDIS_VDB_FROM_ENV_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].vdb_from_env_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->vdb_from_env_variables())
.with_setenv("PALUDIS_VDB_FROM_ENV_UNLESS_EMPTY_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].vdb_from_env_unless_empty_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->vdb_from_env_unless_empty_variables())
.with_setenv("PALUDIS_F_FUNCTION_PREFIX",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].f_function_prefix)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->f_function_prefix())
.with_setenv("PALUDIS_IGNORE_PIVOT_ENV_FUNCTIONS",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].ignore_pivot_env_functions)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->ignore_pivot_env_functions())
.with_setenv("PALUDIS_IGNORE_PIVOT_ENV_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].ignore_pivot_env_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->ignore_pivot_env_variables())
.with_pipe_command_handler(std::tr1::bind(&pipe_command_handler, params[k::environment()], params[k::package_id()], _1))
);
@@ -785,11 +785,11 @@ EbuildPretendCommand::extend_command(const Command & cmd)
.with_setenv("PALUDIS_PROFILE_DIRS", join(pretend_params[k::profiles()]->begin(),
pretend_params[k::profiles()]->end(), " ")));
- if (! (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use()].empty())
- result.with_setenv((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use()],
+ if (! params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use().empty())
+ result.with_setenv(params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use(),
pretend_params[k::use()]);
- if (! (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand()].empty())
- result.with_setenv((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand()],
+ if (! params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use_expand().empty())
+ result.with_setenv(params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use_expand(),
pretend_params[k::use_expand()]);
for (Map<std::string, std::string>::ConstIterator
@@ -847,11 +847,11 @@ EbuildInfoCommand::extend_command(const Command & cmd)
.with_setenv("PALUDIS_PROFILE_DIRS", join(info_params[k::profiles()]->begin(),
info_params[k::profiles()]->end(), " ")));
- if (! (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use()].empty())
- result.with_setenv((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use()],
+ if (! params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use().empty())
+ result.with_setenv(params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use(),
info_params[k::use()]);
- if (! (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand()].empty())
- result.with_setenv((*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand()],
+ if (! params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use_expand().empty())
+ result.with_setenv(params[k::package_id()]->eapi()->supported()->ebuild_environment_variables()->env_use_expand(),
info_params[k::use_expand()]);
for (Map<std::string, std::string>::ConstIterator
@@ -886,9 +886,9 @@ WriteBinaryEbuildCommand::operator() ()
{
using namespace std::tr1::placeholders;
- if (! (*EAPIData::get_instance()->eapi_from_string("pbin-1+" + (*params[k::package_id()]->eapi())[k::exported_name()]))[k::supported()])
+ if (! EAPIData::get_instance()->eapi_from_string("pbin-1+" + params[k::package_id()]->eapi()->exported_name())->supported())
throw InstallActionError("Don't know how to write binary ebuilds using EAPI 'pbin-1+" +
- (*params[k::package_id()]->eapi())[k::exported_name()]);
+ params[k::package_id()]->eapi()->exported_name());
std::string bindistfile(stringify(params[k::destination_repository()]->name()) + "--" + stringify(params[k::package_id()]->name().category)
+ "--" + stringify(params[k::package_id()]->name().package) + "-" + stringify(params[k::package_id()]->version())
@@ -912,7 +912,7 @@ WriteBinaryEbuildCommand::operator() ()
stringify(PALUDIS_VERSION_MICRO) +
(std::string(PALUDIS_GIT_HEAD).empty() ?
std::string("") : "-git-" + std::string(PALUDIS_GIT_HEAD)))
- .with_setenv("EAPI", stringify((*params[k::package_id()]->eapi())[k::exported_name()]))
+ .with_setenv("EAPI", stringify(params[k::package_id()]->eapi()->exported_name()))
.with_setenv("PALUDIS_CONFIG_DIR", SYSCONFDIR "/paludis/")
.with_setenv("PALUDIS_TMPDIR", stringify(params[k::builddir()]))
.with_setenv("PALUDIS_BASHRC_FILES", join(bashrc_files->begin(), bashrc_files->end(), " "))
@@ -923,19 +923,19 @@ WriteBinaryEbuildCommand::operator() ()
.with_setenv("PALUDIS_EBUILD_LOG_LEVEL", stringify(Log::get_instance()->log_level()))
.with_setenv("PALUDIS_EBUILD_DIR", getenv_with_default("PALUDIS_EBUILD_DIR", LIBEXECDIR "/paludis"))
.with_setenv("PALUDIS_BINARY_FROM_ENV_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].binary_from_env_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->binary_from_env_variables())
.with_setenv("PALUDIS_F_FUNCTION_PREFIX",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].f_function_prefix)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->f_function_prefix())
.with_setenv("PALUDIS_IGNORE_PIVOT_ENV_FUNCTIONS",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].ignore_pivot_env_functions)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->ignore_pivot_env_functions())
.with_setenv("PALUDIS_IGNORE_PIVOT_ENV_VARIABLES",
- (*(*params[k::package_id()]->eapi())[k::supported()])[k::ebuild_options()].ignore_pivot_env_variables)
+ params[k::package_id()]->eapi()->supported()->ebuild_options()->ignore_pivot_env_variables())
.with_setenv("PALUDIS_BINARY_URI_PREFIX", params[k::destination_repository()]->params().binary_uri_prefix)
.with_setenv("PALUDIS_BINARY_KEYWORDS", params[k::destination_repository()]->params().binary_keywords)
- .with_setenv("PALUDIS_BINARY_KEYWORDS_VARIABLE", (*(*EAPIData::get_instance()->eapi_from_string("pbin-1+"
- + (*params[k::package_id()]->eapi())[k::exported_name()]))[k::supported()])[k::ebuild_metadata_variables()].metadata_keywords)
- .with_setenv("PALUDIS_BINARY_DISTDIR_VARIABLE", (*(*EAPIData::get_instance()->eapi_from_string("pbin-1+"
- + (*params[k::package_id()]->eapi())[k::exported_name()]))[k::supported()])[k::ebuild_environment_variables()][k::env_distdir()])
+ .with_setenv("PALUDIS_BINARY_KEYWORDS_VARIABLE", EAPIData::get_instance()->eapi_from_string("pbin-1+"
+ + params[k::package_id()]->eapi()->exported_name())->supported()->ebuild_metadata_variables()->keywords().name())
+ .with_setenv("PALUDIS_BINARY_DISTDIR_VARIABLE", EAPIData::get_instance()->eapi_from_string("pbin-1+"
+ + params[k::package_id()]->eapi()->exported_name())->supported()->ebuild_environment_variables()->env_distdir())
.with_pipe_command_handler(std::tr1::bind(&pipe_command_handler, params[k::environment()], params[k::package_id()], _1))
);
diff --git a/paludis/repositories/e/ebuild_entries.cc b/paludis/repositories/e/ebuild_entries.cc
index d3df168..6f60fe9 100644
--- a/paludis/repositories/e/ebuild_entries.cc
+++ b/paludis/repositories/e/ebuild_entries.cc
@@ -228,7 +228,7 @@ namespace
const ERepositoryID & id,
std::tr1::shared_ptr<const ERepositoryProfile> profile)
{
- if (! (*id.eapi())[k::supported()])
+ if (! id.eapi()->supported())
{
Log::get_instance()->message("e.ebuild.unknown_eapi", ll_warning, lc_context)
<< "Can't make the USE string for '" << id << "' because its EAPI is unsupported";
@@ -243,8 +243,8 @@ namespace
if (env->query_use(i->flag, id))
use += stringify(i->flag) + " ";
- if (! (*(*id.eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_arch()].empty())
- use += profile->environment_variable((*(*id.eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_arch()]) + " ";
+ if (! id.eapi()->supported()->ebuild_environment_variables()->env_arch().empty())
+ use += profile->environment_variable(id.eapi()->supported()->ebuild_environment_variables()->env_arch()) + " ";
return use;
}
@@ -259,7 +259,7 @@ namespace
std::tr1::shared_ptr<Map<std::string, std::string> > expand_vars(
new Map<std::string, std::string>);
- if (! (*e.eapi())[k::supported()])
+ if (! e.eapi()->supported())
{
Log::get_instance()->message("e.ebuild.unknown_eapi", ll_warning, lc_context)
<< "Can't make the USE_EXPAND strings for '" << e << "' because its EAPI is unsupported";
@@ -289,7 +289,7 @@ namespace
for (std::set<UseFlagName>::const_iterator u(possible_values.begin()), u_end(possible_values.end()) ;
u != u_end ; ++u)
{
- if ((*(*e.eapi())[k::supported()])[k::ebuild_options()].require_use_expand_in_iuse)
+ if (e.eapi()->supported()->ebuild_options()->require_use_expand_in_iuse())
if (e.iuse_key() && e.iuse_key()->value()->end() == e.iuse_key()->value()->find(
IUseFlag(*u, use_unspecified, std::string::npos)))
continue;
@@ -297,7 +297,7 @@ namespace
if (! env->query_use(UseFlagName(lower_x + expand_sep + stringify(*u)), e))
continue;
- if (! (*(*e.eapi())[k::supported()])[k::ebuild_options()].require_use_expand_in_iuse)
+ if (! e.eapi()->supported()->ebuild_options()->require_use_expand_in_iuse())
use.append(lower_x + expand_sep + stringify(*u) + " ");
std::string value;
@@ -363,9 +363,9 @@ EbuildEntries::fetch(const std::tr1::shared_ptr<const ERepositoryID> & id,
for (DepSpecFlattener<RestrictSpecTree, PlainTextDepSpec>::ConstIterator i(restricts.begin()), i_end(restricts.end()) ;
i != i_end ; ++i)
{
- if ((*(*id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->end() !=
- std::find((*(*id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->begin(),
- (*(*id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->end(), (*i)->text()))
+ if (id->eapi()->supported()->ebuild_options()->restrict_fetch()->end() !=
+ std::find(id->eapi()->supported()->ebuild_options()->restrict_fetch()->begin(),
+ id->eapi()->supported()->ebuild_options()->restrict_fetch()->end(), (*i)->text()))
fetch_restrict = true;
if ("userpriv" == (*i)->text() || "nouserpriv" == (*i)->text())
userpriv_restrict = true;
@@ -397,7 +397,7 @@ EbuildEntries::fetch(const std::tr1::shared_ptr<const ERepositoryID> & id,
}
/* make AA */
- if (! (*(*id->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_aa()].empty())
+ if (! id->eapi()->supported()->ebuild_environment_variables()->env_aa().empty())
{
AAVisitor g;
if (id->fetches_key())
@@ -444,13 +444,13 @@ EbuildEntries::fetch(const std::tr1::shared_ptr<const ERepositoryID> & id,
bool userpriv_ok((! userpriv_restrict) && (_imp->environment->reduced_gid() != getgid()) &&
check_userpriv(FSEntry(_imp->params.builddir), _imp->environment));
std::string use(make_use(_imp->params.environment, *id, p));
- std::string expand_sep(stringify((*(*id->eapi())[k::supported()])[k::ebuild_options()].use_expand_separator));
+ std::string expand_sep(stringify(id->eapi()->supported()->ebuild_options()->use_expand_separator()));
std::tr1::shared_ptr<Map<std::string, std::string> > expand_vars(make_expand(
_imp->params.environment, *id, p, use, expand_sep));
std::tr1::shared_ptr<const FSEntrySequence> exlibsdirs(_imp->e_repository->layout()->exlibsdirs(id->name()));
- EAPIPhases phases((*(*id->eapi())[k::supported()])[k::ebuild_phases()].ebuild_nofetch);
+ EAPIPhases phases(id->eapi()->supported()->ebuild_phases()->ebuild_nofetch());
for (EAPIPhases::ConstIterator phase(phases.begin_phases()), phase_end(phases.end_phases()) ;
phase != phase_end ; ++phase)
{
@@ -560,7 +560,7 @@ EbuildEntries::install(const std::tr1::shared_ptr<const ERepositoryID> & id,
}
/* make AA */
- if (! (*(*id->eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_aa()].empty())
+ if (! id->eapi()->supported()->ebuild_environment_variables()->env_aa().empty())
{
AAVisitor g;
if (id->fetches_key())
@@ -593,7 +593,7 @@ EbuildEntries::install(const std::tr1::shared_ptr<const ERepositoryID> & id,
/* add expand to use (iuse isn't reliable for use_expand things), and make the expand
* environment variables */
- std::string expand_sep(stringify((*(*id->eapi())[k::supported()])[k::ebuild_options()].use_expand_separator));
+ std::string expand_sep(stringify(id->eapi()->supported()->ebuild_options()->use_expand_separator()));
std::tr1::shared_ptr<Map<std::string, std::string> > expand_vars(make_expand(
_imp->params.environment, *id, p, use, expand_sep));
@@ -603,7 +603,7 @@ EbuildEntries::install(const std::tr1::shared_ptr<const ERepositoryID> & id,
check_userpriv(FSEntry(_imp->params.distdir), _imp->environment) &&
check_userpriv(FSEntry(_imp->params.builddir), _imp->environment));
- EAPIPhases phases((*(*id->eapi())[k::supported()])[k::ebuild_phases()].ebuild_install);
+ EAPIPhases phases(id->eapi()->supported()->ebuild_phases()->ebuild_install());
for (EAPIPhases::ConstIterator phase(phases.begin_phases()), phase_end(phases.end_phases()) ;
phase != phase_end ; ++phase)
{
@@ -621,7 +621,7 @@ EbuildEntries::install(const std::tr1::shared_ptr<const ERepositoryID> & id,
+ stringify(id->version())) / "image")
(k::environment_file(), _imp->params.builddir / (stringify(id->name().category) + "-" + stringify(id->name().package) + "-"
+ stringify(id->version())) / "temp" / "loadsaveenv")
- (k::options(), (*(*id->eapi())[k::supported()])[k::merger_options()])
+ (k::options(), id->eapi()->supported()->merger_options())
);
}
else if (phase->option("strip"))
@@ -748,13 +748,13 @@ EbuildEntries::info(const std::tr1::shared_ptr<const ERepositoryID> & id,
/* add expand to use (iuse isn't reliable for use_expand things), and make the expand
* environment variables */
- std::string expand_sep(stringify((*(*id->eapi())[k::supported()])[k::ebuild_options()].use_expand_separator));
+ std::string expand_sep(stringify(id->eapi()->supported()->ebuild_options()->use_expand_separator()));
std::tr1::shared_ptr<Map<std::string, std::string> > expand_vars(make_expand(
_imp->params.environment, *id, p, use, expand_sep));
std::tr1::shared_ptr<const FSEntrySequence> exlibsdirs(_imp->e_repository->layout()->exlibsdirs(id->name()));
- EAPIPhases phases((*(*id->eapi())[k::supported()])[k::ebuild_phases()].ebuild_info);
+ EAPIPhases phases(id->eapi()->supported()->ebuild_phases()->ebuild_info());
for (EAPIPhases::ConstIterator phase(phases.begin_phases()), phase_end(phases.end_phases()) ;
phase != phase_end ; ++phase)
{
@@ -800,11 +800,11 @@ std::string
EbuildEntries::get_environment_variable(const std::tr1::shared_ptr<const ERepositoryID> & id,
const std::string & var, std::tr1::shared_ptr<const ERepositoryProfile>) const
{
- EAPIPhases phases((*(*id->eapi())[k::supported()])[k::ebuild_phases()].ebuild_variable);
+ EAPIPhases phases(id->eapi()->supported()->ebuild_phases()->ebuild_variable());
int c(std::distance(phases.begin_phases(), phases.end_phases()));
if (1 != c)
- throw EAPIConfigurationError("EAPI '" + (*id->eapi())[k::name()] + "' defines "
+ throw EAPIConfigurationError("EAPI '" + id->eapi()->name() + "' defines "
+ (c == 0 ? "no" : stringify(c)) + " ebuild variable phases but expected exactly one");
bool userpriv_restrict;
@@ -868,7 +868,7 @@ EbuildEntries::merge(const MergeParams & m)
FSEntry binary_ebuild_location(_imp->e_repository->layout()->binary_ebuild_location(
m[k::package_id()]->name(), m[k::package_id()]->version(),
- "pbin-1+" + (*std::tr1::static_pointer_cast<const ERepositoryID>(m[k::package_id()])->eapi())[k::name()]));
+ "pbin-1+" + std::tr1::static_pointer_cast<const ERepositoryID>(m[k::package_id()])->eapi()->name()));
binary_ebuild_location.dirname().dirname().mkdir();
binary_ebuild_location.dirname().mkdir();
@@ -883,8 +883,7 @@ EbuildEntries::merge(const MergeParams & m)
(k::image(), m[k::image_dir()])
(k::destination_repository(), _imp->e_repository)
(k::builddir(), _imp->params.builddir)
- (k::merger_options(), (*(*std::tr1::static_pointer_cast<const ERepositoryID>(m[k::package_id()])->eapi())[k::supported()])
- [k::merger_options()])
+ (k::merger_options(), std::tr1::static_pointer_cast<const ERepositoryID>(m[k::package_id()])->eapi()->supported()->merger_options())
);
write_binary_ebuild_command();
@@ -924,9 +923,9 @@ EbuildEntries::pretend(const std::tr1::shared_ptr<const ERepositoryID> & id,
Context context("When running pretend for '" + stringify(*id) + "':");
- if (! (*id->eapi())[k::supported()])
+ if (! id->eapi()->supported())
return true;
- if ((*(*id->eapi())[k::supported()])[k::ebuild_phases()].ebuild_pretend.empty())
+ if (id->eapi()->supported()->ebuild_phases()->ebuild_pretend().empty())
return true;
bool userpriv_restrict;
@@ -945,13 +944,13 @@ EbuildEntries::pretend(const std::tr1::shared_ptr<const ERepositoryID> & id,
check_userpriv(FSEntry(_imp->params.builddir), _imp->environment));
std::string use(make_use(_imp->params.environment, *id, p));
- std::string expand_sep(stringify((*(*id->eapi())[k::supported()])[k::ebuild_options()].use_expand_separator));
+ std::string expand_sep(stringify(id->eapi()->supported()->ebuild_options()->use_expand_separator()));
std::tr1::shared_ptr<Map<std::string, std::string> > expand_vars(make_expand(
_imp->params.environment, *id, p, use, expand_sep));
std::tr1::shared_ptr<const FSEntrySequence> exlibsdirs(_imp->e_repository->layout()->exlibsdirs(id->name()));
- EAPIPhases phases((*(*id->eapi())[k::supported()])[k::ebuild_phases()].ebuild_pretend);
+ EAPIPhases phases(id->eapi()->supported()->ebuild_phases()->ebuild_pretend());
for (EAPIPhases::ConstIterator phase(phases.begin_phases()), phase_end(phases.end_phases()) ;
phase != phase_end ; ++phase)
{
diff --git a/paludis/repositories/e/ebuild_flat_metadata_cache.cc b/paludis/repositories/e/ebuild_flat_metadata_cache.cc
index 2c50ca5..f0ce4ef 100644
--- a/paludis/repositories/e/ebuild_flat_metadata_cache.cc
+++ b/paludis/repositories/e/ebuild_flat_metadata_cache.cc
@@ -75,9 +75,9 @@ EbuildFlatMetadataCache::load(const std::tr1::shared_ptr<const EbuildID> & id)
id->set_eapi(lines[14]);
bool ok(true);
- if ((*id->eapi())[k::supported()])
+ if (id->eapi()->supported())
{
- const EAPIEbuildMetadataVariables & m((*(*id->eapi())[k::supported()])[k::ebuild_metadata_variables()]);
+ const EAPIEbuildMetadataVariables & m(*id->eapi()->supported()->ebuild_metadata_variables());
{
time_t cache_time(std::max(_master_mtime, _filename.mtime()));
@@ -92,73 +92,73 @@ EbuildFlatMetadataCache::load(const std::tr1::shared_ptr<const EbuildID> & id)
}
if (ok)
- ok = static_cast<int>(lines.size()) >= m.flat_cache_minimum_size;
+ ok = static_cast<int>(lines.size()) >= m.minimum_flat_cache_size();
if (ok)
{
- if (-1 != m.flat_cache_dependencies)
- if (! m.metadata_dependencies.empty())
+ if (-1 != m.dependencies().flat_cache_index())
+ if (! m.dependencies().name().empty())
{
DependenciesRewriter rewriter;
- parse_depend(lines.at(m.flat_cache_dependencies), _env, id, *id->eapi())->accept(rewriter);
- id->load_build_depend(m.metadata_dependencies + ".DEPEND", m.description_dependencies + " (build)", rewriter.depend());
- id->load_run_depend(m.metadata_dependencies + ".RDEPEND", m.description_dependencies + " (run)", rewriter.rdepend());
- id->load_post_depend(m.metadata_dependencies + ".PDEPEND", m.description_dependencies + " (post)", rewriter.pdepend());
+ parse_depend(lines.at(m.dependencies().flat_cache_index()), _env, id, *id->eapi())->accept(rewriter);
+ id->load_build_depend(m.dependencies().name() + ".DEPEND", m.dependencies().description() + " (build)", rewriter.depend());
+ id->load_run_depend(m.dependencies().name() + ".RDEPEND", m.dependencies().description() + " (run)", rewriter.rdepend());
+ id->load_post_depend(m.dependencies().name() + ".PDEPEND", m.dependencies().description() + " (post)", rewriter.pdepend());
}
- if (-1 != m.flat_cache_build_depend)
- if (! m.metadata_build_depend.empty())
- id->load_build_depend(m.metadata_build_depend, m.description_build_depend, lines.at(m.flat_cache_build_depend));
+ if (-1 != m.build_depend().flat_cache_index())
+ if (! m.build_depend().name().empty())
+ id->load_build_depend(m.build_depend().name(), m.build_depend().description(), lines.at(m.build_depend().flat_cache_index()));
- if (-1 != m.flat_cache_run_depend)
- if (! m.metadata_run_depend.empty())
- id->load_run_depend(m.metadata_run_depend, m.description_run_depend, lines.at(m.flat_cache_run_depend));
+ if (-1 != m.run_depend().flat_cache_index())
+ if (! m.run_depend().name().empty())
+ id->load_run_depend(m.run_depend().name(), m.run_depend().description(), lines.at(m.run_depend().flat_cache_index()));
- id->set_slot(SlotName(lines.at(m.flat_cache_slot)));
+ id->set_slot(SlotName(lines.at(m.slot().flat_cache_index())));
- if (-1 != m.flat_cache_src_uri)
- if (! m.metadata_src_uri.empty())
- id->load_src_uri(m.metadata_src_uri, m.description_src_uri, lines.at(m.flat_cache_src_uri));
+ if (-1 != m.src_uri().flat_cache_index())
+ if (! m.src_uri().name().empty())
+ id->load_src_uri(m.src_uri().name(), m.src_uri().description(), lines.at(m.src_uri().flat_cache_index()));
- if (-1 != m.flat_cache_restrict)
- if (! m.metadata_restrict.empty())
- id->load_restrict(m.metadata_restrict, m.description_restrict, lines.at(m.flat_cache_restrict));
+ if (-1 != m.restrictions().flat_cache_index())
+ if (! m.restrictions().name().empty())
+ id->load_restrict(m.restrictions().name(), m.restrictions().description(), lines.at(m.restrictions().flat_cache_index()));
- if (-1 != m.flat_cache_homepage)
- if (! m.metadata_homepage.empty())
- id->load_homepage(m.metadata_homepage, m.description_homepage, lines.at(m.flat_cache_homepage));
+ if (-1 != m.homepage().flat_cache_index())
+ if (! m.homepage().name().empty())
+ id->load_homepage(m.homepage().name(), m.homepage().description(), lines.at(m.homepage().flat_cache_index()));
- if (-1 != m.flat_cache_license)
- if (! m.metadata_license.empty())
- id->load_license(m.metadata_license, m.description_license, lines.at(m.flat_cache_license));
+ if (-1 != m.license().flat_cache_index())
+ if (! m.license().name().empty())
+ id->load_license(m.license().name(), m.license().description(), lines.at(m.license().flat_cache_index()));
- if (-1 != m.flat_cache_description)
- if (! m.metadata_description.empty())
- id->load_short_description(m.metadata_description, m.description_description, lines.at(m.flat_cache_description));
+ if (-1 != m.description().flat_cache_index())
+ if (! m.description().name().empty())
+ id->load_short_description(m.description().name(), m.description().description(), lines.at(m.description().flat_cache_index()));
- if (-1 != m.flat_cache_keywords)
- if (! m.metadata_keywords.empty())
- id->load_keywords(m.metadata_keywords, m.description_keywords, lines.at(m.flat_cache_keywords));
+ if (-1 != m.keywords().flat_cache_index())
+ if (! m.keywords().name().empty())
+ id->load_keywords(m.keywords().name(), m.keywords().description(), lines.at(m.keywords().flat_cache_index()));
- if (-1 != m.flat_cache_inherited)
- if (! m.metadata_inherited.empty())
- id->load_inherited(m.metadata_inherited, m.description_inherited, lines.at(m.flat_cache_inherited));
+ if (-1 != m.inherited().flat_cache_index())
+ if (! m.inherited().name().empty())
+ id->load_inherited(m.inherited().name(), m.inherited().description(), lines.at(m.inherited().flat_cache_index()));
- if (-1 != m.flat_cache_iuse)
- if (! m.metadata_iuse.empty())
- id->load_iuse(m.metadata_iuse, m.description_iuse, lines.at(m.flat_cache_iuse));
+ if (-1 != m.iuse().flat_cache_index())
+ if (! m.iuse().name().empty())
+ id->load_iuse(m.iuse().name(), m.iuse().description(), lines.at(m.iuse().flat_cache_index()));
- if (-1 != m.flat_cache_pdepend)
- if (! m.metadata_pdepend.empty())
- id->load_post_depend(m.metadata_pdepend, m.description_pdepend, lines.at(m.flat_cache_pdepend));
+ if (-1 != m.pdepend().flat_cache_index())
+ if (! m.pdepend().name().empty())
+ id->load_post_depend(m.pdepend().name(), m.pdepend().description(), lines.at(m.pdepend().flat_cache_index()));
- if (-1 != m.flat_cache_provide)
- if (! m.metadata_provide.empty())
- id->load_provide(m.metadata_provide, m.description_provide, lines.at(m.flat_cache_provide));
+ if (-1 != m.provide().flat_cache_index())
+ if (! m.provide().name().empty())
+ id->load_provide(m.provide().name(), m.provide().description(), lines.at(m.provide().flat_cache_index()));
- if (-1 != m.flat_cache_use)
- if (! m.metadata_use.empty())
- id->load_use(m.metadata_use, m.description_use, lines.at(m.flat_cache_use));
+ if (-1 != m.use().flat_cache_index())
+ if (! m.use().name().empty())
+ id->load_use(m.use().name(), m.use().description(), lines.at(m.use().flat_cache_index()));
}
}
else
@@ -231,10 +231,10 @@ EbuildFlatMetadataCache::save(const std::tr1::shared_ptr<const EbuildID> & id)
return;
}
- if (! (*id->eapi())[k::supported()])
+ if (! id->eapi()->supported())
{
Log::get_instance()->message("e.cache.save.eapi_unsupoprted", ll_warning, lc_no_context) << "Not writing cache file to '"
- << _filename << "' because EAPI '" << (*id->eapi())[k::name()] << "' is not supported";
+ << _filename << "' because EAPI '" << id->eapi()->name() << "' is not supported";
return;
}
@@ -242,10 +242,10 @@ EbuildFlatMetadataCache::save(const std::tr1::shared_ptr<const EbuildID> & id)
try
{
- const EAPIEbuildMetadataVariables & m((*(*id->eapi())[k::supported()])[k::ebuild_metadata_variables()]);
- for (int x(0), x_end(m.flat_cache_minimum_size) ; x != x_end ; ++x)
+ const EAPIEbuildMetadataVariables & m(*id->eapi()->supported()->ebuild_metadata_variables());
+ for (int x(0), x_end(m.minimum_flat_cache_size()) ; x != x_end ; ++x)
{
- if (x == m.flat_cache_dependencies)
+ if (x == m.dependencies().flat_cache_index())
{
std::string s;
@@ -258,104 +258,104 @@ EbuildFlatMetadataCache::save(const std::tr1::shared_ptr<const EbuildID> & id)
cache << s << std::endl;
}
- else if (x == m.flat_cache_use)
+ else if (x == m.use().flat_cache_index())
{
if (id->use_key())
cache << join(id->use_key()->value()->begin(), id->use_key()->value()->end(), " ") << std::endl;
else
cache << std::endl;
}
- else if (x == m.flat_cache_build_depend)
+ else if (x == m.build_depend().flat_cache_index())
{
if (id->build_dependencies_key())
cache << flatten(id->build_dependencies_key()->value()) << std::endl;
else
cache << std::endl;
}
- else if (x == m.flat_cache_run_depend)
+ else if (x == m.run_depend().flat_cache_index())
{
if (id->run_dependencies_key())
cache << flatten(id->run_dependencies_key()->value()) << std::endl;
else
cache << std::endl;
}
- else if (x == m.flat_cache_slot)
+ else if (x == m.slot().flat_cache_index())
{
cache << normalise(id->slot()) << std::endl;
}
- else if (x == m.flat_cache_src_uri)
+ else if (x == m.src_uri().flat_cache_index())
{
if (id->fetches_key())
cache << flatten(id->fetches_key()->value()) << std::endl;
else
cache << std::endl;
}
- else if (x == m.flat_cache_restrict)
+ else if (x == m.restrictions().flat_cache_index())
{
if (id->restrict_key())
cache << flatten(id->restrict_key()->value()) << std::endl;
else
cache << std::endl;
}
- else if (x == m.flat_cache_homepage)
+ else if (x == m.homepage().flat_cache_index())
{
if (id->homepage_key())
cache << flatten(id->homepage_key()->value()) << std::endl;
else
cache << std::endl;
}
- else if (x == m.flat_cache_license)
+ else if (x == m.license().flat_cache_index())
{
if (id->license_key())
cache << flatten(id->license_key()->value()) << std::endl;
else
cache << std::endl;
}
- else if (x == m.flat_cache_description)
+ else if (x == m.description().flat_cache_index())
{
if (id->short_description_key())
cache << normalise(id->short_description_key()->value()) << std::endl;
else
cache << std::endl;
}
- else if (x == m.flat_cache_keywords)
+ else if (x == m.keywords().flat_cache_index())
{
if (id->keywords_key())
cache << join(id->keywords_key()->value()->begin(), id->keywords_key()->value()->end(), " ") << std::endl;
else
cache << std::endl;
}
- else if (x == m.flat_cache_inherited)
+ else if (x == m.inherited().flat_cache_index())
{
if (id->inherited_key())
cache << join(id->inherited_key()->value()->begin(), id->inherited_key()->value()->end(), " ") << std::endl;
else
cache << std::endl;
}
- else if (x == m.flat_cache_iuse)
+ else if (x == m.iuse().flat_cache_index())
{
if (id->iuse_key())
cache << join(id->iuse_key()->value()->begin(), id->iuse_key()->value()->end(), " ") << std::endl;
else
cache << std::endl;
}
- else if (x == m.flat_cache_pdepend)
+ else if (x == m.pdepend().flat_cache_index())
{
if (id->post_dependencies_key())
cache << flatten(id->post_dependencies_key()->value()) << std::endl;
else
cache << std::endl;
}
- else if (x == m.flat_cache_provide)
+ else if (x == m.provide().flat_cache_index())
{
if (id->provide_key())
cache << flatten(id->provide_key()->value()) << std::endl;
else
cache << std::endl;
}
- else if (x == m.flat_cache_eapi)
+ else if (x == m.eapi().flat_cache_index())
{
- cache << normalise((*id->eapi())[k::name()]) << std::endl;
+ cache << normalise(id->eapi()->name()) << std::endl;
}
else
cache << std::endl;
diff --git a/paludis/repositories/e/ebuild_id.cc b/paludis/repositories/e/ebuild_id.cc
index 61067c3..c0b6d26 100644
--- a/paludis/repositories/e/ebuild_id.cc
+++ b/paludis/repositories/e/ebuild_id.cc
@@ -202,16 +202,16 @@ EbuildID::need_keys_added() const
eapi_str = _imp->repository->params().eapi_when_unknown;
_imp->eapi = EAPIData::get_instance()->eapi_from_string(eapi_str);
- if ((*_imp->eapi)[k::supported()])
+ if (_imp->eapi->supported())
{
Log::get_instance()->message("e.ebuild.metadata.using_eapi", ll_debug, lc_context) << "Generating metadata command for '"
- << canonical_form(idcf_full) << "' using EAPI '" << (*_imp->eapi)[k::name()] << "'";
+ << canonical_form(idcf_full) << "' using EAPI '" << _imp->eapi->name() << "'";
- EAPIPhases phases((*(*_imp->eapi)[k::supported()])[k::ebuild_phases()].ebuild_metadata);
+ EAPIPhases phases(_imp->eapi->supported()->ebuild_phases()->ebuild_metadata());
int count(std::distance(phases.begin_phases(), phases.end_phases()));
if (1 != count)
- throw EAPIConfigurationError("EAPI '" + (*_imp->eapi)[k::name()] + "' defines "
+ throw EAPIConfigurationError("EAPI '" + _imp->eapi->name() + "' defines "
+ (count == 0 ? "no" : stringify(count)) + " ebuild variable phases but expected exactly one");
EbuildMetadataCommand cmd(EbuildCommandParams::named_create()
@@ -237,9 +237,9 @@ EbuildID::need_keys_added() const
cmd.load(shared_from_this());
Log::get_instance()->message("e.ebuild.metadata.generated_eapi", ll_debug, lc_context) << "Generated metadata for '"
- << canonical_form(idcf_full) << "' has EAPI '" << (*_imp->eapi)[k::name()] << "'";
+ << canonical_form(idcf_full) << "' has EAPI '" << _imp->eapi->name() << "'";
- if (_imp->repository->params().write_cache.basename() != "empty" && (*_imp->eapi)[k::supported()])
+ if (_imp->repository->params().write_cache.basename() != "empty" && _imp->eapi->supported())
{
EbuildFlatMetadataCache metadata_cache(_imp->environment, write_cache_file, _imp->ebuild, _imp->master_mtime,
_imp->eclass_mtimes, false);
@@ -249,11 +249,11 @@ EbuildID::need_keys_added() const
else
{
Log::get_instance()->message("e.ebuild.metadata.unknown_eapi", ll_debug, lc_context) << "Can't run metadata command for '"
- << canonical_form(idcf_full) << "' because EAPI '" << (*_imp->eapi)[k::name()] << "' is unknown";
+ << canonical_form(idcf_full) << "' because EAPI '" << _imp->eapi->name() << "' is unknown";
}
}
- add_metadata_key(make_shared_ptr(new LiteralMetadataValueKey<std::string>("EAPI", "EAPI", mkt_internal, (*_imp->eapi)[k::name()])));
+ add_metadata_key(make_shared_ptr(new LiteralMetadataValueKey<std::string>("EAPI", "EAPI", mkt_internal, _imp->eapi->name())));
_imp->repository_mask = make_shared_ptr(new EMutableRepositoryMaskInfoKey(shared_from_this(), "repository_mask", "Repository masked",
std::tr1::static_pointer_cast<const ERepository>(repository())->repository_masked(*this), mkt_internal));
@@ -335,9 +335,9 @@ EbuildID::need_masks_added() const
Context context("When generating masks for ID '" + canonical_form(idcf_full) + "':");
- if (! (*eapi())[k::supported()])
+ if (! eapi()->supported())
{
- add_mask(make_shared_ptr(new EUnsupportedMask('E', "eapi", (*eapi())[k::name()])));
+ add_mask(make_shared_ptr(new EUnsupportedMask('E', "eapi", eapi()->name())));
return;
}
@@ -807,7 +807,7 @@ EbuildID::supports_action(const SupportsActionTestBase & b) const
SupportsActionQuery q;
b.accept(q);
- return q.result && (*eapi())[k::supported()];
+ return q.result && eapi()->supported();
}
namespace
@@ -885,7 +885,7 @@ namespace
void
EbuildID::perform_action(Action & a) const
{
- if (! (*eapi())[k::supported()])
+ if (! eapi()->supported())
throw UnsupportedActionError(*this, a);
PerformAction b(shared_from_this());
diff --git a/paludis/repositories/e/exndbam_repository.cc b/paludis/repositories/e/exndbam_repository.cc
index 9eb9273..4324c6e 100644
--- a/paludis/repositories/e/exndbam_repository.cc
+++ b/paludis/repositories/e/exndbam_repository.cc
@@ -406,7 +406,7 @@ ExndbamRepository::perform_uninstall(const std::tr1::shared_ptr<const ERepositor
std::tr1::shared_ptr<FSEntrySequence> eclassdirs(new FSEntrySequence);
eclassdirs->push_back(ver_dir);
- EAPIPhases phases((*(*id->eapi())[k::supported()])[k::ebuild_phases()].ebuild_uninstall);
+ EAPIPhases phases(id->eapi()->supported()->ebuild_phases()->ebuild_uninstall());
for (EAPIPhases::ConstIterator phase(phases.begin_phases()), phase_end(phases.end_phases()) ;
phase != phase_end ; ++phase)
{
diff --git a/paludis/repositories/e/fetch_visitor.cc b/paludis/repositories/e/fetch_visitor.cc
index 7137deb..d048534 100644
--- a/paludis/repositories/e/fetch_visitor.cc
+++ b/paludis/repositories/e/fetch_visitor.cc
@@ -210,7 +210,7 @@ FetchVisitor::visit_leaf(const FetchableURIDepSpec & u)
stringify(_imp->id->version()))
.with_setenv("CATEGORY", stringify(_imp->id->name().category))
.with_setenv("REPOSITORY", stringify(_imp->id->repository()->name()))
- .with_setenv("EAPI", stringify(_imp->eapi[k::name()]))
+ .with_setenv("EAPI", stringify(_imp->eapi.name()))
.with_setenv("SLOT", "")
.with_setenv("PKGMANAGER", PALUDIS_PACKAGE "-" + stringify(PALUDIS_VERSION_MAJOR) + "." +
stringify(PALUDIS_VERSION_MINOR) + "." +
diff --git a/paludis/repositories/e/fix_locked_dependencies.cc b/paludis/repositories/e/fix_locked_dependencies.cc
index 27e09ee..f60ddbe 100644
--- a/paludis/repositories/e/fix_locked_dependencies.cc
+++ b/paludis/repositories/e/fix_locked_dependencies.cc
@@ -147,7 +147,7 @@ namespace
break;
PackageDepSpec new_s(partial_parse_elike_package_dep_spec(stringify(s),
- (*eapi[k::supported()])[k::package_dep_spec_parse_options()], id).slot_requirement(
+ eapi.supported()->package_dep_spec_parse_options(), id).slot_requirement(
make_shared_ptr(new ELikeSlotExactRequirement((*matches->last())->slot(), true))));
c.reset(new TreeLeaf<DependencySpecTree, PackageDepSpec>(std::tr1::static_pointer_cast<PackageDepSpec>(
diff --git a/paludis/repositories/e/info_metadata_key.cc b/paludis/repositories/e/info_metadata_key.cc
index 9d9eb98..87fad67 100644
--- a/paludis/repositories/e/info_metadata_key.cc
+++ b/paludis/repositories/e/info_metadata_key.cc
@@ -161,8 +161,7 @@ InfoPkgsMetadataKey::need_keys_added() const
std::tr1::shared_ptr<MetadataKey> key;
std::tr1::shared_ptr<const PackageIDSequence> q((*_imp->env)[selection::AllVersionsSorted(
generator::Matches(parse_elike_package_dep_spec(*i,
- (*(*erepository::EAPIData::get_instance()->eapi_from_string(_imp->eapi))
- [k::supported()])[k::package_dep_spec_parse_options()],
+ erepository::EAPIData::get_instance()->eapi_from_string(_imp->eapi)->supported()->package_dep_spec_parse_options(),
std::tr1::shared_ptr<const PackageID>())) |
filter::InstalledAtRoot(_imp->env->root()))]);
diff --git a/paludis/repositories/e/pipe_command_handler.cc b/paludis/repositories/e/pipe_command_handler.cc
index 7eec51c..286d282 100644
--- a/paludis/repositories/e/pipe_command_handler.cc
+++ b/paludis/repositories/e/pipe_command_handler.cc
@@ -104,14 +104,13 @@ paludis::erepository::pipe_command_handler(const Environment * const environment
else
{
std::tr1::shared_ptr<const EAPI> eapi(EAPIData::get_instance()->eapi_from_string(tokens[1]));
- if (! (*eapi)[k::supported()])
+ if (! eapi->supported())
return "EBEST_VERSION EAPI " + tokens[1] + " unsupported";
- PackageDepSpec spec(parse_elike_package_dep_spec(tokens[2], (*(*eapi)[k::supported()])[k::package_dep_spec_parse_options()],
- package_id));
+ PackageDepSpec spec(parse_elike_package_dep_spec(tokens[2], eapi->supported()->package_dep_spec_parse_options(), package_id));
std::tr1::shared_ptr<const PackageIDSequence> entries((*environment)[selection::AllVersionsSorted(
generator::Matches(spec) | filter::InstalledAtRoot(environment->root()))]);
- if ((*(*eapi)[k::supported()])[k::pipe_commands()][k::rewrite_virtuals()] && (! entries->empty()) &&
+ if (eapi->supported()->pipe_commands()->rewrite_virtuals() && (! entries->empty()) &&
(*entries->last())->virtual_for_key())
{
Log::get_instance()->message("e.pipe_commands.best_version.is_virtual", ll_qa, lc_context) << "best-version of '" << spec <<
@@ -127,7 +126,7 @@ paludis::erepository::pipe_command_handler(const Environment * const environment
return "O1;";
else
{
- if ((*(*eapi)[k::supported()])[k::pipe_commands()][k::no_slot_or_repo()])
+ if (eapi->supported()->pipe_commands()->no_slot_or_repo())
return "O0;" + name_and_version(**entries->last());
else
return "O0;" + stringify(**entries->last());
@@ -144,11 +143,10 @@ paludis::erepository::pipe_command_handler(const Environment * const environment
else
{
std::tr1::shared_ptr<const EAPI> eapi(EAPIData::get_instance()->eapi_from_string(tokens[1]));
- if (! (*eapi)[k::supported()])
+ if (! eapi->supported())
return "EHAS_VERSION EAPI " + tokens[1] + " unsupported";
- PackageDepSpec spec(parse_elike_package_dep_spec(tokens[2], (*(*eapi)[k::supported()])[k::package_dep_spec_parse_options()],
- package_id));
+ PackageDepSpec spec(parse_elike_package_dep_spec(tokens[2], eapi->supported()->package_dep_spec_parse_options(), package_id));
std::tr1::shared_ptr<const PackageIDSequence> entries((*environment)[selection::SomeArbitraryVersion(
generator::Matches(spec) | filter::InstalledAtRoot(environment->root()))]);
if (entries->empty())
@@ -167,14 +165,13 @@ paludis::erepository::pipe_command_handler(const Environment * const environment
else
{
std::tr1::shared_ptr<const EAPI> eapi(EAPIData::get_instance()->eapi_from_string(tokens[1]));
- if (! (*eapi)[k::supported()])
+ if (! eapi->supported())
return "EMATCH EAPI " + tokens[1] + " unsupported";
- PackageDepSpec spec(parse_elike_package_dep_spec(tokens[2], (*(*eapi)[k::supported()])[k::package_dep_spec_parse_options()],
- package_id));
+ PackageDepSpec spec(parse_elike_package_dep_spec(tokens[2], eapi->supported()->package_dep_spec_parse_options(), package_id));
std::tr1::shared_ptr<const PackageIDSequence> entries((*environment)[selection::AllVersionsSorted(
generator::Matches(spec) | filter::InstalledAtRoot(environment->root()))]);
- if ((*(*eapi)[k::supported()])[k::pipe_commands()][k::rewrite_virtuals()] && (! entries->empty()))
+ if (eapi->supported()->pipe_commands()->rewrite_virtuals() && (! entries->empty()))
{
std::tr1::shared_ptr<PackageIDSequence> new_entries(new PackageIDSequence);
for (PackageIDSequence::ConstIterator i(entries->begin()), i_end(entries->end()) ;
@@ -198,7 +195,7 @@ paludis::erepository::pipe_command_handler(const Environment * const environment
return "O1;";
else
{
- if ((*(*eapi)[k::supported()])[k::pipe_commands()][k::no_slot_or_repo()])
+ if (eapi->supported()->pipe_commands()->no_slot_or_repo())
return "O0;" + join(indirect_iterator(entries->begin()), indirect_iterator(entries->end()), "\n", &name_and_version);
else
return "O0;" + join(indirect_iterator(entries->begin()), indirect_iterator(entries->end()), "\n");
@@ -234,15 +231,15 @@ paludis::erepository::pipe_command_handler(const Environment * const environment
}
std::tr1::shared_ptr<const EAPI> eapi(EAPIData::get_instance()->eapi_from_string(tokens[1]));
- if (! (*eapi)[k::supported()])
+ if (! eapi->supported())
return "EREWRITE_VAR EAPI " + tokens[1] + " unsupported";
std::string var(tokens[3]);
- if ((var == (*(*eapi)[k::supported()])[k::ebuild_metadata_variables()].metadata_build_depend) ||
- (var == (*(*eapi)[k::supported()])[k::ebuild_metadata_variables()].metadata_run_depend) ||
- (var == (*(*eapi)[k::supported()])[k::ebuild_metadata_variables()].metadata_pdepend) ||
- (var == (*(*eapi)[k::supported()])[k::ebuild_metadata_variables()].metadata_dependencies))
+ if ((var == eapi->supported()->ebuild_metadata_variables()->build_depend().name()) ||
+ (var == eapi->supported()->ebuild_metadata_variables()->run_depend().name()) ||
+ (var == eapi->supported()->ebuild_metadata_variables()->pdepend().name()) ||
+ (var == eapi->supported()->ebuild_metadata_variables()->dependencies().name()))
{
std::tr1::shared_ptr<const DependencySpecTree::ConstItem> before(parse_depend(join(tokens.begin() + 4, tokens.end(), " "),
environment, package_id, *eapi));
diff --git a/paludis/repositories/e/qa/eapi_supported.cc b/paludis/repositories/e/qa/eapi_supported.cc
index 690ea49..d449753 100644
--- a/paludis/repositories/e/qa/eapi_supported.cc
+++ b/paludis/repositories/e/qa/eapi_supported.cc
@@ -34,10 +34,10 @@ paludis::erepository::eapi_supported_check(
{
Context context("When performing check '" + name + "' using eapi_supported_check on ID '" + stringify(*id) + "':");
- if (! (*id->eapi())[k::supported()])
+ if (! id->eapi()->supported())
{
reporter.message(QAMessage(entry, qaml_severe, name,
- "EAPI '" + stringify((*id->eapi())[k::name()]) + "' not supported")
+ "EAPI '" + stringify(id->eapi()->name()) + "' not supported")
.with_associated_id(id));
return false;
}
diff --git a/paludis/repositories/e/vdb_repository.cc b/paludis/repositories/e/vdb_repository.cc
index b8dcaf7..6b717fc 100644
--- a/paludis/repositories/e/vdb_repository.cc
+++ b/paludis/repositories/e/vdb_repository.cc
@@ -387,7 +387,7 @@ VDBRepository::perform_uninstall(const std::tr1::shared_ptr<const ERepositoryID>
std::tr1::shared_ptr<FSEntry> load_env(new FSEntry(pkg_dir / "environment.bz2"));
- EAPIPhases phases((*(*id->eapi())[k::supported()])[k::ebuild_phases()].ebuild_uninstall);
+ EAPIPhases phases(id->eapi()->supported()->ebuild_phases()->ebuild_uninstall());
for (EAPIPhases::ConstIterator phase(phases.begin_phases()), phase_end(phases.end_phases()) ;
phase != phase_end ; ++phase)
{