• [gentoo-dev] [PATCH] java-utils-2.eclass: ECLASS_VARIABLE JAVA_PKG_NO_C

    From Volkmar W. Pogatzki@21:1/5 to All on Sat Feb 4 14:40:01 2023
    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 <gentoo@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
  • From Yuan Liao (Leo3418)@21:1/5 to Volkmar W. Pogatzki on Sat Feb 4 16:00:02 2023
    On Sat, Feb 04, 2023 at 02:29:31PM +0100, Volkmar W. Pogatzki wrote:
    @@ -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' ')')

    This could break existing ebuilds that pass argument to java-pkg_clean. ::gentoo has a few such ebuilds:

    $ git grep 'java-pkg_clean.\+$'
    dev-java/bcmail/bcmail-1.72.ebuild: java-pkg_clean .. dev-java/bcpg/bcpg-1.72.ebuild: java-pkg_clean .. dev-java/bcpkix/bcpkix-1.72.ebuild: java-pkg_clean .. dev-java/bcprov/bcprov-1.72.ebuild: java-pkg_clean .. dev-java/bcutil/bcutil-1.72.ebuild: java-pkg_clean .. dev-java/jakarta-mail-api/jakarta-mail-api-2.1.0-r1.ebuild: java-pkg_clean ..
    dev-java/javassist/javassist-3.29.2.ebuild: java-pkg_clean javassist.jar dev-java/osgi-annotation/osgi-annotation-8.1.0.ebuild: java-pkg_clean org dev-java/osgi-cmpn/osgi-cmpn-8.0.0.ebuild: java-pkg_clean org dev-java/osgi-core/osgi-core-8.0.0.ebuild: java-pkg_clean org dev-java/stringtemplate/stringtemplate-4.3.2.ebuild: # Do not call java-pkg_clean; otherwise, it would remove
    dev-java/swingx-ws/swingx-ws-1.0_p20110515-r2.ebuild: java-pkg_clean "${WORKDIR}"
    dev-java/testng/testng-6.9.10-r1.ebuild: java-pkg_clean ! -path "./src/*"
    dev-lang/nqp/nqp-2021.06.ebuild: java-pkg_clean 3rdparty/ dev-lang/nqp/nqp-2021.08.ebuild: java-pkg_clean 3rdparty/ dev-lang/nqp/nqp-2021.10.ebuild: java-pkg_clean 3rdparty/ dev-lang/nqp/nqp-9999.ebuild: java-pkg_clean 3rdparty/ eclass/java-utils-2.eclass:java-pkg_clean() {

    One ebuild that fails due to this change is
    dev-java/jakarta-mail-api-2.1.0-r1:

    Preparing source in /var/tmp/portage/dev-java/jakarta-mail-api-2.1.0-r1/work/mail-2.1.0/api ...

    rm: missing operand
    Try 'rm --help' for more information.
    * ERROR: dev-java/jakarta-mail-api-2.1.0-r1::gentoo failed (prepare
    * phase):
    * (no error message)
    *
    * Call stack:
    * ebuild.sh, line 136: Called src_prepare
    * environment, line 2476: Called java-pkg_clean '..'
    * environment, line 1173: Called die
    * The specific snippet of code:
    * rm -v ${delete} || die;

    -----BEGIN PGP SIGNATURE-----

    iQKTBAABCgB9FiEEVQAiTVd6QCDQ6toeWgiLsVYyEqkFAmPecJtfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDU1 MDAyMjRENTc3QTQwMjBEMEVBREExRTVBMDg4QkIxNTYzMjEyQTkACgkQWgiLsVYy EqnNOw//cgEtXOODhLYKFs5+k0DkmSbLg/WTLfJmgIwfOd3CWq3l5jncffRCw97J +yRsVAqVxj94hyjaQCqYNEf8cN3BGtyCiCfQ9WC5ZezSnWDXnKlyD0GaWien9HWq jykd3UlInoIr5mJJrEHTKAt6SHrW18tTvzAWyFtpFKWiCgWNPttHL6pxzv0AxZKg QFr4x49lK1iEAMqOmem8nEPdDSeekVwkipc4ZMXeF1BW7JJnHorZjqsEP/34AtYk qmzzXdT5h+aM+tSyFbUYwe+KnvHQioh2VmCcyO23zv3okFmw/JXPS9ePGVjK09+t IfnENaNK0pdtUobaip8YMRt+FHn9PzsVfp8cvQB4poeCAP4jhAwqo5RtV/B5N3rE s5tbp+Xry2AjSTle6wWfe0vqVNGQGC7ve7lqr0Beyn1pWdhdh4qBO0tIQKe4Q57e HOOWQlECBuKtHKmXvj+kBhU7TCYn5k7jJqn6VH4o1hn+scrfWCHXy/UacmECMz4P D60RZoUzaQk27PE3zVRcFjDMGvZqxdS+sD8pyYBBpN10Rj7X6z24Zu2rrAfSy8U7 9fSdciMg5G3f2BhtkhbPak+d52EsptJFAkt6XstVy9oK5THbA4/tE9R8bCxn1v5j h81K2FHmT0EzTyVdY/ZHlJ3auoGMSXoAugNnwIsnoOxFnV3Q0Yc=
    =SHBr
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)