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

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

  ViewVC Help
Powered by ViewVC 1.1.20