The new ECLASS_VARIABLE JAVA_PKG_NO_CLEAN is defined as an array in which those *.class or *.jar files can be listed which should not be removed by java-pkg_clean. This change helps in cases where only a small parts of bundled stuff cannot be replaced with system libraries. It also helps to visualize not yet unbundled stuff in the ebuild.
Signed-off-by: Volkmar W. Pogatzki <gen...@pogatzki.net> --- eclass/java-utils-2.eclass | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/eclass/java-utils-2.eclass b/eclass/java-utils-2.eclass index 4f50ce39c5dc..5cd9d441f396 100644 --- a/eclass/java-utils-2.eclass +++ b/eclass/java-utils-2.eclass @@ -1,4 +1,4 @@ -# Copyright 2004-2022 Gentoo Authors +# Copyright 2004-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # @ECLASS: java-utils-2.eclass @@ -66,6 +66,18 @@ JAVA_PKG_ALLOW_VM_CHANGE=${JAVA_PKG_ALLOW_VM_CHANGE:="yes"} # JAVA_PKG_FORCE_VM=openjdk-11 emerge foo # @CODE +# @ECLASS_VARIABLE: JAVA_PKG_NO_CLEAN +# @DEFAULT_UNSET +# @DESCRIPTION: +# An array of *.class or *.jar files which must not be deleted by java-pkg_clean. +# +# @CODE +# JAVA_PKG_NO_CLEAN=( +# apps/susidns/src/lib/jstl.jar +# apps/susidns/src/lib/standard.jar +# ) +# @CODE + # @ECLASS_VARIABLE: JAVA_PKG_WANT_BUILD_VM # @DEFAULT_UNSET # @DESCRIPTION: @@ -2928,9 +2940,16 @@ is-java-strict() { # Java package cleaner function. This will remove all *.class and *.jar # files, removing any bundled dependencies. java-pkg_clean() { - if [[ -z "${JAVA_PKG_NO_CLEAN}" ]]; then - find "${@}" '(' -name '*.class' -o -name '*.jar' ')' -type f -delete -print || die - fi + pushd ${S} > /dev/null || die + local FILES_TO_DELETE=$(find * '(' -name '*.class' -o -name '*.jar' ')') + for keep in "${JAVA_PKG_NO_CLEAN[@]}"; do + FILES_TO_DELETE=${FILES_TO_DELETE//${keep}} + done + for delete in "${FILES_TO_DELETE[@]}"; do + echo "" + rm -v ${delete} || die + done + popd > /dev/null || die } # @FUNCTION: java-pkg_gen-cp -- 2.39.1