x11-libs/pixman-0.9.5 in portage and media-libs/libpixman-9999 in the x11 overlay are basically the same package. xorg-server-9999 in the x11 overlay depends on >=libpixman-9999. xorg-server-1.4-r2 in portage depends on >=pixman-0.9.5. If I upgrade to xorg-server-9999, it pulls in libpixman-9999. At this point, portage is tracking two installed ebuilds which have files in common. If I then downgrade to xorg-server-1.4-r2, then libpixman-9999 is no longer depended upon by anything. When I run 'emerge --depclean', libpixman-9999 is removed. This removes files which are common to pixman-0.9.5. At this point, xorg-server-1.4-r2 is broken, because it is missing a library link. Running 'emerge -uDNv world' will not catch the problem, because portage doesn't know that pixman-0.9.5 is toast. Also, revdep-rebuild won't catch this, because it will try (and fail) to remerge xorg-server-1.4-r2, and not pixman-0.9.5, which it thinks is still installed. The patch I will post adds a blocker to libpixman-9999, so that the user has to explicitly unmerge pixman-0.9.5 before upgrading to libpixman-9999. This way, downgrading xorg-server from -9999 to -1.4-r2, will leave a hole in the tree, which can be caught by either of 'emerge -uDNv world' or 'revdep-rebuild'. Caveat: for this to be perfect, a mutual blocker for libpixman-9999 should be added to the pixman-0.9.5 ebuild as well. I didn't do this because I wasn't sure about the correctness of adding a blocker in the main tree that references an overlay. If it's not a problem, I'll post another patch for it. Reproducible: Always Steps to Reproduce: 1. Start with xorg-server-1.4-r2. 2. Edit /etc/portage/package.* as necessary to get the overlay ebuilds. 3. Upgrade to x11 overlay xorg-server-9999. 4. Change /etc/portage/package.* back to the original state. 4. Downgrade to xorg-server-1.4-r2 5. emerge --depclean 6. 'ldd /usr/bin/X', and note the missing libpixman dependency. Actual Results: pixman-0.9.5 files get clobbered when libpixman-9999 is removed, and vice-versa. X server bombs out the next time you reset it. Expected Results: pixman-0.9.5 files shouldn't get clobbered, but it can't be helped, so make it get reinstalled when necessary.
Created attachment 133209 [details, diff] add pixman-0.9.5 blocker to x11 overlay's libpixman-9999
Created attachment 133210 [details, diff] pixman blocker, in proper diff -u format. Whoops, wrong format. Here's a replacement.
How can you have those two installed at the same time? Did someone slot it or what? Plus what's the link for the overlay and who maintains this?
You can have them both installed at the same time because the ebuild names are different. One is named "pixman", and the other is named "libpixman". I guess another solution would be to rename the libpixman ebuild to pixman, so that it becomes just a newer version in the slot. Then it would match the freedesktop git directory name. The link is http://overlays.gentoo.org/git/proj/x11/. I installed the overlay using "layman -a x11".
(In reply to comment #4) > You can have them both installed at the same time because the ebuild names are > different. One is named "pixman", and the other is named "libpixman". Sigh; that really rocks...
(In reply to comment #5) > (In reply to comment #4) > > You can have them both installed at the same time because the ebuild names are > > different. One is named "pixman", and the other is named "libpixman". > > Sigh; that really rocks... > Yeah, subtle. I didn't catch it right away either. So what do you want to do about it? Is this patch good enough, or should we change the name of the newer ebuild? I don't know who's maintaining the overlay.
I just renamed the pixman ebuild to be consistent with the portage tree one.