Bug 2062407 - msgfmt --java2 option doesn't work with java-17-openjdk
Summary: msgfmt --java2 option doesn't work with java-17-openjdk
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: gettext
Version: rawhide
Hardware: All
OS: Linux
unspecified
low
Target Milestone: ---
Assignee: Sundeep Anand
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 2024265 2182696 2182697
TreeView+ depends on / blocked
 
Reported: 2022-03-09 17:27 UTC by Jerry James
Modified: 2023-03-29 12:02 UTC (History)
8 users (show)

Fixed In Version: gettext-0.21-13.fc37.0.20220203
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
: 2182696 2182697 (view as bug list)
Environment:
Last Closed: 2022-04-05 06:32:39 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
ar.po extracted from jmol source (49.96 KB, text/plain)
2022-03-20 14:16 UTC, Mamoru TASAKA
no flags Details
temtative patch to support jdk17 (5.35 KB, patch)
2022-03-20 14:25 UTC, Mamoru TASAKA
no flags Details | Diff

Description Jerry James 2022-03-09 17:27:55 UTC
Description of problem:
I noticed while building jmol that every invocation of msgfmt failed, e.g.:

update-application-catalog-lang:
     [echo] msgfmt Updating messages_ar.class file for Jmol ...
     [exec] msgfmt: Java compiler not found, try installing gcj or set $JAVAC
     [exec] msgfmt: compilation of Java class failed, please try --verbose or set $JAVAC
     [exec] 65 translated messages, 3 fuzzy translations, 380 untranslated messages.
     [exec] Result: 1

Setting JAVAC does *not* help.  I used strace to see how javac is invoked and found the problem: msgfmt passes -target 1.6, and sometimes -source 1.6, to javac.  Now that OpenJDK 17 is the default in Fedora, those arguments are no longer valid.  I don't remember if the minimum allowed is 1.7 or 1.8, but it is one of the two.  Since Fedora doesn't ship a JDK lower than 1.8, then 1.8 might as well be used.

Version-Release number of selected component (if applicable):
gettext-0.21-11.fc37.0.20220228

How reproducible:
Always

Steps to Reproduce:
1. fedpkg clone jmol
2. cd jmol
3. fedpkg srpm
4. mock -r fedora-rawhide-x86_64 --rebuild jmol-14.32.22-1.fc37.src.rpm

Actual results:
The msgfmt invocations all fail.

Expected results:
The msgfmt invocations should succeed.

Additional info:

Comment 1 Mamoru TASAKA 2022-03-20 14:16:57 UTC
Created attachment 1866962 [details]
ar.po extracted from jmol source

So the simple reproducer for this is:

$ mock --verbose -r fedora-rawhide-x86_64 --uniqueext gettext-test --init
$ mock --verbose -r fedora-rawhide-x86_64 --uniqueext gettext-test --install java-devel gettext
$ mock --verbose -r fedora-rawhide-x86_64 --uniqueext gettext-test --copyin ./ar.po /builddir/build/BUILD
$ mock --verbose -r fedora-rawhide-x86_64 --uniqueext gettext-test --chroot -- msgfmt  --statistics --java2 -l ar -d /builddir/build/BUILD/TMP -r org.jmol.translation.Jmol.ar.Messages /builddir/build/BUILD/ar.po

Then:
msgfmt: Java compiler not found, try installing gcj or set $JAVAC
msgfmt: compilation of Java class failed, please try --verbose or set $JAVAC
65 translated messages, 3 fuzzy translations, 380 untranslated messages.
DEBUG: Child return code was: 1

Comment 2 Mamoru TASAKA 2022-03-20 14:25:47 UTC
Created attachment 1866963 [details]
temtative patch to support jdk17

So this is actually msgfmt calls javac with "-source 1.5 -target 1.6" explicitly:
 
  see gettext-tools/src/write-java.c "compile_java_class" call in "msgdomain_write_java" and related functions in gettext-tools/gnulib-lib/javacomp.c .

The attached patch is a draft for fixing this issue. Note that get_goodcode_snippet() and get_failcode_snippet() may need more adjustment: I guess get_goodcode_snippet() needs the code which compiles with JDK17 but fails with JDK11, however I don't know such code in detail.

Comment 3 Mamoru TASAKA 2022-03-30 11:50:50 UTC
Are there any updates here? I think all needed information is provided.

Comment 4 Jens Petersen 2022-03-31 03:27:32 UTC
Thank you very much, Tasaka-san!

Sorry, Sundeep has been away on holiday for two weeks.

I have added your patch to the rawhide branch.

We have one more problem: currently gettext-0.21 FTBFS on F36+.
So we have a git snapshot currently in Rawhide,
but maybe we can use that for F36 now to address this.

Comment 5 Jens Petersen 2022-03-31 03:28:20 UTC
Can you try testing gettext-0.21-13.fc37.0.20220203 to see if it works for you?

Comment 6 Mamoru TASAKA 2022-03-31 07:16:05 UTC
Yes, gettext-0.21-13.fc37.0.20220203 looks working. Thank you.


Note You need to log in before you can comment on or make changes to this bug.