diff --git a/sdk_container/src/third_party/portage-stable/eclass/java-utils-2.eclass b/sdk_container/src/third_party/portage-stable/eclass/java-utils-2.eclass index 4f50ce39c5..c1f42408e4 100644 --- a/sdk_container/src/third_party/portage-stable/eclass/java-utils-2.eclass +++ b/sdk_container/src/third_party/portage-stable/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 @@ -6,7 +6,7 @@ # java@gentoo.org # @AUTHOR: # Thomas Matthijs , Karl Trygve Kalleberg -# @SUPPORTED_EAPIS: 5 6 7 8 +# @SUPPORTED_EAPIS: 6 7 8 # @BLURB: Base eclass for Java packages # @DESCRIPTION: # This eclass provides functionality which is used by java-pkg-2.eclass, @@ -18,7 +18,7 @@ # Ant-based packages. case ${EAPI:-0} in - [5678]) ;; + [678]) ;; *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;; esac @@ -27,7 +27,7 @@ _JAVA_UTILS_2_ECLASS=1 # EAPI 7 has version functions built-in. Use eapi7-ver for all earlier eclasses. # Keep versionator inheritance in case consumers are using it implicitly. -[[ ${EAPI} == [56] ]] && inherit eapi7-ver eutils multilib versionator +[[ ${EAPI} == 6 ]] && inherit eapi7-ver eutils multilib versionator # Make sure we use java-config-2 export WANT_JAVA_CONFIG="2" @@ -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: @@ -1919,12 +1934,8 @@ etestng() { # Don't call directly, but via java-pkg-2_src_prepare! java-utils-2_src_prepare() { case ${EAPI:-0} in - 5) - java-pkg_func-exists java_prepare && java_prepare ;; - *) - java-pkg_func-exists java_prepare && - eqawarn "java_prepare is no longer called, define src_prepare instead." - eapply_user ;; + [678]) eapply_user ;; + *) default_src_prepare ;; esac # Check for files in JAVA_RM_FILES array. @@ -1940,6 +1951,12 @@ java-utils-2_src_prepare() { find "${WORKDIR}" -name "*.class" echo "Search done." fi + + # Delete bundled .class and .jar files. + case ${EAPI:-0} in + [678]) ;; + *) java-pkg_clean ;; + esac } # @FUNCTION: java-utils-2_pkg_preinst @@ -2926,11 +2943,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+=( '!' '-path' ${keep} ) + done + find "${@}" '(' -name '*.class' -o -name '*.jar' ${NO_DELETE[@]} ')' -type f -delete -print || die } # @FUNCTION: java-pkg_gen-cp