commit:     7125dbc4af3e143c96174b52d7583b66933f22d7
Author:     Volkmar W. Pogatzki <gentoo <AT> pogatzki <DOT> net>
AuthorDate: Sat Feb  4 13:05:59 2023 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Fri Feb 10 09:50:48 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7125dbc4

java-utils-2.eclass: ECLASS_VARIABLE JAVA_PKG_NO_CLEAN

The new ECLASS_VARIABLE JAVA_PKG_NO_CLEAN is an array of expressions to
match *.class or *.jar files in order to  protect them against deletion
by java-pkg_clean.

This change helps in cases where most bundled *.class or *.jar files can
be deleted while only some few cannot be replaced with system libraries.

It also helps to visualize bundled stuff in the ebuild.

Cleaning does not work by default. It still needs java-pkg_clean within
src_prepare().

Signed-off-by: Volkmar W. Pogatzki <gentoo <AT> pogatzki.net>
Closes: https://github.com/gentoo/gentoo/pull/29470
Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org>

 eclass/java-utils-2.eclass | 27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/eclass/java-utils-2.eclass b/eclass/java-utils-2.eclass
index 4f50ce39c5dc..7641f9f40290 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,21 @@ 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 expressions to match *.class or *.jar files in order to  protect
+# them against deletion by java-pkg_clean.
+#
+# @CODE
+#      JAVA_PKG_NO_CLEAN=(
+#              "*/standard.jar"
+#              "*/launch4j.jar"
+#              "*/apps/jetty/apache-tomcat*"
+#              "*/lib/jetty*"
+#      )
+# @CODE
+
 # @ECLASS_VARIABLE: JAVA_PKG_WANT_BUILD_VM
 # @DEFAULT_UNSET
 # @DESCRIPTION:
@@ -2926,11 +2941,13 @@ is-java-strict() {
 # @FUNCTION: java-pkg_clean
 # @DESCRIPTION:
 # Java package cleaner function. This will remove all *.class and *.jar
-# files, removing any bundled dependencies.
+# files, except those specified by expressions in JAVA_PKG_NO_CLEAN.
 java-pkg_clean() {
-       if [[ -z "${JAVA_PKG_NO_CLEAN}" ]]; then
-               find "${@}" '(' -name '*.class' -o -name '*.jar' ')' -type f 
-delete -print || die
-       fi
+       NO_DELETE=()
+       for keep in ${JAVA_PKG_NO_CLEAN[@]}; do
+               NO_DELETE+=( '!' '-wholename' ${keep} )
+       done
+       find "${@}" '(' -name '*.class' -o -name '*.jar' ${NO_DELETE[@]} ')' 
-type f -delete -print || die
 }
 
 # @FUNCTION: java-pkg_gen-cp

Reply via email to