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

Diff of /eclass/eutils.eclass

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

Revision 1.160 Revision 1.168
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.160 2005/03/22 17:33:13 wolf31o2 Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.168 2005/04/29 03:59:15 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.
14INHERITED="$INHERITED $ECLASS" 14INHERITED="$INHERITED $ECLASS"
15 15
16DEPEND="!bootstrap? ( sys-devel/patch )" 16DEPEND="!bootstrap? ( sys-devel/patch )"
17 17
18DESCRIPTION="Based on the ${ECLASS} eclass" 18DESCRIPTION="Based on the ${ECLASS} eclass"
19
20# ecpu_check
21# Usage:
22#
23# ecpu_check array_of_cpu_flags
24#
25# array_of_cpu_flags - An array of cpu flags to check against USE flags
26#
27# Checks user USE related cpu flags against /proc/cpuinfo. If user enables a
28# cpu flag that is not supported in their processor flags, it will warn the
29# user if CROSSCOMPILE is not set to 1 ( because cross compile users are
30# obviously using different cpu flags than their own cpu ). Examples:
31#
32# CPU_FLAGS=(mmx mmx2 sse sse2)
33# ecpu_check CPU_FLAGS
34# Chris White <chriswhite@gentoo.org> (03 Feb 2005)
35
36ecpu_check() {
37 # Think about changing below to: if [ "${CROSSCOMPILE}" -ne 1 -a -e "/proc/cpuinfo" ]
38 # and dropping the else if you do not plan on adding anything to that
39 # empty block ....
40 # PS: also try to add some quoting, and consider rather using ${foo} than $foo ...
41 if [ "${CROSSCOMPILE}" != "1" -a -e "/proc/cpuinfo" ]
42 then
43 CPU_FLAGS=${1}
44 USER_CPU=`grep "flags" /proc/cpuinfo`
45
46 for flags in `seq 1 ${#CPU_FLAGS[@]}`
47 do
48 if has ${CPU_FLAGS[${flags} - 1]} ${USER_CPU} && ! has ${CPU_FLAGS[${flags} - 1]} ${USE}
49 then
50 ewarn "Your system is ${CPU_FLAGS[${flags} - 1]} capable but you don't have it enabled!"
51 ewarn "You might be cross compiling (in this case set CROSSCOMPILE to 1 to disable this warning."
52 fi
53
54 if ! has ${CPU_FLAGS[${flags} - 1]} ${USER_CPU} && has ${CPU_FLAGS[${flags} -1]} ${USE}
55 then
56 ewarn "You have ${CPU_FLAGS[${flags} - 1]} support enabled but your processor doesn't"
57 ewarn "Seem to support it! You might be cross compiling or do not have /proc filesystem"
58 ewarn "enabled. If either is the case, set CROSSCOMPILE to 1 to disable this warning."
59 fi
60 done
61 fi
62}
63 19
64# 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
65# 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
66# outputting to a terminal, don't wait. For compatability purposes, the argument 22# outputting to a terminal, don't wait. For compatability purposes, the argument
67# must be an integer greater than zero. 23# must be an integer greater than zero.
109gen_usr_ldscript() { 65gen_usr_ldscript() {
110 local libdir="$(get_libdir)" 66 local libdir="$(get_libdir)"
111 # Just make sure it exists 67 # Just make sure it exists
112 dodir /usr/${libdir} 68 dodir /usr/${libdir}
113 69
70 for lib in "${@}" ; do
114 cat > "${D}/usr/${libdir}/${1}" << END_LDSCRIPT 71 cat > "${D}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
115/* GNU ld script 72 /* GNU ld script
116 Because Gentoo have critical dynamic libraries 73 Since Gentoo has critical dynamic libraries
117 in /lib, and the static versions in /usr/lib, we 74 in /lib, and the static versions in /usr/lib,
118 need to have a "fake" dynamic lib in /usr/lib, 75 we need to have a "fake" dynamic lib in /usr/lib,
119 otherwise we run into linking problems. 76 otherwise we run into linking problems.
120 See bug #4411 on http://bugs.gentoo.org/ for 77
121 more info. */ 78 See bug http://bugs.gentoo.org/4411 for more info.
79 */
122GROUP ( /${libdir}/${1} ) 80 GROUP ( /${libdir}/${lib} )
123END_LDSCRIPT 81 END_LDSCRIPT
124 fperms a+x "/usr/${libdir}/${1}" 82 fperms a+x "/usr/${libdir}/${lib}"
83 done
125} 84}
126 85
127# Simple function to draw a line consisting of '=' the same length as $* 86# Simple function to draw a line consisting of '=' the same length as $*
87# - only to be used by epatch()
128# 88#
129# <azarah@gentoo.org> (11 Nov 2002) 89# <azarah@gentoo.org> (11 Nov 2002)
130# 90#
131draw_line() { 91draw_line() {
132 local i=0 92 local i=0
214 local x="" 174 local x=""
215 175
216 if [ "$#" -gt 1 ] 176 if [ "$#" -gt 1 ]
217 then 177 then
218 local m="" 178 local m=""
219 einfo "${#} patches to apply ..."
220 for m in "$@" ; do 179 for m in "$@" ; do
221 epatch "${m}" 180 epatch "${m}"
222 done 181 done
223 return 0 182 return 0
224 fi 183 fi
1049# make_desktop_entry(<title>, <command>) 1008# make_desktop_entry(<title>, <command>)
1050# title: File to execute to start the Window Manager 1009# title: File to execute to start the Window Manager
1051# command: Name of the Window Manager 1010# command: Name of the Window Manager
1052 1011
1053make_session_desktop() { 1012make_session_desktop() {
1054
1055 [ -z "$1" ] && eerror "make_session_desktop: You must specify the title" && return 1 1013 [[ -z $1 ]] && eerror "make_session_desktop: You must specify the title" && return 1
1056 [ -z "$2" ] && eerror "make_session_desktop: You must specify the command" && return 1 1014 [[ -z $2 ]] && eerror "make_session_desktop: You must specify the command" && return 1
1057 1015
1058 local title="${1}" 1016 local title=$1
1059 local command="${2}" 1017 local command=$2
1060 local desktop="${T}/${wm}.desktop" 1018 local desktop=${T}/${wm}.desktop
1061 1019
1062echo "[Desktop Entry] 1020echo "[Desktop Entry]
1063Encoding=UTF-8 1021Encoding=UTF-8
1064Name=${title} 1022Name=${title}
1065Comment=This session logs you into ${title} 1023Comment=This session logs you into ${title}
1067TryExec=${command} 1025TryExec=${command}
1068Type=Application" > "${desktop}" 1026Type=Application" > "${desktop}"
1069 1027
1070 insinto /usr/share/xsessions 1028 insinto /usr/share/xsessions
1071 doins "${desktop}" 1029 doins "${desktop}"
1072
1073 return 0
1074} 1030}
1075 1031
1076domenu() { 1032domenu() {
1077 local i 1033 local i j
1078 local j
1079 insinto /usr/share/applications 1034 insinto /usr/share/applications
1080 for i in ${@} 1035 for i in "$@" ; do
1081 do
1082 if [ -f "${i}" ]; 1036 if [[ -f ${i} ]] ; then
1083 then
1084 doins ${i} 1037 doins "${i}"
1085 elif [ -d "${i}" ]; 1038 elif [[ -d ${i} ]] ; then
1086 then
1087 for j in ${i}/*.desktop 1039 for j in "${i}"/*.desktop ; do
1088 do
1089 doins ${j} 1040 doins "${j}"
1090 done 1041 done
1091 fi 1042 fi
1092 done 1043 done
1093} 1044}
1045newmenu() {
1046 insinto /usr/share/applications
1047 newins "$1" "$2"
1048}
1094 1049
1095doicon() { 1050doicon() {
1096 local i 1051 local i j
1097 local j
1098 insinto /usr/share/pixmaps 1052 insinto /usr/share/pixmaps
1099 for i in ${@} 1053 for i in "$@" ; do
1100 do
1101 if [ -f "${i}" ]; 1054 if [[ -f ${i} ]] ; then
1102 then
1103 doins ${i} 1055 doins "${i}"
1104 elif [ -d "${i}" ]; 1056 elif [[ -d ${i} ]] ; then
1105 then
1106 for j in ${i}/*.png 1057 for j in "${i}"/*.png ; do
1107 do
1108 doins ${j} 1058 doins "${j}"
1109 done 1059 done
1110 fi 1060 fi
1111 done 1061 done
1062}
1063newicon() {
1064 insinto /usr/share/pixmaps
1065 newins "$1" "$2"
1112} 1066}
1113 1067
1114############################################################## 1068##############################################################
1115# END: Handle .desktop files and menu entries # 1069# END: Handle .desktop files and menu entries #
1116############################################################## 1070##############################################################
1595 else 1549 else
1596 ewarn "Sorry, but ${PN} does not support the ${f} LINGUA" 1550 ewarn "Sorry, but ${PN} does not support the ${f} LINGUA"
1597 fi 1551 fi
1598 done 1552 done
1599 if [[ -z ${newls} ]] ; then 1553 if [[ -z ${newls} ]] ; then
1600 unset LINGUAS 1554 export LINGUAS=""
1601 else 1555 else
1602 export LINGUAS=${newls:1} 1556 export LINGUAS=${newls:1}
1603 fi 1557 fi
1604} 1558}
1605 1559
1738 [[ -z $1 ]] && die "dopamd requires at least one argument" 1692 [[ -z $1 ]] && die "dopamd requires at least one argument"
1739 1693
1740 use pam || return 0 1694 use pam || return 0
1741 1695
1742 insinto /etc/pam.d 1696 insinto /etc/pam.d
1743 # these are the default doins options, but be explicit just in case
1744 insopts -m 0644 -o root -g root
1745 doins "$@" || die "failed to install $@" 1697 doins "$@" || die "failed to install $@"
1746} 1698}
1747# newpamd <old name> <new name> 1699# newpamd <old name> <new name>
1748# 1700#
1749# Install pam file <old name> as <new name> in /etc/pam.d 1701# Install pam file <old name> as <new name> in /etc/pam.d
1751 [[ $# -ne 2 ]] && die "newpamd requires two arguements" 1703 [[ $# -ne 2 ]] && die "newpamd requires two arguements"
1752 1704
1753 use pam || return 0 1705 use pam || return 0
1754 1706
1755 insinto /etc/pam.d 1707 insinto /etc/pam.d
1756 # these are the default doins options, but be explicit just in case
1757 insopts -m 0644 -o root -g root
1758 newins "$1" "$2" || die "failed to install $1 as $2" 1708 newins "$1" "$2" || die "failed to install $1 as $2"
1759} 1709}
1760 1710
1761# make a wrapper script ... 1711# make a wrapper script ...
1762# NOTE: this was originally games_make_wrapper, but I noticed other places where 1712# NOTE: this was originally games_make_wrapper, but I noticed other places where
1764# -- wolf31o2 1714# -- wolf31o2
1765# $1 == wrapper name 1715# $1 == wrapper name
1766# $2 == binary to run 1716# $2 == binary to run
1767# $3 == directory to chdir before running binary 1717# $3 == directory to chdir before running binary
1768# $4 == extra LD_LIBRARY_PATH's (make it : delimited) 1718# $4 == extra LD_LIBRARY_PATH's (make it : delimited)
1719# $5 == path for wrapper
1769make_wrapper() { 1720make_wrapper() {
1770 local wrapper=$1 bin=$2 chdir=$3 libdir=$4 1721 local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5
1771 local tmpwrapper=$(emktemp) 1722 local tmpwrapper=$(emktemp)
1772 cat << EOF > "${tmpwrapper}" 1723 cat << EOF > "${tmpwrapper}"
1773#!/bin/sh 1724#!/bin/sh
1774cd "${chdir}" 1725cd "${chdir}"
1775export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}" 1726export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}"
1776exec ${bin} "\$@" 1727exec ${bin} "\$@"
1777EOF 1728EOF
1778 chmod go+rx "${tmpwrapper}" 1729 chmod go+rx "${tmpwrapper}"
1730 if [ -n "${5}" ]
1731 then
1732 exeinto ${5}
1733 newexe "${tmpwrapper}" "${wrapper}"
1734 else
1779 newbin "${tmpwrapper}" "${wrapper}" 1735 newbin "${tmpwrapper}" "${wrapper}"
1736 fi
1780} 1737}

Legend:
Removed from v.1.160  
changed lines
  Added in v.1.168

  ViewVC Help
Powered by ViewVC 1.1.20