/[gentoo-x86]/eclass/eutils.eclass
Gentoo

Diff of /eclass/eutils.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.134 Revision 1.143
1# Copyright 1999-2004 Gentoo Foundation 1# Copyright 1999-2004 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.134 2004/12/30 21:48:23 seemant Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.143 2005/01/26 16:19:12 ka0ttic Exp $
4# 4#
5# Author: Martin Schlemmer <azarah@gentoo.org> 5# Author: Martin Schlemmer <azarah@gentoo.org>
6# 6#
7# This eclass is for general purpose functions that most ebuilds 7# This eclass is for general purpose functions that most ebuilds
8# have to implement themselves. 8# have to implement themselves.
9# 9#
10# NB: If you add anything, please comment it! 10# NB: If you add anything, please comment it!
11 11
12inherit multilib
12ECLASS=eutils 13ECLASS=eutils
13INHERITED="$INHERITED $ECLASS" 14INHERITED="$INHERITED $ECLASS"
14 15
15DEPEND="!bootstrap? ( sys-devel/patch )" 16DEPEND="!bootstrap? ( sys-devel/patch )"
16 17
41 sleep 1 42 sleep 1
42 done 43 done
43 fi 44 fi
44} 45}
45 46
46# This function simply returns the desired lib directory. With portage
47# 2.0.51, we now have support for installing libraries to lib32/lib64
48# to accomidate the needs of multilib systems. It's no longer a good idea
49# to assume all libraries will end up in lib. Replace any (sane) instances
50# where lib is named directly with $(get_libdir) if possible.
51#
52# Travis Tilley <lv@gentoo.org> (24 Aug 2004)
53#
54# Jeremy Huddleston <eradicator@gentoo.org> (23 Dec 2004):
55# Added support for ${ABI} and ${DEFAULT_ABI}. If they're both not set,
56# fall back on old behavior. Any profile that has these set should also
57# depend on a newer version of portage (not yet released) which uses these
58# over CONF_LIBDIR in econf, dolib, etc...
59#
60# For now, this is restricted to the sparc64-multilib ${PROFILE_ARCH} as it
61# is still in testing.
62get_libdir() {
63 LIBDIR_TEST=$(type econf)
64 if [ ! -z "${CONF_LIBDIR_OVERRIDE}" ] ; then
65 # if there is an override, we want to use that... always.
66 CONF_LIBDIR="${CONF_LIBDIR_OVERRIDE}"
67 # We don't need to know the verison of portage. We only need to know
68 # if there is support for CONF_LIBDIR in econf and co.
69 # Danny van Dyk <kugelfang@gentoo.org> 2004/17/09
70 #elif portageq has_version / '<sys-apps/portage-2.0.51_pre20' ; then
71 # # and if there isnt an override, and we're using a version of
72 # # portage without CONF_LIBDIR support, force the use of lib. dolib
73 # # and friends from portage 2.0.50 wont be too happy otherwise.
74 # CONF_LIBDIR="lib"
75 #fi
76 elif [ "${PROFILE_ARCH}" = "sparc64-multilib" ]; then # Using eradicator's LIBDIR_<abi> approach...
77 CONF_LIBDIR="$(get_abi_LIBDIR)"
78 elif [ "${LIBDIR_TEST/CONF_LIBDIR}" == "${LIBDIR_TEST}" ]; then # we don't have CONF_LIBDIR support
79 # will be <portage-2.0.51_pre20
80 CONF_LIBDIR="lib"
81 fi
82 # and of course, default to lib if CONF_LIBDIR isnt set
83 echo ${CONF_LIBDIR:=lib}
84 unset LIBDIR_TEST
85}
86
87get_multilibdir() {
88 [ "${PROFILE_ARCH}" = "sparc64-multilib" ] && die "get_multilibdir called, but it shouldn't be needed on sparc64-multilib"
89 echo ${CONF_MULTILIBDIR:=lib32}
90}
91
92# Sometimes you need to override the value returned by get_libdir. A good
93# example of this is xorg-x11, where lib32 isnt a supported configuration,
94# and where lib64 -must- be used on amd64 (for applications that need lib
95# to be 32bit, such as adobe acrobat). Note that this override also bypasses
96# portage version sanity checking.
97# get_libdir_override expects one argument, the result get_libdir should
98# return:
99#
100# get_libdir_override lib64
101#
102# Travis Tilley <lv@gentoo.org> (31 Aug 2004)
103get_libdir_override() {
104 [ "${PROFILE_ARCH}" = "sparc64-multilib" ] && die "get_libdir_override called, but it shouldn't be needed on sparc64-multilib..."
105 CONF_LIBDIR="$1"
106 CONF_LIBDIR_OVERRIDE="$1"
107}
108
109# This function generate linker scripts in /usr/lib for dynamic 47# This function generate linker scripts in /usr/lib for dynamic
110# libs in /lib. This is to fix linking problems when you have 48# libs in /lib. This is to fix linking problems when you have
111# the .so in /lib, and the .a in /usr/lib. What happens is that 49# the .so in /lib, and the .a in /usr/lib. What happens is that
112# in some cases when linking dynamic, the .a in /usr/lib is used 50# in some cases when linking dynamic, the .a in /usr/lib is used
113# instead of the .so in /lib due to gcc/libtool tweaking ld's 51# instead of the .so in /lib due to gcc/libtool tweaking ld's
267 205
268 echo 206 echo
269 eerror "Cannot find \$EPATCH_SOURCE! Value for \$EPATCH_SOURCE is:" 207 eerror "Cannot find \$EPATCH_SOURCE! Value for \$EPATCH_SOURCE is:"
270 eerror 208 eerror
271 eerror " ${EPATCH_SOURCE}" 209 eerror " ${EPATCH_SOURCE}"
210 eerror " ( ${EPATCH_SOURCE##*/} )"
272 echo 211 echo
273 die "Cannot find \$EPATCH_SOURCE!" 212 die "Cannot find \$EPATCH_SOURCE!"
274 fi 213 fi
275 214
276 local EPATCH_SOURCE="${EPATCH_SOURCE}/*.${EPATCH_SUFFIX}" 215 local EPATCH_SOURCE="${EPATCH_SOURCE}/*.${EPATCH_SUFFIX}"
1543# the following functions are useful in kernel module ebuilds, etc. 1482# the following functions are useful in kernel module ebuilds, etc.
1544# for an example see ivtv or drbd ebuilds 1483# for an example see ivtv or drbd ebuilds
1545 1484
1546# set's ARCH to match what the kernel expects 1485# set's ARCH to match what the kernel expects
1547set_arch_to_kernel() { 1486set_arch_to_kernel() {
1487 i=10
1488 while ((i--)) ; do
1489 ewarn "PLEASE UPDATE TO YOUR PACKAGE TO USE linux-info.eclass"
1490 done
1548 export EUTILS_ECLASS_PORTAGE_ARCH="${ARCH}" 1491 export EUTILS_ECLASS_PORTAGE_ARCH="${ARCH}"
1549 case ${ARCH} in 1492 case ${ARCH} in
1550 x86) export ARCH="i386";; 1493 x86) export ARCH="i386";;
1551 amd64) export ARCH="x86_64";; 1494 amd64) export ARCH="x86_64";;
1552 hppa) export ARCH="parisc";; 1495 hppa) export ARCH="parisc";;
1553 mips) export ARCH="mips";; 1496 mips) export ARCH="mips";;
1497 sparc) export ARCH="$(tc-arch-kernel)";; # Yeah this is ugly, but it's even WORSE if you don't do this. linux-info.eclass's set_arch_to_kernel is fixed, but won't get used over this one!
1554 *) export ARCH="${ARCH}";; 1498 *) export ARCH="${ARCH}";;
1555 esac 1499 esac
1556} 1500}
1557 1501
1558# set's ARCH back to what portage expects 1502# set's ARCH back to what portage expects
1559set_arch_to_portage() { 1503set_arch_to_portage() {
1504 i=10
1505 while ((i--)) ; do
1506 ewarn "PLEASE UPDATE TO YOUR PACKAGE TO USE linux-info.eclass"
1507 done
1560 export ARCH="${EUTILS_ECLASS_PORTAGE_ARCH}" 1508 export ARCH="${EUTILS_ECLASS_PORTAGE_ARCH}"
1561} 1509}
1562 1510
1563# Jeremy Huddleston <eradicator@gentoo.org>: 1511# Jeremy Huddleston <eradicator@gentoo.org>:
1564# preserve_old_lib /path/to/libblah.so.0 1512# preserve_old_lib /path/to/libblah.so.0
1610 einfo "After doing that, you can safely remove ${LIB}" 1558 einfo "After doing that, you can safely remove ${LIB}"
1611 einfo "Note: 'emerge gentoolkit' to get revdep-rebuild" 1559 einfo "Note: 'emerge gentoolkit' to get revdep-rebuild"
1612 fi 1560 fi
1613} 1561}
1614 1562
1615# Hack for people to figure out if a package was built with 1563# Hack for people to figure out if a package was built with
1616# certain USE flags 1564# certain USE flags
1617# 1565#
1618# Usage: built_with_use [-a|-o] <DEPEND ATOM> <List of USE flags> 1566# Usage: built_with_use [-a|-o] <DEPEND ATOM> <List of USE flags>
1619# ex: built_with_use xchat gtk2 1567# ex: built_with_use xchat gtk2
1620# 1568#
1641 shift 1589 shift
1642 done 1590 done
1643 [[ ${opt} = "-a" ]] 1591 [[ ${opt} = "-a" ]]
1644} 1592}
1645 1593
1646# Many configure scripts wrongly bail when a C++ compiler 1594# Many configure scripts wrongly bail when a C++ compiler
1647# could not be detected. #73450 1595# could not be detected. #73450
1648epunt_cxx() { 1596epunt_cxx() {
1649 local dir=$1 1597 local dir=$1
1650 [[ -z ${dir} ]] && dir=${S} 1598 [[ -z ${dir} ]] && dir=${S}
1651 ebegin "Removing useless C++ checks" 1599 ebegin "Removing useless C++ checks"
1654 patch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null 1602 patch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null
1655 done 1603 done
1656 eend 0 1604 eend 0
1657} 1605}
1658 1606
1659# get_abi_var <VAR> [<ABI>] 1607# dopamd [ file ] [ new file ]
1660# returns the value of ${<VAR>_<ABI>} which should be set in make.defaults
1661# 1608#
1662# This code is for testing purposes only with the sparc64-multilib ${PROFILE_ARCH} 1609# Install pam auth config file in /etc/pam.d
1663# and getting a more multilib-aware portage layout. It may end up being used, but for now
1664# it is subject to removal if a better way is worked out.
1665#
1666# ex:
1667# CFLAGS=$(get_abi_var CFLAGS sparc32) # CFLAGS=-m32
1668# 1610#
1669# Note that the prefered method is to set CC="$(tc-getCC) $(get_abi_CFLAGS)" 1611# The first argument, 'file' is required. Install as 'new file', if
1670# This will hopefully be added to portage soon... 1612# specified.
1671#
1672# If <ABI> is not specified, ${ABI} is used.
1673# If <ABI> is not specified and ${ABI} is not defined, ${DEFAULT_ABI} is used.
1674# If <ABI> is not specified and ${ABI} and ${DEFAULT_ABI} are not defined, we return an empty string.
1675#
1676# Jeremy Huddleston <eradicator@gentoo.org>
1677get_abi_var() {
1678 local flag=$1
1679 local abi
1680 if [ $# -gt 1 ]; then
1681 abi=$1
1682 elif [ -n "${ABI}" ]; then
1683 abi=${ABI}
1684 elif [ -n "${DEFAULT_ABI}" ]; then
1685 abi=${DEFAULT_ABI}
1686 else
1687 return 1
1688 fi
1689 eval echo \${${flag}_${abi}}
1690}
1691 1613
1692get_abi_CFLAGS() { get_abi_var CFLAGS $1; } 1614dopamd() {
1693get_abi_CXXFLAGS() { get_abi_var CXXFLAGS $1; } 1615 local pamd="$1" newpamd="${2:-$1}"
1694get_abi_ASFLAGS() { get_abi_var ASFLAGS $1; } 1616 [[ -z "$1" ]] && die "dopamd requires at least one argument."
1695get_abi_LIBDIR() { get_abi_var LIBDIR $1; }
1696 1617
1618 use pam || return 0
1619
1620 insinto /etc/pam.d
1621 # these are the default doins options, but be explicit just in case
1622 insopts -m 0644 -o root -g root
1623 newins ${pamd} ${newpamd} || die "failed to install ${newpamd}"
1624}

Legend:
Removed from v.1.134  
changed lines
  Added in v.1.143

  ViewVC Help
Powered by ViewVC 1.1.20