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

Diff of /eclass/eutils.eclass

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

Revision 1.296 Revision 1.303
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.296 2008/02/13 20:50:06 wolf31o2 Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.303 2008/09/20 18:32:35 vapier 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
162 183
163 local EPATCH_SOURCE="${EPATCH_SOURCE}/*.${EPATCH_SUFFIX}" 184 local EPATCH_SOURCE="${EPATCH_SOURCE}/*.${EPATCH_SUFFIX}"
164 fi 185 fi
165 186
166 case ${EPATCH_SUFFIX##*\.} in 187 case ${EPATCH_SUFFIX##*\.} in
188 lzma)
189 PIPE_CMD="lzma -dc"
190 PATCH_SUFFIX="lzma"
191 ;;
167 bz2) 192 bz2)
168 PIPE_CMD="bzip2 -dc" 193 PIPE_CMD="bzip2 -dc"
169 PATCH_SUFFIX="bz2" 194 PATCH_SUFFIX="bz2"
170 ;; 195 ;;
171 gz|Z|z) 196 gz|Z|z)
1583 eerror "preserve_old_lib() must be called from pkg_preinst() only" 1608 eerror "preserve_old_lib() must be called from pkg_preinst() only"
1584 die "Invalid preserve_old_lib() usage" 1609 die "Invalid preserve_old_lib() usage"
1585 fi 1610 fi
1586 [[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]" 1611 [[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]"
1587 1612
1613 # let portage worry about it
1614 has preserve-libs ${FEATURES} && return 0
1615
1588 local lib dir 1616 local lib dir
1589 for lib in "$@" ; do 1617 for lib in "$@" ; do
1590 [[ -e ${ROOT}/${lib} ]] || continue 1618 [[ -e ${ROOT}/${lib} ]] || continue
1591 dir=${lib%/*} 1619 dir=${lib%/*}
1592 dodir ${dir} || die "dodir ${dir} failed" 1620 dodir ${dir} || die "dodir ${dir} failed"
1602preserve_old_lib_notify() { 1630preserve_old_lib_notify() {
1603 if [[ ${EBUILD_PHASE} != "postinst" ]] ; then 1631 if [[ ${EBUILD_PHASE} != "postinst" ]] ; then
1604 eerror "preserve_old_lib_notify() must be called from pkg_postinst() only" 1632 eerror "preserve_old_lib_notify() must be called from pkg_postinst() only"
1605 die "Invalid preserve_old_lib_notify() usage" 1633 die "Invalid preserve_old_lib_notify() usage"
1606 fi 1634 fi
1635
1636 # let portage worry about it
1637 has preserve-libs ${FEATURES} && return 0
1607 1638
1608 local lib notice=0 1639 local lib notice=0
1609 for lib in "$@" ; do 1640 for lib in "$@" ; do
1610 [[ -e ${ROOT}/${lib} ]] || continue 1641 [[ -e ${ROOT}/${lib} ]] || continue
1611 if [[ ${notice} -eq 0 ]] ; then 1642 if [[ ${notice} -eq 0 ]] ; then
1620 ewarn " # revdep-rebuild --library ${lib##*/}" 1651 ewarn " # revdep-rebuild --library ${lib##*/}"
1621 done 1652 done
1622 if [[ ${notice} -eq 1 ]] ; then 1653 if [[ ${notice} -eq 1 ]] ; then
1623 ewarn 1654 ewarn
1624 ewarn "Once you've finished running revdep-rebuild, it should be safe to" 1655 ewarn "Once you've finished running revdep-rebuild, it should be safe to"
1625 ewarn "delete the old libraries." 1656 ewarn "delete the old libraries. Here is a copy & paste for the lazy:"
1657 for lib in "$@" ; do
1658 ewarn " # rm '${lib}'"
1659 done
1626 fi 1660 fi
1627} 1661}
1628 1662
1629# @FUNCTION: built_with_use 1663# @FUNCTION: built_with_use
1630# @USAGE: [--hidden] [--missing <action>] [-a|-o] <DEPEND ATOM> <List of USE flags> 1664# @USAGE: [--hidden] [--missing <action>] [-a|-o] <DEPEND ATOM> <List of USE flags>
1635# --missing option controls the behavior if called on a package that does 1669# --missing option controls the behavior if called on a package that does
1636# not actually support the defined USE flags (aka listed in IUSE). 1670# not actually support the defined USE flags (aka listed in IUSE).
1637# The default is to abort (call die). The -a and -o flags control 1671# The default is to abort (call die). The -a and -o flags control
1638# the requirements of the USE flags. They correspond to "and" and "or" 1672# the requirements of the USE flags. They correspond to "and" and "or"
1639# logic. So the -a flag means all listed USE flags must be enabled 1673# logic. So the -a flag means all listed USE flags must be enabled
1640# while the -o flag means at least one of the listed fIUSE flags must be 1674# while the -o flag means at least one of the listed IUSE flags must be
1641# enabled. The --hidden option is really for internal use only as it 1675# enabled. The --hidden option is really for internal use only as it
1642# means the USE flag we're checking is hidden expanded, so it won't be found 1676# means the USE flag we're checking is hidden expanded, so it won't be found
1643# in IUSE like normal USE flags. 1677# in IUSE like normal USE flags.
1644# 1678#
1645# Remember that this function isn't terribly intelligent so order of optional 1679# Remember that this function isn't terribly intelligent so order of optional
1680 die) die "Unable to determine what USE flags $PKG was built with";; 1714 die) die "Unable to determine what USE flags $PKG was built with";;
1681 esac 1715 esac
1682 fi 1716 fi
1683 1717
1684 if [[ ${hidden} == "no" ]] ; then 1718 if [[ ${hidden} == "no" ]] ; then
1685 local IUSE_BUILT=$(<${IUSEFILE}) 1719 local IUSE_BUILT=( $(<"${IUSEFILE}") )
1686 # Don't check USE_EXPAND #147237 1720 # Don't check USE_EXPAND #147237
1687 local expand 1721 local expand
1688 for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]') ; do 1722 for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]') ; do
1689 if [[ $1 == ${expand}_* ]] ; then 1723 if [[ $1 == ${expand}_* ]] ; then
1690 expand="" 1724 expand=""
1691 break 1725 break
1692 fi 1726 fi
1693 done 1727 done
1694 if [[ -n ${expand} ]] ; then 1728 if [[ -n ${expand} ]] ; then
1695 if ! has $1 ${IUSE_BUILT} ; then 1729 if ! has $1 ${IUSE_BUILT[@]#[-+]} ; then
1696 case ${missing_action} in 1730 case ${missing_action} in
1697 true) return 0;; 1731 true) return 0;;
1698 false) return 1;; 1732 false) return 1;;
1699 die) die "$PKG does not actually support the $1 USE flag!";; 1733 die) die "$PKG does not actually support the $1 USE flag!";;
1700 esac 1734 esac

Legend:
Removed from v.1.296  
changed lines
  Added in v.1.303

  ViewVC Help
Powered by ViewVC 1.1.20