Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 265854

Summary: app-portage/eix: take into account overlay's eclasses
Product: Gentoo Linux Reporter: Peter Volkov (RETIRED) <pva>
Component: Current packagesAssignee: Martin Väth <martin>
Severity: normal CC: darkside, martin
Priority: High    
Version: unspecified   
Hardware: All   
OS: Linux   
Package list:
Runtime testing required: ---

Description Peter Volkov (RETIRED) gentoo-dev 2009-04-12 13:32:29 UTC
I'm using ADD_OVERLAY="/usr/local/overlays/science" at /etc/eixrc and at the same time I don't add that overlay to PORTDIR_OVERLAY since I want to follow changes there but I don't want to install packages from there. During eix-update I see lot's of errors like this:

Ebuild failed with status 1
     Reading  82%
Could not properly execute /usr/local/overlays/science/sys-cluster/libmthca/libmthca-1.0.5.ebuild
     Reading  82% *
 * ERROR: sys-cluster/libnes-0.5 failed.
 * Call stack:
 *     , line 1872:  Called _source_ebuild
 *     , line 1811:  Called source '/usr/local/overlays/science/sys-cluster/libnes/libnes-0.5.ebuild'
 *       libnes-0.5.ebuild, line   10:  Called inherit 'openib'
 *     , line 1211:  Called die
 * The specific snippet of code:
 *              [ ! -e "$location" ] && die "${1}.eclass could not be found by inherit()"
 *  The die message:
 *   openib.eclass could not be found by inherit()
 * If you need support, post the topmost build error, and the call stack if relevant.
 * This ebuild is from an overlay: '/usr/local/overlays/science/'

I think it's good idea if eix will take overlay's eclasses into account and work in such cases too. I have eix-0.15.6 installed.
Comment 1 Martin Väth 2009-04-12 21:44:39 UTC
The cache methods ebuild* and ebuild essentially just call portage to execute
the ebuilds. Portage will not do what you want unless PORTDIR_OVERLAY is set
to include that overlay. There is no way around this.

The appropriate solution for you is to write a wrapper for update-eix
which exports PORTDIR_OVERLAY including that overlay.
The only "solution" of update-eix would be to be smarter as the user and
do exactly the same by some heuristic, but all these heurstics can have
undesired side effects and lead to other problems.

Another solution which works "by accident" is to use the cache method ebuild
(instead of ebuild*), e.g. set OVERLAY_CACHE_METHOD='parse|ebuild'
or CACHE_METHOD='/usr/local/overlays/science parse|ebuild'.
The cache method "ebuild" works on a "higher" level of portage, and portage
is smart enough on this level to extend PORTDIR_OVERLAY temporarily.

Since I doubt that a solution without undesired side effects exists on
the eix side, I set this bug to "can't fix".
Comment 2 Peter Volkov (RETIRED) gentoo-dev 2009-04-13 06:21:48 UTC
Probably eix could catch some common errors and suggest user change his cache method... but I'm not sure here. Thank you Martin.
Comment 3 Martin Väth 2009-04-14 20:44:10 UTC
eix of current svn trunk (>=eix-0.15.7) now sets/modifies the PORTDIR_OVERLAY
environment variable according to added/excluded overlays before executing
the ebuild.

If this causes undesired side effects, the feature can be switched off by