From 5d115440c20817a63d4ee12d627ff24c0717b6e1 Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Sun, 20 Sep 2020 03:06:48 +0200 Subject: gnu: Add java-antlr4-runtime. * gnu/packages/java.scm (java-antlr4-runtime): New variable. * gnu/packages/patches/java-antlr4-Add-standalone-generator.patch: New file. * gnu/packages/patches/java-antlr4-fix-code-too-large.java: New file. * gnu/local.mk (dist_patch_DATA): Add them. --- .../java-antlr4-Add-standalone-generator.patch | 52 +++++++++++++ .../patches/java-antlr4-fix-code-too-large.java | 90 ++++++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 gnu/packages/patches/java-antlr4-Add-standalone-generator.patch create mode 100644 gnu/packages/patches/java-antlr4-fix-code-too-large.java (limited to 'gnu/packages/patches') diff --git a/gnu/packages/patches/java-antlr4-Add-standalone-generator.patch b/gnu/packages/patches/java-antlr4-Add-standalone-generator.patch new file mode 100644 index 0000000000..75b6dce39f --- /dev/null +++ b/gnu/packages/patches/java-antlr4-Add-standalone-generator.patch @@ -0,0 +1,52 @@ +From 3b43b79da15be994348f13035474925ba592fe1f Mon Sep 17 00:00:00 2001 +From: Julien Lepiller +Date: Fri, 15 Sep 2017 10:06:42 +0200 +Subject: [PATCH] Add standalone template generator + +--- + tool/src/org/antlr/v4/unicode/UnicodeRenderer.java | 33 ++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + create mode 100644 tool/src/org/antlr/v4/unicode/UnicodeRenderer.java + +diff --git a/tool/src/org/antlr/v4/unicode/UnicodeRenderer.java b/tool/src/org/antlr/v4/unicode/UnicodeRenderer.java +new file mode 100644 +index 0000000..9e53213 +--- /dev/null ++++ b/tool/src/org/antlr/v4/unicode/UnicodeRenderer.java +@@ -0,0 +1,33 @@ ++package org.antlr.v4.unicode; ++ ++import org.stringtemplate.v4.*; ++import org.stringtemplate.v4.misc.ErrorBuffer; ++import org.antlr.v4.unicode.UnicodeDataTemplateController; ++ ++import java.io.File; ++import java.io.FileWriter; ++import java.io.IOException; ++import java.util.Map; ++import java.util.Map.Entry; ++ ++public class UnicodeRenderer extends UnicodeDataTemplateController { ++ public static void main(String[] arg) ++ throws IOException { ++ String inputdir = arg[0]; ++ String input = arg[1]; ++ String output = arg[2]; ++ ++ FileWriter fileWriter = new FileWriter(new File(output)); ++ ErrorBuffer listener = new ErrorBuffer(); ++ ++ STGroupDir group = new STGroupDir(inputdir); ++ ST st = group.getInstanceOf(input); ++ ++ for(Entry entry : getProperties().entrySet()) ++ st.add(entry.getKey(), entry.getValue()); ++ ++ st.write(new AutoIndentWriter(fileWriter), listener); ++ fileWriter.flush(); ++ fileWriter.close(); ++ } ++} +-- +2.13.5 + diff --git a/gnu/packages/patches/java-antlr4-fix-code-too-large.java b/gnu/packages/patches/java-antlr4-fix-code-too-large.java new file mode 100644 index 0000000000..9e9f92349d --- /dev/null +++ b/gnu/packages/patches/java-antlr4-fix-code-too-large.java @@ -0,0 +1,90 @@ +From d22db2048534bdf3d9615117291f9d86564ff10d Mon Sep 17 00:00:00 2001 +From: Julien Lepiller +Date: Sat, 19 Sep 2020 21:05:48 +0200 +Subject: [PATCH] Separate addPropertyAliases in two methods + +The quantity of data used to generate addPropertyAliases creates a big +method, that is too big for java and results in "error: code too large". +This is most likely due to added data between the expected version of +icu and the actual version of icu in Guix. +--- + .../org/antlr/v4/tool/templates/unicodedata.st | 17 ++++++++++++++--- + .../unicode/UnicodeDataTemplateController.java | 18 ++++++++++-------- + 2 files changed, 24 insertions(+), 11 deletions(-) + +diff --git a/tool/resources/org/antlr/v4/tool/templates/unicodedata.st b/tool/resources/org/antlr/v4/tool/templates/unicodedata.st +index 0f22c73..3573873 100644 +--- a/tool/resources/org/antlr/v4/tool/templates/unicodedata.st ++++ b/tool/resources/org/antlr/v4/tool/templates/unicodedata.st +@@ -1,4 +1,4 @@ +-unicodedata(propertyCodePointRanges, propertyAliases) ::= << ++unicodedata(propertyCodePointRanges, propertyAliasesA, propertyAliasesB) ::= << + package org.antlr.v4.unicode; + + import java.util.Arrays; +@@ -15,7 +15,7 @@ import org.antlr.v4.runtime.misc.Interval; + */ + public abstract class UnicodeData { + private static final Map\ propertyCodePointRanges = new HashMap\<\>(); +- private static final Map\ propertyAliases = new HashMap\<\>(); ++ private static final Map\ propertyAliases = new HashMap\<\>( + ); + + // Work around Java 64k bytecode method limit by splitting up static + // initialization into one method per Unicode property +@@ -30,9 +30,20 @@ static private void addProperty() { + propertyCodePointRanges.put("".toLowerCase(Locale.US), codePointRanges); + \}}; separator="\n\n"> + ++ // Property aliases ++ static private void addPropertyAliases1() { ++ ".toLowerCase(Locale.US), "".toLowerCase(Locale.US)); }; separator="\n"> ++ } ++ ++ // Property aliases ++ static private void addPropertyAliases2() { ++ ".toLowerCase(Locale.US), "".toLowerCase(Locale.US)); }; separator="\n"> ++ } ++ + // Property aliases + static private void addPropertyAliases() { +- ".toLowerCase(Locale.US), "".toLowerCase(Locale.US)); }; separator="\n"> ++ addPropertyAliases1(); ++ addPropertyAliases2(); + } + + // Put it all together +diff --git a/tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java b/tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java +index da244a3..dc591cb 100644 +--- a/tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java ++++ b/tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java +@@ -78,17 +78,19 @@ public abstract class UnicodeDataTemplateController { + addTR35ExtendedPictographicPropertyCodesToCodePointRanges(propertyCodePointRanges); + addEmojiPresentationPropertyCodesToCodePointRanges(propertyCodePointRanges); + +- Map propertyAliases = new LinkedHashMap<>(); +- addUnicodeCategoryCodesToNames(propertyAliases); +- addUnicodeBinaryPropertyCodesToNames(propertyAliases); +- addUnicodeScriptCodesToNames(propertyAliases); +- addUnicodeBlocksToNames(propertyAliases); +- addUnicodeIntPropertyCodesToNames(propertyAliases); +- propertyAliases.put("EP", "Extended_Pictographic"); ++ Map propertyAliases1 = new LinkedHashMap<>(); ++ Map propertyAliases2 = new LinkedHashMap<>(); ++ addUnicodeCategoryCodesToNames(propertyAliases1); ++ addUnicodeBinaryPropertyCodesToNames(propertyAliases1); ++ addUnicodeScriptCodesToNames(propertyAliases1); ++ addUnicodeBlocksToNames(propertyAliases2); ++ addUnicodeIntPropertyCodesToNames(propertyAliases2); ++ propertyAliases2.put("EP", "Extended_Pictographic"); + + Map properties = new LinkedHashMap<>(); + properties.put("propertyCodePointRanges", propertyCodePointRanges); +- properties.put("propertyAliases", propertyAliases); ++ properties.put("propertyAliasesA", propertyAliases1); ++ properties.put("propertyAliasesB", propertyAliases2); + return properties; + } + +-- +2.28.0 + -- cgit v1.2.3