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

Diff of /eclass/eutils.eclass

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

Revision 1.304 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.304 2008/09/20 18:45:26 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
77# Default options for patch 77# Default options for patch
78# 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
79# 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.
80# Set -E to automatically remove empty files. 80# Set -E to automatically remove empty files.
81EPATCH_OPTS="-g0 -E --no-backup-if-mismatch" 81EPATCH_OPTS="-g0 -E --no-backup-if-mismatch"
82# 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,
83# and not the full path .. 83# and not the full path ..
84EPATCH_EXCLUDE="" 84EPATCH_EXCLUDE=""
85# Change the printed message for a single patch. 85# Change the printed message for a single patch.
86EPATCH_SINGLE_MSG="" 86EPATCH_SINGLE_MSG=""
87# Change the printed message for multiple patches. 87# Change the printed message for multiple patches.
105# 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
106# them for. 106# them for.
107# 107#
108# Patches are applied in current directory. 108# Patches are applied in current directory.
109# 109#
110# Bulk Patches should preferibly have the form of: 110# Bulk Patches should preferably have the form of:
111# 111#
112# ??_${ARCH}_foo.${EPATCH_SUFFIX} 112# ??_${ARCH}_foo.${EPATCH_SUFFIX}
113# 113#
114# For example: 114# For example:
115# 115#
183 183
184 local EPATCH_SOURCE="${EPATCH_SOURCE}/*.${EPATCH_SUFFIX}" 184 local EPATCH_SOURCE="${EPATCH_SOURCE}/*.${EPATCH_SUFFIX}"
185 fi 185 fi
186 186
187 case ${EPATCH_SUFFIX##*\.} in 187 case ${EPATCH_SUFFIX##*\.} in
188 xz)
189 PIPE_CMD="xz -dc"
190 PATCH_SUFFIX="xz"
191 ;;
188 lzma) 192 lzma)
189 PIPE_CMD="lzma -dc" 193 PIPE_CMD="lzma -dc"
190 PATCH_SUFFIX="lzma" 194 PATCH_SUFFIX="lzma"
191 ;; 195 ;;
192 bz2) 196 bz2)
262 fi 266 fi
263 else 267 else
264 PATCH_TARGET="${x}" 268 PATCH_TARGET="${x}"
265 fi 269 fi
266 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
267 # Allow for prefix to differ ... im lazy, so shoot me :/ 282 # Allow for prefix to differ ... im lazy, so shoot me :/
268 while [ "${count}" -lt 5 ] 283 while [ "${count}" -lt 5 ]
269 do 284 do
270 # Generate some useful debug info ... 285 # Generate some useful debug info ...
271 _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 286 _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
376# base-system@gentoo.org (Linux) 391# base-system@gentoo.org (Linux)
377# Joe Jezak <josejx@gmail.com> (OS X) 392# Joe Jezak <josejx@gmail.com> (OS X)
378# usata@gentoo.org (OS X) 393# usata@gentoo.org (OS X)
379# Aaron Walker <ka0ttic@gentoo.org> (FreeBSD) 394# Aaron Walker <ka0ttic@gentoo.org> (FreeBSD)
380# @DESCRIPTION: 395# @DESCRIPTION:
381# 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),
382# and pw (FreeBSD) used in enewuser()/enewgroup() 398# and pw (FreeBSD) used in enewuser()/enewgroup()
383egetent() { 399egetent() {
384 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 ;;
385 *-darwin*) 416 *-darwin*)
386 case "$2" in 417 case "$2" in
387 *[!0-9]*) # Non numeric 418 *[!0-9]*) # Non numeric
388 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }" 419 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }"
389 ;; 420 ;;
942 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."
943 fi 974 fi
944} 975}
945 976
946# @FUNCTION: make_session_desktop 977# @FUNCTION: make_session_desktop
947# @USAGE: <title> <command> 978# @USAGE: <title> <command> [command args...]
948# @DESCRIPTION: 979# @DESCRIPTION:
949# 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
950# 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.
951make_session_desktop() { 984make_session_desktop() {
952 [[ -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
953 [[ -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
954 987
955 local title=$1 988 local title=$1
956 local command=$2 989 local command=$2
957 local desktop=${T}/${wm}.desktop 990 local desktop=${T}/${wm:-${PN}}.desktop
991 shift 2
958 992
959 cat <<-EOF > "${desktop}" 993 cat <<-EOF > "${desktop}"
960 [Desktop Entry] 994 [Desktop Entry]
961 Name=${title} 995 Name=${title}
962 Comment=This session logs you into ${title} 996 Comment=This session logs you into ${title}
963 Exec=${command} 997 Exec=${command} $*
964 TryExec=${command} 998 TryExec=${command}
965 Type=Application 999 Type=XSession
966 EOF 1000 EOF
967 1001
968 ( 1002 (
969 # wrap the env here so that the 'insinto' call 1003 # wrap the env here so that the 'insinto' call
970 # doesn't corrupt the env of the caller 1004 # doesn't corrupt the env of the caller
1553# of the lists. 1587# of the lists.
1554strip-linguas() { 1588strip-linguas() {
1555 local ls newls nols 1589 local ls newls nols
1556 if [[ $1 == "-i" ]] || [[ $1 == "-u" ]] ; then 1590 if [[ $1 == "-i" ]] || [[ $1 == "-u" ]] ; then
1557 local op=$1; shift 1591 local op=$1; shift
1558 ls=$(find "$1" -name '*.po' -exec basename {} .po \;); shift 1592 ls=$(find "$1" -name '*.po' -exec basename {} .po ';'); shift
1559 local d f 1593 local d f
1560 for d in "$@" ; do 1594 for d in "$@" ; do
1561 if [[ ${op} == "-u" ]] ; then 1595 if [[ ${op} == "-u" ]] ; then
1562 newls=${ls} 1596 newls=${ls}
1563 else 1597 else
1564 newls="" 1598 newls=""
1565 fi 1599 fi
1566 for f in $(find "$d" -name '*.po' -exec basename {} .po \;) ; do 1600 for f in $(find "$d" -name '*.po' -exec basename {} .po ';') ; do
1567 if [[ ${op} == "-i" ]] ; then 1601 if [[ ${op} == "-i" ]] ; then
1568 hasq ${f} ${ls} && newls="${newls} ${f}" 1602 hasq ${f} ${ls} && newls="${newls} ${f}"
1569 else 1603 else
1570 hasq ${f} ${ls} || newls="${newls} ${f}" 1604 hasq ${f} ${ls} || newls="${newls} ${f}"
1571 fi 1605 fi
1584 else 1618 else
1585 nols="${nols} ${f}" 1619 nols="${nols} ${f}"
1586 fi 1620 fi
1587 done 1621 done
1588 [[ -n ${nols} ]] \ 1622 [[ -n ${nols} ]] \
1589 && ewarn "Sorry, but ${PN} does not support the LINGUAs:" ${nols} 1623 && ewarn "Sorry, but ${PN} does not support the LINGUAS:" ${nols}
1590 export LINGUAS=${newls:1} 1624 export LINGUAS=${newls:1}
1591} 1625}
1592 1626
1593# @FUNCTION: preserve_old_lib 1627# @FUNCTION: preserve_old_lib
1594# @USAGE: <libs to preserve> [more libs] 1628# @USAGE: <libs to preserve> [more libs]
1794 ) || die 1828 ) || die
1795 else 1829 else
1796 newbin "${tmpwrapper}" "${wrapper}" || die 1830 newbin "${tmpwrapper}" "${wrapper}" || die
1797 fi 1831 fi
1798} 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.304  
changed lines
  Added in v.1.317

  ViewVC Help
Powered by ViewVC 1.1.20