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

Contents of /eclass/base.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.50 - (hide annotations) (download)
Mon Apr 12 15:33:03 2010 UTC (4 years, 5 months ago) by scarabeus
Branch: MAIN
Changes since 1.49: +2 -1 lines
Use EPATCH_FORCE=yes. Otherwise patches as dir are not populated.

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

  ViewVC Help
Powered by ViewVC 1.1.20