/[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.317
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.317 2009/03/01 08:06:00 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
47 sleep 1 47 sleep 1
48 done 48 done
49 fi 49 fi
50} 50}
51 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
71}
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
55EPATCH_SUFFIX="patch.bz2" 76EPATCH_SUFFIX="patch.bz2"
56# Default options for patch 77# Default options for patch
57# Set -g0 to keep RCS, ClearCase, Perforce and SCCS happy. Bug #24571 78# Set -g0 to keep RCS, ClearCase, Perforce and SCCS happy. Bug #24571
58# Set --no-backup-if-mismatch so we don't leave '.orig' files behind. 79# Set --no-backup-if-mismatch so we don't leave '.orig' files behind.
59# Set -E to automatically remove empty files. 80# Set -E to automatically remove empty files.
60EPATCH_OPTS="-g0 -E --no-backup-if-mismatch" 81EPATCH_OPTS="-g0 -E --no-backup-if-mismatch"
61# List of patches not to apply. Not this is only file names, 82# List of patches not to apply. Note this is only file names,
62# and not the full path .. 83# and not the full path ..
63EPATCH_EXCLUDE="" 84EPATCH_EXCLUDE=""
64# Change the printed message for a single patch. 85# Change the printed message for a single patch.
65EPATCH_SINGLE_MSG="" 86EPATCH_SINGLE_MSG=""
66# Change the printed message for multiple patches. 87# Change the printed message for multiple patches.
84# bug they should be left as is to ensure an ebuild can rely on 105# bug they should be left as is to ensure an ebuild can rely on
85# them for. 106# them for.
86# 107#
87# Patches are applied in current directory. 108# Patches are applied in current directory.
88# 109#
89# Bulk Patches should preferibly have the form of: 110# Bulk Patches should preferably have the form of:
90# 111#
91# ??_${ARCH}_foo.${EPATCH_SUFFIX} 112# ??_${ARCH}_foo.${EPATCH_SUFFIX}
92# 113#
93# For example: 114# For example:
94# 115#
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 xz)
189 PIPE_CMD="xz -dc"
190 PATCH_SUFFIX="xz"
191 ;;
192 lzma)
193 PIPE_CMD="lzma -dc"
194 PATCH_SUFFIX="lzma"
195 ;;
167 bz2) 196 bz2)
168 PIPE_CMD="bzip2 -dc" 197 PIPE_CMD="bzip2 -dc"
169 PATCH_SUFFIX="bz2" 198 PATCH_SUFFIX="bz2"
170 ;; 199 ;;
171 gz|Z|z) 200 gz|Z|z)
221 fi 250 fi
222 251
223 echo "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 252 echo "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
224 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 253 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
225 254
255 # Decompress the patch if need be
256 if [[ ${PATCH_SUFFIX} != "patch" ]] ; then
257 echo -n "PIPE_COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
258 echo "${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
259
260 if ! (${PIPE_CMD} ${x} > ${PATCH_TARGET}) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1 ; then
261 echo
262 eerror "Could not extract patch!"
263 #die "Could not extract patch!"
264 count=5
265 break
266 fi
267 else
268 PATCH_TARGET="${x}"
269 fi
270
271 # Check for absolute paths in patches. If sandbox is disabled,
272 # people could (accidently) patch files in the root filesystem.
273 # Or trigger other unpleasantries #237667. So disallow -p0 on
274 # such patches.
275 local abs_paths=$(egrep -n '^[-+]{3} /' "${PATCH_TARGET}" | awk '$2 != "/dev/null" { print }')
276 if [[ -n ${abs_paths} ]] ; then
277 count=1
278 echo "NOTE: skipping -p0 due to absolute paths in patch:" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
279 echo "${abs_paths}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
280 fi
281
226 # Allow for prefix to differ ... im lazy, so shoot me :/ 282 # Allow for prefix to differ ... im lazy, so shoot me :/
227 while [ "${count}" -lt 5 ] 283 while [ "${count}" -lt 5 ]
228 do 284 do
229 # Generate some useful debug info ... 285 # Generate some useful debug info ...
230 _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 286 _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
231 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 287 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
232 288
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##*/} 289 echo -n "PATCH COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
242 echo "patch -p${count} ${popts} < ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 290 echo "patch -p${count} ${popts} < ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
243 291
244 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 292 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
245 _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 293 _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 294
259 if (cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f ; _epatch_assert) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1 295 if (cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f ; _epatch_assert) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1
260 then 296 then
261 _epatch_draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 297 _epatch_draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
262 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 298 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
355# base-system@gentoo.org (Linux) 391# base-system@gentoo.org (Linux)
356# Joe Jezak <josejx@gmail.com> (OS X) 392# Joe Jezak <josejx@gmail.com> (OS X)
357# usata@gentoo.org (OS X) 393# usata@gentoo.org (OS X)
358# Aaron Walker <ka0ttic@gentoo.org> (FreeBSD) 394# Aaron Walker <ka0ttic@gentoo.org> (FreeBSD)
359# @DESCRIPTION: 395# @DESCRIPTION:
360# Small wrapper for getent (Linux), nidump (Mac OS X), 396# Small wrapper for getent (Linux),
397# nidump (< Mac OS X 10.5), dscl (Mac OS X 10.5),
361# and pw (FreeBSD) used in enewuser()/enewgroup() 398# and pw (FreeBSD) used in enewuser()/enewgroup()
362egetent() { 399egetent() {
363 case ${CHOST} in 400 case ${CHOST} in
401 *-darwin9)
402 local mytype=$1
403 [[ "passwd" == $mytype ]] && mytype="Users"
404 [[ "group" == $mytype ]] && mytype="Groups"
405 case "$2" in
406 *[!0-9]*) # Non numeric
407 dscl . -read /$mytype/$2 2>/dev/null |grep RecordName
408 ;;
409 *) # Numeric
410 local mykey="UniqueID"
411 [[ $mytype == "Groups" ]] && mykey="PrimaryGroupID"
412 dscl . -search /$mytype $mykey $2 2>/dev/null
413 ;;
414 esac
415 ;;
364 *-darwin*) 416 *-darwin*)
365 case "$2" in 417 case "$2" in
366 *[!0-9]*) # Non numeric 418 *[!0-9]*) # Non numeric
367 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }" 419 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }"
368 ;; 420 ;;
921 einfo "Passing desktop entry validity check. Install dev-util/desktop-file-utils, if you want to help to improve Gentoo." 973 einfo "Passing desktop entry validity check. Install dev-util/desktop-file-utils, if you want to help to improve Gentoo."
922 fi 974 fi
923} 975}
924 976
925# @FUNCTION: make_session_desktop 977# @FUNCTION: make_session_desktop
926# @USAGE: <title> <command> 978# @USAGE: <title> <command> [command args...]
927# @DESCRIPTION: 979# @DESCRIPTION:
928# Make a GDM/KDM Session file. The title is the file to execute to start the 980# Make a GDM/KDM Session file. The title is the file to execute to start the
929# Window Manager. The command is the name of the Window Manager. 981# Window Manager. The command is the name of the Window Manager.
982#
983# You can set the name of the file via the ${wm} variable.
930make_session_desktop() { 984make_session_desktop() {
931 [[ -z $1 ]] && eerror "make_session_desktop: You must specify the title" && return 1 985 [[ -z $1 ]] && eerror "$0: You must specify the title" && return 1
932 [[ -z $2 ]] && eerror "make_session_desktop: You must specify the command" && return 1 986 [[ -z $2 ]] && eerror "$0: You must specify the command" && return 1
933 987
934 local title=$1 988 local title=$1
935 local command=$2 989 local command=$2
936 local desktop=${T}/${wm}.desktop 990 local desktop=${T}/${wm:-${PN}}.desktop
991 shift 2
937 992
938 cat <<-EOF > "${desktop}" 993 cat <<-EOF > "${desktop}"
939 [Desktop Entry] 994 [Desktop Entry]
940 Name=${title} 995 Name=${title}
941 Comment=This session logs you into ${title} 996 Comment=This session logs you into ${title}
942 Exec=${command} 997 Exec=${command} $*
943 TryExec=${command} 998 TryExec=${command}
944 Type=Application 999 Type=XSession
945 EOF 1000 EOF
946 1001
947 ( 1002 (
948 # wrap the env here so that the 'insinto' call 1003 # wrap the env here so that the 'insinto' call
949 # doesn't corrupt the env of the caller 1004 # doesn't corrupt the env of the caller
1454# displayed and we'll hang out here until: 1509# displayed and we'll hang out here until:
1455# (1) the file is found on a mounted cdrom 1510# (1) the file is found on a mounted cdrom
1456# (2) the user hits CTRL+C 1511# (2) the user hits CTRL+C
1457_cdrom_locate_file_on_cd() { 1512_cdrom_locate_file_on_cd() {
1458 local mline="" 1513 local mline=""
1459 local showedmsg=0 1514 local showedmsg=0 showjolietmsg=0
1460 1515
1461 while [[ -z ${CDROM_ROOT} ]] ; do 1516 while [[ -z ${CDROM_ROOT} ]] ; do
1462 local i=0 1517 local i=0
1463 local -a cdset=(${*//:/ }) 1518 local -a cdset=(${*//:/ })
1464 if [[ -n ${CDROM_SET} ]] ; then 1519 if [[ -n ${CDROM_SET} ]] ; then
1505 showedmsg=1 1560 showedmsg=1
1506 fi 1561 fi
1507 einfo "Press return to scan for the cd again" 1562 einfo "Press return to scan for the cd again"
1508 einfo "or hit CTRL+C to abort the emerge." 1563 einfo "or hit CTRL+C to abort the emerge."
1509 echo 1564 echo
1565 if [[ ${showjolietmsg} -eq 0 ]] ; then
1566 showjolietmsg=1
1567 else
1510 einfo "If you are having trouble with the detection" 1568 ewarn "If you are having trouble with the detection"
1511 einfo "of your CD, it is possible that you do not have" 1569 ewarn "of your CD, it is possible that you do not have"
1512 einfo "Joliet support enabled in your kernel. Please" 1570 ewarn "Joliet support enabled in your kernel. Please"
1513 einfo "check that CONFIG_JOLIET is enabled in your kernel." 1571 ewarn "check that CONFIG_JOLIET is enabled in your kernel."
1572 ebeep 5
1573 fi
1514 read || die "something is screwed with your system" 1574 read || die "something is screwed with your system"
1515 done 1575 done
1516} 1576}
1517 1577
1518# @FUNCTION: strip-linguas 1578# @FUNCTION: strip-linguas
1527# of the lists. 1587# of the lists.
1528strip-linguas() { 1588strip-linguas() {
1529 local ls newls nols 1589 local ls newls nols
1530 if [[ $1 == "-i" ]] || [[ $1 == "-u" ]] ; then 1590 if [[ $1 == "-i" ]] || [[ $1 == "-u" ]] ; then
1531 local op=$1; shift 1591 local op=$1; shift
1532 ls=$(find "$1" -name '*.po' -exec basename {} .po \;); shift 1592 ls=$(find "$1" -name '*.po' -exec basename {} .po ';'); shift
1533 local d f 1593 local d f
1534 for d in "$@" ; do 1594 for d in "$@" ; do
1535 if [[ ${op} == "-u" ]] ; then 1595 if [[ ${op} == "-u" ]] ; then
1536 newls=${ls} 1596 newls=${ls}
1537 else 1597 else
1538 newls="" 1598 newls=""
1539 fi 1599 fi
1540 for f in $(find "$d" -name '*.po' -exec basename {} .po \;) ; do 1600 for f in $(find "$d" -name '*.po' -exec basename {} .po ';') ; do
1541 if [[ ${op} == "-i" ]] ; then 1601 if [[ ${op} == "-i" ]] ; then
1542 hasq ${f} ${ls} && newls="${newls} ${f}" 1602 hasq ${f} ${ls} && newls="${newls} ${f}"
1543 else 1603 else
1544 hasq ${f} ${ls} || newls="${newls} ${f}" 1604 hasq ${f} ${ls} || newls="${newls} ${f}"
1545 fi 1605 fi
1558 else 1618 else
1559 nols="${nols} ${f}" 1619 nols="${nols} ${f}"
1560 fi 1620 fi
1561 done 1621 done
1562 [[ -n ${nols} ]] \ 1622 [[ -n ${nols} ]] \
1563 && ewarn "Sorry, but ${PN} does not support the LINGUAs:" ${nols} 1623 && ewarn "Sorry, but ${PN} does not support the LINGUAS:" ${nols}
1564 export LINGUAS=${newls:1} 1624 export LINGUAS=${newls:1}
1565} 1625}
1566 1626
1567# @FUNCTION: preserve_old_lib 1627# @FUNCTION: preserve_old_lib
1568# @USAGE: <libs to preserve> [more libs] 1628# @USAGE: <libs to preserve> [more libs]
1578 eerror "preserve_old_lib() must be called from pkg_preinst() only" 1638 eerror "preserve_old_lib() must be called from pkg_preinst() only"
1579 die "Invalid preserve_old_lib() usage" 1639 die "Invalid preserve_old_lib() usage"
1580 fi 1640 fi
1581 [[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]" 1641 [[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]"
1582 1642
1643 # let portage worry about it
1644 has preserve-libs ${FEATURES} && return 0
1645
1583 local lib dir 1646 local lib dir
1584 for lib in "$@" ; do 1647 for lib in "$@" ; do
1585 [[ -e ${ROOT}/${lib} ]] || continue 1648 [[ -e ${ROOT}/${lib} ]] || continue
1586 dir=${lib%/*} 1649 dir=${lib%/*}
1587 dodir ${dir} || die "dodir ${dir} failed" 1650 dodir ${dir} || die "dodir ${dir} failed"
1597preserve_old_lib_notify() { 1660preserve_old_lib_notify() {
1598 if [[ ${EBUILD_PHASE} != "postinst" ]] ; then 1661 if [[ ${EBUILD_PHASE} != "postinst" ]] ; then
1599 eerror "preserve_old_lib_notify() must be called from pkg_postinst() only" 1662 eerror "preserve_old_lib_notify() must be called from pkg_postinst() only"
1600 die "Invalid preserve_old_lib_notify() usage" 1663 die "Invalid preserve_old_lib_notify() usage"
1601 fi 1664 fi
1665
1666 # let portage worry about it
1667 has preserve-libs ${FEATURES} && return 0
1602 1668
1603 local lib notice=0 1669 local lib notice=0
1604 for lib in "$@" ; do 1670 for lib in "$@" ; do
1605 [[ -e ${ROOT}/${lib} ]] || continue 1671 [[ -e ${ROOT}/${lib} ]] || continue
1606 if [[ ${notice} -eq 0 ]] ; then 1672 if [[ ${notice} -eq 0 ]] ; then
1615 ewarn " # revdep-rebuild --library ${lib##*/}" 1681 ewarn " # revdep-rebuild --library ${lib##*/}"
1616 done 1682 done
1617 if [[ ${notice} -eq 1 ]] ; then 1683 if [[ ${notice} -eq 1 ]] ; then
1618 ewarn 1684 ewarn
1619 ewarn "Once you've finished running revdep-rebuild, it should be safe to" 1685 ewarn "Once you've finished running revdep-rebuild, it should be safe to"
1620 ewarn "delete the old libraries." 1686 ewarn "delete the old libraries. Here is a copy & paste for the lazy:"
1687 for lib in "$@" ; do
1688 ewarn " # rm '${lib}'"
1689 done
1621 fi 1690 fi
1622} 1691}
1623 1692
1624# @FUNCTION: built_with_use 1693# @FUNCTION: built_with_use
1625# @USAGE: [--hidden] [--missing <action>] [-a|-o] <DEPEND ATOM> <List of USE flags> 1694# @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 1699# --missing option controls the behavior if called on a package that does
1631# not actually support the defined USE flags (aka listed in IUSE). 1700# 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 1701# 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" 1702# 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 1703# 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 1704# 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 1705# 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 1706# means the USE flag we're checking is hidden expanded, so it won't be found
1638# in IUSE like normal USE flags. 1707# in IUSE like normal USE flags.
1639# 1708#
1640# Remember that this function isn't terribly intelligent so order of optional 1709# 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";; 1744 die) die "Unable to determine what USE flags $PKG was built with";;
1676 esac 1745 esac
1677 fi 1746 fi
1678 1747
1679 if [[ ${hidden} == "no" ]] ; then 1748 if [[ ${hidden} == "no" ]] ; then
1680 local IUSE_BUILT=$(<${IUSEFILE}) 1749 local IUSE_BUILT=( $(<"${IUSEFILE}") )
1681 # Don't check USE_EXPAND #147237 1750 # Don't check USE_EXPAND #147237
1682 local expand 1751 local expand
1683 for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]') ; do 1752 for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]') ; do
1684 if [[ $1 == ${expand}_* ]] ; then 1753 if [[ $1 == ${expand}_* ]] ; then
1685 expand="" 1754 expand=""
1686 break 1755 break
1687 fi 1756 fi
1688 done 1757 done
1689 if [[ -n ${expand} ]] ; then 1758 if [[ -n ${expand} ]] ; then
1690 if ! has $1 ${IUSE_BUILT} ; then 1759 if ! has $1 ${IUSE_BUILT[@]#[-+]} ; then
1691 case ${missing_action} in 1760 case ${missing_action} in
1692 true) return 0;; 1761 true) return 0;;
1693 false) return 1;; 1762 false) return 1;;
1694 die) die "$PKG does not actually support the $1 USE flag!";; 1763 die) die "$PKG does not actually support the $1 USE flag!";;
1695 esac 1764 esac
1726 done 1795 done
1727 eend 0 1796 eend 0
1728} 1797}
1729 1798
1730# @FUNCTION: make_wrapper 1799# @FUNCTION: make_wrapper
1731# @USAGE: <wrapper> <target> <chdir> [libpaths] [installpath] 1800# @USAGE: <wrapper> <target> [chdir] [libpaths] [installpath]
1732# @DESCRIPTION: 1801# @DESCRIPTION:
1733# Create a shell wrapper script named wrapper in installpath 1802# Create a shell wrapper script named wrapper in installpath
1734# (defaults to the bindir) to execute target (default of wrapper) by 1803# (defaults to the bindir) to execute target (default of wrapper) by
1735# first optionally setting LD_LIBRARY_PATH to the colon-delimited 1804# first optionally setting LD_LIBRARY_PATH to the colon-delimited
1736# libpaths followed by optionally changing directory to chdir. 1805# libpaths followed by optionally changing directory to chdir.
1759 ) || die 1828 ) || die
1760 else 1829 else
1761 newbin "${tmpwrapper}" "${wrapper}" || die 1830 newbin "${tmpwrapper}" "${wrapper}" || die
1762 fi 1831 fi
1763} 1832}
1833
1834# @FUNCTION: prepalldocs
1835# @USAGE:
1836# @DESCRIPTION:
1837# Compress files in /usr/share/doc which are not already
1838# compressed, excluding /usr/share/doc/${PF}/html.
1839# Uses the ecompressdir to do the compression.
1840# 2009-02-18 by betelgeuse:
1841# Commented because ecompressdir is even more internal to
1842# Portage than prepalldocs (it's not even mentioned in man 5
1843# ebuild). Please submit a better version for review to gentoo-dev
1844# if you want prepalldocs here.
1845#prepalldocs() {
1846# if [[ -n $1 ]] ; then
1847# ewarn "prepalldocs: invalid usage; takes no arguments"
1848# fi
1849
1850# cd "${D}"
1851# [[ -d usr/share/doc ]] || return 0
1852
1853# find usr/share/doc -exec gzip {} +
1854# ecompressdir --ignore /usr/share/doc/${PF}/html
1855# ecompressdir --queue /usr/share/doc
1856#}

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

  ViewVC Help
Powered by ViewVC 1.1.20