There was too much of '--release ${version}' leading to validation
errors and preventing successful creation of the jar when packaging
(jar --create -f ) dev-java/fastdoubleparser. Removing it and changing
the output directory of multi-release classes solves the problem and
allows removal of the multi_release variable.

Signed-off-by: Volkmar W. Pogatzki <gen...@pogatzki.net>
---
 eclass/java-pkg-simple.eclass | 29 +++++++++++------------------
 1 file changed, 11 insertions(+), 18 deletions(-)

diff --git a/eclass/java-pkg-simple.eclass b/eclass/java-pkg-simple.eclass
index 0cce6a2cdfa8..40271156bb3a 100644
--- a/eclass/java-pkg-simple.eclass
+++ b/eclass/java-pkg-simple.eclass
@@ -598,7 +598,7 @@ java-pkg-simple_src_compile() {
 
                        # compile sources in ${reldir}
                        ejavac \
-                               -d target/versions/${release} \
+                               -d ${classes}/META-INF/versions/${release} \
                                -encoding ${JAVA_ENCODING} \
                                -classpath 
"${modulepath}:${JAVA_INTERMEDIATE_JAR_NAME}.jar" \
                                --module-path 
"${modulepath}:${JAVA_INTERMEDIATE_JAR_NAME}.jar" \
@@ -606,7 +606,7 @@ java-pkg-simple_src_compile() {
                                --patch-module 
"${JAVA_INTERMEDIATE_JAR_NAME}"="${JAVA_INTERMEDIATE_JAR_NAME}.jar" \
                                ${JAVAC_ARGS} $(find ${reldir} -type f -name 
'*.java')
 
-                       
JAVA_GENTOO_CLASSPATH_EXTRA+=":target/versions/${release}"
+                       
JAVA_GENTOO_CLASSPATH_EXTRA+=":${classes}/META-INF/versions/${release}"
                done
 
                JAVA_PKG_WANT_SOURCE=${tmp_source}
@@ -681,21 +681,7 @@ java-pkg-simple_src_compile() {
        fi
 
        # package
-       local jar_args multi_release=""
-       if [[ -n ${JAVA_RELEASE_SRC_DIRS[@]} ]]; then
-               # Preparing the multi_release variable. From multi-release 
compilation
-               # the release-specific classes are sorted in 
target/versions/${release}
-               # directories.
-
-               # TODO:
-               # Could this possibly be simplified with printf?
-               pushd target/versions > /dev/null || die
-                       for version in $(ls -d * | sort -g); do
-                               debug-print "Version is ${version}"
-                               multi_release="${multi_release} --release 
${version} -C target/versions/${version} . "
-                       done
-               popd > /dev/null || die
-       fi
+       local jar_args
 
        if [[ -e ${classes}/META-INF/MANIFEST.MF ]]; then
                sed '/Created-By: /Id' -i ${classes}/META-INF/MANIFEST.MF
@@ -703,7 +689,14 @@ java-pkg-simple_src_compile() {
        else
                jar_args="cf ${JAVA_JAR_FILENAME}"
        fi
-       jar ${jar_args} -C ${classes} . ${multi_release} || die "jar failed"
+       jar ${jar_args} -C ${classes} . || die "jar failed"
+
+       if [[ -n ${JAVA_RELEASE_SRC_DIRS[@]} ]]; then
+               # From multi-release compilation the release-specific classes 
are sorted
+               # in target/classes/META-INF/versions/${release} directories.
+               echo 'Multi-Release: true' >> "${T}/add-to-MANIFEST.MF" || die 
"add true"
+       fi
+
        if  [[ -n "${JAVA_AUTOMATIC_MODULE_NAME}" ]]; then
                echo "Automatic-Module-Name: ${JAVA_AUTOMATIC_MODULE_NAME}" \
                        >> "${T}/add-to-MANIFEST.MF" || die "adding module name 
failed"
-- 
2.41.0


Reply via email to