-# 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:
# 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
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
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}"
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
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"
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
# @USAGE: <path/to/build.xml>
# @DESCRIPTION:
# Attempts to fix named build file.
-#
+#
# @CODE
# Affected by variables:
# JAVA_PKG_BSFIX_SOURCE_TAGS
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:
# @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"