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

Contents of /eclass/base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.44 - (hide annotations) (download)
Wed Jan 13 09:51:53 2010 UTC (4 years, 5 months ago) by scarabeus
Branch: MAIN
Changes since 1.43: +2 -2 lines
Use bash 3.2 features.

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

  ViewVC Help
Powered by ViewVC 1.1.20