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

Diff of /eclass/libtool.eclass

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

Revision 1.23 Revision 1.41
1# Copyright 1999-2003 Gentoo Technologies, Inc. 1# Copyright 1999-2004 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.23 2003/04/08 11:34:57 azarah Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.41 2004/11/22 14:55:57 vapier Exp $
4# 4#
5# Author: Martin Schlemmer <azarah@gentoo.org> 5# Author: Martin Schlemmer <azarah@gentoo.org>
6# 6#
7# This eclass patches ltmain.sh distributed with libtoolized packages with the 7# This eclass patches ltmain.sh distributed with libtoolized packages with the
8# relink and portage patch 8# relink and portage patch among others
9 9
10ECLASS=libtool 10ECLASS="libtool"
11INHERITED="$INHERITED $ECLASS" 11INHERITED="${INHERITED} ${ECLASS}"
12 12
13# 2004.09.25 rac
14# i have verified that at least one package can use this eclass and
15# build properly even without libtool installed yet, probably using
16# the files in the distribution. eliminating this dependency fixes
17# bug 65209, which is a showstopper for people doing installs using
18# stageballs <3. if anybody decides to revert this, please attempt
19# to find an alternate way of resolving that bug at the same time.
20
13newdepend "!bootstrap? ( sys-devel/libtool )" 21#DEPEND="!bootstrap? ( sys-devel/libtool )"
14 22
15DESCRIPTION="Based on the ${ECLASS} eclass" 23DESCRIPTION="Based on the ${ECLASS} eclass"
16 24
17ELIBTOOL_VERSION=1.8.1 25ELIBTOOL_VERSION="2.0.1"
26
27
28ELT_PATCH_DIR="${PORTDIR}/eclass/ELT-patches"
29ELT_APPLIED_PATCHES=
30
31#
32# Returns all the directories containing ltmain.sh
33#
34ELT_find_ltmain_sh() {
35 local x=
36 local dirlist=
37
38 for x in $(find "${S}" -name 'ltmain.sh')
39 do
40 dirlist="${dirlist} ${x%/*}"
41 done
42
43 echo "${dirlist}"
44}
45
46#
47# See if we can apply $2 on $1, and if so, do it
48#
49ELT_try_and_apply_patch() {
50 local ret=0
51 local patch="$2"
52
53 # We only support patchlevel of 0 - why worry if its static patches?
54 if patch -p0 --dry-run $1 < ${patch} &>${T}/elibtool.log
55 then
56 einfo " Applying $(basename "$(dirname "${patch}")")-${patch##*/}.patch ..."
57 patch -p0 $1 < ${patch} &>${T}/elibtool.log
58 ret=$?
59 export ELT_APPLIED_PATCHES="${ELT_APPLIED_PATCHES} ${patch##*/}"
60 else
61 ret=1
62 fi
63
64 return ${ret}
65}
66
67#
68# Run through the patches in $2 and see if any
69# apply to $1 ...
70#
71ELT_walk_patches() {
72 local x=
73 local y=
74 local ret=1
75 local patch_dir=
76
77 if [ -n "$2" ]
78 then
79 if [ -d "${ELT_PATCH_DIR}/$2" ]
80 then
81 patch_dir="${ELT_PATCH_DIR}/$2"
82 else
83 return ${ret}
84 fi
85
86 for x in $(ls -d "${patch_dir}"/* 2>/dev/null)
87 do
88 if [ -n "${x}" -a -f "${x}" ]
89 then
90 # For --remove-internal-dep ...
91 if [ -n "$3" ]
92 then
93 # For replace @REM_INT_DEP@ with what was passed
94 # to --remove-internal-dep
95 sed -e "s|@REM_INT_DEP@|$3|g" ${x} > \
96 ${T}/$$.rem_int_deps.patch
97
98 x="${T}/$$.rem_int_deps.patch"
99 fi
100
101 if ELT_try_and_apply_patch "$1" "${x}"
102 then
103 ret=0
104 break
105 fi
106 fi
107 done
108 fi
109
110 return ${ret}
111}
18 112
19elibtoolize() { 113elibtoolize() {
20
21 local x="" 114 local x=
22 local y="" 115 local y=
23 local dopatch="no"
24 local dotest="yes"
25 local dorelink="yes"
26 local dotmp="yes"
27 local dosed="yes"
28 local doportage="yes"
29 local portage="no" 116 local do_portage="no"
30 local reversedeps="no" 117 local do_reversedeps="no"
31 local removeinternaldep="no" 118 local do_only_patches="no"
32 local deptoremove="" 119 local deptoremove=
33 local mylist="" 120 local my_dirlist=
121 local elt_patches="portage relink max_cmd_len sed test tmp"
122 local start_dir="${PWD}"
34 123
35 mylist="$(find_ltmain)" 124 my_dirlist="$(ELT_find_ltmain_sh)"
125
36 for x in ${*} 126 for x in "$@"
37 do 127 do
38 # Only apply portage patch, and dont "libtoolize --copy --force" 128 case "${x}" in
39 # if all patches fail. 129 "--portage")
40 if [ "${x}" = "--portage" ] 130 # Only apply portage patch, and don't
41 then 131 # 'libtoolize --copy --force' if all patches fail.
42 portage="yes" 132 do_portage="yes"
43 fi 133 ;;
134 "--reverse-deps")
44 # Apply the reverse-deps patch 135 # Apply the reverse-deps patch
45 #
46 # http://bugzilla.gnome.org/show_bug.cgi?id=75635 136 # http://bugzilla.gnome.org/show_bug.cgi?id=75635
47 if [ "${x}" = "--reverse-deps" ]
48 then
49 reversedeps="yes" 137 do_reversedeps="yes"
50 fi 138 elt_patches="${elt_patches} fix-relink"
51 if [ `echo ${x} | grep "^--remove-internal-dep="` ] 139 ;;
52 then 140 "--patch-only")
53 removeinternaldep="yes" 141 # Do not run libtoolize if none of the patches apply ..
54 deptoremove=`echo ${x} | sed -e 's/--remove-internal-dep=//'` 142 do_only_patches="yes"
55 fi 143 ;;
144 "^--remove-internal-dep="*)
145 # We will replace @REM_INT_DEP@ with what is needed
146 # in ELT_walk_patches() ...
147 deptoremove="$(echo "${x}" | sed -e 's|--remove-internal-dep=||')"
148
149 # Add the patch for this ...
150 [ -n "${deptoremove}" ] && elt_patches="${elt_patches} rem-int-dep"
151 ;;
152 "--shallow")
56 # Only patch the ltmain.sh in ${S} 153 # Only patch the ltmain.sh in ${S}
57 if [ "${x}" = "--shallow" ]
58 then
59 if [ -f ${S}/ltmain.sh ] 154 if [ -f "${S}/ltmain.sh" ]
60 then 155 then
61 mylist="${S}" 156 my_dirlist="${S}"
62 else 157 else
63 mylist="" 158 my_dirlist=
64 fi 159 fi
65 else 160 ;;
66 mylist="$(find_ltmain)" 161 "--no-uclibc")
162 NO_UCLIBCTOOLIZE=1
163 ;;
164 esac
165 done
166
167 if use ppc-macos ; then
168 glibtoolize --copy --force
169 darwintoolize
67 fi 170 fi
68 done
69 171
70 for x in ${mylist} 172 for x in ${my_dirlist}
71 do 173 do
174 local tmp="$(echo "${x}" | sed -e "s|${S}||")"
175 export ELT_APPLIED_PATCHES=
176
72 cd ${x} 177 cd ${x}
73 einfo "Working directory: ${x}..." 178 einfo "Patching \${S}$(echo "/${tmp}/ltmain.sh" | sed -e 's|//|/|g') ..."
74 dopatch="yes"
75 dotest="yes"
76 dorelink="yes"
77 dotmp="yes"
78 dosed="yes"
79 doportage="yes"
80 179
81 for y in test_patch relink_patch tmp_patch sed_patch portage_patch 180 for y in ${elt_patches}
82 do 181 do
83 if ! eval ${y} --test $>${T}/elibtool.log 182 local ret=0
183
184 case "${y}" in
185 "rem-int-dep")
186 ELT_walk_patches "${x}/ltmain.sh" "${y}" "${deptoremove}"
187 ret=$?
188 ;;
189 "fix-relink")
190 # Do not apply if we do not have the relink patch applied ...
191 if [ -n "$(grep 'inst_prefix_dir' "${x}/ltmain.sh")" ]
192 then
193 ELT_walk_patches "${x}/ltmain.sh" "${y}"
194 ret=$?
195 fi
196 ;;
197 "max_cmd_len")
198 # Do not apply if $max_cmd_len is not used ...
199 if [ -n "$(grep 'max_cmd_len' "${x}/ltmain.sh")" ]
200 then
201 ELT_walk_patches "${x}/ltmain.sh" "${y}"
202 ret=$?
203 fi
204 ;;
205 *)
206 ELT_walk_patches "${x}/ltmain.sh" "${y}"
207 ret=$?
208 ;;
209 esac
210
211 if [ "${ret}" -ne 0 ]
84 then 212 then
85 case ${y} in 213 case ${y} in
86 test_patch)
87 # non critical patch
88 dotest="no"
89 ;;
90 relink_patch) 214 "relink")
91 # critical patch, but could be applied 215 # Critical patch, but could be applied ...
92 if [ -z "$(grep -e "inst_prefix_dir" ltmain.sh)" ] && \ 216 if [ -z "$(grep 'inst_prefix_dir' "${x}/ltmain.sh")" ]
93 [ "${portage}" = "no" ]
94 then 217 then
95 dopatch="no" 218 ewarn " Could not apply relink.patch!"
96 fi
97 dorelink="no"
98 ;;
99 tmp_patch)
100 # non critical patch
101 dotmp="no"
102 ;;
103 sed_patch)
104 # non critical patch
105 dosed="no"
106 ;;
107 portage_patch)
108 # critical patch
109 if [ "${portage}" = "yes" ]
110 then
111 echo
112 eerror "Portage patch requested, but failed to apply!"
113 die
114 fi
115 dopatch="no"
116 doportage="no"
117 ;;
118 esac
119 fi
120 done
121
122# Only apply portage patch ... I think if other can apply, they should.
123# if [ "${portage}" = "yes" ]
124# then
125# dotest="no"
126# dorelink="no"
127# dotmp="no"
128# fi
129
130 for y in test_patch relink_patch tmp_patch sed_patch portage_patch
131 do
132 if [ "${dopatch}" = "yes" ]
133 then
134 case ${y} in
135 test_patch)
136 if [ "${dotest}" = "no" ]
137 then
138 continue
139 fi 219 fi
140 ;; 220 ;;
141 relink_patch) 221 "portage")
222 # Critical patch - for this one we abort, as it can really
223 # cause breakage without it applied!
142 if [ "${dorelink}" = "no" ] 224 if [ "${do_portage}" = "yes" ]
143 then 225 then
144 continue 226 # Stupid test to see if its already applied ...
145 fi 227 if [ -z "$(grep 'We do not want portage' "${x}/ltmain.sh")" ]
146 ;;
147 tmp_patch)
148 if [ "${dotmp}" = "no" ]
149 then 228 then
150 continue 229 echo
230 eerror "Portage patch requested, but failed to apply!"
231 die "Portage patch requested, but failed to apply!"
151 fi 232 fi
152 ;; 233 else
153 sed_patch) 234 ewarn " Could not apply portage.patch!"
154 if [ "${dosed}" = "no" ] 235 ewarn " Please verify that it is not needed."
155 then
156 continue
157 fi
158 ;;
159 portage_patch)
160 if [ "${doportage}" = "no" ]
161 then
162 continue
163 fi 236 fi
164 ;; 237 ;;
165 esac 238 esac
166 239 fi
167 einfo "Applying libtool-${y/_patch/}.patch..." 240
168 eval ${y} $>${T}/elibtool.log 241 if [ -z "${ELT_APPLIED_PATCHES}" ]
169 elif [ "${portage}" = "no" ] && [ "${reversedeps}" = "no" ] && [ "${removeinternaldep}" = "no" ]
170 then 242 then
171 # Sometimes ltmain.sh is in a subdirectory ... 243 if [ "${do_portage}" = "no" -a \
172 if [ ! -f ${x}/configure.in -a ! -f ${x}/configure.ac ] 244 "${do_reversedeps}" = "no" -a \
245 "${do_only_patches}" = "no" -a \
246 "${deptoremove}" = "" ]
173 then 247 then
248 # Sometimes ltmain.sh is in a subdirectory ...
174 if [ -f ${x}/../configure.in -o -f ${x}/../configure.ac ] 249 if [ ! -f ${x}/configure.in -a ! -f ${x}/configure.ac ]
175 then 250 then
251 if [ -f ${x}/../configure.in -o -f ${x}/../configure.ac ]
252 then
176 cd ${x}/../ 253 cd ${x}/../
254 fi
177 fi 255 fi
256
257 if which libtoolize &>/dev/null
258 then
259 ewarn "Cannot apply any patch, running libtoolize..."
260 libtoolize --copy --force
261 fi
262 cd ${x}
263 break
178 fi 264 fi
179
180 ewarn "Cannot apply any patch, running libtoolize..."
181 libtoolize --copy --force
182 cd ${x}
183 break
184 fi 265 fi
185 done 266 done
186
187 if [ "${reversedeps}" = "yes" ]
188 then
189 if eval reversedeps_patch --test $>${T}/libtool.foo
190 then
191 einfo "Applying libtool-reverse-deps.patch..."
192 eval reversedeps_patch $>${T}/libtool.foo
193 else
194 ewarn "Not applying libtool-reverse-deps.patch..."
195 fi
196 fi
197
198 if [ "${removeinternaldep}" = "yes" ]
199 then
200 if eval remove_internal_dep_patch $deptoremove --test $>${T}/libtool.foo
201 then
202 einfo "Applying remove-internal-dep.patch (removing $deptoremove)..."
203 eval remove_internal_dep_patch $deptoremove $>${T}/libtool.foo
204 else
205 ewarn "Not applying libtool-remove-internal-dep.patch..."
206 fi
207 fi
208 done 267 done
209 268
210 if [ -f libtool ] 269 if [ -f libtool ]
211 then 270 then
212 rm -f libtool 271 rm -f libtool
213 fi 272 fi
214 273
215 # We need to change the pwd back to $S, as we may be called in 274 cd "${start_dir}"
216 # src_compile()
217 cd ${S}
218}
219 275
220# 276 uclibctoolize
221# Returns all the directories containing ltmain.sh 277}
222# 278
223find_ltmain() { 279uclibctoolize() {
224 280 [ -n "${NO_UCLIBCTOOLIZE}" ] && return 0
281
282 local errmsg=""
283 [ "${PORTAGE_LIBC}" = "uClibc" ] \
284 && errmsg="PLEASE CHECK" \
285 || errmsg="Already patched"
286 local targets=""
225 local x="" 287 local x
226 local dirlist=""
227 288
228 for x in $(find ${S} -name 'ltmain.sh') 289 if [ -z "$@" ] ; then
229 do 290 targets="$(find ${S} -name configure -o -name ltconfig)"
230 dirlist="${dirlist} ${x%/*}"
231 done
232
233 echo "${dirlist}"
234}
235
236#
237# Various patches we want to apply.
238#
239# Contains: portage_patch
240# relink_patch
241# test_patch
242#
243portage_patch() {
244
245 local opts=""
246
247 if [ "${1}" = "--test" ]
248 then
249 opts="--force --dry-run"
250 fi 291 fi
251 292
252 patch ${opts} -p0 <<-"ENDPATCH" 293 einfo "Applying uClibc/libtool patches ..."
253 --- ltmain.sh.orig Wed Apr 3 01:19:37 2002 294 for x in ${targets} ; do
254 +++ ltmain.sh Sun May 26 19:50:52 2002 295 [ ! -s "${x}" ] && continue
255 @@ -3940,9 +3940,46 @@ 296 case $(basename "${x}") in
256 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 297 configure)
257 exit 1 298 if grep 'Transform linux' "${x}" >/dev/null ; then
258 fi 299 ebegin " Fixing \${S}${x/${S}}"
259 - newdependency_libs="$newdependency_libs $libdir/$name" 300 patch -p0 "${x}" "${ELT_PATCH_DIR}/uclibc/configure.patch" > /dev/null
260 + # We do not want portage's install root ($D) present. Check only for 301 eend $? "${errmsg} ${x}"
261 + # this if the .la is being installed.
262 + if test "$installed" = yes && test "$D"; then
263 + eval mynewdependency_lib="`echo "$libdir/$name" |sed -e "s:$D::g" -e 's://:/:g'`"
264 + else
265 + mynewdependency_lib="$libdir/$name"
266 + fi
267 + # Do not add duplicates
268 + if test "$mynewdependency_lib"; then
269 + if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"; then
270 + newdependency_libs="$newdependency_libs $mynewdependency_lib"
271 + fi
272 + fi
273 + ;;
274 + *)
275 + if test "$installed" = yes; then
276 + # Rather use S=WORKDIR if our version of portage supports it.
277 + # This is because some ebuild (gcc) do not use $S as buildroot.
278 + if test "$PWORKDIR"; then
279 + S="$PWORKDIR"
280 + fi
281 + # We do not want portage's build root ($S) present.
282 + if test -n "`echo $deplib |grep -e "$S"`" && test "$S"; then
283 + mynewdependency_lib=""
284 + # We do not want portage's install root ($D) present.
285 + elif test -n "`echo $deplib |grep -e "$D"`" && test "$D"; then
286 + eval mynewdependency_lib="`echo "$deplib" |sed -e "s:$D::g" -e 's://:/:g'`"
287 + else
288 + mynewdependency_lib="$deplib"
289 + fi
290 + else
291 + mynewdependency_lib="$deplib"
292 + fi
293 + # Do not add duplicates
294 + if test "$mynewdependency_lib"; then
295 + if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"; then
296 + newdependency_libs="$newdependency_libs $mynewdependency_lib"
297 + fi
298 + fi
299 ;;
300 - *) newdependency_libs="$newdependency_libs $deplib" ;;
301 esac
302 done
303 dependency_libs="$newdependency_libs"
304 @@ -3975,6 +4005,10 @@
305 case $host,$output,$installed,$module,$dlname in
306 *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
307 esac
308 + # Do not add duplicates
309 + if test "$installed" = yes && test "$D"; then
310 + install_libdir="`echo "$install_libdir" |sed -e "s:$D::g" -e 's://:/:g'`"
311 + fi
312 $echo > $output "\
313 # $outputname - a libtool library file
314 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
315 ENDPATCH
316}
317
318relink_patch() {
319
320 local opts=""
321 local retval=0
322
323 if [ "${1}" = "--test" ]
324 then
325 opts="--force --dry-run"
326 fi
327
328 patch ${opts} -p0 <<-"ENDPATCH"
329 --- ltmain.sh Sun Aug 12 18:08:05 2001
330 +++ ltmain-relinkable.sh Tue Aug 28 18:55:13 2001
331 @@ -827,6 +827,7 @@
332 linker_flags=
333 dllsearchpath=
334 lib_search_path=`pwd`
335 + inst_prefix_dir=
336
337 avoid_version=no
338 dlfiles=
339 @@ -959,6 +960,11 @@
340 prev=
341 continue
342 ;;
343 + inst_prefix)
344 + inst_prefix_dir="$arg"
345 + prev=
346 + continue
347 + ;;
348 release)
349 release="-$arg"
350 prev=
351 @@ -1167,6 +1173,11 @@
352 continue
353 ;;
354
355 + -inst-prefix-dir)
356 + prev=inst_prefix
357 + continue
358 + ;;
359 +
360 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
361 # so, if we see these flags be careful not to treat them like -L
362 -L[A-Z][A-Z]*:*)
363 @@ -2231,7 +2242,16 @@
364 if test "$hardcode_direct" = yes; then
365 add="$libdir/$linklib"
366 elif test "$hardcode_minus_L" = yes; then
367 - add_dir="-L$libdir"
368 + # Try looking first in the location we're being installed to.
369 + add_dir=
370 + if test -n "$inst_prefix_dir"; then
371 + case "$libdir" in
372 + [\\/]*)
373 + add_dir="-L$inst_prefix_dir$libdir"
374 + ;;
375 + esac
376 + fi
377 + add_dir="$add_dir -L$libdir"
378 add="-l$name"
379 elif test "$hardcode_shlibpath_var" = yes; then
380 case :$finalize_shlibpath: in
381 @@ -2241,7 +2261,16 @@
382 add="-l$name"
383 else
384 # We cannot seem to hardcode it, guess we'll fake it.
385 - add_dir="-L$libdir"
386 + # Try looking first in the location we're being installed to.
387 + add_dir=
388 + if test -n "$inst_prefix_dir"; then
389 + case "$libdir" in
390 + [\\/]*)
391 + add_dir="-L$inst_prefix_dir$libdir"
392 + ;;
393 + esac
394 + fi
395 + add_dir="$add_dir -L$libdir"
396 add="-l$name"
397 fi
398
399 @@ -4622,12 +4651,30 @@
400 dir="$dir$objdir"
401
402 if test -n "$relink_command"; then
403 + # Determine the prefix the user has applied to our future dir.
404 + inst_prefix_dir=`$echo "$destdir" | sed "s%$libdir\$%%"`
405 +
406 + # Don't allow the user to place us outside of our expected
407 + # location b/c this prevents finding dependent libraries that
408 + # are installed to the same prefix.
409 + if test "$inst_prefix_dir" = "$destdir"; then
410 + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
411 + exit 1
412 + fi
413 +
414 + if test -n "$inst_prefix_dir"; then
415 + # Stick the inst_prefix_dir data into the link command.
416 + relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
417 + else
418 + relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%%"`
419 + fi
420 +
421 $echo "$modename: warning: relinking \`$file'" 1>&2
422 $show "$relink_command"
423 if $run eval "$relink_command"; then :
424 else
425 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
426 - continue
427 + exit 1
428 fi
429 fi 302 fi
430
431 ENDPATCH
432
433 retval=$?
434
435 # This one dont apply clean to libtool-1.4.2a, so do it manually.
436 if [ "${1}" != "--test" ] && [ "${retval}" -eq 0 ]
437 then
438 cp ltmain.sh ltmain.sh.orig
439 sed -e 's:cd `pwd`; $SHELL $0 --mode=relink $libtool_args:cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@:' \
440 ltmain.sh.orig > ltmain.sh
441 rm -f ltmain.sh.orig
442 fi
443
444 return ${retval}
445}
446
447tmp_patch() {
448
449 local opts=""
450
451 if [ "${1}" = "--test" ]
452 then
453 opts="--force --dry-run"
454 fi
455
456 patch ${opts} -p0 <<-"ENDPATCH"
457 --- ltmain.sh Sun Aug 12 18:08:05 2001
458 +++ ltmain-relinkable.sh Tue Aug 28 18:55:13 2001
459 @@ -4782,7 +4829,11 @@
460 if test "$finalize" = yes && test -z "$run"; then
461 tmpdir="/tmp"
462 test -n "$TMPDIR" && tmpdir="$TMPDIR"
463 - tmpdir="$tmpdir/libtool-$$"
464 + tmpdir=`mktemp -d $tmpdir/libtool-XXXXXX 2> /dev/null`
465 + if test $? = 0 ; then :
466 + else
467 + tmpdir="$tmpdir/libtool-$$"
468 + fi
469 if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
470 else
471 $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
472 ENDPATCH
473}
474
475test_patch() {
476
477 local opts=""
478
479 if [ "${1}" = "--test" ]
480 then
481 opts="--force --dry-run"
482 fi
483
484 patch ${opts} -p0 <<-"ENDPATCH"
485 --- ./ltmain.sh Tue May 29 19:16:03 2001
486 +++ ./ltmain.sh Tue May 29 21:26:50 2001
487 @@ -459,7 +459,7 @@
488 pic_mode=default
489 ;;
490 esac
491 - if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
492 + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
493 # non-PIC code in shared libraries is not supported
494 pic_mode=default
495 fi
496 @@ -1343,7 +1343,7 @@
497 ;; 303 ;;
498 esac 304
499 for pass in $passes; do 305 ltconfig)
500 - if test $linkmode = prog; then 306 local ver="$(grep '^VERSION=' ${x})"
501 + if test "$linkmode" = prog; then 307 ver="${ver/VERSION=}"
502 # Determine which files to process 308 [ "${ver:0:3}" == "1.4" ] && ver="1.3" # 1.4 and 1.3 are compat
503 case $pass in 309 ebegin " Fixing \${S}${x/${S}}"
504 dlopen) 310 patch -p0 "${x}" "${ELT_PATCH_DIR}/uclibc/ltconfig-${ver:0:3}.patch" > /dev/null
505 @@ -1360,11 +1360,11 @@ 311 eend $? "${errmsg} ${x}"
506 found=no 312 ;;
507 case $deplib in 313 esac
508 -l*) 314 done
509 - if test $linkmode = oldlib && test $linkmode = obj; then 315}
510 + if test "$linkmode" = oldlib && test "$linkmode" = obj; then 316
511 $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 317darwintoolize() {
512 continue 318 local targets=""
513 fi 319 local x
514 - if test $pass = conv; then 320
515 + if test "$pass" = conv; then 321 if [ -z "$@" ] ; then
516 deplibs="$deplib $deplibs" 322 targets="$(find ${S} -name ltmain.sh -o -name ltconfig)"
517 continue 323 fi
518 fi 324
519 @@ -1384,7 +1384,7 @@ 325 einfo "Applying Darwin/libtool patches ..."
520 finalize_deplibs="$deplib $finalize_deplibs" 326 for x in ${targets} ; do
521 else 327 [ ! -s "${x}" ] && continue
522 deplibs="$deplib $deplibs" 328 case $(basename "${x}") in
523 - test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs" 329 ltmain.sh|ltconfig)
524 + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 330 local ver="$(grep '^VERSION=' ${x})"
525 fi 331 ver="${ver/VERSION=}"
526 continue 332 if [ "${ver:0:3}" == "1.4" -o "${ver:0:3}" == "1.5" ];
527 fi 333 then
528 @@ -1393,16 +1393,16 @@ 334 ver="1.3" # 1.4, 1.5 and 1.3 are compat
529 case $linkmode in
530 lib)
531 deplibs="$deplib $deplibs"
532 - test $pass = conv && continue
533 + test "$pass" = conv && continue
534 newdependency_libs="$deplib $newdependency_libs"
535 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
536 ;;
537 prog)
538 - if test $pass = conv; then
539 + if test "$pass" = conv; then
540 deplibs="$deplib $deplibs"
541 continue
542 fi
543 - if test $pass = scan; then
544 + if test "$pass" = scan; then
545 deplibs="$deplib $deplibs"
546 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
547 else
548 @@ -1417,7 +1417,7 @@
549 continue
550 ;; # -L
551 -R*)
552 - if test $pass = link; then
553 + if test "$pass" = link; then
554 dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
555 # Make sure the xrpath contains only unique directories.
556 case "$xrpath " in
557 @@ -1430,7 +1430,7 @@
558 ;;
559 *.la) lib="$deplib" ;;
560 *.$libext)
561 - if test $pass = conv; then
562 + if test "$pass" = conv; then
563 deplibs="$deplib $deplibs"
564 continue
565 fi
566 @@ -1451,7 +1451,7 @@
567 continue
568 ;;
569 prog)
570 - if test $pass != link; then
571 + if test "$pass" != link; then
572 deplibs="$deplib $deplibs"
573 else
574 compile_deplibs="$deplib $compile_deplibs"
575 @@ -1462,7 +1462,7 @@
576 esac # linkmode
577 ;; # *.$libext
578 *.lo | *.$objext)
579 - if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
580 + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
581 # If there is no dlopen support or we're linking statically,
582 # we need to preload.
583 newdlprefiles="$newdlprefiles $deplib"
584 @@ -1512,13 +1512,13 @@
585
586 if test "$linkmode,$pass" = "lib,link" ||
587 test "$linkmode,$pass" = "prog,scan" ||
588 - { test $linkmode = oldlib && test $linkmode = obj; }; then
589 + { test "$linkmode" = oldlib && test "$linkmode" = obj; }; then
590 # Add dl[pre]opened files of deplib
591 test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
592 test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
593 fi 335 fi
594 336
595 - if test $pass = conv; then 337 ebegin " Fixing \${S}${x/${S}}"
596 + if test "$pass" = conv; then 338 patch -p0 "${x}" "${ELT_PATCH_DIR}/darwin/$(basename "${x}")-${ver:0:3}.patch" > /dev/null
597 # Only check for convenience libraries 339 eend $? "PLEASE CHECK ${x}"
598 deplibs="$lib $deplibs" 340 ;;
599 if test -z "$libdir"; then 341 esac
600 @@ -1537,7 +1537,7 @@
601 esac
602 tmp_libs="$tmp_libs $deplib"
603 done
604 - elif test $linkmode != prog && test $linkmode != lib; then
605 + elif test "$linkmode" != prog && test "$linkmode" != lib; then
606 $echo "$modename: \`$lib' is not a convenience library" 1>&2
607 exit 1
608 fi
609 @@ -1555,7 +1555,7 @@
610 fi
611
612 # This library was specified with -dlopen.
613 - if test $pass = dlopen; then
614 + if test "$pass" = dlopen; then
615 if test -z "$libdir"; then
616 $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
617 exit 1
618 @@ -1604,7 +1604,7 @@
619 name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
620
621 # This library was specified with -dlpreopen.
622 - if test $pass = dlpreopen; then
623 + if test "$pass" = dlpreopen; then
624 if test -z "$libdir"; then
625 $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
626 exit 1
627 @@ -1623,7 +1623,7 @@
628
629 if test -z "$libdir"; then
630 # Link the convenience library
631 - if test $linkmode = lib; then
632 + if test "$linkmode" = lib; then
633 deplibs="$dir/$old_library $deplibs"
634 elif test "$linkmode,$pass" = "prog,link"; then
635 compile_deplibs="$dir/$old_library $compile_deplibs"
636 @@ -1634,7 +1634,7 @@
637 continue
638 fi
639
640 - if test $linkmode = prog && test $pass != link; then
641 + if test "$linkmode" = prog && test "$pass" != link; then
642 newlib_search_path="$newlib_search_path $ladir"
643 deplibs="$lib $deplibs"
644
645 @@ -1671,7 +1671,7 @@
646 # Link against this shared library
647
648 if test "$linkmode,$pass" = "prog,link" ||
649 - { test $linkmode = lib && test $hardcode_into_libs = yes; }; then
650 + { test "$linkmode" = lib && test "$hardcode_into_libs" = yes; }; then
651 # Hardcode the library path.
652 # Skip directories that are in the system default run-time
653 # search path.
654 @@ -1693,7 +1693,7 @@
655 esac
656 ;;
657 esac
658 - if test $linkmode = prog; then
659 + if test "$linkmode" = prog; then
660 # We need to hardcode the library path
661 if test -n "$shlibpath_var"; then
662 # Make sure the rpath contains only unique directories.
663 @@ -1777,7 +1777,7 @@
664 linklib=$newlib
665 fi # test -n $old_archive_from_expsyms_cmds
666
667 - if test $linkmode = prog || test "$mode" != relink; then
668 + if test "$linkmode" = prog || test "$mode" != relink; then
669 add_shlibpath=
670 add_dir=
671 add=
672 @@ -1826,7 +1826,7 @@
673 *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
674 esac
675 fi
676 - if test $linkmode = prog; then
677 + if test "$linkmode" = prog; then
678 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
679 test -n "$add" && compile_deplibs="$add $compile_deplibs"
680 else
681 @@ -1843,7 +1843,7 @@
682 fi
683 fi
684
685 - if test $linkmode = prog || test "$mode" = relink; then
686 + if test "$linkmode" = prog || test "$mode" = relink; then
687 add_shlibpath=
688 add_dir=
689 add=
690 @@ -1865,7 +1865,7 @@
691 add="-l$name"
692 fi
693
694 - if test $linkmode = prog; then
695 + if test "$linkmode" = prog; then
696 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
697 test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
698 else
699 @@ -1873,7 +1873,7 @@
700 test -n "$add" && deplibs="$add $deplibs"
701 fi
702 fi
703 - elif test $linkmode = prog; then
704 + elif test "$linkmode" = prog; then
705 if test "$alldeplibs" = yes &&
706 { test "$deplibs_check_method" = pass_all ||
707 { test "$build_libtool_libs" = yes &&
708 @@ -1932,9 +1932,9 @@
709 fi
710 fi # link shared/static library?
711
712 - if test $linkmode = lib; then
713 + if test "$linkmode" = lib; then
714 if test -n "$dependency_libs" &&
715 - { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
716 + { test "$hardcode_into_libs" != yes || test $build_old_libs = yes ||
717 test $link_static = yes; }; then
718 # Extract -R from dependency_libs
719 temp_deplibs=
720 @@ -1964,7 +1964,7 @@
721 tmp_libs="$tmp_libs $deplib"
722 done
723
724 - if test $link_all_deplibs != no; then
725 + if test "$link_all_deplibs" != no; then
726 # Add the search paths of all dependency libraries
727 for deplib in $dependency_libs; do
728 case $deplib in
729 @@ -2007,15 +2007,15 @@
730 fi # link_all_deplibs != no
731 fi # linkmode = lib
732 done # for deplib in $libs
733 - if test $pass = dlpreopen; then
734 + if test "$pass" = dlpreopen; then
735 # Link the dlpreopened libraries before other libraries
736 for deplib in $save_deplibs; do
737 deplibs="$deplib $deplibs"
738 done 342 done
739 fi
740 - if test $pass != dlopen; then
741 - test $pass != scan && dependency_libs="$newdependency_libs"
742 - if test $pass != conv; then
743 + if test "$pass" != dlopen; then
744 + test "$pass" != scan && dependency_libs="$newdependency_libs"
745 + if test "$pass" != conv; then
746 # Make sure lib_search_path contains only unique directories.
747 lib_search_path=
748 for dir in $newlib_search_path; do
749 @@ -2073,7 +2073,7 @@
750 deplibs=
751 fi
752 done # for pass
753 - if test $linkmode = prog; then
754 + if test "$linkmode" = prog; then
755 dlfiles="$newdlfiles"
756 dlprefiles="$newdlprefiles"
757 fi
758 @@ -2410,7 +2410,7 @@
759 ;;
760 *)
761 # Add libc to deplibs on all other systems if necessary.
762 - if test $build_libtool_need_lc = "yes"; then
763 + if test "$build_libtool_need_lc" = "yes"; then
764 deplibs="$deplibs -lc"
765 fi
766 ;;
767 @@ -2683,7 +2683,7 @@
768
769 # Test again, we may have decided not to build it any more
770 if test "$build_libtool_libs" = yes; then
771 - if test $hardcode_into_libs = yes; then
772 + if test "$hardcode_into_libs" = yes; then
773 # Hardcode the library paths
774 hardcode_libdirs=
775 dep_rpath=
776 ENDPATCH
777} 343}
778
779reversedeps_patch() {
780
781 local opts=""
782
783 if [ "${1}" = "--test" ]
784 then
785 opts="--force --dry-run"
786 fi
787
788 patch ${opts} -p0 <<-"ENDPATCH"
789 --- ltmain.sh.orig Sat Mar 23 22:48:45 2002
790 +++ ltmain.sh Sat Mar 23 22:45:38 2002
791 @@ -1553,6 +1553,8 @@
792 convenience="$convenience $ladir/$objdir/$old_library"
793 old_convenience="$old_convenience $ladir/$objdir/$old_library"
794 tmp_libs=
795 + # PKGW
796 + dependency_libs=
797 for deplib in $dependency_libs; do
798 deplibs="$deplib $deplibs"
799 case "$tmp_libs " in
800 @@ -1668,6 +1670,8 @@
801 fi
802
803 tmp_libs=
804 + #PKGW
805 + dependency_libs=
806 for deplib in $dependency_libs; do
807 case $deplib in
808 -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
809 @@ -2081,7 +2085,7 @@
810 -L*)
811 case " $tmp_libs " in
812 *" $deplib "*) ;;
813 - *) tmp_libs="$tmp_libs $deplib" ;;
814 + *) tmp_libs="$deplib $tmp_libs" ;;
815 esac
816 ;;
817 *) tmp_libs="$tmp_libs $deplib" ;;
818 ENDPATCH
819}
820
821remove_internal_dep_patch() {
822 local opts=""
823
824 if [ "${2}" = "--test" ]
825 then
826 opts="--force --dry-run"
827 fi
828
829 patch ${opts} -p0 <<-ENDPATCH
830 --- ltmain.sh.orig 2002-11-01 19:56:50.000000000 -0600
831 +++ ltmain.sh 2002-11-01 19:57:03.000000000 -0600
832 @@ -4551,6 +4551,8 @@
833 if test "\$installed" = yes && test "\$D"; then
834 install_libdir="\`echo "\$install_libdir" |sed -e "s:\$D::g" -e 's://:/:g'\`"
835 fi
836 + # Removing $1 from dependency_libs in .la
837 + dependency_libs=\`echo \$dependency_libs | \$Xsed -e 's%\([^ ]*lib${1}\.\(so\|la\|a\)\)\|\(-l${1}\)%%g'\`
838 \$echo > \$output "\\
839 # \$outputname - a libtool library file
840 # Generated by \$PROGRAM - GNU \$PACKAGE \$VERSION\$TIMESTAMP
841 ENDPATCH
842}
843
844sed_patch() {
845
846 local opts=""
847
848 if [ "${1}" = "--test" ]
849 then
850 opts="--force --dry-run"
851 fi
852
853 patch ${opts} -p1 <<-"ENDPATCH"
854 --- libtool-1.4.3/ltmain.sh.ltmain-SED 2003-02-13 14:54:24.000000000 +0100
855 +++ libtool-1.4.3/ltmain.sh 2003-02-13 15:24:49.000000000 +0100
856 @@ -48,6 +48,9 @@ EOF
857 exit 0
858 fi
859
860 +# define SED for historic ltconfig's generated by Libtool 1.3
861 +test -z "$SED" && SED=sed
862 +
863 # The name of this program.
864 progname=`$echo "$0" | ${SED} 's%^.*/%%'`
865 modename="$progname"
866 ENDPATCH
867}
868

Legend:
Removed from v.1.23  
changed lines
  Added in v.1.41

  ViewVC Help
Powered by ViewVC 1.1.20