x11-terms/mlterm: Fix typo in metadata.xml
[gentoo.git] / eclass / java-ant-2.eclass
index 982e3eef7659ee466bbc2223f0ee989f00fcc822..8da5971844a013ea4a024119306b61fb5e4d10df 100644 (file)
@@ -1,20 +1,5 @@
-# eclass for ant based Java packages
-#
-# Copyright (c) 2004-2005, Thomas Matthijs <axxo@gentoo.org>
-# Copyright (c) 2004-2011, Gentoo Foundation
-# Changes:
-#   May 2007:
-#     Made bsfix make one pass for all things and add some glocal targets for
-#     setting up the whole thing. Contributed by  kiorky
-#     (kiorky@cryptelium.net).
-#   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
-#
-# $Id$
+# Copyright 2004-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
 
 # @ECLASS: java-ant-2.eclass
 # @MAINTAINER:
@@ -58,7 +43,8 @@ inherit java-utils-2 multilib
 # Setting this variable non-empty before inheriting java-ant-2 disables adding
 # dev-java/ant-core into DEPEND.
 if [[ -z "${JAVA_ANT_DISABLE_ANT_CORE_DEP}" ]]; then
-               JAVA_ANT_E_DEPEND="${JAVA_ANT_E_DEPEND} >=dev-java/ant-core-1.8.2"
+       JAVA_ANT_E_DEPEND+=" >=dev-java/ant-core-1.8.2"
+       [[ "${EAPI:-0}" != 0 ]] && JAVA_ANT_E_DEPEND+=":0"
 fi
 
 # add ant tasks specified in WANT_ANT_TASKS to DEPEND
@@ -167,38 +153,21 @@ java-ant_bsfix() {
                echo "QA Notice: Package is using java-ant, but doesn't depend on a Java VM"
        fi
 
-       pushd "${S}" >/dev/null
+       pushd "${S}" >/dev/null || die
 
        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 } )"
 
-       # This voodoo is done for paths with spaces
-       local bsfix_these
-       while read line; do
-               [[ -z ${line} ]] && continue
-               bsfix_these="${bsfix_these} '${line}'"
-       done <<-EOF
-                       $(find . ${find_args})
-               EOF
+       local bsfix_these=() line
+       while IFS= read -r -d $'\0' line; do
+               bsfix_these+=( "${line}" )
+       done < <(find . ${find_args} -print0)
 
-       [[ "${bsfix_these// /}" ]] && eval java-ant_bsfix_files ${bsfix_these}
+       [[ "${bsfix_these[@]}" ]] && java-ant_bsfix_files "${bsfix_these[@]}"
 
-       popd > /dev/null
-}
-
-_bsfix_die() {
-       if has_version dev-python/pyxml; then
-               eerror "If the output above contains:"
-               eerror "ImportError:"
-               eerror "/usr/lib/python2.4/site-packages/_xmlplus/parsers/pyexpat.so:"
-               eerror "undefined symbol: PyUnicodeUCS2_DecodeUTF8"
-               eerror "Try re-emerging dev-python/pyxml"
-               die ${1} " Look at the eerror message above"
-       else
-               die ${1}
-       fi
+       popd > /dev/null || die
 }
 
 # @FUNCTION: java-ant_bsfix_files
@@ -241,7 +210,7 @@ java-ant_bsfix_files() {
                eerror "Please file a bug about this on bugs.gentoo.org"
                die "Could not find valid -source/-target values"
        else
-               local files
+               local files=()
 
                for file in "${@}"; do
                        debug-print "${FUNCNAME}: ${file}"
@@ -254,59 +223,30 @@ java-ant_bsfix_files() {
                                chmod u+w "${file}" || die "chmod u+w ${file} failed"
                        fi
 
-                       files="${files} -f '${file}'"
+                       files+=( -f "${file}" )
                done
 
-               # for javadoc target and all in one pass, we need the new rewriter.
-               local rewriter3="/usr/share/javatoolkit/xml-rewrite-3.py"
-               if [[ ! -f ${rewriter3} ]]; then
-                       rewriter3="/usr/$(get_libdir)/javatoolkit/bin/xml-rewrite-3.py"
-               fi
-
-               local rewriter4="/usr/$(get_libdir)/javatoolkit/bin/build-xml-rewrite"
+               local rewriter3="${EPREFIX}/usr/$(get_libdir)/javatoolkit/bin/xml-rewrite-3.py"
+               local rewriter4="${EPREFIX}/usr/$(get_libdir)/javatoolkit/bin/build-xml-rewrite"
 
                if [[ -x ${rewriter4} && ${JAVA_ANT_ENCODING} ]]; then
                        [[ ${JAVA_ANT_REWRITE_CLASSPATH} ]] && local gcp="-g"
                        [[ ${JAVA_ANT_ENCODING} ]] && local enc="-e ${JAVA_ANT_ENCODING}"
-                       eval echo "cElementTree rewriter"
+                       echo "cElementTree rewriter"
                        debug-print "${rewriter4} extra args: ${gcp} ${enc}"
                        ${rewriter4} ${gcp} ${enc} \
                                -c "${JAVA_PKG_BSFIX_SOURCE_TAGS}" source ${want_source} \
                                -c "${JAVA_PKG_BSFIX_TARGET_TAGS}" target ${want_target} \
                                "${@}" || die "build-xml-rewrite failed"
-               elif [[ ! -f ${rewriter3} ]]; then
-                       debug-print "Using second generation rewriter"
-                       eval echo "Rewriting source attributes"
-                       eval xml-rewrite-2.py ${files} \
-                               -c -e ${JAVA_PKG_BSFIX_SOURCE_TAGS// / -e } \
-                               -a source -v ${want_source} || _bsfix_die "xml-rewrite2 failed: ${file}"
-
-                       eval echo "Rewriting target attributes"
-                       eval xml-rewrite-2.py ${files} \
-                               -c -e ${JAVA_PKG_BSFIX_TARGET_TAGS// / -e } \
-                               -a target -v ${want_target} || _bsfix_die "xml-rewrite2 failed: ${file}"
-
-                       eval echo "Rewriting nowarn attributes"
-                       eval xml-rewrite-2.py ${files} \
-                               -c -e ${JAVA_PKG_BSFIX_TARGET_TAGS// / -e } \
-                               -a nowarn -v yes || _bsfix_die "xml-rewrite2 failed: ${file}"
-
-                       if [[ ${JAVA_ANT_REWRITE_CLASSPATH} ]]; then
-                               eval echo "Adding gentoo.classpath to javac tasks"
-                               eval xml-rewrite-2.py ${files} \
-                                        -c -e javac -e xjavac -a classpath -v \
-                                        '\${gentoo.classpath}' \
-                                        || _bsfix_die "xml-rewrite2 failed"
-                       fi
                else
                        debug-print "Using third generation rewriter"
-                       eval echo "Rewriting attributes"
-                       local bsfix_extra_args=""
+                       echo "Rewriting attributes"
+                       local bsfix_extra_args=()
                        # WARNING KEEP THE ORDER, ESPECIALLY FOR CHANGED ATTRIBUTES!
                        if [[ -n ${JAVA_ANT_REWRITE_CLASSPATH} ]]; then
                                local cp_tags="${JAVA_ANT_CLASSPATH_TAGS// / -e }"
-                               bsfix_extra_args="${bsfix_extra_args} -g -e ${cp_tags}"
-                               bsfix_extra_args="${bsfix_extra_args} -a classpath -v '\${gentoo.classpath}'"
+                               bsfix_extra_args+=( -g -e ${cp_tags} )
+                               bsfix_extra_args+=( -a classpath -v '${gentoo.classpath}' )
                        fi
                        if [[ -n ${JAVA_ANT_JAVADOC_INPUT_DIRS} ]]; then
                                if [[ -n ${JAVA_ANT_JAVADOC_OUTPUT_DIR} ]]; then
@@ -330,12 +270,12 @@ java-ant_bsfix_files() {
                                                                die "You must specify directories for javadoc input/output dirs."
                                                        fi
                                                done
-                                               bsfix_extra_args="${bsfix_extra_args} --javadoc --source-directory "
+                                               bsfix_extra_args+=( --javadoc --source-directory )
                                                # filter third/double spaces
                                                JAVA_ANT_JAVADOC_INPUT_DIRS=${JAVA_ANT_JAVADOC_INPUT_DIRS//   /}
                                                JAVA_ANT_JAVADOC_INPUT_DIRS=${JAVA_ANT_JAVADOC_INPUT_DIRS//  /}
-                                               bsfix_extra_args="${bsfix_extra_args} ${JAVA_ANT_JAVADOC_INPUT_DIRS// / --source-directory }"
-                                               bsfix_extra_args="${bsfix_extra_args} --output-directory ${JAVA_ANT_JAVADOC_OUTPUT_DIR}"
+                                               bsfix_extra_args+=( ${JAVA_ANT_JAVADOC_INPUT_DIRS// / --source-directory } )
+                                               bsfix_extra_args+=( --output-directory "${JAVA_ANT_JAVADOC_OUTPUT_DIR}" )
                                        fi
                                else
                                        die "You need to have doc in IUSE when using JAVA_ANT_JAVADOC_INPUT_DIRS"
@@ -343,18 +283,18 @@ java-ant_bsfix_files() {
                        fi
 
                        [[ -n ${JAVA_ANT_BSFIX_EXTRA_ARGS} ]] \
-                               && bsfix_extra_args="${bsfix_extra_args} ${JAVA_ANT_BSFIX_EXTRA_ARGS}"
+                               && bsfix_extra_args+=( ${JAVA_ANT_BSFIX_EXTRA_ARGS} )
 
-                       debug-print "bsfix_extra_args: ${bsfix_extra_args}"
+                       debug-print "bsfix_extra_args: ${bsfix_extra_args[*]}"
 
-                       eval ${rewriter3}  ${files} \
+                       ${rewriter3} "${files[@]}" \
                                -c --source-element ${JAVA_PKG_BSFIX_SOURCE_TAGS// / --source-element } \
                                --source-attribute source --source-value ${want_source} \
                                --target-element   ${JAVA_PKG_BSFIX_TARGET_TAGS// / --target-element }  \
                                --target-attribute target --target-value ${want_target} \
                                --target-attribute nowarn --target-value yes \
-                               ${bsfix_extra_args} \
-                               || _bsfix_die "xml-rewrite2 failed: ${file}"
+                               "${bsfix_extra_args[@]}" \
+                               || die "xml-rewrite-3 failed: ${file}"
                fi
 
                if [[ -n "${JAVA_PKG_DEBUG}" ]]; then
@@ -371,7 +311,7 @@ java-ant_bsfix_files() {
 # @USAGE: <path/to/build.xml>
 # @DESCRIPTION:
 # Attempts to fix named build file.
-# 
+#
 # @CODE
 # Affected by variables:
 #      JAVA_PKG_BSFIX_SOURCE_TAGS
@@ -419,40 +359,6 @@ java-ant_rewrite-classpath() {
        fi
 }
 
-# @FUNCTION: java-ant_remove-taskdefs
-# @USAGE: [--name NAME] [path/to/build.xml]
-# @DESCRIPTION:
-# Removes (named) taskdef elements from the build.xml file.
-# When --name NAME is specified, only remove taskdef with name NAME. Otherwise,
-# all taskdefs are removed.
-# The file to rewrite defaults to build.xml when not specified.
-java-ant_remove-taskdefs() {
-       debug-print-function ${FUNCNAME} $*
-
-       die "${FUNCNAME} has been banned, see bug #479838."
-
-       local task_name
-       if [[ "${1}" == --name ]]; then
-               task_name="${2}"
-               shift 2
-       fi
-       local file="${1:-build.xml}"
-       echo "Removing taskdefs from ${file}"
-       python <<EOF
-import sys
-from xml.dom.minidom import parse
-dom = parse("${file}")
-for elem in dom.getElementsByTagName('taskdef'):
-       if (len("${task_name}") == 0 or elem.getAttribute("name") == "${task_name}"):
-               elem.parentNode.removeChild(elem)
-               elem.unlink()
-f = open("${file}", "w")
-dom.writexml(f)
-f.close()
-EOF
-       [[ $? != 0 ]] && die "Removing taskdefs failed"
-}
-
 # @FUNCTION: java-ant_ignore-system-classes
 # @USAGE: [path/to/build.xml]
 # @DESCRIPTION:
@@ -471,8 +377,8 @@ java-ant_ignore-system-classes() {
 # @DESCRIPTION:
 # Run the right xml-rewrite binary with the given arguments
 java-ant_xml-rewrite() {
-       local gen2="/usr/bin/xml-rewrite-2.py"
-       local gen2_1="/usr/$(get_libdir)/javatoolkit/bin/xml-rewrite-2.py"
+       local gen2="${EPREFIX}/usr/bin/xml-rewrite-2.py"
+       local gen2_1="${EPREFIX}/usr/$(get_libdir)/javatoolkit/bin/xml-rewrite-2.py"
        # gen1 is deprecated
        if [[ -x "${gen2}" ]]; then
                ${gen2} "${@}" || die "${gen2} failed"