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

Diff of /eclass/eutils.eclass

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

Revision 1.193 Revision 1.212
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.193 2005/07/21 02:16:45 vapier Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.212 2005/10/22 02:32:48 vapier 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"
166# hand its a directory, it will set EPATCH_SOURCE to this. 166# hand its a directory, it will set EPATCH_SOURCE to this.
167# 167#
168# <azarah@gentoo.org> (10 Nov 2002) 168# <azarah@gentoo.org> (10 Nov 2002)
169# 169#
170epatch() { 170epatch() {
171 _epatch_assert() { local _pipestatus=${PIPESTATUS[*]}; [[ ${_pipestatus// /} -eq 0 ]] ; }
171 local PIPE_CMD="" 172 local PIPE_CMD=""
172 local STDERR_TARGET="${T}/$$.out" 173 local STDERR_TARGET="${T}/$$.out"
173 local PATCH_TARGET="${T}/$$.patch" 174 local PATCH_TARGET="${T}/$$.patch"
174 local PATCH_SUFFIX="" 175 local PATCH_SUFFIX=""
175 local SINGLE_PATCH="no" 176 local SINGLE_PATCH="no"
176 local x="" 177 local x=""
178
179 unset P4CONFIG P4PORT P4USER # keep perforce at bay #56402
177 180
178 if [ "$#" -gt 1 ] 181 if [ "$#" -gt 1 ]
179 then 182 then
180 local m="" 183 local m=""
181 for m in "$@" ; do 184 for m in "$@" ; do
311 count=5 314 count=5
312 break 315 break
313 fi 316 fi
314 fi 317 fi
315 318
316 if (cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1 319 if (cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f ; _epatch_assert) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1
317 then 320 then
318 draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 321 draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
319 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 322 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
320 echo "ACTUALLY APPLYING ${patchname} ..." >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 323 echo "ACTUALLY APPLYING ${patchname} ..." >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
321 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 324 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
322 draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 325 draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
323 326
324 cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 2>&1 327 cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 2>&1
328 _epatch_assert
325 329
326 if [ "$?" -ne 0 ] 330 if [ "$?" -ne 0 ]
327 then 331 then
328 cat ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 332 cat ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
329 echo 333 echo
375# vapier@gentoo.org 379# vapier@gentoo.org
376# 380#
377# Takes just 1 optional parameter (the directory to create tmpfile in) 381# Takes just 1 optional parameter (the directory to create tmpfile in)
378emktemp() { 382emktemp() {
379 local exe="touch" 383 local exe="touch"
380 [ "$1" == "-d" ] && exe="mkdir" && shift 384 [[ $1 == -d ]] && exe="mkdir" && shift
381 local topdir="$1" 385 local topdir=$1
382 386
383 if [ -z "${topdir}" ] 387 if [[ -z ${topdir} ]] ; then
384 then
385 [ -z "${T}" ] \ 388 [[ -z ${T} ]] \
386 && topdir="/tmp" \ 389 && topdir="/tmp" \
387 || topdir="${T}" 390 || topdir=${T}
388 fi 391 fi
389 392
390 if [ -z "$(type -p mktemp)" ] 393 if [[ -z $(type -p mktemp) ]] ; then
391 then
392 local tmp=/ 394 local tmp=/
393 while [ -e "${tmp}" ] ; do 395 while [[ -e ${tmp} ]] ; do
394 tmp="${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM}" 396 tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM}
395 done 397 done
396 ${exe} "${tmp}" 398 ${exe} "${tmp}" || ${exe} -p "${tmp}"
397 echo "${tmp}" 399 echo "${tmp}"
398 else 400 else
399 [ "${exe}" == "touch" ] \ 401 [[ ${exe} == "touch" ]] \
400 && exe="-p" \ 402 && exe="-p" \
401 || exe="-d" 403 || exe="-d"
402 mktemp ${exe} "${topdir}" 404 mktemp ${exe} "${topdir}"
403 fi 405 fi
404} 406}
408# Joe Jezak <josejx@gmail.com> and usata@gentoo.org 410# Joe Jezak <josejx@gmail.com> and usata@gentoo.org
409# FBSD stuff: Aaron Walker <ka0ttic@gentoo.org> 411# FBSD stuff: Aaron Walker <ka0ttic@gentoo.org>
410# 412#
411# egetent(database, key) 413# egetent(database, key)
412egetent() { 414egetent() {
413 if [[ "${USERLAND}" == "Darwin" ]] ; then 415 case ${CHOST} in
416 *-darwin*)
414 case "$2" in 417 case "$2" in
415 *[!0-9]*) # Non numeric 418 *[!0-9]*) # Non numeric
416 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }" 419 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }"
417 ;; 420 ;;
418 *) # Numeric 421 *) # Numeric
419 nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }" 422 nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }"
420 ;; 423 ;;
421 esac 424 esac
422 elif [[ "${USERLAND}" == "BSD" ]] ; then 425 ;;
423 local action 426 *-freebsd*)
424 if [ "$1" == "passwd" ] 427 local opts action="user"
425 then 428 [[ $1 == "passwd" ]] || action="group"
426 action="user" 429
427 else 430 # lookup by uid/gid
428 action="group" 431 if [[ $2 == [[:digit:]]* ]] ; then
432 [[ ${action} == "user" ]] && opts="-u" || opts="-g"
429 fi 433 fi
434
430 pw show "${action}" "$2" -q 435 pw show ${action} ${opts} "$2" -q
431 else 436 ;;
437 *-netbsd*)
438 grep "$2:\*:" /etc/$1
439 ;;
440 *)
432 which nscd >& /dev/null && nscd -i "$1" 441 type -p nscd >& /dev/null && nscd -i "$1"
433 getent "$1" "$2" 442 getent "$1" "$2"
434 fi 443 ;;
444 esac
435} 445}
436 446
437# Simplify/standardize adding users to the system 447# Simplify/standardize adding users to the system
438# vapier@gentoo.org 448# vapier@gentoo.org
439# 449#
477 fi 487 fi
478 else 488 else
479 euid="next" 489 euid="next"
480 fi 490 fi
481 if [[ ${euid} == "next" ]] ; then 491 if [[ ${euid} == "next" ]] ; then
482 local pwrange 492 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 493 [[ -z $(egetent passwd ${euid}) ]] && break
490 done 494 done
491 fi 495 fi
492 opts="${opts} -u ${euid}" 496 opts="${opts} -u ${euid}"
493 einfo " - Userid: ${euid}" 497 einfo " - Userid: ${euid}"
498 if [[ ! -e ${eshell} ]] ; then 502 if [[ ! -e ${eshell} ]] ; then
499 eerror "A shell was specified but it does not exist !" 503 eerror "A shell was specified but it does not exist !"
500 die "${eshell} does not exist" 504 die "${eshell} does not exist"
501 fi 505 fi
502 else 506 else
503 case ${USERLAND} in 507 for shell in /sbin/nologin /usr/sbin/nologin /bin/false /usr/bin/false /dev/null ; do
504 Darwin) eshell="/usr/bin/false";; 508 [[ -x ${ROOT}${shell} ]] && break
505 BSD) eshell="/usr/sbin/nologin";; 509 done
506 *) eshell="/bin/false";; 510
507 esac 511 if [[ ${shell} == "/dev/null" ]] ; then
512 eerror "Unable to identify the shell to use"
513 die "Unable to identify the shell to use"
514 fi
515
516 eshell=${shell}
508 fi 517 fi
509 einfo " - Shell: ${eshell}" 518 einfo " - Shell: ${eshell}"
510 opts="${opts} -s ${eshell}" 519 opts="${opts} -s ${eshell}"
511 520
512 # handle homedir 521 # handle homedir
549 einfo " - Groups: ${egroups}" 558 einfo " - Groups: ${egroups}"
550 559
551 # handle extra and add the user 560 # handle extra and add the user
552 local oldsandbox=${SANDBOX_ON} 561 local oldsandbox=${SANDBOX_ON}
553 export SANDBOX_ON="0" 562 export SANDBOX_ON="0"
554 case ${USERLAND} in 563 case ${CHOST} in
555 Darwin) 564 *-darwin*)
556 ### Make the user 565 ### Make the user
557 if [[ -z $@ ]] ; then 566 if [[ -z $@ ]] ; then
558 dscl . create /users/${euser} uid ${euid} 567 dscl . create /users/${euser} uid ${euid}
559 dscl . create /users/${euser} shell ${eshell} 568 dscl . create /users/${euser} shell ${eshell}
560 dscl . create /users/${euser} home ${ehome} 569 dscl . create /users/${euser} home ${ehome}
571 einfo "Please report the ebuild along with the info below" 580 einfo "Please report the ebuild along with the info below"
572 einfo "eextra: $@" 581 einfo "eextra: $@"
573 die "Required function missing" 582 die "Required function missing"
574 fi 583 fi
575 ;; 584 ;;
576 BSD) 585 *-freebsd*)
577 if [[ -z $@ ]] ; then 586 if [[ -z $@ ]] ; then
578 pw useradd ${euser} ${opts} \ 587 pw useradd ${euser} ${opts} \
579 -c "added by portage for ${PN}" \ 588 -c "added by portage for ${PN}" \
580 die "enewuser failed" 589 die "enewuser failed"
581 else 590 else
582 einfo " - Extra: $@" 591 einfo " - Extra: $@"
583 pw useradd ${euser} ${opts} \ 592 pw useradd ${euser} ${opts} \
584 "$@" || die "enewuser failed" 593 "$@" || die "enewuser failed"
594 fi
595 ;;
596
597 *-netbsd*)
598 if [[ -z $@ ]] ; then
599 useradd ${opts} ${euser} || die "enewuser failed"
600 else
601 einfo " - Extra: $@"
602 useradd ${opts} ${euser} "$@" || die "enewuser failed"
585 fi 603 fi
586 ;; 604 ;;
587 *) 605 *)
588 if [[ -z $@ ]] ; then 606 if [[ -z $@ ]] ; then
589 useradd ${opts} ${euser} \ 607 useradd ${opts} ${euser} \
641 then 659 then
642 if [ "${egid}" -gt 0 ] 660 if [ "${egid}" -gt 0 ]
643 then 661 then
644 if [ -z "`egetent group ${egid}`" ] 662 if [ -z "`egetent group ${egid}`" ]
645 then 663 then
646 if [[ "${USERLAND}" == "Darwin" ]]; then 664 if [[ "${CHOST}" == *-darwin* ]]; then
647 opts="${opts} ${egid}" 665 opts="${opts} ${egid}"
648 else 666 else
649 opts="${opts} -g ${egid}" 667 opts="${opts} -g ${egid}"
650 fi 668 fi
651 else 669 else
665 opts="${opts} ${eextra}" 683 opts="${opts} ${eextra}"
666 684
667 # add the group 685 # add the group
668 local oldsandbox="${SANDBOX_ON}" 686 local oldsandbox="${SANDBOX_ON}"
669 export SANDBOX_ON="0" 687 export SANDBOX_ON="0"
670 if [[ "${USERLAND}" == "Darwin" ]]; then 688 case ${CHOST} in
689 *-darwin*)
671 if [ ! -z "${eextra}" ]; 690 if [ ! -z "${eextra}" ];
672 then 691 then
673 einfo "Extra options are not supported on Darwin/OS X yet" 692 einfo "Extra options are not supported on Darwin/OS X yet"
674 einfo "Please report the ebuild along with the info below" 693 einfo "Please report the ebuild along with the info below"
675 einfo "eextra: ${eextra}" 694 einfo "eextra: ${eextra}"
676 die "Required function missing" 695 die "Required function missing"
677 fi 696 fi
678 697
679 # If we need the next available 698 # If we need the next available
680 case ${egid} in 699 case ${egid} in
681 *[!0-9]*) # Non numeric 700 *[!0-9]*) # Non numeric
682 for egid in `jot 898 101`; do 701 for egid in $(seq 101 999); do
683 [ -z "`egetent group ${egid}`" ] && break 702 [ -z "`egetent group ${egid}`" ] && break
684 done 703 done
685 esac 704 esac
686 dscl . create /groups/${egroup} gid ${egid} 705 dscl . create /groups/${egroup} gid ${egid}
687 dscl . create /groups/${egroup} passwd '*' 706 dscl . create /groups/${egroup} passwd '*'
688 elif [[ "${USERLAND}" == "BSD" ]] ; then 707 ;;
708
709 *-freebsd*)
689 case ${egid} in 710 case ${egid} in
690 *[!0-9]*) # Non numeric 711 *[!0-9]*) # Non numeric
691 for egid in `jot 898 101`; do 712 for egid in $(seq 101 999); do
692 [ -z "`egetent group ${egid}`" ] && break 713 [ -z "`egetent group ${egid}`" ] && break
693 done 714 done
694 esac 715 esac
695 pw groupadd ${egroup} -g ${egid} || die "enewgroup failed" 716 pw groupadd ${egroup} -g ${egid} || die "enewgroup failed"
696 else 717 ;;
718
719 *-netbsd*)
720 case ${egid} in
721 *[!0-9]*) # Non numeric
722 for egid in $(seq 101 999); do
723 [ -z "`egetent group ${egid}`" ] && break
724 done
725 esac
726 groupadd -g ${egid} ${egroup} || die "enewgroup failed"
727 ;;
728
729 *)
697 groupadd ${opts} ${egroup} || die "enewgroup failed" 730 groupadd ${opts} ${egroup} || die "enewgroup failed"
698 fi 731 ;;
732 esac
699 export SANDBOX_ON="${oldsandbox}" 733 export SANDBOX_ON="${oldsandbox}"
700} 734}
701 735
702# Simple script to replace 'dos2unix' binaries 736# Simple script to replace 'dos2unix' binaries
703# vapier@gentoo.org 737# vapier@gentoo.org
856Exec=${exec} 890Exec=${exec}
857Path=${path} 891Path=${path}
858Icon=${icon} 892Icon=${icon}
859Categories=Application;${type};" > "${desktop}" 893Categories=Application;${type};" > "${desktop}"
860 894
895 (
896 # wrap the env here so that the 'insinto' call
897 # doesn't corrupt the env of the caller
861 insinto /usr/share/applications 898 insinto /usr/share/applications
862 doins "${desktop}" 899 doins "${desktop}"
863 900 )
864 return 0
865} 901}
866 902
867# Make a GDM/KDM Session file 903# Make a GDM/KDM Session file
868# 904#
869# make_desktop_entry(<title>, <command>) 905# make_desktop_entry(<title>, <command>)
931############################################################## 967##############################################################
932 968
933 969
934# for internal use only (unpack_pdv and unpack_makeself) 970# for internal use only (unpack_pdv and unpack_makeself)
935find_unpackable_file() { 971find_unpackable_file() {
936 local src="$1" 972 local src=$1
937 if [ -z "${src}" ] 973 if [[ -z ${src} ]] ; then
938 then
939 src="${DISTDIR}/${A}" 974 src=${DISTDIR}/${A}
940 else 975 else
941 if [ -e "${DISTDIR}/${src}" ] 976 if [[ -e ${DISTDIR}/${src} ]] ; then
942 then
943 src="${DISTDIR}/${src}" 977 src=${DISTDIR}/${src}
944 elif [ -e "${PWD}/${src}" ] 978 elif [[ -e ${PWD}/${src} ]] ; then
945 then
946 src="${PWD}/${src}" 979 src=${PWD}/${src}
947 elif [ -e "${src}" ] 980 elif [[ -e ${src} ]] ; then
948 then
949 src="${src}" 981 src=${src}
950 fi
951 fi 982 fi
952 [ ! -e "${src}" ] && die "Could not find requested archive ${src}" 983 fi
984 [[ ! -e ${src} ]] && return 1
953 echo "${src}" 985 echo "${src}"
954} 986}
955 987
956# Unpack those pesky pdv generated files ... 988# Unpack those pesky pdv generated files ...
957# They're self-unpacking programs with the binary package stuffed in 989# They're self-unpacking programs with the binary package stuffed in
972# lseek 1004# lseek
973# root@vapier 0 pdv_unpack # strace -elseek ./hldsupdatetool.bin 1005# root@vapier 0 pdv_unpack # strace -elseek ./hldsupdatetool.bin
974# lseek(3, -4, SEEK_END) = 2981250 1006# lseek(3, -4, SEEK_END) = 2981250
975# thus we would pass in the value of '4' as the second parameter. 1007# thus we would pass in the value of '4' as the second parameter.
976unpack_pdv() { 1008unpack_pdv() {
977 local src="`find_unpackable_file $1`" 1009 local src=$(find_unpackable_file $1)
978 local sizeoff_t="$2" 1010 local sizeoff_t=$2
979 1011
1012 [[ -z ${src} ]] && die "Could not locate source for '$1'"
980 [ -z "${sizeoff_t}" ] && die "No idea what off_t size was used for this pdv :(" 1013 [[ -z ${sizeoff_t} ]] && die "No idea what off_t size was used for this pdv :("
981 1014
982 local shrtsrc="`basename ${src}`" 1015 local shrtsrc=$(basename "${src}")
983 echo ">>> Unpacking ${shrtsrc} to ${PWD}" 1016 echo ">>> Unpacking ${shrtsrc} to ${PWD}"
984 local metaskip=`tail -c ${sizeoff_t} ${src} | hexdump -e \"%i\"` 1017 local metaskip=`tail -c ${sizeoff_t} ${src} | hexdump -e \"%i\"`
985 local tailskip=`tail -c $((${sizeoff_t}*2)) ${src} | head -c ${sizeoff_t} | hexdump -e \"%i\"` 1018 local tailskip=`tail -c $((${sizeoff_t}*2)) ${src} | head -c ${sizeoff_t} | hexdump -e \"%i\"`
986 1019
987 # grab metadata for debug reasons 1020 # grab metadata for debug reasons
1051# Usage: unpack_makeself [file to unpack] [offset] [tail|dd] 1084# Usage: unpack_makeself [file to unpack] [offset] [tail|dd]
1052# - If the file is not specified then unpack will utilize ${A}. 1085# - If the file is not specified then unpack will utilize ${A}.
1053# - If the offset is not specified then we will attempt to extract 1086# - If the offset is not specified then we will attempt to extract
1054# the proper offset from the script itself. 1087# the proper offset from the script itself.
1055unpack_makeself() { 1088unpack_makeself() {
1056 local src="$(find_unpackable_file "$1")" 1089 local src=$(find_unpackable_file "$1")
1057 local skip="$2" 1090 local skip=$2
1058 local exe="$3" 1091 local exe=$3
1059 1092
1093 [[ -z ${src} ]] && die "Could not locate source for '$1'"
1094
1060 local shrtsrc="$(basename "${src}")" 1095 local shrtsrc=$(basename "${src}")
1061 echo ">>> Unpacking ${shrtsrc} to ${PWD}" 1096 echo ">>> Unpacking ${shrtsrc} to ${PWD}"
1062 if [ -z "${skip}" ] 1097 if [[ -z ${skip} ]] ; then
1063 then
1064 local ver="`grep -a '#.*Makeself' ${src} | awk '{print $NF}'`" 1098 local ver=$(grep -a '#.*Makeself' "${src}" | awk '{print $NF}')
1065 local skip=0 1099 local skip=0
1066 exe=tail 1100 exe=tail
1067 case ${ver} in 1101 case ${ver} in
1068 1.5.*) # tested 1.5.{3,4,5} ... guessing 1.5.x series is same 1102 1.5.*) # tested 1.5.{3,4,5} ... guessing 1.5.x series is same
1069 skip=$(grep -a ^skip= "${src}" | cut -d= -f2) 1103 skip=$(grep -a ^skip= "${src}" | cut -d= -f2)
1081 ;; 1115 ;;
1082 2.1.3) 1116 2.1.3)
1083 skip=`grep -a ^offset= "${src}" | awk '{print $3}'` 1117 skip=`grep -a ^offset= "${src}" | awk '{print $3}'`
1084 let skip="skip + 1" 1118 let skip="skip + 1"
1085 ;; 1119 ;;
1086 2.1.4) 1120 2.1.4|2.1.5)
1087 skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1) 1121 skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1)
1088 skip=$(head -n ${skip} "${src}" | wc -c) 1122 skip=$(head -n ${skip} "${src}" | wc -c)
1089 exe="dd" 1123 exe="dd"
1090 ;; 1124 ;;
1091 *) 1125 *)
1136check_license() { 1170check_license() {
1137 local lic=$1 1171 local lic=$1
1138 if [ -z "${lic}" ] ; then 1172 if [ -z "${lic}" ] ; then
1139 lic="${PORTDIR}/licenses/${LICENSE}" 1173 lic="${PORTDIR}/licenses/${LICENSE}"
1140 else 1174 else
1141 if [ -e "${PORTDIR}/licenses/${src}" ] ; then 1175 if [ -e "${PORTDIR}/licenses/${lic}" ] ; then
1142 lic="${PORTDIR}/licenses/${src}" 1176 lic="${PORTDIR}/licenses/${lic}"
1143 elif [ -e "${PWD}/${src}" ] ; then 1177 elif [ -e "${PWD}/${lic}" ] ; then
1144 lic="${PWD}/${src}" 1178 lic="${PWD}/${lic}"
1145 elif [ -e "${src}" ] ; then 1179 elif [ -e "${lic}" ] ; then
1146 lic="${src}" 1180 lic="${lic}"
1147 fi
1148 fi 1181 fi
1182 fi
1149 [ ! -f "${lic}" ] && die "Could not find requested license ${src}" 1183 [ ! -f "${lic}" ] && die "Could not find requested license ${lic}"
1150 local l="`basename ${lic}`" 1184 local l="`basename ${lic}`"
1151 1185
1152 # here is where we check for the licenses the user already 1186 # here is where we check for the licenses the user already
1153 # accepted ... if we don't find a match, we make the user accept 1187 # accepted ... if we don't find a match, we make the user accept
1154 local shopts=$- 1188 local shopts=$-
1330 local dir=$(dirname "$*") 1364 local dir=$(dirname "$*")
1331 local file=$(basename "$*") 1365 local file=$(basename "$*")
1332 local mline="" 1366 local mline=""
1333 local showedmsg=0 1367 local showedmsg=0
1334 1368
1335 for mline in $(mount | egrep -e '(iso|cdrom)' | awk '{print $3}') ; do 1369 for mline in $(mount | egrep -e '(iso|cdrom|fs=cdfss)' | awk '{print $3}') ; do
1336 [[ -d ${mline}/${dir} ]] || continue 1370 [[ -d ${mline}/${dir} ]] || continue
1337 [[ ! -z $(find ${mline}/${dir} -maxdepth 1 -iname ${file}) ]] \ 1371 [[ ! -z $(find ${mline}/${dir} -maxdepth 1 -iname ${file}) ]] \
1338 && export CDROM_ROOT=${mline} 1372 && export CDROM_ROOT=${mline}
1339 done 1373 done
1340 1374
1584# $4 == extra LD_LIBRARY_PATH's (make it : delimited) 1618# $4 == extra LD_LIBRARY_PATH's (make it : delimited)
1585# $5 == path for wrapper 1619# $5 == path for wrapper
1586make_wrapper() { 1620make_wrapper() {
1587 local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5 1621 local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5
1588 local tmpwrapper=$(emktemp) 1622 local tmpwrapper=$(emktemp)
1623 # We don't want to quote ${bin} so that people can pass complex
1624 # things as $bin ... "./someprog --args"
1589 cat << EOF > "${tmpwrapper}" 1625 cat << EOF > "${tmpwrapper}"
1590#!/bin/sh 1626#!/bin/sh
1591cd "${chdir}" 1627cd "${chdir:-.}"
1628if [ -n "${libdir}" ] ; then
1629 if [ "\${LD_LIBRARY_PATH+set}" = "set" ] ; then
1592export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}" 1630 export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}"
1631 else
1632 export LD_LIBRARY_PATH="${libdir}"
1633 fi
1634fi
1593exec ${bin} "\$@" 1635exec ${bin} "\$@"
1594EOF 1636EOF
1595 chmod go+rx "${tmpwrapper}" 1637 chmod go+rx "${tmpwrapper}"
1596 if [ -n "${5}" ] 1638 if [[ -n ${path} ]] ; then
1597 then
1598 exeinto ${5} 1639 exeinto "${path}"
1599 newexe "${tmpwrapper}" "${wrapper}" 1640 newexe "${tmpwrapper}" "${wrapper}"
1600 else 1641 else
1601 newbin "${tmpwrapper}" "${wrapper}" 1642 newbin "${tmpwrapper}" "${wrapper}"
1602 fi 1643 fi
1603} 1644}

Legend:
Removed from v.1.193  
changed lines
  Added in v.1.212

  ViewVC Help
Powered by ViewVC 1.1.20