From dcf31974a4682f4d88c843c4085b108bd549d1d6 Mon Sep 17 00:00:00 2001 From: Petteri Räty Date: Wed, 27 Dec 2006 18:46:01 +0000 Subject: Reworked the eclass to work with xml-rewrite-2.py that is way faster. --- eclass/java-ant-2.eclass | 109 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 81 insertions(+), 28 deletions(-) (limited to 'eclass/java-ant-2.eclass') diff --git a/eclass/java-ant-2.eclass b/eclass/java-ant-2.eclass index 44087abfc6ba..c2ee91c06b5f 100644 --- a/eclass/java-ant-2.eclass +++ b/eclass/java-ant-2.eclass @@ -2,10 +2,15 @@ # # Copyright (c) 2004-2005, Thomas Matthijs # Copyright (c) 2004-2005, Gentoo Foundation +# Changes: +# December 2006: +# I pretty much rewrote the logic of the bsfix functions +# and xml-rewrite.py because they were so slow +# Petteri Räty (betelgeuse@gentoo.org) # # Licensed under the GNU General Public License, v2 # -# $Header: /var/cvsroot/gentoo-x86/eclass/java-ant-2.eclass,v 1.9 2006/12/03 13:05:06 betelgeuse Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/java-ant-2.eclass,v 1.10 2006/12/27 18:46:01 betelgeuse Exp $ inherit java-utils-2 @@ -105,70 +110,118 @@ java-ant_bsfix() { echo "QA Notice: Package is using java-ant, but doesn't depend on a Java VM" fi - cd "${S}" + pushd "${S}" >/dev/null local find_args="" [[ "${JAVA_PKG_BSFIX_ALL}" == "yes" ]] || find_args="-maxdepth 1" find_args="${find_args} -type f -name ${JAVA_PKG_BSFIX_NAME// / -o -name } " - local i=0 - local -a bsfix_these + # This voodoo is done for paths with spaces + local bsfix_these while read line; do [[ -z ${line} ]] && continue - bsfix_these[${i}]="${line}" - let i+=1 + bsfix_these="${bsfix_these} '${line}'" done <<-EOF $(find . ${find_args}) EOF - for (( i = 0 ; i < ${#bsfix_these[@]} ; i++ )); do - local file="${bsfix_these[${i}]}" - java-ant_bsfix_one "${file}" - done + [[ "${bsfix_these// /}" ]] && eval java-ant_bsfix_files ${bsfix_these} + + popd > /dev/null } # ------------------------------------------------------------------------------ -# @public java-ant_bsfix_one +# @public java-ant_bsfix_files # -# Attempts to fix named build file. The following variables will affect its behavior +# Attempts to fix named build files. The following variables will affect its behavior # as listed above: # JAVA_PKG_BSFIX_SOURCE_TAGS # JAVA_PKG_BSFIX_TARGET_TAGS +# +# When changing this function, make sure that it works with paths with spaces in +# them. # ------------------------------------------------------------------------------ -java-ant_bsfix_one() { +java-ant_bsfix_files() { debug-print-function ${FUNCNAME} $* - if [ -z "${1}" ]; then - eerror "java-ant_bsfix_one needs one argument" - die "java-ant_bsfix_one needs one argument" - fi + [[ ${#} = 0 ]] && die "${FUNCNAME} called without arguments" local want_source="$(java-pkg_get-source)" local want_target="$(java-pkg_get-target)" - debug-print "bsfix_one: target: ${want_target} source: ${want_source}" + debug-print "${FUNCNAME}: target: ${want_target} source: ${want_source}" if [ -z "${want_source}" -o -z "${want_target}" ]; then eerror "Could not find valid -source/-target values" eerror "Please file a bug about this on bugs.gentoo.org" die "Could not find valid -source/-target values" else - local file="${1}" - echo "Rewriting ${file}" - debug-print "bsfix: ${file}" + local files + + [[ -x "/usr/bin/xml-rewrite-2.py" ]] && local using_new="true" + + for file in "${@}"; do + debug-print "${FUNCNAME}: ${file}" + + if [[ -n "${JAVA_PKG_DEBUG}" ]]; then + cp "${file}" "${file}.orig" || die "failed to copy ${file}" + fi + + if [[ ! -w "${file}" ]]; then + chmod u+w "${file}" || die "chmod u+w ${file} failed" + fi + + files="${files} -f '${file}'" + + if [[ -z "${using_new}" ]]; then + vecho "Rewriting $file (using xml-rewrite.py)" + # Doing this twice because otherwise the source attributes would + # get added to target tags too and javadoc does not like target + xml-rewrite.py -f "${file}" -c -e ${JAVA_PKG_BSFIX_SOURCE_TAGS// / -e } -a source -v ${want_source} || die "xml-rewrite failed: ${file}" + xml-rewrite.py -f "${file}" -c -e ${JAVA_PKG_BSFIX_TARGET_TAGS// / -e } -a target -v ${want_target} || die "xml-rewrite failed: ${file}" + fi + done + + if [[ "${using_new}" ]]; then + quiet_mode && local output=">/dev/null" + vecho "Rewriting source attributes" + eval xml-rewrite-2.py ${files} \ + -c -e ${JAVA_PKG_BSFIX_SOURCE_TAGS// / -e } \ + -a source -v ${want_source} ${output} || die "xml-rewrite2 failed: ${file}" + + vecho "Rewriting target attributes" + eval xml-rewrite-2.py ${files} \ + -c -e ${JAVA_PKG_BSFIX_TARGET_TAGS// / -e } \ + -a target -v ${want_target} ${output} || die "xml-rewrite2 failed: ${file}" + fi - cp "${file}" "${file}.orig" || die "failed to copy ${file}" + if [[ -n "${JAVA_PKG_DEBUG}" ]]; then + for file in "${@}"; do + diff -NurbB "${file}.orig" "${file}" + done + fi + fi +} - chmod u+w "${file}" - xml-rewrite.py -f "${file}" -c -e ${JAVA_PKG_BSFIX_SOURCE_TAGS// / -e } -a source -v ${want_source} || die "xml-rewrite failed: ${file}" - xml-rewrite.py -f "${file}" -c -e ${JAVA_PKG_BSFIX_TARGET_TAGS// / -e } -a target -v ${want_target} || die "xml-rewrite failed: ${file}" +# ------------------------------------------------------------------------------ +# @public java-ant_bsfix_one +# +# Attempts to fix named build file. The following variables will affect its behavior +# as listed above: +# JAVA_PKG_BSFIX_SOURCE_TAGS +# JAVA_PKG_BSFIX_TARGET_TAGS +# ------------------------------------------------------------------------------ +java-ant_bsfix_one() { + debug-print-function ${FUNCNAME} $* - if [[ -n "${JAVA_PKG_DEBUG}" ]]; then - diff -NurbB "${file}.orig" "${file}" - fi + if [ -z "${1}" ]; then + eerror "${FUNCNAME} needs one argument" + die "${FUNCNAME} needs one argument" fi + + java-ant_bsfix_files "${1}" } # ------------------------------------------------------------------------------ -- cgit v1.2.3-65-gdbad