commit:     47c02b58de852189e468cbd0baffb3f5447b212e
Author:     Volkmar W. Pogatzki <gentoo <AT> pogatzki <DOT> net>
AuthorDate: Tue Oct  4 18:23:03 2022 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Tue Oct 11 13:14:18 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=47c02b58

java-pkg-simple.eclass: improve MANIFEST.MF manipulation

For adding Main-class and/or Automatic-module-name to MANIFEST.MF it
seems better to use "jar" functionality at the end of compilation.
This does the necessary checks and issues warnings in case of duplicate
entries.
Erroneously used existence checks ( -v ) were causing wrong entries in
MANIFEST.MF files in case of JAVA_MAIN_CLASS="" which is often used in
multi-jar ebuilds.

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

 eclass/java-pkg-simple.eclass | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/eclass/java-pkg-simple.eclass b/eclass/java-pkg-simple.eclass
index 7a9582393dd4..abac18ca03f8 100644
--- a/eclass/java-pkg-simple.eclass
+++ b/eclass/java-pkg-simple.eclass
@@ -415,15 +415,6 @@ java-pkg-simple_src_compile() {
        fi
 
        # package
-       [[ ! -d ${classes}/META-INF ]] && mkdir ${classes}/META-INF
-       if  [[ -v JAVA_AUTOMATIC_MODULE_NAME ]]; then
-               echo "Automatic-Module-Name: ${JAVA_AUTOMATIC_MODULE_NAME}" \
-                       >> ${classes}/META-INF/MANIFEST.MF || die "adding 
module name failed"
-       fi
-       if  [[ -v JAVA_MAIN_CLASS ]]; then
-               echo "Main-Class: ${JAVA_MAIN_CLASS}" \
-                       >> ${classes}/META-INF/MANIFEST.MF || die "adding main 
class failed"
-       fi
        local jar_args
        if [[ -e ${classes}/META-INF/MANIFEST.MF ]]; then
                jar_args="cfm ${JAVA_JAR_FILENAME} 
${classes}/META-INF/MANIFEST.MF"
@@ -431,6 +422,19 @@ java-pkg-simple_src_compile() {
                jar_args="cf ${JAVA_JAR_FILENAME}"
        fi
        jar ${jar_args} -C ${classes} . || die "jar failed"
+       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"
+       fi
+       if  [[ -n "${JAVA_MAIN_CLASS}" ]]; then
+               echo "Main-Class: ${JAVA_MAIN_CLASS}" \
+                       >> "${T}/add-to-MANIFEST.MF" || die "adding main class 
failed"
+       fi
+       if [[ -f "${T}/add-to-MANIFEST.MF" ]]; then
+               jar ufmv ${JAVA_JAR_FILENAME} "${T}/add-to-MANIFEST.MF" \
+                       || die "updating MANIFEST.MF failed"
+               rm -f "${T}/add-to-MANIFEST.MF" || die "cannot remove"
+       fi
 }
 
 # @FUNCTION: java-pkg-simple_src_install

Reply via email to