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

Diff of /eclass/eutils.eclass

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

Revision 1.190 Revision 1.206
1# Copyright 1999-2005 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.190 2005/07/11 15:08:06 swegener Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.206 2005/10/07 16:21:48 flameeyes 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.
9# 9#
10# NB: If you add anything, please comment it! 10# NB: If you add anything, please comment it!
11 11
12inherit multilib 12inherit multilib portability
13 13
14DEPEND="!bootstrap? ( sys-devel/patch )" 14DEPEND="!bootstrap? ( sys-devel/patch )"
15# sys-apps/shadow is needed for useradd, etc, bug #94745. 15# sys-apps/shadow is needed for useradd, etc, bug #94745.
16 16
17DESCRIPTION="Based on the ${ECLASS} eclass" 17DESCRIPTION="Based on the ${ECLASS} eclass"
172 local STDERR_TARGET="${T}/$$.out" 172 local STDERR_TARGET="${T}/$$.out"
173 local PATCH_TARGET="${T}/$$.patch" 173 local PATCH_TARGET="${T}/$$.patch"
174 local PATCH_SUFFIX="" 174 local PATCH_SUFFIX=""
175 local SINGLE_PATCH="no" 175 local SINGLE_PATCH="no"
176 local x="" 176 local x=""
177
178 unset P4CONFIG P4PORT P4USER # keep perforce at bay #56402
177 179
178 if [ "$#" -gt 1 ] 180 if [ "$#" -gt 1 ]
179 then 181 then
180 local m="" 182 local m=""
181 for m in "$@" ; do 183 for m in "$@" ; do
375# vapier@gentoo.org 377# vapier@gentoo.org
376# 378#
377# Takes just 1 optional parameter (the directory to create tmpfile in) 379# Takes just 1 optional parameter (the directory to create tmpfile in)
378emktemp() { 380emktemp() {
379 local exe="touch" 381 local exe="touch"
380 [ "$1" == "-d" ] && exe="mkdir" && shift 382 [[ $1 == -d ]] && exe="mkdir" && shift
381 local topdir="$1" 383 local topdir=$1
382 384
383 if [ -z "${topdir}" ] 385 if [[ -z ${topdir} ]] ; then
384 then
385 [ -z "${T}" ] \ 386 [[ -z ${T} ]] \
386 && topdir="/tmp" \ 387 && topdir="/tmp" \
387 || topdir="${T}" 388 || topdir=${T}
388 fi 389 fi
389 390
390 if [ -z "$(type -p mktemp)" ] 391 if [[ -z $(type -p mktemp) ]] ; then
391 then
392 local tmp=/ 392 local tmp=/
393 while [ -e "${tmp}" ] ; do 393 while [[ -e ${tmp} ]] ; do
394 tmp="${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM}" 394 tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM}
395 done 395 done
396 ${exe} "${tmp}" 396 ${exe} "${tmp}" || ${exe} -p "${tmp}"
397 echo "${tmp}" 397 echo "${tmp}"
398 else 398 else
399 [ "${exe}" == "touch" ] \ 399 [[ ${exe} == "touch" ]] \
400 && exe="-p" \ 400 && exe="-p" \
401 || exe="-d" 401 || exe="-d"
402 mktemp ${exe} "${topdir}" 402 mktemp ${exe} "${topdir}"
403 fi 403 fi
404} 404}
408# Joe Jezak <josejx@gmail.com> and usata@gentoo.org 408# Joe Jezak <josejx@gmail.com> and usata@gentoo.org
409# FBSD stuff: Aaron Walker <ka0ttic@gentoo.org> 409# FBSD stuff: Aaron Walker <ka0ttic@gentoo.org>
410# 410#
411# egetent(database, key) 411# egetent(database, key)
412egetent() { 412egetent() {
413 if [[ "${USERLAND}" == "Darwin" ]] ; then 413 case ${CHOST} in
414 *-darwin*)
414 case "$2" in 415 case "$2" in
415 *[!0-9]*) # Non numeric 416 *[!0-9]*) # Non numeric
416 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }" 417 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }"
417 ;; 418 ;;
418 *) # Numeric 419 *) # Numeric
419 nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }" 420 nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }"
420 ;; 421 ;;
421 esac 422 esac
422 elif [[ "${USERLAND}" == "BSD" ]] ; then 423 ;;
423 local action 424 *-freebsd*)
424 if [ "$1" == "passwd" ] 425 local opts action="user"
425 then 426 [[ $1 == "passwd" ]] || action="group"
426 action="user" 427
427 else 428 # lookup by uid/gid
428 action="group" 429 if [[ $2 == [[:digit:]]* ]] ; then
430 [[ ${action} == "user" ]] && opts="-u" || opts="-g"
429 fi 431 fi
432
430 pw show "${action}" "$2" -q 433 pw show ${action} ${opts} "$2" -q
431 else 434 ;;
435 *-netbsd*)
436 grep "$2:\*:" /etc/$1
437 ;;
438 *)
432 which nscd >& /dev/null && nscd -i "$1" 439 type -p nscd >& /dev/null && nscd -i "$1"
433 getent "$1" "$2" 440 getent "$1" "$2"
434 fi 441 ;;
442 esac
435} 443}
436 444
437# Simplify/standardize adding users to the system 445# Simplify/standardize adding users to the system
438# vapier@gentoo.org 446# vapier@gentoo.org
439# 447#
477 fi 485 fi
478 else 486 else
479 euid="next" 487 euid="next"
480 fi 488 fi
481 if [[ ${euid} == "next" ]] ; then 489 if [[ ${euid} == "next" ]] ; then
482 local pwrange 490 for euid in $(seq 101 999) ; do
483 if [[ ${USERLAND} == "BSD" ]] ; then
484 pwrange=$(jot 898 101)
485 else
486 pwrange=$(seq 101 999)
487 fi
488 for euid in ${pwrange} ; do
489 [[ -z $(egetent passwd ${euid}) ]] && break 491 [[ -z $(egetent passwd ${euid}) ]] && break
490 done 492 done
491 fi 493 fi
492 opts="${opts} -u ${euid}" 494 opts="${opts} -u ${euid}"
493 einfo " - Userid: ${euid}" 495 einfo " - Userid: ${euid}"
498 if [[ ! -e ${eshell} ]] ; then 500 if [[ ! -e ${eshell} ]] ; then
499 eerror "A shell was specified but it does not exist !" 501 eerror "A shell was specified but it does not exist !"
500 die "${eshell} does not exist" 502 die "${eshell} does not exist"
501 fi 503 fi
502 else 504 else
503 case ${USERLAND} in 505 for shell in /sbin/nologin /usr/sbin/nologin /bin/false /usr/bin/false /dev/null ; do
504 Darwin) eshell="/usr/bin/false";; 506 [[ -x ${ROOT}${shell} ]] && break
505 BSD) eshell="/usr/sbin/nologin";; 507 done
506 *) eshell="/bin/false";; 508
507 esac 509 if [[ ${shell} == "/dev/null" ]] ; then
510 eerror "Unable to identify the shell to use"
511 die "Unable to identify the shell to use"
512 fi
513
514 eshell=${shell}
508 fi 515 fi
509 einfo " - Shell: ${eshell}" 516 einfo " - Shell: ${eshell}"
510 opts="${opts} -s ${eshell}" 517 opts="${opts} -s ${eshell}"
511 518
512 # handle homedir 519 # handle homedir
549 einfo " - Groups: ${egroups}" 556 einfo " - Groups: ${egroups}"
550 557
551 # handle extra and add the user 558 # handle extra and add the user
552 local oldsandbox=${SANDBOX_ON} 559 local oldsandbox=${SANDBOX_ON}
553 export SANDBOX_ON="0" 560 export SANDBOX_ON="0"
554 case ${USERLAND} in 561 case ${CHOST} in
555 Darwin) 562 *-darwin*)
556 ### Make the user 563 ### Make the user
557 if [[ -z $@ ]] ; then 564 if [[ -z $@ ]] ; then
558 dscl . create /users/${euser} uid ${euid} 565 dscl . create /users/${euser} uid ${euid}
559 dscl . create /users/${euser} shell ${eshell} 566 dscl . create /users/${euser} shell ${eshell}
560 dscl . create /users/${euser} home ${ehome} 567 dscl . create /users/${euser} home ${ehome}
571 einfo "Please report the ebuild along with the info below" 578 einfo "Please report the ebuild along with the info below"
572 einfo "eextra: $@" 579 einfo "eextra: $@"
573 die "Required function missing" 580 die "Required function missing"
574 fi 581 fi
575 ;; 582 ;;
576 BSD) 583 *-freebsd*)
577 if [[ -z $@ ]] ; then 584 if [[ -z $@ ]] ; then
578 pw useradd ${euser} ${opts} \ 585 pw useradd ${euser} ${opts} \
579 -c "added by portage for ${PN}" \ 586 -c "added by portage for ${PN}" \
580 die "enewuser failed" 587 die "enewuser failed"
581 else 588 else
594 useradd ${opts} ${euser} "$@" \ 601 useradd ${opts} ${euser} "$@" \
595 || die "enewuser failed" 602 || die "enewuser failed"
596 fi 603 fi
597 ;; 604 ;;
598 esac 605 esac
606
607 if [[ ! -e ${ROOT}/${ehome} ]] ; then
608 einfo " - Creating ${ehome} in ${ROOT}"
609 mkdir -p "${ROOT}/${ehome}"
610 chown ${euser} "${ROOT}/${ehome}"
611 chmod 755 "${ROOT}/${ehome}"
612 fi
613
599 export SANDBOX_ON=${oldsandbox} 614 export SANDBOX_ON=${oldsandbox}
600
601 if [ ! -e "${ehome}" ] && [ ! -e "${D}/${ehome}" ]
602 then
603 einfo " - Creating ${ehome} in ${D}"
604 dodir ${ehome}
605 fowners ${euser} ${ehome}
606 fperms 755 ${ehome}
607 fi
608} 615}
609 616
610# Simplify/standardize adding groups to the system 617# Simplify/standardize adding groups to the system
611# vapier@gentoo.org 618# vapier@gentoo.org
612# 619#
641 then 648 then
642 if [ "${egid}" -gt 0 ] 649 if [ "${egid}" -gt 0 ]
643 then 650 then
644 if [ -z "`egetent group ${egid}`" ] 651 if [ -z "`egetent group ${egid}`" ]
645 then 652 then
646 if [[ "${USERLAND}" == "Darwin" ]]; then 653 if [[ "${CHOST}" == *-darwin* ]]; then
647 opts="${opts} ${egid}" 654 opts="${opts} ${egid}"
648 else 655 else
649 opts="${opts} -g ${egid}" 656 opts="${opts} -g ${egid}"
650 fi 657 fi
651 else 658 else
665 opts="${opts} ${eextra}" 672 opts="${opts} ${eextra}"
666 673
667 # add the group 674 # add the group
668 local oldsandbox="${SANDBOX_ON}" 675 local oldsandbox="${SANDBOX_ON}"
669 export SANDBOX_ON="0" 676 export SANDBOX_ON="0"
670 if [[ "${USERLAND}" == "Darwin" ]]; then 677 case ${CHOST} in
678 *-darwin*)
671 if [ ! -z "${eextra}" ]; 679 if [ ! -z "${eextra}" ];
672 then 680 then
673 einfo "Extra options are not supported on Darwin/OS X yet" 681 einfo "Extra options are not supported on Darwin/OS X yet"
674 einfo "Please report the ebuild along with the info below" 682 einfo "Please report the ebuild along with the info below"
675 einfo "eextra: ${eextra}" 683 einfo "eextra: ${eextra}"
676 die "Required function missing" 684 die "Required function missing"
677 fi 685 fi
678 686
679 # If we need the next available 687 # If we need the next available
680 case ${egid} in 688 case ${egid} in
681 *[!0-9]*) # Non numeric 689 *[!0-9]*) # Non numeric
682 for egid in `jot 898 101`; do 690 for egid in $(seq 101 999); do
683 [ -z "`egetent group ${egid}`" ] && break 691 [ -z "`egetent group ${egid}`" ] && break
684 done 692 done
685 esac 693 esac
686 dscl . create /groups/${egroup} gid ${egid} 694 dscl . create /groups/${egroup} gid ${egid}
687 dscl . create /groups/${egroup} passwd '*' 695 dscl . create /groups/${egroup} passwd '*'
688 elif [[ "${USERLAND}" == "BSD" ]] ; then 696 ;;
697
698 *-freebsd*)
689 case ${egid} in 699 case ${egid} in
690 *[!0-9]*) # Non numeric 700 *[!0-9]*) # Non numeric
691 for egid in `jot 898 101`; do 701 for egid in $(seq 101 999); do
692 [ -z "`egetent group ${egid}`" ] && break 702 [ -z "`egetent group ${egid}`" ] && break
693 done 703 done
694 esac 704 esac
695 pw groupadd ${egroup} -g ${egid} || die "enewgroup failed" 705 pw groupadd ${egroup} -g ${egid} || die "enewgroup failed"
696 else 706 ;;
707
708 *-netbsd*)
709 case ${egid} in
710 *[!0-9]*) # Non numeric
711 for egid in $(seq 101 999); do
712 [ -z "`egetent group ${egid}`" ] && break
713 done
714 esac
715 groupadd ${egroup} -g ${egid} || die "enewgroup failed"
716 ;;
717
718 *)
697 groupadd ${opts} ${egroup} || die "enewgroup failed" 719 groupadd ${opts} ${egroup} || die "enewgroup failed"
698 fi 720 ;;
721 esac
699 export SANDBOX_ON="${oldsandbox}" 722 export SANDBOX_ON="${oldsandbox}"
700} 723}
701 724
702# Simple script to replace 'dos2unix' binaries 725# Simple script to replace 'dos2unix' binaries
703# vapier@gentoo.org 726# vapier@gentoo.org
728# name: the name that will show up in the menu 751# name: the name that will show up in the menu
729# icon: give your little like a pretty little icon ... 752# icon: give your little like a pretty little icon ...
730# this can be relative (to /usr/share/pixmaps) or 753# this can be relative (to /usr/share/pixmaps) or
731# a full path to an icon 754# a full path to an icon
732# type: what kind of application is this ? for categories: 755# type: what kind of application is this ? for categories:
733# http://www.freedesktop.org/wiki/Standards_2fmenu_2dspec 756# http://www.freedesktop.org/Standards/desktop-entry-spec
734# path: if your app needs to startup in a specific dir 757# path: if your app needs to startup in a specific dir
735make_desktop_entry() { 758make_desktop_entry() {
736 [[ -z $1 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1 759 [[ -z $1 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1
737 760
738 local exec=${1} 761 local exec=${1}
764 dev) 787 dev)
765 type="Development" 788 type="Development"
766 ;; 789 ;;
767 790
768 games) 791 games)
769 [[ -z ${path} ]] && path=${GAMES_BINDIR}
770
771 case ${catmin} in 792 case ${catmin} in
772 action) type=ActionGame;; 793 action) type=ActionGame;;
773 arcade) type=ArcadeGame;; 794 arcade) type=ArcadeGame;;
774 board) type=BoardGame;; 795 board) type=BoardGame;;
775 kid) type=KidsGame;; 796 kid) type=KidsGame;;
858Exec=${exec} 879Exec=${exec}
859Path=${path} 880Path=${path}
860Icon=${icon} 881Icon=${icon}
861Categories=Application;${type};" > "${desktop}" 882Categories=Application;${type};" > "${desktop}"
862 883
884 (
885 # wrap the env here so that the 'insinto' call
886 # doesn't corrupt the env of the caller
863 insinto /usr/share/applications 887 insinto /usr/share/applications
864 doins "${desktop}" 888 doins "${desktop}"
865 889 )
866 return 0
867} 890}
868 891
869# Make a GDM/KDM Session file 892# Make a GDM/KDM Session file
870# 893#
871# make_desktop_entry(<title>, <command>) 894# make_desktop_entry(<title>, <command>)
933############################################################## 956##############################################################
934 957
935 958
936# for internal use only (unpack_pdv and unpack_makeself) 959# for internal use only (unpack_pdv and unpack_makeself)
937find_unpackable_file() { 960find_unpackable_file() {
938 local src="$1" 961 local src=$1
939 if [ -z "${src}" ] 962 if [[ -z ${src} ]] ; then
940 then
941 src="${DISTDIR}/${A}" 963 src=${DISTDIR}/${A}
942 else 964 else
943 if [ -e "${DISTDIR}/${src}" ] 965 if [[ -e ${DISTDIR}/${src} ]] ; then
944 then
945 src="${DISTDIR}/${src}" 966 src=${DISTDIR}/${src}
946 elif [ -e "${PWD}/${src}" ] 967 elif [[ -e ${PWD}/${src} ]] ; then
947 then
948 src="${PWD}/${src}" 968 src=${PWD}/${src}
949 elif [ -e "${src}" ] 969 elif [[ -e ${src} ]] ; then
950 then
951 src="${src}" 970 src=${src}
952 fi
953 fi 971 fi
954 [ ! -e "${src}" ] && die "Could not find requested archive ${src}" 972 fi
973 [[ ! -e ${src} ]] && return 1
955 echo "${src}" 974 echo "${src}"
956} 975}
957 976
958# Unpack those pesky pdv generated files ... 977# Unpack those pesky pdv generated files ...
959# They're self-unpacking programs with the binary package stuffed in 978# They're self-unpacking programs with the binary package stuffed in
974# lseek 993# lseek
975# root@vapier 0 pdv_unpack # strace -elseek ./hldsupdatetool.bin 994# root@vapier 0 pdv_unpack # strace -elseek ./hldsupdatetool.bin
976# lseek(3, -4, SEEK_END) = 2981250 995# lseek(3, -4, SEEK_END) = 2981250
977# thus we would pass in the value of '4' as the second parameter. 996# thus we would pass in the value of '4' as the second parameter.
978unpack_pdv() { 997unpack_pdv() {
979 local src="`find_unpackable_file $1`" 998 local src=$(find_unpackable_file $1)
980 local sizeoff_t="$2" 999 local sizeoff_t=$2
981 1000
1001 [[ -z ${src} ]] && die "Could not locate source for '$1'"
982 [ -z "${sizeoff_t}" ] && die "No idea what off_t size was used for this pdv :(" 1002 [[ -z ${sizeoff_t} ]] && die "No idea what off_t size was used for this pdv :("
983 1003
984 local shrtsrc="`basename ${src}`" 1004 local shrtsrc="`basename ${src}`"
985 echo ">>> Unpacking ${shrtsrc} to ${PWD}" 1005 echo ">>> Unpacking ${shrtsrc} to ${PWD}"
986 local metaskip=`tail -c ${sizeoff_t} ${src} | hexdump -e \"%i\"` 1006 local metaskip=`tail -c ${sizeoff_t} ${src} | hexdump -e \"%i\"`
987 local tailskip=`tail -c $((${sizeoff_t}*2)) ${src} | head -c ${sizeoff_t} | hexdump -e \"%i\"` 1007 local tailskip=`tail -c $((${sizeoff_t}*2)) ${src} | head -c ${sizeoff_t} | hexdump -e \"%i\"`
1053# Usage: unpack_makeself [file to unpack] [offset] [tail|dd] 1073# Usage: unpack_makeself [file to unpack] [offset] [tail|dd]
1054# - If the file is not specified then unpack will utilize ${A}. 1074# - If the file is not specified then unpack will utilize ${A}.
1055# - If the offset is not specified then we will attempt to extract 1075# - If the offset is not specified then we will attempt to extract
1056# the proper offset from the script itself. 1076# the proper offset from the script itself.
1057unpack_makeself() { 1077unpack_makeself() {
1058 local src="$(find_unpackable_file "$1")" 1078 local src=$(find_unpackable_file "$1")
1059 local skip="$2" 1079 local skip=$2
1060 local exe="$3" 1080 local exe=$3
1061 1081
1082 [[ -z ${src} ]] && die "Could not locate source for '$1'"
1083
1062 local shrtsrc="$(basename "${src}")" 1084 local shrtsrc=$(basename "${src}")
1063 echo ">>> Unpacking ${shrtsrc} to ${PWD}" 1085 echo ">>> Unpacking ${shrtsrc} to ${PWD}"
1064 if [ -z "${skip}" ] 1086 if [ -z "${skip}" ]
1065 then 1087 then
1066 local ver="`grep -a '#.*Makeself' ${src} | awk '{print $NF}'`" 1088 local ver="`grep -a '#.*Makeself' ${src} | awk '{print $NF}'`"
1067 local skip=0 1089 local skip=0
1138check_license() { 1160check_license() {
1139 local lic=$1 1161 local lic=$1
1140 if [ -z "${lic}" ] ; then 1162 if [ -z "${lic}" ] ; then
1141 lic="${PORTDIR}/licenses/${LICENSE}" 1163 lic="${PORTDIR}/licenses/${LICENSE}"
1142 else 1164 else
1143 if [ -e "${PORTDIR}/licenses/${src}" ] ; then 1165 if [ -e "${PORTDIR}/licenses/${lic}" ] ; then
1144 lic="${PORTDIR}/licenses/${src}" 1166 lic="${PORTDIR}/licenses/${lic}"
1145 elif [ -e "${PWD}/${src}" ] ; then 1167 elif [ -e "${PWD}/${lic}" ] ; then
1146 lic="${PWD}/${src}" 1168 lic="${PWD}/${lic}"
1147 elif [ -e "${src}" ] ; then 1169 elif [ -e "${lic}" ] ; then
1148 lic="${src}" 1170 lic="${lic}"
1149 fi
1150 fi 1171 fi
1172 fi
1151 [ ! -f "${lic}" ] && die "Could not find requested license ${src}" 1173 [ ! -f "${lic}" ] && die "Could not find requested license ${lic}"
1152 local l="`basename ${lic}`" 1174 local l="`basename ${lic}`"
1153 1175
1154 # here is where we check for the licenses the user already 1176 # here is where we check for the licenses the user already
1155 # accepted ... if we don't find a match, we make the user accept 1177 # accepted ... if we don't find a match, we make the user accept
1156 local shopts=$- 1178 local shopts=$-
1327# displayed and we'll hang out here until: 1349# displayed and we'll hang out here until:
1328# (1) the file is found on a mounted cdrom 1350# (1) the file is found on a mounted cdrom
1329# (2) the user hits CTRL+C 1351# (2) the user hits CTRL+C
1330cdrom_locate_file_on_cd() { 1352cdrom_locate_file_on_cd() {
1331 while [[ -z ${CDROM_ROOT} ]] ; do 1353 while [[ -z ${CDROM_ROOT} ]] ; do
1332 local dir="$(dirname ${@})" 1354 local dir=$(dirname "$*")
1333 local file="$(basename ${@})" 1355 local file=$(basename "$*")
1334 local mline="" 1356 local mline=""
1335 local showedmsg=0 1357 local showedmsg=0
1336 1358
1337 for mline in $(mount | egrep -e '(iso|cdrom)' | awk '{print $3}') ; do 1359 for mline in $(mount | egrep -e '(iso|cdrom)' | awk '{print $3}') ; do
1338 [[ -d ${mline}/${dir} ]] || continue 1360 [[ -d ${mline}/${dir} ]] || continue
1496 LIB=$1 1518 LIB=$1
1497 1519
1498 if [ -n "${LIB}" -a -f "${ROOT}${LIB}" ]; then 1520 if [ -n "${LIB}" -a -f "${ROOT}${LIB}" ]; then
1499 SONAME=`basename ${LIB}` 1521 SONAME=`basename ${LIB}`
1500 1522
1501 einfo "An old version of an installed library was detected on your system." 1523 ewarn "An old version of an installed library was detected on your system."
1502 einfo "In order to avoid breaking packages that link against it, this older version" 1524 ewarn "In order to avoid breaking packages that link against it, this older version"
1503 einfo "is not being removed. In order to make full use of this newer version," 1525 ewarn "is not being removed. In order to make full use of this newer version,"
1504 einfo "you will need to execute the following command:" 1526 ewarn "you will need to execute the following command:"
1505 einfo " revdep-rebuild --soname ${SONAME}" 1527 ewarn " revdep-rebuild --soname ${SONAME}"
1506 einfo 1528 ewarn
1507 einfo "After doing that, you can safely remove ${LIB}" 1529 ewarn "After doing that, you can safely remove ${LIB}"
1508 einfo "Note: 'emerge gentoolkit' to get revdep-rebuild" 1530 ewarn "Note: 'emerge gentoolkit' to get revdep-rebuild"
1509 fi 1531 fi
1510} 1532}
1511 1533
1512# Hack for people to figure out if a package was built with 1534# Hack for people to figure out if a package was built with
1513# certain USE flags 1535# certain USE flags
1586# $4 == extra LD_LIBRARY_PATH's (make it : delimited) 1608# $4 == extra LD_LIBRARY_PATH's (make it : delimited)
1587# $5 == path for wrapper 1609# $5 == path for wrapper
1588make_wrapper() { 1610make_wrapper() {
1589 local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5 1611 local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5
1590 local tmpwrapper=$(emktemp) 1612 local tmpwrapper=$(emktemp)
1613 # We don't want to quote ${bin} so that people can pass complex
1614 # things as $bin ... "./someprog --args"
1591 cat << EOF > "${tmpwrapper}" 1615 cat << EOF > "${tmpwrapper}"
1592#!/bin/sh 1616#!/bin/sh
1593cd "${chdir}" 1617cd "${chdir:-.}"
1618if [ "\${LD_LIBRARY_PATH+set}" = "set" ] && [ -n "${libdir}" ] ; then
1594export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}" 1619 export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}"
1620fi
1595exec ${bin} "\$@" 1621exec ${bin} "\$@"
1596EOF 1622EOF
1597 chmod go+rx "${tmpwrapper}" 1623 chmod go+rx "${tmpwrapper}"
1598 if [ -n "${5}" ] 1624 if [[ -n ${path} ]] ; then
1599 then
1600 exeinto ${5} 1625 exeinto "${path}"
1601 newexe "${tmpwrapper}" "${wrapper}" 1626 newexe "${tmpwrapper}" "${wrapper}"
1602 else 1627 else
1603 newbin "${tmpwrapper}" "${wrapper}" 1628 newbin "${tmpwrapper}" "${wrapper}"
1604 fi 1629 fi
1605} 1630}

Legend:
Removed from v.1.190  
changed lines
  Added in v.1.206

  ViewVC Help
Powered by ViewVC 1.1.20