aboutsummaryrefslogtreecommitdiff
path: root/paludis/repositories/e
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2007-07-16 19:19:52 +0000
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2007-07-16 19:19:52 +0000
commitae97e3f4b15b180fe0d1bcc4257103c3ad116f83 (patch)
tree6150b02237e5b668b36743d296df0cf799347b55 /paludis/repositories/e
parent4efa00282a8282be189bcda866a8fad9c448a407 (diff)
downloadpaludis-ae97e3f4b15b180fe0d1bcc4257103c3ad116f83.tar.gz
paludis-ae97e3f4b15b180fe0d1bcc4257103c3ad116f83.tar.xz
Smarter mask reasons code. Fixes: ticket:317
Diffstat (limited to 'paludis/repositories/e')
-rw-r--r--paludis/repositories/e/Makefile.am84
-rw-r--r--paludis/repositories/e/e_mask.cc154
-rw-r--r--paludis/repositories/e/e_mask.hh70
-rw-r--r--paludis/repositories/e/e_repository.cc11
-rw-r--r--paludis/repositories/e/e_repository.hh11
-rw-r--r--paludis/repositories/e/e_repository_TEST.cc12
-rw-r--r--paludis/repositories/e/e_repository_news.cc1
-rw-r--r--paludis/repositories/e/e_repository_profile.cc1
-rw-r--r--paludis/repositories/e/ebuild.cc1
-rw-r--r--paludis/repositories/e/ebuild_id.cc117
-rw-r--r--paludis/repositories/e/ebuild_id.hh1
-rw-r--r--paludis/repositories/e/vdb_id.cc5
-rw-r--r--paludis/repositories/e/vdb_id.hh1
-rw-r--r--paludis/repositories/e/vdb_repository.cc1
14 files changed, 403 insertions, 67 deletions
diff --git a/paludis/repositories/e/Makefile.am b/paludis/repositories/e/Makefile.am
index fb4313a29..3063367f3 100644
--- a/paludis/repositories/e/Makefile.am
+++ b/paludis/repositories/e/Makefile.am
@@ -31,73 +31,75 @@ paludis_repositories_e_includedir = $(includedir)/paludis-$(PALUDIS_PC_SLOT)/pal
libpaludiserepository_la_LDFLAGS = -version-info @VERSION_LIB_CURRENT@:@VERSION_LIB_REVISION@:0
paludis_repositories_e_include_HEADERS = \
- ebuild.hh \
- ebuild-sr.hh \
- ebin.hh \
- ebin-se.hh \
- ebin-sr.hh \
- glsa.hh \
- glsa-sr.hh \
+ e_key.hh \
+ e_mask.hh \
e_repository.hh \
- e_repository_profile_file.hh \
- e_repository_profile.hh \
+ e_repository_entries.hh \
e_repository_exceptions.hh \
e_repository_news.hh \
- e_repository_params.hh \
e_repository_params-sr.hh \
+ e_repository_params.hh \
+ e_repository_profile.hh \
+ e_repository_profile_file.hh \
e_repository_sets.hh \
- e_repository_entries.hh \
- ebuild_entries.hh \
+ eapi_phase.hh \
+ ebin-se.hh \
+ ebin-sr.hh \
+ ebin.hh \
ebin_entries.hh \
+ ebuild-sr.hh \
+ ebuild.hh \
+ ebuild_entries.hh \
ebuild_flat_metadata_cache.hh \
+ ebuild_id.hh \
eclass_mtimes.hh \
- make_ebuild_repository.hh \
+ exheres_layout.hh \
+ glsa-sr.hh \
+ glsa.hh \
+ layout.hh \
make_ebin_repository.hh \
+ make_ebuild_repository.hh \
+ traditional_layout.hh \
use_desc.hh \
- vdb_repository.hh \
- vdb_repository-sr.hh \
+ vdb_id.hh \
vdb_merger-sr.hh \
vdb_merger.hh \
+ vdb_repository-sr.hh \
+ vdb_repository.hh \
vdb_unmerger-sr.hh \
- vdb_unmerger.hh \
- layout.hh \
- traditional_layout.hh \
- exheres_layout.hh \
- eapi_phase.hh \
- ebuild_id.hh \
- vdb_id.hh \
- e_key.hh
+ vdb_unmerger.hh
libpaludiserepository_la_SOURCES = \
- ebuild.cc \
- ebin.cc \
- glsa.cc \
+ e_key.cc \
+ e_mask.cc \
e_repository.cc \
- e_repository_profile_file.cc \
- e_repository_profile.cc \
+ e_repository_entries.cc \
e_repository_exceptions.cc \
e_repository_news.cc \
+ e_repository_params.cc \
+ e_repository_profile.cc \
+ e_repository_profile_file.cc \
e_repository_sets.cc \
- e_repository_entries.cc \
- ebuild_entries.cc \
+ eapi_phase.cc \
+ ebin.cc \
ebin_entries.cc \
+ ebuild.cc \
+ ebuild_entries.cc \
ebuild_flat_metadata_cache.cc \
+ ebuild_id.cc \
eclass_mtimes.cc \
- e_repository_params.cc \
- make_ebuild_repository.cc \
+ exheres_layout.cc \
+ glsa.cc \
+ layout.cc \
make_ebin_repository.cc \
- use_desc.cc \
+ make_ebuild_repository.cc \
registration.cc \
- vdb_repository.cc \
- vdb_merger.cc \
- vdb_unmerger.cc \
- layout.cc \
traditional_layout.cc \
- exheres_layout.cc \
- eapi_phase.cc \
- ebuild_id.cc \
+ use_desc.cc \
vdb_id.cc \
- e_key.cc \
+ vdb_merger.cc \
+ vdb_repository.cc \
+ vdb_unmerger.cc \
$(paludis_repositories_e_include_HEADERS)
if ENABLE_QA
diff --git a/paludis/repositories/e/e_mask.cc b/paludis/repositories/e/e_mask.cc
new file mode 100644
index 000000000..16fcd148a
--- /dev/null
+++ b/paludis/repositories/e/e_mask.cc
@@ -0,0 +1,154 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2007 Ciaran McCreesh <ciaranm@ciaranm.org>
+ *
+ * This file is part of the Paludis package manager. Paludis is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU General
+ * Public License version 2, as published by the Free Software Foundation.
+ *
+ * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <paludis/repositories/e/e_mask.hh>
+#include <paludis/util/private_implementation_pattern-impl.hh>
+
+using namespace paludis;
+using namespace paludis::erepository;
+
+namespace paludis
+{
+ template <>
+ struct Implementation<EUnacceptedMask>
+ {
+ const char key;
+ const std::string description;
+ const tr1::shared_ptr<const MetadataKey> unaccepted_key;
+
+ Implementation(const char k, const std::string & d, const tr1::shared_ptr<const MetadataKey> & u) :
+ key(k),
+ description(d),
+ unaccepted_key(u)
+ {
+ }
+ };
+}
+
+EUnacceptedMask::EUnacceptedMask(const char k, const std::string & d, const tr1::shared_ptr<const MetadataKey> & u) :
+ PrivateImplementationPattern<EUnacceptedMask>(new Implementation<EUnacceptedMask>(k, d, u))
+{
+}
+
+EUnacceptedMask::~EUnacceptedMask()
+{
+}
+
+const char
+EUnacceptedMask::key() const
+{
+ return _imp->key;
+}
+
+const std::string
+EUnacceptedMask::description() const
+{
+ return _imp->description;
+}
+
+const tr1::shared_ptr<const MetadataKey>
+EUnacceptedMask::unaccepted_key() const
+{
+ return _imp->unaccepted_key;
+}
+
+namespace paludis
+{
+ template <>
+ struct Implementation<EUnsupportedMask>
+ {
+ const char key;
+ const std::string description;
+ const std::string eapi_name;
+
+ Implementation(const char k, const std::string & d, const std::string & n) :
+ key(k),
+ description(d),
+ eapi_name(n)
+ {
+ }
+ };
+}
+
+EUnsupportedMask::EUnsupportedMask(const char k, const std::string & d, const std::string & n) :
+ PrivateImplementationPattern<EUnsupportedMask>(new Implementation<EUnsupportedMask>(k, d, n))
+{
+}
+
+EUnsupportedMask::~EUnsupportedMask()
+{
+}
+
+const char
+EUnsupportedMask::key() const
+{
+ return _imp->key;
+}
+
+const std::string
+EUnsupportedMask::description() const
+{
+ return _imp->description;
+}
+
+const std::string
+EUnsupportedMask::explanation() const
+{
+ if (_imp->eapi_name == "UNKNOWN")
+ return "Unsupported EAPI 'UNKNOWN' (likely a broken package or configuration error)";
+ return "Unsupported EAPI '" + _imp->eapi_name + "'";
+}
+
+namespace paludis
+{
+ template <>
+ struct Implementation<ERepositoryMask>
+ {
+ const char key;
+ const std::string description;
+
+ Implementation(const char k, const std::string & d) :
+ key(k),
+ description(d)
+ {
+ }
+ };
+}
+
+ERepositoryMask::ERepositoryMask(const char k, const std::string & d) :
+ PrivateImplementationPattern<ERepositoryMask>(new Implementation<ERepositoryMask>(k, d))
+{
+}
+
+ERepositoryMask::~ERepositoryMask()
+{
+}
+
+const char
+ERepositoryMask::key() const
+{
+ return _imp->key;
+}
+
+const std::string
+ERepositoryMask::description() const
+{
+ return _imp->description;
+}
+
diff --git a/paludis/repositories/e/e_mask.hh b/paludis/repositories/e/e_mask.hh
new file mode 100644
index 000000000..23bad5eaa
--- /dev/null
+++ b/paludis/repositories/e/e_mask.hh
@@ -0,0 +1,70 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2007 Ciaran McCreesh <ciaranm@ciaranm.org>
+ *
+ * This file is part of the Paludis package manager. Paludis is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU General
+ * Public License version 2, as published by the Free Software Foundation.
+ *
+ * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef PALUDIS_GUARD_PALUDIS_REPOSITORIES_E_E_MASK_HH
+#define PALUDIS_GUARD_PALUDIS_REPOSITORIES_E_E_MASK_HH 1
+
+#include <paludis/mask.hh>
+#include <paludis/util/private_implementation_pattern.hh>
+
+namespace paludis
+{
+ namespace erepository
+ {
+ class EUnacceptedMask :
+ public UnacceptedMask,
+ private PrivateImplementationPattern<EUnacceptedMask>
+ {
+ public:
+ EUnacceptedMask(const char, const std::string &, const tr1::shared_ptr<const MetadataKey> &);
+ ~EUnacceptedMask();
+
+ const char key() const;
+ const std::string description() const;
+ const tr1::shared_ptr<const MetadataKey> unaccepted_key() const;
+ };
+
+ class EUnsupportedMask :
+ public UnsupportedMask,
+ private PrivateImplementationPattern<EUnsupportedMask>
+ {
+ public:
+ EUnsupportedMask(const char, const std::string &, const std::string &);
+ ~EUnsupportedMask();
+
+ virtual const char key() const;
+ virtual const std::string description() const;
+ virtual const std::string explanation() const;
+ };
+
+ class ERepositoryMask :
+ public RepositoryMask,
+ private PrivateImplementationPattern<ERepositoryMask>
+ {
+ public:
+ ERepositoryMask(const char, const std::string &);
+ ~ERepositoryMask();
+
+ const char key() const;
+ const std::string description() const;
+ };
+ }
+}
+
+#endif
diff --git a/paludis/repositories/e/e_repository.cc b/paludis/repositories/e/e_repository.cc
index 0b5dc7f77..9aa3eb074 100644
--- a/paludis/repositories/e/e_repository.cc
+++ b/paludis/repositories/e/e_repository.cc
@@ -51,6 +51,7 @@
#include <paludis/util/iterator.hh>
#include <paludis/util/log.hh>
#include <paludis/util/random.hh>
+#include <paludis/util/options.hh>
#include <paludis/util/make_shared_ptr.hh>
#include <paludis/util/stringify.hh>
#include <paludis/util/tokeniser.hh>
@@ -250,7 +251,6 @@ namespace
ERepository::ERepository(const ERepositoryParams & p) :
Repository(fetch_repo_name(p.location),
RepositoryCapabilities::create()
- .mask_interface(this)
.installed_interface(0)
.sets_interface(this)
.syncable_interface(this)
@@ -341,7 +341,7 @@ ERepository::do_package_ids(const QualifiedPackageName & n) const
}
bool
-ERepository::do_query_repository_masks(const PackageID & id) const
+ERepository::repository_masked(const PackageID & id) const
{
if (! _imp->has_repo_mask)
{
@@ -394,13 +394,6 @@ ERepository::do_query_repository_masks(const PackageID & id) const
return false;
}
-bool
-ERepository::do_query_profile_masks(const PackageID & id) const
-{
- _imp->need_profiles();
- return _imp->profile_ptr->profile_masked(id);
-}
-
UseFlagState
ERepository::do_query_use(const UseFlagName & f, const PackageID & e) const
{
diff --git a/paludis/repositories/e/e_repository.hh b/paludis/repositories/e/e_repository.hh
index ed8b9aba1..393ad7893 100644
--- a/paludis/repositories/e/e_repository.hh
+++ b/paludis/repositories/e/e_repository.hh
@@ -50,7 +50,6 @@ namespace paludis
*/
class PALUDIS_VISIBLE ERepository :
public Repository,
- public RepositoryMaskInterface,
public RepositoryUseInterface,
public RepositorySyncableInterface,
public RepositorySetsInterface,
@@ -84,14 +83,6 @@ namespace paludis
virtual bool do_sync() const;
- /* RepositoryMaskInterface */
-
- virtual bool do_query_repository_masks(const PackageID &) const
- PALUDIS_ATTRIBUTE((warn_unused_result));
-
- virtual bool do_query_profile_masks(const PackageID &) const
- PALUDIS_ATTRIBUTE((warn_unused_result));
-
/* RepositoryUseInterface */
virtual UseFlagState do_query_use(const UseFlagName &, const PackageID &) const
@@ -232,6 +223,8 @@ namespace paludis
const tr1::shared_ptr<const ERepositoryEntries> entries() const;
const tr1::shared_ptr<const ERepositoryProfile> profile() const;
+ bool repository_masked(const PackageID &) const;
+
void regenerate_cache() const;
};
}
diff --git a/paludis/repositories/e/e_repository_TEST.cc b/paludis/repositories/e/e_repository_TEST.cc
index 62bf3ae59..42f3e29e5 100644
--- a/paludis/repositories/e/e_repository_TEST.cc
+++ b/paludis/repositories/e/e_repository_TEST.cc
@@ -652,12 +652,12 @@ namespace test_cases
{
TestMessageSuffix pass_suffix(stringify(pass), true);
- TEST_CHECK(repo->query_profile_masks(**env.package_database()->query(query::Matches(PackageDepSpec(
- "=cat/masked-0", pds_pm_unspecific)), qo_require_exactly_one)->begin()));
- TEST_CHECK(! repo->query_profile_masks(**env.package_database()->query(query::Matches(PackageDepSpec(
- "=cat/not_masked-0", pds_pm_unspecific)), qo_require_exactly_one)->begin()));
- TEST_CHECK(! repo->query_profile_masks(**env.package_database()->query(query::Matches(PackageDepSpec(
- "=cat/was_masked-0", pds_pm_unspecific)), qo_require_exactly_one)->begin()));
+ TEST_CHECK((*env.package_database()->query(query::Matches(PackageDepSpec("=cat/masked-0", pds_pm_unspecific)),
+ qo_require_exactly_one)->begin())->masked());
+ TEST_CHECK((*env.package_database()->query(query::Matches(PackageDepSpec("=cat/was_masked-0", pds_pm_unspecific)),
+ qo_require_exactly_one)->begin())->masked());
+ TEST_CHECK((*env.package_database()->query(query::Matches(PackageDepSpec("=cat/not_masked-0", pds_pm_unspecific)),
+ qo_require_exactly_one)->begin())->masked());
}
}
} test_e_repository_query_profile_masks;
diff --git a/paludis/repositories/e/e_repository_news.cc b/paludis/repositories/e/e_repository_news.cc
index 5009d3e00..ab09ecb94 100644
--- a/paludis/repositories/e/e_repository_news.cc
+++ b/paludis/repositories/e/e_repository_news.cc
@@ -28,6 +28,7 @@
#include <paludis/util/strip.hh>
#include <paludis/util/private_implementation_pattern-impl.hh>
#include <paludis/util/sequence.hh>
+#include <paludis/util/options.hh>
#include <paludis/query.hh>
#include <libwrapiter/libwrapiter_forward_iterator.hh>
diff --git a/paludis/repositories/e/e_repository_profile.cc b/paludis/repositories/e/e_repository_profile.cc
index 17ed4b097..c9718096a 100644
--- a/paludis/repositories/e/e_repository_profile.cc
+++ b/paludis/repositories/e/e_repository_profile.cc
@@ -30,6 +30,7 @@
#include <paludis/util/join.hh>
#include <paludis/util/sequence.hh>
#include <paludis/util/set.hh>
+#include <paludis/util/options.hh>
#include <paludis/config_file.hh>
#include <paludis/dep_tag.hh>
#include <paludis/eapi.hh>
diff --git a/paludis/repositories/e/ebuild.cc b/paludis/repositories/e/ebuild.cc
index 2dbb6bc94..bc72d57e2 100644
--- a/paludis/repositories/e/ebuild.cc
+++ b/paludis/repositories/e/ebuild.cc
@@ -26,6 +26,7 @@
#include <paludis/util/pstream.hh>
#include <paludis/util/log.hh>
#include <paludis/util/sequence.hh>
+#include <paludis/util/options.hh>
#include <paludis/util/map.hh>
#include <paludis/about.hh>
diff --git a/paludis/repositories/e/ebuild_id.cc b/paludis/repositories/e/ebuild_id.cc
index 74ee63222..be089f8f2 100644
--- a/paludis/repositories/e/ebuild_id.cc
+++ b/paludis/repositories/e/ebuild_id.cc
@@ -24,6 +24,7 @@
#include <paludis/repositories/e/e_repository_entries.hh>
#include <paludis/repositories/e/eapi_phase.hh>
#include <paludis/repositories/e/e_key.hh>
+#include <paludis/repositories/e/e_mask.hh>
#include <paludis/name.hh>
#include <paludis/version_spec.hh>
@@ -39,6 +40,8 @@
#include <paludis/util/private_implementation_pattern-impl.hh>
#include <paludis/util/idle_action_pool.hh>
#include <paludis/util/visitor-impl.hh>
+#include <paludis/util/make_shared_ptr.hh>
+#include <paludis/util/save.hh>
#include <libwrapiter/libwrapiter_forward_iterator.hh>
@@ -77,6 +80,7 @@ namespace paludis
const time_t master_mtime;
const tr1::shared_ptr<const EclassMtimes> eclass_mtimes;
mutable bool has_keys;
+ mutable bool has_masks;
mutable tr1::shared_ptr<const EStringKey> short_description;
mutable tr1::shared_ptr<const EDependenciesKey> build_dependencies;
@@ -103,7 +107,8 @@ namespace paludis
guessed_eapi(g),
master_mtime(t),
eclass_mtimes(m),
- has_keys(false)
+ has_keys(false),
+ has_masks(false)
{
}
};
@@ -249,6 +254,116 @@ EbuildID::need_keys_added() const
}
}
+namespace
+{
+ struct LicenceChecker :
+ ConstVisitor<LicenseSpecTree>,
+ ConstVisitor<LicenseSpecTree>::VisitConstSequence<LicenceChecker, AllDepSpec>
+ {
+ using ConstVisitor<LicenseSpecTree>::VisitConstSequence<LicenceChecker, AllDepSpec>::visit_sequence;
+
+ bool ok;
+ const Environment * const env;
+ bool (Environment::* const func) (const std::string &, const PackageID &) const;
+ const PackageID * const id;
+
+ LicenceChecker(const Environment * const e,
+ bool (Environment::* const f) (const std::string &, const PackageID &) const,
+ const PackageID * const d) :
+ ok(true),
+ env(e),
+ func(f),
+ id(d)
+ {
+ }
+
+ void visit_sequence(const AnyDepSpec &,
+ LicenseSpecTree::ConstSequenceIterator begin,
+ LicenseSpecTree::ConstSequenceIterator end)
+ {
+ bool local_ok(false);
+
+ if (begin == end)
+ local_ok = true;
+ else
+ {
+ for ( ; begin != end ; ++begin)
+ {
+ Save<bool> save_ok(&ok, true);
+ begin->accept(*this);
+ local_ok |= ok;
+ }
+ }
+
+ ok &= local_ok;
+ }
+
+ void visit_sequence(const UseDepSpec & spec,
+ LicenseSpecTree::ConstSequenceIterator begin,
+ LicenseSpecTree::ConstSequenceIterator end)
+ {
+ if (env->query_use(spec.flag(), *id))
+ std::for_each(begin, end, accept_visitor(*this));
+ }
+
+ void visit_leaf(const PlainTextDepSpec & spec)
+ {
+ if (! (env->*func)(spec.text(), *id))
+ ok = false;
+ }
+ };
+}
+
+void
+EbuildID::need_masks_added() const
+{
+ if (_imp->has_masks)
+ return;
+
+ _imp->has_masks = true;
+
+ Context context("When generating masks for ID '" + canonical_form(idcf_full) + "':");
+
+ if (! eapi()->supported)
+ {
+ add_mask(make_shared_ptr(new EUnsupportedMask('E', "eapi", eapi()->name)));
+ return;
+ }
+
+ if (keywords_key())
+ if (! _imp->environment->accept_keywords(keywords_key()->value(), *this))
+ add_mask(make_shared_ptr(new EUnacceptedMask('K', "keywords", keywords_key())));
+
+ if (license_key())
+ {
+ LicenceChecker c(_imp->environment, &Environment::accept_license, this);
+ license_key()->value()->accept(c);
+ if (! c.ok)
+ add_mask(make_shared_ptr(new EUnacceptedMask('L', "license", license_key())));
+ }
+
+ if (! _imp->environment->unmasked_by_user(*this))
+ {
+ /* repo unless user */
+ if (tr1::static_pointer_cast<const ERepository>(repository())->repository_masked(*this))
+ add_mask(make_shared_ptr(new ERepositoryMask('R', "repository")));
+
+ /* profile unless user */
+ if (tr1::static_pointer_cast<const ERepository>(repository())->profile()->profile_masked(*this))
+ add_mask(make_shared_ptr(new ERepositoryMask('P', "profile")));
+
+ /* user */
+ tr1::shared_ptr<const Mask> user_mask(_imp->environment->mask_for_user(*this));
+ if (user_mask)
+ add_mask(user_mask);
+ }
+
+ /* break portage */
+ tr1::shared_ptr<const Mask> breaks_mask(_imp->environment->mask_for_breakage(*this));
+ if (breaks_mask)
+ add_mask(breaks_mask);
+}
+
const std::string
EbuildID::canonical_form(const PackageIDCanonicalForm f) const
{
diff --git a/paludis/repositories/e/ebuild_id.hh b/paludis/repositories/e/ebuild_id.hh
index cafe338e2..f54a8f2ab 100644
--- a/paludis/repositories/e/ebuild_id.hh
+++ b/paludis/repositories/e/ebuild_id.hh
@@ -42,6 +42,7 @@ namespace paludis
protected:
virtual void need_keys_added() const;
+ virtual void need_masks_added() const;
public:
EbuildID(const QualifiedPackageName &, const VersionSpec &,
diff --git a/paludis/repositories/e/vdb_id.cc b/paludis/repositories/e/vdb_id.cc
index e199d857d..097b4975a 100644
--- a/paludis/repositories/e/vdb_id.cc
+++ b/paludis/repositories/e/vdb_id.cc
@@ -321,6 +321,11 @@ VDBID::need_keys_added() const
}
}
+void
+VDBID::need_masks_added() const
+{
+}
+
const std::string
VDBID::canonical_form(const PackageIDCanonicalForm f) const
{
diff --git a/paludis/repositories/e/vdb_id.hh b/paludis/repositories/e/vdb_id.hh
index a0c46b6bf..52a6a639a 100644
--- a/paludis/repositories/e/vdb_id.hh
+++ b/paludis/repositories/e/vdb_id.hh
@@ -39,6 +39,7 @@ namespace paludis
protected:
virtual void need_keys_added() const;
+ virtual void need_masks_added() const;
public:
VDBID(const QualifiedPackageName &, const VersionSpec &,
diff --git a/paludis/repositories/e/vdb_repository.cc b/paludis/repositories/e/vdb_repository.cc
index b7837da09..3fdc07fc6 100644
--- a/paludis/repositories/e/vdb_repository.cc
+++ b/paludis/repositories/e/vdb_repository.cc
@@ -127,7 +127,6 @@ VDBRepository::VDBRepository(const VDBRepositoryParams & p) :
Repository(RepositoryName("installed"),
RepositoryCapabilities::create()
.installed_interface(this)
- .mask_interface(0)
.sets_interface(this)
.syncable_interface(0)
.use_interface(this)