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

Diff of /eclass/libtool.eclass

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

Revision 1.42 Revision 1.48
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.42 2005/01/31 03:02:13 vapier Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.48 2005/07/06 20:20:03 agriffis 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"
11INHERITED="${INHERITED} ${ECLASS}" 10INHERITED="${INHERITED} ${ECLASS}"
12 11
13# 2004.09.25 rac 12# 2004.09.25 rac
14# i have verified that at least one package can use this eclass and 13# i have verified that at least one package can use this eclass and
15# build properly even without libtool installed yet, probably using 14# build properly even without libtool installed yet, probably using
18# stageballs <3. if anybody decides to revert this, please attempt 17# stageballs <3. if anybody decides to revert this, please attempt
19# to find an alternate way of resolving that bug at the same time. 18# to find an alternate way of resolving that bug at the same time.
20 19
21DESCRIPTION="Based on the ${ECLASS} eclass" 20DESCRIPTION="Based on the ${ECLASS} eclass"
22 21
23ELIBTOOL_VERSION="2.0.1" 22ELIBTOOL_VERSION="2.0.2"
24 23
25ELT_PATCH_DIR="${PORTDIR}/eclass/ELT-patches" 24ELT_PATCH_DIR="${PORTDIR}/eclass/ELT-patches"
26ELT_APPLIED_PATCHES= 25ELT_APPLIED_PATCHES=
27 26
28# 27#
66ELT_walk_patches() { 65ELT_walk_patches() {
67 local x= 66 local x=
68 local y= 67 local y=
69 local ret=1 68 local ret=1
70 local patch_dir= 69 local patch_dir=
70 local version=$(eval $(grep -e '^[[:space:]]*VERSION=' $1); \
71 echo "${VERSION}")
71 72
72 if [[ -n $2 ]] ; then 73 if [[ -n $2 ]] ; then
73 if [[ -d ${ELT_PATCH_DIR}/$2 ]] ; then 74 if [[ -d ${ELT_PATCH_DIR}/$2 ]] ; then
74 patch_dir="${ELT_PATCH_DIR}/$2" 75 patch_dir="${ELT_PATCH_DIR}/$2"
75 else 76 else
76 return ${ret} 77 return ${ret}
77 fi 78 fi
78 79
80 if [[ -z ${version} ]] ; then
81 eerror "Could not get VERSION for ${1##*/}!"
82 die "Could not get VERSION for ${1##*/}!"
83 fi
84
85 # Go through the patches in reverse order (large to small)
79 for x in $(ls -d "${patch_dir}"/* 2> /dev/null) ; do 86 for x in $(ls -d "${patch_dir}"/* 2> /dev/null | sort -r) ; do
80 if [[ -n ${x} && -f ${x} ]] ; then 87 if [[ -n ${x} && -f ${x} ]] ; then
88 local ltver=$(VER_to_int "${version}")
89 local ptver=$(VER_to_int "${x##*/}")
90
91 # If libtool version smaller than patch version, skip patch.
92 [[ ${ltver} -lt ${ptver} ]] && continue
81 # For --remove-internal-dep ... 93 # For --remove-internal-dep ...
82 if [[ -n $3 ]] ; then 94 if [[ -n $3 ]] ; then
83 # For replace @REM_INT_DEP@ with what was passed 95 # For replace @REM_INT_DEP@ with what was passed
84 # to --remove-internal-dep 96 # to --remove-internal-dep
85 sed -e "s|@REM_INT_DEP@|$3|g" ${x} > \ 97 sed -e "s|@REM_INT_DEP@|$3|g" ${x} > \
212 echo 224 echo
213 eerror "Portage patch requested, but failed to apply!" 225 eerror "Portage patch requested, but failed to apply!"
214 die "Portage patch requested, but failed to apply!" 226 die "Portage patch requested, but failed to apply!"
215 fi 227 fi
216 else 228 else
217 ewarn " Could not apply portage.patch!" 229 if [[ -n $(grep 'We do not want portage' "${x}/ltmain.sh") ]] ; then
230 ewarn " Portage patch seems to be already applied."
218 ewarn " Please verify that it is not needed." 231 ewarn " Please verify that it is not needed."
232 else
233 local version=$( \
234 eval $(grep -e '^[[:space:]]*VERSION=' "${x}/ltmain.sh"); \
235 echo "${VERSION}")
236
237 echo
238 eerror "Portage patch failed to apply (ltmain.sh version ${version})!"
239 die "Portage patch failed to apply!"
240 fi
241 # We do not want to run libtoolize ...
242 ELT_APPLIED_PATCHES="portage"
219 fi 243 fi
220 ;; 244 ;;
221 esac 245 esac
222 fi 246 fi
223 247
225 if [[ ${do_portage} == "no" && \ 249 if [[ ${do_portage} == "no" && \
226 ${do_reversedeps} == "no" && \ 250 ${do_reversedeps} == "no" && \
227 ${do_only_patches} == "no" && \ 251 ${do_only_patches} == "no" && \
228 ${deptoremove} == "" ]] 252 ${deptoremove} == "" ]]
229 then 253 then
254 ewarn "Cannot apply any patches, please file a bug about this"
255 break
256
230 # Sometimes ltmain.sh is in a subdirectory ... 257 # Sometimes ltmain.sh is in a subdirectory ...
231 if [[ ! -f ${x}/configure.in && ! -f ${x}/configure.ac ]] ; then 258 if [[ ! -f ${x}/configure.in && ! -f ${x}/configure.ac ]] ; then
232 if [[ -f ${x}/../configure.in || -f ${x}/../configure.ac ]] ; then 259 if [[ -f ${x}/../configure.in || -f ${x}/../configure.ac ]] ; then
233 cd "${x}"/../ 260 cd "${x}"/../
234 fi 261 fi
235 fi 262 fi
236 263
237 if type -p libtoolize &> /dev/null ; then 264 if type -p libtoolize &> /dev/null ; then
238 ewarn "Cannot apply any patch, running libtoolize..." 265 ewarn "Cannot apply any patches, running libtoolize..."
239 libtoolize --copy --force 266 libtoolize --copy --force
240 fi 267 fi
241 cd "${x}" 268 cd "${x}"
242 break 269 break
243 fi 270 fi
316 eend $? "PLEASE CHECK ${x}" 343 eend $? "PLEASE CHECK ${x}"
317 ;; 344 ;;
318 esac 345 esac
319 done 346 done
320} 347}
348
349# char *VER_major(string)
350#
351# Return the Major (X of X.Y.Z) version
352#
353VER_major() {
354 [[ -z $1 ]] && return 1
355
356 local VER=$@
357 echo ${VER%%[^[:digit:]]*}
358}
359
360# char *VER_minor(string)
361#
362# Return the Minor (Y of X.Y.Z) version
363#
364VER_minor() {
365 [[ -z $1 ]] && return 1
366
367 local VER=$@
368 VER=${VER#*.}
369 echo ${VER%%[^[:digit:]]*}
370}
371
372# char *VER_micro(string)
373#
374# Return the Micro (Z of X.Y.Z) version.
375#
376VER_micro() {
377 [[ -z $1 ]] && return 1
378
379 local VER=$@
380 VER=${VER#*.*.}
381 echo ${VER%%[^[:digit:]]*}
382}
383
384# int VER_to_int(string)
385#
386# Convert a string type version (2.4.0) to an int (132096)
387# for easy compairing or versions ...
388#
389VER_to_int() {
390 [[ -z $1 ]] && return 1
391
392 local VER_MAJOR=$(VER_major "$1")
393 local VER_MINOR=$(VER_minor "$1")
394 local VER_MICRO=$(VER_micro "$1")
395 local VER_int=$(( VER_MAJOR * 65536 + VER_MINOR * 256 + VER_MICRO ))
396
397 # We make version 1.0.0 the minimum version we will handle as
398 # a sanity check ... if its less, we fail ...
399 if [[ ${VER_int} -ge 65536 ]] ; then
400 echo "${VER_int}"
401 return 0
402 fi
403
404 echo 1
405 return 1
406}

Legend:
Removed from v.1.42  
changed lines
  Added in v.1.48

  ViewVC Help
Powered by ViewVC 1.1.20