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

Diff of /eclass/libtool.eclass

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

Revision 1.43 Revision 1.44
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.43 2005/02/27 20:29:04 azarah Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.44 2005/03/23 18:03:21 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); echo "${VERSION}") 71 local version=$(eval $(grep -e '^[[:space:]]*VERSION=' $1); \
72 echo "${VERSION}")
72 73
73 if [[ -n $2 ]] ; then 74 if [[ -n $2 ]] ; then
74 if [[ -d ${ELT_PATCH_DIR}/$2 ]] ; then 75 if [[ -d ${ELT_PATCH_DIR}/$2 ]] ; then
75 patch_dir="${ELT_PATCH_DIR}/$2" 76 patch_dir="${ELT_PATCH_DIR}/$2"
76 else 77 else
77 return ${ret} 78 return ${ret}
78 fi 79 fi
79 80
80 # First check a version specific patch, if not check major.minor* 81 if [[ -z ${version} ]] ; then
81 for y in ${version} $(echo "${version}" | cut -d. -f1,2) ; do 82 eerror "Could not get VERSION for ${1##*/}!"
82 [[ -z ${y} ]] && continue 83 die "Could not get VERSION for ${1##*/}!"
84 fi
85
86 # Go through the patches in reverse order (large to small)
83 for x in $(ls -d "${patch_dir}/${y}"* 2> /dev/null) ; do 87 for x in $(ls -d "${patch_dir}"/* 2> /dev/null | sort -r) ; do
84 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
85 # For --remove-internal-dep ... 94 # For --remove-internal-dep ...
86 if [[ -n $3 ]] ; then 95 if [[ -n $3 ]] ; then
87 # For replace @REM_INT_DEP@ with what was passed 96 # For replace @REM_INT_DEP@ with what was passed
88 # to --remove-internal-dep 97 # to --remove-internal-dep
89 sed -e "s|@REM_INT_DEP@|$3|g" ${x} > \ 98 sed -e "s|@REM_INT_DEP@|$3|g" ${x} > \
90 ${T}/$$.rem_int_deps.patch 99 ${T}/$$.rem_int_deps.patch
91 100
92 x="${T}/$$.rem_int_deps.patch" 101 x="${T}/$$.rem_int_deps.patch"
93 fi
94
95 if ELT_try_and_apply_patch "$1" "${x}" ; then
96 ret=0
97 break
98 fi
99 fi 102 fi
100 done 103
104 if ELT_try_and_apply_patch "$1" "${x}" ; then
105 ret=0
106 break
107 fi
108 fi
101 done 109 done
102
103 # If still nothing, try the rest.
104 if [[ ${ret} -eq 1 ]]; then
105 for x in $(ls -d "${patch_dir}"/* 2> /dev/null) ; do
106 if [[ -n ${x} && -f ${x} ]] ; then
107 # For --remove-internal-dep ...
108 if [[ -n $3 ]] ; then
109 # For replace @REM_INT_DEP@ with what was passed
110 # to --remove-internal-dep
111 sed -e "s|@REM_INT_DEP@|$3|g" ${x} > \
112 ${T}/$$.rem_int_deps.patch
113
114 x="${T}/$$.rem_int_deps.patch"
115 fi
116
117 if ELT_try_and_apply_patch "$1" "${x}" ; then
118 ret=0
119 break
120 fi
121 fi
122 done
123 fi
124 fi 110 fi
125 111
126 return ${ret} 112 return ${ret}
127} 113}
128 114
343 eend $? "PLEASE CHECK ${x}" 329 eend $? "PLEASE CHECK ${x}"
344 ;; 330 ;;
345 esac 331 esac
346 done 332 done
347} 333}
334
335# char *VER_major(string)
336#
337# Return the Major (X of X.Y.Z) version
338#
339VER_major() {
340 [[ -z $1 ]] && return 1
341
342 local VER=$@
343 echo ${VER%%[^[:digit:]]*}
344}
345
346# char *VER_minor(string)
347#
348# Return the Minor (Y of X.Y.Z) version
349#
350VER_minor() {
351 [[ -z $1 ]] && return 1
352
353 local VER=$@
354 VER=${VER#*.}
355 echo ${VER%%[^[:digit:]]*}
356}
357
358# char *VER_micro(string)
359#
360# Return the Micro (Z of X.Y.Z) version.
361#
362VER_micro() {
363 [[ -z $1 ]] && return 1
364
365 local VER=$@
366 VER=${VER#*.*.}
367 echo ${VER%%[^[:digit:]]*}
368}
369
370# int VER_to_int(string)
371#
372# Convert a string type version (2.4.0) to an int (132096)
373# for easy compairing or versions ...
374#
375VER_to_int() {
376 [[ -z $1 ]] && return 1
377
378 local VER_MAJOR=$(VER_major "$1")
379 local VER_MINOR=$(VER_minor "$1")
380 local VER_MICRO=$(VER_micro "$1")
381 local VER_int=$(( VER_MAJOR * 65536 + VER_MINOR * 256 + VER_MICRO ))
382
383 # We make version 1.0.0 the minimum version we will handle as
384 # a sanity check ... if its less, we fail ...
385 if [[ ${VER_int} -ge 65536 ]] ; then
386 echo "${VER_int}"
387 return 0
388 fi
389
390 echo 1
391 return 1
392}

Legend:
Removed from v.1.43  
changed lines
  Added in v.1.44

  ViewVC Help
Powered by ViewVC 1.1.20