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

Diff of /eclass/eutils.eclass

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

Revision 1.297 Revision 1.304
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.297 2008/02/15 07:43:45 vapier Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.304 2008/09/20 18:45:26 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)
221 fi 246 fi
222 247
223 echo "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 248 echo "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
224 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 249 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
225 250
251 # Decompress the patch if need be
252 if [[ ${PATCH_SUFFIX} != "patch" ]] ; then
253 echo -n "PIPE_COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
254 echo "${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
255
256 if ! (${PIPE_CMD} ${x} > ${PATCH_TARGET}) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1 ; then
257 echo
258 eerror "Could not extract patch!"
259 #die "Could not extract patch!"
260 count=5
261 break
262 fi
263 else
264 PATCH_TARGET="${x}"
265 fi
266
226 # Allow for prefix to differ ... im lazy, so shoot me :/ 267 # Allow for prefix to differ ... im lazy, so shoot me :/
227 while [ "${count}" -lt 5 ] 268 while [ "${count}" -lt 5 ]
228 do 269 do
229 # Generate some useful debug info ... 270 # Generate some useful debug info ...
230 _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 271 _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
231 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 272 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
232 273
233 if [ "${PATCH_SUFFIX}" != "patch" ]
234 then
235 echo -n "PIPE_COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
236 echo "${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
237 else
238 PATCH_TARGET="${x}"
239 fi
240
241 echo -n "PATCH COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 274 echo -n "PATCH COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
242 echo "patch -p${count} ${popts} < ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 275 echo "patch -p${count} ${popts} < ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
243 276
244 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 277 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
245 _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 278 _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
246
247 if [ "${PATCH_SUFFIX}" != "patch" ]
248 then
249 if ! (${PIPE_CMD} ${x} > ${PATCH_TARGET}) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1
250 then
251 echo
252 eerror "Could not extract patch!"
253 #die "Could not extract patch!"
254 count=5
255 break
256 fi
257 fi
258 279
259 if (cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f ; _epatch_assert) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1 280 if (cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f ; _epatch_assert) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1
260 then 281 then
261 _epatch_draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 282 _epatch_draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
262 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 283 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
1626 ewarn " # revdep-rebuild --library ${lib##*/}" 1647 ewarn " # revdep-rebuild --library ${lib##*/}"
1627 done 1648 done
1628 if [[ ${notice} -eq 1 ]] ; then 1649 if [[ ${notice} -eq 1 ]] ; then
1629 ewarn 1650 ewarn
1630 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"
1631 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
1632 fi 1656 fi
1633} 1657}
1634 1658
1635# @FUNCTION: built_with_use 1659# @FUNCTION: built_with_use
1636# @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>
1641# --missing option controls the behavior if called on a package that does 1665# --missing option controls the behavior if called on a package that does
1642# not actually support the defined USE flags (aka listed in IUSE). 1666# not actually support the defined USE flags (aka listed in IUSE).
1643# The default is to abort (call die). The -a and -o flags control 1667# The default is to abort (call die). The -a and -o flags control
1644# the requirements of the USE flags. They correspond to "and" and "or" 1668# the requirements of the USE flags. They correspond to "and" and "or"
1645# logic. So the -a flag means all listed USE flags must be enabled 1669# logic. So the -a flag means all listed USE flags must be enabled
1646# while the -o flag means at least one of the listed fIUSE flags must be 1670# while the -o flag means at least one of the listed IUSE flags must be
1647# enabled. The --hidden option is really for internal use only as it 1671# enabled. The --hidden option is really for internal use only as it
1648# means the USE flag we're checking is hidden expanded, so it won't be found 1672# means the USE flag we're checking is hidden expanded, so it won't be found
1649# in IUSE like normal USE flags. 1673# in IUSE like normal USE flags.
1650# 1674#
1651# Remember that this function isn't terribly intelligent so order of optional 1675# Remember that this function isn't terribly intelligent so order of optional
1686 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";;
1687 esac 1711 esac
1688 fi 1712 fi
1689 1713
1690 if [[ ${hidden} == "no" ]] ; then 1714 if [[ ${hidden} == "no" ]] ; then
1691 local IUSE_BUILT=$(<${IUSEFILE}) 1715 local IUSE_BUILT=( $(<"${IUSEFILE}") )
1692 # Don't check USE_EXPAND #147237 1716 # Don't check USE_EXPAND #147237
1693 local expand 1717 local expand
1694 for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]') ; do 1718 for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]') ; do
1695 if [[ $1 == ${expand}_* ]] ; then 1719 if [[ $1 == ${expand}_* ]] ; then
1696 expand="" 1720 expand=""
1697 break 1721 break
1698 fi 1722 fi
1699 done 1723 done
1700 if [[ -n ${expand} ]] ; then 1724 if [[ -n ${expand} ]] ; then
1701 if ! has $1 ${IUSE_BUILT} ; then 1725 if ! has $1 ${IUSE_BUILT[@]#[-+]} ; then
1702 case ${missing_action} in 1726 case ${missing_action} in
1703 true) return 0;; 1727 true) return 0;;
1704 false) return 1;; 1728 false) return 1;;
1705 die) die "$PKG does not actually support the $1 USE flag!";; 1729 die) die "$PKG does not actually support the $1 USE flag!";;
1706 esac 1730 esac

Legend:
Removed from v.1.297  
changed lines
  Added in v.1.304

  ViewVC Help
Powered by ViewVC 1.1.20