On Wed, Nov 13, 2013 at 2:28 AM, Martin Vaeth <va...@mathematik.uni-wuerzburg.de> wrote: > The new "features" use.stable.mask and package.use.stable.mask > have turned maintaining systems with mixed ARCH and ~ARCH keywords > into a nightmare:
I agree. I have helped two friends convert to Gentoo recently (one used it a few years ago). They both came from Arch, and one told me that before he resumed using Gentoo recently he considered these two distros in the same category in terms of difficulty of use and maintenance. After using it for a month, he's now convinced that Gentoo is clearly the most difficult to use. I'm inclined to agree, and I think in large part recently it's because of use.stable.mask and package.use.stable.mask. These really are a nightmare for users. Heck, they're really a nightmare for me and I've been using Gentoo for nine years and feel like I have a pretty good ability to decipher portage's error messages. I think most of the confusion is caused by the necessity to put a *stable* package atom into package.keywords to unmask a *USE* flag. (Am I doing something wrong that would prevent 'x11-proto/kbproto -abi_x86_32' in /etc/portage/package.use.stable.mask from un-stable-masking the abi_x86_32 USE flag for kbproto?) And then in addition, we did really weird things like stabilizing package versions whose only difference from the previous is that it supports multilib (e.g., kbproto-1.0.6 vs kbproto-1.0.6-r1). Except that it's package.use.stable.mask'd. So you have to keyword a stable package to get its only defining feature. (Why did we stabilize it in the first place?) Portage correctly shows that unstable USE flags are masked by printing parenthesis around them, like use.mask'd flags, but the error messages are really unhelpful. Take for instance dropping the stable =x11-proto/kbproto-1.0.6-r1 from package.keywords, in order implicitly mask the abi_x86_32. Attempting to merge =x11-proto/kbproto-1.0.6-r1 results in: x11-proto/kbproto:0 (x11-proto/kbproto-1.0.6-r1::gentoo, ebuild scheduled for merge) pulled in by (no parents that aren't satisfied by other packages in this slot) (x11-proto/kbproto-1.0.6-r1::gentoo, installed) pulled in by x11-proto/kbproto[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?] required by (x11-libs/libX11-1.6.2::gentoo, installed) x11-proto/kbproto[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?] required by (x11-libs/libXt-1.1.4::gentoo, installed) There's a single problem. It can't enable abi_x86_32. Why didn't it just say that? You could even go beyond this and explain why it can't do it, but at this point I'd settle for a concise explanation of *what* it can't do.