Ticket #622: 0002-Convert-EAPI-away-from-kc-sr.patch

File 0002-Convert-EAPI-away-from-kc-sr.patch, 177.5 kB (added by ciaranm, 4 months ago)
  • paludis/repositories/e/Makefile.am

    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  
    66        e_repository_params-sr.hh e_repository_params-sr.cc \ 
    77        e_repository_params-se.hh e_repository_params-se.cc \ 
    88        vdb_repository-sr.hh vdb_repository-sr.cc \ 
    9         eapi-sr.hh eapi-sr.cc \ 
    109        dep_parser-se.hh dep_parser-se.cc \ 
    1110        manifest2_entry-sr.hh manifest2_entry-sr.cc 
    1211 
     
    5857        e_repository_sets.hh \ 
    5958        e_stripper.hh \ 
    6059        eapi.hh \ 
    61         eapi-sr.hh \ 
    6260        eapi-fwd.hh \ 
    6361        eapi_phase.hh \ 
    6462        ebuild.hh \ 
     
    306304        dep_parser-se.cc \ 
    307305        dep_parser_TEST.cc \ 
    308306        dep_spec_pretty_printer_TEST.cc \ 
    309         eapi.sr \ 
    310         eapi-sr.hh \ 
    311         eapi-sr.cc \ 
    312307        glsa.sr \ 
    313308        glsa-sr.hh \ 
    314309        glsa-sr.cc \ 
     
    372367        exndbam_repository-sr.cc \ 
    373368        vdb_repository-sr.hh \ 
    374369        vdb_repository-sr.cc \ 
    375         eapi-sr.hh \ 
    376         eapi-sr.cc \ 
    377370        manifest2_entry-sr.hh \ 
    378371        manifest2_entry-sr.cc 
    379372 
     
    424417manifest2_entry-sr.cc : manifest2_entry.sr $(top_srcdir)/misc/make_sr.bash 
    425418        $(top_srcdir)/misc/make_sr.bash --source $(srcdir)/manifest2_entry.sr > $@ 
    426419 
    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  
    433420glsa-sr.hh : glsa.sr $(top_srcdir)/misc/make_sr.bash 
    434421        $(top_srcdir)/misc/make_sr.bash --header $(srcdir)/glsa.sr > $@ 
    435422 
  • paludis/repositories/e/dep_parser.cc

    diff --git a/paludis/repositories/e/dep_parser.cc b/paludis/repositories/e/dep_parser.cc
    index 9c800ea..f87fb78 100644
    a b  
    6666    void package_dep_spec_string_handler(const typename ParseStackTypes<T_>::Stack & h, const std::string & s, 
    6767            const EAPI & eapi, const std::tr1::shared_ptr<const PackageID> & id) 
    6868    { 
    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)); 
    7070        (*h.begin())[k::add_handler()](make_shared_ptr(new TreeLeaf<T_, PackageDepSpec>(make_shared_ptr(new PackageDepSpec(p))))); 
    7171    } 
    7272 
     
    7878        { 
    7979            std::tr1::shared_ptr<BlockDepSpec> b(new BlockDepSpec( 
    8080                        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))))); 
    8282            (*h.begin())[k::add_handler()](make_shared_ptr(new TreeLeaf<T_, BlockDepSpec>(b))); 
    8383        } 
    8484        else 
     
    107107    void arrow_handler(const typename ParseStackTypes<T_>::Stack & h, const std::string & s, const std::string & f, const std::string & t, 
    108108            const EAPI & eapi) 
    109109    { 
    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]) 
    111111            (*h.begin())[k::add_handler()](make_shared_ptr(new TreeLeaf<T_, FetchableURIDepSpec>(make_shared_ptr( 
    112112                                new FetchableURIDepSpec(t.empty() ? f : f + " -> " + t))))); 
    113113        else 
     
    203203 
    204204    void use_under_any_handler(const std::string & s, const EAPI & eapi) 
    205205    { 
    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]) 
    207207            throw EDepParseError(s, "use? not allowed under || ( ) in this EAPI"); 
    208208    } 
    209209 
     
    423423std::tr1::shared_ptr<URILabelsDepSpec> 
    424424paludis::erepository::parse_uri_label(const std::string & s, const EAPI & e) 
    425425{ 
    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() + "':"); 
    427427 
    428428    if (s.empty()) 
    429429        throw EDepParseError(s, "Empty label"); 
    430430 
    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))); 
    432432    if (c.empty()) 
    433433        throw EDepParseError(s, "Unknown label"); 
    434434 
     
    455455std::tr1::shared_ptr<DependencyLabelsDepSpec> 
    456456paludis::erepository::parse_dependency_label(const std::string & s, const EAPI & e) 
    457457{ 
    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() + "':"); 
    459459 
    460460    if (s.empty()) 
    461461        throw EDepParseError(s, "Empty label"); 
     
    468468 
    469469    for (std::set<std::string>::iterator it = labels.begin(), it_e = labels.end(); it != it_e; ++it) 
    470470    { 
    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)); 
    472472        if (c.empty()) 
    473473            throw EDepParseError(s, "Unknown label '" + *it + "'"); 
    474474 
  • paludis/repositories/e/e_installed_repository.cc

    diff --git a/paludis/repositories/e/e_installed_repository.cc b/paludis/repositories/e/e_installed_repository.cc
    index 707b8d9..45c7667 100644
    a b  
    298298    if (this != id.repository().get()) 
    299299        return '\0'; 
    300300    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'; 
    302302} 
    303303 
    304304std::string 
     
    354354    eclassdirs->push_back(ver_dir); 
    355355 
    356356    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()); 
    358358 
    359359    for (EAPIPhases::ConstIterator phase(phases.begin_phases()), phase_end(phases.end_phases()) ; 
    360360            phase != phase_end ; ++phase) 
     
    398398 
    399399    std::tr1::shared_ptr<FSEntry> load_env(new FSEntry(ver_dir / "environment.bz2")); 
    400400 
    401     EAPIPhases phases((*(*id->eapi())[k::supported()])[k::ebuild_phases()].ebuild_info); 
     401    EAPIPhases phases(id->eapi()->supported()->ebuild_phases()->ebuild_info()); 
    402402 
    403403    for (EAPIPhases::ConstIterator phase(phases.begin_phases()), phase_end(phases.end_phases()) ; 
    404404            phase != phase_end ; ++phase) 
  • paludis/repositories/e/e_installed_repository_id.cc

    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  
    162162 
    163163    Context context("When loading ID keys from '" + stringify(_imp->dir) + "':"); 
    164164 
    165     if (! (*eapi())[k::supported()]) 
     165    if (! eapi()->supported()) 
    166166    { 
    167167        Log::get_instance()->message("e.eapi.unsupported", ll_debug, lc_context) 
    168168            << "Not loading further keys for '" << *this << "' because EAPI '" 
    169             << (*eapi())[k::name()] << "' is not supported"; 
     169            << eapi()->name() << "' is not supported"; 
    170170        return; 
    171171    } 
    172172 
    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()); 
    175175 
    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()) 
    178178        { 
    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)); 
    181181            add_metadata_key(_imp->use); 
    182182        } 
    183183 
    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()) 
    186186        { 
    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)); 
    189189            add_metadata_key(_imp->inherited); 
    190190        } 
    191191 
    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()) 
    194194        { 
    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)); 
    197197            add_metadata_key(_imp->iuse); 
    198198        } 
    199199 
    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()) 
    202202        { 
    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)); 
    205205            add_metadata_key(_imp->license); 
    206206        } 
    207207 
    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()) 
    210210        { 
    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)); 
    213213            add_metadata_key(_imp->provide); 
    214214        } 
    215215 
    216     if (! vars.metadata_dependencies.empty()) 
     216    if (! vars->dependencies().name().empty()) 
    217217    { 
    218         if ((_imp->dir / vars.metadata_dependencies).exists()) 
     218        if ((_imp->dir / vars->dependencies().name()).exists()) 
    219219        { 
    220220            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); 
    222222 
    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)); 
    225225            add_metadata_key(_imp->build_dependencies); 
    226226 
    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)); 
    229229            add_metadata_key(_imp->run_dependencies); 
    230230 
    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)); 
    233233            add_metadata_key(_imp->post_dependencies); 
    234234        } 
    235235    } 
    236236    else 
    237237    { 
    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()) 
    240240            { 
    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()), 
    243243                            _imp->build_dependencies_labels, mkt_dependencies)); 
    244244                add_metadata_key(_imp->build_dependencies); 
    245245            } 
    246246 
    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()) 
    249249            { 
    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()), 
    252252                            _imp->run_dependencies_labels, mkt_dependencies)); 
    253253                add_metadata_key(_imp->run_dependencies); 
    254254            } 
    255255 
    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()) 
    258258            { 
    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()), 
    261261                            _imp->post_dependencies_labels, mkt_dependencies)); 
    262262                add_metadata_key(_imp->post_dependencies); 
    263263            } 
    264264    } 
    265265 
    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()) 
    268268        { 
    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)); 
    271272            add_metadata_key(_imp->restrictions); 
    272273        } 
    273274 
    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()) 
    276277        { 
    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)); 
    279281            add_metadata_key(_imp->src_uri); 
    280282        } 
    281283 
    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()) 
    284286        { 
    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()))); 
    287289            add_metadata_key(_imp->short_description); 
    288290        } 
    289291 
    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()) 
    292294        { 
    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)); 
    295298            add_metadata_key(_imp->homepage); 
    296299        } 
    297300 
  • paludis/repositories/e/e_key.cc

    diff --git a/paludis/repositories/e/e_key.cc b/paludis/repositories/e/e_key.cc
    index 2bb03bf..92ad0b4 100644
    a b  
    309309        for (DepSpecFlattener<RestrictSpecTree, PlainTextDepSpec>::ConstIterator i(f.begin()), i_end(f.end()) ; 
    310310                i != i_end ; ++i) 
    311311        { 
    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())) 
    315315                _imp->initial_label = *parse_uri_label("default-restrict-fetch:", *_imp->id->eapi())->begin(); 
    316316 
    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())) 
    320320                _imp->initial_label = *parse_uri_label("default-restrict-mirror:", *_imp->id->eapi())->begin(); 
    321321 
    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())) 
    325325                _imp->initial_label = *parse_uri_label("default-restrict-primaryuri:", *_imp->id->eapi())->begin(); 
    326326        } 
    327327 
     
    586586    for (std::list<std::string>::const_iterator t(tokens.begin()), t_end(tokens.end()) ; 
    587587            t != t_end ; ++t) 
    588588    { 
    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); 
    590590        for (UseFlagNameSet::ConstIterator p(prefixes->begin()), p_end(prefixes->end()) ; 
    591591                p != p_end ; ++p) 
    592592            if (0 == stringify(f.flag).compare(0, stringify(*p).length(), stringify(*p), 0, stringify(*p).length())) 
  • paludis/repositories/e/e_repository.cc

    diff --git a/paludis/repositories/e/e_repository.cc b/paludis/repositories/e/e_repository.cc
    index 83d63ae..2e15d7a 100644
    a b  
    150150                        std::tr1::shared_ptr<MetadataKey> key; 
    151151                        std::tr1::shared_ptr<const PackageIDSequence> q((*_env)[selection::AllVersionsSorted( 
    152152                                    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(), 
    155154                                            std::tr1::shared_ptr<const PackageID>())) | 
    156155                                    filter::InstalledAtRoot(_env->root()))]); 
    157156                        if (q->empty()) 
     
    362361 
    363362        profile_ptr.reset(new ERepositoryProfile( 
    364363                    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())); 
    367366    } 
    368367 
    369368    void 
     
    407406                            (k::status(), tokens.at(2)) 
    408407                            (k::profile(), std::tr1::shared_ptr<ERepositoryProfile>(new ERepositoryProfile( 
    409408                                        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())))); 
    412411                } 
    413412                catch (const InternalError &) 
    414413                { 
     
    596595            { 
    597596                std::tr1::shared_ptr<const PackageDepSpec> a(new PackageDepSpec(parse_elike_package_dep_spec( 
    598597                                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(), 
    601600                                std::tr1::shared_ptr<const PackageID>()))); 
    602601                if (a->package_ptr()) 
    603602                    _imp->repo_mask[*a->package_ptr()].push_back(std::make_pair(a, line->second)); 
     
    641640 
    642641    const erepository::ERepositoryID & id(static_cast<const erepository::ERepositoryID &>(e)); 
    643642 
    644     if (! (*id.eapi())[k::supported()]) 
     643    if (! id.eapi()->supported()) 
    645644    { 
    646645        Log::get_instance()->message("e.query_use.unsupported_eapi", ll_qa, lc_no_context) 
    647646            << "Was asked for the state of USE flag '" << f << "' for ID '" << e 
     
    671670            if (id.iuse_key()->value()->end() != id.iuse_key()->value()->find(IUseFlag(f, use_disabled, 0))) 
    672671                break; 
    673672 
    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()) 
    675674            { 
    676675                if (arch_flags()->end() != arch_flags()->find(f)) 
    677676                    break; 
     
    688687 
    689688                Log::get_instance()->message("e.query_use.not_in_iuse", ll_qa, lc_context) 
    690689                    << "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() 
    692691                    << " flag '" << f << "' for ID '" << e 
    693692                    << "', 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"; 
    696695            } 
    697696            else 
    698697                Log::get_instance()->message("e.query_use.not_in_iuse", ll_qa, lc_context) 
    699698                    << "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() 
    701700                    << " flag '" << f << "' for ID '" << e 
    702701                    << "', but that flag is not listed in " << id.iuse_key()->raw_name(); 
    703702 
     
    999998{ 
    1000999    _imp->need_profiles(); 
    10011000 
    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())); 
    10041003    std::tr1::shared_ptr<UseFlagNameSet> result(new UseFlagNameSet); 
    10051004    for (ERepositoryProfile::UseExpandConstIterator i(_imp->profile_ptr->begin_use_expand()), 
    10061005            i_end(_imp->profile_ptr->end_use_expand()) ; i != i_end ; ++i) 
     
    10601059    if (this != id.repository().get()) 
    10611060        return '\0'; 
    10621061    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'; 
    10641063} 
    10651064 
    10661065void 
     
    11541153 
    11551154    if (_imp->use_desc.empty()) 
    11561155    { 
    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())); 
    11591158        std::tr1::shared_ptr<const FSEntrySequence> use_desc_dirs(_imp->layout->use_desc_dirs()); 
    11601159        for (FSEntrySequence::ConstIterator p(use_desc_dirs->begin()), p_end(use_desc_dirs->end()) ; 
    11611160                p != p_end ; ++p) 
     
    11841183{ 
    11851184    std::string f(e.repository()->format_key() ? e.repository()->format_key()->value() : ""); 
    11861185    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(); 
    11881187    else 
    11891188        return false; 
    11901189} 
     
    14641463std::string 
    14651464ERepository::accept_keywords_variable() const 
    14661465{ 
    1467     return (*(*erepository::EAPIData::get_