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

Diff of /eclass/libtool.eclass

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

Revision 1.74 Revision 1.95
1# Copyright 1999-2005 Gentoo Foundation 1# Copyright 1999-2011 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/libtool.eclass,v 1.74 2007/03/01 18:48:02 grobian Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.95 2011/11/14 17:08:49 vapier Exp $
4# 4
5# Author: Martin Schlemmer <azarah@gentoo.org> 5# @ECLASS: libtool.eclass
6# 6# @MAINTAINER:
7# base-system@gentoo.org
8# @BLURB: quickly update bundled libtool code
9# @DESCRIPTION:
7# This eclass patches ltmain.sh distributed with libtoolized packages with the 10# This eclass patches ltmain.sh distributed with libtoolized packages with the
8# relink and portage patch among others 11# relink and portage patch among others
9 12#
10 13# Note, this eclass does not require libtool as it only applies patches to
11# 2004.09.25 rac 14# generated libtool files. We do not run the libtoolize program because that
12# i have verified that at least one package can use this eclass and 15# requires a regeneration of the main autotool files in order to work properly.
13# build properly even without libtool installed yet, probably using
14# the files in the distribution. eliminating this dependency fixes
15# bug 65209, which is a showstopper for people doing installs using
16# stageballs <3. if anybody decides to revert this, please attempt
17# to find an alternate way of resolving that bug at the same time.
18 16
19DESCRIPTION="Based on the ${ECLASS} eclass" 17DESCRIPTION="Based on the ${ECLASS} eclass"
20 18
21ELIBTOOL_VERSION="2.0.2" 19inherit multilib toolchain-funcs
22 20
23ELT_PATCH_DIR="${ECLASSDIR}/ELT-patches" 21ELT_PATCH_DIR="${ECLASSDIR}/ELT-patches"
24ELT_APPLIED_PATCHES=
25ELT_LTMAIN_SH=
26
27#
28# Returns all the directories containing ltmain.sh
29#
30ELT_find_ltmain_sh() {
31 local x=
32 local dirlist=
33
34 for x in $(find "${S}" -name 'ltmain.sh') ; do
35 dirlist="${dirlist} ${x%/*}"
36 done
37
38 echo "${dirlist}"
39}
40 22
41# 23#
42# See if we can apply $2 on $1, and if so, do it 24# See if we can apply $2 on $1, and if so, do it
43# 25#
44ELT_try_and_apply_patch() { 26ELT_try_and_apply_patch() {
45 local ret=0 27 local ret=0
46 local file=$1 28 local file=$1
47 local patch=$2 29 local patch=$2
30 local src=$3
31 local disp="${src} patch"
32 local log="${T}/elibtool.log"
33
34 if [[ -z ${__ELT_NOTED_TMP} ]] ; then
35 __ELT_NOTED_TMP=true
36 printf 'temp patch: %s\n' "${patch}" > "${log}"
37 fi
38 printf '\nTrying %s\n' "${disp}" >> "${log}"
48 39
49 # We only support patchlevel of 0 - why worry if its static patches? 40 # We only support patchlevel of 0 - why worry if its static patches?
50 if patch -p0 --dry-run "${file}" "${patch}" &> "${T}/elibtool.log" ; then 41 if patch -p0 --dry-run "${file}" "${patch}" >> "${log}" 2>&1 ; then
51 einfo " Applying $(basename "$(dirname "${patch}")")-${patch##*/}.patch ..." 42 einfo " Applying ${disp} ..."
52 patch -p0 -g0 --no-backup-if-mismatch "${file}" "${patch}" \ 43 patch -p0 -g0 --no-backup-if-mismatch "${file}" "${patch}" >> "${log}" 2>&1
53 &> "${T}/elibtool.log"
54 ret=$? 44 ret=$?
55 export ELT_APPLIED_PATCHES="${ELT_APPLIED_PATCHES} ${patch##*/}" 45 export ELT_APPLIED_PATCHES="${ELT_APPLIED_PATCHES} ${src}"
56 else 46 else
57 ret=1 47 ret=1
58 fi 48 fi
59 49
60 return "${ret}" 50 return "${ret}"
62 52
63# 53#
64# Get string version of ltmain.sh or ltconfig (passed as $1) 54# Get string version of ltmain.sh or ltconfig (passed as $1)
65# 55#
66ELT_libtool_version() { 56ELT_libtool_version() {
67 local ltmain_sh=$1 57 (
68 local version= 58 unset VERSION
69
70 version=$(eval $(grep -e '^[[:space:]]*VERSION=' "${ltmain_sh}"); \ 59 eval $(grep -e '^[[:space:]]*VERSION=' "$1")
71 echo "${VERSION}") 60 echo "${VERSION:-0}"
72 [[ -z ${version} ]] && version="0" 61 )
73
74 echo "${version}"
75} 62}
76 63
77# 64#
78# Run through the patches in $2 and see if any 65# Run through the patches in $2 and see if any
79# apply to $1 ... 66# apply to $1 ...
80# 67#
81ELT_walk_patches() { 68ELT_walk_patches() {
82 local x= 69 local patch tmp
83 local y=
84 local ret=1 70 local ret=1
85 local file=$1 71 local file=$1
86 local patch_set=$2 72 local patch_set=$2
87 local patch_dir= 73 local patch_dir="${ELT_PATCH_DIR}/${patch_set}"
88 local rem_int_dep=$3 74 local rem_int_dep=$3
89 75
90 if [[ -n ${patch_set} ]] ; then 76 [[ -z ${patch_set} ]] && return 1
91 if [[ -d ${ELT_PATCH_DIR}/${patch_set} ]] ; then 77 [[ ! -d ${patch_dir} ]] && return 1
92 patch_dir="${ELT_PATCH_DIR}/${patch_set}" 78
93 else 79 # Allow patches to use @GENTOO_LIBDIR@ replacements
94 return "${ret}" 80 local sed_args=( -e "s:@GENTOO_LIBDIR@:$(get_libdir):g" )
81 if [[ -n ${rem_int_dep} ]] ; then
82 # replace @REM_INT_DEP@ with what was passed
83 # to --remove-internal-dep
84 sed_args+=( -e "s|@REM_INT_DEP@|${rem_int_dep}|g" )
85 fi
86
87 pushd "${ELT_PATCH_DIR}" >/dev/null || die
88
89 # Go through the patches in reverse order (newer version to older)
90 for patch in $(find "${patch_set}" -maxdepth 1 -type f | LC_ALL=C sort -r) ; do
91 tmp="${T}/libtool-elt.patch"
92 sed "${sed_args[@]}" "${patch}" > "${tmp}" || die
93 if ELT_try_and_apply_patch "${file}" "${tmp}" "${patch}" ; then
94 # Break to unwind w/popd rather than return directly
95 ret=0
96 break
95 fi 97 fi
96
97 # Go through the patches in reverse order (large to small)
98 for x in $(ls -d "${patch_dir}"/* 2> /dev/null | grep -v 'CVS' | sort -r) ; do
99 if [[ -n ${x} && -f ${x} ]] ; then
100 # For --remove-internal-dep ...
101 if [[ -n ${rem_int_dep} ]] ; then
102 # For replace @REM_INT_DEP@ with what was passed
103 # to --remove-internal-dep
104 sed -e "s|@REM_INT_DEP@|${rem_int_dep}|g" ${x} > \
105 "${T}/$$.rem_int_deps.patch"
106
107 x="${T}/$$.rem_int_deps.patch"
108 fi
109
110 if ELT_try_and_apply_patch "${file}" "${x}" ; then
111 ret=0
112 break
113 fi
114 fi
115 done 98 done
116 fi
117 99
100 popd >/dev/null
118 return "${ret}" 101 return ${ret}
119} 102}
120 103
104# @FUNCTION: elibtoolize
105# @USAGE: [dirs] [--portage] [--reverse-deps] [--patch-only] [--remove-internal-dep=xxx] [--shallow] [--no-uclibc]
106# @DESCRIPTION:
107# Apply a smorgasbord of patches to bundled libtool files. This function
108# should always be safe to run. If no directories are specified, then
109# ${S} will be searched for appropriate files.
110#
111# If the --shallow option is used, then only ${S}/ltmain.sh will be patched.
112#
113# The other options should be avoided in general unless you know what's going on.
121elibtoolize() { 114elibtoolize() {
122 local x= 115 local x
123 local y=
124 local do_portage="no" 116 local do_portage="no"
125 local do_reversedeps="no" 117 local do_reversedeps="no"
126 local do_only_patches="no" 118 local do_only_patches="no"
127 local do_uclibc="yes" 119 local do_uclibc="yes"
128 local deptoremove= 120 local deptoremove=
129 local my_dirlist= 121 local do_shallow="no"
122 local force="false"
130 local elt_patches="portage relink max_cmd_len sed test tmp" 123 local elt_patches="install-sh ltmain portage relink max_cmd_len sed test tmp cross as-needed"
131 local start_dir=${PWD}
132
133 my_dirlist=$(ELT_find_ltmain_sh)
134 124
135 for x in "$@" ; do 125 for x in "$@" ; do
136 case "${x}" in 126 case ${x} in
137 "--portage") 127 --portage)
138 # Only apply portage patch, and don't 128 # Only apply portage patch, and don't
139 # 'libtoolize --copy --force' if all patches fail. 129 # 'libtoolize --copy --force' if all patches fail.
140 do_portage="yes" 130 do_portage="yes"
141 ;; 131 ;;
142 "--reverse-deps") 132 --reverse-deps)
143 # Apply the reverse-deps patch 133 # Apply the reverse-deps patch
144 # http://bugzilla.gnome.org/show_bug.cgi?id=75635 134 # http://bugzilla.gnome.org/show_bug.cgi?id=75635
145 do_reversedeps="yes" 135 do_reversedeps="yes"
146 elt_patches="${elt_patches} fix-relink" 136 elt_patches+=" fix-relink"
147 ;; 137 ;;
148 "--patch-only") 138 --patch-only)
149 # Do not run libtoolize if none of the patches apply .. 139 # Do not run libtoolize if none of the patches apply ..
150 do_only_patches="yes" 140 do_only_patches="yes"
151 ;; 141 ;;
152 "^--remove-internal-dep="*) 142 --remove-internal-dep=*)
153 # We will replace @REM_INT_DEP@ with what is needed 143 # We will replace @REM_INT_DEP@ with what is needed
154 # in ELT_walk_patches() ... 144 # in ELT_walk_patches() ...
155 deptoremove=$(echo "${x}" | sed -e 's|--remove-internal-dep=||') 145 deptoremove=${x#--remove-internal-dep=}
156 146
157 # Add the patch for this ... 147 # Add the patch for this ...
158 [[ -n ${deptoremove} ]] && elt_patches="${elt_patches} rem-int-dep" 148 [[ -n ${deptoremove} ]] && elt_patches+=" rem-int-dep"
159 ;; 149 ;;
160 "--shallow") 150 --shallow)
161 # Only patch the ltmain.sh in ${S} 151 # Only patch the ltmain.sh in ${S}
162 if [[ -f ${S}/ltmain.sh ]] ; then 152 do_shallow="yes"
163 my_dirlist=${S}
164 else
165 my_dirlist=
166 fi
167 ;; 153 ;;
168 "--no-uclibc") 154 --no-uclibc)
169 do_uclibc="no" 155 do_uclibc="no"
156 ;;
157 --force)
158 force="true"
170 ;; 159 ;;
171 *) 160 *)
172 eerror "Invalid elibtoolize option: ${x}" 161 eerror "Invalid elibtoolize option: ${x}"
173 die "elibtoolize called with ${x} ??" 162 die "elibtoolize called with ${x} ??"
174 esac 163 esac
175 done 164 done
176 165
177 [[ ${do_uclibc} == "yes" ]] && \ 166 [[ ${do_uclibc} == "yes" ]] && elt_patches+=" uclibc-conf uclibc-ltconf"
178 elt_patches="${elt_patches} uclibc-conf uclibc-ltconf"
179 167
180 [[ ${CHOST} == *"-freebsd"* ]] && \ 168 case ${CHOST} in
181 elt_patches="${elt_patches} fbsd-conf fbsd-ltconf" 169 *-aix*) elt_patches+=" hardcode aixrtl aix-noundef" ;; #213277
170 *-darwin*) elt_patches+=" darwin-ltconf darwin-ltmain darwin-conf" ;;
171 *-freebsd*) elt_patches+=" fbsd-conf fbsd-ltconf" ;;
172 *-hpux*) elt_patches+=" hpux-conf deplibs hc-flag-ld hardcode hardcode-relink relink-prog no-lc" ;;
173 *-irix*) elt_patches+=" irix-ltmain" ;;
174 *-mint*) elt_patches+=" mint-conf" ;;
175 esac
182 176
183 [[ ${CHOST} == *"-darwin"* ]] && \ 177 if $(tc-getLD) --version 2>&1 | grep -qs 'GNU gold'; then
184 elt_patches="${elt_patches} darwin-ltconf darwin-ltmain" 178 elt_patches+=" gold-conf"
179 fi
185 180
186 for x in ${my_dirlist} ; do 181 # Reuse "$@" for dirs to patch
187 local tmp=$(echo "${x}" | sed -e "s|${WORKDIR}||") 182 set --
183 if [[ ${do_shallow} == "yes" ]] ; then
184 [[ -f ${S}/ltmain.sh ]] && set -- "${S}"
185 else
186 set -- $(find "${S}" -name ltmain.sh -printf '%h ')
187 fi
188
189 local d p
190 for d in "$@" ; do
188 export ELT_APPLIED_PATCHES= 191 export ELT_APPLIED_PATCHES=
189 export ELT_LTMAIN_SH="${x}/ltmain.sh"
190 192
191 [[ -f ${x}/.elibtoolized ]] && continue 193 if [[ -f ${d}/.elibtoolized ]] ; then
194 ${force} || continue
195 fi
192 196
193 cd ${x} 197 einfo "Running elibtoolize in: ${d#${WORKDIR}/}/"
194 einfo "Running elibtoolize in: $(echo "/${tmp}" | sed -e 's|//|/|g; s|^/||')" 198 if [[ -f ${d}/.elibtoolized ]] ; then
199 ewarn " We've already been run in this tree; you should"
200 ewarn " avoid this if possible (perhaps by filing a bug)"
201 fi
195 202
196 for y in ${elt_patches} ; do 203 for p in ${elt_patches} ; do
197 local ret=0 204 local ret=0
198 205
199 case "${y}" in 206 case ${p} in
200 "portage") 207 portage)
201 # Stupid test to see if its already applied ... 208 # Stupid test to see if its already applied ...
202 if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]] ; then 209 if ! grep -qs 'We do not want portage' "${d}/ltmain.sh" ; then
203 ELT_walk_patches "${x}/ltmain.sh" "${y}" 210 ELT_walk_patches "${d}/ltmain.sh" "${p}"
204 ret=$? 211 ret=$?
205 fi 212 fi
206 ;; 213 ;;
207 "rem-int-dep") 214 rem-int-dep)
208 ELT_walk_patches "${x}/ltmain.sh" "${y}" "${deptoremove}" 215 ELT_walk_patches "${d}/ltmain.sh" "${p}" "${deptoremove}"
209 ret=$? 216 ret=$?
210 ;; 217 ;;
211 "fix-relink") 218 fix-relink)
212 # Do not apply if we do not have the relink patch applied ... 219 # Do not apply if we do not have the relink patch applied ...
213 if [[ -n $(grep 'inst_prefix_dir' "${x}/ltmain.sh") ]] ; then 220 if grep -qs 'inst_prefix_dir' "${d}/ltmain.sh" ; then
214 ELT_walk_patches "${x}/ltmain.sh" "${y}" 221 ELT_walk_patches "${d}/ltmain.sh" "${p}"
215 ret=$? 222 ret=$?
216 fi 223 fi
217 ;; 224 ;;
218 "max_cmd_len") 225 max_cmd_len)
219 # Do not apply if $max_cmd_len is not used ... 226 # Do not apply if $max_cmd_len is not used ...
220 if [[ -n $(grep 'max_cmd_len' "${x}/ltmain.sh") ]] ; then 227 if grep -qs 'max_cmd_len' "${d}/ltmain.sh" ; then
221 ELT_walk_patches "${x}/ltmain.sh" "${y}" 228 ELT_walk_patches "${d}/ltmain.sh" "${p}"
229 ret=$?
230 fi
231 ;;
232 as-needed)
233 ELT_walk_patches "${d}/ltmain.sh" "${p}"
222 ret=$? 234 ret=$?
223 fi
224 ;; 235 ;;
225 "uclibc-conf") 236 uclibc-conf)
226 if [[ -e ${x}/configure && \
227 -n $(grep 'Transform linux' "${x}/configure") ]] ; then 237 if grep -qs 'Transform linux' "${d}/configure" ; then
228 ELT_walk_patches "${x}/configure" "${y}" 238 ELT_walk_patches "${d}/configure" "${p}"
229 ret=$? 239 ret=$?
230 # ltmain.sh and co might be in a subdirectory ... 240 # ltmain.sh and co might be in a subdirectory ...
231 elif [[ ! -e ${x}/configure && -e ${x}/../configure && \ 241 elif [[ ! -e ${d}/configure ]] && \
232 -n $(grep 'Transform linux' "${x}/../configure") ]] ; then 242 grep -qs 'Transform linux' "${d}/../configure" ; then
233 ELT_walk_patches "${x}/../configure" "${y}" 243 ELT_walk_patches "${d}/../configure" "${p}"
234 ret=$? 244 ret=$?
235 fi 245 fi
236 ;; 246 ;;
237 "uclibc-ltconf") 247 uclibc-ltconf)
238 # Newer libtoolize clears ltconfig, as not used anymore 248 # Newer libtoolize clears ltconfig, as not used anymore
239 if [[ -s ${x}/ltconfig ]] ; then 249 if [[ -s ${d}/ltconfig ]] ; then
240 ELT_walk_patches "${x}/ltconfig" "${y}" 250 ELT_walk_patches "${d}/ltconfig" "${p}"
241 ret=$? 251 ret=$?
242 fi 252 fi
243 ;; 253 ;;
244 "fbsd-conf") 254 fbsd-conf)
245 if [[ -e ${x}/configure && \
246 -n $(grep 'version_type=freebsd-' "${x}/configure") ]] ; then 255 if grep -qs 'version_type=freebsd-' "${d}/configure" ; then
247 ELT_walk_patches "${x}/configure" "${y}" 256 ELT_walk_patches "${d}/configure" "${p}"
248 ret=$? 257 ret=$?
249 # ltmain.sh and co might be in a subdirectory ... 258 # ltmain.sh and co might be in a subdirectory ...
250 elif [[ ! -e ${x}/configure && -e ${x}/../configure && \ 259 elif [[ ! -e ${d}/configure ]] && \
251 -n $(grep 'version_type=freebsd-' "${x}/../configure") ]] ; then 260 grep -qs 'version_type=freebsd-' "${d}/../configure" ; then
252 ELT_walk_patches "${x}/../configure" "${y}" 261 ELT_walk_patches "${d}/../configure" "${p}"
253 ret=$? 262 ret=$?
254 fi 263 fi
255 ;; 264 ;;
256 "fbsd-ltconf") 265 fbsd-ltconf)
257 if [[ -s ${x}/ltconfig ]] ; then 266 if [[ -s ${d}/ltconfig ]] ; then
258 ELT_walk_patches "${x}/ltconfig" "${y}" 267 ELT_walk_patches "${d}/ltconfig" "${p}"
259 ret=$? 268 ret=$?
260 fi 269 fi
261 ;; 270 ;;
271 darwin-conf)
272 if grep -qs '&& echo \.so ||' "${d}/configure" ; then
273 ELT_walk_patches "${d}/configure" "${p}"
274 ret=$?
275 # ltmain.sh and co might be in a subdirectory ...
276 elif [[ ! -e ${d}/configure ]] && \
277 grep -qs '&& echo \.so ||' "${d}/../configure" ; then
278 ELT_walk_patches "${d}/../configure" "${p}"
279 ret=$?
280 fi
281 ;;
262 "darwin-ltconf") 282 darwin-ltconf)
263 # Newer libtoolize clears ltconfig, as not used anymore 283 # Newer libtoolize clears ltconfig, as not used anymore
264 if [[ -s ${x}/ltconfig ]] ; then 284 if [[ -s ${d}/ltconfig ]] ; then
265 ELT_walk_patches "${x}/ltconfig" "${y}" 285 ELT_walk_patches "${d}/ltconfig" "${p}"
286 ret=$?
287 fi
288 ;;
289 darwin-ltmain)
290 # special case to avoid false positives (failing to apply
291 # ltmain.sh path message), newer libtools have this patch
292 # built in, so not much to patch around then
293 if [[ -e ${d}/ltmain.sh ]] && \
294 ! grep -qs 'verstring="-compatibility_version' "${d}/ltmain.sh" ; then
295 ELT_walk_patches "${d}/ltmain.sh" "${p}"
296 ret=$?
297 fi
298 ;;
299 aixrtl|hpux-conf)
300 ret=1
301 local subret=0
302 # apply multiple patches as often as they match
303 while [[ $subret -eq 0 ]]; do
304 subret=1
305 if [[ -e ${d}/configure ]]; then
306 ELT_walk_patches "${d}/configure" "${p}"
307 subret=$?
308 # ltmain.sh and co might be in a subdirectory ...
309 elif [[ ! -e ${d}/configure && -e ${d}/../configure ]] ; then
310 ELT_walk_patches "${d}/../configure" "${p}"
311 subret=$?
312 fi
313 if [[ $subret -eq 0 ]]; then
314 # have at least one patch succeeded.
315 ret=0
316 fi
317 done
318 ;;
319 mint-conf|gold-conf)
320 ret=1
321 local subret=1
322 if [[ -e ${d}/configure ]]; then
323 ELT_walk_patches "${d}/configure" "${p}"
324 subret=$?
325 # ltmain.sh and co might be in a subdirectory ...
326 elif [[ -e ${d}/../configure ]] ; then
327 ELT_walk_patches "${d}/../configure" "${p}"
328 subret=$?
329 elif [[ -e ${d}/../../configure ]] ; then
330 ELT_walk_patches "${d}/../../configure" "${p}"
331 subret=$?
332 fi
333 if [[ $subret -eq 0 ]]; then
334 # have at least one patch succeeded.
335 ret=0
336 fi
337 ;;
338 install-sh)
339 ELT_walk_patches "${d}/install-sh" "${p}"
340 ret=$?
341 ;;
342 cross)
343 if tc-is-cross-compiler ; then
344 ELT_walk_patches "${d}/ltmain.sh" "${p}"
266 ret=$? 345 ret=$?
267 fi 346 fi
268 ;; 347 ;;
269 *) 348 *)
270 ELT_walk_patches "${x}/ltmain.sh" "${y}" 349 ELT_walk_patches "${d}/ltmain.sh" "${p}"
271 ret=$? 350 ret=$?
272 ;; 351 ;;
273 esac 352 esac
274 353
275 if [[ ${ret} -ne 0 ]] ; then 354 if [[ ${ret} -ne 0 ]] ; then
276 case ${y} in 355 case ${p} in
277 "relink") 356 relink)
278 local version=$(ELT_libtool_version "${x}/ltmain.sh") 357 local version=$(ELT_libtool_version "${d}/ltmain.sh")
279 # Critical patch, but could be applied ... 358 # Critical patch, but could be applied ...
280 # FIXME: Still need a patch for ltmain.sh > 1.4.0 359 # FIXME: Still need a patch for ltmain.sh > 1.4.0
281 if [[ -z $(grep 'inst_prefix_dir' "${x}/ltmain.sh") && \ 360 if ! grep -qs 'inst_prefix_dir' "${d}/ltmain.sh" && \
282 $(VER_to_int "${version}") -ge $(VER_to_int "1.4.0") ]] ; then 361 [[ $(VER_to_int "${version}") -ge $(VER_to_int "1.4.0") ]] ; then
283 ewarn " Could not apply relink.patch!" 362 ewarn " Could not apply relink.patch!"
284 fi 363 fi
285 ;; 364 ;;
286 "portage") 365 portage)
287 # Critical patch - for this one we abort, as it can really 366 # Critical patch - for this one we abort, as it can really
288 # cause breakage without it applied! 367 # cause breakage without it applied!
289 if [[ ${do_portage} == "yes" ]] ; then 368 if [[ ${do_portage} == "yes" ]] ; then
290 # Stupid test to see if its already applied ... 369 # Stupid test to see if its already applied ...
291 if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]] ; then 370 if ! grep -qs 'We do not want portage' "${d}/ltmain.sh" ; then
292 echo 371 echo
293 eerror "Portage patch requested, but failed to apply!" 372 eerror "Portage patch requested, but failed to apply!"
294 eerror "Please bug azarah or vapier to add proper patch." 373 eerror "Please file a bug report to add a proper patch."
295 die "Portage patch requested, but failed to apply!" 374 die "Portage patch requested, but failed to apply!"
296 fi 375 fi
297 else 376 else
298 if [[ -n $(grep 'We do not want portage' "${x}/ltmain.sh") ]] ; then 377 if grep -qs 'We do not want portage' "${d}/ltmain.sh" ; then
299 # ewarn " Portage patch seems to be already applied." 378 # ewarn " Portage patch seems to be already applied."
300 # ewarn " Please verify that it is not needed." 379 # ewarn " Please verify that it is not needed."
301 : 380 :
302 else 381 else
303 local version=$( \ 382 local version=$(ELT_libtool_version "${d}"/ltmain.sh)
304 eval $(grep -e '^[[:space:]]*VERSION=' "${x}/ltmain.sh"); \
305 echo "${VERSION}")
306
307 echo 383 echo
308 eerror "Portage patch failed to apply (ltmain.sh version ${version})!" 384 eerror "Portage patch failed to apply (ltmain.sh version ${version})!"
309 eerror "Please bug azarah or vapier to add proper patch." 385 eerror "Please file a bug report to add a proper patch."
310 die "Portage patch failed to apply!" 386 die "Portage patch failed to apply!"
311 fi 387 fi
312 # We do not want to run libtoolize ... 388 # We do not want to run libtoolize ...
313 ELT_APPLIED_PATCHES="portage" 389 ELT_APPLIED_PATCHES="portage"
314 fi 390 fi
315 ;; 391 ;;
316 "uclibc-"*) 392 uclibc-*)
317 [[ ${CHOST} == *"-uclibc" ]] && \
318 ewarn " uClibc patch set '${y}' failed to apply!" 393 [[ ${CHOST} == *-uclibc ]] && ewarn " uClibc patch set '${p}' failed to apply!"
319 ;; 394 ;;
320 "fbsd-"*) 395 fbsd-*)
321 if [[ ${CHOST} == *"-freebsd"* ]] ; then 396 if [[ ${CHOST} == *-freebsd* ]] ; then
322 if [[ -z $(grep 'Handle Gentoo/FreeBSD as it was Linux' \ 397 if [[ -z $(grep 'Handle Gentoo/FreeBSD as it was Linux' \
323 "${x}/configure" "${x}/../configure" 2>/dev/null) ]]; then 398 "${d}/configure" "${d}/../configure" 2>/dev/null) ]]; then
324 eerror " FreeBSD patch set '${y}' failed to apply!" 399 eerror " FreeBSD patch set '${p}' failed to apply!"
325 die "FreeBSD patch set '${y}' failed to apply!" 400 die "FreeBSD patch set '${p}' failed to apply!"
326 fi 401 fi
327 fi 402 fi
328 ;; 403 ;;
329 "darwin-"*) 404 darwin-*)
330 [[ ${CHOST} == *"-darwin"* ]] && \
331 ewarn " Darwin patch set '${y}' failed to apply!" 405 [[ ${CHOST} == *"-darwin"* ]] && ewarn " Darwin patch set '${p}' failed to apply!"
332 ;; 406 ;;
333 esac 407 esac
334 fi 408 fi
335 done 409 done
336 410
339 ${do_reversedeps} == "no" && \ 413 ${do_reversedeps} == "no" && \
340 ${do_only_patches} == "no" && \ 414 ${do_only_patches} == "no" && \
341 ${deptoremove} == "" ]] 415 ${deptoremove} == "" ]]
342 then 416 then
343 ewarn "Cannot apply any patches, please file a bug about this" 417 ewarn "Cannot apply any patches, please file a bug about this"
344 break
345
346 # Sometimes ltmain.sh is in a subdirectory ...
347 if [[ ! -f ${x}/configure.in && ! -f ${x}/configure.ac ]] ; then
348 if [[ -f ${x}/../configure.in || -f ${x}/../configure.ac ]] ; then
349 cd "${x}"/../
350 fi
351 fi 418 die
352
353 if type -p libtoolize &> /dev/null ; then
354 ewarn "Cannot apply any patches, running libtoolize..."
355 libtoolize --copy --force
356 fi
357 cd "${x}"
358 break
359 fi 419 fi
360 fi 420 fi
361 421
362 [[ -f ${x}/libtool ]] && rm -f "${x}/libtool" 422 rm -f "${d}/libtool"
363 423
364 touch "${x}/.elibtoolized" 424 > "${d}/.elibtoolized"
365 done 425 done
366
367 cd "${start_dir}"
368} 426}
369 427
370uclibctoolize() { 428uclibctoolize() { die "Use elibtoolize"; }
371 ewarn "uclibctoolize() is depreciated, please just use elibtoolize()!" 429darwintoolize() { die "Use elibtoolize"; }
372 elibtoolize
373}
374
375darwintoolize() {
376 ewarn "darwintoolize() is depreciated, please just use elibtoolize()!"
377 elibtoolize
378}
379 430
380# char *VER_major(string) 431# char *VER_major(string)
381# 432#
382# Return the Major (X of X.Y.Z) version 433# Return the Major (X of X.Y.Z) version
383# 434#

Legend:
Removed from v.1.74  
changed lines
  Added in v.1.95

  ViewVC Help
Powered by ViewVC 1.1.20