From be4c5c778be562b8cc10dee5dbd76ce797fb023a Mon Sep 17 00:00:00 2001 From: Jens Petersen Date: Thu, 31 Mar 2022 10:44:30 +0800 Subject: [PATCH] add Java 17 support patch from Mamoru Tasaka (#2062407) --- gettext-java17-2062407.patch | 116 +++++++++++++++++++++++++++++++++++ gettext.spec | 10 ++- 2 files changed, 123 insertions(+), 3 deletions(-) create mode 100644 gettext-java17-2062407.patch diff --git a/gettext-java17-2062407.patch b/gettext-java17-2062407.patch new file mode 100644 index 0000000..e29fe77 --- /dev/null +++ b/gettext-java17-2062407.patch @@ -0,0 +1,116 @@ +diff -urp '--exclude=*~' gettext-0.21.orig/gettext-tools/gnulib-lib/javacomp.c gettext-0.21/gettext-tools/gnulib-lib/javacomp.c +--- gettext-0.21.orig/gettext-tools/gnulib-lib/javacomp.c 2022-03-09 12:22:05.000000000 +0900 ++++ gettext-0.21/gettext-tools/gnulib-lib/javacomp.c 2022-03-20 18:23:53.636052943 +0900 +@@ -116,9 +116,8 @@ default_target_version (void) + && (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 @@ default_target_version (void) + /* ======================= 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 @@ source_version_index (const char *source + 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 @@ get_goodcode_snippet (const char *source + 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 @@ get_failcode_snippet (const char *source + 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 @@ get_failcode_snippet (const char *source + /* ======================= 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 @@ target_version_index (const char *target + 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 @@ corresponding_classfile_version (const c + 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; + } +@@ -2439,7 +2446,7 @@ compile_java_class (const char * const * + } + } + +- 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: +diff -urp '--exclude=*~' gettext-0.21.orig/gettext-tools/src/write-java.c gettext-0.21/gettext-tools/src/write-java.c +--- gettext-0.21.orig/gettext-tools/src/write-java.c 2022-03-09 12:17:21.000000000 +0900 ++++ gettext-0.21/gettext-tools/src/write-java.c 2022-03-20 18:26:06.941734979 +0900 +@@ -1209,8 +1209,14 @@ msgdomain_write_java (message_list_ty *m + 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, diff --git a/gettext.spec b/gettext.spec index 28f605c..d5f284e 100644 --- a/gettext.spec +++ b/gettext.spec @@ -5,7 +5,7 @@ Summary: GNU libraries and utilities for producing multi-lingual messages Name: gettext Version: 0.21 -Release: 12%{?dist}.0.%{snapshot} +Release: 13%{?dist}.0.%{snapshot} # The following are licensed under LGPLv2+: # - libintl and its headers @@ -30,6 +30,7 @@ Source3: msghack.1 Patch1: %{name}-%{version}-disable-libtextstyle.patch Patch2: %{name}-%{version}-covscan.patch +Patch3: gettext-java17-2062407.patch # for bootstrapping # BuildRequires: autoconf >= 2.62 @@ -373,10 +374,13 @@ make check LIBUNISTRING=-lunistring %{_mandir}/man1/msghack.1* %changelog -* Wed Mar 9 2022 Sundeep Anand - 0.21-12 +* Thu Mar 31 2022 Jens Petersen - 0.21-13.0.20220203 +- add Java 17 support patch from Mamoru Tasaka (#2062407) + +* Wed Mar 9 2022 Sundeep Anand - 0.21-12.0.20220203 - fix gettext snapshot versioning issue to make it canonical (#2061646) -* Thu Mar 3 2022 Sundeep Anand - 0.21-11 +* Thu Mar 3 2022 Sundeep Anand - 0.21-11.0.20220203 - Rebuild with gettext-snapshot-20220228 to fix ppc64le and tests (#2045414) Removed gettext-0.21-gnulib-perror-tests.patch as it is upstreamed.