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

Diff of /eclass/eutils.eclass

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

Revision 1.191 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.191 2005/07/13 19:15:05 eradicator 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
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.191  
changed lines
  Added in v.1.206

  ViewVC Help
Powered by ViewVC 1.1.20