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

Diff of /eclass/eutils.eclass

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

Revision 1.147 Revision 1.157
1# Copyright 1999-2004 Gentoo Foundation 1# Copyright 1999-2005 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.147 2005/02/03 23:46:40 azarah Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.157 2005/03/07 17:45:07 carlo Exp $
4# 4#
5# Author: Martin Schlemmer <azarah@gentoo.org> 5# Author: Martin Schlemmer <azarah@gentoo.org>
6# 6#
7# This eclass is for general purpose functions that most ebuilds 7# This eclass is for general purpose functions that most ebuilds
8# have to implement themselves. 8# have to implement themselves.
32# CPU_FLAGS=(mmx mmx2 sse sse2) 32# CPU_FLAGS=(mmx mmx2 sse sse2)
33# ecpu_check CPU_FLAGS 33# ecpu_check CPU_FLAGS
34# Chris White <chriswhite@gentoo.org> (03 Feb 2005) 34# Chris White <chriswhite@gentoo.org> (03 Feb 2005)
35 35
36ecpu_check() { 36ecpu_check() {
37 if [ $CROSSCOMPILE -eq 1 ] || [ ! -e /proc/cpuinfo ] 37 # Think about changing below to: if [ "${CROSSCOMPILE}" -ne 1 -a -e "/proc/cpuinfo" ]
38 # and dropping the else if you do not plan on adding anything to that
39 # empty block ....
40 # PS: also try to add some quoting, and consider rather using ${foo} than $foo ...
41 if [ "${CROSSCOMPILE}" != "1" -a -e "/proc/cpuinfo" ]
38 then 42 then
39 :
40 else
41 CPU_FLAGS=$1 43 CPU_FLAGS=${1}
42 USER_CPU=`grep "flags" /proc/cpuinfo` 44 USER_CPU=`grep "flags" /proc/cpuinfo`
43 45
44 for flags in `seq 1 ${#CPU_FLAGS[@]}` 46 for flags in `seq 1 ${#CPU_FLAGS[@]}`
45 do 47 do
46 if has ${CPU_FLAGS[$flags - 1]} $USER_CPU && ! has ${CPU_FLAGS[$flags - 1]} $USE 48 if has ${CPU_FLAGS[${flags} - 1]} ${USER_CPU} && ! has ${CPU_FLAGS[${flags} - 1]} ${USE}
47 then 49 then
48 ewarn "Your system is ${CPU_FLAGS[$flags - 1]} capable but you don't have it enabled!" 50 ewarn "Your system is ${CPU_FLAGS[${flags} - 1]} capable but you don't have it enabled!"
49 ewarn "You might be cross compiling (in this case set CROSSCOMPILE to 1 to disable this warning." 51 ewarn "You might be cross compiling (in this case set CROSSCOMPILE to 1 to disable this warning."
50 fi 52 fi
51 53
52 if ! has ${CPU_FLAGS[$flags - 1]} $USER_CPU && has ${CPU_FLAGS[$flags -1]} $USE 54 if ! has ${CPU_FLAGS[${flags} - 1]} ${USER_CPU} && has ${CPU_FLAGS[${flags} -1]} ${USE}
53 then 55 then
54 ewarn "You have ${CPU_FLAGS[$flags - 1]} support enabled but your processor doesn't" 56 ewarn "You have ${CPU_FLAGS[${flags} - 1]} support enabled but your processor doesn't"
55 ewarn "Seem to support it! You might be cross compiling or do not have /proc filesystem" 57 ewarn "Seem to support it! You might be cross compiling or do not have /proc filesystem"
56 ewarn "enabled. If either is the case, set CROSSCOMPILE to 1 to disable this warning." 58 ewarn "enabled. If either is the case, set CROSSCOMPILE to 1 to disable this warning."
57 fi 59 fi
58 done 60 done
59 fi 61 fi
290 ([ "${SINGLE_PATCH}" = "yes" -o "${x/_all_}" != "${x}" -o "`eval echo \$\{x/_${ARCH}_\}`" != "${x}" ] || \ 292 ([ "${SINGLE_PATCH}" = "yes" -o "${x/_all_}" != "${x}" -o "`eval echo \$\{x/_${ARCH}_\}`" != "${x}" ] || \
291 [ "${EPATCH_FORCE}" = "yes" ]) 293 [ "${EPATCH_FORCE}" = "yes" ])
292 then 294 then
293 local count=0 295 local count=0
294 local popts="${EPATCH_OPTS}" 296 local popts="${EPATCH_OPTS}"
297 local patchname=${x##*/}
295 298
296 if [ -n "${EPATCH_EXCLUDE}" ] 299 if [ -n "${EPATCH_EXCLUDE}" ]
297 then 300 then
298 if [ "`eval echo \$\{EPATCH_EXCLUDE/${x##*/}\}`" != "${EPATCH_EXCLUDE}" ] 301 if [ "${EPATCH_EXCLUDE/${patchname}}" != "${EPATCH_EXCLUDE}" ]
299 then 302 then
300 continue 303 continue
301 fi 304 fi
302 fi 305 fi
303 306
305 then 308 then
306 if [ -n "${EPATCH_SINGLE_MSG}" ] 309 if [ -n "${EPATCH_SINGLE_MSG}" ]
307 then 310 then
308 einfo "${EPATCH_SINGLE_MSG}" 311 einfo "${EPATCH_SINGLE_MSG}"
309 else 312 else
310 einfo "Applying ${x##*/} ..." 313 einfo "Applying ${patchname} ..."
311 fi 314 fi
312 else 315 else
313 einfo " ${x##*/} ..." 316 einfo " ${patchname} ..."
314 fi 317 fi
315 318
316 echo "***** ${x##*/} *****" > ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 319 echo "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
317 echo >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 320 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
318 321
319 # Allow for prefix to differ ... im lazy, so shoot me :/ 322 # Allow for prefix to differ ... im lazy, so shoot me :/
320 while [ "${count}" -lt 5 ] 323 while [ "${count}" -lt 5 ]
321 do 324 do
322 # Generate some useful debug info ... 325 # Generate some useful debug info ...
323 draw_line "***** ${x##*/} *****" >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 326 draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
324 echo >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 327 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
325 328
326 if [ "${PATCH_SUFFIX}" != "patch" ] 329 if [ "${PATCH_SUFFIX}" != "patch" ]
327 then 330 then
328 echo -n "PIPE_COMMAND: " >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 331 echo -n "PIPE_COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
329 echo "${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 332 echo "${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
330 else 333 else
331 PATCH_TARGET="${x}" 334 PATCH_TARGET="${x}"
332 fi 335 fi
333 336
334 echo -n "PATCH COMMAND: " >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 337 echo -n "PATCH COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
335 echo "patch -p${count} ${popts} < ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 338 echo "patch -p${count} ${popts} < ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
336 339
337 echo >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 340 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
338 draw_line "***** ${x##*/} *****" >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 341 draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
339 342
340 if [ "${PATCH_SUFFIX}" != "patch" ] 343 if [ "${PATCH_SUFFIX}" != "patch" ]
341 then 344 then
342 if ! (${PIPE_CMD} ${x} > ${PATCH_TARGET}) >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 2>&1 345 if ! (${PIPE_CMD} ${x} > ${PATCH_TARGET}) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1
343 then 346 then
344 echo 347 echo
345 eerror "Could not extract patch!" 348 eerror "Could not extract patch!"
346 #die "Could not extract patch!" 349 #die "Could not extract patch!"
347 count=5 350 count=5
348 break 351 break
349 fi 352 fi
350 fi 353 fi
351 354
352 if (cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f) >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 2>&1 355 if (cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1
353 then 356 then
354 draw_line "***** ${x##*/} *****" > ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real 357 draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
355 echo >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real 358 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
356 echo "ACTUALLY APPLYING ${x##*/} ..." >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real 359 echo "ACTUALLY APPLYING ${patchname} ..." >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
357 echo >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real 360 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
358 draw_line "***** ${x##*/} *****" >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real 361 draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
359 362
360 cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real 2>&1 363 cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 2>&1
361 364
362 if [ "$?" -ne 0 ] 365 if [ "$?" -ne 0 ]
363 then 366 then
364 cat ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 367 cat ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
365 echo 368 echo
366 eerror "A dry-run of patch command succeeded, but actually" 369 eerror "A dry-run of patch command succeeded, but actually"
367 eerror "applying the patch failed!" 370 eerror "applying the patch failed!"
368 #die "Real world sux compared to the dreamworld!" 371 #die "Real world sux compared to the dreamworld!"
369 count=5 372 count=5
370 fi 373 fi
371 374
372 rm -f ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real 375 rm -f ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
373 376
374 break 377 break
375 fi 378 fi
376 379
377 count=$((count + 1)) 380 count=$((count + 1))
383 fi 386 fi
384 387
385 if [ "${count}" -eq 5 ] 388 if [ "${count}" -eq 5 ]
386 then 389 then
387 echo 390 echo
388 eerror "Failed Patch: ${x##*/}!" 391 eerror "Failed Patch: ${patchname}!"
389 eerror 392 eerror
390 eerror "Include in your bugreport the contents of:" 393 eerror "Include in your bugreport the contents of:"
391 eerror 394 eerror
392 eerror " ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}" 395 eerror " ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}"
393 echo 396 echo
394 die "Failed Patch: ${x##*/}!" 397 die "Failed Patch: ${patchname}!"
395 fi 398 fi
396 399
397 rm -f ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 400 rm -f ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
398 401
399 eend 0 402 eend 0
400 fi 403 fi
401 done 404 done
402 if [ "${SINGLE_PATCH}" = "no" ] 405 if [ "${SINGLE_PATCH}" = "no" ]
906# name: the name that will show up in the menu 909# name: the name that will show up in the menu
907# icon: give your little like a pretty little icon ... 910# icon: give your little like a pretty little icon ...
908# this can be relative (to /usr/share/pixmaps) or 911# this can be relative (to /usr/share/pixmaps) or
909# a full path to an icon 912# a full path to an icon
910# type: what kind of application is this ? for categories: 913# type: what kind of application is this ? for categories:
911# http://www.freedesktop.org/standards/menu-spec/ 914# http://www.freedesktop.org/wiki/Standards_2fmenu_2dspec
912# path: if your app needs to startup in a specific dir 915# path: if your app needs to startup in a specific dir
913make_desktop_entry() { 916make_desktop_entry() {
914 [ -z "$1" ] && eerror "make_desktop_entry: You must specify the executable" && return 1 917 [ -z "$1" ] && eerror "make_desktop_entry: You must specify the executable" && return 1
915 918
916 local exec="${1}" 919 local exec="${1}"
938 type= 941 type=
939 subdir= 942 subdir=
940 ;; 943 ;;
941 esac 944 esac
942 fi 945 fi
943 local desktop="${T}/${exec}.desktop" 946 local desktop="${T}/${exec%% *}-${P}.desktop"
944 947
945echo "[Desktop Entry] 948echo "[Desktop Entry]
946Encoding=UTF-8 949Encoding=UTF-8
947Version=0.9.2 950Version=0.9.2
948Name=${name} 951Name=${name}
1476# directories and uses the intersection of the lists. 1479# directories and uses the intersection of the lists.
1477# The -u builds a list of po files found in all the 1480# The -u builds a list of po files found in all the
1478# directories and uses the union of the lists. 1481# directories and uses the union of the lists.
1479strip-linguas() { 1482strip-linguas() {
1480 local ls newls 1483 local ls newls
1481 if [ "$1" == "-i" ] || [ "$1" == "-u" ] ; then 1484 if [[ $1 == "-i" ]] || [[ $1 == "-u" ]] ; then
1482 local op="$1"; shift 1485 local op=$1; shift
1483 ls=" $(find "$1" -name '*.po' -printf '%f ') "; shift 1486 ls=" $(find "$1" -name '*.po' -printf '%f ') "; shift
1484 local d f 1487 local d f
1485 for d in "$@" ; do 1488 for d in "$@" ; do
1486 if [ "${op}" == "-u" ] ; then 1489 if [[ ${op} == "-u" ]] ; then
1487 newls="${ls}" 1490 newls=${ls}
1488 else 1491 else
1489 newls="" 1492 newls=""
1490 fi 1493 fi
1491 for f in $(find "$d" -name '*.po' -printf '%f ') ; do 1494 for f in $(find "$d" -name '*.po' -printf '%f ') ; do
1492 if [ "${op}" == "-i" ] ; then 1495 if [[ ${op} == "-i" ]] ; then
1493 [ "${ls/ ${f} /}" != "${ls}" ] && newls="${newls} ${f}" 1496 [[ ${ls/ ${f} /} != ${ls} ]] && newls="${newls} ${f}"
1494 else 1497 else
1495 [ "${ls/ ${f} /}" == "${ls}" ] && newls="${newls} ${f}" 1498 [[ ${ls/ ${f} /} == ${ls} ]] && newls="${newls} ${f}"
1496 fi 1499 fi
1497 done 1500 done
1498 ls="${newls}" 1501 ls=${newls}
1499 done 1502 done
1500 ls="${ls//.po}" 1503 ls=${ls//.po}
1501 else 1504 else
1502 ls="$@" 1505 ls=$@
1503 fi 1506 fi
1504 1507
1505 ls=" ${ls} " 1508 ls=" ${ls} "
1506 newls="" 1509 newls=""
1507 for f in ${LINGUAS} ; do 1510 for f in ${LINGUAS} ; do
1508 if [ "${ls/ ${f} /}" != "${ls}" ] ; then 1511 if [[ ${ls/ ${f} /} != ${ls} ]] ; then
1509 newls="${newls} ${f}" 1512 newls="${newls} ${f}"
1510 else 1513 else
1511 ewarn "Sorry, but ${PN} does not support the ${f} LINGUA" 1514 ewarn "Sorry, but ${PN} does not support the ${f} LINGUA"
1512 fi 1515 fi
1513 done 1516 done
1514 if [ -z "${newls}" ] ; then 1517 if [[ -z ${newls} ]] ; then
1515 unset LINGUAS 1518 unset LINGUAS
1516 else 1519 else
1517 export LINGUAS="${newls}" 1520 export LINGUAS=${newls:1}
1518 fi 1521 fi
1519} 1522}
1520 1523
1521# moved from kernel.eclass since they are generally useful outside of 1524# moved from kernel.eclass since they are generally useful outside of
1522# kernel.eclass -iggy (20041002) 1525# kernel.eclass -iggy (20041002)
1644 patch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null 1647 patch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null
1645 done 1648 done
1646 eend 0 1649 eend 0
1647} 1650}
1648 1651
1649# dopamd [ file ] [ new file ] 1652# dopamd <file> [more files]
1650# 1653#
1651# Install pam auth config file in /etc/pam.d 1654# Install pam auth config file in /etc/pam.d
1652#
1653# The first argument, 'file' is required. Install as 'new file', if
1654# specified.
1655
1656dopamd() { 1655dopamd() {
1657 local pamd="$1" newpamd="${2:-$1}"
1658 [[ -z "$1" ]] && die "dopamd requires at least one argument." 1656 [[ -z $1 ]] && die "dopamd requires at least one argument"
1659 1657
1660 use pam || return 0 1658 use pam || return 0
1661 1659
1662 insinto /etc/pam.d 1660 insinto /etc/pam.d
1663 # these are the default doins options, but be explicit just in case 1661 # these are the default doins options, but be explicit just in case
1664 insopts -m 0644 -o root -g root 1662 insopts -m 0644 -o root -g root
1665 newins ${pamd} ${newpamd} || die "failed to install ${newpamd}" 1663 doins "$@" || die "failed to install $@"
1666} 1664}
1665# newpamd <old name> <new name>
1666#
1667# Install pam file <old name> as <new name> in /etc/pam.d
1668newpamd() {
1669 [[ $# -ne 2 ]] && die "newpamd requires two arguements"
1670
1671 use pam || return 0
1672
1673 insinto /etc/pam.d
1674 # these are the default doins options, but be explicit just in case
1675 insopts -m 0644 -o root -g root
1676 newins "$1" "$2" || die "failed to install $1 as $2"
1677}

Legend:
Removed from v.1.147  
changed lines
  Added in v.1.157

  ViewVC Help
Powered by ViewVC 1.1.20