Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 283842 - sys-apps/paludis doesn't generate correct depgraph with || ( ) construct
Summary: sys-apps/paludis doesn't generate correct depgraph with || ( ) construct
Status: RESOLVED INVALID
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Thomas Anderson (tanderson) (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-09-06 12:39 UTC by Harris Landgarten
Modified: 2009-09-08 23:46 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 Harris Landgarten 2009-09-06 12:39:21 UTC
upgrade of media-libs/jpeg-7 breaks nxclient. Rebuild of nxclient causes downgrade to jpeg-6b-r8



Reproducible: Always
Comment 1 Samuli Suominen (RETIRED) gentoo-dev 2009-09-06 12:47:14 UTC
No.

nxclient-3.3.0.3.ebuild:        || ( media-libs/jpeg-compat <media-libs/jpeg-7 )
nxclient-3.3.0.6.ebuild:        || ( media-libs/jpeg-compat <media-libs/jpeg-7 )

Install jpeg-compat instead.
Comment 2 Harris Landgarten 2009-09-06 12:53:05 UTC
Then why does rebuild of nxclient cause downgrade to 6b instead of pulling in jpeg-compat?
Comment 3 Samuli Suominen (RETIRED) gentoo-dev 2009-09-06 13:14:33 UTC
It doesn't.

# emerge -pv nxclient

[ebuild  N    ] media-libs/jpeg-compat-6b  0 kB
[ebuild  N    ] net-misc/nxclient-3.3.0.6  4,469 kB

# emerge -pv =jpeg-7* nxclient

[ebuild   R   ] media-libs/jpeg-7  0 kB
[ebuild  N    ] media-libs/jpeg-compat-6b  0 kB
[ebuild  N    ] net-misc/nxclient-3.3.0.6  4,469 kB

Paste outputs of prev. commands and emerge --info.
Comment 4 Harris Landgarten 2009-09-06 13:17:55 UTC
It does with paludis

$ sudo paludis -ip nxclient
Building target list... 
Building dependency list...paludis@1252243031: [WARNING dep_list.downgrade] In thread ID '28967':
  ... In program paludis -ip nxclient:
  ... When performing install action from command line:
  ... When executing install task:
  ... When building dependency list:
  ... When adding PackageDepSpec 'net-misc/nxclient':
  ... When adding package 'net-misc/nxclient-3.3.0.6:0::gentoo':
  ... When adding run dependencies as pre dependencies:
  ... When using already installed package to resolve dependencies:
  ... When adding PackageDepSpec '<media-libs/jpeg-7':
  ... Downgrade to 'media-libs/jpeg-6b-r8:0::gentoo' from 'media-libs/jpeg-7:0::installed' forced


These packages will be installed:

* media-libs/jpeg [D 7 -> 6b-r8]
    Reasons: *net-misc/nxclient-3.3.0.6:0::gentoo, app-text/ghostscript-gpl-8.70-r1:0::installed, 4 more
    build_options: -optional_tests split strip
* net-misc/nxclient [N 3.3.0.6] <target>
    build_options: -optional_tests
    "X11/VNC/NXServer client (remote desktops over low-bandwidth links)"

Total: 2 packages (1 new, 1 downgrade)

Checking for possible errors......

 * No unread news items found
Comment 5 Ciaran McCreesh 2009-09-06 14:57:36 UTC
Highly unlikely that it's Paludis getting it wrong here...

What does paludis -q jpeg-compat show?
Comment 6 Harris Landgarten 2009-09-06 19:34:00 UTC
$ paludis -q jpeg-compat
* media-libs/jpeg-compat
    layman:                  (6b (in ::multilib))X {:0} 
    gentoo:                  6b(~)* {:0} 
    Homepage:                http://www.ijg.org/
    Description:             Library to load, handle and manipulate images in the JPEG format (transition package)
    Herds:                   graphics
    Maintainers:             graphics@gentoo.org
    Use flags:               Build Options: -optional_tests split strip
Comment 7 Ciaran McCreesh 2009-09-06 19:36:18 UTC
Install jpeg-compat then, and Paludis will use it instead. Paludis is correctly seeing that you have jpeg and not jpeg-compat installed, and is thus using jpeg to satisfy the || ( ) dependency. If you have both installed, Paludis will take the leftmost instead.
Comment 8 Harris Landgarten 2009-09-06 19:43:13 UTC
I know what to do now but that does not solve the problem for others. The sequence of events is as follows:

1. jpeg-7 is installed as part of an overall update of world
2. reconcilo runs and rebuilds 24 packages that were dependent on jpeg-6b
3. note: nxclient is not rebuild by reconcilio
4. nxclient fails to run because a dependent library is missing.
5. An attempted paludis -i nxclient tries to downgrade jpeg to 6b-r8 instead of installing jpeg-compat.

I don't know what is at fault but clearly this is not what should happen.
Comment 9 Ciaran McCreesh 2009-09-06 19:50:40 UTC
Paludis is behaving correctly based upon the information that it is given. It's up to you to decide whether you'd rather keep jpeg at version 6 or install the compat package. Paludis can't read your mind, and it isn't told by the ebuild how to solve the problem, so it picks the solution that works best in the majority of cases that look like the one in question.
Comment 10 Harris Landgarten 2009-09-06 20:57:59 UTC
I don't think the problem is in Paludis. The problem is a general QC issue and should be referred to whoever is in charge of QC for Gentoo. The only issue in question with Paludis is why nxclient didn't qualify for a rebuild by reconcilio as it was clearly broken and why Paludis did spot nxclient as a blocker for the installation of jpeg-7.

It seems that as portage becomes more automated regarding blockers and such, ebuilds are being built that are neither functionally compatible nor tested with Paludis leading to user issues that result in needless wasting of developer time.
Comment 11 Samuli Suominen (RETIRED) gentoo-dev 2009-09-07 00:25:19 UTC
(In reply to comment #10)
> I don't think the problem is in Paludis. The problem is a general QC issue and
> should be referred to whoever is in charge of QC for Gentoo.

No. Paludis is not a Gentoo project at all. Portage is. You shouldn't be reporting bugs from Paludis system before trying the same with Portage...
Comment 12 Samuli Suominen (RETIRED) gentoo-dev 2009-09-07 00:26:38 UTC
(In reply to comment #9)
> Paludis is behaving correctly based upon the information that it is given.

No. It shouldn't be preferring a downgrade instead of alternative depend if available.
Comment 13 Harris Landgarten 2009-09-07 12:37:25 UTC
Paludis is in the tree. Most of the packages in the tree are not gentoo developed packages. Paludis is an alternative package manager and as such should be tested like any other package in the tree. If gentoo does not wish to support alternative package managers they should not be listed as such and should not be in the tree. I don't believe this is the case.

If Gentoo is going to support alternative package managers then ebuilds should be tested on them.
Comment 14 Ulrich Müller gentoo-dev 2009-09-07 13:13:01 UTC
(In reply to comment #13)
> If Gentoo is going to support alternative package managers then ebuilds
> should be tested on them.

I don't see anything wrong with the dependency in nxclient:
    || ( media-libs/jpeg-compat <media-libs/jpeg-7 )

And the solution for the upgrade path was given in comment #7.

> Paludis is in the tree. Most of the packages in the tree are not gentoo
> developed packages.

If you think that this is a Paludis bug (I'm not sure if it is), then you should report it to their upstream at <http://trac.pioto.org/paludis/>. This kind of problems can't be fixed in any reasonable way at the distro level. (That's the same for Paludis as for other packages' upstreams.)
Comment 15 Harris Landgarten 2009-09-07 14:15:36 UTC
I don't know if it is a paludis bug. I may be but it could also be an ebuild bug. Upstream says that they are doing what the ebuild specifies.

I'm not so sure but in any case the list of steps in comment #8 is not how I would like to see things work.

There was not even an elog in jpeg-7 mentioning jpeg-compat or even an ewarning to run revdep-rebuild or reconcilio.

Frustrating users is not the way forward.
Comment 16 Ciaran McCreesh 2009-09-07 15:12:08 UTC
(In reply to comment #12)
> (In reply to comment #9)
> > Paludis is behaving correctly based upon the information that it is given.
> 
> No. It shouldn't be preferring a downgrade instead of alternative depend if
> available.

I can understand why you'd jump to that conclusion based upon a naive look at a single particular case without considering the big picture. However, when you bear in mind that sometimes Gentoo does force downgrades, and that a good number of packages are mutually exclusive, the situation is not so straight forward, and taking the downgrade is the less dangerous solution.
Comment 17 Samuli Suominen (RETIRED) gentoo-dev 2009-09-08 23:46:31 UTC
(In reply to comment #15)
> I don't know if it is a paludis bug. I may be but it could also be an ebuild
> bug. Upstream says that they are doing what the ebuild specifies.

No, the ebuild specifies to use jpeg-compat first, and then old jpeg as alternative if jpeg-compat for some reason isn't available and that's how it's working here with portage (see Comment #3, it was a short test, can't tell if there's more pkgs involved in calculating that depgraph.)

> There was not even an elog in jpeg-7 mentioning jpeg-compat or even an 
> ewarning to run revdep-rebuild or reconcilio.

The need for revdep-rebuild has partly been removed/fixed in Portage 2.2_rc* (still masked) by preserved-libs feature. In this case, it would have kept the libjpeg.so.62 when installing jpeg-7 and it would have instructed you to run
"emerge @preserved-rebuild" after that. In short: It's the package managers job to handle this, not a job for the ebuild to print messages...