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

Diff of /eclass/eutils.eclass

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

Revision 1.239 Revision 1.252
1# Copyright 1999-2006 Gentoo Foundation 1# Copyright 1999-2006 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.239 2006/06/07 17:39:41 vapier Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.252 2006/10/05 00:12:07 nyhm Exp $
4# 4#
5# This eclass is for general purpose functions that most ebuilds 5# This eclass is for general purpose functions that most ebuilds
6# have to implement themselves. 6# have to implement themselves.
7# 7#
8# NB: If you add anything, please comment it! 8# NB: If you add anything, please comment it!
9#
10# Maintainer: see each individual function, base-system@gentoo.org as default
9 11
10inherit multilib portability 12inherit multilib portability
11 13
12DESCRIPTION="Based on the ${ECLASS} eclass" 14DESCRIPTION="Based on the ${ECLASS} eclass"
13 15
15# to five seconds. If the EPAUSE_IGNORE env var is set, don't wait. If we're not 17# to five seconds. If the EPAUSE_IGNORE env var is set, don't wait. If we're not
16# outputting to a terminal, don't wait. For compatability purposes, the argument 18# outputting to a terminal, don't wait. For compatability purposes, the argument
17# must be an integer greater than zero. 19# must be an integer greater than zero.
18# Bug 62950, Ciaran McCreesh <ciaranm@gentoo.org> (05 Sep 2004) 20# Bug 62950, Ciaran McCreesh <ciaranm@gentoo.org> (05 Sep 2004)
19epause() { 21epause() {
20 if [ -z "$EPAUSE_IGNORE" ] && [ -t 1 ] ; then 22 [[ -z ${EPAUSE_IGNORE} ]] && sleep ${1:-5}
21 sleep ${1:-5}
22 fi
23} 23}
24 24
25# Beep the specified number of times (defaults to five). If our output 25# Beep the specified number of times (defaults to five). If our output
26# is not a terminal, don't beep. If the EBEEP_IGNORE env var is set, 26# is not a terminal, don't beep. If the EBEEP_IGNORE env var is set,
27# don't beep. 27# don't beep.
28# Bug 62950, Ciaran McCreesh <ciaranm@gentoo.org> (05 Sep 2004) 28# Bug 62950, Ciaran McCreesh <ciaranm@gentoo.org> (05 Sep 2004)
29ebeep() { 29ebeep() {
30 local n 30 local n
31 if [ -z "$EBEEP_IGNORE" ] && [ -t 1 ] ; then 31 if [[ -z ${EBEEP_IGNORE} ]] ; then
32 for ((n=1 ; n <= ${1:-5} ; n++)) ; do 32 for ((n=1 ; n <= ${1:-5} ; n++)) ; do
33 echo -ne "\a" 33 echo -ne "\a"
34 sleep 0.1 &>/dev/null ; sleep 0,1 &>/dev/null 34 sleep 0.1 &>/dev/null ; sleep 0,1 &>/dev/null
35 echo -ne "\a" 35 echo -ne "\a"
36 sleep 1 36 sleep 1
55# to point to the latest version of the library present. 55# to point to the latest version of the library present.
56# 56#
57# <azarah@gentoo.org> (26 Oct 2002) 57# <azarah@gentoo.org> (26 Oct 2002)
58# 58#
59gen_usr_ldscript() { 59gen_usr_ldscript() {
60 if [[ $(type -t _tc_gen_usr_ldscript) == "function" ]] ; then
61 _tc_gen_usr_ldscript "$@"
62 return $?
63 fi
64
65 ewarn "QA Notice: Please upgrade your ebuild to use toolchain-funcs"
66 ewarn "QA Notice: rather than gen_usr_ldscript() from eutils"
67
60 local lib libdir=$(get_libdir) 68 local lib libdir=$(get_libdir)
61 # Just make sure it exists 69 # Just make sure it exists
62 dodir /usr/${libdir} 70 dodir /usr/${libdir}
63 71
64 for lib in "${@}" ; do 72 for lib in "${@}" ; do
809 games) 817 games)
810 case ${catmin} in 818 case ${catmin} in
811 action) type=ActionGame;; 819 action) type=ActionGame;;
812 arcade) type=ArcadeGame;; 820 arcade) type=ArcadeGame;;
813 board) type=BoardGame;; 821 board) type=BoardGame;;
814 kid) type=KidsGame;; 822 kids) type=KidsGame;;
815 emulation) type=Emulator;; 823 emulation) type=Emulator;;
816 puzzle) type=LogicGame;; 824 puzzle) type=LogicGame;;
817 rpg) type=RolePlaying;; 825 rpg) type=RolePlaying;;
818 roguelike) type=RolePlaying;; 826 roguelike) type=RolePlaying;;
819 simulation) type=Simulation;; 827 simulation) type=Simulation;;
1107 if [[ -z ${skip} ]] ; then 1115 if [[ -z ${skip} ]] ; then
1108 local ver=$(grep -a '#.*Makeself' "${src}" | awk '{print $NF}') 1116 local ver=$(grep -a '#.*Makeself' "${src}" | awk '{print $NF}')
1109 local skip=0 1117 local skip=0
1110 exe=tail 1118 exe=tail
1111 case ${ver} in 1119 case ${ver} in
1112 1.5.*) # tested 1.5.{3,4,5} ... guessing 1.5.x series is same 1120 1.5.*|1.6.0-nv) # tested 1.5.{3,4,5} ... guessing 1.5.x series is same
1113 skip=$(grep -a ^skip= "${src}" | cut -d= -f2) 1121 skip=$(grep -a ^skip= "${src}" | cut -d= -f2)
1114 ;; 1122 ;;
1115 2.0|2.0.1) 1123 2.0|2.0.1)
1116 skip=$(grep -a ^$'\t'tail "${src}" | awk '{print $2}' | cut -b2-) 1124 skip=$(grep -a ^$'\t'tail "${src}" | awk '{print $2}' | cut -b2-)
1117 ;; 1125 ;;
1240# and when the function returns, you can assume that the cd has been 1248# and when the function returns, you can assume that the cd has been
1241# found at CDROM_ROOT. 1249# found at CDROM_ROOT.
1242# 1250#
1243# normally the cdrom functions will refer to the cds as 'cd #1', 'cd #2', 1251# normally the cdrom functions will refer to the cds as 'cd #1', 'cd #2',
1244# etc... if you want to give the cds better names, then just export 1252# etc... if you want to give the cds better names, then just export
1245# the CDROM_NAME_X variables before calling cdrom_get_cds(). 1253# the appropriate CDROM_NAME variable before calling cdrom_get_cds().
1254# - CDROM_NAME="fooie cd" - for when you only want 1 cd
1255# - CDROM_NAME_1="install cd" - for when you want more than 1 cd
1256# CDROM_NAME_2="data cd"
1257# - CDROM_NAME_SET=( "install cd" "data cd" ) - short hand for CDROM_NAME_#
1246# 1258#
1247# for those multi cd ebuilds, see the cdrom_load_next_cd() below. 1259# for those multi cd ebuilds, see the cdrom_load_next_cd() below.
1248# 1260#
1249# Usage: cdrom_get_cds <file on cd1> [file on cd2] [file on cd3] [...] 1261# Usage: cdrom_get_cds <file on cd1> [file on cd2] [file on cd3] [...]
1250# - this will attempt to locate a cd based upon a file that is on 1262# - this will attempt to locate a cd based upon a file that is on
1301 echo 1313 echo
1302 einfo "For example:" 1314 einfo "For example:"
1303 einfo "export CD_ROOT=/mnt/cdrom" 1315 einfo "export CD_ROOT=/mnt/cdrom"
1304 echo 1316 echo
1305 else 1317 else
1318 if [[ -n ${CDROM_NAME_SET} ]] ; then
1319 # Translate the CDROM_NAME_SET array into CDROM_NAME_#
1320 cdcnt=0
1321 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do
1322 ((++cdcnt))
1323 export CDROM_NAME_${cdcnt}="${CDROM_NAME_SET[$((${cdcnt}-1))]}"
1324 done
1325 fi
1326
1306 einfo "This package will need access to ${CDROM_TOTAL_CDS} cds." 1327 einfo "This package will need access to ${CDROM_TOTAL_CDS} cds."
1307 cdcnt=0 1328 cdcnt=0
1308 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do 1329 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do
1309 ((++cdcnt)) 1330 ((++cdcnt))
1310 var="CDROM_NAME_${cdcnt}" 1331 var="CDROM_NAME_${cdcnt}"
1432# The -i builds a list of po files found in all the 1453# The -i builds a list of po files found in all the
1433# directories and uses the intersection of the lists. 1454# directories and uses the intersection of the lists.
1434# The -u builds a list of po files found in all the 1455# The -u builds a list of po files found in all the
1435# directories and uses the union of the lists. 1456# directories and uses the union of the lists.
1436strip-linguas() { 1457strip-linguas() {
1437 local ls newls 1458 local ls newls nols
1438 if [[ $1 == "-i" ]] || [[ $1 == "-u" ]] ; then 1459 if [[ $1 == "-i" ]] || [[ $1 == "-u" ]] ; then
1439 local op=$1; shift 1460 local op=$1; shift
1440 ls=$(find "$1" -name '*.po' -exec basename {} .po \;); shift 1461 ls=$(find "$1" -name '*.po' -exec basename {} .po \;); shift
1441 local d f 1462 local d f
1442 for d in "$@" ; do 1463 for d in "$@" ; do
1456 done 1477 done
1457 else 1478 else
1458 ls="$@" 1479 ls="$@"
1459 fi 1480 fi
1460 1481
1482 nols=""
1461 newls="" 1483 newls=""
1462 for f in ${LINGUAS} ; do 1484 for f in ${LINGUAS} ; do
1463 if hasq ${f} ${ls} ; then 1485 if hasq ${f} ${ls} ; then
1464 newls="${newls} ${f}" 1486 newls="${newls} ${f}"
1465 else 1487 else
1466 ewarn "Sorry, but ${PN} does not support the ${f} LINGUA" 1488 nols="${nols} ${f}"
1467 fi 1489 fi
1468 done 1490 done
1491 [[ -n ${nols} ]] \
1492 && ewarn "Sorry, but ${PN} does not support the LINGUAs:" ${nols}
1469 export LINGUAS=${newls:1} 1493 export LINGUAS=${newls:1}
1470} 1494}
1471 1495
1472# moved from kernel.eclass since they are generally useful outside of 1496# moved from kernel.eclass since they are generally useful outside of
1473# kernel.eclass -iggy (20041002) 1497# kernel.eclass -iggy (20041002)
1565built_with_use() { 1589built_with_use() {
1566 local opt=$1 1590 local opt=$1
1567 [[ ${opt:0:1} = "-" ]] && shift || opt="-a" 1591 [[ ${opt:0:1} = "-" ]] && shift || opt="-a"
1568 1592
1569 local PKG=$(best_version $1) 1593 local PKG=$(best_version $1)
1594 [[ -z ${PKG} ]] && die "Unable to resolve $1 to an installed package"
1570 shift 1595 shift
1571 1596
1572 local USEFILE=${ROOT}/var/db/pkg/${PKG}/USE 1597 local USEFILE=${ROOT}/var/db/pkg/${PKG}/USE
1598 local IUSEFILE=${ROOT}/var/db/pkg/${PKG}/IUSE
1573 1599
1574 # if the USE file doesnt exist, assume the $PKG is either 1600 # if the USE file doesnt exist, assume the $PKG is either
1575 # injected or package.provided 1601 # injected or package.provided
1576 [[ ! -e ${USEFILE} ]] && return 0 1602 [[ ! -e ${USEFILE} ]] && die "Unable to determine what USE flags $PKG was built with"
1603
1604 local IUSE_BUILT=$(<${IUSEFILE})
1605 # Don't check USE_EXPAND #147237
1606 local expand
1607 for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]') ; do
1608 if [[ $1 == ${expand}_* ]] ; then
1609 expand=""
1610 break
1611 fi
1612 done
1613 if [[ -n ${expand} ]] ; then
1614 has $1 ${IUSE_BUILT} || die "$PKG does not actually support the $1 USE flag!"
1615 fi
1577 1616
1578 local USE_BUILT=$(<${USEFILE}) 1617 local USE_BUILT=$(<${USEFILE})
1579 while [[ $# -gt 0 ]] ; do 1618 while [[ $# -gt 0 ]] ; do
1580 if [[ ${opt} = "-o" ]] ; then 1619 if [[ ${opt} = "-o" ]] ; then
1581 has $1 ${USE_BUILT} && return 0 1620 has $1 ${USE_BUILT} && return 0

Legend:
Removed from v.1.239  
changed lines
  Added in v.1.252

  ViewVC Help
Powered by ViewVC 1.1.20