collision-protect does not catch collision for *already collided* packages. Best to explain with examples: # FEATURES=collision-protect emerge -bk ucspi-tcp ucspi-tcp-man ucspi-tcp-man tries to overwrite /usr/share/man/man1/tcpserver.1.gz (one of many) and is blocked. Expected. # FEATURES=-collision-protect emerge -bk ucspi-tcp ucspi-tcp-man ucspi-tcp-man does overwrite ucspi-tcp's man pages. Expected. Now, try the first one again: # FEATURES=collision-protect emerge -bk ucspi-tcp ucspi-tcp-man This does not fail at all. Both packages remerge fine. UNEXPECTED. Expected to get a collision error as both packages overwrite each other's files. However, the following fails as expected: # emerge -C ucspi-tcp-man && FEATURES=collision-protect emerge -bk ucspi-tcp
collision-protect works within the node that's being merged's installed versions. Iow, now those files are owned by both pkgs; this is invalid from the ebuild standpoint, but collision-protect *cannot* handle that, it can only block the initial merges. If the collision is already within the contents db's, collision-protect lets it slide through due to the fact it's valid- the disabling collision-protect allows the collision in, that's the problem. :)
*** Bug 218365 has been marked as a duplicate of this bug. ***