Summary: | Adding ~* to package.keywords does not allow package to be merged | ||
---|---|---|---|
Product: | Portage Development | Reporter: | Michael Jones <devnull> |
Component: | Core - Dependencies | Assignee: | Portage team <dev-portage> |
Status: | RESOLVED INVALID | ||
Severity: | normal | ||
Priority: | High | ||
Version: | 2.1 | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- |
Description
Michael Jones
2006-08-15 23:37:07 UTC
echo "x11-plugins/autoprofile x86" >> /etc/portage/package.keywords; emerge autoprofile ~* used to work ... i specifically requested it ;) useful for doing porting to a new architecture (In reply to comment #2) > ~* used to work ... i specifically requested it ;) > > useful for doing porting to a new architecture > ~* = match any unstable keyword on any arch for which an unstable keyword is listed * = match any stable keyword on any arch for which a stable keyword is listed If you want it to match all the time use both (assuming no package has KEYWORDS="" which would match nothing). (In reply to comment #3) So, if the keyword is missing for a given arch, which would work? It's neither stable or unstable, since there is no keyword given for the arch. I would assume that should imply the build as unstable, which is why the docs say to use ~*. Actually one page I saw showed an example with ~* -*, but neither have worked. I have used ~* in the past for a missing keyword on this same machine and it worked perfectly, but since the last time I updated portage it's as if emerge ignores the ~*, telling me the build is still blocked because of missing keyword. if no KEYWORD is specified, then it defaults to ~ARCH (whatever your host ARCH is) if the behavior Antarus describes in Comment #3 still exists (i didnt verify), then i'm happy (In reply to comment #5) So, if I am to understand correctly, then it defaults to ~arch -- in my case ~amd64. So if the package has KEYWORDS="x86 ppc", that leaves a missing keyword for amd64, so should not ~* allow the package to be installed? That's how the docs say it should be, and that's what makes the most sense, since it effectively would be unstable for the untested arch. Using * in keywords does appear to work, but previously ~* worked as well. If it should infact require you to use only * for an unlisted arch, that needs to be updated in the docs... but it still doesn't make sense to me since the missing keyword indicates the package has not been tested on the arch, let alone confirmed as stable (and according to comment #3... * is used for stable only, ~* should be for unstable). As you said, if the keyword is not specified it should default to ~arch, or in the case of missing keyword, ~*. > if no KEYWORD is specified, then it defaults to ~ARCH (whatever your host ARCH > is) > > if the behavior Antarus describes in Comment #3 still exists (i didnt verify), > then i'm happy > no, the behavior you're seeing is correct i dont know what docs you're referring to, but i think you just read them wrong if the ebuild has KEYWORDS="x86 ppc", then you would need '*' in package.keywords, not '~*' as for defaulting to a global glob, i dont like that idea ... if a user is trying to install a package that has not been installed on their architecture, then they need to explicitly state which arch they'd like to fake out (In reply to comment #7) As for the docs, I've found instruction to use ~* or ~arch in a couple places, including the gentoo-wiki site and the official gentoo documentation: http://www.gentoo.org/doc/en/gentoo-amd64-faq.xml#keyword http://gentoo-wiki.com/Masked#Masked_by_missing_keyword I agree that you should need to specify the arch... which is why explicitly stating app-cat/package ~amd64 in package.keywords seems like it would make more sense than just putting a * to allow all arches. Either way I guess it works for me, I'll just use * but I think it'd be better to have some way to specify in the keywords to allow building on a specific arch if the keyword for that arch is missing, regardless of what other keywords were specified in the build. If I want to build a package that has no keyword for my arch, I shouldn't have to check the build to see whether or not it has keywords for other arches to determine what kind of keyword to put, and while putting * ~* as mentioned in #3 above works, it seems like putting something like ~arch (or %arch or ^arch or whatever you prefer) to explicitly say "yes I know the keyword is missing, build it anyways for this arch) would be better. Just my $0.02. > no, the behavior you're seeing is correct > > i dont know what docs you're referring to, but i think you just read them wrong > > if the ebuild has KEYWORDS="x86 ppc", then you would need '*' in > package.keywords, not '~*' > > as for defaulting to a global glob, i dont like that idea ... if a user is > trying to install a package that has not been installed on their architecture, > then they need to explicitly state which arch they'd like to fake out > installing packages that have not been tested on your arch is not a trivial matter so trying to do so should not be trivial either you need to know what you're getting yourself into |