/[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.45
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.45 2005/05/11 11:10:31 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 echo
235 eerror "Portage patch failed to apply!"
236 die "Portage patch failed to apply!"
237 fi
238 # We do not want to run libtoolize ...
239 ELT_APPLIED_PATCHES="portage"
219 fi 240 fi
220 ;; 241 ;;
221 esac 242 esac
222 fi 243 fi
223 244
316 eend $? "PLEASE CHECK ${x}" 337 eend $? "PLEASE CHECK ${x}"
317 ;; 338 ;;
318 esac 339 esac
319 done 340 done
320} 341}
342
343# char *VER_major(string)
344#
345# Return the Major (X of X.Y.Z) version
346#
347VER_major() {
348 [[ -z $1 ]] && return 1
349
350 local VER=$@
351 echo ${VER%%[^[:digit:]]*}
352}
353
354# char *VER_minor(string)
355#
356# Return the Minor (Y of X.Y.Z) version
357#
358VER_minor() {
359 [[ -z $1 ]] && return 1
360
361 local VER=$@
362 VER=${VER#*.}
363 echo ${VER%%[^[:digit:]]*}
364}
365
366# char *VER_micro(string)
367#
368# Return the Micro (Z of X.Y.Z) version.
369#
370VER_micro() {
371 [[ -z $1 ]] && return 1
372
373 local VER=$@
374 VER=${VER#*.*.}
375 echo ${VER%%[^[:digit:]]*}
376}
377
378# int VER_to_int(string)
379#
380# Convert a string type version (2.4.0) to an int (132096)
381# for easy compairing or versions ...
382#
383VER_to_int() {
384 [[ -z $1 ]] && return 1
385
386 local VER_MAJOR=$(VER_major "$1")
387 local VER_MINOR=$(VER_minor "$1")
388 local VER_MICRO=$(VER_micro "$1")
389 local VER_int=$(( VER_MAJOR * 65536 + VER_MINOR * 256 + VER_MICRO ))
390
391 # We make version 1.0.0 the minimum version we will handle as
392 # a sanity check ... if its less, we fail ...
393 if [[ ${VER_int} -ge 65536 ]] ; then
394 echo "${VER_int}"
395 return 0
396 fi
397
398 echo 1
399 return 1
400}

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

  ViewVC Help
Powered by ViewVC 1.1.20