/[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.46
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.46 2005/05/11 15:15:03 azarah 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# stageballs <3. if anybody decides to revert this, please attempt 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. 19# to find an alternate way of resolving that bug at the same time.
20 20
21DESCRIPTION="Based on the ${ECLASS} eclass" 21DESCRIPTION="Based on the ${ECLASS} eclass"
22 22
23ELIBTOOL_VERSION="2.0.1" 23ELIBTOOL_VERSION="2.0.2"
24 24
25ELT_PATCH_DIR="${PORTDIR}/eclass/ELT-patches" 25ELT_PATCH_DIR="${PORTDIR}/eclass/ELT-patches"
26ELT_APPLIED_PATCHES= 26ELT_APPLIED_PATCHES=
27 27
28# 28#
66ELT_walk_patches() { 66ELT_walk_patches() {
67 local x= 67 local x=
68 local y= 68 local y=
69 local ret=1 69 local ret=1
70 local patch_dir= 70 local patch_dir=
71 local version=$(eval $(grep -e '^[[:space:]]*VERSION=' $1); \
72 echo "${VERSION}")
71 73
72 if [[ -n $2 ]] ; then 74 if [[ -n $2 ]] ; then
73 if [[ -d ${ELT_PATCH_DIR}/$2 ]] ; then 75 if [[ -d ${ELT_PATCH_DIR}/$2 ]] ; then
74 patch_dir="${ELT_PATCH_DIR}/$2" 76 patch_dir="${ELT_PATCH_DIR}/$2"
75 else 77 else
76 return ${ret} 78 return ${ret}
77 fi 79 fi
78 80
81 if [[ -z ${version} ]] ; then
82 eerror "Could not get VERSION for ${1##*/}!"
83 die "Could not get VERSION for ${1##*/}!"
84 fi
85
86 # Go through the patches in reverse order (large to small)
79 for x in $(ls -d "${patch_dir}"/* 2> /dev/null) ; do 87 for x in $(ls -d "${patch_dir}"/* 2> /dev/null | sort -r) ; do
80 if [[ -n ${x} && -f ${x} ]] ; then 88 if [[ -n ${x} && -f ${x} ]] ; then
89 local ltver=$(VER_to_int "${version}")
90 local ptver=$(VER_to_int "${x##*/}")
91
92 # If libtool version smaller than patch version, skip patch.
93 [[ ${ltver} -lt ${ptver} ]] && continue
81 # For --remove-internal-dep ... 94 # For --remove-internal-dep ...
82 if [[ -n $3 ]] ; then 95 if [[ -n $3 ]] ; then
83 # For replace @REM_INT_DEP@ with what was passed 96 # For replace @REM_INT_DEP@ with what was passed
84 # to --remove-internal-dep 97 # to --remove-internal-dep
85 sed -e "s|@REM_INT_DEP@|$3|g" ${x} > \ 98 sed -e "s|@REM_INT_DEP@|$3|g" ${x} > \
212 echo 225 echo
213 eerror "Portage patch requested, but failed to apply!" 226 eerror "Portage patch requested, but failed to apply!"
214 die "Portage patch requested, but failed to apply!" 227 die "Portage patch requested, but failed to apply!"
215 fi 228 fi
216 else 229 else
217 ewarn " Could not apply portage.patch!" 230 if [[ -n $(grep 'We do not want portage' "${x}/ltmain.sh") ]] ; then
231 ewarn " Portage patch seems to be already applied."
218 ewarn " Please verify that it is not needed." 232 ewarn " Please verify that it is not needed."
233 else
234 local version=$( \
235 eval $(grep -e '^[[:space:]]*VERSION=' "${x}/ltmain.sh"); \
236 echo "${VERSION}")
237
238 echo
239 eerror "Portage patch failed to apply (ltmain.sh version ${version})!"
240 die "Portage patch failed to apply!"
241 fi
242 # We do not want to run libtoolize ...
243 ELT_APPLIED_PATCHES="portage"
219 fi 244 fi
220 ;; 245 ;;
221 esac 246 esac
222 fi 247 fi
223 248
316 eend $? "PLEASE CHECK ${x}" 341 eend $? "PLEASE CHECK ${x}"
317 ;; 342 ;;
318 esac 343 esac
319 done 344 done
320} 345}
346
347# char *VER_major(string)
348#
349# Return the Major (X of X.Y.Z) version
350#
351VER_major() {
352 [[ -z $1 ]] && return 1
353
354 local VER=$@
355 echo ${VER%%[^[:digit:]]*}
356}
357
358# char *VER_minor(string)
359#
360# Return the Minor (Y of X.Y.Z) version
361#
362VER_minor() {
363 [[ -z $1 ]] && return 1
364
365 local VER=$@
366 VER=${VER#*.}
367 echo ${VER%%[^[:digit:]]*}
368}
369
370# char *VER_micro(string)
371#
372# Return the Micro (Z of X.Y.Z) version.
373#
374VER_micro() {
375 [[ -z $1 ]] && return 1
376
377 local VER=$@
378 VER=${VER#*.*.}
379 echo ${VER%%[^[:digit:]]*}
380}
381
382# int VER_to_int(string)
383#
384# Convert a string type version (2.4.0) to an int (132096)
385# for easy compairing or versions ...
386#
387VER_to_int() {
388 [[ -z $1 ]] && return 1
389
390 local VER_MAJOR=$(VER_major "$1")
391 local VER_MINOR=$(VER_minor "$1")
392 local VER_MICRO=$(VER_micro "$1")
393 local VER_int=$(( VER_MAJOR * 65536 + VER_MINOR * 256 + VER_MICRO ))
394
395 # We make version 1.0.0 the minimum version we will handle as
396 # a sanity check ... if its less, we fail ...
397 if [[ ${VER_int} -ge 65536 ]] ; then
398 echo "${VER_int}"
399 return 0
400 fi
401
402 echo 1
403 return 1
404}

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

  ViewVC Help
Powered by ViewVC 1.1.20