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

Contents of /eclass/base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.45 - (hide annotations) (download)
Wed Jan 20 12:57:13 2010 UTC (4 years, 2 months ago) by spatz
Branch: MAIN
Changes since 1.44: +3 -2 lines
Fix critical bug in base.eclass where patching with PATCHES would silently fail if file does not exist

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 spatz 1.45 # $Header: /var/cvsroot/gentoo-x86/eclass/base.eclass,v 1.44 2010/01/13 09:51:53 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 spatz 1.45 else
91     epatch "${x}"
92 mr_bones_ 1.36 fi
93 scarabeus 1.41 done
94     else
95     for x in ${PATCHES}; do
96     debug-print "$FUNCNAME: patching from ${x}"
97     epatch "${x}"
98     done
99     fi
100 danarmak 1.6
101 scarabeus 1.41 # Apply user patches
102     debug-print "$FUNCNAME: applying user patches"
103     epatch_user
104 swegener 1.27
105 scarabeus 1.41 popd > /dev/null
106 danarmak 1.1 }
107    
108 loki_val 1.35 # @FUNCTION: base_src_configure
109     # @DESCRIPTION:
110 scarabeus 1.41 # The base src_configure function, which is exported when
111 scarabeus 1.42 # EAPI is greater or equal to 2. Runs basic econf. Here the PATCHES array is
112     # evaluated.
113 loki_val 1.35 base_src_configure() {
114     debug-print-function $FUNCNAME "$@"
115    
116 scarabeus 1.41 # there is no pushd ${S} so we can override its place where to run
117     [[ -x ${ECONF_SOURCE:-.}/configure ]] && econf
118 loki_val 1.35 }
119    
120 pva 1.34 # @FUNCTION: base_src_compile
121     # @DESCRIPTION:
122 scarabeus 1.41 # The base src_compile function, calls src_configure with
123     # EAPI older than 2.
124 danarmak 1.1 base_src_compile() {
125 loki_val 1.35 debug-print-function $FUNCNAME "$@"
126    
127 scarabeus 1.41 has src_configure ${BASE_EXPF} || base_src_configure
128     base_src_make $@
129 loki_val 1.35 }
130    
131 scarabeus 1.41 # @FUNCTION: base_src_make
132     # @DESCRIPTION:
133     # Actual function that runs emake command.
134 scarabeus 1.39 base_src_make() {
135 mr_bones_ 1.40 debug-print-function $FUNCNAME "$@"
136 scarabeus 1.41
137     if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then
138     emake $@ || die "died running emake, $FUNCNAME:make"
139     fi
140 scarabeus 1.39 }
141    
142 scarabeus 1.41 # @FUNCTION: base_src_install
143 loki_val 1.35 # @DESCRIPTION:
144 scarabeus 1.41 # The base src_install function. Runs make install and
145     # installs documents and html documents from DOCS and HTML_DOCS
146     # arrays.
147     base_src_install() {
148 loki_val 1.35 debug-print-function $FUNCNAME "$@"
149 danarmak 1.6
150 scarabeus 1.41 emake DESTDIR="${D}" $@ install || die "died running make install, $FUNCNAME:make"
151     base_src_install_docs
152 danarmak 1.1 }
153    
154 scarabeus 1.41 # @FUNCTION: base_src_install_docs
155 pva 1.34 # @DESCRIPTION:
156 scarabeus 1.41 # Actual function that install documentation from
157     # DOCS and HTML_DOCS arrays.
158     base_src_install_docs() {
159 loki_val 1.35 debug-print-function $FUNCNAME "$@"
160 danarmak 1.6
161 scarabeus 1.41 local x
162 danarmak 1.12
163 scarabeus 1.41 pushd "${S}" > /dev/null
164 danarmak 1.4
165 scarabeus 1.41 if [[ "$(declare -p DOCS 2>/dev/null 2>&1)" == "declare -a"* ]]; then
166     for x in "${DOCS[@]}"; do
167     debug-print "$FUNCNAME: docs: creating document from ${x}"
168     dodoc -r "${x}" || die "dodoc failed"
169     done
170     fi
171     if [[ "$(declare -p HTML_DOCS 2>/dev/null 2>&1)" == "declare -a"* ]]; then
172     for x in "${HTML_DOCS[@]}"; do
173     debug-print "$FUNCNAME: docs: creating html document from ${x}"
174     dohtml -r "${x}" || die "dohtml failed"
175     done
176     fi
177 danarmak 1.6
178 scarabeus 1.41 popd > /dev/null
179 danarmak 1.1 }

  ViewVC Help
Powered by ViewVC 1.1.20