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

Contents of /eclass/base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.47 - (hide annotations) (download)
Fri Jan 22 09:34:04 2010 UTC (4 years, 10 months ago) by scarabeus
Branch: MAIN
Changes since 1.46: +3 -3 lines
Drop usage of eqawarn.

1 pva 1.34 # Copyright 1999-2008 Gentoo Foundation
2 vapier 1.18 # Distributed under the terms of the GNU General Public License v2
3 scarabeus 1.47 # $Header: /var/cvsroot/gentoo-x86/eclass/base.eclass,v 1.46 2010/01/20 19:21:19 scarabeus Exp $
4 pva 1.34
5     # @ECLASS: base.eclass
6     # @MAINTAINER:
7 scarabeus 1.41 # QA Team <qa@gentoo.org>
8 vapier 1.20 #
9 pva 1.34 # Original author Dan Armak <danarmak@gentoo.org>
10     # @BLURB: The base eclass defines some default functions and variables.
11     # @DESCRIPTION:
12     # The base eclass defines some default functions and variables. Nearly
13     # everything else inherits from here.
14 vapier 1.18
15 flameeyes 1.29 inherit eutils
16    
17 scarabeus 1.41 BASE_EXPF="src_unpack src_compile src_install"
18 loki_val 1.35 case "${EAPI:-0}" in
19 scarabeus 1.44 2|3|4) BASE_EXPF+=" src_prepare src_configure" ;;
20 scarabeus 1.41 *) ;;
21 loki_val 1.35 esac
22    
23 scarabeus 1.41 EXPORT_FUNCTIONS ${BASE_EXPF}
24    
25     # @ECLASS-VARIABLE: DOCS
26     # @DESCRIPTION:
27     # Array containing documents passed to dodoc command.
28 scarabeus 1.42 #
29     # DOCS=( "${S}/doc/document.txt" "${S}/doc/doc_folder/" )
30 scarabeus 1.41
31     # @ECLASS-VARIABLE: HTML_DOCS
32     # @DESCRIPTION:
33     # Array containing documents passed to dohtml command.
34 scarabeus 1.42 #
35     # HTML_DOCS=( "${S}/doc/document.html" "${S}/doc/html_folder/" )
36 scarabeus 1.41
37     # @ECLASS-VARIABLE: PATCHES
38     # @DESCRIPTION:
39     # PATCHES array variable containing all various patches to be applied.
40     # This variable is expected to be defined in global scope of ebuild.
41     # Make sure to specify the full path. This variable is utilised in
42     # src_unpack/src_prepare phase based on EAPI.
43 scarabeus 1.42 #
44 scarabeus 1.41 # NOTE: if using patches folders with special file suffixes you have to
45     # define one additional variable EPATCH_SUFFIX="something"
46 scarabeus 1.42 #
47     # PATCHES=( "${FILESDIR}/mypatch.patch" "${FILESDIR}/patches_folder/" )
48 scarabeus 1.41
49 danarmak 1.1
50 pva 1.34 # @FUNCTION: base_src_unpack
51     # @DESCRIPTION:
52 scarabeus 1.41 # The base src_unpack function, which is exported.
53     # Calls also src_prepare with eapi older than 2.
54 danarmak 1.1 base_src_unpack() {
55 scarabeus 1.41 debug-print-function $FUNCNAME "$@"
56 danarmak 1.6
57 scarabeus 1.41 pushd "${WORKDIR}" > /dev/null
58    
59     [[ -n "${A}" ]] && unpack ${A}
60     has src_prepare ${BASE_EXPF} || base_src_prepare
61 loki_val 1.35
62 scarabeus 1.41 popd > /dev/null
63 loki_val 1.35 }
64    
65     # @FUNCTION: base_src_prepare
66     # @DESCRIPTION:
67 scarabeus 1.41 # The base src_prepare function, which is exported
68     # EAPI is greater or equal to 2.
69 loki_val 1.35 base_src_prepare() {
70     debug-print-function $FUNCNAME "$@"
71 scarabeus 1.41 debug-print "$FUNCNAME: PATCHES=$PATCHES"
72 danarmak 1.6
73 scarabeus 1.41 pushd "${S}" > /dev/null
74     if [[ "$(declare -p PATCHES 2>/dev/null 2>&1)" == "declare -a"* ]]; then
75     for x in "${PATCHES[@]}"; do
76     debug-print "$FUNCNAME: applying patch from ${x}"
77     if [[ -d "${x}" ]]; then
78     # Use standardized names and locations with bulk patching
79     # Patch directory is ${WORKDIR}/patch
80     # See epatch() in eutils.eclass for more documentation
81     EPATCH_SUFFIX=${EPATCH_SUFFIX:=patch}
82    
83     # in order to preserve normal EPATCH_SOURCE value that can
84     # be used other way than with base eclass store in local
85     # variable and restore later
86     oldval=${EPATCH_SOURCE}
87     EPATCH_SOURCE=${x}
88     epatch
89     EPATCH_SOURCE=${oldval}
90 scarabeus 1.46 elif [[ -f "${x}" ]]; then
91     epatch "${x}"
92 spatz 1.45 else
93 scarabeus 1.47 ewarn "QA: File or directory \"${x}\" does not exist."
94     ewarn "QA: Check your PATCHES array or add missing file/directory."
95 mr_bones_ 1.36 fi
96 scarabeus 1.41 done
97     else
98     for x in ${PATCHES}; do
99     debug-print "$FUNCNAME: patching from ${x}"
100     epatch "${x}"
101     done
102     fi
103 danarmak 1.6
104 scarabeus 1.41 # Apply user patches
105     debug-print "$FUNCNAME: applying user patches"
106     epatch_user
107 swegener 1.27
108 scarabeus 1.41 popd > /dev/null
109 danarmak 1.1 }
110    
111 loki_val 1.35 # @FUNCTION: base_src_configure
112     # @DESCRIPTION:
113 scarabeus 1.41 # The base src_configure function, which is exported when
114 scarabeus 1.42 # EAPI is greater or equal to 2. Runs basic econf. Here the PATCHES array is
115     # evaluated.
116 loki_val 1.35 base_src_configure() {
117     debug-print-function $FUNCNAME "$@"
118    
119 scarabeus 1.41 # there is no pushd ${S} so we can override its place where to run
120     [[ -x ${ECONF_SOURCE:-.}/configure ]] && econf
121 loki_val 1.35 }
122    
123 pva 1.34 # @FUNCTION: base_src_compile
124     # @DESCRIPTION:
125 scarabeus 1.41 # The base src_compile function, calls src_configure with
126     # EAPI older than 2.
127 danarmak 1.1 base_src_compile() {
128 loki_val 1.35 debug-print-function $FUNCNAME "$@"
129    
130 scarabeus 1.41 has src_configure ${BASE_EXPF} || base_src_configure
131     base_src_make $@
132 loki_val 1.35 }
133    
134 scarabeus 1.41 # @FUNCTION: base_src_make
135     # @DESCRIPTION:
136     # Actual function that runs emake command.
137 scarabeus 1.39 base_src_make() {
138 mr_bones_ 1.40 debug-print-function $FUNCNAME "$@"
139 scarabeus 1.41
140     if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then
141     emake $@ || die "died running emake, $FUNCNAME:make"
142     fi
143 scarabeus 1.39 }
144    
145 scarabeus 1.41 # @FUNCTION: base_src_install
146 loki_val 1.35 # @DESCRIPTION:
147 scarabeus 1.41 # The base src_install function. Runs make install and
148     # installs documents and html documents from DOCS and HTML_DOCS
149     # arrays.
150     base_src_install() {
151 loki_val 1.35 debug-print-function $FUNCNAME "$@"
152 danarmak 1.6
153 scarabeus 1.41 emake DESTDIR="${D}" $@ install || die "died running make install, $FUNCNAME:make"
154     base_src_install_docs
155 danarmak 1.1 }
156    
157 scarabeus 1.41 # @FUNCTION: base_src_install_docs
158 pva 1.34 # @DESCRIPTION:
159 scarabeus 1.41 # Actual function that install documentation from
160     # DOCS and HTML_DOCS arrays.
161     base_src_install_docs() {
162 loki_val 1.35 debug-print-function $FUNCNAME "$@"
163 danarmak 1.6
164 scarabeus 1.41 local x
165 danarmak 1.12
166 scarabeus 1.41 pushd "${S}" > /dev/null
167 danarmak 1.4
168 scarabeus 1.41 if [[ "$(declare -p DOCS 2>/dev/null 2>&1)" == "declare -a"* ]]; then
169     for x in "${DOCS[@]}"; do
170     debug-print "$FUNCNAME: docs: creating document from ${x}"
171     dodoc -r "${x}" || die "dodoc failed"
172     done
173     fi
174     if [[ "$(declare -p HTML_DOCS 2>/dev/null 2>&1)" == "declare -a"* ]]; then
175     for x in "${HTML_DOCS[@]}"; do
176     debug-print "$FUNCNAME: docs: creating html document from ${x}"
177     dohtml -r "${x}" || die "dohtml failed"
178     done
179     fi
180 danarmak 1.6
181 scarabeus 1.41 popd > /dev/null
182 danarmak 1.1 }

  ViewVC Help
Powered by ViewVC 1.1.20