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

Diff of /eclass/libtool.eclass

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

Revision 1.6 Revision 1.83
1#!/bin/bash 1# Copyright 1999-2007 Gentoo Foundation
2# Copyright 1999-2002 Gentoo Technologies, Inc.
3# Distributed under the terms of the GNU General Public License, v2 or later 2# Distributed under the terms of the GNU General Public License v2
4# Author: Martin Schlemmer <azarah@gentoo.org>
5# $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.6 2002/06/18 08:43:28 azarah Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.83 2009/05/03 20:03:10 loki_val Exp $
4#
5# Maintainer: base-system@gentoo.org
6#
6# This eclass patches ltmain.sh distributed with libtoolized packages with the 7# This eclass patches ltmain.sh distributed with libtoolized packages with the
7# relink and portage patch 8# relink and portage patch among others
8ECLASS=libtool 9#
9newdepend sys-devel/libtool 10# 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
12# requires a regeneration of the main autotool files in order to work properly.
10 13
11DESCRIPTION="Based on the ${ECLASS} eclass" 14DESCRIPTION="Based on the ${ECLASS} eclass"
12 15
16ELIBTOOL_VERSION="2.0.2"
17
18inherit 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
38#
39# See if we can apply $2 on $1, and if so, do it
40#
41ELT_try_and_apply_patch() {
42 local ret=0
43 local file=$1
44 local patch=$2
45
46 # We only support patchlevel of 0 - why worry if its static patches?
47 if patch -p0 --dry-run "${file}" "${patch}" &> "${T}/elibtool.log" ; then
48 einfo " Applying $(basename "$(dirname "${patch}")")-${patch##*/}.patch ..."
49 patch -p0 -g0 --no-backup-if-mismatch "${file}" "${patch}" \
50 &> "${T}/elibtool.log"
51 ret=$?
52 export ELT_APPLIED_PATCHES="${ELT_APPLIED_PATCHES} ${patch##*/}"
53 else
54 ret=1
55 fi
56
57 return "${ret}"
58}
59
60#
61# Get string version of ltmain.sh or ltconfig (passed as $1)
62#
63ELT_libtool_version() {
64 local ltmain_sh=$1
65 local version=
66
67 version=$(eval $(grep -e '^[[:space:]]*VERSION=' "${ltmain_sh}"); \
68 echo "${VERSION}")
69 [[ -z ${version} ]] && version="0"
70
71 echo "${version}"
72}
73
74#
75# Run through the patches in $2 and see if any
76# apply to $1 ...
77#
78ELT_walk_patches() {
79 local x=
80 local y=
81 local ret=1
82 local file=$1
83 local patch_set=$2
84 local patch_dir=
85 local rem_int_dep=$3
86
87 if [[ -n ${patch_set} ]] ; then
88 if [[ -d ${ELT_PATCH_DIR}/${patch_set} ]] ; then
89 patch_dir="${ELT_PATCH_DIR}/${patch_set}"
90 else
91 return "${ret}"
92 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
113 fi
114
115 return "${ret}"
116}
13 117
14elibtoolize() { 118elibtoolize() {
15
16 local x="" 119 local x=
17 local y="" 120 local y=
18 local dopatch="no"
19 local dotest="yes"
20 local dorelink="yes"
21 local doportage="yes"
22 local portage="no" 121 local do_portage="no"
122 local do_reversedeps="no"
123 local do_only_patches="no"
124 local do_uclibc="yes"
125 local deptoremove=
23 local mylist="" 126 local my_dirlist=
127 local elt_patches="install-sh ltmain portage relink max_cmd_len sed test tmp cross as-needed"
128 local start_dir=${PWD}
24 129
25 mylist="$(find_ltmain)" 130 my_dirlist=$(ELT_find_ltmain_sh)
26 # Only apply portage patch, and dont "libtoolize --copy --force" 131
27 # if all patches fail. 132 for x in "$@" ; do
28 for x in ${*} 133 case "${x}" in
29 do 134 "--portage")
30 if [ "${x}" = "--portage" ] 135 # Only apply portage patch, and don't
31 then 136 # 'libtoolize --copy --force' if all patches fail.
32 portage="yes" 137 do_portage="yes"
33 fi 138 ;;
139 "--reverse-deps")
140 # Apply the reverse-deps patch
141 # http://bugzilla.gnome.org/show_bug.cgi?id=75635
142 do_reversedeps="yes"
143 elt_patches="${elt_patches} fix-relink"
144 ;;
145 "--patch-only")
146 # Do not run libtoolize if none of the patches apply ..
147 do_only_patches="yes"
148 ;;
149 "^--remove-internal-dep="*)
150 # We will replace @REM_INT_DEP@ with what is needed
151 # in ELT_walk_patches() ...
152 deptoremove=$(echo "${x}" | sed -e 's|--remove-internal-dep=||')
153
154 # Add the patch for this ...
155 [[ -n ${deptoremove} ]] && elt_patches="${elt_patches} rem-int-dep"
156 ;;
157 "--shallow")
34 # Only patch the ltmain.sh in ${S} 158 # Only patch the ltmain.sh in ${S}
35 if [ "${x}" = "--shallow" ]
36 then
37 if [ -f ${S}/ltmain.sh ] 159 if [[ -f ${S}/ltmain.sh ]] ; then
38 then
39 mylist="${S}" 160 my_dirlist=${S}
40 else 161 else
41 mylist="" 162 my_dirlist=
42 fi 163 fi
43 else 164 ;;
44 mylist="$(find_ltmain)" 165 "--no-uclibc")
45 fi 166 do_uclibc="no"
167 ;;
168 *)
169 eerror "Invalid elibtoolize option: ${x}"
170 die "elibtoolize called with ${x} ??"
171 esac
46 done 172 done
47 173
174 [[ ${do_uclibc} == "yes" ]] && \
175 elt_patches="${elt_patches} uclibc-conf uclibc-ltconf"
176
177 [[ ${CHOST} == *"-freebsd"* ]] && \
178 elt_patches="${elt_patches} fbsd-conf fbsd-ltconf"
179
180 [[ ${CHOST} == *"-darwin"* ]] && \
181 elt_patches="${elt_patches} darwin-ltconf darwin-ltmain"
182
48 for x in ${mylist} 183 for x in ${my_dirlist} ; do
49 do 184 local tmp=$(echo "${x}" | sed -e "s|${WORKDIR}||")
185 export ELT_APPLIED_PATCHES=
186 export ELT_LTMAIN_SH="${x}/ltmain.sh"
187
188 [[ -f ${x}/.elibtoolized ]] && continue
189
50 cd ${x} 190 cd ${x}
51 einfo "Working directory: ${x}..." 191 einfo "Running elibtoolize in: $(echo "/${tmp}" | sed -e 's|//|/|g; s|^/||')"
52 dopatch="yes"
53 dotest="yes"
54 dorelink="yes"
55 doportage="yes"
56 192
57 for y in test_patch relink_patch portage_patch 193 for y in ${elt_patches} ; do
58 do 194 local ret=0
59 if ! eval ${y} --test $>${T}/libtool.foo 195
60 then 196 case "${y}" in
197 "portage")
198 # Stupid test to see if its already applied ...
199 if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]] ; then
200 ELT_walk_patches "${x}/ltmain.sh" "${y}"
201 ret=$?
202 fi
203 ;;
204 "rem-int-dep")
205 ELT_walk_patches "${x}/ltmain.sh" "${y}" "${deptoremove}"
206 ret=$?
207 ;;
208 "fix-relink")
209 # Do not apply if we do not have the relink patch applied ...
210 if [[ -n $(grep 'inst_prefix_dir' "${x}/ltmain.sh") ]] ; then
211 ELT_walk_patches "${x}/ltmain.sh" "${y}"
212 ret=$?
213 fi
214 ;;
215 "max_cmd_len")
216 # Do not apply if $max_cmd_len is not used ...
217 if [[ -n $(grep 'max_cmd_len' "${x}/ltmain.sh") ]] ; then
218 ELT_walk_patches "${x}/ltmain.sh" "${y}"
219 ret=$?
220 fi
221 ;;
222 "as-needed")
223 ELT_walk_patches "${x}/ltmain.sh" "${y}"
224 ret=$?
225 ;;
226 "uclibc-conf")
227 if [[ -e ${x}/configure && \
228 -n $(grep 'Transform linux' "${x}/configure") ]] ; then
229 ELT_walk_patches "${x}/configure" "${y}"
230 ret=$?
231 # ltmain.sh and co might be in a subdirectory ...
232 elif [[ ! -e ${x}/configure && -e ${x}/../configure && \
233 -n $(grep 'Transform linux' "${x}/../configure") ]] ; then
234 ELT_walk_patches "${x}/../configure" "${y}"
235 ret=$?
236 fi
237 ;;
238 "uclibc-ltconf")
239 # Newer libtoolize clears ltconfig, as not used anymore
240 if [[ -s ${x}/ltconfig ]] ; then
241 ELT_walk_patches "${x}/ltconfig" "${y}"
242 ret=$?
243 fi
244 ;;
245 "fbsd-conf")
246 if [[ -e ${x}/configure && \
247 -n $(grep 'version_type=freebsd-' "${x}/configure") ]] ; then
248 ELT_walk_patches "${x}/configure" "${y}"
249 ret=$?
250 # ltmain.sh and co might be in a subdirectory ...
251 elif [[ ! -e ${x}/configure && -e ${x}/../configure && \
252 -n $(grep 'version_type=freebsd-' "${x}/../configure") ]] ; then
253 ELT_walk_patches "${x}/../configure" "${y}"
254 ret=$?
255 fi
256 ;;
257 "fbsd-ltconf")
258 if [[ -s ${x}/ltconfig ]] ; then
259 ELT_walk_patches "${x}/ltconfig" "${y}"
260 ret=$?
261 fi
262 ;;
263 "darwin-ltconf")
264 # Newer libtoolize clears ltconfig, as not used anymore
265 if [[ -s ${x}/ltconfig ]] ; then
266 ELT_walk_patches "${x}/ltconfig" "${y}"
267 ret=$?
268 fi
269 ;;
270 "install-sh")
271 ELT_walk_patches "${x}/install-sh" "${y}"
272 ret=$?
273 ;;
274 "cross")
275 if tc-is-cross-compiler ; then
276 ELT_walk_patches "${x}/ltmain.sh" "${y}"
277 ret=$?
278 fi
279 ;;
280 *)
281 ELT_walk_patches "${x}/ltmain.sh" "${y}"
282 ret=$?
283 ;;
284 esac
285
286 if [[ ${ret} -ne 0 ]] ; then
61 case ${y} in 287 case ${y} in
62 test_patch) 288 "relink")
63 # non critical patch 289 local version=$(ELT_libtool_version "${x}/ltmain.sh")
64 dotest="no" 290 # Critical patch, but could be applied ...
291 # FIXME: Still need a patch for ltmain.sh > 1.4.0
292 if [[ -z $(grep 'inst_prefix_dir' "${x}/ltmain.sh") && \
293 $(VER_to_int "${version}") -ge $(VER_to_int "1.4.0") ]] ; then
294 ewarn " Could not apply relink.patch!"
295 fi
65 ;; 296 ;;
66 relink_patch) 297 "portage")
67 # critical patch, but could be applied 298 # Critical patch - for this one we abort, as it can really
68 if [ -z "$(grep -e "inst_prefix_dir" ltmain.sh)" ] && \ 299 # cause breakage without it applied!
69 [ "${portage}" = "no" ] 300 if [[ ${do_portage} == "yes" ]] ; then
70 then 301 # Stupid test to see if its already applied ...
71 dopatch="no" 302 if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]] ; then
303 echo
304 eerror "Portage patch requested, but failed to apply!"
305 eerror "Please bug azarah or vapier to add proper patch."
306 die "Portage patch requested, but failed to apply!"
307 fi
308 else
309 if [[ -n $(grep 'We do not want portage' "${x}/ltmain.sh") ]] ; then
310 # ewarn " Portage patch seems to be already applied."
311 # ewarn " Please verify that it is not needed."
312 :
313 else
314 local version=$( \
315 eval $(grep -e '^[[:space:]]*VERSION=' "${x}/ltmain.sh"); \
316 echo "${VERSION}")
317
318 echo
319 eerror "Portage patch failed to apply (ltmain.sh version ${version})!"
320 eerror "Please bug azarah or vapier to add proper patch."
321 die "Portage patch failed to apply!"
322 fi
323 # We do not want to run libtoolize ...
324 ELT_APPLIED_PATCHES="portage"
72 fi 325 fi
73 dorelink="no"
74 ;; 326 ;;
75 portage_patch) 327 "uclibc-"*)
76 # critical patch 328 [[ ${CHOST} == *"-uclibc" ]] && \
77 if [ "${portage}" = "yes" ] 329 ewarn " uClibc patch set '${y}' failed to apply!"
78 then 330 ;;
79 echo 331 "fbsd-"*)
80 eerror "Portage patch requested, but failed to apply!" 332 if [[ ${CHOST} == *"-freebsd"* ]] ; then
333 if [[ -z $(grep 'Handle Gentoo/FreeBSD as it was Linux' \
334 "${x}/configure" "${x}/../configure" 2>/dev/null) ]]; then
335 eerror " FreeBSD patch set '${y}' failed to apply!"
336 die "FreeBSD patch set '${y}' failed to apply!"
81 die 337 fi
82 fi 338 fi
83 dopatch="no" 339 ;;
84 doportage="no" 340 "darwin-"*)
341 [[ ${CHOST} == *"-darwin"* ]] && \
342 ewarn " Darwin patch set '${y}' failed to apply!"
85 ;; 343 ;;
86 esac 344 esac
87 fi 345 fi
88 done 346 done
89 347
90 for y in test_patch relink_patch portage_patch 348 if [[ -z ${ELT_APPLIED_PATCHES} ]] ; then
91 do 349 if [[ ${do_portage} == "no" && \
92 if [ "${dopatch}" = "yes" ] 350 ${do_reversedeps} == "no" && \
351 ${do_only_patches} == "no" && \
352 ${deptoremove} == "" ]]
93 then 353 then
94 case ${y} in 354 ewarn "Cannot apply any patches, please file a bug about this"
95 test_patch) 355 die
96 if [ "${dotest}" = "no" ]
97 then
98 continue
99 fi
100 ;;
101 relink_patch)
102 if [ "${dorelink}" = "no" ]
103 then
104 continue
105 fi
106 ;;
107 portage_patch)
108 if [ "${doportage}" = "no" ]
109 then
110 continue
111 fi
112 ;;
113 esac
114
115 einfo "Applying libtool-${y/_patch/}.patch..."
116 eval ${y} $>${T}/libtool.foo
117 elif [ "${portage}" = "no" ]
118 then
119 libtoolize --copy --force
120 break
121 fi 356 fi
122 done 357 fi
358
359 [[ -f ${x}/libtool ]] && rm -f "${x}/libtool"
360
361 >> "${x}/.elibtoolized"
123 done 362 done
124 363
125 # We need to change the pwd back to $S, as we may be called in 364 cd "${start_dir}"
126 # src_compile()
127 cd ${S}
128} 365}
129 366
130# 367uclibctoolize() {
131# Returns all the directories containing ltmain.sh 368 ewarn "uclibctoolize() is deprecated, please just use elibtoolize()!"
132# 369 elibtoolize
133find_ltmain() {
134
135 local x=""
136 local dirlist=""
137
138 for x in $(find ${S} -name 'ltmain.sh')
139 do
140 dirlist="${dirlist} ${x%/*}"
141 done
142
143 echo "${dirlist}"
144} 370}
145 371
146# 372darwintoolize() {
147# Various patches we want to apply. 373 ewarn "darwintoolize() is deprecated, please just use elibtoolize()!"
148# 374 elibtoolize
149# Contains: portage_patch 375}
150# relink_patch
151# test_patch
152#
153portage_patch() {
154 376
155 local opts="" 377# char *VER_major(string)
378#
379# Return the Major (X of X.Y.Z) version
380#
381VER_major() {
382 [[ -z $1 ]] && return 1
156 383
157 if [ "${1}" = "--test" ] 384 local VER=$@
158 then 385 echo "${VER%%[^[:digit:]]*}"
159 opts="--force --dry-run" 386}
387
388# char *VER_minor(string)
389#
390# Return the Minor (Y of X.Y.Z) version
391#
392VER_minor() {
393 [[ -z $1 ]] && return 1
394
395 local VER=$@
396 VER=${VER#*.}
397 echo "${VER%%[^[:digit:]]*}"
398}
399
400# char *VER_micro(string)
401#
402# Return the Micro (Z of X.Y.Z) version.
403#
404VER_micro() {
405 [[ -z $1 ]] && return 1
406
407 local VER=$@
408 VER=${VER#*.*.}
409 echo "${VER%%[^[:digit:]]*}"
410}
411
412# int VER_to_int(string)
413#
414# Convert a string type version (2.4.0) to an int (132096)
415# for easy compairing or versions ...
416#
417VER_to_int() {
418 [[ -z $1 ]] && return 1
419
420 local VER_MAJOR=$(VER_major "$1")
421 local VER_MINOR=$(VER_minor "$1")
422 local VER_MICRO=$(VER_micro "$1")
423 local VER_int=$(( VER_MAJOR * 65536 + VER_MINOR * 256 + VER_MICRO ))
424
425 # We make version 1.0.0 the minimum version we will handle as
426 # a sanity check ... if its less, we fail ...
427 if [[ ${VER_int} -ge 65536 ]] ; then
428 echo "${VER_int}"
429 return 0
160 fi 430 fi
161 431
162 patch ${opts} -p0 <<-"ENDPATCH" 432 echo 1
163 --- ltmain.sh.orig Wed Apr 3 01:19:37 2002 433 return 1
164 +++ ltmain.sh Sun May 26 19:50:52 2002
165 @@ -3940,9 +3940,39 @@
166 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
167 exit 1
168 fi
169 - newdependency_libs="$newdependency_libs $libdir/$name"
170 + # We do not want portage's install root ($D) present. Check only for
171 + # this if the .la is being installed.
172 + if test "$installed" = yes; then
173 + mynewdependency_lib="`echo "$libdir/$name" |sed -e "s:${D}::g" -e 's://:/:g'`"
174 + else
175 + mynewdependency_lib="$libdir/$name"
176 + fi
177 + # Do not add duplicates
178 + if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"
179 + then
180 + newdependency_libs="$newdependency_libs $mynewdependency_lib"
181 + fi
182 + ;;
183 + *)
184 + if test "$installed" = yes; then
185 + # We do not want portage's build root ($S} present.
186 + if test -n "`echo $deplib |grep -e "${S}"`"
187 + then
188 + newdependency_libs=""
189 + # We do not want portage's install root ($D) present.
190 + elif test -n "`echo $deplib |grep -e "${D}"`"
191 + then
192 + mynewdependency_lib="`echo "$deplib" |sed -e "s:${D}::g" -e 's://:/:g'`"
193 + fi
194 + else
195 + mynewdependency_lib="$deplib"
196 + fi
197 + # Do not add duplicates
198 + if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"
199 + then
200 + newdependency_libs="$newdependency_libs $mynewdependency_lib"
201 + fi
202 ;;
203 - *) newdependency_libs="$newdependency_libs $deplib" ;;
204 esac
205 done
206 dependency_libs="$newdependency_libs"
207 @@ -3975,6 +4005,10 @@
208 case $host,$output,$installed,$module,$dlname in
209 *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
210 esac
211 + # Do not add duplicates
212 + if test "$installed" = yes; then
213 + install_libdir="`echo "$install_libdir" |sed -e "s:${D}::g" -e 's://:/:g'`"
214 + fi
215 $echo > $output "\
216 # $outputname - a libtool library file
217 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
218 ENDPATCH
219} 434}
220
221relink_patch() {
222
223 local opts=""
224 local retval=0
225
226 if [ "${1}" = "--test" ]
227 then
228 opts="--force --dry-run"
229 fi
230
231 patch ${opts} -p0 <<-"ENDPATCH"
232 --- ltmain.sh Sun Aug 12 18:08:05 2001
233 +++ ltmain-relinkable.sh Tue Aug 28 18:55:13 2001
234 @@ -827,6 +827,7 @@
235 linker_flags=
236 dllsearchpath=
237 lib_search_path=`pwd`
238 + inst_prefix_dir=
239
240 avoid_version=no
241 dlfiles=
242 @@ -959,6 +960,11 @@
243 prev=
244 continue
245 ;;
246 + inst_prefix)
247 + inst_prefix_dir="$arg"
248 + prev=
249 + continue
250 + ;;
251 release)
252 release="-$arg"
253 prev=
254 @@ -1167,6 +1173,11 @@
255 continue
256 ;;
257
258 + -inst-prefix-dir)
259 + prev=inst_prefix
260 + continue
261 + ;;
262 +
263 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
264 # so, if we see these flags be careful not to treat them like -L
265 -L[A-Z][A-Z]*:*)
266 @@ -2231,7 +2242,16 @@
267 if test "$hardcode_direct" = yes; then
268 add="$libdir/$linklib"
269 elif test "$hardcode_minus_L" = yes; then
270 - add_dir="-L$libdir"
271 + # Try looking first in the location we're being installed to.
272 + add_dir=
273 + if test -n "$inst_prefix_dir"; then
274 + case "$libdir" in
275 + [\\/]*)
276 + add_dir="-L$inst_prefix_dir$libdir"
277 + ;;
278 + esac
279 + fi
280 + add_dir="$add_dir -L$libdir"
281 add="-l$name"
282 elif test "$hardcode_shlibpath_var" = yes; then
283 case :$finalize_shlibpath: in
284 @@ -2241,7 +2261,16 @@
285 add="-l$name"
286 else
287 # We cannot seem to hardcode it, guess we'll fake it.
288 - add_dir="-L$libdir"
289 + # Try looking first in the location we're being installed to.
290 + add_dir=
291 + if test -n "$inst_prefix_dir"; then
292 + case "$libdir" in
293 + [\\/]*)
294 + add_dir="-L$inst_prefix_dir$libdir"
295 + ;;
296 + esac
297 + fi
298 + add_dir="$add_dir -L$libdir"
299 add="-l$name"
300 fi
301
302 @@ -4622,12 +4651,30 @@
303 dir="$dir$objdir"
304
305 if test -n "$relink_command"; then
306 + # Determine the prefix the user has applied to our future dir.
307 + inst_prefix_dir=`$echo "$destdir" | sed "s%$libdir\$%%"`
308 +
309 + # Don't allow the user to place us outside of our expected
310 + # location b/c this prevents finding dependent libraries that
311 + # are installed to the same prefix.
312 + if test "$inst_prefix_dir" = "$destdir"; then
313 + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
314 + exit 1
315 + fi
316 +
317 + if test -n "$inst_prefix_dir"; then
318 + # Stick the inst_prefix_dir data into the link command.
319 + relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
320 + else
321 + relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%%"`
322 + fi
323 +
324 $echo "$modename: warning: relinking \`$file'" 1>&2
325 $show "$relink_command"
326 if $run eval "$relink_command"; then :
327 else
328 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
329 - continue
330 + exit 1
331 fi
332 fi
333
334 @@ -4782,7 +4829,11 @@
335 if test "$finalize" = yes && test -z "$run"; then
336 tmpdir="/tmp"
337 test -n "$TMPDIR" && tmpdir="$TMPDIR"
338 - tmpdir="$tmpdir/libtool-$$"
339 + tmpdir=`mktemp -d $tmpdir/libtool-XXXXXX 2> /dev/null`
340 + if test $? = 0 ; then :
341 + else
342 + tmpdir="$tmpdir/libtool-$$"
343 + fi
344 if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
345 else
346 $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
347 ENDPATCH
348
349 retval=$?
350
351 # This one dont apply clean to libtool-1.4.2a, so do it manually.
352 if [ "${1}" != "--test" ] && [ "${retval}" -eq 0 ]
353 then
354 cp ltmain.sh ltmain.sh.orig
355 sed -e 's:cd `pwd`; $SHELL $0 --mode=relink $libtool_args:cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@:' \
356 ltmain.sh.orig > ltmain.sh
357 rm -f ltmain.sh.orig
358 fi
359
360 return ${retval}
361}
362
363test_patch() {
364
365 local opts=""
366
367 if [ "${1}" = "--test" ]
368 then
369 opts="--force --dry-run"
370 fi
371
372 patch ${opts} -p0 <<-"ENDPATCH"
373 --- ./ltmain.sh Tue May 29 19:16:03 2001
374 +++ ./ltmain.sh Tue May 29 21:26:50 2001
375 @@ -459,7 +459,7 @@
376 pic_mode=default
377 ;;
378 esac
379 - if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
380 + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
381 # non-PIC code in shared libraries is not supported
382 pic_mode=default
383 fi
384 @@ -1343,7 +1343,7 @@
385 ;;
386 esac
387 for pass in $passes; do
388 - if test $linkmode = prog; then
389 + if test "$linkmode" = prog; then
390 # Determine which files to process
391 case $pass in
392 dlopen)
393 @@ -1360,11 +1360,11 @@
394 found=no
395 case $deplib in
396 -l*)
397 - if test $linkmode = oldlib && test $linkmode = obj; then
398 + if test "$linkmode" = oldlib && test "$linkmode" = obj; then
399 $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
400 continue
401 fi
402 - if test $pass = conv; then
403 + if test "$pass" = conv; then
404 deplibs="$deplib $deplibs"
405 continue
406 fi
407 @@ -1384,7 +1384,7 @@
408 finalize_deplibs="$deplib $finalize_deplibs"
409 else
410 deplibs="$deplib $deplibs"
411 - test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
412 + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
413 fi
414 continue
415 fi
416 @@ -1393,16 +1393,16 @@
417 case $linkmode in
418 lib)
419 deplibs="$deplib $deplibs"
420 - test $pass = conv && continue
421 + test "$pass" = conv && continue
422 newdependency_libs="$deplib $newdependency_libs"
423 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
424 ;;
425 prog)
426 - if test $pass = conv; then
427 + if test "$pass" = conv; then
428 deplibs="$deplib $deplibs"
429 continue
430 fi
431 - if test $pass = scan; then
432 + if test "$pass" = scan; then
433 deplibs="$deplib $deplibs"
434 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
435 else
436 @@ -1417,7 +1417,7 @@
437 continue
438 ;; # -L
439 -R*)
440 - if test $pass = link; then
441 + if test "$pass" = link; then
442 dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
443 # Make sure the xrpath contains only unique directories.
444 case "$xrpath " in
445 @@ -1430,7 +1430,7 @@
446 ;;
447 *.la) lib="$deplib" ;;
448 *.$libext)
449 - if test $pass = conv; then
450 + if test "$pass" = conv; then
451 deplibs="$deplib $deplibs"
452 continue
453 fi
454 @@ -1451,7 +1451,7 @@
455 continue
456 ;;
457 prog)
458 - if test $pass != link; then
459 + if test "$pass" != link; then
460 deplibs="$deplib $deplibs"
461 else
462 compile_deplibs="$deplib $compile_deplibs"
463 @@ -1462,7 +1462,7 @@
464 esac # linkmode
465 ;; # *.$libext
466 *.lo | *.$objext)
467 - if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
468 + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
469 # If there is no dlopen support or we're linking statically,
470 # we need to preload.
471 newdlprefiles="$newdlprefiles $deplib"
472 @@ -1512,13 +1512,13 @@
473
474 if test "$linkmode,$pass" = "lib,link" ||
475 test "$linkmode,$pass" = "prog,scan" ||
476 - { test $linkmode = oldlib && test $linkmode = obj; }; then
477 + { test "$linkmode" = oldlib && test "$linkmode" = obj; }; then
478 # Add dl[pre]opened files of deplib
479 test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
480 test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
481 fi
482
483 - if test $pass = conv; then
484 + if test "$pass" = conv; then
485 # Only check for convenience libraries
486 deplibs="$lib $deplibs"
487 if test -z "$libdir"; then
488 @@ -1537,7 +1537,7 @@
489 esac
490 tmp_libs="$tmp_libs $deplib"
491 done
492 - elif test $linkmode != prog && test $linkmode != lib; then
493 + elif test "$linkmode" != prog && test "$linkmode" != lib; then
494 $echo "$modename: \`$lib' is not a convenience library" 1>&2
495 exit 1
496 fi
497 @@ -1555,7 +1555,7 @@
498 fi
499
500 # This library was specified with -dlopen.
501 - if test $pass = dlopen; then
502 + if test "$pass" = dlopen; then
503 if test -z "$libdir"; then
504 $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
505 exit 1
506 @@ -1604,7 +1604,7 @@
507 name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
508
509 # This library was specified with -dlpreopen.
510 - if test $pass = dlpreopen; then
511 + if test "$pass" = dlpreopen; then
512 if test -z "$libdir"; then
513 $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
514 exit 1
515 @@ -1623,7 +1623,7 @@
516
517 if test -z "$libdir"; then
518 # Link the convenience library
519 - if test $linkmode = lib; then
520 + if test "$linkmode" = lib; then
521 deplibs="$dir/$old_library $deplibs"
522 elif test "$linkmode,$pass" = "prog,link"; then
523 compile_deplibs="$dir/$old_library $compile_deplibs"
524 @@ -1634,7 +1634,7 @@
525 continue
526 fi
527
528 - if test $linkmode = prog && test $pass != link; then
529 + if test "$linkmode" = prog && test "$pass" != link; then
530 newlib_search_path="$newlib_search_path $ladir"
531 deplibs="$lib $deplibs"
532
533 @@ -1671,7 +1671,7 @@
534 # Link against this shared library
535
536 if test "$linkmode,$pass" = "prog,link" ||
537 - { test $linkmode = lib && test $hardcode_into_libs = yes; }; then
538 + { test "$linkmode" = lib && test "$hardcode_into_libs" = yes; }; then
539 # Hardcode the library path.
540 # Skip directories that are in the system default run-time
541 # search path.
542 @@ -1693,7 +1693,7 @@
543 esac
544 ;;
545 esac
546 - if test $linkmode = prog; then
547 + if test "$linkmode" = prog; then
548 # We need to hardcode the library path
549 if test -n "$shlibpath_var"; then
550 # Make sure the rpath contains only unique directories.
551 @@ -1777,7 +1777,7 @@
552 linklib=$newlib
553 fi # test -n $old_archive_from_expsyms_cmds
554
555 - if test $linkmode = prog || test "$mode" != relink; then
556 + if test "$linkmode" = prog || test "$mode" != relink; then
557 add_shlibpath=
558 add_dir=
559 add=
560 @@ -1826,7 +1826,7 @@
561 *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
562 esac
563 fi
564 - if test $linkmode = prog; then
565 + if test "$linkmode" = prog; then
566 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
567 test -n "$add" && compile_deplibs="$add $compile_deplibs"
568 else
569 @@ -1843,7 +1843,7 @@
570 fi
571 fi
572
573 - if test $linkmode = prog || test "$mode" = relink; then
574 + if test "$linkmode" = prog || test "$mode" = relink; then
575 add_shlibpath=
576 add_dir=
577 add=
578 @@ -1865,7 +1865,7 @@
579 add="-l$name"
580 fi
581
582 - if test $linkmode = prog; then
583 + if test "$linkmode" = prog; then
584 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
585 test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
586 else
587 @@ -1873,7 +1873,7 @@
588 test -n "$add" && deplibs="$add $deplibs"
589 fi
590 fi
591 - elif test $linkmode = prog; then
592 + elif test "$linkmode" = prog; then
593 if test "$alldeplibs" = yes &&
594 { test "$deplibs_check_method" = pass_all ||
595 { test "$build_libtool_libs" = yes &&
596 @@ -1932,9 +1932,9 @@
597 fi
598 fi # link shared/static library?
599
600 - if test $linkmode = lib; then
601 + if test "$linkmode" = lib; then
602 if test -n "$dependency_libs" &&
603 - { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
604 + { test "$hardcode_into_libs" != yes || test $build_old_libs = yes ||
605 test $link_static = yes; }; then
606 # Extract -R from dependency_libs
607 temp_deplibs=
608 @@ -1964,7 +1964,7 @@
609 tmp_libs="$tmp_libs $deplib"
610 done
611
612 - if test $link_all_deplibs != no; then
613 + if test "$link_all_deplibs" != no; then
614 # Add the search paths of all dependency libraries
615 for deplib in $dependency_libs; do
616 case $deplib in
617 @@ -2007,15 +2007,15 @@
618 fi # link_all_deplibs != no
619 fi # linkmode = lib
620 done # for deplib in $libs
621 - if test $pass = dlpreopen; then
622 + if test "$pass" = dlpreopen; then
623 # Link the dlpreopened libraries before other libraries
624 for deplib in $save_deplibs; do
625 deplibs="$deplib $deplibs"
626 done
627 fi
628 - if test $pass != dlopen; then
629 - test $pass != scan && dependency_libs="$newdependency_libs"
630 - if test $pass != conv; then
631 + if test "$pass" != dlopen; then
632 + test "$pass" != scan && dependency_libs="$newdependency_libs"
633 + if test "$pass" != conv; then
634 # Make sure lib_search_path contains only unique directories.
635 lib_search_path=
636 for dir in $newlib_search_path; do
637 @@ -2073,7 +2073,7 @@
638 deplibs=
639 fi
640 done # for pass
641 - if test $linkmode = prog; then
642 + if test "$linkmode" = prog; then
643 dlfiles="$newdlfiles"
644 dlprefiles="$newdlprefiles"
645 fi
646 @@ -2410,7 +2410,7 @@
647 ;;
648 *)
649 # Add libc to deplibs on all other systems if necessary.
650 - if test $build_libtool_need_lc = "yes"; then
651 + if test "$build_libtool_need_lc" = "yes"; then
652 deplibs="$deplibs -lc"
653 fi
654 ;;
655 @@ -2683,7 +2683,7 @@
656
657 # Test again, we may have decided not to build it any more
658 if test "$build_libtool_libs" = yes; then
659 - if test $hardcode_into_libs = yes; then
660 + if test "$hardcode_into_libs" = yes; then
661 # Hardcode the library paths
662 hardcode_libdirs=
663 dep_rpath=
664 ENDPATCH
665}
666

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

  ViewVC Help
Powered by ViewVC 1.1.20