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

Diff of /eclass/eutils.eclass

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

Revision 1.294 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.294 2008/01/14 04:52:35 vapier 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)
1454# displayed and we'll hang out here until: 1479# displayed and we'll hang out here until:
1455# (1) the file is found on a mounted cdrom 1480# (1) the file is found on a mounted cdrom
1456# (2) the user hits CTRL+C 1481# (2) the user hits CTRL+C
1457_cdrom_locate_file_on_cd() { 1482_cdrom_locate_file_on_cd() {
1458 local mline="" 1483 local mline=""
1459 local showedmsg=0 1484 local showedmsg=0 showjolietmsg=0
1460 1485
1461 while [[ -z ${CDROM_ROOT} ]] ; do 1486 while [[ -z ${CDROM_ROOT} ]] ; do
1462 local i=0 1487 local i=0
1463 local -a cdset=(${*//:/ }) 1488 local -a cdset=(${*//:/ })
1464 if [[ -n ${CDROM_SET} ]] ; then 1489 if [[ -n ${CDROM_SET} ]] ; then
1505 showedmsg=1 1530 showedmsg=1
1506 fi 1531 fi
1507 einfo "Press return to scan for the cd again" 1532 einfo "Press return to scan for the cd again"
1508 einfo "or hit CTRL+C to abort the emerge." 1533 einfo "or hit CTRL+C to abort the emerge."
1509 echo 1534 echo
1535 if [[ ${showjolietmsg} -eq 0 ]] ; then
1536 showjolietmsg=1
1537 else
1510 einfo "If you are having trouble with the detection" 1538 ewarn "If you are having trouble with the detection"
1511 einfo "of your CD, it is possible that you do not have" 1539 ewarn "of your CD, it is possible that you do not have"
1512 einfo "Joliet support enabled in your kernel. Please" 1540 ewarn "Joliet support enabled in your kernel. Please"
1513 einfo "check that CONFIG_JOLIET is enabled in your kernel." 1541 ewarn "check that CONFIG_JOLIET is enabled in your kernel."
1542 ebeep 5
1543 fi
1514 read || die "something is screwed with your system" 1544 read || die "something is screwed with your system"
1515 done 1545 done
1516} 1546}
1517 1547
1518# @FUNCTION: strip-linguas 1548# @FUNCTION: strip-linguas
1578 eerror "preserve_old_lib() must be called from pkg_preinst() only" 1608 eerror "preserve_old_lib() must be called from pkg_preinst() only"
1579 die "Invalid preserve_old_lib() usage" 1609 die "Invalid preserve_old_lib() usage"
1580 fi 1610 fi
1581 [[ -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]"
1582 1612
1613 # let portage worry about it
1614 has preserve-libs ${FEATURES} && return 0
1615
1583 local lib dir 1616 local lib dir
1584 for lib in "$@" ; do 1617 for lib in "$@" ; do
1585 [[ -e ${ROOT}/${lib} ]] || continue 1618 [[ -e ${ROOT}/${lib} ]] || continue
1586 dir=${lib%/*} 1619 dir=${lib%/*}
1587 dodir ${dir} || die "dodir ${dir} failed" 1620 dodir ${dir} || die "dodir ${dir} failed"
1597preserve_old_lib_notify() { 1630preserve_old_lib_notify() {
1598 if [[ ${EBUILD_PHASE} != "postinst" ]] ; then 1631 if [[ ${EBUILD_PHASE} != "postinst" ]] ; then
1599 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"
1600 die "Invalid preserve_old_lib_notify() usage" 1633 die "Invalid preserve_old_lib_notify() usage"
1601 fi 1634 fi
1635
1636 # let portage worry about it
1637 has preserve-libs ${FEATURES} && return 0
1602 1638
1603 local lib notice=0 1639 local lib notice=0
1604 for lib in "$@" ; do 1640 for lib in "$@" ; do
1605 [[ -e ${ROOT}/${lib} ]] || continue 1641 [[ -e ${ROOT}/${lib} ]] || continue
1606 if [[ ${notice} -eq 0 ]] ; then 1642 if [[ ${notice} -eq 0 ]] ; then
1615 ewarn " # revdep-rebuild --library ${lib##*/}" 1651 ewarn " # revdep-rebuild --library ${lib##*/}"
1616 done 1652 done
1617 if [[ ${notice} -eq 1 ]] ; then 1653 if [[ ${notice} -eq 1 ]] ; then
1618 ewarn 1654 ewarn
1619 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"
1620 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
1621 fi 1660 fi
1622} 1661}
1623 1662
1624# @FUNCTION: built_with_use 1663# @FUNCTION: built_with_use
1625# @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>
1630# --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
1631# not actually support the defined USE flags (aka listed in IUSE). 1670# not actually support the defined USE flags (aka listed in IUSE).
1632# 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
1633# 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"
1634# 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
1635# 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
1636# 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
1637# 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
1638# in IUSE like normal USE flags. 1677# in IUSE like normal USE flags.
1639# 1678#
1640# 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
1675 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";;
1676 esac 1715 esac
1677 fi 1716 fi
1678 1717
1679 if [[ ${hidden} == "no" ]] ; then 1718 if [[ ${hidden} == "no" ]] ; then
1680 local IUSE_BUILT=$(<${IUSEFILE}) 1719 local IUSE_BUILT=( $(<"${IUSEFILE}") )
1681 # Don't check USE_EXPAND #147237 1720 # Don't check USE_EXPAND #147237
1682 local expand 1721 local expand
1683 for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]') ; do 1722 for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]') ; do
1684 if [[ $1 == ${expand}_* ]] ; then 1723 if [[ $1 == ${expand}_* ]] ; then
1685 expand="" 1724 expand=""
1686 break 1725 break
1687 fi 1726 fi
1688 done 1727 done
1689 if [[ -n ${expand} ]] ; then 1728 if [[ -n ${expand} ]] ; then
1690 if ! has $1 ${IUSE_BUILT} ; then 1729 if ! has $1 ${IUSE_BUILT[@]#[-+]} ; then
1691 case ${missing_action} in 1730 case ${missing_action} in
1692 true) return 0;; 1731 true) return 0;;
1693 false) return 1;; 1732 false) return 1;;
1694 die) die "$PKG does not actually support the $1 USE flag!";; 1733 die) die "$PKG does not actually support the $1 USE flag!";;
1695 esac 1734 esac
1726 done 1765 done
1727 eend 0 1766 eend 0
1728} 1767}
1729 1768
1730# @FUNCTION: make_wrapper 1769# @FUNCTION: make_wrapper
1731# @USAGE: <wrapper> <target> <chdir> [libpaths] [installpath] 1770# @USAGE: <wrapper> <target> [chdir] [libpaths] [installpath]
1732# @DESCRIPTION: 1771# @DESCRIPTION:
1733# Create a shell wrapper script named wrapper in installpath 1772# Create a shell wrapper script named wrapper in installpath
1734# (defaults to the bindir) to execute target (default of wrapper) by 1773# (defaults to the bindir) to execute target (default of wrapper) by
1735# first optionally setting LD_LIBRARY_PATH to the colon-delimited 1774# first optionally setting LD_LIBRARY_PATH to the colon-delimited
1736# libpaths followed by optionally changing directory to chdir. 1775# libpaths followed by optionally changing directory to chdir.

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

  ViewVC Help
Powered by ViewVC 1.1.20