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

Diff of /eclass/libtool.eclass

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

Revision 1.62 Revision 1.74
1# Copyright 1999-2005 Gentoo Foundation 1# Copyright 1999-2005 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.62 2005/12/07 22:50:05 azarah Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.74 2007/03/01 18:48:02 grobian 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
18 18
19DESCRIPTION="Based on the ${ECLASS} eclass" 19DESCRIPTION="Based on the ${ECLASS} eclass"
20 20
21ELIBTOOL_VERSION="2.0.2" 21ELIBTOOL_VERSION="2.0.2"
22 22
23ELT_PATCH_DIR="${PORTDIR}/eclass/ELT-patches" 23ELT_PATCH_DIR="${ECLASSDIR}/ELT-patches"
24ELT_APPLIED_PATCHES= 24ELT_APPLIED_PATCHES=
25ELT_LTMAIN_SH= 25ELT_LTMAIN_SH=
26 26
27# 27#
28# Returns all the directories containing ltmain.sh 28# Returns all the directories containing ltmain.sh
84 local ret=1 84 local ret=1
85 local file=$1 85 local file=$1
86 local patch_set=$2 86 local patch_set=$2
87 local patch_dir= 87 local patch_dir=
88 local rem_int_dep=$3 88 local rem_int_dep=$3
89 local version=
90 local ltmain_sh=$1
91
92 [[ ${file} == *"/configure" ]] && ltmain_sh=${ELT_LTMAIN_SH}
93 version=$(ELT_libtool_version "${ltmain_sh}")
94 89
95 if [[ -n ${patch_set} ]] ; then 90 if [[ -n ${patch_set} ]] ; then
96 if [[ -d ${ELT_PATCH_DIR}/${patch_set} ]] ; then 91 if [[ -d ${ELT_PATCH_DIR}/${patch_set} ]] ; then
97 patch_dir="${ELT_PATCH_DIR}/${patch_set}" 92 patch_dir="${ELT_PATCH_DIR}/${patch_set}"
98 else 93 else
99 return "${ret}" 94 return "${ret}"
100 fi 95 fi
101 96
102 if [[ ${version} == "0" ]] ; then
103 eerror "Could not get VERSION for ${file##*/}!"
104 die "Could not get VERSION for ${file##*/}!"
105 fi
106
107 # Go through the patches in reverse order (large to small) 97 # Go through the patches in reverse order (large to small)
108 for x in $(ls -d "${patch_dir}"/* 2> /dev/null | grep -v 'CVS' | sort -r) ; do 98 for x in $(ls -d "${patch_dir}"/* 2> /dev/null | grep -v 'CVS' | sort -r) ; do
109 if [[ -n ${x} && -f ${x} ]] ; then 99 if [[ -n ${x} && -f ${x} ]] ; then
110 local ltver=$(VER_to_int "${version}")
111 local ptver=$(VER_to_int "${x##*/}")
112
113 # If libtool version smaller than patch version, skip patch.
114 [[ ${ltver} -lt ${ptver} ]] && continue
115 # For --remove-internal-dep ... 100 # For --remove-internal-dep ...
116 if [[ -n ${rem_int_dep} ]] ; then 101 if [[ -n ${rem_int_dep} ]] ; then
117 # For replace @REM_INT_DEP@ with what was passed 102 # For replace @REM_INT_DEP@ with what was passed
118 # to --remove-internal-dep 103 # to --remove-internal-dep
119 sed -e "s|@REM_INT_DEP@|${rem_int_dep}|g" ${x} > \ 104 sed -e "s|@REM_INT_DEP@|${rem_int_dep}|g" ${x} > \
191 176
192 [[ ${do_uclibc} == "yes" ]] && \ 177 [[ ${do_uclibc} == "yes" ]] && \
193 elt_patches="${elt_patches} uclibc-conf uclibc-ltconf" 178 elt_patches="${elt_patches} uclibc-conf uclibc-ltconf"
194 179
195 [[ ${CHOST} == *"-freebsd"* ]] && \ 180 [[ ${CHOST} == *"-freebsd"* ]] && \
196 elt_patches="${elt_patches} fbsd-conf" 181 elt_patches="${elt_patches} fbsd-conf fbsd-ltconf"
197 182
198 if useq ppc-macos ; then 183 [[ ${CHOST} == *"-darwin"* ]] && \
199 local opts
200 [[ -f Makefile.am ]] && opts="--automake"
201 glibtoolize --copy --force ${opts}
202
203 elt_patches="${elt_patches} darwin-ltconf darwin-ltmain" 184 elt_patches="${elt_patches} darwin-ltconf darwin-ltmain"
204 fi
205 185
206 for x in ${my_dirlist} ; do 186 for x in ${my_dirlist} ; do
207 local tmp=$(echo "${x}" | sed -e "s|${WORKDIR}||") 187 local tmp=$(echo "${x}" | sed -e "s|${WORKDIR}||")
208 export ELT_APPLIED_PATCHES= 188 export ELT_APPLIED_PATCHES=
209 export ELT_LTMAIN_SH="${x}/ltmain.sh" 189 export ELT_LTMAIN_SH="${x}/ltmain.sh"
215 195
216 for y in ${elt_patches} ; do 196 for y in ${elt_patches} ; do
217 local ret=0 197 local ret=0
218 198
219 case "${y}" in 199 case "${y}" in
200 "portage")
201 # Stupid test to see if its already applied ...
202 if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]] ; then
203 ELT_walk_patches "${x}/ltmain.sh" "${y}"
204 ret=$?
205 fi
206 ;;
220 "rem-int-dep") 207 "rem-int-dep")
221 ELT_walk_patches "${x}/ltmain.sh" "${y}" "${deptoremove}" 208 ELT_walk_patches "${x}/ltmain.sh" "${y}" "${deptoremove}"
222 ret=$? 209 ret=$?
223 ;; 210 ;;
224 "fix-relink") 211 "fix-relink")
261 ret=$? 248 ret=$?
262 # ltmain.sh and co might be in a subdirectory ... 249 # ltmain.sh and co might be in a subdirectory ...
263 elif [[ ! -e ${x}/configure && -e ${x}/../configure && \ 250 elif [[ ! -e ${x}/configure && -e ${x}/../configure && \
264 -n $(grep 'version_type=freebsd-' "${x}/../configure") ]] ; then 251 -n $(grep 'version_type=freebsd-' "${x}/../configure") ]] ; then
265 ELT_walk_patches "${x}/../configure" "${y}" 252 ELT_walk_patches "${x}/../configure" "${y}"
253 ret=$?
254 fi
255 ;;
256 "fbsd-ltconf")
257 if [[ -s ${x}/ltconfig ]] ; then
258 ELT_walk_patches "${x}/ltconfig" "${y}"
266 ret=$? 259 ret=$?
267 fi 260 fi
268 ;; 261 ;;
269 "darwin-ltconf") 262 "darwin-ltconf")
270 # Newer libtoolize clears ltconfig, as not used anymore 263 # Newer libtoolize clears ltconfig, as not used anymore
296 if [[ ${do_portage} == "yes" ]] ; then 289 if [[ ${do_portage} == "yes" ]] ; then
297 # Stupid test to see if its already applied ... 290 # Stupid test to see if its already applied ...
298 if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]] ; then 291 if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]] ; then
299 echo 292 echo
300 eerror "Portage patch requested, but failed to apply!" 293 eerror "Portage patch requested, but failed to apply!"
294 eerror "Please bug azarah or vapier to add proper patch."
301 die "Portage patch requested, but failed to apply!" 295 die "Portage patch requested, but failed to apply!"
302 fi 296 fi
303 else 297 else
304 if [[ -n $(grep 'We do not want portage' "${x}/ltmain.sh") ]] ; then 298 if [[ -n $(grep 'We do not want portage' "${x}/ltmain.sh") ]] ; then
305 # ewarn " Portage patch seems to be already applied." 299 # ewarn " Portage patch seems to be already applied."
310 eval $(grep -e '^[[:space:]]*VERSION=' "${x}/ltmain.sh"); \ 304 eval $(grep -e '^[[:space:]]*VERSION=' "${x}/ltmain.sh"); \
311 echo "${VERSION}") 305 echo "${VERSION}")
312 306
313 echo 307 echo
314 eerror "Portage patch failed to apply (ltmain.sh version ${version})!" 308 eerror "Portage patch failed to apply (ltmain.sh version ${version})!"
309 eerror "Please bug azarah or vapier to add proper patch."
315 die "Portage patch failed to apply!" 310 die "Portage patch failed to apply!"
316 fi 311 fi
317 # We do not want to run libtoolize ... 312 # We do not want to run libtoolize ...
318 ELT_APPLIED_PATCHES="portage" 313 ELT_APPLIED_PATCHES="portage"
319 fi 314 fi
322 [[ ${CHOST} == *"-uclibc" ]] && \ 317 [[ ${CHOST} == *"-uclibc" ]] && \
323 ewarn " uClibc patch set '${y}' failed to apply!" 318 ewarn " uClibc patch set '${y}' failed to apply!"
324 ;; 319 ;;
325 "fbsd-"*) 320 "fbsd-"*)
326 if [[ ${CHOST} == *"-freebsd"* ]] ; then 321 if [[ ${CHOST} == *"-freebsd"* ]] ; then
327 if [[ -z $(grep 'Handle Gentoo/FreeBSD as it was Linux' "${x}/configure") ]]; then 322 if [[ -z $(grep 'Handle Gentoo/FreeBSD as it was Linux' \
323 "${x}/configure" "${x}/../configure" 2>/dev/null) ]]; then
328 eerror " FreeBSD patch set '${y}' failed to apply!" 324 eerror " FreeBSD patch set '${y}' failed to apply!"
329 die "FreeBSD patch set '${y}' failed to apply!" 325 die "FreeBSD patch set '${y}' failed to apply!"
330 fi 326 fi
331 fi 327 fi
332 ;; 328 ;;
333 "darwin-"*) 329 "darwin-"*)
334 useq ppc-macos && \ 330 [[ ${CHOST} == *"-darwin"* ]] && \
335 ewarn " Darwin patch set '${y}' failed to apply!" 331 ewarn " Darwin patch set '${y}' failed to apply!"
336 ;; 332 ;;
337 esac 333 esac
338 fi 334 fi
339 done 335 done

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

  ViewVC Help
Powered by ViewVC 1.1.20