Gentoo Archives: gentoo-portage-dev

From: Daniel Barkalow <barkalow@××××××××.org>
To: gentoo-portage-dev@l.g.o
Subject: Re: [gentoo-portage-dev] [PATCH] keyword anti-match (foo/-foo) overrides other matches
Date: Wed, 29 Nov 2006 22:14:30
Message-Id: Pine.LNX.4.64.0611291619410.20138@iabervon.org
In Reply to: Re: [gentoo-portage-dev] [PATCH] keyword anti-match (foo/-foo) overrides other matches by Zac Medico
1 On Tue, 28 Nov 2006, Zac Medico wrote:
2
3 > -----BEGIN PGP SIGNED MESSAGE-----
4 > Hash: SHA1
5 >
6 > Daniel Barkalow wrote:
7 > > If the configuration has keywords "foo bar", and a package has "-foo
8 > > bar", mask the package ("masked by -bar keyword").
9 > >
10 > > This is the sensible behavior if we ever make use of listing multiple
11 > > keywords in the configuration, which is currently implemented but not
12 > > used for anything.
13 >
14 > Personally, I'd prefer not to support -foo or -* in the KEYWORDS of
15 > an ebuild. For one thing, seems like it's trying to accomplish
16 > something similar to what package.mask is intended for.
17
18 It's documented in the Ebuild HOWTO (at least, -foo). And the current
19 state is sort of broken: if you manage to get -foo in your
20 ACCEPT_KEYWORDS, you can build a known-broken package, but you can never
21 build a package that doesn't have -foo/~foo/foo. So you can only build a
22 package if you know it doesn't work.
23
24 I'd say, make it impossible to set -foo (or -*) in ACCEPT_KEYWORDS. People
25 who want to build -foo packages can use * (or ~*) in their
26 package.keywords, which actually gives you the latest version that's
27 stable somewhere (or testing somewhere).
28
29 With my patch, you'd additionally need -foo in package.keywords to build a
30 -foo package, but then it means "don't worry about my foo keyword", which
31 is appropriate and really is the usual incremental stack thing.
32
33 Incidently, I think with current trunk a package.keywords value of "-x86"
34 means "use an ebuild if and only if it is broken on x86", meaning that if
35 a newer version actually works, users using the broken version won't
36 upgrade. I bet that's not really what people want.
37
38 > Another problem is that is uses -foo and -* in completely different ways
39 > than they are used elsewhere in portage (for negation of values in
40 > an incremental stack).
41
42 I think KEYWORDS (as opposed to ACCEPT_KEYWORDS) being thought of as an
43 incremental stack is sort of broken. (Not that it isn't done, but I think
44 that KEYWORDS in eclasses is just evil and generally wrong; check out
45 enlightenment.eclass and x11-wm/e/e-9999.ebuild for weird and wrong.)
46
47 But maybe !foo would be more appropriate anyway for "don't match if foo".
48 It might confuse people if what you do to unmask a "!foo" package is
49 "-foo *" (meaning "hide my foo keyword, match anything that works"), not
50 "!foo". Although I think the real way of unmasking these things should be
51 to put a modified version in your overlay.
52
53 -Daniel
54 *This .sig left intentionally blank*
55 --
56 gentoo-portage-dev@g.o mailing list

Replies