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

Diff of /eclass/eutils.eclass

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

Revision 1.97 Revision 1.103
1# Copyright 1999-2004 Gentoo Foundation 1# Copyright 1999-2004 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.97 2004/08/31 09:05:24 lv Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.103 2004/09/17 10:37:58 kugelfang 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.
13INHERITED="$INHERITED $ECLASS" 13INHERITED="$INHERITED $ECLASS"
14 14
15DEPEND="!bootstrap? ( sys-devel/patch )" 15DEPEND="!bootstrap? ( sys-devel/patch )"
16 16
17DESCRIPTION="Based on the ${ECLASS} eclass" 17DESCRIPTION="Based on the ${ECLASS} eclass"
18
19# 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# outputting to a terminal, don't wait. For compatability purposes, the argument
22# must be an integer greater than zero.
23# Bug 62950, Ciaran McCreesh <ciaranm@gentoo.org> (05 Sep 2004)
24epause() {
25 if [ -z "$EPAUSE_IGNORE" ] && [ -t 1 ] ; then
26 sleep ${1:-5}
27 fi
28}
29
30# Beep the specified number of times (defaults to five). If our output
31# is not a terminal, don't beep. If the EBEEP_IGNORE env var is set,
32# don't beep.
33# Bug 62950, Ciaran McCreesh <ciaranm@gentoo.org> (05 Sep 2004)
34ebeep() {
35 local n
36 if [ -z "$EBEEP_IGNORE" ] && [ -t 1 ] ; then
37 for ((n=1 ; n <= ${1:-5} ; n++)) ; do
38 echo -ne "\a"
39 sleep 0.1 &>/dev/null ; sleep 0,1 &>/dev/null
40 echo -ne "\a"
41 sleep 1
42 done
43 fi
44}
18 45
19# This function simply returns the desired lib directory. With portage 46# This function simply returns the desired lib directory. With portage
20# 2.0.51, we now have support for installing libraries to lib32/lib64 47# 2.0.51, we now have support for installing libraries to lib32/lib64
21# to accomidate the needs of multilib systems. It's no longer a good idea 48# to accomidate the needs of multilib systems. It's no longer a good idea
22# to assume all libraries will end up in lib. Replace any (sane) instances 49# to assume all libraries will end up in lib. Replace any (sane) instances
23# where lib is named directly with $(get_libdir) if possible. 50# where lib is named directly with $(get_libdir) if possible.
24# 51#
25# Travis Tilley <lv@gentoo.org> (24 Aug 2004) 52# Travis Tilley <lv@gentoo.org> (24 Aug 2004)
26get_libdir() { 53get_libdir() {
54 LIBDIR_TEST=$(type econf)
27 if [ ! -z "${CONF_LIBDIR_OVERRIDE}" ] ; then 55 if [ ! -z "${CONF_LIBDIR_OVERRIDE}" ] ; then
28 # if there is an override, we want to use that... always. 56 # if there is an override, we want to use that... always.
29 CONF_LIBDIR="${CONF_LIBDIR_OVERRIDE}" 57 CONF_LIBDIR="${CONF_LIBDIR_OVERRIDE}"
58 # We don't need to know the verison of portage. We only need to know
59 # if there is support for CONF_LIBDIR in econf and co.
60 # Danny van Dyk <kugelfang@gentoo.org> 2004/17/09
30 elif portageq has_version / '<sys-apps/portage-2.0.51_pre20' ; then 61 #elif portageq has_version / '<sys-apps/portage-2.0.51_pre20' ; then
31 # and if there isnt an override, and we're using a version of 62 # # and if there isnt an override, and we're using a version of
32 # portage without CONF_LIBDIR support, force the use of lib. dolib 63 # # portage without CONF_LIBDIR support, force the use of lib. dolib
33 # and friends from portage 2.0.50 wont be too happy otherwise. 64 # # and friends from portage 2.0.50 wont be too happy otherwise.
65 # CONF_LIBDIR="lib"
66 #fi
67 elif [ "${LIBDIR_TEST/CONF_LIBDIR}" == "${LIBDIR_TEST}" ]; then # we don't have CONF_LIBDIR support
68 # will be <portage-2.0.51_pre20
34 CONF_LIBDIR="lib" 69 CONF_LIBDIR="lib"
35 fi 70 fi
36 # and of course, default to lib if CONF_LIBDIR isnt set 71 # and of course, default to lib if CONF_LIBDIR isnt set
37 echo ${CONF_LIBDIR:=lib} 72 echo ${CONF_LIBDIR:=lib}
73 unset LIBDIR_TEST
38} 74}
75
76
77get_multilibdir() {
78 echo ${CONF_MULTILIBDIR:=lib32}
79}
80
39 81
40# Sometimes you need to override the value returned by get_libdir. A good 82# Sometimes you need to override the value returned by get_libdir. A good
41# example of this is xorg-x11, where lib32 isnt a supported configuration, 83# example of this is xorg-x11, where lib32 isnt a supported configuration,
42# and where lib64 -must- be used on amd64 (for applications that need lib 84# and where lib64 -must- be used on amd64 (for applications that need lib
43# to be 32bit, such as adobe acrobat). Note that this override also bypasses 85# to be 32bit, such as adobe acrobat). Note that this override also bypasses
376# This function return true if we are using the NPTL pthreads 418# This function return true if we are using the NPTL pthreads
377# implementation. 419# implementation.
378# 420#
379# <azarah@gentoo.org> (06 March 2003) 421# <azarah@gentoo.org> (06 March 2003)
380# 422#
381
382have_NPTL() { 423have_NPTL() {
383
384 cat > ${T}/test-nptl.c <<-"END" 424 cat > ${T}/test-nptl.c <<-"END"
385 #define _XOPEN_SOURCE 425 #define _XOPEN_SOURCE
386 #include <unistd.h> 426 #include <unistd.h>
387 #include <stdio.h> 427 #include <stdio.h>
388 428
506# vapier@gentoo.org 546# vapier@gentoo.org
507# 547#
508# Takes just 1 parameter (the directory to create tmpfile in) 548# Takes just 1 parameter (the directory to create tmpfile in)
509mymktemp() { 549mymktemp() {
510 local topdir="$1" 550 local topdir="$1"
511 551
512 [ -z "${topdir}" ] && topdir=/tmp 552 [ -z "${topdir}" ] && topdir=/tmp
513 if [ "`which mktemp 2>/dev/null`" ] 553 if [ "`which mktemp 2>/dev/null`" ]
514 then 554 then
515 mktemp -p ${topdir} 555 mktemp -p ${topdir}
516 else 556 else
524# used in enewuser()/enewgroup() 564# used in enewuser()/enewgroup()
525# Joe Jezak <josejx@gmail.com> and usata@gentoo.org 565# Joe Jezak <josejx@gmail.com> and usata@gentoo.org
526# 566#
527# egetent(database, key) 567# egetent(database, key)
528egetent() { 568egetent() {
529 if [ "${ARCH}" == "macos" ] ; then 569 if use macos || use ppc-macos ; then
530 case "$2" in 570 case "$2" in
531 *[!0-9]*) # Non numeric 571 *[!0-9]*) # Non numeric
532 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }" 572 nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }"
533 ;; 573 ;;
534 *) # Numeric 574 *) # Numeric
590 euid="next" 630 euid="next"
591 fi 631 fi
592 if [ "${euid}" == "next" ] 632 if [ "${euid}" == "next" ]
593 then 633 then
594 local pwrange 634 local pwrange
595 if [ "${ARCH}" == "macos" ] ; then 635 if use macos || use ppc-macos ; then
596 pwrange="`jot 898 101`" 636 pwrange="`jot 898 101`"
597 else 637 else
598 pwrange="`seq 101 999`" 638 pwrange="`seq 101 999`"
599 fi 639 fi
600 for euid in ${pwrange} ; do 640 for euid in ${pwrange} ; do
651 691
652 # handle extra and add the user 692 # handle extra and add the user
653 local eextra="$@" 693 local eextra="$@"
654 local oldsandbox="${SANDBOX_ON}" 694 local oldsandbox="${SANDBOX_ON}"
655 export SANDBOX_ON="0" 695 export SANDBOX_ON="0"
656 if [ "${ARCH}" == "macos" ]; 696 if use macos || use ppc-macos ;
657 then 697 then
658 ### Make the user 698 ### Make the user
659 if [ -z "${eextra}" ] 699 if [ -z "${eextra}" ]
660 then 700 then
661 dscl . create /users/${euser} uid ${euid} 701 dscl . create /users/${euser} uid ${euid}
730 then 770 then
731 if [ "${egid}" -gt 0 ] 771 if [ "${egid}" -gt 0 ]
732 then 772 then
733 if [ -z "`egetent group ${egid}`" ] 773 if [ -z "`egetent group ${egid}`" ]
734 then 774 then
735 if [ "${ARCH}" == "macos" ] ; then 775 if use macos || use ppc-macos ; then
736 opts="${opts} ${egid}" 776 opts="${opts} ${egid}"
737 else 777 else
738 opts="${opts} -g ${egid}" 778 opts="${opts} -g ${egid}"
739 fi 779 fi
740 else 780 else
754 opts="${opts} ${eextra}" 794 opts="${opts} ${eextra}"
755 795
756 # add the group 796 # add the group
757 local oldsandbox="${SANDBOX_ON}" 797 local oldsandbox="${SANDBOX_ON}"
758 export SANDBOX_ON="0" 798 export SANDBOX_ON="0"
759 if [ "${ARCH}" == "macos" ]; 799 if use macos || use ppc-macos ;
760 then 800 then
761 if [ ! -z "${eextra}" ]; 801 if [ ! -z "${eextra}" ];
762 then 802 then
763 einfo "Extra options are not supported on macos yet" 803 einfo "Extra options are not supported on macos yet"
764 einfo "Please report the ebuild along with the info below" 804 einfo "Please report the ebuild along with the info below"
765 einfo "eextra: ${eextra}" 805 einfo "eextra: ${eextra}"
766 die "Required function missing" 806 die "Required function missing"
767 fi 807 fi
768 808
769 # If we need the next available 809 # If we need the next available
770 case ${egid} in 810 case ${egid} in
771 *[!0-9]*) # Non numeric 811 *[!0-9]*) # Non numeric
772 for egid in `jot 898 101`; do 812 for egid in `jot 898 101`; do
773 [ -z "`egetent group ${egid}`" ] && break 813 [ -z "`egetent group ${egid}`" ] && break
774 done 814 done
775 esac 815 esac
776 dscl . create /groups/${egroup} gid ${egid} 816 dscl . create /groups/${egroup} gid ${egid}
777 dscl . create /groups/${egroup} passwd '*' 817 dscl . create /groups/${egroup} passwd '*'
778 else 818 else
779 groupadd ${opts} ${egroup} || die "enewgroup failed" 819 groupadd ${opts} ${egroup} || die "enewgroup failed"
780 fi 820 fi
781 export SANDBOX_ON="${oldsandbox}" 821 export SANDBOX_ON="${oldsandbox}"
782} 822}
816 local exec="${1}" 856 local exec="${1}"
817 local name="${2:-${PN}}" 857 local name="${2:-${PN}}"
818 local icon="${3:-${PN}.png}" 858 local icon="${3:-${PN}.png}"
819 local type="${4}" 859 local type="${4}"
820 local subdir="${6}" 860 local subdir="${6}"
821 local path="${5:-${GAMES_PREFIX}}" 861 local path="${5:-${GAMES_BINDIR}}"
822 if [ -z "${type}" ] 862 if [ -z "${type}" ]
823 then 863 then
824 case ${CATEGORY} in 864 case ${CATEGORY} in
825 "app-emulation") 865 "app-emulation")
826 type=Emulator 866 type=Emulator
849Type=Application 889Type=Application
850Comment=${DESCRIPTION} 890Comment=${DESCRIPTION}
851Exec=${exec} 891Exec=${exec}
852Path=${path} 892Path=${path}
853Icon=${icon} 893Icon=${icon}
854Categories=Application;${type};" > ${desktop} 894Categories=Application;${type};" > "${desktop}"
855 895
856 if [ -d "/usr/share/applications" ] 896 if [ -d "/usr/share/applications" ]
857 then 897 then
858 insinto /usr/share/applications 898 insinto /usr/share/applications
859 doins ${desktop} 899 doins "${desktop}"
860 fi 900 fi
861 901
862 #if [ -d "/usr/share/gnome/apps" ] 902 #if [ -d "/usr/share/gnome/apps" ]
863 #then 903 #then
864 # insinto /usr/share/gnome/apps/Games 904 # insinto /usr/share/gnome/apps/Games
875 #fi 915 #fi
876 916
877 if [ -d "/usr/share/applnk" ] 917 if [ -d "/usr/share/applnk" ]
878 then 918 then
879 insinto /usr/share/applnk/${subdir} 919 insinto /usr/share/applnk/${subdir}
880 doins ${desktop} 920 doins "${desktop}"
881 fi 921 fi
882 922
883 return 0 923 return 0
884} 924}
885 925
1291 read 1331 read
1292 fi 1332 fi
1293 done 1333 done
1294} 1334}
1295 1335
1296# Make sure that LINGUAS only contains languages that 1336# Make sure that LINGUAS only contains languages that
1297# a package can support 1337# a package can support
1298# 1338#
1299# usage: strip-linguas <allow LINGUAS> 1339# usage: strip-linguas <allow LINGUAS>
1300# strip-linguas -i <directories of .po files> 1340# strip-linguas -i <directories of .po files>
1301# strip-linguas -u <directories of .po files> 1341# strip-linguas -u <directories of .po files>
1302# 1342#
1303# The first form allows you to specify a list of LINGUAS. 1343# The first form allows you to specify a list of LINGUAS.
1304# The -i builds a list of po files found in all the 1344# The -i builds a list of po files found in all the
1305# directories and uses the intersection of the lists. 1345# directories and uses the intersection of the lists.
1306# The -u builds a list of po files found in all the 1346# The -u builds a list of po files found in all the
1307# directories and uses the union of the lists. 1347# directories and uses the union of the lists.
1308strip-linguas() { 1348strip-linguas() {
1309 local ls newls 1349 local ls newls
1310 if [ "$1" == "-i" ] || [ "$1" == "-u" ] ; then 1350 if [ "$1" == "-i" ] || [ "$1" == "-u" ] ; then
1311 local op="$1"; shift 1351 local op="$1"; shift

Legend:
Removed from v.1.97  
changed lines
  Added in v.1.103

  ViewVC Help
Powered by ViewVC 1.1.20