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

Diff of /eclass/eutils.eclass

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

Revision 1.328 Revision 1.334
1# Copyright 1999-2009 Gentoo Foundation 1# Copyright 1999-2009 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.328 2010/01/10 15:58:58 scarabeus Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.334 2010/02/26 03:15:26 abcd Exp $
4 4
5# @ECLASS: eutils.eclass 5# @ECLASS: eutils.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# base-system@gentoo.org 7# base-system@gentoo.org
8# @BLURB: many extra (but common) functions that are used in ebuilds 8# @BLURB: many extra (but common) functions that are used in ebuilds
17 17
18inherit multilib portability 18inherit multilib portability
19 19
20DESCRIPTION="Based on the ${ECLASS} eclass" 20DESCRIPTION="Based on the ${ECLASS} eclass"
21 21
22if has "${EAPI:-0}" 0 1 2; then
23
22# @FUNCTION: epause 24# @FUNCTION: epause
23# @USAGE: [seconds] 25# @USAGE: [seconds]
24# @DESCRIPTION: 26# @DESCRIPTION:
25# Sleep for the specified number of seconds (default of 5 seconds). Useful when 27# Sleep for the specified number of seconds (default of 5 seconds). Useful when
26# printing a message the user should probably be reading and often used in 28# printing a message the user should probably be reading and often used in
27# conjunction with the ebeep function. If the EPAUSE_IGNORE env var is set, 29# conjunction with the ebeep function. If the EPAUSE_IGNORE env var is set,
28# don't wait at all. 30# don't wait at all. Defined in EAPIs 0 1 and 2.
29epause() { 31epause() {
30 [[ -z ${EPAUSE_IGNORE} ]] && sleep ${1:-5} 32 [[ -z ${EPAUSE_IGNORE} ]] && sleep ${1:-5}
31} 33}
32 34
33# @FUNCTION: ebeep 35# @FUNCTION: ebeep
34# @USAGE: [number of beeps] 36# @USAGE: [number of beeps]
35# @DESCRIPTION: 37# @DESCRIPTION:
36# Issue the specified number of beeps (default of 5 beeps). Useful when 38# Issue the specified number of beeps (default of 5 beeps). Useful when
37# printing a message the user should probably be reading and often used in 39# printing a message the user should probably be reading and often used in
38# conjunction with the epause function. If the EBEEP_IGNORE env var is set, 40# conjunction with the epause function. If the EBEEP_IGNORE env var is set,
39# don't beep at all. 41# don't beep at all. Defined in EAPIs 0 1 and 2.
40ebeep() { 42ebeep() {
41 local n 43 local n
42 if [[ -z ${EBEEP_IGNORE} ]] ; then 44 if [[ -z ${EBEEP_IGNORE} ]] ; then
43 for ((n=1 ; n <= ${1:-5} ; n++)) ; do 45 for ((n=1 ; n <= ${1:-5} ; n++)) ; do
44 echo -ne "\a" 46 echo -ne "\a"
47 sleep 1 49 sleep 1
48 done 50 done
49 fi 51 fi
50} 52}
51 53
54else
55
56ebeep() {
57 [[ $(type -t eqawarn) == function ]] && \
58 eqawarn "QA Notice: ebeep is not defined in EAPI=3, please file a bug at http://bugs.gentoo.org"
59}
60
61epause() {
62 [[ $(type -t eqawarn) == function ]] && \
63 eqawarn "QA Notice: epause is not defined in EAPI=3, please file a bug at http://bugs.gentoo.org"
64}
65
66fi
67
52# @FUNCTION: ecvs_clean 68# @FUNCTION: ecvs_clean
53# @USAGE: [list of dirs] 69# @USAGE: [list of dirs]
54# @DESCRIPTION: 70# @DESCRIPTION:
55# Remove CVS directories recursiveley. Useful when a source tarball contains 71# Remove CVS directories recursiveley. Useful when a source tarball contains
56# internal CVS directories. Defaults to $PWD. 72# internal CVS directories. Defaults to $PWD.
69 [[ -z $* ]] && set -- . 85 [[ -z $* ]] && set -- .
70 find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf 86 find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
71} 87}
72 88
73# @FUNCTION: eshopts_push 89# @FUNCTION: eshopts_push
74# @USAGE: [options to `set`] 90# @USAGE: [options to `set` or `shopt`]
75# @DESCRIPTION: 91# @DESCRIPTION:
76# Often times code will want to enable a shell option to change code behavior. 92# Often times code will want to enable a shell option to change code behavior.
77# Since changing shell options can easily break other pieces of code (which 93# Since changing shell options can easily break other pieces of code (which
78# assume the default state), eshopts_push is used to (1) push the current shell 94# assume the default state), eshopts_push is used to (1) push the current shell
79# options onto a stack and (2) pass the specified arguments to set. 95# options onto a stack and (2) pass the specified arguments to set.
96#
97# If the first argument is '-s' or '-u', we assume you want to call `shopt`
98# rather than `set` as there are some options only available via that.
80# 99#
81# A common example is to disable shell globbing so that special meaning/care 100# A common example is to disable shell globbing so that special meaning/care
82# may be used with variables/arguments to custom functions. That would be: 101# may be used with variables/arguments to custom functions. That would be:
83# @CODE 102# @CODE
84# eshopts_push -o noglob 103# eshopts_push -o noglob
92# @CODE 111# @CODE
93eshopts_push() { 112eshopts_push() {
94 # have to assume __ESHOPTS_SAVE__ isn't screwed with 113 # have to assume __ESHOPTS_SAVE__ isn't screwed with
95 # as a `declare -a` here will reset its value 114 # as a `declare -a` here will reset its value
96 local i=${#__ESHOPTS_SAVE__[@]} 115 local i=${#__ESHOPTS_SAVE__[@]}
116 if [[ $1 == -[su] ]] ; then
97 __ESHOPTS_SAVE__[$i]=$- 117 __ESHOPTS_SAVE__[$i]=$(shopt -p)
98 [[ $# -eq 0 ]] && return 0 118 [[ $# -eq 0 ]] && return 0
119 shopt "$@" || die "eshopts_push: bad options to shopt: $*"
120 else
121 __ESHOPTS_SAVE__[$i]=$-
122 [[ $# -eq 0 ]] && return 0
99 set "$@" || die "eshopts_push: bad options to set: $*" 123 set "$@" || die "eshopts_push: bad options to set: $*"
124 fi
100} 125}
101 126
102# @FUNCTION: eshopts_pop 127# @FUNCTION: eshopts_pop
103# @USAGE: 128# @USAGE:
104# @DESCRIPTION: 129# @DESCRIPTION:
108 [[ $# -ne 0 ]] && die "eshopts_pop takes no arguments" 133 [[ $# -ne 0 ]] && die "eshopts_pop takes no arguments"
109 local i=$(( ${#__ESHOPTS_SAVE__[@]} - 1 )) 134 local i=$(( ${#__ESHOPTS_SAVE__[@]} - 1 ))
110 [[ ${i} -eq -1 ]] && die "eshopts_{push,pop}: unbalanced pair" 135 [[ ${i} -eq -1 ]] && die "eshopts_{push,pop}: unbalanced pair"
111 local s=${__ESHOPTS_SAVE__[$i]} 136 local s=${__ESHOPTS_SAVE__[$i]}
112 unset __ESHOPTS_SAVE__[$i] 137 unset __ESHOPTS_SAVE__[$i]
138 if [[ ${s} == "shopt -"* ]] ; then
139 eval "${s}" || die "eshopts_pop: sanity: invalid shopt options: ${s}"
140 else
113 set +$- || die "eshopts_pop: sanity: invalid shell settings: $-" 141 set +$- || die "eshopts_pop: sanity: invalid shell settings: $-"
114 set -${s} || die "eshopts_pop: sanity: unable to restore saved shell settings: ${s}" 142 set -${s} || die "eshopts_pop: sanity: unable to restore saved shell settings: ${s}"
143 fi
115} 144}
116 145
117# @VARIABLE: EPATCH_SOURCE 146# @VARIABLE: EPATCH_SOURCE
118# @DESCRIPTION: 147# @DESCRIPTION:
119# Default directory to search for patches. 148# Default directory to search for patches.
930 irc) type=IRCClient;; 959 irc) type=IRCClient;;
931 mail) type=Email;; 960 mail) type=Email;;
932 news) type=News;; 961 news) type=News;;
933 nntp) type=News;; 962 nntp) type=News;;
934 p2p) type=FileTransfer;; 963 p2p) type=FileTransfer;;
964 voip) type=Telephony;;
935 *) type=;; 965 *) type=;;
936 esac 966 esac
937 type="Network;${type}" 967 type="Network;${type}"
938 ;; 968 ;;
939 969
948 math*) type=Math;; 978 math*) type=Math;;
949 physics) type=Physics;; 979 physics) type=Physics;;
950 visual*) type=DataVisualization;; 980 visual*) type=DataVisualization;;
951 *) type=;; 981 *) type=;;
952 esac 982 esac
953 type="Science;${type}" 983 type="Education;Science;${type}"
954 ;; 984 ;;
955 985
956 sys) 986 sys)
957 type="System" 987 type="System"
958 ;; 988 ;;
960 www) 990 www)
961 case ${catmin} in 991 case ${catmin} in
962 client) type=WebBrowser;; 992 client) type=WebBrowser;;
963 *) type=;; 993 *) type=;;
964 esac 994 esac
965 type="Network" 995 type="Network;${type}"
966 ;; 996 ;;
967 997
968 *) 998 *)
969 type= 999 type=
970 ;; 1000 ;;
975 else 1005 else
976 local desktop_name="${PN}-${SLOT}" 1006 local desktop_name="${PN}-${SLOT}"
977 fi 1007 fi
978 local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop" 1008 local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop"
979 #local desktop=${T}/${exec%% *:-${desktop_name}}.desktop 1009 #local desktop=${T}/${exec%% *:-${desktop_name}}.desktop
1010
1011 # Don't append another ";" when a valid category value is provided.
1012 type=${type%;}${type:+;}
1013
1014 eshopts_push -s extglob
1015 if [[ -n ${icon} && ${icon} != /* && ${icon} == *.@(xpm|png|svg) ]]; then
1016 ewarn "As described in the Icon Theme Specification, icon file extensions are not"
1017 ewarn "allowed in .desktop files if the value is not an absolute path."
1018 icon=${icon%.@(xpm|png|svg)}
1019 fi
1020 eshopts_pop
980 1021
981 cat <<-EOF > "${desktop}" 1022 cat <<-EOF > "${desktop}"
982 [Desktop Entry] 1023 [Desktop Entry]
983 Name=${name} 1024 Name=${name}
984 Type=Application 1025 Type=Application
985 Comment=${DESCRIPTION} 1026 Comment=${DESCRIPTION}
986 Exec=${exec} 1027 Exec=${exec}
987 TryExec=${exec%% *} 1028 TryExec=${exec%% *}
988 Icon=${icon} 1029 Icon=${icon}
989 Categories=${type}; 1030 Categories=${type}
990 EOF 1031 EOF
991 1032
992 [[ ${path} ]] && echo "Path=${path}" >> "${desktop}" 1033 [[ ${path} ]] && echo "Path=${path}" >> "${desktop}"
993 1034
994 ( 1035 (
1743} 1784}
1744 1785
1745# @FUNCTION: built_with_use 1786# @FUNCTION: built_with_use
1746# @USAGE: [--hidden] [--missing <action>] [-a|-o] <DEPEND ATOM> <List of USE flags> 1787# @USAGE: [--hidden] [--missing <action>] [-a|-o] <DEPEND ATOM> <List of USE flags>
1747# @DESCRIPTION: 1788# @DESCRIPTION:
1789#
1790# Deprecated: Use EAPI 2 use deps in DEPEND|RDEPEND and with has_version calls.
1791#
1748# A temporary hack until portage properly supports DEPENDing on USE 1792# A temporary hack until portage properly supports DEPENDing on USE
1749# flags being enabled in packages. This will check to see if the specified 1793# flags being enabled in packages. This will check to see if the specified
1750# DEPEND atom was built with the specified list of USE flags. The 1794# DEPEND atom was built with the specified list of USE flags. The
1751# --missing option controls the behavior if called on a package that does 1795# --missing option controls the behavior if called on a package that does
1752# not actually support the defined USE flags (aka listed in IUSE). 1796# not actually support the defined USE flags (aka listed in IUSE).

Legend:
Removed from v.1.328  
changed lines
  Added in v.1.334

  ViewVC Help
Powered by ViewVC 1.1.20