From 7e9f4b5526a36cdf7958ea774d55b1c45e8ea275 Mon Sep 17 00:00:00 2001
From: Ciaran McCreesh <ciaran.mccreesh@googlemail.com>
Date: Wed, 23 Jul 2008 17:39:32 +0100
Subject: [PATCH] Convert EAPI away from kc / sr.
Looks like people are having compiler issues. Hopefully this:
Fixes: ticket:622
---
paludis/repositories/e/Makefile.am | 13 -
paludis/repositories/e/dep_parser.cc | 16 +-
paludis/repositories/e/e_installed_repository.cc | 6 +-
.../repositories/e/e_installed_repository_id.cc | 125 +++---
paludis/repositories/e/e_key.cc | 20 +-
paludis/repositories/e/e_repository.cc | 47 ++--
paludis/repositories/e/e_repository_TEST.cc | 8 +-
paludis/repositories/e/e_repository_id.cc | 2 +-
paludis/repositories/e/e_repository_news.cc | 4 +-
paludis/repositories/e/e_repository_profile.cc | 64 ++--
paludis/repositories/e/eapi-fwd.hh | 69 +----
paludis/repositories/e/eapi.cc | 406 ++++++++++----------
paludis/repositories/e/eapi.hh | 223 +++++++++++-
paludis/repositories/e/eapi.sr | 170 --------
paludis/repositories/e/eapis/0.conf | 8 +
paludis/repositories/e/eapis/exheres-0.conf | 5 +
paludis/repositories/e/eapis/paludis-1.conf | 5 +
paludis/repositories/e/ebuild.cc | 224 ++++++------
paludis/repositories/e/ebuild_entries.cc | 53 ++--
.../repositories/e/ebuild_flat_metadata_cache.cc | 140 ++++----
paludis/repositories/e/ebuild_id.cc | 24 +-
paludis/repositories/e/exndbam_repository.cc | 2 +-
paludis/repositories/e/fetch_visitor.cc | 2 +-
paludis/repositories/e/fix_locked_dependencies.cc | 2 +-
paludis/repositories/e/pipe_command_handler.cc | 33 +-
paludis/repositories/e/qa/eapi_supported.cc | 4 +-
paludis/repositories/e/vdb_repository.cc | 2 +-
27 files changed, 841 insertions(+), 836 deletions(-)
delete mode 100644 paludis/repositories/e/eapi.sr
diff --git a/paludis/repositories/e/Makefile.am b/paludis/repositories/e/Makefile.am
index afc8034..1c0172d 100644
|
a
|
b
|
|
| 6 | 6 | e_repository_params-sr.hh e_repository_params-sr.cc \ |
| 7 | 7 | e_repository_params-se.hh e_repository_params-se.cc \ |
| 8 | 8 | vdb_repository-sr.hh vdb_repository-sr.cc \ |
| 9 | | eapi-sr.hh eapi-sr.cc \ |
| 10 | 9 | dep_parser-se.hh dep_parser-se.cc \ |
| 11 | 10 | manifest2_entry-sr.hh manifest2_entry-sr.cc |
| 12 | 11 | |
| … |
… |
|
| 58 | 57 | e_repository_sets.hh \ |
| 59 | 58 | e_stripper.hh \ |
| 60 | 59 | eapi.hh \ |
| 61 | | eapi-sr.hh \ |
| 62 | 60 | eapi-fwd.hh \ |
| 63 | 61 | eapi_phase.hh \ |
| 64 | 62 | ebuild.hh \ |
| … |
… |
|
| 306 | 304 | dep_parser-se.cc \ |
| 307 | 305 | dep_parser_TEST.cc \ |
| 308 | 306 | dep_spec_pretty_printer_TEST.cc \ |
| 309 | | eapi.sr \ |
| 310 | | eapi-sr.hh \ |
| 311 | | eapi-sr.cc \ |
| 312 | 307 | glsa.sr \ |
| 313 | 308 | glsa-sr.hh \ |
| 314 | 309 | glsa-sr.cc \ |
| … |
… |
|
| 372 | 367 | exndbam_repository-sr.cc \ |
| 373 | 368 | vdb_repository-sr.hh \ |
| 374 | 369 | vdb_repository-sr.cc \ |
| 375 | | eapi-sr.hh \ |
| 376 | | eapi-sr.cc \ |
| 377 | 370 | manifest2_entry-sr.hh \ |
| 378 | 371 | manifest2_entry-sr.cc |
| 379 | 372 | |
| … |
… |
|
| 424 | 417 | manifest2_entry-sr.cc : manifest2_entry.sr $(top_srcdir)/misc/make_sr.bash |
| 425 | 418 | $(top_srcdir)/misc/make_sr.bash --source $(srcdir)/manifest2_entry.sr > $@ |
| 426 | 419 | |
| 427 | | eapi-sr.hh : eapi.sr $(top_srcdir)/misc/make_sr.bash |
| 428 | | $(top_srcdir)/misc/make_sr.bash --header $(srcdir)/eapi.sr > $@ |
| 429 | | |
| 430 | | eapi-sr.cc : eapi.sr $(top_srcdir)/misc/make_sr.bash |
| 431 | | $(top_srcdir)/misc/make_sr.bash --source $(srcdir)/eapi.sr > $@ |
| 432 | | |
| 433 | 420 | glsa-sr.hh : glsa.sr $(top_srcdir)/misc/make_sr.bash |
| 434 | 421 | $(top_srcdir)/misc/make_sr.bash --header $(srcdir)/glsa.sr > $@ |
| 435 | 422 | |
diff --git a/paludis/repositories/e/dep_parser.cc b/paludis/repositories/e/dep_parser.cc
index 9c800ea..f87fb78 100644
|
a
|
b
|
|
| 66 | 66 | void package_dep_spec_string_handler(const typename ParseStackTypes<T_>::Stack & h, const std::string & s, |
| 67 | 67 | const EAPI & eapi, const std::tr1::shared_ptr<const PackageID> & id) |
| 68 | 68 | { |
| 69 | | PackageDepSpec p(parse_elike_package_dep_spec(s, (*eapi[k::supported()])[k::package_dep_spec_parse_options()], id)); |
| | 69 | PackageDepSpec p(parse_elike_package_dep_spec(s, eapi.supported()->package_dep_spec_parse_options(), id)); |
| 70 | 70 | (*h.begin())[k::add_handler()](make_shared_ptr(new TreeLeaf<T_, PackageDepSpec>(make_shared_ptr(new PackageDepSpec(p))))); |
| 71 | 71 | } |
| 72 | 72 | |
| … |
… |
|
| 78 | 78 | { |
| 79 | 79 | std::tr1::shared_ptr<BlockDepSpec> b(new BlockDepSpec( |
| 80 | 80 | make_shared_ptr(new PackageDepSpec(parse_elike_package_dep_spec(s.substr(1), |
| 81 | | (*eapi[k::supported()])[k::package_dep_spec_parse_options()], id))))); |
| | 81 | eapi.supported()->package_dep_spec_parse_options(), id))))); |
| 82 | 82 | (*h.begin())[k::add_handler()](make_shared_ptr(new TreeLeaf<T_, BlockDepSpec>(b))); |
| 83 | 83 | } |
| 84 | 84 | else |
| … |
… |
|
| 107 | 107 | void arrow_handler(const typename ParseStackTypes<T_>::Stack & h, const std::string & s, const std::string & f, const std::string & t, |
| 108 | 108 | const EAPI & eapi) |
| 109 | 109 | { |
| 110 | | if (t.empty() || ((*eapi[k::supported()])[k::dependency_spec_tree_parse_options()][dstpo_uri_supports_arrow])) |
| | 110 | if (t.empty() || eapi.supported()->dependency_spec_tree_parse_options()[dstpo_uri_supports_arrow]) |
| 111 | 111 | (*h.begin())[k::add_handler()](make_shared_ptr(new TreeLeaf<T_, FetchableURIDepSpec>(make_shared_ptr( |
| 112 | 112 | new FetchableURIDepSpec(t.empty() ? f : f + " -> " + t))))); |
| 113 | 113 | else |
| … |
… |
|
| 203 | 203 | |
| 204 | 204 | void use_under_any_handler(const std::string & s, const EAPI & eapi) |
| 205 | 205 | { |
| 206 | | if ((*eapi[k::supported()])[k::dependency_spec_tree_parse_options()][dstpo_disallow_any_use]) |
| | 206 | if (eapi.supported()->dependency_spec_tree_parse_options()[dstpo_disallow_any_use]) |
| 207 | 207 | throw EDepParseError(s, "use? not allowed under || ( ) in this EAPI"); |
| 208 | 208 | } |
| 209 | 209 | |
| … |
… |
|
| 423 | 423 | std::tr1::shared_ptr<URILabelsDepSpec> |
| 424 | 424 | paludis::erepository::parse_uri_label(const std::string & s, const EAPI & e) |
| 425 | 425 | { |
| 426 | | Context context("When parsing label string '" + s + "' using EAPI '" + e[k::name()] + "':"); |
| | 426 | Context context("When parsing label string '" + s + "' using EAPI '" + e.name() + "':"); |
| 427 | 427 | |
| 428 | 428 | if (s.empty()) |
| 429 | 429 | throw EDepParseError(s, "Empty label"); |
| 430 | 430 | |
| 431 | | std::string c((*e[k::supported()])[k::uri_labels()].class_for_label(s.substr(0, s.length() - 1))); |
| | 431 | std::string c(e.supported()->uri_labels()->class_for_label(s.substr(0, s.length() - 1))); |
| 432 | 432 | if (c.empty()) |
| 433 | 433 | throw EDepParseError(s, "Unknown label"); |
| 434 | 434 | |
| … |
… |
|
| 455 | 455 | std::tr1::shared_ptr<DependencyLabelsDepSpec> |
| 456 | 456 | paludis::erepository::parse_dependency_label(const std::string & s, const EAPI & e) |
| 457 | 457 | { |
| 458 | | Context context("When parsing label string '" + s + "' using EAPI '" + e[k::name()] + "':"); |
| | 458 | Context context("When parsing label string '" + s + "' using EAPI '" + e.name() + "':"); |
| 459 | 459 | |
| 460 | 460 | if (s.empty()) |
| 461 | 461 | throw EDepParseError(s, "Empty label"); |
| … |
… |
|
| 468 | 468 | |
| 469 | 469 | for (std::set<std::string>::iterator it = labels.begin(), it_e = labels.end(); it != it_e; ++it) |
| 470 | 470 | { |
| 471 | | std::string c((*e[k::supported()])[k::dependency_labels()].class_for_label(*it)); |
| | 471 | std::string c(e.supported()->dependency_labels()->class_for_label(*it)); |
| 472 | 472 | if (c.empty()) |
| 473 | 473 | throw EDepParseError(s, "Unknown label '" + *it + "'"); |
| 474 | 474 | |
diff --git a/paludis/repositories/e/e_installed_repository.cc b/paludis/repositories/e/e_installed_repository.cc
index 707b8d9..45c7667 100644
|
a
|
b
|
|
| 298 | 298 | if (this != id.repository().get()) |
| 299 | 299 | return '\0'; |
| 300 | 300 | const std::tr1::shared_ptr<const EAPI> & eapi(static_cast<const ERepositoryID &>(id).eapi()); |
| 301 | | return (*eapi)[k::supported()] ? (*(*eapi)[k::supported()])[k::ebuild_options()].use_expand_separator : '\0'; |
| | 301 | return eapi->supported() ? eapi->supported()->ebuild_options()->use_expand_separator() : '\0'; |
| 302 | 302 | } |
| 303 | 303 | |
| 304 | 304 | std::string |
| … |
… |
|
| 354 | 354 | eclassdirs->push_back(ver_dir); |
| 355 | 355 | |
| 356 | 356 | std::tr1::shared_ptr<FSEntry> load_env(new FSEntry(ver_dir / "environment.bz2")); |
| 357 | | EAPIPhases phases((*(*id->eapi())[k::supported()])[k::ebuild_phases()].ebuild_config); |
| | 357 | EAPIPhases phases(id->eapi()->supported()->ebuild_phases()->ebuild_config()); |
| 358 | 358 | |
| 359 | 359 | for (EAPIPhases::ConstIterator phase(phases.begin_phases()), phase_end(phases.end_phases()) ; |
| 360 | 360 | phase != phase_end ; ++phase) |
| … |
… |
|
| 398 | 398 | |
| 399 | 399 | std::tr1::shared_ptr<FSEntry> load_env(new FSEntry(ver_dir / "environment.bz2")); |
| 400 | 400 | |
| 401 | | EAPIPhases phases((*(*id->eapi())[k::supported()])[k::ebuild_phases()].ebuild_info); |
| | 401 | EAPIPhases phases(id->eapi()->supported()->ebuild_phases()->ebuild_info()); |
| 402 | 402 | |
| 403 | 403 | for (EAPIPhases::ConstIterator phase(phases.begin_phases()), phase_end(phases.end_phases()) ; |
| 404 | 404 | 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 0644f59..1383254 100644
|
a
|
b
|
|
| 162 | 162 | |
| 163 | 163 | Context context("When loading ID keys from '" + stringify(_imp->dir) + "':"); |
| 164 | 164 | |
| 165 | | if (! (*eapi())[k::supported()]) |
| | 165 | if (! eapi()->supported()) |
| 166 | 166 | { |
| 167 | 167 | Log::get_instance()->message("e.eapi.unsupported", ll_debug, lc_context) |
| 168 | 168 | << "Not loading further keys for '" << *this << "' because EAPI '" |
| 169 | | << (*eapi())[k::name()] << "' is not supported"; |
| | 169 | << eapi()->name() << "' is not supported"; |
| 170 | 170 | return; |
| 171 | 171 | } |
| 172 | 172 | |
| 173 | | const EAPIEbuildMetadataVariables & vars((*(*eapi())[k::supported()])[k::ebuild_metadata_variables()]); |
| 174 | | const EAPIEbuildEnvironmentVariables & env((*(*eapi())[k::supported()])[k::ebuild_environment_variables()]); |
| | 173 | std::tr1::shared_ptr<const EAPIEbuildMetadataVariables> vars(eapi()->supported()->ebuild_metadata_variables()); |
| | 174 | std::tr1::shared_ptr<const EAPIEbuildEnvironmentVariables> env(eapi()->supported()->ebuild_environment_variables()); |
| 175 | 175 | |
| 176 | | if (! env[k::env_use()].empty()) |
| 177 | | if ((_imp->dir / env[k::env_use()]).exists()) |
| | 176 | if (! env->env_use().empty()) |
| | 177 | if ((_imp->dir / env->env_use()).exists()) |
| 178 | 178 | { |
| 179 | | _imp->use.reset(new EUseKey(_imp->environment, shared_from_this(), env[k::env_use()], env[k::description_use()], |
| 180 | | file_contents(_imp->dir / env[k::env_use()]), mkt_internal)); |
| | 179 | _imp->use.reset(new EUseKey(_imp->environment, shared_from_this(), env->env_use(), env->description_use(), |
| | 180 | file_contents(_imp->dir / env->env_use()), mkt_internal)); |
| 181 | 181 | add_metadata_key(_imp->use); |
| 182 | 182 | } |
| 183 | 183 | |
| 184 | | if (! vars.metadata_inherited.empty()) |
| 185 | | if ((_imp->dir / vars.metadata_inherited).exists()) |
| | 184 | if (! vars->inherited().name().empty()) |
| | 185 | if ((_imp->dir / vars->inherited().name()).exists()) |
| 186 | 186 | { |
| 187 | | _imp->inherited.reset(new EInheritedKey(shared_from_this(), vars.metadata_inherited, vars.description_inherited, |
| 188 | | file_contents(_imp->dir / vars.metadata_inherited), mkt_internal)); |
| | 187 | _imp->inherited.reset(new EInheritedKey(shared_from_this(), vars->inherited().name(), vars->inherited().description(), |
| | 188 | file_contents(_imp->dir / vars->inherited().name()), mkt_internal)); |
| 189 | 189 | add_metadata_key(_imp->inherited); |
| 190 | 190 | } |
| 191 | 191 | |
| 192 | | if (! vars.metadata_iuse.empty()) |
| 193 | | if ((_imp->dir / vars.metadata_iuse).exists()) |
| | 192 | if (! vars->iuse().name().empty()) |
| | 193 | if ((_imp->dir / vars->iuse().name()).exists()) |
| 194 | 194 | { |
| 195 | | _imp->iuse.reset(new EIUseKey(_imp->environment, shared_from_this(), vars.metadata_iuse, vars.description_iuse, |
| 196 | | file_contents(_imp->dir / vars.metadata_iuse), mkt_normal)); |
| | 195 | _imp->iuse.reset(new EIUseKey(_imp->environment, shared_from_this(), vars->iuse().name(), vars->iuse().description(), |
| | 196 | file_contents(_imp->dir / vars->iuse().name()), mkt_normal)); |
| 197 | 197 | add_metadata_key(_imp->iuse); |
| 198 | 198 | } |
| 199 | 199 | |
| 200 | | if (! vars.metadata_license.empty()) |
| 201 | | if ((_imp->dir / vars.metadata_license).exists()) |
| | 200 | if (! vars->license().name().empty()) |
| | 201 | if ((_imp->dir / vars->license().name()).exists()) |
| 202 | 202 | { |
| 203 | | _imp->license.reset(new ELicenseKey(_imp->environment, shared_from_this(), vars.metadata_license, vars.description_license, |
| 204 | | file_contents(_imp->dir / vars.metadata_license), mkt_normal)); |
| | 203 | _imp->license.reset(new ELicenseKey(_imp->environment, shared_from_this(), vars->license().name(), vars->license().description(), |
| | 204 | file_contents(_imp->dir / vars->license().name()), mkt_normal)); |
| 205 | 205 | add_metadata_key(_imp->license); |
| 206 | 206 | } |
| 207 | 207 | |
| 208 | | if (! vars.metadata_provide.empty()) |
| 209 | | if ((_imp->dir / vars.metadata_provide).exists()) |
| | 208 | if (! vars->provide().name().empty()) |
| | 209 | if ((_imp->dir / vars->provide().name()).exists()) |
| 210 | 210 | { |
| 211 | | _imp->provide.reset(new EProvideKey(_imp->environment, shared_from_this(), vars.metadata_provide, vars.description_provide, |
| 212 | | file_contents(_imp->dir / vars.metadata_provide), mkt_internal)); |
| | 211 | _imp->provide.reset(new EProvideKey(_imp->environment, shared_from_this(), vars->provide().name(), vars->provide().description(), |
| | 212 | file_contents(_imp->dir / vars->provide().name()), mkt_internal)); |
| 213 | 213 | add_metadata_key(_imp->provide); |
| 214 | 214 | } |
| 215 | 215 | |
| 216 | | if (! vars.metadata_dependencies.empty()) |
| | 216 | if (! vars->dependencies().name().empty()) |
| 217 | 217 | { |
| 218 | | if ((_imp->dir / vars.metadata_dependencies).exists()) |
| | 218 | if ((_imp->dir / vars->dependencies().name()).exists()) |
| 219 | 219 | { |
| 220 | 220 | DependenciesRewriter rewriter; |
| 221 | | parse_depend(file_contents(_imp->dir / vars.metadata_dependencies), _imp->environment, shared_from_this(), *eapi())->accept(rewriter); |
| | 221 | parse_depend(file_contents(_imp->dir / vars->dependencies().name()), _imp->environment, shared_from_this(), *eapi())->accept(rewriter); |
| 222 | 222 | |
| 223 | | _imp->build_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars.metadata_dependencies + ".DEPEND", |
| 224 | | vars.description_dependencies + " (build)", rewriter.depend(), _imp->build_dependencies_labels, mkt_dependencies)); |
| | 223 | _imp->build_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars->dependencies().name() + ".DEPEND", |
| | 224 | vars->dependencies().description() + " (build)", rewriter.depend(), _imp->build_dependencies_labels, mkt_dependencies)); |
| 225 | 225 | add_metadata_key(_imp->build_dependencies); |
| 226 | 226 | |
| 227 | | _imp->run_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars.metadata_dependencies + ".RDEPEND", |
| 228 | | vars.description_dependencies + " (run)", rewriter.rdepend(), _imp->build_dependencies_labels, mkt_dependencies)); |
| | 227 | _imp->run_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars->dependencies().name() + ".RDEPEND", |
| | 228 | vars->dependencies().description() + " (run)", rewriter.rdepend(), _imp->build_dependencies_labels, mkt_dependencies)); |
| 229 | 229 | add_metadata_key(_imp->run_dependencies); |
| 230 | 230 | |
| 231 | | _imp->post_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars.metadata_dependencies + ".PDEPEND", |
| 232 | | vars.description_dependencies + " (post)", rewriter.pdepend(), _imp->build_dependencies_labels, mkt_dependencies)); |
| | 231 | _imp->post_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars->dependencies().name() + ".PDEPEND", |
| | 232 | vars->dependencies().description() + " (post)", rewriter.pdepend(), _imp->build_dependencies_labels, mkt_dependencies)); |
| 233 | 233 | add_metadata_key(_imp->post_dependencies); |
| 234 | 234 | } |
| 235 | 235 | } |
| 236 | 236 | else |
| 237 | 237 | { |
| 238 | | if (! vars.metadata_build_depend.empty()) |
| 239 | | if ((_imp->dir / vars.metadata_build_depend).exists()) |
| | 238 | if (! vars->build_depend().name().empty()) |
| | 239 | if ((_imp->dir / vars->build_depend().name()).exists()) |
| 240 | 240 | { |
| 241 | | _imp->build_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars.metadata_build_depend, |
| 242 | | vars.description_build_depend, file_contents(_imp->dir / vars.metadata_build_depend), |
| | 241 | _imp->build_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars->build_depend().name(), |
| | 242 | vars->build_depend().description(), file_contents(_imp->dir / vars->build_depend().name()), |
| 243 | 243 | _imp->build_dependencies_labels, mkt_dependencies)); |
| 244 | 244 | add_metadata_key(_imp->build_dependencies); |
| 245 | 245 | } |
| 246 | 246 | |
| 247 | | if (! vars.metadata_run_depend.empty()) |
| 248 | | if ((_imp->dir / vars.metadata_run_depend).exists()) |
| | 247 | if (! vars->run_depend().name().empty()) |
| | 248 | if ((_imp->dir / vars->run_depend().name()).exists()) |
| 249 | 249 | { |
| 250 | | _imp->run_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars.metadata_run_depend, |
| 251 | | vars.description_run_depend, file_contents(_imp->dir / vars.metadata_run_depend), |
| | 250 | _imp->run_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars->run_depend().name(), |
| | 251 | vars->run_depend().description(), file_contents(_imp->dir / vars->run_depend().name()), |
| 252 | 252 | _imp->run_dependencies_labels, mkt_dependencies)); |
| 253 | 253 | add_metadata_key(_imp->run_dependencies); |
| 254 | 254 | } |
| 255 | 255 | |
| 256 | | if (! vars.metadata_pdepend.empty()) |
| 257 | | if ((_imp->dir / vars.metadata_pdepend).exists()) |
| | 256 | if (! vars->pdepend().name().empty()) |
| | 257 | if ((_imp->dir / vars->pdepend().name()).exists()) |
| 258 | 258 | { |
| 259 | | _imp->post_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars.metadata_pdepend, |
| 260 | | vars.description_pdepend, file_contents(_imp->dir / vars.metadata_pdepend), |
| | 259 | _imp->post_dependencies.reset(new EDependenciesKey(_imp->environment, shared_from_this(), vars->pdepend().name(), |
| | 260 | vars->pdepend().description(), file_contents(_imp->dir / vars->pdepend().name()), |
| 261 | 261 | _imp->post_dependencies_labels, mkt_dependencies)); |
| 262 | 262 | add_metadata_key(_imp->post_dependencies); |
| 263 | 263 | } |
| 264 | 264 | } |
| 265 | 265 | |
| 266 | | if (! vars.metadata_restrict.empty()) |
| 267 | | if ((_imp->dir / vars.metadata_restrict).exists()) |
| | 266 | if (! vars->restrictions().name().empty()) |
| | 267 | if ((_imp->dir / vars->restrictions().name()).exists()) |
| 268 | 268 | { |
| 269 | | _imp->restrictions.reset(new ERestrictKey(_imp->environment, shared_from_this(), vars.metadata_restrict, vars.description_restrict, |
| 270 | | file_contents(_imp->dir / vars.metadata_restrict), mkt_internal)); |
| | 269 | _imp->restrictions.reset(new ERestrictKey(_imp->environment, shared_from_this(), vars->restrictions().name(), |
| | 270 | vars->restrictions().description(), |
| | 271 | file_contents(_imp->dir / vars->restrictions().name()), mkt_internal)); |
| 271 | 272 | add_metadata_key(_imp->restrictions); |
| 272 | 273 | } |
| 273 | 274 | |
| 274 | | if (! vars.metadata_src_uri.empty()) |
| 275 | | if ((_imp->dir / vars.metadata_src_uri).exists()) |
| | 275 | if (! vars->src_uri().name().empty()) |
| | 276 | if ((_imp->dir / vars->src_uri().name()).exists()) |
| 276 | 277 | { |
| 277 | | _imp->src_uri.reset(new EFetchableURIKey(_imp->environment, shared_from_this(), vars.metadata_src_uri, vars.description_src_uri, |
| 278 | | file_contents(_imp->dir / vars.metadata_src_uri), mkt_dependencies)); |
| | 278 | _imp->src_uri.reset(new EFetchableURIKey(_imp->environment, shared_from_this(), vars->src_uri().name(), |
| | 279 | vars->src_uri().description(), |
| | 280 | file_contents(_imp->dir / vars->src_uri().name()), mkt_dependencies)); |
| 279 | 281 | add_metadata_key(_imp->src_uri); |
| 280 | 282 | } |
| 281 | 283 | |
| 282 | | if (! vars.metadata_description.empty()) |
| 283 | | if ((_imp->dir / vars.metadata_description).exists()) |
| | 284 | if (! vars->description().name().empty()) |
| | 285 | if ((_imp->dir / vars->description().name()).exists()) |
| 284 | 286 | { |
| 285 | | _imp->short_description.reset(new LiteralMetadataValueKey<std::string> (vars.metadata_description, |
| 286 | | vars.description_description, mkt_significant, file_contents(_imp->dir / vars.metadata_description))); |
| | 287 | _imp->short_description.reset(new LiteralMetadataValueKey<std::string> (vars->description().name(), |
| | 288 | vars->description().description(), mkt_significant, file_contents(_imp->dir / vars->description().name()))); |
| 287 | 289 | add_metadata_key(_imp->short_description); |
| 288 | 290 | } |
| 289 | 291 | |
| 290 | | if (! vars.metadata_homepage.empty()) |
| 291 | | if ((_imp->dir / vars.metadata_homepage).exists()) |
| | 292 | if (! vars->homepage().name().empty()) |
| | 293 | if ((_imp->dir / vars->homepage().name()).exists()) |
| 292 | 294 | { |
| 293 | | _imp->homepage.reset(new ESimpleURIKey(_imp->environment, shared_from_this(), vars.metadata_homepage, vars.description_homepage, |
| 294 | | file_contents(_imp->dir / vars.metadata_homepage), mkt_significant)); |
| | 295 | _imp->homepage.reset(new ESimpleURIKey(_imp->environment, shared_from_this(), vars->homepage().name(), |
| | 296 | vars->homepage().description(), |
| | 297 | file_contents(_imp->dir / vars->homepage().name()), mkt_significant)); |
| 295 | 298 | add_metadata_key(_imp->homepage); |
| 296 | 299 | } |
| 297 | 300 | |
diff --git a/paludis/repositories/e/e_key.cc b/paludis/repositories/e/e_key.cc
index 2bb03bf..92ad0b4 100644
|
a
|
b
|
|
| 309 | 309 | for (DepSpecFlattener<RestrictSpecTree, PlainTextDepSpec>::ConstIterator i(f.begin()), i_end(f.end()) ; |
| 310 | 310 | i != i_end ; ++i) |
| 311 | 311 | { |
| 312 | | if ((*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->end() != |
| 313 | | std::find((*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->begin(), |
| 314 | | (*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->end(), (*i)->text())) |
| | 312 | if (_imp->id->eapi()->supported()->ebuild_options()->restrict_fetch()->end() != |
| | 313 | std::find(_imp->id->eapi()->supported()->ebuild_options()->restrict_fetch()->begin(), |
| | 314 | _imp->id->eapi()->supported()->ebuild_options()->restrict_fetch()->end(), (*i)->text())) |
| 315 | 315 | _imp->initial_label = *parse_uri_label("default-restrict-fetch:", *_imp->id->eapi())->begin(); |
| 316 | 316 | |
| 317 | | else if ((*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->end() != |
| 318 | | std::find((*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->begin(), |
| 319 | | (*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_fetch->end(), (*i)->text())) |
| | 317 | else if (_imp->id->eapi()->supported()->ebuild_options()->restrict_fetch()->end() != |
| | 318 | std::find(_imp->id->eapi()->supported()->ebuild_options()->restrict_fetch()->begin(), |
| | 319 | _imp->id->eapi()->supported()->ebuild_options()->restrict_fetch()->end(), (*i)->text())) |
| 320 | 320 | _imp->initial_label = *parse_uri_label("default-restrict-mirror:", *_imp->id->eapi())->begin(); |
| 321 | 321 | |
| 322 | | else if ((*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_primaryuri->end() != |
| 323 | | std::find((*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_primaryuri->begin(), |
| 324 | | (*(*_imp->id->eapi())[k::supported()])[k::ebuild_options()].restrict_primaryuri->end(), (*i)->text())) |
| | 322 | else if (_imp->id->eapi()->supported()->ebuild_options()->restrict_primaryuri()->end() != |
| | 323 | std::find(_imp->id->eapi()->supported()->ebuild_options()->restrict_primaryuri()->begin(), |
| | 324 | _imp->id->eapi()->supported()->ebuild_options()->restrict_primaryuri()->end(), (*i)->text())) |
| 325 | 325 | _imp->initial_label = *parse_uri_label("default-restrict-primaryuri:", *_imp->id->eapi())->begin(); |
| 326 | 326 | } |
| 327 | 327 | |
| … |
… |
|
| 586 | 586 | for (std::list<std::string>::const_iterator t(tokens.begin()), t_end(tokens.end()) ; |
| 587 | 587 | t != t_end ; ++t) |
| 588 | 588 | { |
| 589 | | IUseFlag f(*t, (*(*_imp->id->eapi())[k::supported()])[k::iuse_flag_parse_options()], std::string::npos); |
| | 589 | IUseFlag f(*t, _imp->id->eapi()->supported()->iuse_flag_parse_options(), std::string::npos); |
| 590 | 590 | for (UseFlagNameSet::ConstIterator p(prefixes->begin()), p_end(prefixes->end()) ; |
| 591 | 591 | p != p_end ; ++p) |
| 592 | 592 | 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 83d63ae..2e15d7a 100644
|
a
|
b
|
|
| 150 | 150 | std::tr1::shared_ptr<MetadataKey> key; |
| 151 | 151 | std::tr1::shared_ptr<const PackageIDSequence> q((*_env)[selection::AllVersionsSorted( |
| 152 | 152 | generator::Matches(parse_elike_package_dep_spec(*i, |
| 153 | | (*(*erepository::EAPIData::get_instance()->eapi_from_string(_p)) |
| 154 | | [k::supported()])[k::package_dep_spec_parse_options()], |
| | 153 | erepository::EAPIData::get_instance()->eapi_from_string(_p)->supported()->package_dep_spec_parse_options(), |
| 155 | 154 | std::tr1::shared_ptr<const PackageID>())) | |
| 156 | 155 | filter::InstalledAtRoot(_env->root()))]); |
| 157 | 156 | if (q->empty()) |
| … |
… |
|
| 362 | 361 | |
| 363 | 362 | profile_ptr.reset(new ERepositoryProfile( |
| 364 | 363 | params.environment, repo, repo->name(), *params.profiles, |
| 365 | | (*(*erepository::EAPIData::get_instance()->eapi_from_string( |
| 366 | | params.eapi_when_unknown))[k::supported()])[k::ebuild_environment_variables()][k::env_arch()])); |
| | 364 | erepository::EAPIData::get_instance()->eapi_from_string( |
| | 365 | params.eapi_when_unknown)->supported()->ebuild_environment_variables()->env_arch())); |
| 367 | 366 | } |
| 368 | 367 | |
| 369 | 368 | void |
| … |
… |
|
| 407 | 406 | (k::status(), tokens.at(2)) |
| 408 | 407 | (k::profile(), std::tr1::shared_ptr<ERepositoryProfile>(new ERepositoryProfile( |
| 409 | 408 | params.environment, repo, repo->name(), profiles, |
| 410 | | (*(*erepository::EAPIData::get_instance()->eapi_from_string( |
| 411 | | params.eapi_when_unknown))[k::supported()])[k::ebuild_environment_variables()][k::env_arch()])))); |
| | 409 | erepository::EAPIData::get_instance()->eapi_from_string( |
| | 410 | params.eapi_when_unknown)->supported()->ebuild_environment_variables()->env_arch())))); |
| 412 | 411 | } |
| 413 | 412 | catch (const InternalError &) |
| 414 | 413 | { |
| … |
… |
|
| 596 | 595 | { |
| 597 | 596 | std::tr1::shared_ptr<const PackageDepSpec> a(new PackageDepSpec(parse_elike_package_dep_spec( |
| 598 | 597 | line->first, |
| 599 | | (*(*erepository::EAPIData::get_instance()->eapi_from_string(_imp->params.profile_eapi)) |
| 600 | | [k::supported()])[k::package_dep_spec_parse_options()], |
| | 598 | erepository::EAPIData::get_instance()->eapi_from_string( |
| | 599 | _imp->params.profile_eapi)->supported()->package_dep_spec_parse_options(), |
| 601 | 600 | std::tr1::shared_ptr<const PackageID>()))); |
| 602 | 601 | if (a->package_ptr()) |
| 603 | 602 | _imp->repo_mask[*a->package_ptr()].push_back(std::make_pair(a, line->second)); |
| … |
… |
|
| 641 | 640 | |
| 642 | 641 | const erepository::ERepositoryID & id(static_cast<const erepository::ERepositoryID &>(e)); |
| 643 | 642 | |
| 644 | | if (! (*id.eapi())[k::supported()]) |
| | 643 | if (! id.eapi()->supported()) |
| 645 | 644 | { |
| 646 | 645 | Log::get_instance()->message("e.query_use.unsupported_eapi", ll_qa, lc_no_context) |
| 647 | 646 | << "Was asked for the state of USE flag '" << f << "' for ID '" << e |
| … |
… |
|
| 671 | 670 | if (id.iuse_key()->value()->end() != id.iuse_key()->value()->find(IUseFlag(f, use_disabled, 0))) |
| 672 | 671 | break; |
| 673 | 672 | |
| 674 | | if (! (*(*id.eapi())[k::supported()])[k::ebuild_options()].require_use_expand_in_iuse) |
| | 673 | if (! id.eapi()->supported()->ebuild_options()->require_use_expand_in_iuse()) |
| 675 | 674 | { |
| 676 | 675 | if (arch_flags()->end() != arch_flags()->find(f)) |
| 677 | 676 | break; |
| … |
… |
|
| 688 | 687 | |
| 689 | 688 | Log::get_instance()->message("e.query_use.not_in_iuse", ll_qa, lc_context) |
| 690 | 689 | << "Was asked for the state of " |
| 691 | | << (*(*id.eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use()] |
| | 690 | << id.eapi()->supported()->ebuild_environment_variables()->env_use() |
| 692 | 691 | << " flag '" << f << "' for ID '" << e |
| 693 | 692 | << "', but that flag is not listed in " << id.iuse_key()->raw_name() << " and is not a " |
| 694 | | << (*(*id.eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use_expand()] << " or " |
| 695 | | << (*(*id.eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_arch()] << " value"; |
| | 693 | << id.eapi()->supported()->ebuild_environment_variables()->env_use_expand() << " or " |
| | 694 | << id.eapi()->supported()->ebuild_environment_variables()->env_arch() << " value"; |
| 696 | 695 | } |
| 697 | 696 | else |
| 698 | 697 | Log::get_instance()->message("e.query_use.not_in_iuse", ll_qa, lc_context) |
| 699 | 698 | << "Was asked for the state of " |
| 700 | | << (*(*id.eapi())[k::supported()])[k::ebuild_environment_variables()][k::env_use()] |
| | 699 | << id.eapi()->supported()->ebuild_environment_variables()->env_use() |
| 701 | 700 | << " flag '" << f << "' for ID '" << e |
| 702 | 701 | << "', but that flag is not listed in " << id.iuse_key()->raw_name(); |
| 703 | 702 | |
| … |
… |
|
| 999 | 998 | { |
| 1000 | 999 | _imp->need_profiles(); |
| 1001 | 1000 | |
| 1002 | | std::string expand_sep(stringify((*(*erepository::EAPIData::get_instance()->eapi_from_string( |
| 1003 | | (_imp->params.profile_eapi)))[k::supported()])[k::ebuild_options()].use_expand_separator)); |
| | 1001 | std::string expand_sep(stringify(erepository::EAPIData::get_instance()->eapi_from_string( |
| | 1002 | _imp->params.profile_eapi)->supported()->ebuild_options()->use_expand_separator())); |
| 1004 | 1003 | std::tr1::shared_ptr<UseFlagNameSet> result(new UseFlagNameSet); |
| 1005 | 1004 | for (ERepositoryProfile::UseExpandConstIterator i(_imp->profile_ptr->begin_use_expand()), |
| 1006 | 1005 | i_end(_imp->profile_ptr->end_use_expand()) ; i != i_end ; ++i) |
| … |
… |
|
| 1060 | 1059 | if (this != id.repository().get()) |
| 1061 | 1060 | return '\0'; |
| 1062 | 1061 | const std::tr1::shared_ptr<const erepository::EAPI> & eapi(static_cast<const erepository::ERepositoryID &>(id).eapi()); |
| 1063 | | return (*eapi)[k::supported()] ? (*(*eapi)[k::supported()])[k::ebuild_options()].use_expand_separator : '\0'; |
| | 1062 | return eapi->supported() ? eapi->supported()->ebuild_options()->use_expand_separator() : '\0'; |
| 1064 | 1063 | } |
| 1065 | 1064 | |
| 1066 | 1065 | void |
| … |
… |
|
| 1154 | 1153 | |
| 1155 | 1154 | if (_imp->use_desc.empty()) |
| 1156 | 1155 | { |
| 1157 | | std::string expand_sep(stringify((*(*erepository::EAPIData::get_instance()->eapi_from_string( |
| 1158 | | _imp->params.profile_eapi))[k::supported()])[k::ebuild_options()].use_expand_separator)); |
| | 1156 | std::string expand_sep(stringify(erepository::EAPIData::get_instance()->eapi_from_string( |
| | 1157 | _imp->params.profile_eapi)->supported()->ebuild_options()->use_expand_separator())); |
| 1159 | 1158 | std::tr1::shared_ptr<const FSEntrySequence> use_desc_dirs(_imp->layout->use_desc_dirs()); |
| 1160 | 1159 | for (FSEntrySequence::ConstIterator p(use_desc_dirs->begin()), p_end(use_desc_dirs->end()) ; |
| 1161 | 1160 | p != p_end ; ++p) |
| … |
… |
|
| 1184 | 1183 | { |
| 1185 | 1184 | std::string f(e.repository()->format_key() ? e.repository()->format_key()->value() : ""); |
| 1186 | 1185 | if (f == "ebuild") |
| 1187 | | return (*(*static_cast<const erepository::ERepositoryID &>(e).eapi())[k::supported()])[k::can_be_pbin()]; |
| | 1186 | return static_cast<const erepository::ERepositoryID &>(e).eapi()->supported()->can_be_pbin(); |
| 1188 | 1187 | else |
| 1189 | 1188 | return false; |
| 1190 | 1189 | } |
| … |
… |
|
| 1464 | 1463 | std::string |
| 1465 | 1464 | ERepository::accept_keywords_variable() const |
| 1466 | 1465 | { |
| 1467 | | return (*(*erepository::EAPIData::get_ |