[paludis-commits] r4568 - in trunk: . paludis/repositories/e

ciaranm at svn.pioto.org ciaranm at svn.pioto.org
Wed Apr 16 06:54:18 UTC 2008


Author: ciaranm
Date: 2008-04-16 06:54:17 +0000 (Wed, 16 Apr 2008)
New Revision: 4568

Modified:
   trunk/ChangeLog
   trunk/NEWS
   trunk/paludis/repositories/e/e_repository_profile_file.cc
Log:
Don't QA for failed lines in profiles if that line would have succeeded at any previous point.


Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-04-15 18:35:12 UTC (rev 4567)
+++ trunk/ChangeLog	2008-04-16 06:54:17 UTC (rev 4568)
@@ -5,6 +5,11 @@
 only listed in SVN log. For a summary of what has changed between releases,
 see the NEWS file. This file is occasionally pruned to ChangeLog.old.bz2.
 
+2008-04-16 Ciaran McCreesh
+
+	* paludis/repositories/e/: Don't QA for failed -lines in profiles if
+	that line would have succeeded at any previous point.
+
 2008-04-15 David Leverton
 
 	* paludis/, doc/configuration/: Support ?: lines in sets.

Modified: trunk/NEWS
===================================================================
--- trunk/NEWS	2008-04-15 18:35:12 UTC (rev 4567)
+++ trunk/NEWS	2008-04-16 06:54:17 UTC (rev 4568)
@@ -4,7 +4,7 @@
 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 @@
     * 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

Modified: trunk/paludis/repositories/e/e_repository_profile_file.cc
===================================================================
--- trunk/paludis/repositories/e/e_repository_profile_file.cc	2008-04-15 18:35:12 UTC (rev 4567)
+++ trunk/paludis/repositories/e/e_repository_profile_file.cc	2008-04-16 06:54:17 UTC (rev 4568)
@@ -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 @@
         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 @@
                 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);



More information about the paludis-commits mailing list