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

Diff of /eclass/eutils.eclass

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

Revision 1.293 Revision 1.301
1# Copyright 1999-2007 Gentoo Foundation 1# Copyright 1999-2007 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.293 2007/11/20 22:32:01 wolf31o2 Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.301 2008/04/05 22:38:26 zmedico Exp $
4 4
5# @ECLASS: eutils.eclass 5# @ECLASS: eutils.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# base-system@gentoo.org 7# base-system@gentoo.org
8# @BLURB: many extra (but common) functions that are used in ebuilds 8# @BLURB: many extra (but common) functions that are used in ebuilds
45 sleep 0.1 &>/dev/null ; sleep 0,1 &>/dev/null 45 sleep 0.1 &>/dev/null ; sleep 0,1 &>/dev/null
46 echo -ne "\a" 46 echo -ne "\a"
47 sleep 1 47 sleep 1
48 done 48 done
49 fi 49 fi
50}
51
52# @FUNCTION: ecvs_clean
53# @USAGE: [list of dirs]
54# @DESCRIPTION:
55# Remove CVS directories recursiveley. Useful when a source tarball contains
56# internal CVS directories. Defaults to $PWD.
57ecvs_clean() {
58 [[ -z $* ]] && set -- .
59 find "$@" -type d -name 'CVS' -prune -print0 | xargs -0 rm -rf
60 find "$@" -type f -name '.cvs*' -print0 | xargs -0 rm -rf
61}
62
63# @FUNCTION: esvn_clean
64# @USAGE: [list of dirs]
65# @DESCRIPTION:
66# Remove .svn directories recursiveley. Useful when a source tarball contains
67# internal Subversion directories. Defaults to $PWD.
68esvn_clean() {
69 [[ -z $* ]] && set -- .
70 find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
50} 71}
51 72
52# Default directory where patches are located 73# Default directory where patches are located
53EPATCH_SOURCE="${WORKDIR}/patch" 74EPATCH_SOURCE="${WORKDIR}/patch"
54# Default extension for patches 75# Default extension for patches
143 local EPATCH_SOURCE="$1/*" 164 local EPATCH_SOURCE="$1/*"
144 else 165 else
145 local EPATCH_SOURCE="$1/*.${EPATCH_SUFFIX}" 166 local EPATCH_SOURCE="$1/*.${EPATCH_SUFFIX}"
146 fi 167 fi
147 else 168 else
148 if [ ! -d ${EPATCH_SOURCE} ] || [ -n "$1" ] 169 if [[ ! -d ${EPATCH_SOURCE} ]] || [[ -n $1 ]] ; then
149 then
150 if [ -n "$1" -a "${EPATCH_SOURCE}" = "${WORKDIR}/patch" ] 170 if [ -n "$1" -a "${EPATCH_SOURCE}" = "${WORKDIR}/patch" ]
151 then 171 then
152 EPATCH_SOURCE="$1" 172 EPATCH_SOURCE="$1"
153 fi 173 fi
154 174
1455# displayed and we'll hang out here until: 1475# displayed and we'll hang out here until:
1456# (1) the file is found on a mounted cdrom 1476# (1) the file is found on a mounted cdrom
1457# (2) the user hits CTRL+C 1477# (2) the user hits CTRL+C
1458_cdrom_locate_file_on_cd() { 1478_cdrom_locate_file_on_cd() {
1459 local mline="" 1479 local mline=""
1460 local showedmsg=0 1480 local showedmsg=0 showjolietmsg=0
1461 1481
1462 while [[ -z ${CDROM_ROOT} ]] ; do 1482 while [[ -z ${CDROM_ROOT} ]] ; do
1463 local i=0 1483 local i=0
1464 local -a cdset=(${*//:/ }) 1484 local -a cdset=(${*//:/ })
1465 if [[ -n ${CDROM_SET} ]] ; then 1485 if [[ -n ${CDROM_SET} ]] ; then
1506 showedmsg=1 1526 showedmsg=1
1507 fi 1527 fi
1508 einfo "Press return to scan for the cd again" 1528 einfo "Press return to scan for the cd again"
1509 einfo "or hit CTRL+C to abort the emerge." 1529 einfo "or hit CTRL+C to abort the emerge."
1510 echo 1530 echo
1531 if [[ ${showjolietmsg} -eq 0 ]] ; then
1532 showjolietmsg=1
1533 else
1511 einfo "If you are having trouble with the detection" 1534 ewarn "If you are having trouble with the detection"
1512 einfo "of your CD, it is possible that you do not have" 1535 ewarn "of your CD, it is possible that you do not have"
1513 einfo "Joliet support enabled in your kernel. Please" 1536 ewarn "Joliet support enabled in your kernel. Please"
1514 einfo "check that CONFIG_JOLIET is enabled in your kernel." 1537 ewarn "check that CONFIG_JOLIET is enabled in your kernel."
1538 ebeep 5
1539 fi
1515 read || die "something is screwed with your system" 1540 read || die "something is screwed with your system"
1516 done 1541 done
1517} 1542}
1518 1543
1519# @FUNCTION: strip-linguas 1544# @FUNCTION: strip-linguas
1579 eerror "preserve_old_lib() must be called from pkg_preinst() only" 1604 eerror "preserve_old_lib() must be called from pkg_preinst() only"
1580 die "Invalid preserve_old_lib() usage" 1605 die "Invalid preserve_old_lib() usage"
1581 fi 1606 fi
1582 [[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]" 1607 [[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]"
1583 1608
1609 # let portage worry about it
1610 has preserve-libs ${FEATURES} && return 0
1611
1584 local lib dir 1612 local lib dir
1585 for lib in "$@" ; do 1613 for lib in "$@" ; do
1586 [[ -e ${ROOT}/${lib} ]] || continue 1614 [[ -e ${ROOT}/${lib} ]] || continue
1587 dir=${lib%/*} 1615 dir=${lib%/*}
1588 dodir ${dir} || die "dodir ${dir} failed" 1616 dodir ${dir} || die "dodir ${dir} failed"
1598preserve_old_lib_notify() { 1626preserve_old_lib_notify() {
1599 if [[ ${EBUILD_PHASE} != "postinst" ]] ; then 1627 if [[ ${EBUILD_PHASE} != "postinst" ]] ; then
1600 eerror "preserve_old_lib_notify() must be called from pkg_postinst() only" 1628 eerror "preserve_old_lib_notify() must be called from pkg_postinst() only"
1601 die "Invalid preserve_old_lib_notify() usage" 1629 die "Invalid preserve_old_lib_notify() usage"
1602 fi 1630 fi
1631
1632 # let portage worry about it
1633 has preserve-libs ${FEATURES} && return 0
1603 1634
1604 local lib notice=0 1635 local lib notice=0
1605 for lib in "$@" ; do 1636 for lib in "$@" ; do
1606 [[ -e ${ROOT}/${lib} ]] || continue 1637 [[ -e ${ROOT}/${lib} ]] || continue
1607 if [[ ${notice} -eq 0 ]] ; then 1638 if [[ ${notice} -eq 0 ]] ; then
1616 ewarn " # revdep-rebuild --library ${lib##*/}" 1647 ewarn " # revdep-rebuild --library ${lib##*/}"
1617 done 1648 done
1618 if [[ ${notice} -eq 1 ]] ; then 1649 if [[ ${notice} -eq 1 ]] ; then
1619 ewarn 1650 ewarn
1620 ewarn "Once you've finished running revdep-rebuild, it should be safe to" 1651 ewarn "Once you've finished running revdep-rebuild, it should be safe to"
1621 ewarn "delete the old libraries." 1652 ewarn "delete the old libraries. Here is a copy & paste for the lazy:"
1653 for lib in "$@" ; do
1654 ewarn " # rm '${lib}'"
1655 done
1622 fi 1656 fi
1623} 1657}
1624 1658
1625# @FUNCTION: built_with_use 1659# @FUNCTION: built_with_use
1626# @USAGE: [--hidden] [--missing <action>] [-a|-o] <DEPEND ATOM> <List of USE flags> 1660# @USAGE: [--hidden] [--missing <action>] [-a|-o] <DEPEND ATOM> <List of USE flags>
1676 die) die "Unable to determine what USE flags $PKG was built with";; 1710 die) die "Unable to determine what USE flags $PKG was built with";;
1677 esac 1711 esac
1678 fi 1712 fi
1679 1713
1680 if [[ ${hidden} == "no" ]] ; then 1714 if [[ ${hidden} == "no" ]] ; then
1681 local IUSE_BUILT=$(<${IUSEFILE}) 1715 local IUSE_BUILT=( $(<"${IUSEFILE}") )
1682 # Don't check USE_EXPAND #147237 1716 # Don't check USE_EXPAND #147237
1683 local expand 1717 local expand
1684 for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]') ; do 1718 for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]') ; do
1685 if [[ $1 == ${expand}_* ]] ; then 1719 if [[ $1 == ${expand}_* ]] ; then
1686 expand="" 1720 expand=""
1687 break 1721 break
1688 fi 1722 fi
1689 done 1723 done
1690 if [[ -n ${expand} ]] ; then 1724 if [[ -n ${expand} ]] ; then
1691 if ! has $1 ${IUSE_BUILT} ; then 1725 if ! has $1 ${IUSE_BUILT[@]#[-+]} ; then
1692 case ${missing_action} in 1726 case ${missing_action} in
1693 true) return 0;; 1727 true) return 0;;
1694 false) return 1;; 1728 false) return 1;;
1695 die) die "$PKG does not actually support the $1 USE flag!";; 1729 die) die "$PKG does not actually support the $1 USE flag!";;
1696 esac 1730 esac
1720epunt_cxx() { 1754epunt_cxx() {
1721 local dir=$1 1755 local dir=$1
1722 [[ -z ${dir} ]] && dir=${S} 1756 [[ -z ${dir} ]] && dir=${S}
1723 ebegin "Removing useless C++ checks" 1757 ebegin "Removing useless C++ checks"
1724 local f 1758 local f
1725 for f in $(find ${dir} -name configure) ; do 1759 find "${dir}" -name configure | while read f ; do
1726 patch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null 1760 patch --no-backup-if-mismatch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null
1727 done 1761 done
1728 eend 0 1762 eend 0
1729} 1763}
1730 1764
1731# @FUNCTION: make_wrapper 1765# @FUNCTION: make_wrapper
1732# @USAGE: <wrapper> <target> <chdir> [libpaths] [installpath] 1766# @USAGE: <wrapper> <target> [chdir] [libpaths] [installpath]
1733# @DESCRIPTION: 1767# @DESCRIPTION:
1734# Create a shell wrapper script named wrapper in installpath 1768# Create a shell wrapper script named wrapper in installpath
1735# (defaults to the bindir) to execute target (default of wrapper) by 1769# (defaults to the bindir) to execute target (default of wrapper) by
1736# first optionally setting LD_LIBRARY_PATH to the colon-delimited 1770# first optionally setting LD_LIBRARY_PATH to the colon-delimited
1737# libpaths followed by optionally changing directory to chdir. 1771# libpaths followed by optionally changing directory to chdir.

Legend:
Removed from v.1.293  
changed lines
  Added in v.1.301

  ViewVC Help
Powered by ViewVC 1.1.20