public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] hardcoding lib in ebuilds, and using econf without einstall
@ 2004-08-19 23:03 Travis Tilley
  2004-08-19 23:14 ` Mike Frysinger
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Travis Tilley @ 2004-08-19 23:03 UTC (permalink / raw
  To: gentoo-dev, amd64

supporting configurations where lib64 or lib32 is a directory will 
probably require a change in policy and a change in the dev quiz 
regarding the use of hardcoded lib directories in ebuilds and when 
einstall should be used.

problem #1) with hardcoded references to lib, i have to go and fix each 
ebuild that does this by hand so that it will work with lib64 or lib32. 
there are a LOT more ebuilds that do this in the tree than i expected.

problem #2) after having fixed ncurses so that it's libdir agnostic and 
can install into lib64, it was updated to have utf-8 support and that 
update included some more hardcoded references to lib. this broke 
ncurses for users with lib64, and there was one bug report where a user 
was unable to run anything linked against ncurses. so if an ebuild is 
CONF_LIBDIR aware, -all- references should use this variable (or another 
one set based on whether or not CONF_LIBDIR is set).

problem #3) since econf might set libdir now, it's no longer sane to not 
set libdir during make install, either by setting it in the ebuild or by 
using einstall. ebuilds that use econf will have 
--libdir=/usr/${CONF_LIBDIR} when [ -z "${CONF_LIBDIR}" ] (this change 
is in the ebuild.sh in >= portage 2.0.51_pre18), so make install will 
try to install the libraries to the live filesystem if einstall isnt 
also used.

problem #4) since the stable portage doesnt support CONF_LIBDIR and this 
variable will not be in all profiles even when it is supported, ebuilds 
that use this variable must default to setting it to lib. note that not 
all ebuilds will need to even touch this... anything that uses econf and 
einstall without using hardcoded lib references in the ebuild is already 
perfect.


none of these problems exist when using econf and einstall, and when 
you're not messing with libs in the ebuild. all the problems can also be 
avoided in ebuilds that mess with libs by simply using a variable. if 
there are any instances where einstall cant be used, that needs to be 
fixed in einstall so that it can be.

so... maybe something like this for an ebuild that needs to install to /lib:

pkg_setup() {
    [ -z "${CONF_LIBDIR}" ] && export CONF_LIBDIR="lib"
}

src_compile(){
    econf --libdir=/${CONF_LIBDIR} blah
    emake
}

src_install(){
    einstall
    cd ${D}/${CONF_LIBDIR}
    dodir /usr/${CONF_LIBDIR}
    mv blah blahdiddly moo ${D}/usr/${CONF_LIBDIR}
    more stuff here
}


...though, suggestions for a better way to do this would be appreciated. 
especially for solving problem #3. i'm going to have to edit econf so 
that it sees --prefix, sets a variable based on it, and then sets 
--libdir=/${myprefix}/${CONF_LIBDIR}. that -looks- like the easiest way 
to handle it to me, with myprefix=usr when --prefix isnt passed.


Travis Tilley <lv@gentoo.org>

--
gentoo-dev@gentoo.org mailing list


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2004-08-21 10:04 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-19 23:03 [gentoo-dev] hardcoding lib in ebuilds, and using econf without einstall Travis Tilley
2004-08-19 23:14 ` Mike Frysinger
2004-08-19 23:27 ` Michael Sterrett -Mr. Bones.-
2004-08-20  8:06 ` Paul de Vrieze
2004-08-20  8:11 ` Paul de Vrieze
     [not found] ` <20040820081206.C35FC194BB@starwind.homelinux.com>
2004-08-21 10:04   ` Blackace

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox