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

Diff of /eclass/eutils.eclass

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

Revision 1.140 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.140 2005/01/11 04:24:39 vapier 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
1491 case ${ARCH} in 1492 case ${ARCH} in
1492 x86) export ARCH="i386";; 1493 x86) export ARCH="i386";;
1493 amd64) export ARCH="x86_64";; 1494 amd64) export ARCH="x86_64";;
1494 hppa) export ARCH="parisc";; 1495 hppa) export ARCH="parisc";;
1495 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!
1496 *) export ARCH="${ARCH}";; 1498 *) export ARCH="${ARCH}";;
1497 esac 1499 esac
1498} 1500}
1499 1501
1500# set's ARCH back to what portage expects 1502# set's ARCH back to what portage expects
1556 einfo "After doing that, you can safely remove ${LIB}" 1558 einfo "After doing that, you can safely remove ${LIB}"
1557 einfo "Note: 'emerge gentoolkit' to get revdep-rebuild" 1559 einfo "Note: 'emerge gentoolkit' to get revdep-rebuild"
1558 fi 1560 fi
1559} 1561}
1560 1562
1561# 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
1562# certain USE flags 1564# certain USE flags
1563# 1565#
1564# 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>
1565# ex: built_with_use xchat gtk2 1567# ex: built_with_use xchat gtk2
1566# 1568#
1587 shift 1589 shift
1588 done 1590 done
1589 [[ ${opt} = "-a" ]] 1591 [[ ${opt} = "-a" ]]
1590} 1592}
1591 1593
1592# Many configure scripts wrongly bail when a C++ compiler 1594# Many configure scripts wrongly bail when a C++ compiler
1593# could not be detected. #73450 1595# could not be detected. #73450
1594epunt_cxx() { 1596epunt_cxx() {
1595 local dir=$1 1597 local dir=$1
1596 [[ -z ${dir} ]] && dir=${S} 1598 [[ -z ${dir} ]] && dir=${S}
1597 ebegin "Removing useless C++ checks" 1599 ebegin "Removing useless C++ checks"
1600 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
1601 done 1603 done
1602 eend 0 1604 eend 0
1603} 1605}
1604 1606
1605# This function simply returns the desired lib directory. With portage 1607# dopamd [ file ] [ new file ]
1606# 2.0.51, we now have support for installing libraries to lib32/lib64
1607# to accomidate the needs of multilib systems. It's no longer a good idea
1608# to assume all libraries will end up in lib. Replace any (sane) instances
1609# where lib is named directly with $(get_libdir) if possible.
1610# 1608#
1611# Travis Tilley <lv@gentoo.org> (24 Aug 2004) 1609# Install pam auth config file in /etc/pam.d
1612# 1610#
1613# Jeremy Huddleston <eradicator@gentoo.org> (23 Dec 2004): 1611# The first argument, 'file' is required. Install as 'new file', if
1614# Added support for ${ABI} and ${DEFAULT_ABI}. If they're both not set, 1612# specified.
1615# fall back on old behavior. Any profile that has these set should also
1616# depend on a newer version of portage (not yet released) which uses these
1617# over CONF_LIBDIR in econf, dolib, etc...
1618get_libdir() {
1619 LIBDIR_TEST=$(type econf)
1620 if [ ! -z "${CONF_LIBDIR_OVERRIDE}" ] ; then
1621 # if there is an override, we want to use that... always.
1622 CONF_LIBDIR="${CONF_LIBDIR_OVERRIDE}"
1623 # We don't need to know the verison of portage. We only need to know
1624 # if there is support for CONF_LIBDIR in econf and co.
1625 # Danny van Dyk <kugelfang@gentoo.org> 2004/17/09
1626 #elif portageq has_version / '<sys-apps/portage-2.0.51_pre20' ; then
1627 # # and if there isnt an override, and we're using a version of
1628 # # portage without CONF_LIBDIR support, force the use of lib. dolib
1629 # # and friends from portage 2.0.50 wont be too happy otherwise.
1630 # CONF_LIBDIR="lib"
1631 #fi
1632 elif [ -n "$(get_abi_LIBDIR)" ]; then # Using eradicator's LIBDIR_<abi> approach...
1633 CONF_LIBDIR="$(get_abi_LIBDIR)"
1634 elif [ "${LIBDIR_TEST/CONF_LIBDIR}" == "${LIBDIR_TEST}" ]; then # we don't have CONF_LIBDIR support
1635 # will be <portage-2.0.51_pre20
1636 CONF_LIBDIR="lib"
1637 fi
1638 # and of course, default to lib if CONF_LIBDIR isnt set
1639 echo ${CONF_LIBDIR:=lib}
1640 unset LIBDIR_TEST
1641}
1642 1613
1643get_multilibdir() { 1614dopamd() {
1644 if [ -n "$(get_abi_LIBDIR)" ]; then 1615 local pamd="$1" newpamd="${2:-$1}"
1645 eerror "get_multilibdir called, but it shouldn't be needed with the new multilib approach. Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org" 1616 [[ -z "$1" ]] && die "dopamd requires at least one argument."
1646 exit 1
1647 fi
1648 echo ${CONF_MULTILIBDIR:=lib32}
1649}
1650 1617
1651# Sometimes you need to override the value returned by get_libdir. A good 1618 use pam || return 0
1652# example of this is xorg-x11, where lib32 isnt a supported configuration,
1653# and where lib64 -must- be used on amd64 (for applications that need lib
1654# to be 32bit, such as adobe acrobat). Note that this override also bypasses
1655# portage version sanity checking.
1656# get_libdir_override expects one argument, the result get_libdir should
1657# return:
1658#
1659# get_libdir_override lib64
1660#
1661# Travis Tilley <lv@gentoo.org> (31 Aug 2004)
1662get_libdir_override() {
1663 if [ -n "$(get_abi_LIBDIR)" ]; then
1664 eerror "get_libdir_override called, but it shouldn't be needed with the new multilib approach. Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org"
1665 exit 1
1666 fi
1667 CONF_LIBDIR="$1"
1668 CONF_LIBDIR_OVERRIDE="$1"
1669}
1670 1619
1671# get_abi_var <VAR> [<ABI>] 1620 insinto /etc/pam.d
1672# returns the value of ${<VAR>_<ABI>} which should be set in make.defaults 1621 # these are the default doins options, but be explicit just in case
1673# 1622 insopts -m 0644 -o root -g root
1674# ex: 1623 newins ${pamd} ${newpamd} || die "failed to install ${newpamd}"
1675# CFLAGS=$(get_abi_var CFLAGS sparc32) # CFLAGS=-m32
1676#
1677# Note that the prefered method is to set CC="$(tc-getCC) $(get_abi_CFLAGS)"
1678# This will hopefully be added to portage soon...
1679#
1680# If <ABI> is not specified, ${ABI} is used.
1681# If <ABI> is not specified and ${ABI} is not defined, ${DEFAULT_ABI} is used.
1682# If <ABI> is not specified and ${ABI} and ${DEFAULT_ABI} are not defined, we return an empty string.
1683#
1684# Jeremy Huddleston <eradicator@gentoo.org>
1685get_abi_var() {
1686 local flag=${1}
1687 local abi
1688 if [ $# -gt 1 ]; then
1689 abi=${2}
1690 elif [ -n "${ABI}" ]; then
1691 abi=${ABI}
1692 elif [ -n "${DEFAULT_ABI}" ]; then
1693 abi=${DEFAULT_ABI}
1694 else
1695 return 1
1696 fi
1697
1698 local var="${flag}_${abi}"
1699 echo ${!var}
1700} 1624}
1701
1702get_abi_CFLAGS() { get_abi_var CFLAGS ${@}; }
1703get_abi_CXXFLAGS() { get_abi_var CXXFLAGS ${@}; }
1704get_abi_ASFLAGS() { get_abi_var ASFLAGS ${@}; }
1705get_abi_LIBDIR() { get_abi_var LIBDIR ${@}; }
1706
1707# get_all_libdir()
1708# Returns a list of all the libdirs used by this profile
1709get_all_libdirs() {
1710 local libdirs
1711 if [ -n "${MULTILIB_ABIS}" ]; then
1712 for abi in ${MULTILIB_ABIS}; do
1713 libdirs="${libdirs} $(get_abi_LIBDIR ${abi})"
1714 done
1715 libdirs="${libdirs:1}"
1716 elif [ -n "${CONF_LIBDIR}" ]; then
1717 libdirs="${CONF_LIBDIR} ${CONF_MULTILIBDIR:=lib32}"
1718 else
1719 libdirs="lib"
1720 fi
1721
1722 echo "${libdirs}"
1723}

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

  ViewVC Help
Powered by ViewVC 1.1.20