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

Diff of /eclass/eutils.eclass

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

Revision 1.78 Revision 1.87
1# Copyright 1999-2004 Gentoo Technologies, Inc. 1# Copyright 1999-2004 Gentoo Technologies, Inc.
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.78 2004/02/09 17:08:44 brad_mssw Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.87 2004/04/01 20:50:43 iggy 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.
10# NB: If you add anything, please comment it! 10# NB: If you add anything, please comment it!
11 11
12ECLASS=eutils 12ECLASS=eutils
13INHERITED="$INHERITED $ECLASS" 13INHERITED="$INHERITED $ECLASS"
14 14
15newdepend "!bootstrap? ( sys-devel/patch )" 15DEPEND="!bootstrap? ( sys-devel/patch )"
16 16
17DESCRIPTION="Based on the ${ECLASS} eclass" 17DESCRIPTION="Based on the ${ECLASS} eclass"
18 18
19# This function generate linker scripts in /usr/lib for dynamic 19# This function generate linker scripts in /usr/lib for dynamic
20# libs in /lib. This is to fix linking problems when you have 20# libs in /lib. This is to fix linking problems when you have
431 then 431 then
432 jobs="$((`grep -c ^processor /proc/cpuinfo` * 2))" 432 jobs="$((`grep -c ^processor /proc/cpuinfo` * 2))"
433 else 433 else
434 jobs=2 434 jobs=2
435 fi 435 fi
436 elif [ "${ARCH}" = "s390" ]
437 then
438 # s390 has "# processors : "
439 jobs="$((`grep "^\# processors" /proc/cpuinfo | sed -e "s/^.*: //"` * 2))"
436 else 440 else
437 jobs="$((`grep -c ^cpu /proc/cpuinfo` * 2))" 441 jobs="$((`grep -c ^cpu /proc/cpuinfo` * 2))"
438 die "Unknown ARCH -- ${ARCH}!" 442 die "Unknown ARCH -- ${ARCH}!"
439 fi 443 fi
440 444
456 fi 460 fi
457 fi 461 fi
458} 462}
459 463
460# Cheap replacement for when debianutils (and thus mktemp) 464# Cheap replacement for when debianutils (and thus mktemp)
461# do not exist on the users system 465# does not exist on the users system
462# vapier@gentoo.org 466# vapier@gentoo.org
463# 467#
464# Takes just 1 parameter (the directory to create tmpfile in) 468# Takes just 1 parameter (the directory to create tmpfile in)
465mymktemp() { 469mymktemp() {
466 local topdir="$1" 470 local topdir="$1"
496 then 500 then
497 eerror "No username specified !" 501 eerror "No username specified !"
498 die "Cannot call enewuser without a username" 502 die "Cannot call enewuser without a username"
499 fi 503 fi
500 504
501 # setup a file for testing usernames/groups
502 local tmpfile="`mymktemp ${T}`"
503 chown ${euser} ${tmpfile} >& /dev/null
504 local realuser="`ls -l ${tmpfile} | awk '{print $3}'`"
505
506 # see if user already exists 505 # lets see if the username already exists
507 if [ "${euser}" == "${realuser}" ] 506 if [ "${euser}" == "`getent passwd \"${euser}\" | cut -d: -f1`" ]
508 then 507 then
509 return 0 508 return 0
510 fi 509 fi
511 einfo "Adding user '${euser}' to your system ..." 510 einfo "Adding user '${euser}' to your system ..."
512 511
517 local euid="$1"; shift 516 local euid="$1"; shift
518 if [ ! -z "${euid}" ] && [ "${euid}" != "-1" ] 517 if [ ! -z "${euid}" ] && [ "${euid}" != "-1" ]
519 then 518 then
520 if [ "${euid}" -gt 0 ] 519 if [ "${euid}" -gt 0 ]
521 then 520 then
522 opts="${opts} -u ${euid}" 521 if [ ! -z "`getent passwd ${euid}`" ]
522 then
523 euid="next"
524 fi
523 else 525 else
524 eerror "Userid given but is not greater than 0 !" 526 eerror "Userid given but is not greater than 0 !"
525 die "${euid} is not a valid UID" 527 die "${euid} is not a valid UID"
526 fi 528 fi
527 else 529 else
528 euid="next available" 530 euid="next"
529 fi 531 fi
532 if [ "${euid}" == "next" ]
533 then
534 for euid in `seq 101 999` ; do
535 [ -z "`getent passwd ${euid}`" ] && break
536 done
537 fi
538 opts="${opts} -u ${euid}"
530 einfo " - Userid: ${euid}" 539 einfo " - Userid: ${euid}"
531 540
532 # handle shell 541 # handle shell
533 local eshell="$1"; shift 542 local eshell="$1"; shift
534 if [ ! -z "${eshell}" ] && [ "${eshell}" != "-1" ] 543 if [ ! -z "${eshell}" ] && [ "${eshell}" != "-1" ]
555 564
556 # handle groups 565 # handle groups
557 local egroups="$1"; shift 566 local egroups="$1"; shift
558 if [ ! -z "${egroups}" ] 567 if [ ! -z "${egroups}" ]
559 then 568 then
560 local realgroup=
561 local oldifs="${IFS}" 569 local oldifs="${IFS}"
562 export IFS="," 570 export IFS=","
563 for g in ${egroups} 571 for g in ${egroups}
564 do 572 do
565 chgrp ${g} ${tmpfile} >& /dev/null 573 if [ -z "`getent group \"${g}\"`" ]
566 realgroup="`ls -l ${tmpfile} | awk '{print $4}'`"
567 if [ "${g}" != "${realgroup}" ]
568 then 574 then
569 eerror "You must add ${g} to the system first" 575 eerror "You must add group ${g} to the system first"
570 die "${g} is not a valid GID" 576 die "${g} is not a valid GID"
571 fi 577 fi
572 done 578 done
573 export IFS="${oldifs}" 579 export IFS="${oldifs}"
574 opts="${opts} -g ${egroups}" 580 opts="${opts} -g ${egroups}"
618 then 624 then
619 eerror "No group specified !" 625 eerror "No group specified !"
620 die "Cannot call enewgroup without a group" 626 die "Cannot call enewgroup without a group"
621 fi 627 fi
622 628
623 # setup a file for testing groupname
624 local tmpfile="`mymktemp ${T}`"
625 chgrp ${egroup} ${tmpfile} >& /dev/null
626 local realgroup="`ls -l ${tmpfile} | awk '{print $4}'`"
627
628 # see if group already exists 629 # see if group already exists
629 if [ "${egroup}" == "${realgroup}" ] 630 if [ "${egroup}" == "`getent group \"${egroup}\" | cut -d: -f1`" ]
630 then 631 then
631 return 0 632 return 0
632 fi 633 fi
633 einfo "Adding group '${egroup}' to your system ..." 634 einfo "Adding group '${egroup}' to your system ..."
634 635
639 local egid="$1"; shift 640 local egid="$1"; shift
640 if [ ! -z "${egid}" ] 641 if [ ! -z "${egid}" ]
641 then 642 then
642 if [ "${egid}" -gt 0 ] 643 if [ "${egid}" -gt 0 ]
643 then 644 then
645 if [ -z "`getent group ${egid}`" ]
646 then
644 opts="${opts} -g ${egid}" 647 opts="${opts} -g ${egid}"
648 else
649 egid="next available; requested gid taken"
650 fi
645 else 651 else
646 eerror "Groupid given but is not greater than 0 !" 652 eerror "Groupid given but is not greater than 0 !"
647 die "${egid} is not a valid GID" 653 die "${egid} is not a valid GID"
648 fi 654 fi
649 else 655 else
696 702
697 local exec="${1}" 703 local exec="${1}"
698 local name="${2:-${PN}}" 704 local name="${2:-${PN}}"
699 local icon="${3:-${PN}.png}" 705 local icon="${3:-${PN}.png}"
700 local type="${4}" 706 local type="${4}"
707 local subdir="${6}"
701 local path="${5:-${GAMES_PREFIX}}" 708 local path="${5:-${GAMES_PREFIX}}"
702 if [ -z "${type}" ] 709 if [ -z "${type}" ]
703 then 710 then
704 case ${CATEGORY} in 711 case ${CATEGORY} in
705 "app-emulation") 712 "app-emulation")
706 type=Emulator 713 type=Emulator
714 subdir="Emulation"
707 ;; 715 ;;
708 "games-"*) 716 "games-"*)
709 type=Game 717 type=Game
718 subdir="Games"
710 ;; 719 ;;
711 "net-"*) 720 "net-"*)
712 type=Network; 721 type=Network
722 subdir="${type}"
713 ;; 723 ;;
714 *) 724 *)
715 type= 725 type=
726 subdir=
716 ;; 727 ;;
717 esac 728 esac
718 fi 729 fi
719 local desktop="${T}/${exec}.desktop" 730 local desktop="${T}/${exec}.desktop"
720 731
750 # done 761 # done
751 #fi 762 #fi
752 763
753 if [ -d "/usr/share/applnk" ] 764 if [ -d "/usr/share/applnk" ]
754 then 765 then
755 insinto /usr/share/applnk/${type} 766 insinto /usr/share/applnk/${subdir}
756 doins ${desktop} 767 doins ${desktop}
757 fi 768 fi
758 769
759 return 0 770 return 0
760} 771}
1100# remember, you can only go forward in the cd chain, you can't go back. 1111# remember, you can only go forward in the cd chain, you can't go back.
1101cdrom_load_next_cd() { 1112cdrom_load_next_cd() {
1102 export CDROM_CURRENT_CD=$((CDROM_CURRENT_CD + 1)) 1113 export CDROM_CURRENT_CD=$((CDROM_CURRENT_CD + 1))
1103 local var= 1114 local var=
1104 1115
1116 if [ ! -z "${CD_ROOT}" ] ; then
1117 einfo "Using same root as before for CD #${CDROM_CURRENT_CD}"
1118 return
1119 fi
1120
1105 unset CDROM_ROOT 1121 unset CDROM_ROOT
1106 var=CDROM_ROOTS_${CDROM_CURRENT_CD} 1122 var=CDROM_ROOTS_${CDROM_CURRENT_CD}
1107 if [ -z "${!var}" ] ; then 1123 if [ -z "${!var}" ] ; then
1108 var="CDROM_CHECK_${CDROM_CURRENT_CD}" 1124 var="CDROM_CHECK_${CDROM_CURRENT_CD}"
1109 cdrom_locate_file_on_cd ${!var} 1125 cdrom_locate_file_on_cd ${!var}

Legend:
Removed from v.1.78  
changed lines
  Added in v.1.87

  ViewVC Help
Powered by ViewVC 1.1.20