Summary: | sys-kernel/linux-headers: retain -* keyword | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Ed Catmur <ed> |
Component: | [OLD] Core system | Assignee: | Portage team <dev-portage> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | agriffis, robmoss |
Priority: | High | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- |
Description
Ed Catmur
2004-03-03 16:36:14 UTC
Whoah, I've added the -* back in, but could you explain this? This is the first time I've heard of -* having a special meaning in portage. In the past it has meant the same thing as "", just an additional flag developers. Carpaski, genone, iggy, jstubbs? What's the story here? I couldn't reproduce this. I found that portage tried to downgrade regardless of whether "-*" was in KEYWORDS or not. This makes complete sense from looking at the portage man page. package.keywords Per package KEYWORDS. Useful for mixing unstable pack- ages in with a normally stable machine or vice versa. This will allow you to override ACCEPT_KEYWORDS. I would be interested to know what was put into package.keywords that caused portage to NOT try and downgrade. The line I have in package.keywords is: =sys-kernel/linux-headers-2.4* -* This syntax makes -* packages matching =sys-kernel/linux-headers-2.4* available: $ etcat -v =linux-headers-2.4.23 [ Results for search key : =linux-headers-2.4.23 ] [ Candidate applications found : 1 ] Only printing found installed programs. * sys-kernel/linux-headers-2.4.23 : [ I] 2.4.23 (0) HTH. why didnt you use package.mask instead of package.keywords As I understand the package.* files:
package.mask can only mask packages.
package.unmask can only unmask packages masked in the global profile.mask file:
> Note that this
> does not override packages that are masked via KEYWORDS.
Thus package.keywords is the only way to override the KEYWORDS variable short of duplicating the ebuild into one's overlay.
what the warning means if you have say 'sys-kernel/linux-headers' in package.mask then putting 'sys-kernl/linux-headers x86' in package.keywords wont unmask it SpanKY, he's right... There's no way to duplicate the behavior he wants except to add the line he mentioned to /etc/portage/package.keywords (and leave -* in KEYWORDS in the ebuild) This is a bastardization of how -* was "intended" to be used in KEYWORDS. It would be better to fix this another way in portage. For example, maybe it should be possible to have the following in package.keywords to indicate any keywords are acceptable: =sys-kernel/linux-headers-2.4* * I guess I'll reopen this bug and assign to the portage team for continued investigation. Haven't checked anything, just how I think it works: "-* foo bar" in KEYWORDS means: doesn't work on anything except foo and bar "foo bar" in KEYWORDS means: works on foo and bar, untested on other archs Now _depending_ on -* being present in KEYWORDS means that you depend on stuff that doesn't work anywhere (from a semantic POV). From the technical POV -* in package.keywords is just a token as any other one as package.keywords code doesn't know about the semantics, it's just a simple matching routine. Now the meaning of -* for linux-headers can't be "doesn't build" or "doesn't run" as it's "just" static data. So what does it mean here ? Btw, this is another reason why I really don't like -* being used as a replacement for package.mask. Genone, I agree with your assessment... Ed is presently relying on unintended behavior that is subject to change. Ed, you need to do one of the following: (1) Put linux-headers in your overlay so that you can control the keywords in the ebuild and/or (2) File a bug that explains why you need linux-headers-2.4.23 to be marked stable instead of the currently-marked version. I'll leave -* in linux-headers for now, but that is no guarantee that ebuilds will continue to follow that pattern in the future. OK; thanks for clearing that up. I apologise for wasting everyone's time; I'll try not to depend on unintended behaviour in future. Is there any update on this? This has bitten me several times since my move to AMD64. Various packages (not necessarily - in fact not at all - linux-headers) require the use of keywords other than amd64 or ~amd64. It would be nice if something along the lines of "sys-kernel/linux-headers *" worked - obviously * has a special meaning, but I'm sure you catch my drift. Please feel free to close this again if I'm hankering after something that just isn't going to happen. But it would be really helpful for testing as-yet-untested packages... -* is not legal. It only works because of the implementation details. * and ~* are legal in 2.0.51. They mean 'any' arch marked stable/testing. Right, well that's sorted then... any chance you can get that into the docs before 2.0.51 is released? |