diff options
33 files changed, 140 insertions, 8 deletions
diff --git a/paludis/repositories/accounts/accounts_repository.cc b/paludis/repositories/accounts/accounts_repository.cc index bb4bad794..d20f044fa 100644 --- a/paludis/repositories/accounts/accounts_repository.cc +++ b/paludis/repositories/accounts/accounts_repository.cc @@ -395,6 +395,12 @@ AccountsRepository::some_ids_might_support_action(const SupportsActionTestBase & } bool +AccountsRepository::some_ids_might_not_be_masked() const +{ + return true; +} + +bool AccountsRepository::is_suitable_destination_for(const PackageID & id) const { std::string f(id.repository()->format_key() ? id.repository()->format_key()->value() : ""); diff --git a/paludis/repositories/accounts/accounts_repository.hh b/paludis/repositories/accounts/accounts_repository.hh index 9ddedcba9..f6c13086d 100644 --- a/paludis/repositories/accounts/accounts_repository.hh +++ b/paludis/repositories/accounts/accounts_repository.hh @@ -131,6 +131,7 @@ namespace paludis const CategoryNamePart & c) const; virtual std::tr1::shared_ptr<const PackageIDSequence> package_ids(const QualifiedPackageName & p) const; virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; ///\} diff --git a/paludis/repositories/cran/cran_installed_repository.cc b/paludis/repositories/cran/cran_installed_repository.cc index 0c641d05f..98ae4a587 100644 --- a/paludis/repositories/cran/cran_installed_repository.cc +++ b/paludis/repositories/cran/cran_installed_repository.cc @@ -539,6 +539,12 @@ CRANInstalledRepository::some_ids_might_support_action(const SupportsActionTestB return a.accept_returning<bool>(q); } +bool +CRANInstalledRepository::some_ids_might_not_be_masked() const +{ + return true; +} + void CRANInstalledRepository::need_ids() const { diff --git a/paludis/repositories/cran/cran_installed_repository.hh b/paludis/repositories/cran/cran_installed_repository.hh index 1b47088f1..9b83da009 100644 --- a/paludis/repositories/cran/cran_installed_repository.hh +++ b/paludis/repositories/cran/cran_installed_repository.hh @@ -144,6 +144,8 @@ namespace paludis virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; + virtual bool sync(const std::tr1::shared_ptr<OutputManager> &) const; /* Keys */ diff --git a/paludis/repositories/cran/cran_repository.cc b/paludis/repositories/cran/cran_repository.cc index caaa08f10..238cd861f 100644 --- a/paludis/repositories/cran/cran_repository.cc +++ b/paludis/repositories/cran/cran_repository.cc @@ -523,6 +523,12 @@ CRANRepository::some_ids_might_support_action(const SupportsActionTestBase & a) return a.accept_returning<bool>(q); } +bool +CRANRepository::some_ids_might_not_be_masked() const +{ + return true; +} + void CRANRepository::need_keys_added() const { diff --git a/paludis/repositories/cran/cran_repository.hh b/paludis/repositories/cran/cran_repository.hh index 2c722f124..91c50242f 100644 --- a/paludis/repositories/cran/cran_repository.hh +++ b/paludis/repositories/cran/cran_repository.hh @@ -151,6 +151,8 @@ namespace paludis virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; + /* Keys */ virtual const std::tr1::shared_ptr<const MetadataValueKey<std::string> > format_key() const; diff --git a/paludis/repositories/e/e_installed_repository.cc b/paludis/repositories/e/e_installed_repository.cc index f3f8b8b46..f0701a436 100644 --- a/paludis/repositories/e/e_installed_repository.cc +++ b/paludis/repositories/e/e_installed_repository.cc @@ -132,6 +132,12 @@ EInstalledRepository::some_ids_might_support_action(const SupportsActionTestBase } bool +EInstalledRepository::some_ids_might_not_be_masked() const +{ + return true; +} + +bool EInstalledRepository::is_suitable_destination_for(const PackageID & e) const { std::string f(e.repository()->format_key() ? e.repository()->format_key()->value() : ""); diff --git a/paludis/repositories/e/e_installed_repository.hh b/paludis/repositories/e/e_installed_repository.hh index e55a1fa88..a3d957a47 100644 --- a/paludis/repositories/e/e_installed_repository.hh +++ b/paludis/repositories/e/e_installed_repository.hh @@ -81,6 +81,8 @@ namespace paludis virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; + HookResult perform_hook(const Hook & hook) PALUDIS_ATTRIBUTE((warn_unused_result)); diff --git a/paludis/repositories/e/e_repository.cc b/paludis/repositories/e/e_repository.cc index 94bc2bc20..eefbec92e 100644 --- a/paludis/repositories/e/e_repository.cc +++ b/paludis/repositories/e/e_repository.cc @@ -1061,6 +1061,12 @@ ERepository::some_ids_might_support_action(const SupportsActionTestBase & a) con return a.accept_returning<bool>(q); } +bool +ERepository::some_ids_might_not_be_masked() const +{ + return true; +} + void ERepository::make_manifest(const QualifiedPackageName & qpn) { diff --git a/paludis/repositories/e/e_repository.hh b/paludis/repositories/e/e_repository.hh index 4310e51b7..949be118c 100644 --- a/paludis/repositories/e/e_repository.hh +++ b/paludis/repositories/e/e_repository.hh @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2005, 2006, 2007, 2008, 2009 Ciaran McCreesh + * Copyright (c) 2005, 2006, 2007, 2008, 2009, 2010 Ciaran McCreesh * * 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 @@ -142,6 +142,8 @@ namespace paludis virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; + const erepository::ERepositoryParams & params() const; std::string profile_variable(const std::string &) const; diff --git a/paludis/repositories/fake/fake_installed_repository.cc b/paludis/repositories/fake/fake_installed_repository.cc index 0a438b0dc..3c2b18022 100644 --- a/paludis/repositories/fake/fake_installed_repository.cc +++ b/paludis/repositories/fake/fake_installed_repository.cc @@ -192,6 +192,12 @@ FakeInstalledRepository::some_ids_might_support_action(const SupportsActionTestB return a.accept_returning<bool>(q); } +bool +FakeInstalledRepository::some_ids_might_not_be_masked() const +{ + return true; +} + const bool FakeInstalledRepository::is_unimportant() const { diff --git a/paludis/repositories/fake/fake_installed_repository.hh b/paludis/repositories/fake/fake_installed_repository.hh index 10ac023f1..afaa3dc2d 100644 --- a/paludis/repositories/fake/fake_installed_repository.hh +++ b/paludis/repositories/fake/fake_installed_repository.hh @@ -88,6 +88,8 @@ namespace paludis virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; + virtual const bool is_unimportant() const; /* Keys */ diff --git a/paludis/repositories/fake/fake_repository.cc b/paludis/repositories/fake/fake_repository.cc index 19b188423..79cf0d3f7 100644 --- a/paludis/repositories/fake/fake_repository.cc +++ b/paludis/repositories/fake/fake_repository.cc @@ -140,6 +140,12 @@ FakeRepository::some_ids_might_support_action(const SupportsActionTestBase & a) return a.accept_returning<bool>(q); } +bool +FakeRepository::some_ids_might_not_be_masked() const +{ + return true; +} + const bool FakeRepository::is_unimportant() const { diff --git a/paludis/repositories/fake/fake_repository.hh b/paludis/repositories/fake/fake_repository.hh index 884e183eb..245c99fcc 100644 --- a/paludis/repositories/fake/fake_repository.hh +++ b/paludis/repositories/fake/fake_repository.hh @@ -81,6 +81,8 @@ namespace paludis virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; + virtual const bool is_unimportant() const; /* Keys */ diff --git a/paludis/repositories/gems/gems_repository.cc b/paludis/repositories/gems/gems_repository.cc index 0e629acef..fb3186620 100644 --- a/paludis/repositories/gems/gems_repository.cc +++ b/paludis/repositories/gems/gems_repository.cc @@ -325,6 +325,12 @@ GemsRepository::some_ids_might_support_action(const SupportsActionTestBase & a) return a.accept_returning<bool>(q); } +bool +GemsRepository::some_ids_might_not_be_masked() const +{ + return true; +} + const bool GemsRepository::is_unimportant() const { diff --git a/paludis/repositories/gems/gems_repository.hh b/paludis/repositories/gems/gems_repository.hh index 92bf5d573..1cdcd6350 100644 --- a/paludis/repositories/gems/gems_repository.hh +++ b/paludis/repositories/gems/gems_repository.hh @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2007, 2008, 2009 Ciaran McCreesh + * Copyright (c) 2007, 2008, 2009, 2010 Ciaran McCreesh * * 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 @@ -84,6 +84,8 @@ namespace paludis virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; + virtual const bool is_unimportant() const; virtual bool sync(const std::tr1::shared_ptr<OutputManager> &) const; diff --git a/paludis/repositories/gems/installed_gems_repository.cc b/paludis/repositories/gems/installed_gems_repository.cc index ec361e08e..d83830875 100644 --- a/paludis/repositories/gems/installed_gems_repository.cc +++ b/paludis/repositories/gems/installed_gems_repository.cc @@ -348,6 +348,12 @@ InstalledGemsRepository::some_ids_might_support_action(const SupportsActionTestB return a.accept_returning<bool>(q); } +bool +InstalledGemsRepository::some_ids_might_not_be_masked() const +{ + return true; +} + const bool InstalledGemsRepository::is_unimportant() const { diff --git a/paludis/repositories/gems/installed_gems_repository.hh b/paludis/repositories/gems/installed_gems_repository.hh index 8bc437ab9..434d0b916 100644 --- a/paludis/repositories/gems/installed_gems_repository.hh +++ b/paludis/repositories/gems/installed_gems_repository.hh @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2007, 2008, 2009 Ciaran McCreesh + * Copyright (c) 2007, 2008, 2009, 2010 Ciaran McCreesh * * 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 @@ -99,6 +99,8 @@ namespace paludis virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; + virtual const bool is_unimportant() const; virtual bool sync(const std::tr1::shared_ptr<OutputManager> &) const; diff --git a/paludis/repositories/repository/repository_repository.cc b/paludis/repositories/repository/repository_repository.cc index c29a41ee8..263a8d096 100644 --- a/paludis/repositories/repository/repository_repository.cc +++ b/paludis/repositories/repository/repository_repository.cc @@ -256,6 +256,12 @@ RepositoryRepository::some_ids_might_support_action(const SupportsActionTestBase } bool +RepositoryRepository::some_ids_might_not_be_masked() const +{ + return true; +} + +bool RepositoryRepository::sync(const std::tr1::shared_ptr<OutputManager> &) const { return false; diff --git a/paludis/repositories/repository/repository_repository.hh b/paludis/repositories/repository/repository_repository.hh index f7edf92f4..e4ea39625 100644 --- a/paludis/repositories/repository/repository_repository.hh +++ b/paludis/repositories/repository/repository_repository.hh @@ -93,6 +93,7 @@ namespace paludis virtual std::tr1::shared_ptr<const PackageIDSequence> package_ids(const QualifiedPackageName & p) const; virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; virtual void invalidate(); virtual void invalidate_masks(); diff --git a/paludis/repositories/unavailable/unavailable_repository.cc b/paludis/repositories/unavailable/unavailable_repository.cc index dbdbffdb5..f420edbe2 100644 --- a/paludis/repositories/unavailable/unavailable_repository.cc +++ b/paludis/repositories/unavailable/unavailable_repository.cc @@ -254,6 +254,12 @@ UnavailableRepository::some_ids_might_support_action(const SupportsActionTestBas } bool +UnavailableRepository::some_ids_might_not_be_masked() const +{ + return false; +} + +bool UnavailableRepository::sync(const std::tr1::shared_ptr<OutputManager> & output_manager) const { Context context("When syncing repository '" + stringify(name()) + "':"); diff --git a/paludis/repositories/unavailable/unavailable_repository.hh b/paludis/repositories/unavailable/unavailable_repository.hh index d597f3890..d4bf5832a 100644 --- a/paludis/repositories/unavailable/unavailable_repository.hh +++ b/paludis/repositories/unavailable/unavailable_repository.hh @@ -92,6 +92,7 @@ namespace paludis virtual std::tr1::shared_ptr<const PackageIDSequence> package_ids(const QualifiedPackageName & p) const; virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; virtual void invalidate(); virtual void invalidate_masks(); diff --git a/paludis/repositories/unpackaged/installed_repository.cc b/paludis/repositories/unpackaged/installed_repository.cc index 0a5fa9126..d9c733778 100644 --- a/paludis/repositories/unpackaged/installed_repository.cc +++ b/paludis/repositories/unpackaged/installed_repository.cc @@ -215,6 +215,12 @@ InstalledUnpackagedRepository::some_ids_might_support_action(const SupportsActio return test.accept_returning<bool>(v); } +bool +InstalledUnpackagedRepository::some_ids_might_not_be_masked() const +{ + return true; +} + const bool InstalledUnpackagedRepository::is_unimportant() const { diff --git a/paludis/repositories/unpackaged/installed_repository.hh b/paludis/repositories/unpackaged/installed_repository.hh index 292172def..103d82b96 100644 --- a/paludis/repositories/unpackaged/installed_repository.hh +++ b/paludis/repositories/unpackaged/installed_repository.hh @@ -102,6 +102,8 @@ namespace paludis virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; + virtual const bool is_unimportant() const; /* Keys */ diff --git a/paludis/repositories/unpackaged/unpackaged_repository.cc b/paludis/repositories/unpackaged/unpackaged_repository.cc index ae2b0500f..bdfccd9fe 100644 --- a/paludis/repositories/unpackaged/unpackaged_repository.cc +++ b/paludis/repositories/unpackaged/unpackaged_repository.cc @@ -169,6 +169,12 @@ UnpackagedRepository::some_ids_might_support_action(const SupportsActionTestBase return _imp->id->supports_action(test); } +bool +UnpackagedRepository::some_ids_might_not_be_masked() const +{ + return true; +} + const bool UnpackagedRepository::is_unimportant() const { diff --git a/paludis/repositories/unpackaged/unpackaged_repository.hh b/paludis/repositories/unpackaged/unpackaged_repository.hh index 16bae0f34..76e8b63bd 100644 --- a/paludis/repositories/unpackaged/unpackaged_repository.hh +++ b/paludis/repositories/unpackaged/unpackaged_repository.hh @@ -100,6 +100,7 @@ namespace paludis PALUDIS_ATTRIBUTE((warn_unused_result)); virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; virtual const bool is_unimportant() const; diff --git a/paludis/repositories/unwritten/unwritten_repository.cc b/paludis/repositories/unwritten/unwritten_repository.cc index 625d7f72d..e9e4e3ac7 100644 --- a/paludis/repositories/unwritten/unwritten_repository.cc +++ b/paludis/repositories/unwritten/unwritten_repository.cc @@ -254,6 +254,12 @@ UnwrittenRepository::some_ids_might_support_action(const SupportsActionTestBase } bool +UnwrittenRepository::some_ids_might_not_be_masked() const +{ + return false; +} + +bool UnwrittenRepository::sync(const std::tr1::shared_ptr<OutputManager> & output_manager) const { Context context("When syncing repository '" + stringify(name()) + "':"); diff --git a/paludis/repositories/unwritten/unwritten_repository.hh b/paludis/repositories/unwritten/unwritten_repository.hh index 2ff276674..7775f5988 100644 --- a/paludis/repositories/unwritten/unwritten_repository.hh +++ b/paludis/repositories/unwritten/unwritten_repository.hh @@ -91,6 +91,7 @@ namespace paludis virtual std::tr1::shared_ptr<const PackageIDSequence> package_ids(const QualifiedPackageName & p) const; virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; virtual void invalidate(); virtual void invalidate_masks(); diff --git a/paludis/repositories/virtuals/installed_virtuals_repository.cc b/paludis/repositories/virtuals/installed_virtuals_repository.cc index 7fc615f8c..b045bfc4e 100644 --- a/paludis/repositories/virtuals/installed_virtuals_repository.cc +++ b/paludis/repositories/virtuals/installed_virtuals_repository.cc @@ -300,6 +300,12 @@ InstalledVirtualsRepository::some_ids_might_support_action(const SupportsActionT return a.accept_returning<bool>(q); } +bool +InstalledVirtualsRepository::some_ids_might_not_be_masked() const +{ + return true; +} + std::tr1::shared_ptr<const CategoryNamePartSet> InstalledVirtualsRepository::unimportant_category_names() const { diff --git a/paludis/repositories/virtuals/installed_virtuals_repository.hh b/paludis/repositories/virtuals/installed_virtuals_repository.hh index 91776394c..9deae5f05 100644 --- a/paludis/repositories/virtuals/installed_virtuals_repository.hh +++ b/paludis/repositories/virtuals/installed_virtuals_repository.hh @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2006, 2007, 2008, 2009 Ciaran McCreesh + * Copyright (c) 2006, 2007, 2008, 2009, 2010 Ciaran McCreesh * * 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 @@ -108,6 +108,8 @@ namespace paludis virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; + virtual bool sync(const std::tr1::shared_ptr<OutputManager> &) const; /* Keys */ diff --git a/paludis/repositories/virtuals/virtuals_repository.cc b/paludis/repositories/virtuals/virtuals_repository.cc index cb0ce8578..a5bbb366c 100644 --- a/paludis/repositories/virtuals/virtuals_repository.cc +++ b/paludis/repositories/virtuals/virtuals_repository.cc @@ -400,6 +400,12 @@ VirtualsRepository::some_ids_might_support_action(const SupportsActionTestBase & return a.accept_returning<bool>(q); } +bool +VirtualsRepository::some_ids_might_not_be_masked() const +{ + return true; +} + std::tr1::shared_ptr<const CategoryNamePartSet> VirtualsRepository::unimportant_category_names() const { diff --git a/paludis/repositories/virtuals/virtuals_repository.hh b/paludis/repositories/virtuals/virtuals_repository.hh index 2071554d2..d488c99f2 100644 --- a/paludis/repositories/virtuals/virtuals_repository.hh +++ b/paludis/repositories/virtuals/virtuals_repository.hh @@ -1,7 +1,7 @@ /* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* - * Copyright (c) 2006, 2007, 2008, 2009 Ciaran McCreesh + * Copyright (c) 2006, 2007, 2008, 2009, 2010 Ciaran McCreesh * * 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 @@ -105,6 +105,8 @@ namespace paludis virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const; + virtual bool some_ids_might_not_be_masked() const; + virtual bool sync(const std::tr1::shared_ptr<OutputManager> &) const; /* RepositoryMakeVirtualsInterface */ diff --git a/paludis/repository.hh b/paludis/repository.hh index 99900406c..7de545c1a 100644 --- a/paludis/repository.hh +++ b/paludis/repository.hh @@ -379,12 +379,21 @@ namespace paludis /** * Might some of our IDs support a particular action? * - * Used to optimise PackageDatabase::query. If a repository doesn't - * support, say, InstallAction, a query can skip searching it - * entirely when looking for installable packages. + * Used to optimise various Generator and Filter queries. If a + * repository doesn't support, say, InstallAction, a query can skip + * searching it entirely when looking for installable packages. */ virtual bool some_ids_might_support_action(const SupportsActionTestBase &) const = 0; + /** + * Might some of our IDs be not masked? + * + * Used to optimise various Generator and Filter queries. + * + * \since 0.49 + */ + virtual bool some_ids_might_not_be_masked() const = 0; + ///\} ///\name Repository behaviour methods |