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

Diff of /eclass/eutils.eclass

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

Revision 1.1.1.1 Revision 1.182
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.1.1.1 2005/11/30 09:59:15 chriswhite Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.182 2005/06/11 00:02:26 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 portability 12inherit multilib
13ECLASS=eutils
14INHERITED="$INHERITED $ECLASS"
13 15
14DEPEND="!bootstrap? ( sys-devel/patch )" 16DEPEND="!bootstrap? ( sys-devel/patch userland_GNU? ( sys-apps/shadow ) )"
15# sys-apps/shadow is needed for useradd, etc, bug #94745. 17# sys-apps/shadow is needed for useradd, etc, bug #94745.
16 18
17DESCRIPTION="Based on the ${ECLASS} eclass" 19DESCRIPTION="Based on the ${ECLASS} eclass"
18 20
19# Wait for the supplied number of seconds. If no argument is supplied, defaults 21# Wait for the supplied number of seconds. If no argument is supplied, defaults
67 dodir /usr/${libdir} 69 dodir /usr/${libdir}
68 70
69 for lib in "${@}" ; do 71 for lib in "${@}" ; do
70 cat > "${D}/usr/${libdir}/${lib}" <<-END_LDSCRIPT 72 cat > "${D}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
71 /* GNU ld script 73 /* GNU ld script
72 Since Gentoo has critical dynamic libraries 74 Since Gentoo has critical dynamic libraries
73 in /lib, and the static versions in /usr/lib, 75 in /lib, and the static versions in /usr/lib,
74 we need to have a "fake" dynamic lib in /usr/lib, 76 we need to have a "fake" dynamic lib in /usr/lib,
75 otherwise we run into linking problems. 77 otherwise we run into linking problems.
76 78
77 See bug http://bugs.gentoo.org/4411 for more info. 79 See bug http://bugs.gentoo.org/4411 for more info.
78 */ 80 */
79 GROUP ( /${libdir}/${lib} ) 81 GROUP ( /${libdir}/${lib} )
80 END_LDSCRIPT 82 END_LDSCRIPT
81 fperms a+x "/usr/${libdir}/${lib}" 83 fperms a+x "/usr/${libdir}/${lib}"
166# hand its a directory, it will set EPATCH_SOURCE to this. 168# hand its a directory, it will set EPATCH_SOURCE to this.
167# 169#
168# <azarah@gentoo.org> (10 Nov 2002) 170# <azarah@gentoo.org> (10 Nov 2002)
169# 171#
170epatch() { 172epatch() {
171 _epatch_assert() { local _pipestatus=${PIPESTATUS[*]}; [[ ${_pipestatus// /} -eq 0 ]] ; }
172 local PIPE_CMD="" 173 local PIPE_CMD=""
173 local STDERR_TARGET="${T}/$$.out" 174 local STDERR_TARGET="${T}/$$.out"
174 local PATCH_TARGET="${T}/$$.patch" 175 local PATCH_TARGET="${T}/$$.patch"
175 local PATCH_SUFFIX="" 176 local PATCH_SUFFIX=""
176 local SINGLE_PATCH="no" 177 local SINGLE_PATCH="no"
177 local x="" 178 local x=""
178
179 unset P4CONFIG P4PORT P4USER # keep perforce at bay #56402
180 179
181 if [ "$#" -gt 1 ] 180 if [ "$#" -gt 1 ]
182 then 181 then
183 local m="" 182 local m=""
184 for m in "$@" ; do 183 for m in "$@" ; do
314 count=5 313 count=5
315 break 314 break
316 fi 315 fi
317 fi 316 fi
318 317
319 if (cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f ; _epatch_assert) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1 318 if (cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1
320 then 319 then
321 draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 320 draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
322 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 321 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
323 echo "ACTUALLY APPLYING ${patchname} ..." >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 322 echo "ACTUALLY APPLYING ${patchname} ..." >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
324 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 323 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
325 draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 324 draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
326 325
327 cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 2>&1 326 cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 2>&1
328 _epatch_assert
329 327
330 if [ "$?" -ne 0 ] 328 if [ "$?" -ne 0 ]
331 then 329 then
332 cat ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 330 cat ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
333 echo 331 echo
379# vapier@gentoo.org 377# vapier@gentoo.org
380# 378#
381# Takes just 1 optional parameter (the directory to create tmpfile in) 379# Takes just 1 optional parameter (the directory to create tmpfile in)
382emktemp() { 380emktemp() {
383 local exe="touch" 381 local exe="touch"
384 [[ $1 == -d ]] && exe="mkdir" && shift 382 [ "$1" == "-d" ] && exe="mkdir" && shift
385 local topdir=$1 383 local topdir="$1"
386 384
387 if [[ -z ${topdir} ]] ; then 385 if [ -z "${topdir}" ]
386 then
388 [[ -z ${T} ]] \ 387 [ -z "${T}" ] \
389 && topdir="/tmp" \ 388 && topdir="/tmp" \
390 || topdir=${T} 389 || topdir="${T}"
391 fi 390 fi
392 391
393 if [[ -z $(type -p mktemp) ]] ; then 392 if [ -z "$(type -p mktemp)" ]
393 then
394 local tmp=/ 394 local tmp=/
395 while [[ -e ${tmp} ]] ; do 395 while [ -e "${tmp}" ] ; do
396 tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM} 396 tmp="${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM}"
397 done 397 done
398 ${exe} "${tmp}" || ${exe} -p "${tmp}" 398 ${exe} "${tmp}"
399 echo "${tmp}" 399 echo "${tmp}"
400 else 400 else
401 [[ ${exe} == "touch" ]] \ 401 [ "${exe}" == "touch" ] \
402 && exe="-p" \ 402 && exe="-p" \
403 || exe="-d" 403 || exe="-d"
404 mktemp ${exe} "${topdir}" 404 mktemp ${exe} "${topdir}"
405 fi 405 fi
406} 406}
410# Joe Jezak <josejx@gmail.com> and usata@gentoo.org 410# Joe Jezak <josejx@gmail.com> and usata@gentoo.org
411# FBSD stuff: Aaron Walker <ka0ttic@gentoo.org> 411# FBSD stuff: Aaron Walker <ka0ttic@gentoo.org>
412# 412#
413# egetent(database, key) 413# egetent(database, key)
414egetent() { 414egetent() {
415 case ${CHOST} in 415 if [[ "${USERLAND}" == "Darwin" ]] ; then
416 *-darwin*)
417 case "$2" in 416 case "$2" in
418 *[!0-9]*) # Non numeric 417 *[!0-9]*) # Non numeric
419 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }" 418 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }"
420 ;; 419 ;;
421 *) # Numeric 420 *) # Numeric
422 nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }" 421 nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }"
423 ;; 422 ;;
424 esac 423 esac
425 ;; 424 elif [[ "${USERLAND}" == "BSD" ]] ; then
426 *-freebsd*) 425 local action
427 local opts action="user" 426 if [ "$1" == "passwd" ]
428 [[ $1 == "passwd" ]] || action="group" 427 then
429 428 action="user"
430 # lookup by uid/gid 429 else
431 if [[ $2 == [[:digit:]]* ]] ; then 430 action="group"
432 [[ ${action} == "user" ]] && opts="-u" || opts="-g"
433 fi 431 fi
434
435 pw show ${action} ${opts} "$2" -q 432 pw show "${action}" "$2" -q
436 ;; 433 else
437 *-netbsd*|*-openbsd*)
438 grep "$2:\*:" /etc/$1
439 ;;
440 *)
441 type -p nscd >& /dev/null && nscd -i "$1" 434 which nscd >& /dev/null && nscd -i "$1"
442 getent "$1" "$2" 435 getent "$1" "$2"
443 ;; 436 fi
444 esac
445} 437}
446 438
447# Simplify/standardize adding users to the system 439# Simplify/standardize adding users to the system
448# vapier@gentoo.org 440# vapier@gentoo.org
449# 441#
487 fi 479 fi
488 else 480 else
489 euid="next" 481 euid="next"
490 fi 482 fi
491 if [[ ${euid} == "next" ]] ; then 483 if [[ ${euid} == "next" ]] ; then
492 for euid in $(seq 101 999) ; do 484 local pwrange
485 if [[ ${USERLAND} == "BSD" ]] ; then
486 pwrange=$(jot 898 101)
487 else
488 pwrange=$(seq 101 999)
489 fi
490 for euid in ${pwrange} ; do
493 [[ -z $(egetent passwd ${euid}) ]] && break 491 [[ -z $(egetent passwd ${euid}) ]] && break
494 done 492 done
495 fi 493 fi
496 opts="${opts} -u ${euid}" 494 opts="${opts} -u ${euid}"
497 einfo " - Userid: ${euid}" 495 einfo " - Userid: ${euid}"
502 if [[ ! -e ${eshell} ]] ; then 500 if [[ ! -e ${eshell} ]] ; then
503 eerror "A shell was specified but it does not exist !" 501 eerror "A shell was specified but it does not exist !"
504 die "${eshell} does not exist" 502 die "${eshell} does not exist"
505 fi 503 fi
506 else 504 else
507 for shell in /sbin/nologin /usr/sbin/nologin /bin/false /usr/bin/false /dev/null ; do 505 case ${USERLAND} in
508 [[ -x ${ROOT}${shell} ]] && break 506 Darwin) eshell="/usr/bin/false";;
509 done 507 BSD) eshell="/usr/sbin/nologin";;
510 508 *) eshell="/bin/false";;
511 if [[ ${shell} == "/dev/null" ]] ; then 509 esac
512 eerror "Unable to identify the shell to use"
513 die "Unable to identify the shell to use"
514 fi
515
516 eshell=${shell}
517 fi 510 fi
518 einfo " - Shell: ${eshell}" 511 einfo " - Shell: ${eshell}"
519 opts="${opts} -s ${eshell}" 512 opts="${opts} -s ${eshell}"
520 513
521 # handle homedir 514 # handle homedir
558 einfo " - Groups: ${egroups}" 551 einfo " - Groups: ${egroups}"
559 552
560 # handle extra and add the user 553 # handle extra and add the user
561 local oldsandbox=${SANDBOX_ON} 554 local oldsandbox=${SANDBOX_ON}
562 export SANDBOX_ON="0" 555 export SANDBOX_ON="0"
563 case ${CHOST} in 556 case ${USERLAND} in
564 *-darwin*) 557 Darwin)
565 ### Make the user 558 ### Make the user
566 if [[ -z $@ ]] ; then 559 if [[ -z $@ ]] ; then
567 dscl . create /users/${euser} uid ${euid} 560 dscl . create /users/${euser} uid ${euid}
568 dscl . create /users/${euser} shell ${eshell} 561 dscl . create /users/${euser} shell ${eshell}
569 dscl . create /users/${euser} home ${ehome} 562 dscl . create /users/${euser} home ${ehome}
580 einfo "Please report the ebuild along with the info below" 573 einfo "Please report the ebuild along with the info below"
581 einfo "eextra: $@" 574 einfo "eextra: $@"
582 die "Required function missing" 575 die "Required function missing"
583 fi 576 fi
584 ;; 577 ;;
585 *-freebsd*) 578 BSD)
586 if [[ -z $@ ]] ; then 579 if [[ -z $@ ]] ; then
587 pw useradd ${euser} ${opts} \ 580 pw useradd ${euser} ${opts} \
588 -c "added by portage for ${PN}" \ 581 -c "added by portage for ${PN}" \
589 die "enewuser failed" 582 die "enewuser failed"
590 else 583 else
591 einfo " - Extra: $@" 584 einfo " - Extra: $@"
592 pw useradd ${euser} ${opts} \ 585 pw useradd ${euser} ${opts} \
593 "$@" || die "enewuser failed" 586 "$@" || die "enewuser failed"
594 fi 587 fi
595 ;; 588 ;;
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"
603 fi
604 ;;
605
606 *-openbsd*)
607 if [[ -z $@ ]] ; then
608 useradd -u ${euid} -s ${eshell} \
609 -d ${ehome} -c "Added by portage for ${PN}" \
610 -g ${egroups} ${euser} || die "enewuser failed"
611 else
612 einfo " - Extra: $@"
613 useradd -u ${euid} -s ${eshell} \
614 -d ${ehome} -c "Added by portage for ${PN}" \
615 -g ${egroups} ${euser} "$@" || die "enewuser failed"
616 fi
617 ;;
618
619 *) 589 *)
620 if [[ -z $@ ]] ; then 590 if [[ -z $@ ]] ; then
621 useradd ${opts} ${euser} \ 591 useradd ${opts} ${euser} \
622 -c "added by portage for ${PN}" \ 592 -c "added by portage for ${PN}" \
623 || die "enewuser failed" 593 || die "enewuser failed"
626 useradd ${opts} ${euser} "$@" \ 596 useradd ${opts} ${euser} "$@" \
627 || die "enewuser failed" 597 || die "enewuser failed"
628 fi 598 fi
629 ;; 599 ;;
630 esac 600 esac
631
632 if [[ ! -e ${ROOT}/${ehome} ]] ; then
633 einfo " - Creating ${ehome} in ${ROOT}"
634 mkdir -p "${ROOT}/${ehome}"
635 chown ${euser} "${ROOT}/${ehome}"
636 chmod 755 "${ROOT}/${ehome}"
637 fi
638
639 export SANDBOX_ON=${oldsandbox} 601 export SANDBOX_ON=${oldsandbox}
602
603 if [ ! -e "${ehome}" ] && [ ! -e "${D}/${ehome}" ]
604 then
605 einfo " - Creating ${ehome} in ${D}"
606 dodir ${ehome}
607 fowners ${euser} ${ehome}
608 fperms 755 ${ehome}
609 fi
640} 610}
641 611
642# Simplify/standardize adding groups to the system 612# Simplify/standardize adding groups to the system
643# vapier@gentoo.org 613# vapier@gentoo.org
644# 614#
673 then 643 then
674 if [ "${egid}" -gt 0 ] 644 if [ "${egid}" -gt 0 ]
675 then 645 then
676 if [ -z "`egetent group ${egid}`" ] 646 if [ -z "`egetent group ${egid}`" ]
677 then 647 then
678 if [[ "${CHOST}" == *-darwin* ]]; then 648 if [[ "${USERLAND}" == "Darwin" ]]; then
679 opts="${opts} ${egid}" 649 opts="${opts} ${egid}"
680 else 650 else
681 opts="${opts} -g ${egid}" 651 opts="${opts} -g ${egid}"
682 fi 652 fi
683 else 653 else
697 opts="${opts} ${eextra}" 667 opts="${opts} ${eextra}"
698 668
699 # add the group 669 # add the group
700 local oldsandbox="${SANDBOX_ON}" 670 local oldsandbox="${SANDBOX_ON}"
701 export SANDBOX_ON="0" 671 export SANDBOX_ON="0"
702 case ${CHOST} in 672 if [[ "${USERLAND}" == "Darwin" ]]; then
703 *-darwin*)
704 if [ ! -z "${eextra}" ]; 673 if [ ! -z "${eextra}" ];
705 then 674 then
706 einfo "Extra options are not supported on Darwin/OS X yet" 675 einfo "Extra options are not supported on Darwin/OS X yet"
707 einfo "Please report the ebuild along with the info below" 676 einfo "Please report the ebuild along with the info below"
708 einfo "eextra: ${eextra}" 677 einfo "eextra: ${eextra}"
709 die "Required function missing" 678 die "Required function missing"
710 fi 679 fi
711 680
712 # If we need the next available 681 # If we need the next available
713 case ${egid} in 682 case ${egid} in
714 *[!0-9]*) # Non numeric 683 *[!0-9]*) # Non numeric
715 for egid in $(seq 101 999); do 684 for egid in `jot 898 101`; do
716 [ -z "`egetent group ${egid}`" ] && break 685 [ -z "`egetent group ${egid}`" ] && break
717 done 686 done
718 esac 687 esac
719 dscl . create /groups/${egroup} gid ${egid} 688 dscl . create /groups/${egroup} gid ${egid}
720 dscl . create /groups/${egroup} passwd '*' 689 dscl . create /groups/${egroup} passwd '*'
721 ;; 690 elif [[ "${USERLAND}" == "BSD" ]] ; then
722
723 *-freebsd*)
724 case ${egid} in 691 case ${egid} in
725 *[!0-9]*) # Non numeric 692 *[!0-9]*) # Non numeric
726 for egid in $(seq 101 999); do 693 for egid in `jot 898 101`; do
727 [ -z "`egetent group ${egid}`" ] && break 694 [ -z "`egetent group ${egid}`" ] && break
728 done 695 done
729 esac 696 esac
730 pw groupadd ${egroup} -g ${egid} || die "enewgroup failed" 697 pw groupadd ${egroup} -g ${egid} || die "enewgroup failed"
731 ;; 698 else
732
733 *-netbsd*)
734 case ${egid} in
735 *[!0-9]*) # Non numeric
736 for egid in $(seq 101 999); do
737 [ -z "`egetent group ${egid}`" ] && break
738 done
739 esac
740 groupadd -g ${egid} ${egroup} || die "enewgroup failed"
741 ;;
742
743 *)
744 groupadd ${opts} ${egroup} || die "enewgroup failed" 699 groupadd ${opts} ${egroup} || die "enewgroup failed"
745 ;; 700 fi
746 esac
747 export SANDBOX_ON="${oldsandbox}" 701 export SANDBOX_ON="${oldsandbox}"
748} 702}
749 703
750# Simple script to replace 'dos2unix' binaries 704# Simple script to replace 'dos2unix' binaries
751# vapier@gentoo.org 705# vapier@gentoo.org
776# name: the name that will show up in the menu 730# name: the name that will show up in the menu
777# icon: give your little like a pretty little icon ... 731# icon: give your little like a pretty little icon ...
778# this can be relative (to /usr/share/pixmaps) or 732# this can be relative (to /usr/share/pixmaps) or
779# a full path to an icon 733# a full path to an icon
780# type: what kind of application is this ? for categories: 734# type: what kind of application is this ? for categories:
781# http://www.freedesktop.org/Standards/desktop-entry-spec 735# http://www.freedesktop.org/wiki/Standards_2fmenu_2dspec
782# path: if your app needs to startup in a specific dir 736# path: if your app needs to startup in a specific dir
783make_desktop_entry() { 737make_desktop_entry() {
784 [[ -z $1 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1 738 [[ -z $1 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1
785 739
786 local exec=${1} 740 local exec=${1}
812 dev) 766 dev)
813 type="Development" 767 type="Development"
814 ;; 768 ;;
815 769
816 games) 770 games)
771 [[ -z ${path} ]] && path=${GAMES_BINDIR}
772
817 case ${catmin} in 773 case ${catmin} in
818 action) type=ActionGame;; 774 action) type=ActionGame;;
819 arcade) type=ArcadeGame;; 775 arcade) type=ArcadeGame;;
820 board) type=BoardGame;; 776 board) type=BoardGame;;
821 kid) type=KidsGame;; 777 kid) type=KidsGame;;
862 type="Network;${type}" 818 type="Network;${type}"
863 ;; 819 ;;
864 820
865 sci) 821 sci)
866 case ${catmin} in 822 case ${catmin} in
867 astro*) type=Astronomy;; 823 astro*) type=Astronomoy;;
868 bio*) type=Biology;; 824 bio*) type=Biology;;
869 calc*) type=Calculator;; 825 calc*) type=Calculator;;
870 chem*) type=Chemistry;; 826 chem*) type=Chemistry;;
871 geo*) type=Geology;; 827 geo*) type=Geology;;
872 math*) type=Math;; 828 math*) type=Math;;
904Exec=${exec} 860Exec=${exec}
905Path=${path} 861Path=${path}
906Icon=${icon} 862Icon=${icon}
907Categories=Application;${type};" > "${desktop}" 863Categories=Application;${type};" > "${desktop}"
908 864
909 (
910 # wrap the env here so that the 'insinto' call
911 # doesn't corrupt the env of the caller
912 insinto /usr/share/applications 865 insinto /usr/share/applications
913 doins "${desktop}" 866 doins "${desktop}"
914 ) 867
868 return 0
915} 869}
916 870
917# Make a GDM/KDM Session file 871# Make a GDM/KDM Session file
918# 872#
919# make_desktop_entry(<title>, <command>) 873# make_desktop_entry(<title>, <command>)
948 doins "${i}" 902 doins "${i}"
949 elif [[ -d ${i} ]] ; then 903 elif [[ -d ${i} ]] ; then
950 for j in "${i}"/*.desktop ; do 904 for j in "${i}"/*.desktop ; do
951 doins "${j}" 905 doins "${j}"
952 done 906 done
953 fi 907 fi
954 done 908 done
955} 909}
956newmenu() { 910newmenu() {
957 insinto /usr/share/applications 911 insinto /usr/share/applications
958 newins "$1" "$2" 912 newins "$1" "$2"
966 doins "${i}" 920 doins "${i}"
967 elif [[ -d ${i} ]] ; then 921 elif [[ -d ${i} ]] ; then
968 for j in "${i}"/*.png ; do 922 for j in "${i}"/*.png ; do
969 doins "${j}" 923 doins "${j}"
970 done 924 done
971 fi 925 fi
972 done 926 done
973} 927}
974newicon() { 928newicon() {
975 insinto /usr/share/pixmaps 929 insinto /usr/share/pixmaps
976 newins "$1" "$2" 930 newins "$1" "$2"
981############################################################## 935##############################################################
982 936
983 937
984# for internal use only (unpack_pdv and unpack_makeself) 938# for internal use only (unpack_pdv and unpack_makeself)
985find_unpackable_file() { 939find_unpackable_file() {
986 local src=$1 940 local src="$1"
987 if [[ -z ${src} ]] ; then 941 if [ -z "${src}" ]
942 then
988 src=${DISTDIR}/${A} 943 src="${DISTDIR}/${A}"
989 else 944 else
990 if [[ -e ${DISTDIR}/${src} ]] ; then 945 if [ -e "${DISTDIR}/${src}" ]
946 then
991 src=${DISTDIR}/${src} 947 src="${DISTDIR}/${src}"
992 elif [[ -e ${PWD}/${src} ]] ; then 948 elif [ -e "${PWD}/${src}" ]
949 then
993 src=${PWD}/${src} 950 src="${PWD}/${src}"
994 elif [[ -e ${src} ]] ; then 951 elif [ -e "${src}" ]
952 then
995 src=${src} 953 src="${src}"
996 fi
997 fi 954 fi
998 [[ ! -e ${src} ]] && return 1 955 fi
956 [ ! -e "${src}" ] && die "Could not find requested archive ${src}"
999 echo "${src}" 957 echo "${src}"
1000} 958}
1001 959
1002# Unpack those pesky pdv generated files ... 960# Unpack those pesky pdv generated files ...
1003# They're self-unpacking programs with the binary package stuffed in 961# They're self-unpacking programs with the binary package stuffed in
1018# lseek 976# lseek
1019# root@vapier 0 pdv_unpack # strace -elseek ./hldsupdatetool.bin 977# root@vapier 0 pdv_unpack # strace -elseek ./hldsupdatetool.bin
1020# lseek(3, -4, SEEK_END) = 2981250 978# lseek(3, -4, SEEK_END) = 2981250
1021# thus we would pass in the value of '4' as the second parameter. 979# thus we would pass in the value of '4' as the second parameter.
1022unpack_pdv() { 980unpack_pdv() {
1023 local src=$(find_unpackable_file $1) 981 local src="`find_unpackable_file $1`"
1024 local sizeoff_t=$2 982 local sizeoff_t="$2"
1025 983
1026 [[ -z ${src} ]] && die "Could not locate source for '$1'"
1027 [[ -z ${sizeoff_t} ]] && die "No idea what off_t size was used for this pdv :(" 984 [ -z "${sizeoff_t}" ] && die "No idea what off_t size was used for this pdv :("
1028 985
1029 local shrtsrc=$(basename "${src}") 986 local shrtsrc="`basename ${src}`"
1030 echo ">>> Unpacking ${shrtsrc} to ${PWD}" 987 echo ">>> Unpacking ${shrtsrc} to ${PWD}"
1031 local metaskip=`tail -c ${sizeoff_t} ${src} | hexdump -e \"%i\"` 988 local metaskip=`tail -c ${sizeoff_t} ${src} | hexdump -e \"%i\"`
1032 local tailskip=`tail -c $((${sizeoff_t}*2)) ${src} | head -c ${sizeoff_t} | hexdump -e \"%i\"` 989 local tailskip=`tail -c $((${sizeoff_t}*2)) ${src} | head -c ${sizeoff_t} | hexdump -e \"%i\"`
1033 990
1034 # grab metadata for debug reasons 991 # grab metadata for debug reasons
1098# Usage: unpack_makeself [file to unpack] [offset] [tail|dd] 1055# Usage: unpack_makeself [file to unpack] [offset] [tail|dd]
1099# - If the file is not specified then unpack will utilize ${A}. 1056# - If the file is not specified then unpack will utilize ${A}.
1100# - If the offset is not specified then we will attempt to extract 1057# - If the offset is not specified then we will attempt to extract
1101# the proper offset from the script itself. 1058# the proper offset from the script itself.
1102unpack_makeself() { 1059unpack_makeself() {
1103 local src_input=${1:-${A}}
1104 local src=$(find_unpackable_file "${src_input}") 1060 local src="$(find_unpackable_file "$1")"
1105 local skip=$2 1061 local skip="$2"
1106 local exe=$3 1062 local exe="$3"
1107 1063
1108 [[ -z ${src} ]] && die "Could not locate source for '${src_input}'"
1109
1110 local shrtsrc=$(basename "${src}") 1064 local shrtsrc="$(basename "${src}")"
1111 echo ">>> Unpacking ${shrtsrc} to ${PWD}" 1065 echo ">>> Unpacking ${shrtsrc} to ${PWD}"
1112 if [[ -z ${skip} ]] ; then 1066 if [ -z "${skip}" ]
1067 then
1113 local ver=$(grep -a '#.*Makeself' "${src}" | awk '{print $NF}') 1068 local ver="`grep -a '#.*Makeself' ${src} | awk '{print $NF}'`"
1114 local skip=0 1069 local skip=0
1115 exe=tail 1070 exe=tail
1116 case ${ver} in 1071 case ${ver} in
1117 1.5.*) # tested 1.5.{3,4,5} ... guessing 1.5.x series is same 1072 1.5.*) # tested 1.5.{3,4,5} ... guessing 1.5.x series is same
1118 skip=$(grep -a ^skip= "${src}" | cut -d= -f2) 1073 skip=$(grep -a ^skip= "${src}" | cut -d= -f2)
1130 ;; 1085 ;;
1131 2.1.3) 1086 2.1.3)
1132 skip=`grep -a ^offset= "${src}" | awk '{print $3}'` 1087 skip=`grep -a ^offset= "${src}" | awk '{print $3}'`
1133 let skip="skip + 1" 1088 let skip="skip + 1"
1134 ;; 1089 ;;
1135 2.1.4|2.1.5) 1090 2.1.4)
1136 skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1) 1091 skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1)
1137 skip=$(head -n ${skip} "${src}" | wc -c) 1092 skip=$(head -n ${skip} "${src}" | wc -c)
1138 exe="dd" 1093 exe="dd"
1139 ;; 1094 ;;
1140 *) 1095 *)
1185check_license() { 1140check_license() {
1186 local lic=$1 1141 local lic=$1
1187 if [ -z "${lic}" ] ; then 1142 if [ -z "${lic}" ] ; then
1188 lic="${PORTDIR}/licenses/${LICENSE}" 1143 lic="${PORTDIR}/licenses/${LICENSE}"
1189 else 1144 else
1190 if [ -e "${PORTDIR}/licenses/${lic}" ] ; then 1145 if [ -e "${PORTDIR}/licenses/${src}" ] ; then
1191 lic="${PORTDIR}/licenses/${lic}" 1146 lic="${PORTDIR}/licenses/${src}"
1192 elif [ -e "${PWD}/${lic}" ] ; then 1147 elif [ -e "${PWD}/${src}" ] ; then
1193 lic="${PWD}/${lic}" 1148 lic="${PWD}/${src}"
1194 elif [ -e "${lic}" ] ; then 1149 elif [ -e "${src}" ] ; then
1195 lic="${lic}" 1150 lic="${src}"
1196 fi
1197 fi 1151 fi
1152 fi
1198 [ ! -f "${lic}" ] && die "Could not find requested license ${lic}" 1153 [ ! -f "${lic}" ] && die "Could not find requested license ${src}"
1199 local l="`basename ${lic}`" 1154 local l="`basename ${lic}`"
1200 1155
1201 # here is where we check for the licenses the user already 1156 # here is where we check for the licenses the user already
1202 # accepted ... if we don't find a match, we make the user accept 1157 # accepted ... if we don't find a match, we make the user accept
1203 local shopts=$- 1158 local shopts=$-
1259 # first we figure out how many cds we're dealing with by 1214 # first we figure out how many cds we're dealing with by
1260 # the # of files they gave us 1215 # the # of files they gave us
1261 local cdcnt=0 1216 local cdcnt=0
1262 local f= 1217 local f=
1263 for f in "$@" ; do 1218 for f in "$@" ; do
1264 ((++cdcnt)) 1219 cdcnt=$((cdcnt + 1))
1265 export CDROM_CHECK_${cdcnt}="$f" 1220 export CDROM_CHECK_${cdcnt}="$f"
1266 done 1221 done
1267 export CDROM_TOTAL_CDS=${cdcnt} 1222 export CDROM_TOTAL_CDS=${cdcnt}
1268 export CDROM_CURRENT_CD=1 1223 export CDROM_CURRENT_CD=1
1269 1224
1270 # now we see if the user gave use CD_ROOT ... 1225 # now we see if the user gave use CD_ROOT ...
1271 # if they did, let's just believe them that it's correct 1226 # if they did, let's just believe them that it's correct
1227 if [[ ! -z ${CD_ROOT} ]] ; then
1228 export CDROM_ROOT=${CD_ROOT}
1229 einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}"
1230 return
1231 fi
1232 # do the same for CD_ROOT_X
1272 if [[ -n ${CD_ROOT}${CD_ROOT_1} ]] ; then 1233 if [[ ! -z ${CD_ROOT_1} ]] ; then
1273 local var= 1234 local var=
1274 cdcnt=0 1235 cdcnt=0
1275 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do 1236 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do
1276 ((++cdcnt)) 1237 cdcnt=$((cdcnt + 1))
1277 var="CD_ROOT_${cdcnt}" 1238 var="CD_ROOT_${cdcnt}"
1278 [[ -z ${!var} ]] && var="CD_ROOT"
1279 if [[ -z ${!var} ]] ; then 1239 if [[ -z ${!var} ]] ; then
1280 eerror "You must either use just the CD_ROOT" 1240 eerror "You must either use just the CD_ROOT"
1281 eerror "or specify ALL the CD_ROOT_X variables." 1241 eerror "or specify ALL the CD_ROOT_X variables."
1282 eerror "In this case, you will need ${CDROM_TOTAL_CDS} CD_ROOT_X variables." 1242 eerror "In this case, you will need ${CDROM_TOTAL_CDS} CD_ROOT_X variables."
1283 die "could not locate CD_ROOT_${cdcnt}" 1243 die "could not locate CD_ROOT_${cdcnt}"
1284 fi 1244 fi
1245 export CDROM_ROOTS_${cdcnt}="${!var}"
1285 done 1246 done
1286 export CDROM_ROOT=${CD_ROOT_1:-${CD_ROOT}} 1247 export CDROM_ROOT=${CDROM_ROOTS_1}
1287 einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}" 1248 einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}"
1288 export CDROM_SET=-1
1289 for f in ${CDROM_CHECK_1//:/ } ; do
1290 ((++CDROM_SET))
1291 [[ -e ${CD_ROOT}/${f} ]] && break
1292 done
1293 export CDROM_MATCH=${f}
1294 return 1249 return
1295 fi 1250 fi
1296 1251
1297 # User didn't help us out so lets make sure they know they can
1298 # simplify the whole process ...
1299 if [[ ${CDROM_TOTAL_CDS} -eq 1 ]] ; then 1252 if [[ ${CDROM_TOTAL_CDS} -eq 1 ]] ; then
1300 einfo "This ebuild will need the ${CDROM_NAME:-cdrom for ${PN}}" 1253 einfon "This ebuild will need the "
1254 if [[ -z ${CDROM_NAME} ]] ; then
1255 echo "cdrom for ${PN}."
1256 else
1257 echo "${CDROM_NAME}."
1258 fi
1301 echo 1259 echo
1302 einfo "If you do not have the CD, but have the data files" 1260 einfo "If you do not have the CD, but have the data files"
1303 einfo "mounted somewhere on your filesystem, just export" 1261 einfo "mounted somewhere on your filesystem, just export"
1304 einfo "the variable CD_ROOT so that it points to the" 1262 einfo "the variable CD_ROOT so that it points to the"
1305 einfo "directory containing the files." 1263 einfo "directory containing the files."
1309 echo 1267 echo
1310 else 1268 else
1311 einfo "This package will need access to ${CDROM_TOTAL_CDS} cds." 1269 einfo "This package will need access to ${CDROM_TOTAL_CDS} cds."
1312 cdcnt=0 1270 cdcnt=0
1313 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do 1271 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do
1314 ((++cdcnt)) 1272 cdcnt=$((cdcnt + 1))
1315 var="CDROM_NAME_${cdcnt}" 1273 var="CDROM_NAME_${cdcnt}"
1316 [[ ! -z ${!var} ]] && einfo " CD ${cdcnt}: ${!var}" 1274 [[ ! -z ${!var} ]] && einfo " CD ${cdcnt}: ${!var}"
1317 done 1275 done
1318 echo 1276 echo
1319 einfo "If you do not have the CDs, but have the data files" 1277 einfo "If you do not have the CDs, but have the data files"
1320 einfo "mounted somewhere on your filesystem, just export" 1278 einfo "mounted somewhere on your filesystem, just export"
1321 einfo "the following variables so they point to the right place:" 1279 einfo "the following variables so they point to the right place:"
1322 einfon "" 1280 einfon ""
1323 cdcnt=0 1281 cdcnt=0
1324 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do 1282 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do
1325 ((++cdcnt)) 1283 cdcnt=$((cdcnt + 1))
1326 echo -n " CD_ROOT_${cdcnt}" 1284 echo -n " CD_ROOT_${cdcnt}"
1327 done 1285 done
1328 echo 1286 echo
1329 einfo "Or, if you have all the files in the same place, or" 1287 einfo "Or, if you have all the files in the same place, or"
1330 einfo "you only have one cdrom, you can export CD_ROOT" 1288 einfo "you only have one cdrom, you can export CD_ROOT"
1333 echo 1291 echo
1334 einfo "For example:" 1292 einfo "For example:"
1335 einfo "export CD_ROOT_1=/mnt/cdrom" 1293 einfo "export CD_ROOT_1=/mnt/cdrom"
1336 echo 1294 echo
1337 fi 1295 fi
1338
1339 export CDROM_SET=""
1340 export CDROM_CURRENT_CD=0 1296 export CDROM_CURRENT_CD=0
1341 cdrom_load_next_cd 1297 cdrom_load_next_cd
1342} 1298}
1343 1299
1344# this is only used when you need access to more than one cd. 1300# this is only used when you need access to more than one cd.
1345# when you have finished using the first cd, just call this function. 1301# when you have finished using the first cd, just call this function.
1346# when it returns, CDROM_ROOT will be pointing to the second cd. 1302# when it returns, CDROM_ROOT will be pointing to the second cd.
1347# remember, you can only go forward in the cd chain, you can't go back. 1303# remember, you can only go forward in the cd chain, you can't go back.
1348cdrom_load_next_cd() { 1304cdrom_load_next_cd() {
1305 export CDROM_CURRENT_CD=$((CDROM_CURRENT_CD + 1))
1349 local var 1306 local var=
1350 ((++CDROM_CURRENT_CD)) 1307
1308 if [[ ! -z ${CD_ROOT} ]] ; then
1309 einfo "Using same root as before for CD #${CDROM_CURRENT_CD}"
1310 return
1311 fi
1351 1312
1352 unset CDROM_ROOT 1313 unset CDROM_ROOT
1353 var=CD_ROOT_${CDROM_CURRENT_CD} 1314 var=CDROM_ROOTS_${CDROM_CURRENT_CD}
1354 [[ -z ${!var} ]] && var="CD_ROOT"
1355 if [[ -z ${!var} ]] ; then 1315 if [[ -z ${!var} ]] ; then
1356 var="CDROM_CHECK_${CDROM_CURRENT_CD}" 1316 var="CDROM_CHECK_${CDROM_CURRENT_CD}"
1357 _cdrom_locate_file_on_cd ${!var} 1317 cdrom_locate_file_on_cd ${!var}
1358 else 1318 else
1359 export CDROM_ROOT=${!var} 1319 export CDROM_ROOT=${!var}
1360 fi 1320 fi
1361 1321
1362 einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}" 1322 einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}"
1367# all it does is try to locate a give file on a cd ... if the cd isn't 1327# all it does is try to locate a give file on a cd ... if the cd isn't
1368# found, then a message asking for the user to insert the cdrom will be 1328# found, then a message asking for the user to insert the cdrom will be
1369# displayed and we'll hang out here until: 1329# displayed and we'll hang out here until:
1370# (1) the file is found on a mounted cdrom 1330# (1) the file is found on a mounted cdrom
1371# (2) the user hits CTRL+C 1331# (2) the user hits CTRL+C
1372_cdrom_locate_file_on_cd() { 1332cdrom_locate_file_on_cd() {
1373 local mline=""
1374 local showedmsg=0
1375
1376 while [[ -z ${CDROM_ROOT} ]] ; do 1333 while [[ -z ${CDROM_ROOT} ]] ; do
1377 local i=0
1378 local -a cdset=(${*//:/ })
1379 if [[ -n ${CDROM_SET} ]] ; then
1380 cdset=(${cdset[${CDROM_SET}]})
1381 fi
1382
1383 while [[ -n ${cdset[${i}]} ]] ; do
1384 local dir=$(dirname ${cdset[${i}]}) 1334 local dir="$(dirname ${@})"
1385 local file=$(basename ${cdset[${i}]}) 1335 local file="$(basename ${@})"
1336 local mline=""
1337 local showedmsg=0
1386 1338
1387 for mline in $(mount | gawk '/(iso|cdrom|fs=cdfss)/ {print $3}') ; do 1339 for mline in $(mount | egrep -e '(iso|cdrom)' | awk '{print $3}') ; do
1388 [[ -d ${mline}/${dir} ]] || continue 1340 [[ -d ${mline}/${dir} ]] || continue
1389 if [[ -n $(find ${mline}/${dir} -maxdepth 1 -iname ${file}) ]] ; then 1341 [[ ! -z $(find ${mline}/${dir} -maxdepth 1 -iname ${file}) ]] \
1390 export CDROM_ROOT=${mline} 1342 && export CDROM_ROOT=${mline}
1391 export CDROM_SET=${i} 1343 done
1392 export CDROM_MATCH=${cdset[${i}]} 1344
1393 return 1345 if [[ -z ${CDROM_ROOT} ]] ; then
1346 echo
1347 if [[ ${showedmsg} -eq 0 ]] ; then
1348 if [[ ${CDROM_TOTAL_CDS} -eq 1 ]] ; then
1349 if [[ -z ${CDROM_NAME} ]] ; then
1350 einfo "Please insert the cdrom for ${PN} now !"
1351 else
1352 einfo "Please insert the ${CDROM_NAME} cdrom now !"
1353 fi
1354 else
1355 if [[ -z ${CDROM_NAME_1} ]] ; then
1356 einfo "Please insert cd #${CDROM_CURRENT_CD} for ${PN} now !"
1357 else
1358 local var="CDROM_NAME_${CDROM_CURRENT_CD}"
1359 einfo "Please insert+mount the ${!var} cdrom now !"
1360 fi
1394 fi 1361 fi
1395 done 1362 showedmsg=1
1396
1397 ((++i))
1398 done
1399
1400 echo
1401 if [[ ${showedmsg} -eq 0 ]] ; then
1402 if [[ ${CDROM_TOTAL_CDS} -eq 1 ]] ; then
1403 if [[ -z ${CDROM_NAME} ]] ; then
1404 einfo "Please insert+mount the cdrom for ${PN} now !"
1405 else
1406 einfo "Please insert+mount the ${CDROM_NAME} cdrom now !"
1407 fi
1408 else
1409 if [[ -z ${CDROM_NAME_1} ]] ; then
1410 einfo "Please insert+mount cd #${CDROM_CURRENT_CD} for ${PN} now !"
1411 else
1412 local var="CDROM_NAME_${CDROM_CURRENT_CD}"
1413 einfo "Please insert+mount the ${!var} cdrom now !"
1414 fi
1415 fi 1363 fi
1416 showedmsg=1
1417 fi
1418 einfo "Press return to scan for the cd again" 1364 einfo "Press return to scan for the cd again"
1419 einfo "or hit CTRL+C to abort the emerge." 1365 einfo "or hit CTRL+C to abort the emerge."
1420 echo
1421 einfo "If you are having trouble with the detection"
1422 einfo "of your CD, it is possible that you do not have"
1423 einfo "Joliet support enabled in your kernel. Please"
1424 einfo "check that CONFIG_JOLIET is enabled in your kernel."
1425 read 1366 read
1367 fi
1426 done 1368 done
1427} 1369}
1428 1370
1429# Make sure that LINGUAS only contains languages that 1371# Make sure that LINGUAS only contains languages that
1430# a package can support 1372# a package can support
1551 LIB=$1 1493 LIB=$1
1552 1494
1553 if [ -n "${LIB}" -a -f "${ROOT}${LIB}" ]; then 1495 if [ -n "${LIB}" -a -f "${ROOT}${LIB}" ]; then
1554 SONAME=`basename ${LIB}` 1496 SONAME=`basename ${LIB}`
1555 1497
1556 ewarn "An old version of an installed library was detected on your system." 1498 einfo "An old version of an installed library was detected on your system."
1557 ewarn "In order to avoid breaking packages that link against it, this older version" 1499 einfo "In order to avoid breaking packages that link against is, this older version"
1558 ewarn "is not being removed. In order to make full use of this newer version," 1500 einfo "is not being removed. In order to make full use of this newer version,"
1559 ewarn "you will need to execute the following command:" 1501 einfo "you will need to execute the following command:"
1560 ewarn " revdep-rebuild --soname ${SONAME}" 1502 einfo " revdep-rebuild --soname ${SONAME}"
1561 ewarn 1503 einfo
1562 ewarn "After doing that, you can safely remove ${LIB}" 1504 einfo "After doing that, you can safely remove ${LIB}"
1563 ewarn "Note: 'emerge gentoolkit' to get revdep-rebuild" 1505 einfo "Note: 'emerge gentoolkit' to get revdep-rebuild"
1564 fi 1506 fi
1565} 1507}
1566 1508
1567# Hack for people to figure out if a package was built with 1509# Hack for people to figure out if a package was built with
1568# certain USE flags 1510# certain USE flags
1578 [[ ${opt:0:1} = "-" ]] && shift || opt="-a" 1520 [[ ${opt:0:1} = "-" ]] && shift || opt="-a"
1579 1521
1580 local PKG=$(best_version $1) 1522 local PKG=$(best_version $1)
1581 shift 1523 shift
1582 1524
1583 local USEFILE=${ROOT}/var/db/pkg/${PKG}/USE 1525 local USEFILE="${ROOT}/var/db/pkg/${PKG}/USE"
1584
1585 # if the USE file doesnt exist, assume the $PKG is either
1586 # injected or package.provided
1587 [[ ! -e ${USEFILE} ]] && return 0 1526 [[ ! -e ${USEFILE} ]] && return 1
1588 1527
1589 local USE_BUILT=$(<${USEFILE}) 1528 local USE_BUILT=$(<${USEFILE})
1590 while [[ $# -gt 0 ]] ; do 1529 while [[ $# -gt 0 ]] ; do
1591 if [[ ${opt} = "-o" ]] ; then 1530 if [[ ${opt} = "-o" ]] ; then
1592 has $1 ${USE_BUILT} && return 0 1531 has $1 ${USE_BUILT} && return 0
1644# $4 == extra LD_LIBRARY_PATH's (make it : delimited) 1583# $4 == extra LD_LIBRARY_PATH's (make it : delimited)
1645# $5 == path for wrapper 1584# $5 == path for wrapper
1646make_wrapper() { 1585make_wrapper() {
1647 local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5 1586 local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5
1648 local tmpwrapper=$(emktemp) 1587 local tmpwrapper=$(emktemp)
1649 # We don't want to quote ${bin} so that people can pass complex
1650 # things as $bin ... "./someprog --args"
1651 cat << EOF > "${tmpwrapper}" 1588 cat << EOF > "${tmpwrapper}"
1652#!/bin/sh 1589#!/bin/sh
1653cd "${chdir:-.}" 1590cd "${chdir}"
1654if [ -n "${libdir}" ] ; then
1655 if [ "\${LD_LIBRARY_PATH+set}" = "set" ] ; then
1656 export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}" 1591export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}"
1657 else
1658 export LD_LIBRARY_PATH="${libdir}"
1659 fi
1660fi
1661exec ${bin} "\$@" 1592exec ${bin} "\$@"
1662EOF 1593EOF
1663 chmod go+rx "${tmpwrapper}" 1594 chmod go+rx "${tmpwrapper}"
1664 if [[ -n ${path} ]] ; then 1595 if [ -n "${5}" ]
1596 then
1665 exeinto "${path}" 1597 exeinto ${5}
1666 newexe "${tmpwrapper}" "${wrapper}" 1598 newexe "${tmpwrapper}" "${wrapper}"
1667 else 1599 else
1668 newbin "${tmpwrapper}" "${wrapper}" 1600 newbin "${tmpwrapper}" "${wrapper}"
1669 fi 1601 fi
1670} 1602}

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.182

  ViewVC Help
Powered by ViewVC 1.1.20