Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 355521 - sys-apps/portage: implement a FEATURES feature that allows installed masked packages to be reinstalled/updated without pain
Summary: sys-apps/portage: implement a FEATURES feature that allows installed masked p...
Status: RESOLVED WONTFIX
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: 2011-02-19 08:26 UTC by Marc Burkhardt
Modified: 2011-05-14 20:15 UTC (History)
0 users

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 Marc Burkhardt 2011-02-19 08:26:37 UTC
Let's assume we have an ebuild

- app-text/greatstuff-0.5-r1 that is stable
- app-text/greatstuff-0.7_beta2 that is masked **

--> emerge -av greatstuff would install version 0.5.
--> ACCEPT_KEYWORDS=** emerge -av greatstuff would install version 0.7_beta2

OK, I want to use the 0.7_beta2 one and issue the second command in order to get it installed.

Now the dev add 0.7_beta3. If I update world, the ebuild would not be updated due to being masked by missing keyword. I actually want portage to update to the 0.7_beta3 version because I once managed to have the 0.7_beta2 version installed in the same slot (that was masked)

Did you get what I wanted to describe? emerge should, once a package in a slot is installed, updated the ** masked ebuilds as these were not masked.

Reproducible: Always

Actual Results:  
portage has no update

Expected Results:  
portage has update on 0.7_beta3
Comment 1 Marc Burkhardt 2011-02-19 08:36:19 UTC
To sum it all up in one sentence one could say:

emerge should ignore an ebuild's "missing keyword" mask once the ebuild is installed.
Comment 2 Zac Medico gentoo-dev 2011-02-19 09:19:11 UTC
(In reply to comment #0)
> --> emerge -av greatstuff would install version 0.5.
> --> ACCEPT_KEYWORDS=** emerge -av greatstuff would install version 0.7_beta2

This approach is somewhat messy for various reasons. For example, with ** you're probably going to pull in live -9999 ebuilds, which is probably not desirable for most people.

As an alternative, I'd suggest the --autounmask option.
Comment 3 Marc Burkhardt 2011-02-19 09:36:41 UTC
Could one implement that for ebuilds that do not depend on a cvs as git, svn, ... for fetching the source? That would cover the case for the live-ebuilds.
Comment 4 Zac Medico gentoo-dev 2011-02-19 09:42:26 UTC
(In reply to comment #3)
> Could one implement that for ebuilds that do not depend on a cvs as git, svn,
> ... for fetching the source? That would cover the case for the live-ebuilds.

It's possible to use a blacklist of inherited eclasses, but not really optimal. It would be better if we implemented something like PROPERTIES=live, as suggested here:

http://archives.gentoo.org/gentoo-dev/msg_64b83155637bcad67478e2d2af276780.xml
Comment 5 Sebastian Luther (few) 2011-02-19 09:47:59 UTC
There are other problems: You wont notice if a package gets masked for removal or if a newly added version gets masked because it has serious bugs.

I think the main problem here is that portage allows specifying ACCEPT_KEYWORDS and other stuff on the command line. That's just bad practice. Config files are there for a reason.
Comment 6 Marc Burkhardt 2011-02-19 09:53:04 UTC
(In reply to comment #5)
> There are other problems: You wont notice if a package gets masked for removal
> or if a newly added version gets masked because it has serious bugs.
> 
> I think the main problem here is that portage allows specifying ACCEPT_KEYWORDS
> and other stuff on the command line. That's just bad practice. Config files are
> there for a reason.
> 

OK, ste 1: DO NOT REMOVE THAT! My whole life depends on it. OK, partially. :)
Comment 7 Marc Burkhardt 2011-02-19 10:20:10 UTC
I have the following script laying around to show me what live-ebuilds I have installed:

#!/usr/bin/python

import portage

db = portage.db["/"]["vartree"].dbapi

vcs_eclasses = set(["cvs", "git", "subversion", "bzr", "monotone"])

for cpv in db.cpv_all():
	try:
		eclasses = db.aux_get(cpv, ["INHERITED"])[0].split()
	except KeyError:
		pass
	if vcs_eclasses.intersection(eclasses):
		print cpv 
Comment 8 Marc Burkhardt 2011-02-19 10:22:35 UTC
(In reply to comment #5)
> There are other problems: You wont notice if a package gets masked for removal
> or if a newly added version gets masked because it has serious bugs.
> 

To come back to the removal thing:

When the ebuild actually is removed, it resides on the machine anyways wether it was masked for removal or not. I do an "eix-test-obsolete detail" from time to time to see what needs to be done on the machines.
Comment 9 Marc Burkhardt 2011-05-14 20:03:51 UTC
Any news on this, Zac? :)
Comment 10 Sebastian Luther (few) 2011-05-14 20:11:40 UTC
Close as WONTFIX wrt comment 5? :)
Comment 11 Zac Medico gentoo-dev 2011-05-14 20:15:47 UTC
(In reply to comment #7)
> I have the following script laying around to show me what live-ebuilds I have
> installed:

To do this cleanly, you really need more metadata in the ebuilds, which would depend on bug 182028 or the PROPERTIES=live thing I mentioned earlier.

(In reply to comment #10)
> Close as WONTFIX wrt comment 5? :)

Yeah, for now emerge --autounmask is the only thing close that I can recommend.