File gettext-0.21-jdk17.patch of Package gettext-runtime

--- gettext-0.21/gettext-runtime/configure.ac	2022-04-08 16:40:35.014012388 +0200
+++ gettext-0.21/gettext-runtime/configure.ac	2022-04-08 16:42:34.054638232 +0200
@@ -34,7 +34,7 @@
 
 gt_JAVA_CHOICE
 
-gt_JAVACOMP([1.5], [1.6])
+gt_JAVACOMP([1.8], [1.8])
 AC_CHECK_PROG([JAR], [jar], [jar])
 if test -n "$HAVE_JAVACOMP" && test -n "$JAR" && test "$JAVA_CHOICE" != no; then
   BUILDJAVA=yes
--- gettext-0.21/gettext-tools/configure.ac	2022-04-08 16:40:35.138012934 +0200
+++ gettext-0.21/gettext-tools/configure.ac	2022-04-08 16:59:13.080602790 +0200
@@ -35,7 +35,7 @@
 gt_JAVA_CHOICE
 
 gt_JAVAEXEC
-gt_JAVACOMP([1.5])
+gt_JAVACOMP([1.8], [1.8])
 AC_CHECK_PROG([JAR], [jar], [jar])
 if test -n "$HAVE_JAVACOMP" && test -n "$JAR" && test "$JAVA_CHOICE" != no; then
   BUILDJAVA=yes
--- gettext-0.21/gettext-tools/gnulib-lib/javacomp.c	2022-04-08 16:40:35.238013375 +0200
+++ gettext-0.21/gettext-tools/gnulib-lib/javacomp.c	2022-04-08 16:41:56.686411176 +0200
@@ -116,9 +116,8 @@
                && (java_version_cache[1] >= '2'
                    && java_version_cache[1] <= '7')
                && java_version_cache[2] == '\0')
-        /* Assume that these (not yet released) Java versions will behave
-           like the preceding ones.  */
-        java_version_cache = "11";
+        /* It's one of the valid target version values.  */
+        ;
       else
         java_version_cache = "1.1";
     }
@@ -128,7 +127,7 @@
 /* ======================= Source version dependent ======================= */
 
 /* Convert a source version to an index.  */
-#define SOURCE_VERSION_BOUND 8 /* exclusive upper bound */
+#define SOURCE_VERSION_BOUND 14 /* exclusive upper bound */
 static unsigned int
 source_version_index (const char *source_version)
 {
@@ -144,7 +143,7 @@
   else if (source_version[0] == '9' && source_version[1] == '\0')
     return 5;
   else if (source_version[0] == '1'
-           && (source_version[1] >= '0' && source_version[1] <= '1')
+           && (source_version[1] >= '0' && source_version[1] <= '7')
            && source_version[2] == '\0')
     return source_version[1] - '0' + 6;
   error (EXIT_FAILURE, 0, _("invalid source_version argument to compile_java_class"));
@@ -171,6 +170,10 @@
     return "class conftest { public void m() { var i = new Integer(0); } }\n";
   if (strcmp (source_version, "11") == 0)
     return "class conftest { Readable r = (var b) -> 0; }\n";
+  if (source_version[0] == '1'
+    && (source_version[1] >= '2' && source_version[1] <= '7')
+    && source_version[2] == '\0')
+    return "class conftest { Readable r = (var b) -> 0; }\n";
   error (EXIT_FAILURE, 0, _("invalid source_version argument to compile_java_class"));
   return NULL;
 }
@@ -197,6 +200,10 @@
     return "class conftestfail { Readable r = (var b) -> 0; }\n";
   if (strcmp (source_version, "11") == 0)
     return NULL;
+  if (source_version[0] == '1'
+    && (source_version[1] >= '2' && source_version[1] <= '7')
+    && source_version[2] == '\0')
+    return NULL;
   error (EXIT_FAILURE, 0, _("invalid source_version argument to compile_java_class"));
   return NULL;
 }
@@ -204,7 +211,7 @@
 /* ======================= Target version dependent ======================= */
 
 /* Convert a target version to an index.  */
-#define TARGET_VERSION_BOUND 11 /* exclusive upper bound */
+#define TARGET_VERSION_BOUND 17 /* exclusive upper bound */
 static unsigned int
 target_version_index (const char *target_version)
 {
@@ -215,7 +222,7 @@
   else if (target_version[0] == '9' && target_version[1] == '\0')
     return 8;
   else if (target_version[0] == '1'
-           && (target_version[1] >= '0' && target_version[1] <= '1')
+           && (target_version[1] >= '0' && target_version[1] <= '7')
            && target_version[2] == '\0')
     return target_version[1] - '0' + 9;
   error (EXIT_FAILURE, 0, _("invalid target_version argument to compile_java_class"));
@@ -245,10 +252,10 @@
     return 52;
   if (strcmp (target_version, "9") == 0)
     return 53;
-  if (strcmp (target_version, "10") == 0)
-    return 54;
-  if (strcmp (target_version, "11") == 0)
-    return 55;
+  if (target_version[0] == '1'
+           && (target_version[1] >= '0' && target_version[1] <= '7')
+           && target_version[2] == '\0')
+    return target_version[1] + 54;
   error (EXIT_FAILURE, 0, _("invalid target_version argument to compile_java_class"));
   return 0;
 }
@@ -2433,7 +2440,7 @@
         }
     }
 
-  error (0, 0, _("Java compiler not found, try installing gcj or set $JAVAC"));
+  /* error (0, 0, _("Java compiler not found, try installing gcj or set $JAVAC")); */
   err = true;
 
  done2:
--- gettext-0.21/gettext-tools/src/write-java.c	2022-04-08 16:40:35.218013286 +0200
+++ gettext-0.21/gettext-tools/src/write-java.c	2022-04-08 16:41:56.690411201 +0200
@@ -1208,8 +1208,14 @@
      Java compilers create the class files in the source file's directory -
      which is in a temporary directory in our case.  */
   java_sources[0] = java_file_name;
-  if (compile_java_class (java_sources, 1, NULL, 0, "1.5", "1.6", directory,
+  if (1
+      && (compile_java_class (java_sources, 1, NULL, 0, "17", "17", directory,
+                          true, false, true, verbose > 0)) /* assume JDK 17 */
+      && (compile_java_class (java_sources, 1, NULL, 0, "11", "11", directory,
+                          true, false, true, verbose > 0)) /* assume JDK 11 */
+      && (compile_java_class (java_sources, 1, NULL, 0, "1.5", "1.6", directory,
                           true, false, true, verbose > 0))
+     )
     {
       if (!verbose)
         error (0, 0,
openSUSE Build Service is sponsored by