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

Diff of /eclass/libtool.eclass

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

Revision 1.25 Revision 1.35
1# Copyright 1999-2004 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.25 2004/02/11 19:33:14 azarah Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.35 2004/09/29 03:49:59 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 among others 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="2.0.1" 25ELIBTOOL_VERSION="2.0.1"
18 26
25# 33#
26ELT_find_ltmain_sh() { 34ELT_find_ltmain_sh() {
27 local x= 35 local x=
28 local dirlist= 36 local dirlist=
29 37
30 for x in $(find "${S}" -name 'ltmain.sh') 38 for x in $(find "${S}" -name 'ltmain.sh')
31 do 39 do
32 dirlist="${dirlist} ${x%/*}" 40 dirlist="${dirlist} ${x%/*}"
33 done 41 done
34 42
35 echo "${dirlist}" 43 echo "${dirlist}"
36} 44}
37 45
38# 46#
39# See if we can apply $2 on $1, and if so, do it 47# See if we can apply $2 on $1, and if so, do it
40# 48#
72 then 80 then
73 patch_dir="${ELT_PATCH_DIR}/$2" 81 patch_dir="${ELT_PATCH_DIR}/$2"
74 else 82 else
75 return ${ret} 83 return ${ret}
76 fi 84 fi
77 85
78 for x in $(ls -d "${patch_dir}"/* 2>/dev/null) 86 for x in $(ls -d "${patch_dir}"/* 2>/dev/null)
79 do 87 do
80 if [ -n "${x}" -a -f "${x}" ] 88 if [ -n "${x}" -a -f "${x}" ]
81 then 89 then
82 # For --remove-internal-dep ... 90 # For --remove-internal-dep ...
84 then 92 then
85 # For replace @REM_INT_DEP@ with what was passed 93 # For replace @REM_INT_DEP@ with what was passed
86 # to --remove-internal-dep 94 # to --remove-internal-dep
87 sed -e "s|@REM_INT_DEP@|$3|g" ${x} > \ 95 sed -e "s|@REM_INT_DEP@|$3|g" ${x} > \
88 ${T}/$$.rem_int_deps.patch 96 ${T}/$$.rem_int_deps.patch
89 97
90 x="${T}/$$.rem_int_deps.patch" 98 x="${T}/$$.rem_int_deps.patch"
91 fi 99 fi
92 100
93 if ELT_try_and_apply_patch "$1" "${x}" 101 if ELT_try_and_apply_patch "$1" "${x}"
94 then 102 then
95 ret=0 103 ret=0
96 break 104 break
97 fi 105 fi
109 local do_reversedeps="no" 117 local do_reversedeps="no"
110 local do_only_patches="no" 118 local do_only_patches="no"
111 local deptoremove= 119 local deptoremove=
112 local my_dirlist= 120 local my_dirlist=
113 local elt_patches="portage relink max_cmd_len sed test tmp" 121 local elt_patches="portage relink max_cmd_len sed test tmp"
122 local start_dir="${PWD}"
114 123
115 my_dirlist="$(ELT_find_ltmain_sh)" 124 my_dirlist="$(ELT_find_ltmain_sh)"
116 125
117 for x in $* 126 for x in "$@"
118 do 127 do
119 case "${x}" in 128 case "${x}" in
120 "--portage") 129 "--portage")
121 # Only apply portage patch, and don't 130 # Only apply portage patch, and don't
122 # 'libtoolize --copy --force' if all patches fail. 131 # 'libtoolize --copy --force' if all patches fail.
154 163
155 for x in ${my_dirlist} 164 for x in ${my_dirlist}
156 do 165 do
157 local tmp="$(echo "${x}" | sed -e "s|${S}||")" 166 local tmp="$(echo "${x}" | sed -e "s|${S}||")"
158 export ELT_APPLIED_PATCHES= 167 export ELT_APPLIED_PATCHES=
159 168
160 cd ${x} 169 cd ${x}
161 einfo "Patching \${S}$(echo "/${tmp}/ltmain.sh" | sed -e 's|//|/|g')..." 170 einfo "Patching \${S}$(echo "/${tmp}/ltmain.sh" | sed -e 's|//|/|g')..."
162 171
163 for y in ${elt_patches} 172 for y in ${elt_patches}
164 do 173 do
188 *) 197 *)
189 ELT_walk_patches "${x}/ltmain.sh" "${y}" 198 ELT_walk_patches "${x}/ltmain.sh" "${y}"
190 ret=$? 199 ret=$?
191 ;; 200 ;;
192 esac 201 esac
193 202
194 if [ "${ret}" -ne 0 ] 203 if [ "${ret}" -ne 0 ]
195 then 204 then
196 case ${y} in 205 case ${y} in
197 "relink") 206 "relink")
198 # Critical patch, but could be applied ... 207 # Critical patch, but could be applied ...
252 if [ -f libtool ] 261 if [ -f libtool ]
253 then 262 then
254 rm -f libtool 263 rm -f libtool
255 fi 264 fi
256 265
257 # We need to change the pwd back to $S, as we may be called in 266 cd "${start_dir}"
258 # src_compile()
259 cd ${S}
260}
261 267
268 uclibctoolize
269}
270
271uclibctoolize() {
272 local targets=""
273 local x
274
275 if [ -z "$@" ] ; then
276 targets="$(find ${S} -name configure -o -name ltconfig)"
277 fi
278
279 einfo "Applying uClibc/libtool patches ..."
280 for x in ${targets} ; do
281 [ ! -s "${x}" ] && continue
282 case $(basename "${x}") in
283 configure)
284 if grep 'Transform linux' "${x}" >/dev/null ; then
285 ebegin " Fixing \${S}${x/${S}}"
286 patch -p0 "${x}" "${ELT_PATCH_DIR}/uclibc/configure.patch" > /dev/null
287 eend $? "PLEASE CHECK ${x}"
288 fi
289 ;;
290
291 ltconfig)
292 local ver="$(grep '^VERSION=' ${x})"
293 ver="${ver/VERSION=}"
294 [ "${ver:0:3}" == "1.4" ] && ver="1.3" # 1.4 and 1.3 are compat
295 ebegin " Fixing \${S}${x/${S}}"
296 patch -p0 "${x}" "${ELT_PATCH_DIR}/uclibc/ltconfig-${ver:0:3}.patch" > /dev/null
297 eend $? "PLEASE CHECK ${x}"
298 ;;
299 esac
300 done
301}

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.35

  ViewVC Help
Powered by ViewVC 1.1.20