Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 21463 - How to mix system x86 and non-system ~x86, plus more
Summary: How to mix system x86 and non-system ~x86, plus more
Status: RESOLVED DUPLICATE of bug 13616
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Enhancement/Feature Requests (show other bugs)
Hardware: All Linux
: High enhancement
Assignee: Portage team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-05-22 03:26 UTC by Donnie Berkholz (RETIRED)
Modified: 2011-10-30 22:35 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Donnie Berkholz (RETIRED) gentoo-dev 2003-05-22 03:26:45 UTC
It is very laborious to maintain a Gentoo system with 'system' as x86 and 
'world' minus 'system' (i.e., non-system packages) as ~x86 using the current 
system of keywords. The best way I know of to do so is as follows: 'emerge -Up 
world' to update everything x86, then use the script on stable.gentoo.org to 
find ~x86 packages, 'ACCEPT_KEYWORDS="~x86" emerge -up world' and select the 
packages that are ~x86 to upgrade to new ~x86 builds.
It seems that many users may desire a way to run their system x86 and their 
non-system packages ~x86. This will allow them to nearly always have a working, 
bootable system (not considering unrelated problems) and yet run the most recent 
programs.
My idea is to split ACCEPT_KEYWORDS into ACCEPT_SYSTEM and ACCEPT_NONSYSTEM (or 
something similar). This would allow ACCEPT_SYSTEM="x86" (AS=x86) and 
ACCEPT_NONSYSTEM="~x86" (ANS=~x86) for those who desire a stable system with new 
userland programs. AS=x86 and ANS=x86 would be for a full stable install. 
AS=~x86 and ANS=~x86 would be for a full 'testing-level' install. The fourth 
possibility, AS=~x86 and ANS=x86, should probably be discouraged through an 
error message of some sort as it doesn't make much sense, but it could be useful 
in testing the latest compilers, etc., with stable, generally known-to-work 
programs. 
Someone suggested the problem if a ANS=~x86 package desired a ~x86 system 
component. This should be generally disallowed unless AS=~x86 is set at the 
command line, similar to how ~x86 packages in general are emerged now. This 
would prevent the system from becoming unstable without obvious effort being 
expended to do so, whereas the current ACCEPT_KEYWORDS does not discriminate 
between system and non-system.
A logical addition to this would be the ability to exclude packages from system, 
non-system or world. This would allow a few packages to be run ~x86 while the 
rest were x86. An interesting companion that would go with this is the ability 
to run everything ~x86 except for an exclusion list of packages that need to be 
compiled x86. Another logical addition would be the possibility of separate 
CFLAGS for system and non-system.
Clearly, this would apply to all platforms, not just x86.
To sum up, this would allow easy combination of an x86 system with an ~x86 
non-system and many other combinations, including packages that could be 
excluded from either group. This would create a potentially more productive, 
more up-to-date, yet stable installation.

Reproducible: Always
Steps to Reproduce:
1. Desire to have ~x86 non-system, x86 system
2. Work way too hard to do so
3. Give up and file a bug report

Actual Results:  
Difficult to run mixed system.

Expected Results:  
Easy to administer mixed system.
Comment 1 Donnie Berkholz (RETIRED) gentoo-dev 2003-05-22 03:57:14 UTC
I forgot to mention, of course this would be backwards-compatible. It wouldn't even be worth considering if it weren't. Users could choose to just use ACCEPT_KEYWORDS="~x86" to have the whole world set to it rather than ACCEPT_SYSTEM and ACCEPT_NONSYSTEM.

rac made an excellent point in #gentoo. That is, sticky variables combined with scripts in gentoolkit could accomplish essentially the same thing. 

<rac> spyderous: for package in system; do echo "x86" >> /var/db/pkg/package/ACCEPT_KEYWORDS; done, then edit /etc/make.conf to have ACCEPT_KEYWORDS="~x86"
<rac> spyderous: there will be troubles when dependent libs in system stay stable but apps go unstable, but that's pretty much unavoidable
<rac> spyderous: i think it would be pretty straightforward to walk /etc/make.profile/packages to get a list of things in "system"
<spyderous> rac: but i see your point. just do for packages in world; echo ~x86 > ACCEPT_KEYWORDS; for packages in system; echo x86 > ACCEPT_KEYWORDS (to have an x86 system, ~x86 non-system, then make.conf ACCEPT_KEYWORDS="~x86" has all new packages ~x86 as well)
<spyderous> rac: different means to the same end, it seems. yours via scripts and mine via a couple of new variables.

Basically either splitting ACCEPT_KEYWORDS and allowing exceptions will have the same function as sticky variables and some gentoolkit scripts. However, many gentoolkit tools are generally unknown so these options would probably be much less well-known than if they were variables. On the other hand, sticky variables would save people from having to keep a list of exceptions in make.conf. My proposal (new ACCEPT_KEYWORDS) is already made possible via a script on the forums which does 'world minus system' and allows exceptions in make.conf.
Comment 2 Peter Lietz 2003-07-26 10:27:30 UTC
While I wouldn't want to automatically install all of "world minus system" as "~x86", I would like to do so for particular apps, like movie players, where new versions usually are better and stability is not a big issue. I wouldn't want to do so for, say, TeX, as I don't want to jeopardize my work.

I propose that emerge gets a new switch whose effect would be to install the latest unstable version and its dependencies, where the versions of the dependencies are resolved as stable as possible (like "emerge some.ebuild" would do, not like "ACCEPT_KEYWORDS="~x86" emerge some" would). Crucially, the desire for an unstable version of that package would have to be recorded in the world file! "emerge -up world" would then notify the user of any new unstable version of those packages instead of wanting to downgrade the package because it is not stable.

I think we should really learn from debian as far as mixing stable and unstable is concerned.

Relating to your idea, there should probably be a warning when installing an unstable ebuild would imply upgrading a package in system to an unstable version.

And (on a slightly different note) safe downgrading and safe unmerging should be implemented at last (meaning that before downgrading or removing a package, it should be checked whether downgrading/removal breaks dependencies of other packages)
Comment 3 Max Kalika (RETIRED) gentoo-dev 2003-08-08 09:31:49 UTC
Please see bug 13616.  With that patch, you can create 
/etc/portage/package.keywords file and list the acceptable keywords on a 
per-package basis. 
Comment 4 SpanKY gentoo-dev 2003-12-22 22:03:40 UTC

*** This bug has been marked as a duplicate of 13616 ***