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

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

  ViewVC Help
Powered by ViewVC 1.1.20