Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 411349 - app-portage/eix-0.25.3: eix-test-obsolete mishandles package.mask
Summary: app-portage/eix-0.25.3: eix-test-obsolete mishandles package.mask
Status: RESOLVED WONTFIX
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Third-Party Tools (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Martin Väth
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-04-09 14:28 UTC by Andrew Savchenko
Modified: 2012-05-24 19:13 UTC (History)
2 users (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 Andrew Savchenko gentoo-dev 2012-04-09 14:28:39 UTC
Hello,

this bug seems to be relevant to all eix versions in tree:
$ eix-test-obsolete detail 
complains about:

Not installed but in /etc/portage/package.mask:
[N] dev-java/icedtea-bin (--): A Gentoo-made binary build of the IcedTea JDK
[N] dev-lang/mono (--): Mono runtime and class libraries, a C# compiler/interpreter

...and so on.

That's quite obvious that user-masked packages are not installed. A logic of this test should be inverted: eix should complain about installed masked packages.
Comment 1 Hans 2012-05-06 19:57:29 UTC
(In reply to comment #0)

> this bug seems to be relevant to all eix versions in tree:
> $ eix-test-obsolete detail 
> complains about:
> 
> Not installed but in /etc/portage/package.mask:
> [N] dev-java/icedtea-bin (--): A Gentoo-made binary build of the IcedTea JDK
> [N] dev-lang/mono (--): Mono runtime and class libraries, a C#
> compiler/interpreter

And it rightfully complains about this.

> That's quite obvious that user-masked packages are not installed.

package.mask is for masking certain versions of installed packages / packages to be installed.
If you do not want to install this package at all, although it is being pulled in as a dependency, you should use package.provided. Otherwise you break the dependency calculations made by portage.

> A logic of
> this test should be inverted: eix should complain about installed masked
> packages.

eix-test-obsolete should *additionally* complain about installed masked packages, if it does not do so yet.

Well, that's how I see things, at least.
Comment 2 Andrew Savchenko gentoo-dev 2012-05-06 20:30:14 UTC
(In reply to comment #1)
> > That's quite obvious that user-masked packages are not installed.
> 
> package.mask is for masking certain versions of installed packages /
> packages to be installed.
> If you do not want to install this package at all, although it is being
> pulled in as a dependency, you should use package.provided. Otherwise you
> break the dependency calculations made by portage.

Sorry, I can't agree with your meaning, man 5 portage clearly says:

package.mask
       A list of package atoms to mask.  Useful if specific versions of pack‐
       ages  do  not work well for you.  For example, you swear by the Nvidia
       drivers, but only versions earlier than 1.0.4496.  No problem!

package.provided
       A list of packages (one per line) that portage should assume have been
       provided.   Useful for porting to non-Linux systems. Basically, it's a
       list that replaces the emerge --inject syntax.

       For example, if you manage your own copy of a 2.6 kernel, then you can
       tell  portage  that  'sys-kernel/development-sources-2.6.7' is already
       taken care of and it should get off your back about it.

       Portage will not attempt to update  a  package  that  is  listed  here
       unless  another  package  explicitly  requires a version that is newer
       than what has been listed. Dependencies that are  satisfied  by  pack‐
       age.provided  entries  may cause installed packages satisfying equiva‐
       lent dependencies to be removed by emerge(1) --depclean  actions  (see
       the ACTIONS section of the emerge(1) man page for more information).

In short, if you add a package to package.provided, you claim to portage that you have this package installed, but you will maintain it yourself. Portage will not update this package, but will assume that it has been installed during dependency calculations.

package.mask exist exactly to mask packages you do not need to see on your system. This may be some version range of the package or the whole package name. It works exactly the same as system-wide masks with an exception to be user-controlled and not automatically updated.
Comment 3 Martin Väth 2012-05-07 05:48:16 UTC
eix-test-obsolete warns by default about a lot of things one may argue whether it should warn about. The philosophy is that if *some* users *might* want to see the warning, it is switched on.

Here, the reason is the following: There might be a need to package.mask versions of a full package for a longer period, because every time you update a package, portage has to know this mask. On the other hand, there is not really a need to package.mask an uninstalled package for a longer period: It serves more or less only a reminder in case you install something new (or when dependencies change): Only the user can know whether this reminder should remain there intentionally or whether it was forgotten after installing something new where you wanted to pull in alternative dependencies. So the user is informed about it.

If you want to tell eix that you do not want to see the warnings about particular packages put into /etc/portage/package.nowarn (or into a file in this directory) something like

category/package in_mask
(you can also use things like kde-base/* here).

If you want to change the default for this warning globally, set

REDUNDANT_IF_IN_MASK=false

in /etc/eixrc (or in ~/.eixrc or in your environment).
Due to the philosophy to inform the user if in doubt, I will not change
the default in eix.

> eix-test-obsolete should *additionally* complain about installed masked
> packages

You see these already with eix -u or during emerge. The purpose of
eix-test-obsolete is - as the name says - to inform about *obsolete*
entries in /etc/portage/package.*, i.e. entries which presumably
do not have any effect.