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

Diff of /eclass/eutils.eclass

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

Revision 1.181 Revision 1.200
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.181 2005/06/09 15:25:56 azarah Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.200 2005/09/23 20:44:26 wolf31o2 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
13ECLASS=eutils
14INHERITED="$INHERITED $ECLASS"
15 13
16DEPEND="!bootstrap? ( sys-devel/patch userland_GNU? ( sys-apps/shadow ) )" 14DEPEND="!bootstrap? ( sys-devel/patch )"
17# sys-apps/shadow is needed for useradd, etc, bug #94745. 15# sys-apps/shadow is needed for useradd, etc, bug #94745.
18 16
19DESCRIPTION="Based on the ${ECLASS} eclass" 17DESCRIPTION="Based on the ${ECLASS} eclass"
20 18
21# Wait for the supplied number of seconds. If no argument is supplied, defaults 19# Wait for the supplied number of seconds. If no argument is supplied, defaults
69 dodir /usr/${libdir} 67 dodir /usr/${libdir}
70 68
71 for lib in "${@}" ; do 69 for lib in "${@}" ; do
72 cat > "${D}/usr/${libdir}/${lib}" <<-END_LDSCRIPT 70 cat > "${D}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
73 /* GNU ld script 71 /* GNU ld script
74 Since Gentoo has critical dynamic libraries 72 Since Gentoo has critical dynamic libraries
75 in /lib, and the static versions in /usr/lib, 73 in /lib, and the static versions in /usr/lib,
76 we need to have a "fake" dynamic lib in /usr/lib, 74 we need to have a "fake" dynamic lib in /usr/lib,
77 otherwise we run into linking problems. 75 otherwise we run into linking problems.
78 76
79 See bug http://bugs.gentoo.org/4411 for more info. 77 See bug http://bugs.gentoo.org/4411 for more info.
80 */ 78 */
81 GROUP ( /${libdir}/${lib} ) 79 GROUP ( /${libdir}/${lib} )
82 END_LDSCRIPT 80 END_LDSCRIPT
83 fperms a+x "/usr/${libdir}/${lib}" 81 fperms a+x "/usr/${libdir}/${lib}"
174 local STDERR_TARGET="${T}/$$.out" 172 local STDERR_TARGET="${T}/$$.out"
175 local PATCH_TARGET="${T}/$$.patch" 173 local PATCH_TARGET="${T}/$$.patch"
176 local PATCH_SUFFIX="" 174 local PATCH_SUFFIX=""
177 local SINGLE_PATCH="no" 175 local SINGLE_PATCH="no"
178 local x="" 176 local x=""
177
178 unset P4CONFIG P4PORT P4USER # keep perforce at bay #56402
179 179
180 if [ "$#" -gt 1 ] 180 if [ "$#" -gt 1 ]
181 then 181 then
182 local m="" 182 local m=""
183 for m in "$@" ; do 183 for m in "$@" ; do
377# vapier@gentoo.org 377# vapier@gentoo.org
378# 378#
379# Takes just 1 optional parameter (the directory to create tmpfile in) 379# Takes just 1 optional parameter (the directory to create tmpfile in)
380emktemp() { 380emktemp() {
381 local exe="touch" 381 local exe="touch"
382 [ "$1" == "-d" ] && exe="mkdir" && shift 382 [[ $1 == -d ]] && exe="mkdir" && shift
383 local topdir="$1" 383 local topdir=$1
384 384
385 if [ -z "${topdir}" ] 385 if [[ -z ${topdir} ]] ; then
386 then
387 [ -z "${T}" ] \ 386 [[ -z ${T} ]] \
388 && topdir="/tmp" \ 387 && topdir="/tmp" \
389 || topdir="${T}" 388 || topdir=${T}
390 fi 389 fi
391 390
392 if [ -z "$(type -p mktemp)" ] 391 if [[ -z $(type -p mktemp) ]] ; then
393 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}" 396 ${exe} "${tmp}" || ${exe} -p "${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}
449# homedir: /dev/null 447# homedir: /dev/null
450# groups: none 448# groups: none
451# extra: comment of 'added by portage for ${PN}' 449# extra: comment of 'added by portage for ${PN}'
452enewuser() { 450enewuser() {
453 # get the username 451 # get the username
454 local euser="$1"; shift 452 local euser=$1; shift
455 if [ -z "${euser}" ] 453 if [[ -z ${euser} ]] ; then
456 then
457 eerror "No username specified !" 454 eerror "No username specified !"
458 die "Cannot call enewuser without a username" 455 die "Cannot call enewuser without a username"
459 fi 456 fi
460 457
461 # lets see if the username already exists 458 # lets see if the username already exists
462 if [ "${euser}" == "`egetent passwd \"${euser}\" | cut -d: -f1`" ] 459 if [[ ${euser} == $(egetent passwd "${euser}" | cut -d: -f1) ]] ; then
463 then
464 return 0 460 return 0
465 fi 461 fi
466 einfo "Adding user '${euser}' to your system ..." 462 einfo "Adding user '${euser}' to your system ..."
467 463
468 # options to pass to useradd 464 # options to pass to useradd
469 local opts= 465 local opts=
470 466
471 # handle uid 467 # handle uid
472 local euid="$1"; shift 468 local euid=$1; shift
473 if [ ! -z "${euid}" ] && [ "${euid}" != "-1" ] 469 if [[ ! -z ${euid} ]] && [[ ${euid} != "-1" ]] ; then
474 then
475 if [ "${euid}" -gt 0 ] 470 if [[ ${euid} -gt 0 ]] ; then
476 then
477 if [ ! -z "`egetent passwd ${euid}`" ] 471 if [[ ! -z $(egetent passwd ${euid}) ]] ; then
478 then
479 euid="next" 472 euid="next"
480 fi 473 fi
481 else 474 else
482 eerror "Userid given but is not greater than 0 !" 475 eerror "Userid given but is not greater than 0 !"
483 die "${euid} is not a valid UID" 476 die "${euid} is not a valid UID"
484 fi 477 fi
485 else 478 else
486 euid="next" 479 euid="next"
487 fi 480 fi
488 if [ "${euid}" == "next" ] 481 if [[ ${euid} == "next" ]] ; then
489 then 482 for euid in $(seq 101 999) ; do
490 local pwrange
491 if [ "${USERLAND}" == "BSD" ] ; then
492 pwrange="`jot 898 101`"
493 else
494 pwrange="`seq 101 999`"
495 fi
496 for euid in ${pwrange} ; do
497 [ -z "`egetent passwd ${euid}`" ] && break 483 [[ -z $(egetent passwd ${euid}) ]] && break
498 done 484 done
499 fi 485 fi
500 opts="${opts} -u ${euid}" 486 opts="${opts} -u ${euid}"
501 einfo " - Userid: ${euid}" 487 einfo " - Userid: ${euid}"
502 488
503 # handle shell 489 # handle shell
504 local eshell="$1"; shift 490 local eshell=$1; shift
505 if [ ! -z "${eshell}" ] && [ "${eshell}" != "-1" ] 491 if [[ ! -z ${eshell} ]] && [[ ${eshell} != "-1" ]] ; then
506 then
507 if [ ! -e "${eshell}" ] 492 if [[ ! -e ${eshell} ]] ; then
508 then
509 eerror "A shell was specified but it does not exist !" 493 eerror "A shell was specified but it does not exist !"
510 die "${eshell} does not exist" 494 die "${eshell} does not exist"
511 fi 495 fi
512 else 496 else
513 if [[ "${USERLAND}" == "Darwin" ]]; then 497 for shell in /sbin/nologin /usr/sbin/nologin /bin/false /usr/bin/false /dev/null; do
514 eshell="/usr/bin/false" 498 [[ -x ${ROOT}${shell} ]] && break;
515 elif [[ "${USERLAND}" == "BSD" ]]; then 499 done
516 eshell="/usr/sbin/nologin" 500
517 else 501 if [[ ${shell} == "/dev/null" ]]; then
518 eshell="/bin/false" 502 eerror "Unable to identify the shell to use"
503 die "Unable to identify the shell to use"
519 fi 504 fi
505
506 eshell=${shell}
520 fi 507 fi
521 einfo " - Shell: ${eshell}" 508 einfo " - Shell: ${eshell}"
522 opts="${opts} -s ${eshell}" 509 opts="${opts} -s ${eshell}"
523 510
524 # handle homedir 511 # handle homedir
525 local ehome="$1"; shift 512 local ehome=$1; shift
526 if [ -z "${ehome}" ] || [ "${ehome}" == "-1" ] 513 if [[ -z ${ehome} ]] || [[ ${ehome} == "-1" ]] ; then
527 then
528 ehome="/dev/null" 514 ehome="/dev/null"
529 fi 515 fi
530 einfo " - Home: ${ehome}" 516 einfo " - Home: ${ehome}"
531 opts="${opts} -d ${ehome}" 517 opts="${opts} -d ${ehome}"
532 518
533 # handle groups 519 # handle groups
534 local egroups="$1"; shift 520 local egroups=$1; shift
535 if [ ! -z "${egroups}" ] 521 if [[ ! -z ${egroups} ]] ; then
536 then
537 local oldifs="${IFS}" 522 local oldifs=${IFS}
538 local defgroup="" exgroups="" 523 local defgroup="" exgroups=""
539 524
540 export IFS="," 525 export IFS=","
541 for g in ${egroups} 526 for g in ${egroups} ; do
542 do
543 export IFS="${oldifs}" 527 export IFS=${oldifs}
544 if [ -z "`egetent group \"${g}\"`" ] 528 if [[ -z $(egetent group "${g}") ]] ; then
545 then
546 eerror "You must add group ${g} to the system first" 529 eerror "You must add group ${g} to the system first"
547 die "${g} is not a valid GID" 530 die "${g} is not a valid GID"
548 fi 531 fi
549 if [ -z "${defgroup}" ] 532 if [[ -z ${defgroup} ]] ; then
550 then
551 defgroup="${g}" 533 defgroup=${g}
552 else 534 else
553 exgroups="${exgroups},${g}" 535 exgroups="${exgroups},${g}"
554 fi 536 fi
555 export IFS="," 537 export IFS=","
556 done 538 done
557 export IFS="${oldifs}" 539 export IFS=${oldifs}
558 540
559 opts="${opts} -g ${defgroup}" 541 opts="${opts} -g ${defgroup}"
560 if [ ! -z "${exgroups}" ] 542 if [[ ! -z ${exgroups} ]] ; then
561 then
562 opts="${opts} -G ${exgroups:1}" 543 opts="${opts} -G ${exgroups:1}"
563 fi 544 fi
564 else 545 else
565 egroups="(none)" 546 egroups="(none)"
566 fi 547 fi
567 einfo " - Groups: ${egroups}" 548 einfo " - Groups: ${egroups}"
568 549
569 # handle extra and add the user 550 # handle extra and add the user
570 local eextra="$@"
571 local oldsandbox="${SANDBOX_ON}" 551 local oldsandbox=${SANDBOX_ON}
572 export SANDBOX_ON="0" 552 export SANDBOX_ON="0"
573 if [[ "${USERLAND}" == "Darwin" ]] 553 case ${USERLAND} in
574 then 554 Darwin)
575 ### Make the user 555 ### Make the user
576 if [ -z "${eextra}" ] 556 if [[ -z $@ ]] ; then
577 then
578 dscl . create /users/${euser} uid ${euid} 557 dscl . create /users/${euser} uid ${euid}
579 dscl . create /users/${euser} shell ${eshell} 558 dscl . create /users/${euser} shell ${eshell}
580 dscl . create /users/${euser} home ${ehome} 559 dscl . create /users/${euser} home ${ehome}
581 dscl . create /users/${euser} realname "added by portage for ${PN}" 560 dscl . create /users/${euser} realname "added by portage for ${PN}"
582 ### Add the user to the groups specified 561 ### Add the user to the groups specified
583 local oldifs="${IFS}" 562 local oldifs=${IFS}
584 export IFS="," 563 export IFS=","
585 for g in ${egroups} 564 for g in ${egroups} ; do
586 do
587 dscl . merge /groups/${g} users ${euser} 565 dscl . merge /groups/${g} users ${euser}
588 done 566 done
589 export IFS="${oldifs}" 567 export IFS=${oldifs}
590 else 568 else
591 einfo "Extra options are not supported on macos yet" 569 einfo "Extra options are not supported on Darwin yet"
592 einfo "Please report the ebuild along with the info below" 570 einfo "Please report the ebuild along with the info below"
593 einfo "eextra: ${eextra}" 571 einfo "eextra: $@"
594 die "Required function missing" 572 die "Required function missing"
595 fi 573 fi
596 elif [[ "${USERLAND}" == "BSD" ]] ; then 574 ;;
597 if [ -z "${eextra}" ] 575 BSD)
598 then 576 if [[ -z $@ ]] ; then
599 pw useradd ${euser} ${opts} \ 577 pw useradd ${euser} ${opts} \
600 -c "added by portage for ${PN}" \ 578 -c "added by portage for ${PN}" \
601 die "enewuser failed" 579 die "enewuser failed"
602 else 580 else
603 einfo " - Extra: ${eextra}" 581 einfo " - Extra: $@"
604 pw useradd ${euser} ${opts} \ 582 pw useradd ${euser} ${opts} \
605 -c ${eextra} || die "enewuser failed" 583 "$@" || die "enewuser failed"
606 fi 584 fi
607 else 585 ;;
608 if [ -z "${eextra}" ] 586 *)
609 then 587 if [[ -z $@ ]] ; then
610 useradd ${opts} ${euser} \ 588 useradd ${opts} ${euser} \
611 -c "added by portage for ${PN}" \ 589 -c "added by portage for ${PN}" \
612 || die "enewuser failed" 590 || die "enewuser failed"
613 else 591 else
614 einfo " - Extra: ${eextra}" 592 einfo " - Extra: $@"
615 useradd ${opts} ${euser} ${eextra} \ 593 useradd ${opts} ${euser} "$@" \
616 || die "enewuser failed" 594 || die "enewuser failed"
617 fi 595 fi
596 ;;
597 esac
598
599 if [[ ! -e ${ROOT}/${ehome} ]] ; then
600 einfo " - Creating ${ehome} in ${ROOT}"
601 mkdir -p "${ROOT}/${ehome}"
602 chown ${euser} "${ROOT}/${ehome}"
603 chmod 755 "${ROOT}/${ehome}"
618 fi 604 fi
605
619 export SANDBOX_ON="${oldsandbox}" 606 export SANDBOX_ON=${oldsandbox}
620
621 if [ ! -e "${ehome}" ] && [ ! -e "${D}/${ehome}" ]
622 then
623 einfo " - Creating ${ehome} in ${D}"
624 dodir ${ehome}
625 fowners ${euser} ${ehome}
626 fperms 755 ${ehome}
627 fi
628} 607}
629 608
630# Simplify/standardize adding groups to the system 609# Simplify/standardize adding groups to the system
631# vapier@gentoo.org 610# vapier@gentoo.org
632# 611#
697 fi 676 fi
698 677
699 # If we need the next available 678 # If we need the next available
700 case ${egid} in 679 case ${egid} in
701 *[!0-9]*) # Non numeric 680 *[!0-9]*) # Non numeric
702 for egid in `jot 898 101`; do 681 for egid in $(seq 101 999); do
703 [ -z "`egetent group ${egid}`" ] && break 682 [ -z "`egetent group ${egid}`" ] && break
704 done 683 done
705 esac 684 esac
706 dscl . create /groups/${egroup} gid ${egid} 685 dscl . create /groups/${egroup} gid ${egid}
707 dscl . create /groups/${egroup} passwd '*' 686 dscl . create /groups/${egroup} passwd '*'
708 elif [[ "${USERLAND}" == "BSD" ]] ; then 687 elif [[ "${USERLAND}" == "BSD" ]] ; then
709 case ${egid} in 688 case ${egid} in
710 *[!0-9]*) # Non numeric 689 *[!0-9]*) # Non numeric
711 for egid in `jot 898 101`; do 690 for egid in $(seq 101 999); do
712 [ -z "`egetent group ${egid}`" ] && break 691 [ -z "`egetent group ${egid}`" ] && break
713 done 692 done
714 esac 693 esac
715 pw groupadd ${egroup} -g ${egid} || die "enewgroup failed" 694 pw groupadd ${egroup} -g ${egid} || die "enewgroup failed"
716 else 695 else
748# name: the name that will show up in the menu 727# name: the name that will show up in the menu
749# icon: give your little like a pretty little icon ... 728# icon: give your little like a pretty little icon ...
750# this can be relative (to /usr/share/pixmaps) or 729# this can be relative (to /usr/share/pixmaps) or
751# a full path to an icon 730# a full path to an icon
752# type: what kind of application is this ? for categories: 731# type: what kind of application is this ? for categories:
753# http://www.freedesktop.org/wiki/Standards_2fmenu_2dspec 732# http://www.freedesktop.org/Standards/desktop-entry-spec
754# path: if your app needs to startup in a specific dir 733# path: if your app needs to startup in a specific dir
755make_desktop_entry() { 734make_desktop_entry() {
756 [[ -z $1 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1 735 [[ -z $1 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1
757 736
758 local exec=${1} 737 local exec=${1}
784 dev) 763 dev)
785 type="Development" 764 type="Development"
786 ;; 765 ;;
787 766
788 games) 767 games)
789 [[ -z ${path} ]] && path=${GAMES_BINDIR}
790
791 case ${catmin} in 768 case ${catmin} in
792 action) type=ActionGame;; 769 action) type=ActionGame;;
793 arcade) type=ArcadeGame;; 770 arcade) type=ArcadeGame;;
794 board) type=BoardGame;; 771 board) type=BoardGame;;
795 kid) type=KidsGame;; 772 kid) type=KidsGame;;
920 doins "${i}" 897 doins "${i}"
921 elif [[ -d ${i} ]] ; then 898 elif [[ -d ${i} ]] ; then
922 for j in "${i}"/*.desktop ; do 899 for j in "${i}"/*.desktop ; do
923 doins "${j}" 900 doins "${j}"
924 done 901 done
925 fi 902 fi
926 done 903 done
927} 904}
928newmenu() { 905newmenu() {
929 insinto /usr/share/applications 906 insinto /usr/share/applications
930 newins "$1" "$2" 907 newins "$1" "$2"
938 doins "${i}" 915 doins "${i}"
939 elif [[ -d ${i} ]] ; then 916 elif [[ -d ${i} ]] ; then
940 for j in "${i}"/*.png ; do 917 for j in "${i}"/*.png ; do
941 doins "${j}" 918 doins "${j}"
942 done 919 done
943 fi 920 fi
944 done 921 done
945} 922}
946newicon() { 923newicon() {
947 insinto /usr/share/pixmaps 924 insinto /usr/share/pixmaps
948 newins "$1" "$2" 925 newins "$1" "$2"
953############################################################## 930##############################################################
954 931
955 932
956# for internal use only (unpack_pdv and unpack_makeself) 933# for internal use only (unpack_pdv and unpack_makeself)
957find_unpackable_file() { 934find_unpackable_file() {
958 local src="$1" 935 local src=$1
959 if [ -z "${src}" ] 936 if [[ -z ${src} ]] ; then
960 then
961 src="${DISTDIR}/${A}" 937 src=${DISTDIR}/${A}
962 else 938 else
963 if [ -e "${DISTDIR}/${src}" ] 939 if [[ -e ${DISTDIR}/${src} ]] ; then
964 then
965 src="${DISTDIR}/${src}" 940 src=${DISTDIR}/${src}
966 elif [ -e "${PWD}/${src}" ] 941 elif [[ -e ${PWD}/${src} ]] ; then
967 then
968 src="${PWD}/${src}" 942 src=${PWD}/${src}
969 elif [ -e "${src}" ] 943 elif [[ -e ${src} ]] ; then
970 then
971 src="${src}" 944 src=${src}
972 fi
973 fi 945 fi
974 [ ! -e "${src}" ] && die "Could not find requested archive ${src}" 946 fi
947 [[ ! -e ${src} ]] && return 1
975 echo "${src}" 948 echo "${src}"
976} 949}
977 950
978# Unpack those pesky pdv generated files ... 951# Unpack those pesky pdv generated files ...
979# They're self-unpacking programs with the binary package stuffed in 952# They're self-unpacking programs with the binary package stuffed in
994# lseek 967# lseek
995# root@vapier 0 pdv_unpack # strace -elseek ./hldsupdatetool.bin 968# root@vapier 0 pdv_unpack # strace -elseek ./hldsupdatetool.bin
996# lseek(3, -4, SEEK_END) = 2981250 969# lseek(3, -4, SEEK_END) = 2981250
997# thus we would pass in the value of '4' as the second parameter. 970# thus we would pass in the value of '4' as the second parameter.
998unpack_pdv() { 971unpack_pdv() {
999 local src="`find_unpackable_file $1`" 972 local src=$(find_unpackable_file $1)
1000 local sizeoff_t="$2" 973 local sizeoff_t=$2
1001 974
975 [[ -z ${src} ]] && die "Could not locate source for '$1'"
1002 [ -z "${sizeoff_t}" ] && die "No idea what off_t size was used for this pdv :(" 976 [[ -z ${sizeoff_t} ]] && die "No idea what off_t size was used for this pdv :("
1003 977
1004 local shrtsrc="`basename ${src}`" 978 local shrtsrc="`basename ${src}`"
1005 echo ">>> Unpacking ${shrtsrc} to ${PWD}" 979 echo ">>> Unpacking ${shrtsrc} to ${PWD}"
1006 local metaskip=`tail -c ${sizeoff_t} ${src} | hexdump -e \"%i\"` 980 local metaskip=`tail -c ${sizeoff_t} ${src} | hexdump -e \"%i\"`
1007 local tailskip=`tail -c $((${sizeoff_t}*2)) ${src} | head -c ${sizeoff_t} | hexdump -e \"%i\"` 981 local tailskip=`tail -c $((${sizeoff_t}*2)) ${src} | head -c ${sizeoff_t} | hexdump -e \"%i\"`
1073# Usage: unpack_makeself [file to unpack] [offset] [tail|dd] 1047# Usage: unpack_makeself [file to unpack] [offset] [tail|dd]
1074# - If the file is not specified then unpack will utilize ${A}. 1048# - If the file is not specified then unpack will utilize ${A}.
1075# - If the offset is not specified then we will attempt to extract 1049# - If the offset is not specified then we will attempt to extract
1076# the proper offset from the script itself. 1050# the proper offset from the script itself.
1077unpack_makeself() { 1051unpack_makeself() {
1078 local src="$(find_unpackable_file "$1")" 1052 local src=$(find_unpackable_file "$1")
1079 local skip="$2" 1053 local skip=$2
1080 local exe="$3" 1054 local exe=$3
1081 1055
1056 [[ -z ${src} ]] && die "Could not locate source for '$1'"
1057
1082 local shrtsrc="$(basename "${src}")" 1058 local shrtsrc=$(basename "${src}")
1083 echo ">>> Unpacking ${shrtsrc} to ${PWD}" 1059 echo ">>> Unpacking ${shrtsrc} to ${PWD}"
1084 if [ -z "${skip}" ] 1060 if [ -z "${skip}" ]
1085 then 1061 then
1086 local ver="`grep -a '#.*Makeself' ${src} | awk '{print $NF}'`" 1062 local ver="`grep -a '#.*Makeself' ${src} | awk '{print $NF}'`"
1087 local skip=0 1063 local skip=0
1158check_license() { 1134check_license() {
1159 local lic=$1 1135 local lic=$1
1160 if [ -z "${lic}" ] ; then 1136 if [ -z "${lic}" ] ; then
1161 lic="${PORTDIR}/licenses/${LICENSE}" 1137 lic="${PORTDIR}/licenses/${LICENSE}"
1162 else 1138 else
1163 if [ -e "${PORTDIR}/licenses/${src}" ] ; then 1139 if [ -e "${PORTDIR}/licenses/${lic}" ] ; then
1164 lic="${PORTDIR}/licenses/${src}" 1140 lic="${PORTDIR}/licenses/${lic}"
1165 elif [ -e "${PWD}/${src}" ] ; then 1141 elif [ -e "${PWD}/${lic}" ] ; then
1166 lic="${PWD}/${src}" 1142 lic="${PWD}/${lic}"
1167 elif [ -e "${src}" ] ; then 1143 elif [ -e "${lic}" ] ; then
1168 lic="${src}" 1144 lic="${lic}"
1169 fi
1170 fi 1145 fi
1146 fi
1171 [ ! -f "${lic}" ] && die "Could not find requested license ${src}" 1147 [ ! -f "${lic}" ] && die "Could not find requested license ${lic}"
1172 local l="`basename ${lic}`" 1148 local l="`basename ${lic}`"
1173 1149
1174 # here is where we check for the licenses the user already 1150 # here is where we check for the licenses the user already
1175 # accepted ... if we don't find a match, we make the user accept 1151 # accepted ... if we don't find a match, we make the user accept
1176 local shopts=$- 1152 local shopts=$-
1347# displayed and we'll hang out here until: 1323# displayed and we'll hang out here until:
1348# (1) the file is found on a mounted cdrom 1324# (1) the file is found on a mounted cdrom
1349# (2) the user hits CTRL+C 1325# (2) the user hits CTRL+C
1350cdrom_locate_file_on_cd() { 1326cdrom_locate_file_on_cd() {
1351 while [[ -z ${CDROM_ROOT} ]] ; do 1327 while [[ -z ${CDROM_ROOT} ]] ; do
1352 local dir="$(dirname ${@})" 1328 local dir=$(dirname "$*")
1353 local file="$(basename ${@})" 1329 local file=$(basename "$*")
1354 local mline="" 1330 local mline=""
1355 local showedmsg=0 1331 local showedmsg=0
1356 1332
1357 for mline in $(mount | egrep -e '(iso|cdrom)' | awk '{print $3}') ; do 1333 for mline in $(mount | egrep -e '(iso|cdrom)' | awk '{print $3}') ; do
1358 [[ -d ${mline}/${dir} ]] || continue 1334 [[ -d ${mline}/${dir} ]] || continue
1379 fi 1355 fi
1380 showedmsg=1 1356 showedmsg=1
1381 fi 1357 fi
1382 einfo "Press return to scan for the cd again" 1358 einfo "Press return to scan for the cd again"
1383 einfo "or hit CTRL+C to abort the emerge." 1359 einfo "or hit CTRL+C to abort the emerge."
1360 echo
1361 einfo "If you are having trouble with the detection"
1362 einfo "of your CD, it is possible that you do not have"
1363 einfo "Joliet support enabled in your kernel. Please"
1364 einfo "check that CONFIG_JOLIET is enabled in your kernel."
1384 read 1365 read
1385 fi 1366 fi
1386 done 1367 done
1387} 1368}
1388 1369
1511 LIB=$1 1492 LIB=$1
1512 1493
1513 if [ -n "${LIB}" -a -f "${ROOT}${LIB}" ]; then 1494 if [ -n "${LIB}" -a -f "${ROOT}${LIB}" ]; then
1514 SONAME=`basename ${LIB}` 1495 SONAME=`basename ${LIB}`
1515 1496
1516 einfo "An old version of an installed library was detected on your system." 1497 ewarn "An old version of an installed library was detected on your system."
1517 einfo "In order to avoid breaking packages that link against is, this older version" 1498 ewarn "In order to avoid breaking packages that link against it, this older version"
1518 einfo "is not being removed. In order to make full use of this newer version," 1499 ewarn "is not being removed. In order to make full use of this newer version,"
1519 einfo "you will need to execute the following command:" 1500 ewarn "you will need to execute the following command:"
1520 einfo " revdep-rebuild --soname ${SONAME}" 1501 ewarn " revdep-rebuild --soname ${SONAME}"
1521 einfo 1502 ewarn
1522 einfo "After doing that, you can safely remove ${LIB}" 1503 ewarn "After doing that, you can safely remove ${LIB}"
1523 einfo "Note: 'emerge gentoolkit' to get revdep-rebuild" 1504 ewarn "Note: 'emerge gentoolkit' to get revdep-rebuild"
1524 fi 1505 fi
1525} 1506}
1526 1507
1527# Hack for people to figure out if a package was built with 1508# Hack for people to figure out if a package was built with
1528# certain USE flags 1509# certain USE flags

Legend:
Removed from v.1.181  
changed lines
  Added in v.1.200

  ViewVC Help
Powered by ViewVC 1.1.20