/[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.178
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.178 2005/05/26 22:09: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 )"
15# sys-apps/shadow is needed for useradd, etc, bug #94745.
16 17
17DESCRIPTION="Based on the ${ECLASS} eclass" 18DESCRIPTION="Based on the ${ECLASS} eclass"
18 19
19# Wait for the supplied number of seconds. If no argument is supplied, defaults 20# Wait for the supplied number of seconds. If no argument is supplied, defaults
20# to five seconds. If the EPAUSE_IGNORE env var is set, don't wait. If we're not 21# to five seconds. If the EPAUSE_IGNORE env var is set, don't wait. If we're not
67 dodir /usr/${libdir} 68 dodir /usr/${libdir}
68 69
69 for lib in "${@}" ; do 70 for lib in "${@}" ; do
70 cat > "${D}/usr/${libdir}/${lib}" <<-END_LDSCRIPT 71 cat > "${D}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
71 /* GNU ld script 72 /* GNU ld script
72 Since Gentoo has critical dynamic libraries 73 Since Gentoo has critical dynamic libraries
73 in /lib, and the static versions in /usr/lib, 74 in /lib, and the static versions in /usr/lib,
74 we need to have a "fake" dynamic lib in /usr/lib, 75 we need to have a "fake" dynamic lib in /usr/lib,
75 otherwise we run into linking problems. 76 otherwise we run into linking problems.
76 77
77 See bug http://bugs.gentoo.org/4411 for more info. 78 See bug http://bugs.gentoo.org/4411 for more info.
78 */ 79 */
79 GROUP ( /${libdir}/${lib} ) 80 GROUP ( /${libdir}/${lib} )
80 END_LDSCRIPT 81 END_LDSCRIPT
81 fperms a+x "/usr/${libdir}/${lib}" 82 fperms a+x "/usr/${libdir}/${lib}"
166# hand its a directory, it will set EPATCH_SOURCE to this. 167# hand its a directory, it will set EPATCH_SOURCE to this.
167# 168#
168# <azarah@gentoo.org> (10 Nov 2002) 169# <azarah@gentoo.org> (10 Nov 2002)
169# 170#
170epatch() { 171epatch() {
171 _epatch_assert() { local _pipestatus=${PIPESTATUS[*]}; [[ ${_pipestatus// /} -eq 0 ]] ; }
172 local PIPE_CMD="" 172 local PIPE_CMD=""
173 local STDERR_TARGET="${T}/$$.out" 173 local STDERR_TARGET="${T}/$$.out"
174 local PATCH_TARGET="${T}/$$.patch" 174 local PATCH_TARGET="${T}/$$.patch"
175 local PATCH_SUFFIX="" 175 local PATCH_SUFFIX=""
176 local SINGLE_PATCH="no" 176 local SINGLE_PATCH="no"
177 local x="" 177 local x=""
178
179 unset P4CONFIG P4PORT P4USER # keep perforce at bay #56402
180 178
181 if [ "$#" -gt 1 ] 179 if [ "$#" -gt 1 ]
182 then 180 then
183 local m="" 181 local m=""
184 for m in "$@" ; do 182 for m in "$@" ; do
314 count=5 312 count=5
315 break 313 break
316 fi 314 fi
317 fi 315 fi
318 316
319 if (cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f ; _epatch_assert) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1 317 if (cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1
320 then 318 then
321 draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 319 draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
322 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 320 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
323 echo "ACTUALLY APPLYING ${patchname} ..." >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 321 echo "ACTUALLY APPLYING ${patchname} ..." >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
324 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 322 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
325 draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 323 draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
326 324
327 cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 2>&1 325 cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 2>&1
328 _epatch_assert
329 326
330 if [ "$?" -ne 0 ] 327 if [ "$?" -ne 0 ]
331 then 328 then
332 cat ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 329 cat ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
333 echo 330 echo
379# vapier@gentoo.org 376# vapier@gentoo.org
380# 377#
381# Takes just 1 optional parameter (the directory to create tmpfile in) 378# Takes just 1 optional parameter (the directory to create tmpfile in)
382emktemp() { 379emktemp() {
383 local exe="touch" 380 local exe="touch"
384 [[ $1 == -d ]] && exe="mkdir" && shift 381 [ "$1" == "-d" ] && exe="mkdir" && shift
385 local topdir=$1 382 local topdir="$1"
386 383
387 if [[ -z ${topdir} ]] ; then 384 if [ -z "${topdir}" ]
385 then
388 [[ -z ${T} ]] \ 386 [ -z "${T}" ] \
389 && topdir="/tmp" \ 387 && topdir="/tmp" \
390 || topdir=${T} 388 || topdir="${T}"
391 fi 389 fi
392 390
393 if [[ -z $(type -p mktemp) ]] ; then 391 if [ -z "$(type -p mktemp)" ]
392 then
394 local tmp=/ 393 local tmp=/
395 while [[ -e ${tmp} ]] ; do 394 while [ -e "${tmp}" ] ; do
396 tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM} 395 tmp="${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM}"
397 done 396 done
398 ${exe} "${tmp}" || ${exe} -p "${tmp}" 397 ${exe} "${tmp}"
399 echo "${tmp}" 398 echo "${tmp}"
400 else 399 else
401 [[ ${exe} == "touch" ]] \ 400 [ "${exe}" == "touch" ] \
402 && exe="-p" \ 401 && exe="-p" \
403 || exe="-d" 402 || exe="-d"
404 mktemp ${exe} "${topdir}" 403 mktemp ${exe} "${topdir}"
405 fi 404 fi
406} 405}
410# Joe Jezak <josejx@gmail.com> and usata@gentoo.org 409# Joe Jezak <josejx@gmail.com> and usata@gentoo.org
411# FBSD stuff: Aaron Walker <ka0ttic@gentoo.org> 410# FBSD stuff: Aaron Walker <ka0ttic@gentoo.org>
412# 411#
413# egetent(database, key) 412# egetent(database, key)
414egetent() { 413egetent() {
415 case ${CHOST} in 414 if useq ppc-macos ; then
416 *-darwin*)
417 case "$2" in 415 case "$2" in
418 *[!0-9]*) # Non numeric 416 *[!0-9]*) # Non numeric
419 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }" 417 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }"
420 ;; 418 ;;
421 *) # Numeric 419 *) # Numeric
422 nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }" 420 nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }"
423 ;; 421 ;;
424 esac 422 esac
425 ;; 423 elif useq x86-fbsd ; then
426 *-freebsd*) 424 local action
427 local opts action="user" 425 if [ "$1" == "passwd" ]
428 [[ $1 == "passwd" ]] || action="group" 426 then
429 427 action="user"
430 # lookup by uid/gid 428 else
431 if [[ $2 == [[:digit:]]* ]] ; then 429 action="group"
432 [[ ${action} == "user" ]] && opts="-u" || opts="-g"
433 fi 430 fi
434
435 pw show ${action} ${opts} "$2" -q 431 pw show "${action}" "$2" -q
436 ;; 432 else
437 *-netbsd*|*-openbsd*)
438 grep "$2:\*:" /etc/$1
439 ;;
440 *)
441 type -p nscd >& /dev/null && nscd -i "$1" 433 which nscd >& /dev/null && nscd -i "$1"
442 getent "$1" "$2" 434 getent "$1" "$2"
443 ;; 435 fi
444 esac
445} 436}
446 437
447# Simplify/standardize adding users to the system 438# Simplify/standardize adding users to the system
448# vapier@gentoo.org 439# vapier@gentoo.org
449# 440#
457# homedir: /dev/null 448# homedir: /dev/null
458# groups: none 449# groups: none
459# extra: comment of 'added by portage for ${PN}' 450# extra: comment of 'added by portage for ${PN}'
460enewuser() { 451enewuser() {
461 # get the username 452 # get the username
462 local euser=$1; shift 453 local euser="$1"; shift
463 if [[ -z ${euser} ]] ; then 454 if [ -z "${euser}" ]
455 then
464 eerror "No username specified !" 456 eerror "No username specified !"
465 die "Cannot call enewuser without a username" 457 die "Cannot call enewuser without a username"
466 fi 458 fi
467 459
468 # lets see if the username already exists 460 # lets see if the username already exists
469 if [[ ${euser} == $(egetent passwd "${euser}" | cut -d: -f1) ]] ; then 461 if [ "${euser}" == "`egetent passwd \"${euser}\" | cut -d: -f1`" ]
462 then
470 return 0 463 return 0
471 fi 464 fi
472 einfo "Adding user '${euser}' to your system ..." 465 einfo "Adding user '${euser}' to your system ..."
473 466
474 # options to pass to useradd 467 # options to pass to useradd
475 local opts= 468 local opts=
476 469
477 # handle uid 470 # handle uid
478 local euid=$1; shift 471 local euid="$1"; shift
479 if [[ ! -z ${euid} ]] && [[ ${euid} != "-1" ]] ; then 472 if [ ! -z "${euid}" ] && [ "${euid}" != "-1" ]
473 then
480 if [[ ${euid} -gt 0 ]] ; then 474 if [ "${euid}" -gt 0 ]
475 then
481 if [[ ! -z $(egetent passwd ${euid}) ]] ; then 476 if [ ! -z "`egetent passwd ${euid}`" ]
477 then
482 euid="next" 478 euid="next"
483 fi 479 fi
484 else 480 else
485 eerror "Userid given but is not greater than 0 !" 481 eerror "Userid given but is not greater than 0 !"
486 die "${euid} is not a valid UID" 482 die "${euid} is not a valid UID"
487 fi 483 fi
488 else 484 else
489 euid="next" 485 euid="next"
490 fi 486 fi
491 if [[ ${euid} == "next" ]] ; then 487 if [ "${euid}" == "next" ]
492 for euid in $(seq 101 999) ; do 488 then
489 local pwrange
490 if [ "${USERLAND}" == "BSD" ] ; then
491 pwrange="`jot 898 101`"
492 else
493 pwrange="`seq 101 999`"
494 fi
495 for euid in ${pwrange} ; do
493 [[ -z $(egetent passwd ${euid}) ]] && break 496 [ -z "`egetent passwd ${euid}`" ] && break
494 done 497 done
495 fi 498 fi
496 opts="${opts} -u ${euid}" 499 opts="${opts} -u ${euid}"
497 einfo " - Userid: ${euid}" 500 einfo " - Userid: ${euid}"
498 501
499 # handle shell 502 # handle shell
500 local eshell=$1; shift 503 local eshell="$1"; shift
501 if [[ ! -z ${eshell} ]] && [[ ${eshell} != "-1" ]] ; then 504 if [ ! -z "${eshell}" ] && [ "${eshell}" != "-1" ]
505 then
502 if [[ ! -e ${eshell} ]] ; then 506 if [ ! -e "${eshell}" ]
507 then
503 eerror "A shell was specified but it does not exist !" 508 eerror "A shell was specified but it does not exist !"
504 die "${eshell} does not exist" 509 die "${eshell} does not exist"
505 fi 510 fi
506 else 511 else
507 for shell in /sbin/nologin /usr/sbin/nologin /bin/false /usr/bin/false /dev/null ; do 512 if [ "${USERLAND}" == "BSD" ]
508 [[ -x ${ROOT}${shell} ]] && break 513 then
509 done 514 eshell="/usr/bin/false"
510 515 else
511 if [[ ${shell} == "/dev/null" ]] ; then 516 eshell="/bin/false"
512 eerror "Unable to identify the shell to use"
513 die "Unable to identify the shell to use"
514 fi 517 fi
515
516 eshell=${shell}
517 fi 518 fi
518 einfo " - Shell: ${eshell}" 519 einfo " - Shell: ${eshell}"
519 opts="${opts} -s ${eshell}" 520 opts="${opts} -s ${eshell}"
520 521
521 # handle homedir 522 # handle homedir
522 local ehome=$1; shift 523 local ehome="$1"; shift
523 if [[ -z ${ehome} ]] || [[ ${ehome} == "-1" ]] ; then 524 if [ -z "${ehome}" ] || [ "${eshell}" == "-1" ]
525 then
524 ehome="/dev/null" 526 ehome="/dev/null"
525 fi 527 fi
526 einfo " - Home: ${ehome}" 528 einfo " - Home: ${ehome}"
527 opts="${opts} -d ${ehome}" 529 opts="${opts} -d ${ehome}"
528 530
529 # handle groups 531 # handle groups
530 local egroups=$1; shift 532 local egroups="$1"; shift
531 if [[ ! -z ${egroups} ]] ; then 533 if [ ! -z "${egroups}" ]
534 then
532 local oldifs=${IFS} 535 local oldifs="${IFS}"
533 local defgroup="" exgroups="" 536 local defgroup="" exgroups=""
534 537
535 export IFS="," 538 export IFS=","
536 for g in ${egroups} ; do 539 for g in ${egroups}
540 do
537 export IFS=${oldifs} 541 export IFS="${oldifs}"
538 if [[ -z $(egetent group "${g}") ]] ; then 542 if [ -z "`egetent group \"${g}\"`" ]
543 then
539 eerror "You must add group ${g} to the system first" 544 eerror "You must add group ${g} to the system first"
540 die "${g} is not a valid GID" 545 die "${g} is not a valid GID"
541 fi 546 fi
542 if [[ -z ${defgroup} ]] ; then 547 if [ -z "${defgroup}" ]
548 then
543 defgroup=${g} 549 defgroup="${g}"
544 else 550 else
545 exgroups="${exgroups},${g}" 551 exgroups="${exgroups},${g}"
546 fi 552 fi
547 export IFS="," 553 export IFS=","
548 done 554 done
549 export IFS=${oldifs} 555 export IFS="${oldifs}"
550 556
551 opts="${opts} -g ${defgroup}" 557 opts="${opts} -g ${defgroup}"
552 if [[ ! -z ${exgroups} ]] ; then 558 if [ ! -z "${exgroups}" ]
559 then
553 opts="${opts} -G ${exgroups:1}" 560 opts="${opts} -G ${exgroups:1}"
554 fi 561 fi
555 else 562 else
556 egroups="(none)" 563 egroups="(none)"
557 fi 564 fi
558 einfo " - Groups: ${egroups}" 565 einfo " - Groups: ${egroups}"
559 566
560 # handle extra and add the user 567 # handle extra and add the user
568 local eextra="$@"
561 local oldsandbox=${SANDBOX_ON} 569 local oldsandbox="${SANDBOX_ON}"
562 export SANDBOX_ON="0" 570 export SANDBOX_ON="0"
563 case ${CHOST} in 571 if useq ppc-macos
564 *-darwin*) 572 then
565 ### Make the user 573 ### Make the user
566 if [[ -z $@ ]] ; then 574 if [ -z "${eextra}" ]
575 then
567 dscl . create /users/${euser} uid ${euid} 576 dscl . create /users/${euser} uid ${euid}
568 dscl . create /users/${euser} shell ${eshell} 577 dscl . create /users/${euser} shell ${eshell}
569 dscl . create /users/${euser} home ${ehome} 578 dscl . create /users/${euser} home ${ehome}
570 dscl . create /users/${euser} realname "added by portage for ${PN}" 579 dscl . create /users/${euser} realname "added by portage for ${PN}"
571 ### Add the user to the groups specified 580 ### Add the user to the groups specified
572 local oldifs=${IFS} 581 local oldifs="${IFS}"
573 export IFS="," 582 export IFS=","
574 for g in ${egroups} ; do 583 for g in ${egroups}
584 do
575 dscl . merge /groups/${g} users ${euser} 585 dscl . merge /groups/${g} users ${euser}
576 done 586 done
577 export IFS=${oldifs} 587 export IFS="${oldifs}"
578 else 588 else
579 einfo "Extra options are not supported on Darwin yet" 589 einfo "Extra options are not supported on macos yet"
580 einfo "Please report the ebuild along with the info below" 590 einfo "Please report the ebuild along with the info below"
581 einfo "eextra: $@" 591 einfo "eextra: ${eextra}"
582 die "Required function missing" 592 die "Required function missing"
583 fi 593 fi
584 ;; 594 elif use x86-fbsd ; then
585 *-freebsd*) 595 if [ -z "${eextra}" ]
586 if [[ -z $@ ]] ; then 596 then
587 pw useradd ${euser} ${opts} \ 597 pw useradd ${euser} ${opts} \
588 -c "added by portage for ${PN}" \ 598 -c "added by portage for ${PN}" \
589 die "enewuser failed" 599 die "enewuser failed"
590 else 600 else
591 einfo " - Extra: $@" 601 einfo " - Extra: ${eextra}"
592 pw useradd ${euser} ${opts} \ 602 pw useradd ${euser} ${opts} \
593 "$@" || die "enewuser failed" 603 -c ${eextra} || die "enewuser failed"
594 fi 604 fi
595 ;;
596
597 *-netbsd*)
598 if [[ -z $@ ]] ; then
599 useradd ${opts} ${euser} || die "enewuser failed"
600 else 605 else
601 einfo " - Extra: $@" 606 if [ -z "${eextra}" ]
602 useradd ${opts} ${euser} "$@" || die "enewuser failed" 607 then
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 *)
620 if [[ -z $@ ]] ; then
621 useradd ${opts} ${euser} \ 608 useradd ${opts} ${euser} \
622 -c "added by portage for ${PN}" \ 609 -c "added by portage for ${PN}" \
623 || die "enewuser failed" 610 || die "enewuser failed"
624 else 611 else
625 einfo " - Extra: $@" 612 einfo " - Extra: ${eextra}"
626 useradd ${opts} ${euser} "$@" \ 613 useradd ${opts} ${euser} ${eextra} \
627 || die "enewuser failed" 614 || die "enewuser failed"
628 fi 615 fi
629 ;;
630 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 616 fi
638
639 export SANDBOX_ON=${oldsandbox} 617 export SANDBOX_ON="${oldsandbox}"
618
619 if [ ! -e "${ehome}" ] && [ ! -e "${D}/${ehome}" ]
620 then
621 einfo " - Creating ${ehome} in ${D}"
622 dodir ${ehome}
623 fowners ${euser} ${ehome}
624 fperms 755 ${ehome}
625 fi
640} 626}
641 627
642# Simplify/standardize adding groups to the system 628# Simplify/standardize adding groups to the system
643# vapier@gentoo.org 629# vapier@gentoo.org
644# 630#
673 then 659 then
674 if [ "${egid}" -gt 0 ] 660 if [ "${egid}" -gt 0 ]
675 then 661 then
676 if [ -z "`egetent group ${egid}`" ] 662 if [ -z "`egetent group ${egid}`" ]
677 then 663 then
678 if [[ "${CHOST}" == *-darwin* ]]; then 664 if useq ppc-macos ; then
679 opts="${opts} ${egid}" 665 opts="${opts} ${egid}"
680 else 666 else
681 opts="${opts} -g ${egid}" 667 opts="${opts} -g ${egid}"
682 fi 668 fi
683 else 669 else
697 opts="${opts} ${eextra}" 683 opts="${opts} ${eextra}"
698 684
699 # add the group 685 # add the group
700 local oldsandbox="${SANDBOX_ON}" 686 local oldsandbox="${SANDBOX_ON}"
701 export SANDBOX_ON="0" 687 export SANDBOX_ON="0"
702 case ${CHOST} in 688 if useq ppc-macos ; then
703 *-darwin*)
704 if [ ! -z "${eextra}" ]; 689 if [ ! -z "${eextra}" ];
705 then 690 then
706 einfo "Extra options are not supported on Darwin/OS X yet" 691 einfo "Extra options are not supported on macos yet"
707 einfo "Please report the ebuild along with the info below" 692 einfo "Please report the ebuild along with the info below"
708 einfo "eextra: ${eextra}" 693 einfo "eextra: ${eextra}"
709 die "Required function missing" 694 die "Required function missing"
710 fi 695 fi
711 696
712 # If we need the next available 697 # If we need the next available
713 case ${egid} in 698 case ${egid} in
714 *[!0-9]*) # Non numeric 699 *[!0-9]*) # Non numeric
715 for egid in $(seq 101 999); do 700 for egid in `jot 898 101`; do
716 [ -z "`egetent group ${egid}`" ] && break 701 [ -z "`egetent group ${egid}`" ] && break
717 done 702 done
718 esac 703 esac
719 dscl . create /groups/${egroup} gid ${egid} 704 dscl . create /groups/${egroup} gid ${egid}
720 dscl . create /groups/${egroup} passwd '*' 705 dscl . create /groups/${egroup} passwd '*'
721 ;; 706 elif use x86-fbsd ; then
722
723 *-freebsd*)
724 case ${egid} in 707 case ${egid} in
725 *[!0-9]*) # Non numeric 708 *[!0-9]*) # Non numeric
726 for egid in $(seq 101 999); do 709 for egid in `jot 898 101`; do
727 [ -z "`egetent group ${egid}`" ] && break 710 [ -z "`egetent group ${egid}`" ] && break
728 done 711 done
729 esac 712 esac
730 pw groupadd ${egroup} -g ${egid} || die "enewgroup failed" 713 pw groupadd ${egroup} -g ${egid} || die "enewgroup failed"
731 ;; 714 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" 715 groupadd ${opts} ${egroup} || die "enewgroup failed"
745 ;; 716 fi
746 esac
747 export SANDBOX_ON="${oldsandbox}" 717 export SANDBOX_ON="${oldsandbox}"
748} 718}
749 719
750# Simple script to replace 'dos2unix' binaries 720# Simple script to replace 'dos2unix' binaries
751# vapier@gentoo.org 721# vapier@gentoo.org
776# name: the name that will show up in the menu 746# name: the name that will show up in the menu
777# icon: give your little like a pretty little icon ... 747# icon: give your little like a pretty little icon ...
778# this can be relative (to /usr/share/pixmaps) or 748# this can be relative (to /usr/share/pixmaps) or
779# a full path to an icon 749# a full path to an icon
780# type: what kind of application is this ? for categories: 750# type: what kind of application is this ? for categories:
781# http://www.freedesktop.org/Standards/desktop-entry-spec 751# http://www.freedesktop.org/wiki/Standards_2fmenu_2dspec
782# path: if your app needs to startup in a specific dir 752# path: if your app needs to startup in a specific dir
783make_desktop_entry() { 753make_desktop_entry() {
784 [[ -z $1 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1 754 [[ -z $1 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1
785 755
786 local exec=${1} 756 local exec=${1}
812 dev) 782 dev)
813 type="Development" 783 type="Development"
814 ;; 784 ;;
815 785
816 games) 786 games)
787 [[ -z ${path} ]] && path=${GAMES_BINDIR}
788
817 case ${catmin} in 789 case ${catmin} in
818 action) type=ActionGame;; 790 action) type=ActionGame;;
819 arcade) type=ArcadeGame;; 791 arcade) type=ArcadeGame;;
820 board) type=BoardGame;; 792 board) type=BoardGame;;
821 kid) type=KidsGame;; 793 kid) type=KidsGame;;
862 type="Network;${type}" 834 type="Network;${type}"
863 ;; 835 ;;
864 836
865 sci) 837 sci)
866 case ${catmin} in 838 case ${catmin} in
867 astro*) type=Astronomy;; 839 astro*) type=Astronomoy;;
868 bio*) type=Biology;; 840 bio*) type=Biology;;
869 calc*) type=Calculator;; 841 calc*) type=Calculator;;
870 chem*) type=Chemistry;; 842 chem*) type=Chemistry;;
871 geo*) type=Geology;; 843 geo*) type=Geology;;
872 math*) type=Math;; 844 math*) type=Math;;
904Exec=${exec} 876Exec=${exec}
905Path=${path} 877Path=${path}
906Icon=${icon} 878Icon=${icon}
907Categories=Application;${type};" > "${desktop}" 879Categories=Application;${type};" > "${desktop}"
908 880
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 881 insinto /usr/share/applications
913 doins "${desktop}" 882 doins "${desktop}"
914 ) 883
884 return 0
915} 885}
916 886
917# Make a GDM/KDM Session file 887# Make a GDM/KDM Session file
918# 888#
919# make_desktop_entry(<title>, <command>) 889# make_desktop_entry(<title>, <command>)
948 doins "${i}" 918 doins "${i}"
949 elif [[ -d ${i} ]] ; then 919 elif [[ -d ${i} ]] ; then
950 for j in "${i}"/*.desktop ; do 920 for j in "${i}"/*.desktop ; do
951 doins "${j}" 921 doins "${j}"
952 done 922 done
953 fi 923 fi
954 done 924 done
955} 925}
956newmenu() { 926newmenu() {
957 insinto /usr/share/applications 927 insinto /usr/share/applications
958 newins "$1" "$2" 928 newins "$1" "$2"
966 doins "${i}" 936 doins "${i}"
967 elif [[ -d ${i} ]] ; then 937 elif [[ -d ${i} ]] ; then
968 for j in "${i}"/*.png ; do 938 for j in "${i}"/*.png ; do
969 doins "${j}" 939 doins "${j}"
970 done 940 done
971 fi 941 fi
972 done 942 done
973} 943}
974newicon() { 944newicon() {
975 insinto /usr/share/pixmaps 945 insinto /usr/share/pixmaps
976 newins "$1" "$2" 946 newins "$1" "$2"
981############################################################## 951##############################################################
982 952
983 953
984# for internal use only (unpack_pdv and unpack_makeself) 954# for internal use only (unpack_pdv and unpack_makeself)
985find_unpackable_file() { 955find_unpackable_file() {
986 local src=$1 956 local src="$1"
987 if [[ -z ${src} ]] ; then 957 if [ -z "${src}" ]
958 then
988 src=${DISTDIR}/${A} 959 src="${DISTDIR}/${A}"
989 else 960 else
990 if [[ -e ${DISTDIR}/${src} ]] ; then 961 if [ -e "${DISTDIR}/${src}" ]
962 then
991 src=${DISTDIR}/${src} 963 src="${DISTDIR}/${src}"
992 elif [[ -e ${PWD}/${src} ]] ; then 964 elif [ -e "${PWD}/${src}" ]
965 then
993 src=${PWD}/${src} 966 src="${PWD}/${src}"
994 elif [[ -e ${src} ]] ; then 967 elif [ -e "${src}" ]
968 then
995 src=${src} 969 src="${src}"
996 fi
997 fi 970 fi
998 [[ ! -e ${src} ]] && return 1 971 fi
972 [ ! -e "${src}" ] && die "Could not find requested archive ${src}"
999 echo "${src}" 973 echo "${src}"
1000} 974}
1001 975
1002# Unpack those pesky pdv generated files ... 976# Unpack those pesky pdv generated files ...
1003# They're self-unpacking programs with the binary package stuffed in 977# They're self-unpacking programs with the binary package stuffed in
1018# lseek 992# lseek
1019# root@vapier 0 pdv_unpack # strace -elseek ./hldsupdatetool.bin 993# root@vapier 0 pdv_unpack # strace -elseek ./hldsupdatetool.bin
1020# lseek(3, -4, SEEK_END) = 2981250 994# lseek(3, -4, SEEK_END) = 2981250
1021# thus we would pass in the value of '4' as the second parameter. 995# thus we would pass in the value of '4' as the second parameter.
1022unpack_pdv() { 996unpack_pdv() {
1023 local src=$(find_unpackable_file $1) 997 local src="`find_unpackable_file $1`"
1024 local sizeoff_t=$2 998 local sizeoff_t="$2"
1025 999
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 :(" 1000 [ -z "${sizeoff_t}" ] && die "No idea what off_t size was used for this pdv :("
1028 1001
1029 local shrtsrc=$(basename "${src}") 1002 local shrtsrc="`basename ${src}`"
1030 echo ">>> Unpacking ${shrtsrc} to ${PWD}" 1003 echo ">>> Unpacking ${shrtsrc} to ${PWD}"
1031 local metaskip=`tail -c ${sizeoff_t} ${src} | hexdump -e \"%i\"` 1004 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\"` 1005 local tailskip=`tail -c $((${sizeoff_t}*2)) ${src} | head -c ${sizeoff_t} | hexdump -e \"%i\"`
1033 1006
1034 # grab metadata for debug reasons 1007 # grab metadata for debug reasons
1098# Usage: unpack_makeself [file to unpack] [offset] [tail|dd] 1071# Usage: unpack_makeself [file to unpack] [offset] [tail|dd]
1099# - If the file is not specified then unpack will utilize ${A}. 1072# - If the file is not specified then unpack will utilize ${A}.
1100# - If the offset is not specified then we will attempt to extract 1073# - If the offset is not specified then we will attempt to extract
1101# the proper offset from the script itself. 1074# the proper offset from the script itself.
1102unpack_makeself() { 1075unpack_makeself() {
1103 local src_input=${1:-${A}}
1104 local src=$(find_unpackable_file "${src_input}") 1076 local src="$(find_unpackable_file "$1")"
1105 local skip=$2 1077 local skip="$2"
1106 local exe=$3 1078 local exe="$3"
1107 1079
1108 [[ -z ${src} ]] && die "Could not locate source for '${src_input}'"
1109
1110 local shrtsrc=$(basename "${src}") 1080 local shrtsrc="$(basename "${src}")"
1111 echo ">>> Unpacking ${shrtsrc} to ${PWD}" 1081 echo ">>> Unpacking ${shrtsrc} to ${PWD}"
1112 if [[ -z ${skip} ]] ; then 1082 if [ -z "${skip}" ]
1083 then
1113 local ver=$(grep -a '#.*Makeself' "${src}" | awk '{print $NF}') 1084 local ver="`grep -a '#.*Makeself' ${src} | awk '{print $NF}'`"
1114 local skip=0 1085 local skip=0
1115 exe=tail 1086 exe=tail
1116 case ${ver} in 1087 case ${ver} in
1117 1.5.*) # tested 1.5.{3,4,5} ... guessing 1.5.x series is same 1088 1.5.*) # tested 1.5.{3,4,5} ... guessing 1.5.x series is same
1118 skip=$(grep -a ^skip= "${src}" | cut -d= -f2) 1089 skip=$(grep -a ^skip= "${src}" | cut -d= -f2)
1130 ;; 1101 ;;
1131 2.1.3) 1102 2.1.3)
1132 skip=`grep -a ^offset= "${src}" | awk '{print $3}'` 1103 skip=`grep -a ^offset= "${src}" | awk '{print $3}'`
1133 let skip="skip + 1" 1104 let skip="skip + 1"
1134 ;; 1105 ;;
1135 2.1.4|2.1.5) 1106 2.1.4)
1136 skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1) 1107 skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1)
1137 skip=$(head -n ${skip} "${src}" | wc -c) 1108 skip=$(head -n ${skip} "${src}" | wc -c)
1138 exe="dd" 1109 exe="dd"
1139 ;; 1110 ;;
1140 *) 1111 *)
1185check_license() { 1156check_license() {
1186 local lic=$1 1157 local lic=$1
1187 if [ -z "${lic}" ] ; then 1158 if [ -z "${lic}" ] ; then
1188 lic="${PORTDIR}/licenses/${LICENSE}" 1159 lic="${PORTDIR}/licenses/${LICENSE}"
1189 else 1160 else
1190 if [ -e "${PORTDIR}/licenses/${lic}" ] ; then 1161 if [ -e "${PORTDIR}/licenses/${src}" ] ; then
1191 lic="${PORTDIR}/licenses/${lic}" 1162 lic="${PORTDIR}/licenses/${src}"
1192 elif [ -e "${PWD}/${lic}" ] ; then 1163 elif [ -e "${PWD}/${src}" ] ; then
1193 lic="${PWD}/${lic}" 1164 lic="${PWD}/${src}"
1194 elif [ -e "${lic}" ] ; then 1165 elif [ -e "${src}" ] ; then
1195 lic="${lic}" 1166 lic="${src}"
1196 fi
1197 fi 1167 fi
1168 fi
1198 [ ! -f "${lic}" ] && die "Could not find requested license ${lic}" 1169 [ ! -f "${lic}" ] && die "Could not find requested license ${src}"
1199 local l="`basename ${lic}`" 1170 local l="`basename ${lic}`"
1200 1171
1201 # here is where we check for the licenses the user already 1172 # 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 1173 # accepted ... if we don't find a match, we make the user accept
1203 local shopts=$- 1174 local shopts=$-
1259 # first we figure out how many cds we're dealing with by 1230 # first we figure out how many cds we're dealing with by
1260 # the # of files they gave us 1231 # the # of files they gave us
1261 local cdcnt=0 1232 local cdcnt=0
1262 local f= 1233 local f=
1263 for f in "$@" ; do 1234 for f in "$@" ; do
1264 ((++cdcnt)) 1235 cdcnt=$((cdcnt + 1))
1265 export CDROM_CHECK_${cdcnt}="$f" 1236 export CDROM_CHECK_${cdcnt}="$f"
1266 done 1237 done
1267 export CDROM_TOTAL_CDS=${cdcnt} 1238 export CDROM_TOTAL_CDS=${cdcnt}
1268 export CDROM_CURRENT_CD=1 1239 export CDROM_CURRENT_CD=1
1269 1240
1270 # now we see if the user gave use CD_ROOT ... 1241 # now we see if the user gave use CD_ROOT ...
1271 # if they did, let's just believe them that it's correct 1242 # if they did, let's just believe them that it's correct
1243 if [[ ! -z ${CD_ROOT} ]] ; then
1244 export CDROM_ROOT=${CD_ROOT}
1245 einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}"
1246 return
1247 fi
1248 # do the same for CD_ROOT_X
1272 if [[ -n ${CD_ROOT}${CD_ROOT_1} ]] ; then 1249 if [[ ! -z ${CD_ROOT_1} ]] ; then
1273 local var= 1250 local var=
1274 cdcnt=0 1251 cdcnt=0
1275 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do 1252 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do
1276 ((++cdcnt)) 1253 cdcnt=$((cdcnt + 1))
1277 var="CD_ROOT_${cdcnt}" 1254 var="CD_ROOT_${cdcnt}"
1278 [[ -z ${!var} ]] && var="CD_ROOT"
1279 if [[ -z ${!var} ]] ; then 1255 if [[ -z ${!var} ]] ; then
1280 eerror "You must either use just the CD_ROOT" 1256 eerror "You must either use just the CD_ROOT"
1281 eerror "or specify ALL the CD_ROOT_X variables." 1257 eerror "or specify ALL the CD_ROOT_X variables."
1282 eerror "In this case, you will need ${CDROM_TOTAL_CDS} CD_ROOT_X variables." 1258 eerror "In this case, you will need ${CDROM_TOTAL_CDS} CD_ROOT_X variables."
1283 die "could not locate CD_ROOT_${cdcnt}" 1259 die "could not locate CD_ROOT_${cdcnt}"
1284 fi 1260 fi
1261 export CDROM_ROOTS_${cdcnt}="${!var}"
1285 done 1262 done
1286 export CDROM_ROOT=${CD_ROOT_1:-${CD_ROOT}} 1263 export CDROM_ROOT=${CDROM_ROOTS_1}
1287 einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}" 1264 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 1265 return
1295 fi 1266 fi
1296 1267
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 1268 if [[ ${CDROM_TOTAL_CDS} -eq 1 ]] ; then
1300 einfo "This ebuild will need the ${CDROM_NAME:-cdrom for ${PN}}" 1269 einfon "This ebuild will need the "
1270 if [[ -z ${CDROM_NAME} ]] ; then
1271 echo "cdrom for ${PN}."
1272 else
1273 echo "${CDROM_NAME}."
1274 fi
1301 echo 1275 echo
1302 einfo "If you do not have the CD, but have the data files" 1276 einfo "If you do not have the CD, but have the data files"
1303 einfo "mounted somewhere on your filesystem, just export" 1277 einfo "mounted somewhere on your filesystem, just export"
1304 einfo "the variable CD_ROOT so that it points to the" 1278 einfo "the variable CD_ROOT so that it points to the"
1305 einfo "directory containing the files." 1279 einfo "directory containing the files."
1309 echo 1283 echo
1310 else 1284 else
1311 einfo "This package will need access to ${CDROM_TOTAL_CDS} cds." 1285 einfo "This package will need access to ${CDROM_TOTAL_CDS} cds."
1312 cdcnt=0 1286 cdcnt=0
1313 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do 1287 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do
1314 ((++cdcnt)) 1288 cdcnt=$((cdcnt + 1))
1315 var="CDROM_NAME_${cdcnt}" 1289 var="CDROM_NAME_${cdcnt}"
1316 [[ ! -z ${!var} ]] && einfo " CD ${cdcnt}: ${!var}" 1290 [[ ! -z ${!var} ]] && einfo " CD ${cdcnt}: ${!var}"
1317 done 1291 done
1318 echo 1292 echo
1319 einfo "If you do not have the CDs, but have the data files" 1293 einfo "If you do not have the CDs, but have the data files"
1320 einfo "mounted somewhere on your filesystem, just export" 1294 einfo "mounted somewhere on your filesystem, just export"
1321 einfo "the following variables so they point to the right place:" 1295 einfo "the following variables so they point to the right place:"
1322 einfon "" 1296 einfon ""
1323 cdcnt=0 1297 cdcnt=0
1324 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do 1298 while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]] ; do
1325 ((++cdcnt)) 1299 cdcnt=$((cdcnt + 1))
1326 echo -n " CD_ROOT_${cdcnt}" 1300 echo -n " CD_ROOT_${cdcnt}"
1327 done 1301 done
1328 echo 1302 echo
1329 einfo "Or, if you have all the files in the same place, or" 1303 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" 1304 einfo "you only have one cdrom, you can export CD_ROOT"
1333 echo 1307 echo
1334 einfo "For example:" 1308 einfo "For example:"
1335 einfo "export CD_ROOT_1=/mnt/cdrom" 1309 einfo "export CD_ROOT_1=/mnt/cdrom"
1336 echo 1310 echo
1337 fi 1311 fi
1338
1339 export CDROM_SET=""
1340 export CDROM_CURRENT_CD=0 1312 export CDROM_CURRENT_CD=0
1341 cdrom_load_next_cd 1313 cdrom_load_next_cd
1342} 1314}
1343 1315
1344# this is only used when you need access to more than one cd. 1316# 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. 1317# 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. 1318# 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. 1319# remember, you can only go forward in the cd chain, you can't go back.
1348cdrom_load_next_cd() { 1320cdrom_load_next_cd() {
1321 export CDROM_CURRENT_CD=$((CDROM_CURRENT_CD + 1))
1349 local var 1322 local var=
1350 ((++CDROM_CURRENT_CD)) 1323
1324 if [[ ! -z ${CD_ROOT} ]] ; then
1325 einfo "Using same root as before for CD #${CDROM_CURRENT_CD}"
1326 return
1327 fi
1351 1328
1352 unset CDROM_ROOT 1329 unset CDROM_ROOT
1353 var=CD_ROOT_${CDROM_CURRENT_CD} 1330 var=CDROM_ROOTS_${CDROM_CURRENT_CD}
1354 [[ -z ${!var} ]] && var="CD_ROOT"
1355 if [[ -z ${!var} ]] ; then 1331 if [[ -z ${!var} ]] ; then
1356 var="CDROM_CHECK_${CDROM_CURRENT_CD}" 1332 var="CDROM_CHECK_${CDROM_CURRENT_CD}"
1357 _cdrom_locate_file_on_cd ${!var} 1333 cdrom_locate_file_on_cd ${!var}
1358 else 1334 else
1359 export CDROM_ROOT=${!var} 1335 export CDROM_ROOT=${!var}
1360 fi 1336 fi
1361 1337
1362 einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}" 1338 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 1343# 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 1344# found, then a message asking for the user to insert the cdrom will be
1369# displayed and we'll hang out here until: 1345# displayed and we'll hang out here until:
1370# (1) the file is found on a mounted cdrom 1346# (1) the file is found on a mounted cdrom
1371# (2) the user hits CTRL+C 1347# (2) the user hits CTRL+C
1372_cdrom_locate_file_on_cd() { 1348cdrom_locate_file_on_cd() {
1373 local mline=""
1374 local showedmsg=0
1375
1376 while [[ -z ${CDROM_ROOT} ]] ; do 1349 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}]}) 1350 local dir="$(dirname ${@})"
1385 local file=$(basename ${cdset[${i}]}) 1351 local file="$(basename ${@})"
1352 local mline=""
1353 local showedmsg=0
1386 1354
1387 for mline in $(mount | gawk '/(iso|cdrom|fs=cdfss)/ {print $3}') ; do 1355 for mline in $(mount | egrep -e '(iso|cdrom)' | awk '{print $3}') ; do
1388 [[ -d ${mline}/${dir} ]] || continue 1356 [[ -d ${mline}/${dir} ]] || continue
1389 if [[ -n $(find ${mline}/${dir} -maxdepth 1 -iname ${file}) ]] ; then 1357 [[ ! -z $(find ${mline}/${dir} -maxdepth 1 -iname ${file}) ]] \
1390 export CDROM_ROOT=${mline} 1358 && export CDROM_ROOT=${mline}
1391 export CDROM_SET=${i} 1359 done
1392 export CDROM_MATCH=${cdset[${i}]} 1360
1393 return 1361 if [[ -z ${CDROM_ROOT} ]] ; then
1362 echo
1363 if [[ ${showedmsg} -eq 0 ]] ; then
1364 if [[ ${CDROM_TOTAL_CDS} -eq 1 ]] ; then
1365 if [[ -z ${CDROM_NAME} ]] ; then
1366 einfo "Please insert the cdrom for ${PN} now !"
1367 else
1368 einfo "Please insert the ${CDROM_NAME} cdrom now !"
1369 fi
1370 else
1371 if [[ -z ${CDROM_NAME_1} ]] ; then
1372 einfo "Please insert cd #${CDROM_CURRENT_CD} for ${PN} now !"
1373 else
1374 local var="CDROM_NAME_${CDROM_CURRENT_CD}"
1375 einfo "Please insert+mount the ${!var} cdrom now !"
1376 fi
1394 fi 1377 fi
1395 done 1378 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 1379 fi
1416 showedmsg=1
1417 fi
1418 einfo "Press return to scan for the cd again" 1380 einfo "Press return to scan for the cd again"
1419 einfo "or hit CTRL+C to abort the emerge." 1381 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 1382 read
1383 fi
1426 done 1384 done
1427} 1385}
1428 1386
1429# Make sure that LINGUAS only contains languages that 1387# Make sure that LINGUAS only contains languages that
1430# a package can support 1388# a package can support
1551 LIB=$1 1509 LIB=$1
1552 1510
1553 if [ -n "${LIB}" -a -f "${ROOT}${LIB}" ]; then 1511 if [ -n "${LIB}" -a -f "${ROOT}${LIB}" ]; then
1554 SONAME=`basename ${LIB}` 1512 SONAME=`basename ${LIB}`
1555 1513
1556 ewarn "An old version of an installed library was detected on your system." 1514 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" 1515 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," 1516 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:" 1517 einfo "you will need to execute the following command:"
1560 ewarn " revdep-rebuild --soname ${SONAME}" 1518 einfo " revdep-rebuild --soname ${SONAME}"
1561 ewarn 1519 einfo
1562 ewarn "After doing that, you can safely remove ${LIB}" 1520 einfo "After doing that, you can safely remove ${LIB}"
1563 ewarn "Note: 'emerge gentoolkit' to get revdep-rebuild" 1521 einfo "Note: 'emerge gentoolkit' to get revdep-rebuild"
1564 fi 1522 fi
1565} 1523}
1566 1524
1567# Hack for people to figure out if a package was built with 1525# Hack for people to figure out if a package was built with
1568# certain USE flags 1526# certain USE flags
1578 [[ ${opt:0:1} = "-" ]] && shift || opt="-a" 1536 [[ ${opt:0:1} = "-" ]] && shift || opt="-a"
1579 1537
1580 local PKG=$(best_version $1) 1538 local PKG=$(best_version $1)
1581 shift 1539 shift
1582 1540
1583 local USEFILE=${ROOT}/var/db/pkg/${PKG}/USE 1541 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 1542 [[ ! -e ${USEFILE} ]] && return 1
1588 1543
1589 local USE_BUILT=$(<${USEFILE}) 1544 local USE_BUILT=$(<${USEFILE})
1590 while [[ $# -gt 0 ]] ; do 1545 while [[ $# -gt 0 ]] ; do
1591 if [[ ${opt} = "-o" ]] ; then 1546 if [[ ${opt} = "-o" ]] ; then
1592 has $1 ${USE_BUILT} && return 0 1547 has $1 ${USE_BUILT} && return 0
1644# $4 == extra LD_LIBRARY_PATH's (make it : delimited) 1599# $4 == extra LD_LIBRARY_PATH's (make it : delimited)
1645# $5 == path for wrapper 1600# $5 == path for wrapper
1646make_wrapper() { 1601make_wrapper() {
1647 local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5 1602 local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5
1648 local tmpwrapper=$(emktemp) 1603 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}" 1604 cat << EOF > "${tmpwrapper}"
1652#!/bin/sh 1605#!/bin/sh
1653cd "${chdir:-.}" 1606cd "${chdir}"
1654if [ -n "${libdir}" ] ; then
1655 if [ "\${LD_LIBRARY_PATH+set}" = "set" ] ; then
1656 export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}" 1607export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}"
1657 else
1658 export LD_LIBRARY_PATH="${libdir}"
1659 fi
1660fi
1661exec ${bin} "\$@" 1608exec ${bin} "\$@"
1662EOF 1609EOF
1663 chmod go+rx "${tmpwrapper}" 1610 chmod go+rx "${tmpwrapper}"
1664 if [[ -n ${path} ]] ; then 1611 if [ -n "${5}" ]
1612 then
1665 exeinto "${path}" 1613 exeinto ${5}
1666 newexe "${tmpwrapper}" "${wrapper}" 1614 newexe "${tmpwrapper}" "${wrapper}"
1667 else 1615 else
1668 newbin "${tmpwrapper}" "${wrapper}" 1616 newbin "${tmpwrapper}" "${wrapper}"
1669 fi 1617 fi
1670} 1618}

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

  ViewVC Help
Powered by ViewVC 1.1.20