On 11/13/2013 10:14 AM, Michael Haubenwallner wrote: > Hi all, > > as you might or might not be aware of, elibtoolize() originally was for > applying > patches to ltmain.sh, but now also applies patches to configure scripts.
> Attached patch drops that wild guesses, explicitly applying configure-patches
> to
> configure scripts, while still explicitly applying ltconf.sh-patches to
> ltconf.sh.
One update to this patch, to run elibtoolize once per directory again,
even if both filenames are in that same directory:
- set -- $(find "${S}" '(' -name ltmain.sh -o -name configure ')'
-printf '%h ')
+ set -- $(find "${S}" '(' -name ltmain.sh -o -name configure ')'
-printf '%h\n' | sort -u)
> WDYT?
Without objections, I plan to commit this patch by the end of next week.
Thank you!
/haubi/
Index: libtool.eclass
===================================================================
RCS file: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v
retrieving revision 1.106
diff -u -r1.106 libtool.eclass
--- libtool.eclass 11 May 2013 11:17:58 -0000 1.106
+++ libtool.eclass 15 Nov 2013 09:57:08 -0000
@@ -204,9 +204,9 @@
# Reuse "$@" for dirs to patch
set --
if [[ ${do_shallow} == "yes" ]] ; then
- [[ -f ${S}/ltmain.sh ]] && set -- "${S}"
+ [[ -f ${S}/ltmain.sh || -f ${S}/configure ]] && set -- "${S}"
else
- set -- $(find "${S}" -name ltmain.sh -printf '%h ')
+ set -- $(find "${S}" '(' -name ltmain.sh -o -name configure ')'
-printf '%h\n' | sort -u)
fi
local d p
@@ -225,8 +225,12 @@
ewarn " avoid this if possible (perhaps by filing a
bug)"
fi
+ local ret
+
+ # patching ltmain.sh
+ [[ -f ${d}/ltmain.sh ]] &&
for p in ${elt_patches} ; do
- local ret=0
+ ret=0
case ${p} in
portage)
@@ -258,17 +262,6 @@
ELT_walk_patches "${d}/ltmain.sh" "${p}"
ret=$?
;;
- uclibc-conf)
- if grep -qs 'Transform linux'
"${d}/configure" ; then
- ELT_walk_patches
"${d}/configure" "${p}"
- ret=$?
- # ltmain.sh and co might be in a
subdirectory ...
- elif [[ ! -e ${d}/configure ]] && \
- grep -qs 'Transform linux'
"${d}/../configure" ; then
- ELT_walk_patches
"${d}/../configure" "${p}"
- ret=$?
- fi
- ;;
uclibc-ltconf)
# Newer libtoolize clears ltconfig, as
not used anymore
if [[ -s ${d}/ltconfig ]] ; then
@@ -276,34 +269,12 @@
ret=$?
fi
;;
- fbsd-conf)
- if grep -qs 'version_type=freebsd-'
"${d}/configure" ; then
- ELT_walk_patches
"${d}/configure" "${p}"
- ret=$?
- # ltmain.sh and co might be in a
subdirectory ...
- elif [[ ! -e ${d}/configure ]] && \
- grep -qs
'version_type=freebsd-' "${d}/../configure" ; then
- ELT_walk_patches
"${d}/../configure" "${p}"
- ret=$?
- fi
- ;;
fbsd-ltconf)
if [[ -s ${d}/ltconfig ]] ; then
ELT_walk_patches
"${d}/ltconfig" "${p}"
ret=$?
fi
;;
- darwin-conf)
- if grep -qs '&& echo \.so ||'
"${d}/configure" ; then
- ELT_walk_patches
"${d}/configure" "${p}"
- ret=$?
- # ltmain.sh and co might be in a
subdirectory ...
- elif [[ ! -e ${d}/configure ]] && \
- grep -qs '&& echo \.so ||'
"${d}/../configure" ; then
- ELT_walk_patches
"${d}/../configure" "${p}"
- ret=$?
- fi
- ;;
darwin-ltconf)
# Newer libtoolize clears ltconfig, as
not used anymore
if [[ -s ${d}/ltconfig ]] ; then
@@ -321,49 +292,6 @@
ret=$?
fi
;;
- aixrtl|hpux-conf)
- ret=1
- local subret=0
- # apply multiple patches as often as
they match
- while [[ $subret -eq 0 ]]; do
- subret=1
- if [[ -e ${d}/configure ]]; then
- ELT_walk_patches
"${d}/configure" "${p}"
- subret=$?
- # ltmain.sh and co might be in
a subdirectory ...
- elif [[ ! -e ${d}/configure &&
-e ${d}/../configure ]] ; then
- ELT_walk_patches
"${d}/../configure" "${p}"
- subret=$?
- fi
- if [[ $subret -eq 0 ]]; then
- # have at least one
patch succeeded.
- ret=0
- fi
- done
- ;;
- mint-conf|gold-conf|sol2-conf)
- ret=1
- local subret=1
- if [[ -e ${d}/configure ]]; then
- ELT_walk_patches
"${d}/configure" "${p}"
- subret=$?
- # ltmain.sh and co might be in a
subdirectory ...
- elif [[ -e ${d}/../configure ]] ; then
- ELT_walk_patches
"${d}/../configure" "${p}"
- subret=$?
- elif [[ -e ${d}/../../configure ]] ;
then
- ELT_walk_patches
"${d}/../../configure" "${p}"
- subret=$?
- fi
- if [[ $subret -eq 0 ]]; then
- # have at least one patch
succeeded.
- ret=0
- fi
- ;;
- target-nm)
- ELT_walk_patches "${d}/configure" "${p}"
- ret=$?
- ;;
install-sh)
ELT_walk_patches "${d}/install-sh"
"${p}"
ret=$?
@@ -421,15 +349,6 @@
uclibc-*)
[[ ${CHOST} == *-uclibc ]] &&
ewarn " uClibc patch set '${p}' failed to apply!"
;;
- fbsd-*)
- if [[ ${CHOST} == *-freebsd* ]]
; then
- if [[ -z $(grep 'Handle
Gentoo/FreeBSD as it was Linux' \
-
"${d}/configure" "${d}/../configure" 2>/dev/null) ]]; then
- eerror "
FreeBSD patch set '${p}' failed to apply!"
- die "FreeBSD
patch set '${p}' failed to apply!"
- fi
- fi
- ;;
darwin-*)
[[ ${CHOST} == *"-darwin"* ]]
&& ewarn " Darwin patch set '${p}' failed to apply!"
;;
@@ -437,6 +356,8 @@
fi
done
+ # makes sense for ltmain.sh patches only
+ [[ -f ${d}/ltmain.sh ]] &&
if [[ -z ${ELT_APPLIED_PATCHES} ]] ; then
if [[ ${do_portage} == "no" && \
${do_reversedeps} == "no" && \
@@ -448,6 +369,80 @@
fi
fi
+ # patching configure
+ [[ -f ${d}/configure ]] &&
+ for p in ${elt_patches} ; do
+ ret=0
+
+ case ${p} in
+ uclibc-conf)
+ if grep -qs 'Transform linux'
"${d}/configure" ; then
+ ELT_walk_patches
"${d}/configure" "${p}"
+ ret=$?
+ fi
+ ;;
+ fbsd-conf)
+ if grep -qs 'version_type=freebsd-'
"${d}/configure" ; then
+ ELT_walk_patches
"${d}/configure" "${p}"
+ ret=$?
+ fi
+ ;;
+ darwin-conf)
+ if grep -qs '&& echo \.so ||'
"${d}/configure" ; then
+ ELT_walk_patches
"${d}/configure" "${p}"
+ ret=$?
+ fi
+ ;;
+ aixrtl|hpux-conf)
+ ret=1
+ local subret=0
+ # apply multiple patches as often as
they match
+ while [[ $subret -eq 0 ]]; do
+ subret=1
+ if [[ -e ${d}/configure ]]; then
+ ELT_walk_patches
"${d}/configure" "${p}"
+ subret=$?
+ fi
+ if [[ $subret -eq 0 ]]; then
+ # have at least one
patch succeeded.
+ ret=0
+ fi
+ done
+ ;;
+ mint-conf|gold-conf|sol2-conf)
+ ELT_walk_patches "${d}/configure" "${p}"
+ ret=$?
+ ;;
+ target-nm)
+ ELT_walk_patches "${d}/configure" "${p}"
+ ret=$?
+ ;;
+ *)
+ # ltmain.sh patches are applied above
+ ;;
+ esac
+
+ if [[ ${ret} -ne 0 ]] ; then
+ case ${p} in
+ uclibc-*)
+ [[ ${CHOST} == *-uclibc ]] &&
ewarn " uClibc patch set '${p}' failed to apply!"
+ ;;
+ fbsd-*)
+ if [[ ${CHOST} == *-freebsd* ]]
; then
+ if [[ -z $(grep 'Handle
Gentoo/FreeBSD as it was Linux' \
+
"${d}/configure" 2>/dev/null) ]]; then
+ eerror "
FreeBSD patch set '${p}' failed to apply!"
+ die "FreeBSD
patch set '${p}' failed to apply!"
+ fi
+ fi
+ ;;
+ darwin-*)
+ [[ ${CHOST} == *"-darwin"* ]]
&& ewarn " Darwin patch set '${p}' failed to apply!"
+ ;;
+ esac
+ fi
+ done
+
rm -f "${d}/libtool"
> "${d}/.elibtoolized"
