Merged from trunk 6470:6473
authorFabian Groffen <grobian@gentoo.org>
Fri, 4 May 2007 19:21:08 +0000 (19:21 -0000)
committerFabian Groffen <grobian@gentoo.org>
Fri, 4 May 2007 19:21:08 +0000 (19:21 -0000)
   +------------------------------------------------------------------------+
   | 6471     | document the behavior of `ebuild` wrt FEATURES=noauto       |
   | SpankMan | #175444                                                     |
   |----------+-------------------------------------------------------------|
   | 6472     | Remove news about profile masking which has been reverted   |
   | zmedico  | pending resolution of bug #170697. Thanks to Arfrever       |
   |          | Frehtes Taifersar Arahesis in #149508.                      |
   |----------+-------------------------------------------------------------|
   | 6473     | For bug #176765, when a new package is blocked by another   |
   | zmedico  | one that is being replaced, handle another case where the   |
   |          | conflict can be avoided.                                    |
   +------------------------------------------------------------------------+

svn path=/main/branches/prefix/; revision=6475

NEWS
man/ebuild.1
pym/emerge/__init__.py

diff --git a/NEWS b/NEWS
index 48f66e86731e9fbe5352d5eb178959102b27d681..7b253bd5c81753dd071571d0796f8ce0af7f12fb 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,8 +3,6 @@ News (mainly features/major bug fixes)
 portage-2.1.3
 -------------
 
-* Legacy "masked by: profile" support has been removed.  Profiles should use
-  package.mask to mask unwanted versions of system packages.
 * Allow per-module setting of PORTAGE_ELOG_CLASSES
 * Add ** as new token for package.keywords to bypass the keyword visibility layer
 * Namespace sanitizing: move all portage related code into portage.* namespace,
index d271bee1c80668eea9530998c4a116ed9aad240a..740c452daf7bb3fa55a573ae1dff56e60e72b287 100644 (file)
@@ -18,6 +18,13 @@ bzipped tarball package out of the image, and more.
 This must be a valid ebuild script.  For further information read
 \fBebuild\fR(5).
 .SH "COMMANDS"
+By default, portage will execute all the functions in order up to the
+one actually specified.  For example, simply issuing the command \fBcompile\fR
+will trigger the functions before it to also be run (such as \fBsetup\fR
+and \fBunpack\fR).  If you wish to only have the specified command run, then
+you should use the \fInoauto\fR option in the \fBFEATURES\fR environment
+variable.  See the \fBmake.conf\fR(5) man page for more information.
+
 .TP
 .BR help
 Shows a condensed form of this man page along with a lot of package
index 9347b6e9ad4ca475276c70ded685143ca6067d24..cb6d6c257174abe4982e4450332c091a176f1fe0 100644 (file)
@@ -1934,7 +1934,7 @@ class depgraph:
                                                        # this block.
                                                        upgrade_node = \
                                                                self.pkg_node_map[proot][upgrade_matches[0]]
-                                                       depends_on_order.add(upgrade_node)
+                                                       depends_on_order.add((upgrade_node, parent))
                                                        continue
                                        # None of the above blocker resolutions techniques apply,
                                        # so apparently this one is unresolvable.
@@ -1950,13 +1950,27 @@ class depgraph:
                                                # This blocker will be handled the next time that a
                                                # merge of either package is triggered.
                                                continue
+                                       if not parent_static and pstatus == "nomerge" and \
+                                               slot_atom in modified_slots[myroot]:
+                                               replacement = final_db.match(pslot_atom)
+                                               if replacement:
+                                                       replacement_node = \
+                                                               self.pkg_node_map[proot][replacement[0]]
+                                                       if replacement_node not in \
+                                                               self.blocker_parents[blocker]:
+                                                               # Apparently a replacement may be able to
+                                                               # invalidate this block.
+                                                               blocked_node = self.pkg_node_map[proot][cpv]
+                                                               depends_on_order.add(
+                                                                       (replacement_node, blocked_node))
+                                                               continue
                                        # None of the above blocker resolutions techniques apply,
                                        # so apparently this one is unresolvable.
                                        unresolved_blocks = True
                                if not unresolved_blocks and depends_on_order:
-                                       for node in depends_on_order:
+                                       for node, pnode in depends_on_order:
                                                # Enforce correct merge order with a hard dep.
-                                               self.digraph.addnode(node, parent,
+                                               self.digraph.addnode(node, pnode,
                                                        priority=DepPriority(buildtime=True))
                                                # Count references to this blocker so that it can be
                                                # invalidated after nodes referencing it have been