/[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.47
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.47 2005/05/27 23:46:13 vapier 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
225 if [[ ${do_portage} == "no" && \ 250 if [[ ${do_portage} == "no" && \
226 ${do_reversedeps} == "no" && \ 251 ${do_reversedeps} == "no" && \
227 ${do_only_patches} == "no" && \ 252 ${do_only_patches} == "no" && \
228 ${deptoremove} == "" ]] 253 ${deptoremove} == "" ]]
229 then 254 then
255 ewarn "Cannot apply any patches, please file a bug about this"
256 break
257
230 # Sometimes ltmain.sh is in a subdirectory ... 258 # Sometimes ltmain.sh is in a subdirectory ...
231 if [[ ! -f ${x}/configure.in && ! -f ${x}/configure.ac ]] ; then 259 if [[ ! -f ${x}/configure.in && ! -f ${x}/configure.ac ]] ; then
232 if [[ -f ${x}/../configure.in || -f ${x}/../configure.ac ]] ; then 260 if [[ -f ${x}/../configure.in || -f ${x}/../configure.ac ]] ; then
233 cd "${x}"/../ 261 cd "${x}"/../
234 fi 262 fi
235 fi 263 fi
236 264
237 if type -p libtoolize &> /dev/null ; then 265 if type -p libtoolize &> /dev/null ; then
238 ewarn "Cannot apply any patch, running libtoolize..." 266 ewarn "Cannot apply any patches, running libtoolize..."
239 libtoolize --copy --force 267 libtoolize --copy --force
240 fi 268 fi
241 cd "${x}" 269 cd "${x}"
242 break 270 break
243 fi 271 fi
316 eend $? "PLEASE CHECK ${x}" 344 eend $? "PLEASE CHECK ${x}"
317 ;; 345 ;;
318 esac 346 esac
319 done 347 done
320} 348}
349
350# char *VER_major(string)
351#
352# Return the Major (X of X.Y.Z) version
353#
354VER_major() {
355 [[ -z $1 ]] && return 1
356
357 local VER=$@
358 echo ${VER%%[^[:digit:]]*}
359}
360
361# char *VER_minor(string)
362#
363# Return the Minor (Y of X.Y.Z) version
364#
365VER_minor() {
366 [[ -z $1 ]] && return 1
367
368 local VER=$@
369 VER=${VER#*.}
370 echo ${VER%%[^[:digit:]]*}
371}
372
373# char *VER_micro(string)
374#
375# Return the Micro (Z of X.Y.Z) version.
376#
377VER_micro() {
378 [[ -z $1 ]] && return 1
379
380 local VER=$@
381 VER=${VER#*.*.}
382 echo ${VER%%[^[:digit:]]*}
383}
384
385# int VER_to_int(string)
386#
387# Convert a string type version (2.4.0) to an int (132096)
388# for easy compairing or versions ...
389#
390VER_to_int() {
391 [[ -z $1 ]] && return 1
392
393 local VER_MAJOR=$(VER_major "$1")
394 local VER_MINOR=$(VER_minor "$1")
395 local VER_MICRO=$(VER_micro "$1")
396 local VER_int=$(( VER_MAJOR * 65536 + VER_MINOR * 256 + VER_MICRO ))
397
398 # We make version 1.0.0 the minimum version we will handle as
399 # a sanity check ... if its less, we fail ...
400 if [[ ${VER_int} -ge 65536 ]] ; then
401 echo "${VER_int}"
402 return 0
403 fi
404
405 echo 1
406 return 1
407}

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

  ViewVC Help
Powered by ViewVC 1.1.20