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.
The problem is that finding configure scripts to be patched is based on where ltmain.sh is found in ${S}, wild guessing that ltmain.sh may reside in subdirectories, trying ./configure, ../configure and ../../configure inconsistently. But especially with gettext, this wild guess does not identify each configure script. Attached patch drops that wild guesses, explicitly applying configure-patches to configure scripts, while still explicitly applying ltconf.sh-patches to ltconf.sh. WDYT? 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 12 Nov 2013 10:10:46 -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 ') 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"