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

Diff of /eclass/eutils.eclass

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

Revision 1.171 Revision 1.192
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.171 2005/05/13 00:30:33 vapier Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.192 2005/07/15 22:16:49 vapier Exp $
4# 4#
5# Author: Martin Schlemmer <azarah@gentoo.org> 5# Author: Martin Schlemmer <azarah@gentoo.org>
6# 6#
7# This eclass is for general purpose functions that most ebuilds 7# This eclass is for general purpose functions that most ebuilds
8# have to implement themselves. 8# have to implement themselves.
9# 9#
10# NB: If you add anything, please comment it! 10# NB: If you add anything, please comment it!
11 11
12inherit multilib 12inherit multilib
13ECLASS=eutils
14INHERITED="$INHERITED $ECLASS"
15 13
16DEPEND="!bootstrap? ( sys-devel/patch )" 14DEPEND="!bootstrap? ( sys-devel/patch )"
15# sys-apps/shadow is needed for useradd, etc, bug #94745.
17 16
18DESCRIPTION="Based on the ${ECLASS} eclass" 17DESCRIPTION="Based on the ${ECLASS} eclass"
19 18
20# 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
21# to five seconds. If the EPAUSE_IGNORE env var is set, don't wait. If we're not 20# to five seconds. If the EPAUSE_IGNORE env var is set, don't wait. If we're not
68 dodir /usr/${libdir} 67 dodir /usr/${libdir}
69 68
70 for lib in "${@}" ; do 69 for lib in "${@}" ; do
71 cat > "${D}/usr/${libdir}/${lib}" <<-END_LDSCRIPT 70 cat > "${D}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
72 /* GNU ld script 71 /* GNU ld script
73 Since Gentoo has critical dynamic libraries 72 Since Gentoo has critical dynamic libraries
74 in /lib, and the static versions in /usr/lib, 73 in /lib, and the static versions in /usr/lib,
75 we need to have a "fake" dynamic lib in /usr/lib, 74 we need to have a "fake" dynamic lib in /usr/lib,
76 otherwise we run into linking problems. 75 otherwise we run into linking problems.
77 76
78 See bug http://bugs.gentoo.org/4411 for more info. 77 See bug http://bugs.gentoo.org/4411 for more info.
79 */ 78 */
80 GROUP ( /${libdir}/${lib} ) 79 GROUP ( /${libdir}/${lib} )
81 END_LDSCRIPT 80 END_LDSCRIPT
82 fperms a+x "/usr/${libdir}/${lib}" 81 fperms a+x "/usr/${libdir}/${lib}"
125# List of patches not to apply. Not this is only file names, 124# List of patches not to apply. Not this is only file names,
126# and not the full path .. 125# and not the full path ..
127EPATCH_EXCLUDE="" 126EPATCH_EXCLUDE=""
128# Change the printed message for a single patch. 127# Change the printed message for a single patch.
129EPATCH_SINGLE_MSG="" 128EPATCH_SINGLE_MSG=""
129# Change the printed message for multiple patches.
130EPATCH_MULTI_MSG="Applying various patches (bugfixes/updates) ..."
130# Force applying bulk patches even if not following the style: 131# Force applying bulk patches even if not following the style:
131# 132#
132# ??_${ARCH}_foo.${EPATCH_SUFFIX} 133# ??_${ARCH}_foo.${EPATCH_SUFFIX}
133# 134#
134EPATCH_FORCE="no" 135EPATCH_FORCE="no"
238 ;; 239 ;;
239 esac 240 esac
240 241
241 if [ "${SINGLE_PATCH}" = "no" ] 242 if [ "${SINGLE_PATCH}" = "no" ]
242 then 243 then
243 einfo "Applying various patches (bugfixes/updates) ..." 244 einfo "${EPATCH_MULTI_MSG}"
244 fi 245 fi
245 for x in ${EPATCH_SOURCE} 246 for x in ${EPATCH_SOURCE}
246 do 247 do
247 # New ARCH dependant patch naming scheme ... 248 # New ARCH dependant patch naming scheme ...
248 # 249 #
249 # ???_arch_foo.patch 250 # ???_arch_foo.patch
250 # 251 #
251 if [ -f ${x} ] && \ 252 if [ -f ${x} ] && \
252 ([ "${SINGLE_PATCH}" = "yes" -o "${x/_all_}" != "${x}" -o "`eval echo \$\{x/_${ARCH}_\}`" != "${x}" ] || \ 253 ([ "${SINGLE_PATCH}" = "yes" -o "${x/_all_}" != "${x}" -o "${x/_${ARCH}_}" != "${x}" ] || \
253 [ "${EPATCH_FORCE}" = "yes" ]) 254 [ "${EPATCH_FORCE}" = "yes" ])
254 then 255 then
255 local count=0 256 local count=0
256 local popts="${EPATCH_OPTS}" 257 local popts="${EPATCH_OPTS}"
257 local patchname=${x##*/} 258 local patchname=${x##*/}
367 then 368 then
368 einfo "Done with patching" 369 einfo "Done with patching"
369 fi 370 fi
370} 371}
371 372
372# This function check how many cpu's are present, and then set
373# -j in MAKEOPTS accordingly.
374#
375# Thanks to nall <nall@gentoo.org> for this.
376#
377get_number_of_jobs() {
378 local jobs=0
379
380 if [ ! -r /proc/cpuinfo ]
381 then
382 return 1
383 fi
384
385 # This bit is from H?kan Wessberg <nacka-gentoo@refug.org>, bug #13565.
386 if [ "`egrep "^[[:space:]]*MAKEOPTS=" /etc/make.conf | wc -l`" -gt 0 ]
387 then
388 ADMINOPTS="`egrep "^[[:space:]]*MAKEOPTS=" /etc/make.conf | cut -d= -f2 | sed 's/\"//g'`"
389 ADMINPARAM="`echo ${ADMINOPTS} | gawk '{match($0, /-j *[0-9]*/, opt); print opt[0]}'`"
390 ADMINPARAM="${ADMINPARAM/-j}"
391 fi
392
393 export MAKEOPTS="`echo ${MAKEOPTS} | sed -e 's:-j *[0-9]*::g'`"
394
395 if [ "${ARCH}" = "amd64" -o "${ARCH}" = "x86" -o "${ARCH}" = "hppa" -o \
396 "${ARCH}" = "arm" -o "${ARCH}" = "mips" -o "${ARCH}" = "ia64" ]
397 then
398 # these archs will always have "[Pp]rocessor"
399 jobs="$((`grep -c ^[Pp]rocessor /proc/cpuinfo` * 2))"
400
401 elif [ "${ARCH}" = "sparc" -o "${ARCH}" = "sparc64" ]
402 then
403 # sparc always has "ncpus active"
404 jobs="$((`grep "^ncpus active" /proc/cpuinfo | sed -e "s/^.*: //"` * 2))"
405
406 elif [ "${ARCH}" = "alpha" ]
407 then
408 # alpha has "cpus active", but only when compiled with SMP
409 if [ "`grep -c "^cpus active" /proc/cpuinfo`" -eq 1 ]
410 then
411 jobs="$((`grep "^cpus active" /proc/cpuinfo | sed -e "s/^.*: //"` * 2))"
412 else
413 jobs=2
414 fi
415
416 elif [ "${ARCH}" = "ppc" -o "${ARCH}" = "ppc64" ]
417 then
418 # ppc has "processor", but only when compiled with SMP
419 if [ "`grep -c "^processor" /proc/cpuinfo`" -eq 1 ]
420 then
421 jobs="$((`grep -c ^processor /proc/cpuinfo` * 2))"
422 else
423 jobs=2
424 fi
425 elif [ "${ARCH}" = "s390" ]
426 then
427 # s390 has "# processors : "
428 jobs="$((`grep "^\# processors" /proc/cpuinfo | sed -e "s/^.*: //"` * 2))"
429 else
430 jobs="$((`grep -c ^cpu /proc/cpuinfo` * 2))"
431 die "Unknown ARCH -- ${ARCH}!"
432 fi
433
434 # Make sure the number is valid ...
435 if [ "${jobs}" -lt 1 ]
436 then
437 jobs=1
438 fi
439
440 if [ -n "${ADMINPARAM}" ]
441 then
442 if [ "${jobs}" -gt "${ADMINPARAM}" ]
443 then
444 einfo "Setting make jobs to \"-j${ADMINPARAM}\" to ensure successful merge ..."
445 export MAKEOPTS="${MAKEOPTS} -j${ADMINPARAM}"
446 else
447 einfo "Setting make jobs to \"-j${jobs}\" to ensure successful merge ..."
448 export MAKEOPTS="${MAKEOPTS} -j${jobs}"
449 fi
450 fi
451}
452
453# Cheap replacement for when debianutils (and thus mktemp) 373# Cheap replacement for when debianutils (and thus mktemp)
454# does not exist on the users system 374# does not exist on the users system
455# vapier@gentoo.org 375# vapier@gentoo.org
456# 376#
457# Takes just 1 optional parameter (the directory to create tmpfile in) 377# Takes just 1 optional parameter (the directory to create tmpfile in)
488# Joe Jezak <josejx@gmail.com> and usata@gentoo.org 408# Joe Jezak <josejx@gmail.com> and usata@gentoo.org
489# FBSD stuff: Aaron Walker <ka0ttic@gentoo.org> 409# FBSD stuff: Aaron Walker <ka0ttic@gentoo.org>
490# 410#
491# egetent(database, key) 411# egetent(database, key)
492egetent() { 412egetent() {
493 if useq ppc-macos ; then 413 if [[ "${USERLAND}" == "Darwin" ]] ; then
494 case "$2" in 414 case "$2" in
495 *[!0-9]*) # Non numeric 415 *[!0-9]*) # Non numeric
496 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }" 416 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }"
497 ;; 417 ;;
498 *) # Numeric 418 *) # Numeric
499 nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }" 419 nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }"
500 ;; 420 ;;
501 esac 421 esac
502 elif useq x86-fbsd ; then 422 elif [[ "${USERLAND}" == "BSD" ]] ; then
503 local action 423 local action
504 if [ "$1" == "passwd" ] 424 if [ "$1" == "passwd" ]
505 then 425 then
506 action="user" 426 action="user"
507 else 427 else
527# homedir: /dev/null 447# homedir: /dev/null
528# groups: none 448# groups: none
529# extra: comment of 'added by portage for ${PN}' 449# extra: comment of 'added by portage for ${PN}'
530enewuser() { 450enewuser() {
531 # get the username 451 # get the username
532 local euser="$1"; shift 452 local euser=$1; shift
533 if [ -z "${euser}" ] 453 if [[ -z ${euser} ]] ; then
534 then
535 eerror "No username specified !" 454 eerror "No username specified !"
536 die "Cannot call enewuser without a username" 455 die "Cannot call enewuser without a username"
537 fi 456 fi
538 457
539 # lets see if the username already exists 458 # lets see if the username already exists
540 if [ "${euser}" == "`egetent passwd \"${euser}\" | cut -d: -f1`" ] 459 if [[ ${euser} == $(egetent passwd "${euser}" | cut -d: -f1) ]] ; then
541 then
542 return 0 460 return 0
543 fi 461 fi
544 einfo "Adding user '${euser}' to your system ..." 462 einfo "Adding user '${euser}' to your system ..."
545 463
546 # options to pass to useradd 464 # options to pass to useradd
547 local opts= 465 local opts=
548 466
549 # handle uid 467 # handle uid
550 local euid="$1"; shift 468 local euid=$1; shift
551 if [ ! -z "${euid}" ] && [ "${euid}" != "-1" ] 469 if [[ ! -z ${euid} ]] && [[ ${euid} != "-1" ]] ; then
552 then
553 if [ "${euid}" -gt 0 ] 470 if [[ ${euid} -gt 0 ]] ; then
554 then
555 if [ ! -z "`egetent passwd ${euid}`" ] 471 if [[ ! -z $(egetent passwd ${euid}) ]] ; then
556 then
557 euid="next" 472 euid="next"
558 fi 473 fi
559 else 474 else
560 eerror "Userid given but is not greater than 0 !" 475 eerror "Userid given but is not greater than 0 !"
561 die "${euid} is not a valid UID" 476 die "${euid} is not a valid UID"
562 fi 477 fi
563 else 478 else
564 euid="next" 479 euid="next"
565 fi 480 fi
566 if [ "${euid}" == "next" ] 481 if [[ ${euid} == "next" ]] ; then
567 then
568 local pwrange 482 local pwrange
569 if [ "${USERLAND}" == "BSD" ] ; then 483 if [[ ${USERLAND} == "BSD" ]] ; then
570 pwrange="`jot 898 101`" 484 pwrange=$(jot 898 101)
571 else 485 else
572 pwrange="`seq 101 999`" 486 pwrange=$(seq 101 999)
573 fi 487 fi
574 for euid in ${pwrange} ; do 488 for euid in ${pwrange} ; do
575 [ -z "`egetent passwd ${euid}`" ] && break 489 [[ -z $(egetent passwd ${euid}) ]] && break
576 done 490 done
577 fi 491 fi
578 opts="${opts} -u ${euid}" 492 opts="${opts} -u ${euid}"
579 einfo " - Userid: ${euid}" 493 einfo " - Userid: ${euid}"
580 494
581 # handle shell 495 # handle shell
582 local eshell="$1"; shift 496 local eshell=$1; shift
583 if [ ! -z "${eshell}" ] && [ "${eshell}" != "-1" ] 497 if [[ ! -z ${eshell} ]] && [[ ${eshell} != "-1" ]] ; then
584 then
585 if [ ! -e "${eshell}" ] 498 if [[ ! -e ${eshell} ]] ; then
586 then
587 eerror "A shell was specified but it does not exist !" 499 eerror "A shell was specified but it does not exist !"
588 die "${eshell} does not exist" 500 die "${eshell} does not exist"
589 fi 501 fi
590 else 502 else
591 if [ "${USERLAND}" == "BSD" ] 503 case ${USERLAND} in
592 then
593 eshell="/usr/bin/false" 504 Darwin) eshell="/usr/bin/false";;
594 else 505 BSD) eshell="/usr/sbin/nologin";;
595 eshell="/bin/false" 506 *) eshell="/bin/false";;
596 fi 507 esac
597 fi 508 fi
598 einfo " - Shell: ${eshell}" 509 einfo " - Shell: ${eshell}"
599 opts="${opts} -s ${eshell}" 510 opts="${opts} -s ${eshell}"
600 511
601 # handle homedir 512 # handle homedir
602 local ehome="$1"; shift 513 local ehome=$1; shift
603 if [ -z "${ehome}" ] && [ "${eshell}" != "-1" ] 514 if [[ -z ${ehome} ]] || [[ ${ehome} == "-1" ]] ; then
604 then
605 ehome="/dev/null" 515 ehome="/dev/null"
606 fi 516 fi
607 einfo " - Home: ${ehome}" 517 einfo " - Home: ${ehome}"
608 opts="${opts} -d ${ehome}" 518 opts="${opts} -d ${ehome}"
609 519
610 # handle groups 520 # handle groups
611 local egroups="$1"; shift 521 local egroups=$1; shift
612 if [ ! -z "${egroups}" ] 522 if [[ ! -z ${egroups} ]] ; then
613 then
614 local oldifs="${IFS}" 523 local oldifs=${IFS}
615 local defgroup="" exgroups="" 524 local defgroup="" exgroups=""
616 525
617 export IFS="," 526 export IFS=","
618 for g in ${egroups} 527 for g in ${egroups} ; do
619 do
620 export IFS="${oldifs}" 528 export IFS=${oldifs}
621 if [ -z "`egetent group \"${g}\"`" ] 529 if [[ -z $(egetent group "${g}") ]] ; then
622 then
623 eerror "You must add group ${g} to the system first" 530 eerror "You must add group ${g} to the system first"
624 die "${g} is not a valid GID" 531 die "${g} is not a valid GID"
625 fi 532 fi
626 if [ -z "${defgroup}" ] 533 if [[ -z ${defgroup} ]] ; then
627 then
628 defgroup="${g}" 534 defgroup=${g}
629 else 535 else
630 exgroups="${exgroups},${g}" 536 exgroups="${exgroups},${g}"
631 fi 537 fi
632 export IFS="," 538 export IFS=","
633 done 539 done
634 export IFS="${oldifs}" 540 export IFS=${oldifs}
635 541
636 opts="${opts} -g ${defgroup}" 542 opts="${opts} -g ${defgroup}"
637 if [ ! -z "${exgroups}" ] 543 if [[ ! -z ${exgroups} ]] ; then
638 then
639 opts="${opts} -G ${exgroups:1}" 544 opts="${opts} -G ${exgroups:1}"
640 fi 545 fi
641 else 546 else
642 egroups="(none)" 547 egroups="(none)"
643 fi 548 fi
644 einfo " - Groups: ${egroups}" 549 einfo " - Groups: ${egroups}"
645 550
646 # handle extra and add the user 551 # handle extra and add the user
647 local eextra="$@"
648 local oldsandbox="${SANDBOX_ON}" 552 local oldsandbox=${SANDBOX_ON}
649 export SANDBOX_ON="0" 553 export SANDBOX_ON="0"
650 if useq ppc-macos 554 case ${USERLAND} in
651 then 555 Darwin)
652 ### Make the user 556 ### Make the user
653 if [ -z "${eextra}" ] 557 if [[ -z $@ ]] ; then
654 then
655 dscl . create /users/${euser} uid ${euid} 558 dscl . create /users/${euser} uid ${euid}
656 dscl . create /users/${euser} shell ${eshell} 559 dscl . create /users/${euser} shell ${eshell}
657 dscl . create /users/${euser} home ${ehome} 560 dscl . create /users/${euser} home ${ehome}
658 dscl . create /users/${euser} realname "added by portage for ${PN}" 561 dscl . create /users/${euser} realname "added by portage for ${PN}"
659 ### Add the user to the groups specified 562 ### Add the user to the groups specified
660 local oldifs="${IFS}" 563 local oldifs=${IFS}
661 export IFS="," 564 export IFS=","
662 for g in ${egroups} 565 for g in ${egroups} ; do
663 do
664 dscl . merge /groups/${g} users ${euser} 566 dscl . merge /groups/${g} users ${euser}
665 done 567 done
666 export IFS="${oldifs}" 568 export IFS=${oldifs}
667 else 569 else
668 einfo "Extra options are not supported on macos yet" 570 einfo "Extra options are not supported on Darwin yet"
669 einfo "Please report the ebuild along with the info below" 571 einfo "Please report the ebuild along with the info below"
670 einfo "eextra: ${eextra}" 572 einfo "eextra: $@"
671 die "Required function missing" 573 die "Required function missing"
672 fi 574 fi
673 elif use x86-fbsd ; then 575 ;;
674 if [ -z "${eextra}" ] 576 BSD)
675 then 577 if [[ -z $@ ]] ; then
676 pw useradd ${euser} ${opts} \ 578 pw useradd ${euser} ${opts} \
677 -c "added by portage for ${PN}" \ 579 -c "added by portage for ${PN}" \
678 die "enewuser failed" 580 die "enewuser failed"
679 else 581 else
680 einfo " - Extra: ${eextra}" 582 einfo " - Extra: $@"
681 pw useradd ${euser} ${opts} \ 583 pw useradd ${euser} ${opts} \
682 -c ${eextra} || die "enewuser failed" 584 "$@" || die "enewuser failed"
683 fi 585 fi
684 else 586 ;;
685 if [ -z "${eextra}" ] 587 *)
686 then 588 if [[ -z $@ ]] ; then
687 useradd ${opts} ${euser} \ 589 useradd ${opts} ${euser} \
688 -c "added by portage for ${PN}" \ 590 -c "added by portage for ${PN}" \
689 || die "enewuser failed" 591 || die "enewuser failed"
690 else 592 else
691 einfo " - Extra: ${eextra}" 593 einfo " - Extra: $@"
692 useradd ${opts} ${euser} ${eextra} \ 594 useradd ${opts} ${euser} "$@" \
693 || die "enewuser failed" 595 || die "enewuser failed"
694 fi 596 fi
695 fi 597 ;;
598 esac
696 export SANDBOX_ON="${oldsandbox}" 599 export SANDBOX_ON=${oldsandbox}
697 600
698 if [ ! -e "${ehome}" ] && [ ! -e "${D}/${ehome}" ] 601 if [ ! -e "${ehome}" ] && [ ! -e "${D}/${ehome}" ]
699 then 602 then
700 einfo " - Creating ${ehome} in ${D}" 603 einfo " - Creating ${ehome} in ${D}"
701 dodir ${ehome} 604 dodir ${ehome}
738 then 641 then
739 if [ "${egid}" -gt 0 ] 642 if [ "${egid}" -gt 0 ]
740 then 643 then
741 if [ -z "`egetent group ${egid}`" ] 644 if [ -z "`egetent group ${egid}`" ]
742 then 645 then
743 if useq ppc-macos ; then 646 if [[ "${USERLAND}" == "Darwin" ]]; then
744 opts="${opts} ${egid}" 647 opts="${opts} ${egid}"
745 else 648 else
746 opts="${opts} -g ${egid}" 649 opts="${opts} -g ${egid}"
747 fi 650 fi
748 else 651 else
762 opts="${opts} ${eextra}" 665 opts="${opts} ${eextra}"
763 666
764 # add the group 667 # add the group
765 local oldsandbox="${SANDBOX_ON}" 668 local oldsandbox="${SANDBOX_ON}"
766 export SANDBOX_ON="0" 669 export SANDBOX_ON="0"
767 if useq ppc-macos ; then 670 if [[ "${USERLAND}" == "Darwin" ]]; then
768 if [ ! -z "${eextra}" ]; 671 if [ ! -z "${eextra}" ];
769 then 672 then
770 einfo "Extra options are not supported on macos yet" 673 einfo "Extra options are not supported on Darwin/OS X yet"
771 einfo "Please report the ebuild along with the info below" 674 einfo "Please report the ebuild along with the info below"
772 einfo "eextra: ${eextra}" 675 einfo "eextra: ${eextra}"
773 die "Required function missing" 676 die "Required function missing"
774 fi 677 fi
775 678
780 [ -z "`egetent group ${egid}`" ] && break 683 [ -z "`egetent group ${egid}`" ] && break
781 done 684 done
782 esac 685 esac
783 dscl . create /groups/${egroup} gid ${egid} 686 dscl . create /groups/${egroup} gid ${egid}
784 dscl . create /groups/${egroup} passwd '*' 687 dscl . create /groups/${egroup} passwd '*'
785 elif use x86-fbsd ; then 688 elif [[ "${USERLAND}" == "BSD" ]] ; then
786 case ${egid} in 689 case ${egid} in
787 *[!0-9]*) # Non numeric 690 *[!0-9]*) # Non numeric
788 for egid in `jot 898 101`; do 691 for egid in `jot 898 101`; do
789 [ -z "`egetent group ${egid}`" ] && break 692 [ -z "`egetent group ${egid}`" ] && break
790 done 693 done
825# name: the name that will show up in the menu 728# name: the name that will show up in the menu
826# icon: give your little like a pretty little icon ... 729# icon: give your little like a pretty little icon ...
827# this can be relative (to /usr/share/pixmaps) or 730# this can be relative (to /usr/share/pixmaps) or
828# a full path to an icon 731# a full path to an icon
829# type: what kind of application is this ? for categories: 732# type: what kind of application is this ? for categories:
830# http://www.freedesktop.org/wiki/Standards_2fmenu_2dspec 733# http://www.freedesktop.org/Standards/desktop-entry-spec
831# path: if your app needs to startup in a specific dir 734# path: if your app needs to startup in a specific dir
832make_desktop_entry() { 735make_desktop_entry() {
833 [[ -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
834 737
835 local exec=${1} 738 local exec=${1}
861 dev) 764 dev)
862 type="Development" 765 type="Development"
863 ;; 766 ;;
864 767
865 games) 768 games)
866 [[ -z ${path} ]] && path=${GAMES_BINDIR}
867
868 case ${catmin} in 769 case ${catmin} in
869 action) type=ActionGame;; 770 action) type=ActionGame;;
870 arcade) type=ArcadeGame;; 771 arcade) type=ArcadeGame;;
871 board) type=BoardGame;; 772 board) type=BoardGame;;
872 kid) type=KidsGame;; 773 kid) type=KidsGame;;
937 *) 838 *)
938 type= 839 type=
939 ;; 840 ;;
940 esac 841 esac
941 fi 842 fi
942 843 if [ "${SLOT}" == "0" ] ; then
844 local desktop_name="${PN}"
845 else
846 local desktop_name="${PN}-${SLOT}"
847 fi
943 local desktop=${T}/${exec%% *}-${P}.desktop 848 local desktop=${T}/${exec%% *}-${desktop_name}.desktop
944 849
945echo "[Desktop Entry] 850echo "[Desktop Entry]
946Encoding=UTF-8 851Encoding=UTF-8
947Version=0.9.2 852Version=0.9.2
948Name=${name} 853Name=${name}
993 doins "${i}" 898 doins "${i}"
994 elif [[ -d ${i} ]] ; then 899 elif [[ -d ${i} ]] ; then
995 for j in "${i}"/*.desktop ; do 900 for j in "${i}"/*.desktop ; do
996 doins "${j}" 901 doins "${j}"
997 done 902 done
998 fi 903 fi
999 done 904 done
1000} 905}
1001newmenu() { 906newmenu() {
1002 insinto /usr/share/applications 907 insinto /usr/share/applications
1003 newins "$1" "$2" 908 newins "$1" "$2"
1011 doins "${i}" 916 doins "${i}"
1012 elif [[ -d ${i} ]] ; then 917 elif [[ -d ${i} ]] ; then
1013 for j in "${i}"/*.png ; do 918 for j in "${i}"/*.png ; do
1014 doins "${j}" 919 doins "${j}"
1015 done 920 done
1016 fi 921 fi
1017 done 922 done
1018} 923}
1019newicon() { 924newicon() {
1020 insinto /usr/share/pixmaps 925 insinto /usr/share/pixmaps
1021 newins "$1" "$2" 926 newins "$1" "$2"
1420# displayed and we'll hang out here until: 1325# displayed and we'll hang out here until:
1421# (1) the file is found on a mounted cdrom 1326# (1) the file is found on a mounted cdrom
1422# (2) the user hits CTRL+C 1327# (2) the user hits CTRL+C
1423cdrom_locate_file_on_cd() { 1328cdrom_locate_file_on_cd() {
1424 while [[ -z ${CDROM_ROOT} ]] ; do 1329 while [[ -z ${CDROM_ROOT} ]] ; do
1425 local dir="$(dirname ${@})" 1330 local dir=$(dirname "$*")
1426 local file="$(basename ${@})" 1331 local file=$(basename "$*")
1427 local mline="" 1332 local mline=""
1428 local showedmsg=0 1333 local showedmsg=0
1429 1334
1430 for mline in $(mount | egrep -e '(iso|cdrom)' | awk '{print $3}') ; do 1335 for mline in $(mount | egrep -e '(iso|cdrom)' | awk '{print $3}') ; do
1431 [[ -d ${mline}/${dir} ]] || continue 1336 [[ -d ${mline}/${dir} ]] || continue
1452 fi 1357 fi
1453 showedmsg=1 1358 showedmsg=1
1454 fi 1359 fi
1455 einfo "Press return to scan for the cd again" 1360 einfo "Press return to scan for the cd again"
1456 einfo "or hit CTRL+C to abort the emerge." 1361 einfo "or hit CTRL+C to abort the emerge."
1362 echo
1363 einfo "If you are having trouble with the detection"
1364 einfo "of your CD, it is possible that you do not have"
1365 einfo "Joliet support enabled in your kernel. Please"
1366 einfo "check that CONFIG_JOLIET is enabled in your kernel."
1457 read 1367 read
1458 fi 1368 fi
1459 done 1369 done
1460} 1370}
1461 1371
1525 while ((i--)) ; do 1435 while ((i--)) ; do
1526 ewarn "PLEASE UPDATE TO YOUR PACKAGE TO USE linux-info.eclass" 1436 ewarn "PLEASE UPDATE TO YOUR PACKAGE TO USE linux-info.eclass"
1527 done 1437 done
1528 export EUTILS_ECLASS_PORTAGE_ARCH="${ARCH}" 1438 export EUTILS_ECLASS_PORTAGE_ARCH="${ARCH}"
1529 case ${ARCH} in 1439 case ${ARCH} in
1530 x86) export ARCH="i386";; 1440 x86) export ARCH="i386";;
1531 amd64) export ARCH="x86_64";; 1441 amd64) export ARCH="x86_64";;
1532 hppa) export ARCH="parisc";; 1442 hppa) export ARCH="parisc";;
1533 mips) export ARCH="mips";; 1443 mips) export ARCH="mips";;
1534 sparc) export ARCH="$(tc-arch-kernel)";; # Yeah this is ugly, but it's even WORSE if you don't do this. linux-info.eclass's set_arch_to_kernel is fixed, but won't get used over this one! 1444 sparc) export ARCH="$(tc-arch-kernel)";; # Yeah this is ugly, but it's even WORSE if you don't do this. linux-info.eclass's set_arch_to_kernel is fixed, but won't get used over this one!
1535 *) export ARCH="${ARCH}";; 1445 *) export ARCH="${ARCH}";;
1536 esac 1446 esac
1537} 1447}
1538 1448
1539# set's ARCH back to what portage expects 1449# set's ARCH back to what portage expects
1540set_arch_to_portage() { 1450set_arch_to_portage() {
1584 LIB=$1 1494 LIB=$1
1585 1495
1586 if [ -n "${LIB}" -a -f "${ROOT}${LIB}" ]; then 1496 if [ -n "${LIB}" -a -f "${ROOT}${LIB}" ]; then
1587 SONAME=`basename ${LIB}` 1497 SONAME=`basename ${LIB}`
1588 1498
1589 einfo "An old version of an installed library was detected on your system." 1499 ewarn "An old version of an installed library was detected on your system."
1590 einfo "In order to avoid breaking packages that link against is, this older version" 1500 ewarn "In order to avoid breaking packages that link against it, this older version"
1591 einfo "is not being removed. In order to make full use of this newer version," 1501 ewarn "is not being removed. In order to make full use of this newer version,"
1592 einfo "you will need to execute the following command:" 1502 ewarn "you will need to execute the following command:"
1593 einfo " revdep-rebuild --soname ${SONAME}" 1503 ewarn " revdep-rebuild --soname ${SONAME}"
1594 einfo 1504 ewarn
1595 einfo "After doing that, you can safely remove ${LIB}" 1505 ewarn "After doing that, you can safely remove ${LIB}"
1596 einfo "Note: 'emerge gentoolkit' to get revdep-rebuild" 1506 ewarn "Note: 'emerge gentoolkit' to get revdep-rebuild"
1597 fi 1507 fi
1598} 1508}
1599 1509
1600# Hack for people to figure out if a package was built with 1510# Hack for people to figure out if a package was built with
1601# certain USE flags 1511# certain USE flags
1647dopamd() { 1557dopamd() {
1648 [[ -z $1 ]] && die "dopamd requires at least one argument" 1558 [[ -z $1 ]] && die "dopamd requires at least one argument"
1649 1559
1650 use pam || return 0 1560 use pam || return 0
1651 1561
1652 insinto /etc/pam.d 1562 INSDESTTREE=/etc/pam.d \
1653 doins "$@" || die "failed to install $@" 1563 doins "$@" || die "failed to install $@"
1654} 1564}
1655# newpamd <old name> <new name> 1565# newpamd <old name> <new name>
1656# 1566#
1657# Install pam file <old name> as <new name> in /etc/pam.d 1567# Install pam file <old name> as <new name> in /etc/pam.d
1658newpamd() { 1568newpamd() {
1659 [[ $# -ne 2 ]] && die "newpamd requires two arguements" 1569 [[ $# -ne 2 ]] && die "newpamd requires two arguements"
1660 1570
1661 use pam || return 0 1571 use pam || return 0
1662 1572
1663 insinto /etc/pam.d 1573 INSDESTTREE=/etc/pam.d \
1664 newins "$1" "$2" || die "failed to install $1 as $2" 1574 newins "$1" "$2" || die "failed to install $1 as $2"
1665} 1575}
1666 1576
1667# make a wrapper script ... 1577# make a wrapper script ...
1668# NOTE: this was originally games_make_wrapper, but I noticed other places where 1578# NOTE: this was originally games_make_wrapper, but I noticed other places where

Legend:
Removed from v.1.171  
changed lines
  Added in v.1.192

  ViewVC Help
Powered by ViewVC 1.1.20