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

Diff of /eclass/libtool.eclass

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

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

Legend:
Removed from v.1.83  
changed lines
  Added in v.1.100

  ViewVC Help
Powered by ViewVC 1.1.20