aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2008-04-16 06:54:17 +0000
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2008-04-16 06:54:17 +0000
commite20da32820ee62e72e2650dae31660657452b270 (patch)
treea43c6a63487da88c8a1041af41a7510546617a61
parentff95fdf5b134fe748b48e87762b69541be559d26 (diff)
downloadpaludis-e20da32820ee62e72e2650dae31660657452b270.tar.gz
paludis-e20da32820ee62e72e2650dae31660657452b270.tar.xz
Don't QA for failed lines in profiles if that line would have succeeded at any previous point.
-rw-r--r--NEWS5
-rw-r--r--paludis/repositories/e/e_repository_profile_file.cc18
2 files changed, 20 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index bbfe19b..ea06447 100644
--- a/NEWS
+++ b/NEWS
@@ -4,7 +4,7 @@ News for Paludis
This file lists the major changes between versions. For a more detailed list
of every change, see the ChangeLog.
-trunk/:
+0.26.0_pre2:
* paludis now supports ${root} in environment.conf. This can be
used when defining the "world" key, so that the configuration
works when the filesystem is mounted as a chroot as a seperate
@@ -15,6 +15,9 @@ trunk/:
* Sets can now contain ?: entries, which are like ? entries but also
consider the slot part of the dependency specification.
+ * We no longer issue a QA warning for E repository profiles that attempt to
+ remove the same line more than once from a parent profile's files.
+
0.26.0_pre1:
* paludis now rebuilds the VDB names and provides caches
incrementally after each install and uninstall. This can give a
diff --git a/paludis/repositories/e/e_repository_profile_file.cc b/paludis/repositories/e/e_repository_profile_file.cc
index 0be48f9..b3399e0 100644
--- a/paludis/repositories/e/e_repository_profile_file.cc
+++ b/paludis/repositories/e/e_repository_profile_file.cc
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2006, 2007 Ciaran McCreesh
+ * Copyright (c) 2006, 2007, 2008 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
@@ -28,6 +28,7 @@
#include <paludis/util/options.hh>
#include <paludis/mask.hh>
#include <list>
+#include <set>
#include <algorithm>
using namespace paludis;
@@ -82,6 +83,8 @@ namespace paludis
typedef std::list<typename tr1::remove_const<typename tr1::remove_reference<
typename F_::ConstIterator::value_type>::type>::type> Lines;
Lines lines;
+
+ std::set<std::string> removed;
};
}
@@ -105,14 +108,25 @@ ProfileFile<F_>::add_file(const FSEntry & f)
std::find_if(this->_imp->lines.begin(), this->_imp->lines.end(),
MatchesKey<std::string>(key.substr(1))));
if (this->_imp->lines.end() == i)
- Log::get_instance()->message(ll_qa, lc_context, "No match for '" + key + "'");
+ {
+ /* annoying: Gentoo profiles like to remove the same mask entry
+ * more than once, especially when a particular subprofile
+ * section is inherited more than once. Don't warn when this
+ * happens. */
+ if (this->_imp->removed.end() == this->_imp->removed.find(key.substr(1)))
+ Log::get_instance()->message(ll_qa, lc_context, "No match for '" + key + "'. This usually indicates a "
+ "bug in your profile.");
+ }
else
+ {
+ this->_imp->removed.insert(key.substr(1));
while (this->_imp->lines.end() != i)
{
this->_imp->lines.erase(i++);
i = std::find_if(i, this->_imp->lines.end(),
MatchesKey<std::string>(key.substr(1)));
}
+ }
}
else
this->_imp->lines.push_back(*line);