From 5f2bc37f24b58cb82daf3a504de8d0c106d5fad8f21daf50c26d5d861b604a14 Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Wed, 11 Oct 2023 07:23:33 +0000 Subject: [PATCH 1/7] OBS-URL: https://build.opensuse.org/package/show/Java:packages/parboiled?expand=0&rev=16 --- _multibuild | 3 -- parboiled-scala_2.10-1.1.6.pom | 57 ---------------------------------- parboiled.changes | 6 ++++ parboiled.spec | 48 +++------------------------- 4 files changed, 11 insertions(+), 103 deletions(-) delete mode 100644 _multibuild delete mode 100644 parboiled-scala_2.10-1.1.6.pom diff --git a/_multibuild b/_multibuild deleted file mode 100644 index 078eeb6..0000000 --- a/_multibuild +++ /dev/null @@ -1,3 +0,0 @@ - - scala - diff --git a/parboiled-scala_2.10-1.1.6.pom b/parboiled-scala_2.10-1.1.6.pom deleted file mode 100644 index 15b5cf1..0000000 --- a/parboiled-scala_2.10-1.1.6.pom +++ /dev/null @@ -1,57 +0,0 @@ - - - 4.0.0 - org.parboiled - parboiled-scala_2.10 - bundle - Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful - http://parboiled.org - 1.1.6 - - - Apache 2 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - parboiled-scala - 2009 - - org.parboiled - http://parboiled.org - - - git@github.com:sirthias/parboiled.git - scm:git:git@github.com:sirthias/parboiled.git - - - - sirthias - Mathias Doenitz - - - - - org.parboiled - parboiled-core - 1.1.6 - - - org.scala-lang - scala-library - 2.10.2 - - - org.testng - testng - 5.14.1 - test - - - org.scalatest - scalatest_2.10 - 1.9.1 - test - - - \ No newline at end of file diff --git a/parboiled.changes b/parboiled.changes index bd5ff83..4d19235 100644 --- a/parboiled.changes +++ b/parboiled.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Oct 11 07:22:30 UTC 2023 - Fridrich Strba + +- Do not build the scala subpackage, since it is not needed by any + package + ------------------------------------------------------------------- Sun Mar 20 15:24:52 UTC 2022 - Fridrich Strba diff --git a/parboiled.spec b/parboiled.spec index 38200b7..8bf12db 100644 --- a/parboiled.spec +++ b/parboiled.spec @@ -1,7 +1,7 @@ # # spec file # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,57 +16,32 @@ # -%global flavor @BUILD_FLAVOR@%{nil} -%if "%{flavor}" == "scala" -%bcond_without scala -%else -%bcond_with scala -%endif %global scala_short_version 2.10 %global base_name parboiled -%if %{with scala} -Name: %{base_name}-scala -Summary: Parboiled for Scala -License: Apache-2.0 -Group: Development/Libraries/Java -%else Name: %{base_name} Summary: Java/Scala library providing parsing of input text based on PEGs License: Apache-2.0 Group: Development/Libraries/Java -%endif Version: 1.1.6 Release: 0 URL: http://parboiled.org/ Source0: https://github.com/sirthias/parboiled/archive/%{version}.tar.gz Source1: %{base_name}-%{version}-build.tar.xz # for build see https://github.com/sirthias/parboiled/wiki/Building-parboiled -Source2: http://repo1.maven.org/maven2/org/parboiled/%{base_name}-core/%{version}/%{base_name}-core-%{version}.pom -Source3: http://repo1.maven.org/maven2/org/parboiled/%{base_name}-java/%{version}/%{base_name}-java-%{version}.pom -Source4: http://repo1.maven.org/maven2/org/parboiled/%{base_name}-scala_%{scala_short_version}/%{version}/%{base_name}-scala_%{scala_short_version}-%{version}.pom +Source2: https://repo1.maven.org/maven2/org/parboiled/%{base_name}-core/%{version}/%{base_name}-core-%{version}.pom +Source3: https://repo1.maven.org/maven2/org/parboiled/%{base_name}-java/%{version}/%{base_name}-java-%{version}.pom Patch0: parboiled-port-to-objectweb-asm-5.0.1.patch BuildRequires: ant BuildRequires: fdupes -BuildRequires: javapackages-local -%if %{with scala} -BuildRequires: ant-scala >= 2.10.7 -BuildRequires: parboiled -Requires: mvn(org.parboiled:parboiled-core) = %{version} -Requires: mvn(org.scala-lang:scala-library) -%else +BuildRequires: javapackages-local >= 6 BuildRequires: objectweb-asm Requires: mvn(org.ow2.asm:asm) Requires: mvn(org.ow2.asm:asm-analysis) Requires: mvn(org.ow2.asm:asm-tree) Requires: mvn(org.ow2.asm:asm-util) -%endif BuildArch: noarch %description -%if %{with scala} -An internal Scala DSL for efficiently defining your parser rules. - -%endif parboiled is a mixed Java/Scala library providing parsing of arbitrary input text based on Parsing expression grammars (PEGs). PEGs are an alternative to context free grammars (CFGs) for formally @@ -91,36 +66,23 @@ find . -name "*.jar" -delete cp %{SOURCE2} %{base_name}-core/pom.xml cp %{SOURCE3} %{base_name}-java/pom.xml -cp %{SOURCE4} %{base_name}-scala/pom.xml %build mkdir -p lib build-jar-repository -s lib \ -%if %{with scala} - %{base_name} -%else objectweb-asm -%endif %{ant} \ -%if %{with scala} - -Dscala.libDir=%{_datadir}/scala/lib \ - -f build-scala.xml \ -%endif package javadoc %install -%if %{with scala} -%global modules scala -%else %global modules core java -%endif install -dm 0755 %{buildroot}%{_javadir}/%{base_name} install -dm 0755 %{buildroot}%{_mavenpomdir}/%{base_name} for i in %{modules}; do # jar install -pm 0644 %{base_name}-${i}/target/%{base_name}-${i}*%{version}.jar %{buildroot}%{_javadir}/%{base_name}/${i}.jar # pom - install -pm 0644 %{base_name}-${i}/pom.xml %{buildroot}%{_mavenpomdir}/%{base_name}/${i}.pom + %mvn_install_pom %{base_name}-${i}/pom.xml %{buildroot}%{_mavenpomdir}/%{base_name}/${i}.pom %add_maven_depmap %{base_name}/${i}.pom %{base_name}/${i}.jar # javadoc install -dm 0755 %{buildroot}%{_javadocdir}/%{base_name}/${i} From 2be5b9f4e114abcd57537d064dbe4b659db4efccd16409d2ec523210274605ae Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Wed, 11 Oct 2023 07:32:42 +0000 Subject: [PATCH 2/7] Accepting request 1116812 from Java:packages:test OBS-URL: https://build.opensuse.org/request/show/1116812 OBS-URL: https://build.opensuse.org/package/show/Java:packages/parboiled?expand=0&rev=17 --- 1.1.6.tar.gz | 3 -- 1.4.1.tar.gz | 3 ++ parboiled-1.1.6-build.tar.xz | 3 -- parboiled-build.tar.xz | 3 ++ ...core-1.1.6.pom => parboiled-core-1.4.1.pom | 14 ++--- ...java-1.1.6.pom => parboiled-java-1.4.1.pom | 24 ++++----- parboiled-port-to-objectweb-asm-5.0.1.patch | 54 ------------------- parboiled.changes | 7 +++ parboiled.spec | 23 ++++---- 9 files changed, 42 insertions(+), 92 deletions(-) delete mode 100644 1.1.6.tar.gz create mode 100644 1.4.1.tar.gz delete mode 100644 parboiled-1.1.6-build.tar.xz create mode 100644 parboiled-build.tar.xz rename parboiled-core-1.1.6.pom => parboiled-core-1.4.1.pom (83%) rename parboiled-java-1.1.6.pom => parboiled-java-1.4.1.pom (81%) delete mode 100644 parboiled-port-to-objectweb-asm-5.0.1.patch diff --git a/1.1.6.tar.gz b/1.1.6.tar.gz deleted file mode 100644 index 66b85af..0000000 --- a/1.1.6.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:793fe27f8aa5ae71e6dc09bcda702835ad9a23329d61cd26de046cfdcb0fbe5d -size 215393 diff --git a/1.4.1.tar.gz b/1.4.1.tar.gz new file mode 100644 index 0000000..6417806 --- /dev/null +++ b/1.4.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f396cd6f51939efed94f37736440238a86291ed02bcd523aa97aa2eff8de1f2 +size 230536 diff --git a/parboiled-1.1.6-build.tar.xz b/parboiled-1.1.6-build.tar.xz deleted file mode 100644 index 5f558e0..0000000 --- a/parboiled-1.1.6-build.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b4a7d350818ea568dee926ffef3098a2d228f57b16e594b17f04f29b767c0a64 -size 2796 diff --git a/parboiled-build.tar.xz b/parboiled-build.tar.xz new file mode 100644 index 0000000..d9ca0ad --- /dev/null +++ b/parboiled-build.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab40ea0adc098fd8297c2bfc709409e055775d796c0a7b3e46589ae6e72b8143 +size 2860 diff --git a/parboiled-core-1.1.6.pom b/parboiled-core-1.4.1.pom similarity index 83% rename from parboiled-core-1.1.6.pom rename to parboiled-core-1.4.1.pom index 1c061d8..0950ea8 100644 --- a/parboiled-core-1.1.6.pom +++ b/parboiled-core-1.4.1.pom @@ -3,10 +3,10 @@ 4.0.0 org.parboiled parboiled-core - bundle + jar Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful http://parboiled.org - 1.1.6 + 1.4.1 Apache 2 @@ -32,15 +32,15 @@ - org.testng - testng - 5.14.1 + org.scalatestplus + testng-7-5_2.13 + 3.2.11.0 test org.scalatest - scalatest_2.9.3 - 1.9.1 + scalatest_2.13 + 3.2.11 test diff --git a/parboiled-java-1.1.6.pom b/parboiled-java-1.4.1.pom similarity index 81% rename from parboiled-java-1.1.6.pom rename to parboiled-java-1.4.1.pom index ca7805e..e6f0d65 100644 --- a/parboiled-java-1.1.6.pom +++ b/parboiled-java-1.4.1.pom @@ -3,10 +3,10 @@ 4.0.0 org.parboiled parboiled-java - bundle + jar Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful http://parboiled.org - 1.1.6 + 1.4.1 Apache 2 @@ -34,39 +34,39 @@ org.parboiled parboiled-core - 1.1.6 + 1.4.1 - org.testng - testng - 5.14.1 + org.scalatestplus + testng-7-5_2.13 + 3.2.11.0 test org.scalatest - scalatest_2.9.3 - 1.9.1 + scalatest_2.13 + 3.2.11 test org.ow2.asm asm - 4.1 + 9.2 org.ow2.asm asm-tree - 4.1 + 9.2 org.ow2.asm asm-analysis - 4.1 + 9.2 org.ow2.asm asm-util - 4.1 + 9.2 \ No newline at end of file diff --git a/parboiled-port-to-objectweb-asm-5.0.1.patch b/parboiled-port-to-objectweb-asm-5.0.1.patch deleted file mode 100644 index 369f968..0000000 --- a/parboiled-port-to-objectweb-asm-5.0.1.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 66129b1155188b4c2b1d3b34641a7118fd99eb51 Mon Sep 17 00:00:00 2001 -From: Michal Srb -Date: Thu, 27 Mar 2014 10:59:08 +0100 -Subject: [PATCH] Port to objectweb-asm 5.0.1 - ---- - .../src/main/java/org/parboiled/transform/ParserClassNode.java | 2 ++ - parboiled-java/src/main/java/org/parboiled/transform/RuleMethod.java | 3 ++- - 2 files changed, 4 insertions(+), 1 deletion(-) - -diff --git a/parboiled-java/src/main/java/org/parboiled/transform/ParserClassNode.java b/parboiled-java/src/main/java/org/parboiled/transform/ParserClassNode.java -index 6534f24..3da751b 100644 ---- a/parboiled-java/src/main/java/org/parboiled/transform/ParserClassNode.java -+++ b/parboiled-java/src/main/java/org/parboiled/transform/ParserClassNode.java -@@ -26,6 +26,7 @@ import static org.parboiled.common.Preconditions.*; - import org.objectweb.asm.Type; - import org.objectweb.asm.tree.ClassNode; - import org.objectweb.asm.tree.MethodNode; -+import org.objectweb.asm.Opcodes; - - import java.util.*; - -@@ -39,6 +40,7 @@ class ParserClassNode extends ClassNode { - private Class extendedClass; - - public ParserClassNode(Class parentClass) { -+ super(Opcodes.ASM4); - this.parentClass = checkArgNotNull(parentClass, "parentClass"); - parentType = Type.getType(parentClass); - } -diff --git a/parboiled-java/src/main/java/org/parboiled/transform/RuleMethod.java b/parboiled-java/src/main/java/org/parboiled/transform/RuleMethod.java -index c60ef8a..8c023ca 100644 ---- a/parboiled-java/src/main/java/org/parboiled/transform/RuleMethod.java -+++ b/parboiled-java/src/main/java/org/parboiled/transform/RuleMethod.java -@@ -31,6 +31,7 @@ import org.objectweb.asm.tree.LabelNode; - import org.objectweb.asm.tree.LocalVariableNode; - import org.objectweb.asm.tree.MethodNode; - import org.objectweb.asm.tree.analysis.BasicValue; -+import org.objectweb.asm.Opcodes; - import org.parboiled.BaseParser; - import org.parboiled.common.StringUtils; - import org.parboiled.support.Var; -@@ -71,7 +72,7 @@ class RuleMethod extends MethodNode { - - public RuleMethod(Class ownerClass, int access, String name, String desc, String signature, String[] exceptions, - boolean hasExplicitActionOnlyAnno, boolean hasDontLabelAnno, boolean hasSkipActionsInPredicates) { -- super(access, name, desc, signature, exceptions); -+ super(Opcodes.ASM4, access, name, desc, signature, exceptions); - this.ownerClass = ownerClass; - parameterCount = Type.getArgumentTypes(desc).length; - hasCachedAnnotation = parameterCount == 0; --- -1.9.0 - diff --git a/parboiled.changes b/parboiled.changes index 4d19235..b770a5d 100644 --- a/parboiled.changes +++ b/parboiled.changes @@ -4,6 +4,13 @@ Wed Oct 11 07:22:30 UTC 2023 - Fridrich Strba - Do not build the scala subpackage, since it is not needed by any package +------------------------------------------------------------------- +Fri Oct 6 11:26:05 UTC 2023 - Fridrich Strba + +- Require Java 9 for building because the function + java.lang.invoke.MethodHandles.Lookup.defineClass(...) does not + exist in earlier versions. + ------------------------------------------------------------------- Sun Mar 20 15:24:52 UTC 2022 - Fridrich Strba diff --git a/parboiled.spec b/parboiled.spec index 8bf12db..bcc5172 100644 --- a/parboiled.spec +++ b/parboiled.spec @@ -16,33 +16,32 @@ # -%global scala_short_version 2.10 %global base_name parboiled -Name: %{base_name} -Summary: Java/Scala library providing parsing of input text based on PEGs -License: Apache-2.0 -Group: Development/Libraries/Java -Version: 1.1.6 +Version: 1.4.1 Release: 0 URL: http://parboiled.org/ Source0: https://github.com/sirthias/parboiled/archive/%{version}.tar.gz -Source1: %{base_name}-%{version}-build.tar.xz +Source1: %{base_name}-build.tar.xz # for build see https://github.com/sirthias/parboiled/wiki/Building-parboiled Source2: https://repo1.maven.org/maven2/org/parboiled/%{base_name}-core/%{version}/%{base_name}-core-%{version}.pom Source3: https://repo1.maven.org/maven2/org/parboiled/%{base_name}-java/%{version}/%{base_name}-java-%{version}.pom -Patch0: parboiled-port-to-objectweb-asm-5.0.1.patch BuildRequires: ant BuildRequires: fdupes -BuildRequires: javapackages-local >= 6 +BuildRequires: javapackages-local +BuildArch: noarch +Name: %{base_name} +Summary: Java library providing parsing of input text based on PEGs +License: Apache-2.0 +Group: Development/Libraries/Java +BuildRequires: java-devel >= 9 BuildRequires: objectweb-asm Requires: mvn(org.ow2.asm:asm) Requires: mvn(org.ow2.asm:asm-analysis) Requires: mvn(org.ow2.asm:asm-tree) Requires: mvn(org.ow2.asm:asm-util) -BuildArch: noarch %description -parboiled is a mixed Java/Scala library providing parsing of +parboiled is a mixed Java library providing parsing of arbitrary input text based on Parsing expression grammars (PEGs). PEGs are an alternative to context free grammars (CFGs) for formally specifying syntax, they make a replacement for regular expressions @@ -62,8 +61,6 @@ This package contains javadoc for %{name}. find . -name "*.class" -delete find . -name "*.jar" -delete -%patch0 -p1 - cp %{SOURCE2} %{base_name}-core/pom.xml cp %{SOURCE3} %{base_name}-java/pom.xml From 90b9cefca7e1cfe22819e56c935ad70291a54f1b5f60b58e2239787b38a172cf Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Wed, 11 Oct 2023 07:48:04 +0000 Subject: [PATCH 3/7] OBS-URL: https://build.opensuse.org/package/show/Java:packages/parboiled?expand=0&rev=18 --- parboiled.changes | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/parboiled.changes b/parboiled.changes index b770a5d..4ee45db 100644 --- a/parboiled.changes +++ b/parboiled.changes @@ -7,9 +7,45 @@ Wed Oct 11 07:22:30 UTC 2023 - Fridrich Strba ------------------------------------------------------------------- Fri Oct 6 11:26:05 UTC 2023 - Fridrich Strba +- Upgrade to upstream version 1.4.1 + * Changes of 1.4.1 + + Improved support for Java 16+ + + Dropped support for Java 8 + * Changes of 1.4.0 + + Support Java 17 + + Upgraded to ASM 9.2 + + Dropped support for Scala 2.11 + * Changes of 1.3.1 + + Upgraded to ASM 7.1 + + Fixed class loader in parser generation + + Added cross-build for Scala 2.13.0 + + Dropped support for Scala 2.10 + * Changes of 1.3.0 + + Upgraded to ASM 7.0 + + Added Scala 2.13.0-M5 build + * Changes of 1.2.0 + + Added support for '~~>' and friends in ReductionRules + + Added support for PushRules to chain after ReductionRules + + Upgraded to ASM 6.2.1 + + Added Scala 2.13.0-M4 build + + Dropped support for Java 1.5 + * Changes of 1.1.8 + + Cross build for Scala 2.10, 2.11 and 2.12 + + Upgrade to ASM 5.2 + + Fixed "Utils.findConstructor doesn't match boolean parameter" + + Added method for clearing class cache in AsmUtil + * Changes of 1.1.7 + + Upgrade to Scala 2.11.4, cross build for Scala 2.9.2, 2.9.3, + 2.10 and 2.11 + + Upgrade to ASM 5.0.3, closed #76 + + Make parboiled-java relocatable, closed #80 - Require Java 9 for building because the function java.lang.invoke.MethodHandles.Lookup.defineClass(...) does not - exist in earlier versions. + exist in earlier versions. Build still with source/target 8 to + keep maximum compatibility with java 8 +- Removed patch: + * parboiled-port-to-objectweb-asm-5.0.1.patch + + not needed with this version ------------------------------------------------------------------- Sun Mar 20 15:24:52 UTC 2022 - Fridrich Strba From 6fb0fb5736996f1c1adf7f4afb032abf2ddadd7f5bf1781611030ac71b6a15d0 Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Wed, 11 Oct 2023 08:03:37 +0000 Subject: [PATCH 4/7] OBS-URL: https://build.opensuse.org/package/show/Java:packages/parboiled?expand=0&rev=19 --- parboiled-build.tar.xz | 4 +- parboiled.changes | 8 +- parboiled.spec | 2 + restore-java8-compatibility.patch | 581 ++++++++++++++++++++++++++++++ 4 files changed, 589 insertions(+), 6 deletions(-) create mode 100644 restore-java8-compatibility.patch diff --git a/parboiled-build.tar.xz b/parboiled-build.tar.xz index d9ca0ad..8b26c57 100644 --- a/parboiled-build.tar.xz +++ b/parboiled-build.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab40ea0adc098fd8297c2bfc709409e055775d796c0a7b3e46589ae6e72b8143 -size 2860 +oid sha256:1b426cd0ac656fe6c6d19037a13766a8214195517d409c2d2b62beed0f48087a +size 2856 diff --git a/parboiled.changes b/parboiled.changes index 4ee45db..59fc691 100644 --- a/parboiled.changes +++ b/parboiled.changes @@ -39,10 +39,10 @@ Fri Oct 6 11:26:05 UTC 2023 - Fridrich Strba 2.10 and 2.11 + Upgrade to ASM 5.0.3, closed #76 + Make parboiled-java relocatable, closed #80 -- Require Java 9 for building because the function - java.lang.invoke.MethodHandles.Lookup.defineClass(...) does not - exist in earlier versions. Build still with source/target 8 to - keep maximum compatibility with java 8 +- Added patch: + * restore-java8-compatibility.patch + + revert upstream commit making changes incompatible with + Java 8 - Removed patch: * parboiled-port-to-objectweb-asm-5.0.1.patch + not needed with this version diff --git a/parboiled.spec b/parboiled.spec index bcc5172..b4582dd 100644 --- a/parboiled.spec +++ b/parboiled.spec @@ -25,6 +25,7 @@ Source1: %{base_name}-build.tar.xz # for build see https://github.com/sirthias/parboiled/wiki/Building-parboiled Source2: https://repo1.maven.org/maven2/org/parboiled/%{base_name}-core/%{version}/%{base_name}-core-%{version}.pom Source3: https://repo1.maven.org/maven2/org/parboiled/%{base_name}-java/%{version}/%{base_name}-java-%{version}.pom +Patch0: restore-java8-compatibility.patch BuildRequires: ant BuildRequires: fdupes BuildRequires: javapackages-local @@ -57,6 +58,7 @@ This package contains javadoc for %{name}. %prep %setup -q -n %{base_name}-%{version} -a1 +%patch0 -p1 find . -name "*.class" -delete find . -name "*.jar" -delete diff --git a/restore-java8-compatibility.patch b/restore-java8-compatibility.patch new file mode 100644 index 0000000..9c51c18 --- /dev/null +++ b/restore-java8-compatibility.patch @@ -0,0 +1,581 @@ +diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/AsmUtils.java parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/AsmUtils.java +--- parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/AsmUtils.java 2023-10-11 09:54:38.742121727 +0200 ++++ parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/AsmUtils.java 2023-10-11 09:54:51.432202375 +0200 +@@ -35,7 +35,6 @@ + + import java.io.IOException; + import java.io.InputStream; +-import java.lang.invoke.MethodHandles; + import java.lang.reflect.Array; + import java.lang.reflect.Constructor; + import java.lang.reflect.Field; +@@ -47,8 +46,6 @@ + + class AsmUtils { + +- private static final LookupFactory lookupFactory = new LookupFactory(); +- + public static ClassReader createClassReader(Class clazz) throws IOException { + checkArgNotNull(clazz, "clazz"); + String classFilename = clazz.getName().replace('.', '/') + ".class"; +@@ -199,17 +196,22 @@ + * Otherwise the method returns null. + * + * @param className the full name of the class to be loaded +- * @param parentClass the parent class of the class with the given className ++ * @param classLoader the class loader to use + * @return the class instance or null + */ +- public static Class loadClass(String className, Class parentClass) { ++ public static Class findLoadedClass(String className, ClassLoader classLoader) { + checkArgNotNull(className, "className"); +- checkArgNotNull(parentClass, "parentClass"); ++ checkArgNotNull(classLoader, "classLoader"); + try { ++ Class classLoaderBaseClass = Class.forName("java.lang.ClassLoader"); ++ Method findLoadedClassMethod = classLoaderBaseClass.getDeclaredMethod("findLoadedClass", String.class); ++ ++ // protected method invocation ++ findLoadedClassMethod.setAccessible(true); + try { +- return parentClass.getClassLoader().loadClass(className); +- } catch (ClassNotFoundException cnfe) { +- return null; ++ return (Class) findLoadedClassMethod.invoke(classLoader, className); ++ } finally { ++ findLoadedClassMethod.setAccessible(false); + } + } catch (Exception e) { + throw new RuntimeException("Could not determine whether class '" + className + +@@ -218,30 +220,22 @@ + } + + /** +- * Defines a new class with the given name and bytecode within the package of the given parent class. +- * Since package and class identity includes the ClassLoader instance used to load a class we use reflection ++ * Loads the class defined with the given name and bytecode using the given class loader. ++ * Since package and class idendity includes the ClassLoader instance used to load a class we use reflection + * on the given class loader to define generated classes. If we used our own class loader (in order to be able + * to access the protected "defineClass" method) we would likely still be able to load generated classes, + * however, they would not have access to package-private classes and members of their super classes. + * + * @param className the full name of the class to be loaded + * @param code the bytecode of the class to load +- * @param parentClass the parent class of the new class ++ * @param classLoader the class loader to use + * @return the class instance + */ +- public static Class defineClass(String className, byte[] code, Class parentClass) { ++ public static Class loadClass(String className, byte[] code, ClassLoader classLoader) { + checkArgNotNull(className, "className"); + checkArgNotNull(code, "code"); +- checkArgNotNull(parentClass, "parentClass"); +- ++ checkArgNotNull(classLoader, "classLoader"); + try { +- if (lookupFactory != null) { +- MethodHandles.Lookup lookup = lookupFactory.lookupFor(parentClass); +- if (lookup != null) { +- return lookup.defineClass(code); +- } +- } +- + Class classLoaderBaseClass = Class.forName("java.lang.ClassLoader"); + Method defineClassMethod = classLoaderBaseClass.getDeclaredMethod("defineClass", + String.class, byte[].class, int.class, int.class); +@@ -249,7 +243,7 @@ + // protected method invocation + defineClassMethod.setAccessible(true); + try { +- return (Class) defineClassMethod.invoke(parentClass.getClassLoader(), className, code, 0, code.length); ++ return (Class) defineClassMethod.invoke(classLoader, className, code, 0, code.length); + } finally { + defineClassMethod.setAccessible(false); + } +diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/GroupClassGenerator.java parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/GroupClassGenerator.java +--- parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/GroupClassGenerator.java 2023-10-11 09:54:38.758788500 +0200 ++++ parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/GroupClassGenerator.java 2023-10-11 09:58:14.413389233 +0200 +@@ -23,7 +23,8 @@ + import org.objectweb.asm.tree.*; + + import static org.objectweb.asm.Opcodes.*; +-import static org.parboiled.transform.AsmUtils.defineClass; ++import static org.parboiled.transform.AsmUtils.findLoadedClass; ++import static org.parboiled.transform.AsmUtils.loadClass; + + abstract class GroupClassGenerator implements RuleMethodProcessor { + +@@ -53,15 +54,16 @@ + private void loadGroupClass(InstructionGroup group) { + createGroupClassType(group); + String className = group.getGroupClassType().getClassName(); ++ ClassLoader classLoader = classNode.getParentClass().getClassLoader(); + + Class groupClass; + synchronized (lock) { +- groupClass = AsmUtils.loadClass(className, classNode.getParentClass()); ++ groupClass = findLoadedClass(className, classLoader); + if (groupClass == null || forceCodeBuilding) { + byte[] groupClassCode = generateGroupClassCode(group); + group.setGroupClassCode(groupClassCode); + if (groupClass == null) { +- AsmUtils.defineClass(className, groupClassCode, classNode.getParentClass()); ++ loadClass(className, groupClassCode, classLoader); + } + } + } +@@ -71,7 +73,7 @@ + String s = classNode.name; + int lastSlash = classNode.name.lastIndexOf('/'); + // do not prepend a slash if class is in the default package (lastSlash == -1) +- String groupClassInternalName = (lastSlash >= 0 ? s.substring(0, lastSlash) + '/' : "") + group.getName(); ++ String groupClassInternalName = (lastSlash >= 0 ? s.substring(0, lastSlash) : s)+ '/' + group.getName(); + group.setGroupClassType(Type.getObjectType(groupClassInternalName)); + } + +diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/InstructionGraphCreator.java parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/InstructionGraphCreator.java +--- parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/InstructionGraphCreator.java 2023-10-11 09:54:38.758788500 +0200 ++++ parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/InstructionGraphCreator.java 2023-10-11 09:54:51.432202375 +0200 +@@ -23,8 +23,6 @@ + package org.parboiled.transform; + + import static org.parboiled.common.Preconditions.*; +- +-import org.objectweb.asm.Type; + import org.objectweb.asm.tree.analysis.Analyzer; + + /** +@@ -53,7 +51,7 @@ + interpreter.newControlFlowEdge(insn, successor); + return true; + } +- }.analyze(Type.getInternalName(classNode.getParentClass()), method); ++ }.analyze(classNode.name, method); + + interpreter.finish(); + } +diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/LookupFactory.java parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/LookupFactory.java +--- parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/LookupFactory.java 2023-10-11 09:54:38.758788500 +0200 ++++ parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/LookupFactory.java 1970-01-01 01:00:00.000000000 +0100 +@@ -1,105 +0,0 @@ +-/* +- * Copyright (C) 2022 parboiled contributors +- * +- * Licensed under the Apache License, Version 2.0 (the "License"); +- * you may not use this file except in compliance with the License. +- * You may obtain a copy of the License at +- * +- * http://www.apache.org/licenses/LICENSE-2.0 +- * +- * Unless required by applicable law or agreed to in writing, software +- * distributed under the License is distributed on an "AS IS" BASIS, +- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +- * See the License for the specific language governing permissions and +- * limitations under the License. +- */ +- +-package org.parboiled.transform; +- +-import java.lang.invoke.MethodHandles.Lookup; +-import java.lang.reflect.Field; +-import java.lang.reflect.Method; +-import java.util.WeakHashMap; +- +-/** +- * Helper that can be used to create {@link Lookup} instances for +- * specific classes. +- */ +-final class LookupFactory { +- +- private WeakHashMap, Lookup> lookups = new WeakHashMap<>(); +- private Lookup trustedLookup; +- +- LookupFactory() { +- loadTrustedLookup(); +- } +- +- /** +- * Tries to load a trusted {@link Lookup} instance. +- * +- *

+- * Adapted from HiddenClassDefiner +- * of Google Guice. +- *

+- */ +- private void loadTrustedLookup() { +- try { +- Class unsafeType = Class.forName("sun.misc.Unsafe"); +- Field theUnsafeField = unsafeType.getDeclaredField("theUnsafe"); +- theUnsafeField.setAccessible(true); +- Object unsafeInstance = theUnsafeField.get(null); +- Field trustedLookupField = Lookup.class.getDeclaredField("IMPL_LOOKUP"); +- Method baseMethod = unsafeType.getMethod("staticFieldBase", Field.class); +- Object trustedLookupBase = baseMethod.invoke(unsafeInstance, trustedLookupField); +- Method offsetMethod = unsafeType.getMethod("staticFieldOffset", Field.class); +- Object trustedLookupOffset = offsetMethod.invoke(unsafeInstance, trustedLookupField); +- Method getObjectMethod = unsafeType.getMethod("getObject", Object.class, long.class); +- this.trustedLookup = +- (Lookup) getObjectMethod.invoke(unsafeInstance, trustedLookupBase, trustedLookupOffset); +- } catch (Exception e) { +- // Unsafe and trusted lookup is not available +- } +- } +- +- /** +- * Determines a {@link Lookup} instance for the given hostClass. +- *

+- * The method first tries to use a static method of the hostClass with the +- * following signature: +- *

+- *

+- * +- * public static {@link Lookup} lookup(); +- * +- *

+- *

+- * If this fails then it tries to use a trusted lookup +- * instance created via sun.misc.Unsafe. +- *

+- * +- * @param hostClass The target class of the lookup instance +- * @return a lookup instance or null if not found +- */ +- Lookup lookupFor(Class hostClass) { +- Lookup lookup = lookups.get(hostClass); +- if (lookup == null) { +- try { +- // try to find a lookup() method first +- Method lookupMethod = hostClass.getMethod("lookup"); +- lookup = (Lookup) lookupMethod.invoke(null); +- } catch (Exception e) { +- // failed to use lookup() method +- } +- +- if (lookup == null && trustedLookup != null) { +- // use trusted lookup instance if available +- lookup = trustedLookup.in(hostClass); +- } +- +- if (lookup != null) { +- lookups.put(hostClass, lookup); +- } +- } +- return lookup; +- } +-} +\ No newline at end of file +diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/ParserTransformer.java parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/ParserTransformer.java +--- parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/ParserTransformer.java 2023-10-11 09:54:38.758788500 +0200 ++++ parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/ParserTransformer.java 2023-10-11 09:55:09.205648662 +0200 +@@ -32,8 +32,8 @@ + public static synchronized Class transformParser(Class parserClass) throws Exception { + checkArgNotNull(parserClass, "parserClass"); + // first check whether we did not already create and load the extension of the given parser class +- Class extendedClass = AsmUtils.loadClass( +- getExtendedParserClassName(parserClass.getName()), parserClass ++ Class extendedClass = findLoadedClass( ++ getExtendedParserClassName(parserClass.getName()), parserClass.getClassLoader() + ); + return (Class) + (extendedClass != null ? extendedClass : extendParserClass(parserClass).getExtendedClass()); +@@ -102,10 +102,10 @@ + }; + classNode.accept(classWriter); + classNode.setClassCode(classWriter.toByteArray()); +- classNode.setExtendedClass(defineClass( ++ classNode.setExtendedClass(loadClass( + classNode.name.replace('/', '.'), + classNode.getClassCode(), +- classNode.getParentClass() ++ classNode.getParentClass().getClassLoader() + )); + } + +diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/ActionTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/ActionTest.java +--- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/ActionTest.java 2023-10-11 09:54:38.758788500 +0200 ++++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/ActionTest.java 2023-10-11 09:55:09.205648662 +0200 +@@ -135,13 +135,13 @@ + + assertEquals(stats.printActionClassInstances(), "" + + "Action classes and their instances for rule 'A':\n" + +- " Action$KT5vcoYNBwlSxCxf : B_Action1\n" + +- " Action$PAqU0LvxzUVoURCx : A_Action1\n" + +- " Action$fKILGTA7SHvK2Wv0 : A_Action2\n" + +- " Action$m85l2h2jwKmRq8Y3 : B_Action2, C_Action1\n" + +- " Action$n449VU3wlEEz4TDj : D_Action3\n" + +- " Action$phKm3I8AzhaefYYv : D_Action1\n" + +- " Action$uNJUVN3EfXLXlH8Y : D_Action2\n" + ++ " Action$0QAUd2XJhkFkwVyB : D_Action2\n" + ++ " Action$BYXjsBCgkaYmhXqh : D_Action3\n" + ++ " Action$M1hejMpBJ5SjCHvC : B_Action1\n" + ++ " Action$Qy8BzTl3RpzAzrXV : A_Action1\n" + ++ " Action$Syt5vvsOCzKOZ8Az : D_Action1\n" + ++ " Action$esdKf3Sj9cYL9I1s : B_Action2, C_Action1\n" + ++ " Action$xipkqpZJpsrvOANU : A_Action2\n" + + " and 1 anonymous instance(s)\n"); + } + +diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/PrevCallsTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/PrevCallsTest.java +--- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/PrevCallsTest.java 2023-10-11 09:54:38.762121854 +0200 ++++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/PrevCallsTest.java 2023-10-11 09:55:09.205648662 +0200 +@@ -22,8 +22,6 @@ + import org.parboiled.test.TestNgParboiledTest; + import org.testng.annotations.Test; + +-import java.lang.invoke.MethodHandles; +- + public class PrevCallsTest extends TestNgParboiledTest { + + @BuildParseTree +diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/ActionClassGeneratorTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/ActionClassGeneratorTest.java +--- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/ActionClassGeneratorTest.java 2023-10-11 09:54:38.812122172 +0200 ++++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/ActionClassGeneratorTest.java 2023-10-11 09:55:09.208982017 +0200 +@@ -126,11 +126,11 @@ + assertEquals(getClassDump(group.getGroupClassCode()), "" + + "// class version 51.0 (51)\n" + + "// access flags 0x1011\n" + +- "public final synthetic class org/parboiled/transform/Action$xPqljUb88dWGGhyd extends org/parboiled/transform/BaseAction {\n" + ++ "public final synthetic class org/parboiled/transform/Action$OrG2zjbz0MYoT8sO extends org/parboiled/transform/BaseAction {\n" + + "\n" + + "\n" + + " // access flags 0x1001\n" + +- " public synthetic Lorg/parboiled/transform/TestParser; field$0\n" + ++ " public synthetic Lorg/parboiled/transform/TestParser$$parboiled; field$0\n" + + "\n" + + " // access flags 0x1001\n" + + " public synthetic I field$1\n" + +@@ -156,21 +156,21 @@ + " // access flags 0x1\n" + + " public run(Lorg/parboiled/Context;)Z\n" + + " ALOAD 0\n" + +- " GETFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$0 : Lorg/parboiled/transform/TestParser;\n" + ++ " GETFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$0 : Lorg/parboiled/transform/TestParser$$parboiled;\n" + + " GETFIELD org/parboiled/transform/TestParser.integer : I\n" + + " ALOAD 0\n" + +- " GETFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$1 : I\n" + ++ " GETFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$1 : I\n" + + " IADD\n" + + " ALOAD 0\n" + +- " GETFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$2 : Lorg/parboiled/support/Var;\n" + ++ " GETFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$2 : Lorg/parboiled/support/Var;\n" + + " INVOKEVIRTUAL org/parboiled/support/Var.get ()Ljava/lang/Object;\n" + + " CHECKCAST java/lang/String\n" + + " INVOKEVIRTUAL java/lang/String.length ()I\n" + + " ALOAD 0\n" + +- " GETFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$3 : I\n" + ++ " GETFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$3 : I\n" + + " ISUB\n" + + " ALOAD 0\n" + +- " GETFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$4 : I\n" + ++ " GETFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$4 : I\n" + + " ISUB\n" + + " IF_ICMPGE L0\n" + + " ICONST_1\n" + +diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/InstructionGroupPreparerTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/InstructionGroupPreparerTest.java +--- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/InstructionGroupPreparerTest.java 2023-10-11 09:54:38.812122172 +0200 ++++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/InstructionGroupPreparerTest.java 2023-10-11 09:55:09.208982017 +0200 +@@ -56,9 +56,9 @@ + assertEquals(group.getFields().get(2).desc, "I"); + + group = method.getGroups().get(2); +- assertEquals(group.getName(), "Action$xPqljUb88dWGGhyd"); ++ assertEquals(group.getName(), "Action$OrG2zjbz0MYoT8sO"); + assertEquals(group.getFields().size(), 5); +- assertEquals(group.getFields().get(0).desc, "Lorg/parboiled/transform/TestParser;"); ++ assertEquals(group.getFields().get(0).desc, "Lorg/parboiled/transform/TestParser$$parboiled;"); + assertEquals(group.getFields().get(1).desc, "I"); + assertEquals(group.getFields().get(2).desc, "Lorg/parboiled/support/Var;"); + assertEquals(group.getFields().get(3).desc, "I"); +diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/LookupMethodTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/LookupMethodTest.java +--- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/LookupMethodTest.java 2023-10-11 09:54:38.812122172 +0200 ++++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/LookupMethodTest.java 1970-01-01 01:00:00.000000000 +0100 +@@ -1,48 +0,0 @@ +-/* +- * Copyright (C) 2022 parboiled contributors +- * +- * Licensed under the Apache License, Version 2.0 (the "License"); +- * you may not use this file except in compliance with the License. +- * You may obtain a copy of the License at +- * +- * http://www.apache.org/licenses/LICENSE-2.0 +- * +- * Unless required by applicable law or agreed to in writing, software +- * distributed under the License is distributed on an "AS IS" BASIS, +- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +- * See the License for the specific language governing permissions and +- * limitations under the License. +- */ +- +-package org.parboiled.transform; +- +-import org.parboiled.BaseParser; +-import org.parboiled.Parboiled; +-import org.parboiled.Rule; +-import org.parboiled.test.TestNgParboiledTest; +-import org.testng.Assert; +-import org.testng.annotations.Test; +- +-import java.lang.invoke.MethodHandles; +- +-public class LookupMethodTest extends TestNgParboiledTest { +- static boolean lookupMethodInvoked = false; +- +- public static class Parser extends BaseParser { +- +- public Rule A() { +- return Sequence('a', push(42)); +- } +- +- public static MethodHandles.Lookup lookup() { +- lookupMethodInvoked = true; +- return MethodHandles.lookup(); +- } +- } +- +- @Test +- public void testLookupMethodUsed() { +- Parser parser = Parboiled.createParser(Parser.class); +- Assert.assertTrue(lookupMethodInvoked, "The lookup() method must be used if available."); +- } +-} +diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/ParserHierarchyTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/ParserHierarchyTest.java +--- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/ParserHierarchyTest.java 2023-10-11 09:54:38.812122172 +0200 ++++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/ParserHierarchyTest.java 2023-10-11 09:55:09.208982017 +0200 +@@ -124,13 +124,13 @@ + " 0 ALOAD 0\n" + + " 1 BIPUSH 66\n" + + " 2 INVOKESTATIC java/lang/Character.valueOf (C)Ljava/lang/Character;\n" + +- " 3 NEW org/parboiled/transform/Action$02sFO02Q9LhJ2mmp\n" + ++ " 3 NEW org/parboiled/transform/Action$Px2Jp4FIYS9AjKV7\n" + + " 4 DUP\n" + + " 5 LDC \"$B_Action1\"\n" + +- " 6 INVOKESPECIAL org/parboiled/transform/Action$02sFO02Q9LhJ2mmp. (Ljava/lang/String;)V\n" + ++ " 6 INVOKESPECIAL org/parboiled/transform/Action$Px2Jp4FIYS9AjKV7. (Ljava/lang/String;)V\n" + + " 7 DUP\n" + + " 8 ALOAD 0\n" + +- " 9 PUTFIELD org/parboiled/transform/Action$02sFO02Q9LhJ2mmp.field$0 : Lorg/parboiled/transform/ParserHierarchyTest$Parser3;\n" + ++ " 9 PUTFIELD org/parboiled/transform/Action$Px2Jp4FIYS9AjKV7.field$0 : Lorg/parboiled/transform/ParserHierarchyTest$Parser3$$parboiled;\n" + + "10 ICONST_0\n" + + "11 ANEWARRAY java/lang/Object\n" + + "12 INVOKEVIRTUAL org/parboiled/transform/ParserHierarchyTest$Parser1.Sequence (Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Lorg/parboiled/Rule;\n" + +@@ -160,13 +160,13 @@ + "20 ANEWARRAY java/lang/Object\n" + + "21 DUP\n" + + "22 ICONST_0\n" + +- "23 NEW org/parboiled/transform/Action$UbnKC3brDnPwNKXv\n" + ++ "23 NEW org/parboiled/transform/Action$k4qTyX8Zgn8Lm8a0\n" + + "24 DUP\n" + + "25 LDC \"B_Action1\"\n" + +- "26 INVOKESPECIAL org/parboiled/transform/Action$UbnKC3brDnPwNKXv. (Ljava/lang/String;)V\n" + ++ "26 INVOKESPECIAL org/parboiled/transform/Action$k4qTyX8Zgn8Lm8a0. (Ljava/lang/String;)V\n" + + "27 DUP\n" + + "28 ALOAD 0\n" + +- "29 PUTFIELD org/parboiled/transform/Action$UbnKC3brDnPwNKXv.field$0 : Lorg/parboiled/transform/ParserHierarchyTest$Parser3;\n" + ++ "29 PUTFIELD org/parboiled/transform/Action$k4qTyX8Zgn8Lm8a0.field$0 : Lorg/parboiled/transform/ParserHierarchyTest$Parser3$$parboiled;\n" + + "30 AASTORE\n" + + "31 INVOKEVIRTUAL org/parboiled/transform/ParserHierarchyTest$Parser3.Sequence (Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Lorg/parboiled/Rule;\n" + + "32 DUP\n" + +@@ -187,13 +187,13 @@ + " 0 ALOAD 0\n" + + " 1 ALOAD 0\n" + + " 2 INVOKESPECIAL org/parboiled/transform/ParserHierarchyTest$Parser1.C ()Lorg/parboiled/Rule;\n" + +- " 3 NEW org/parboiled/transform/Action$COjnrfuG0T4POBCt\n" + ++ " 3 NEW org/parboiled/transform/Action$zJfzDznnLMaJTxvg\n" + + " 4 DUP\n" + + " 5 LDC \"$C_Action1\"\n" + +- " 6 INVOKESPECIAL org/parboiled/transform/Action$COjnrfuG0T4POBCt. (Ljava/lang/String;)V\n" + ++ " 6 INVOKESPECIAL org/parboiled/transform/Action$zJfzDznnLMaJTxvg. (Ljava/lang/String;)V\n" + + " 7 DUP\n" + + " 8 ALOAD 0\n" + +- " 9 PUTFIELD org/parboiled/transform/Action$COjnrfuG0T4POBCt.field$0 : Lorg/parboiled/transform/ParserHierarchyTest$Parser3;\n" + ++ " 9 PUTFIELD org/parboiled/transform/Action$zJfzDznnLMaJTxvg.field$0 : Lorg/parboiled/transform/ParserHierarchyTest$Parser3$$parboiled;\n" + + "10 ICONST_0\n" + + "11 ANEWARRAY java/lang/Object\n" + + "12 INVOKEVIRTUAL org/parboiled/transform/ParserHierarchyTest$Parser2.Sequence (Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Lorg/parboiled/Rule;\n" + +diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/RuleMethodRewriterTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/RuleMethodRewriterTest.java +--- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/RuleMethodRewriterTest.java 2023-10-11 09:54:38.812122172 +0200 ++++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/RuleMethodRewriterTest.java 2023-10-11 09:55:09.208982017 +0200 +@@ -59,13 +59,13 @@ + " 6 ANEWARRAY java/lang/Object\n" + + " 7 DUP\n" + + " 8 ICONST_0\n" + +- " 9 NEW org/parboiled/transform/Action$9oFgHpRIhPPzfI17\n" + ++ " 9 NEW org/parboiled/transform/Action$K54Cjo0vNpv0KPTK\n" + + "10 DUP\n" + + "11 LDC \"RuleWithIndirectImplicitAction_Action1\"\n" + +- "12 INVOKESPECIAL org/parboiled/transform/Action$9oFgHpRIhPPzfI17. (Ljava/lang/String;)V\n" + ++ "12 INVOKESPECIAL org/parboiled/transform/Action$K54Cjo0vNpv0KPTK. (Ljava/lang/String;)V\n" + + "13 DUP\n" + + "14 ALOAD 0\n" + +- "15 PUTFIELD org/parboiled/transform/Action$9oFgHpRIhPPzfI17.field$0 : Lorg/parboiled/transform/TestParser;\n" + ++ "15 PUTFIELD org/parboiled/transform/Action$K54Cjo0vNpv0KPTK.field$0 : Lorg/parboiled/transform/TestParser$$parboiled;\n" + + "16 AASTORE\n" + + "17 INVOKEVIRTUAL org/parboiled/transform/TestParser.Sequence (Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Lorg/parboiled/Rule;\n" + + "18 ARETURN\n"); +@@ -118,25 +118,25 @@ + "43 AASTORE\n" + + "44 DUP\n" + + "45 ICONST_1\n" + +- "46 NEW org/parboiled/transform/Action$xPqljUb88dWGGhyd\n" + ++ "46 NEW org/parboiled/transform/Action$OrG2zjbz0MYoT8sO\n" + + "47 DUP\n" + + "48 LDC \"RuleWithComplexActionSetup_Action2\"\n" + +- "49 INVOKESPECIAL org/parboiled/transform/Action$xPqljUb88dWGGhyd. (Ljava/lang/String;)V\n" + ++ "49 INVOKESPECIAL org/parboiled/transform/Action$OrG2zjbz0MYoT8sO. (Ljava/lang/String;)V\n" + + "50 DUP\n" + + "51 ALOAD 0\n" + +- "52 PUTFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$0 : Lorg/parboiled/transform/TestParser;\n" + ++ "52 PUTFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$0 : Lorg/parboiled/transform/TestParser$$parboiled;\n" + + "53 DUP\n" + + "54 ILOAD 1\n" + +- "55 PUTFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$1 : I\n" + ++ "55 PUTFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$1 : I\n" + + "56 DUP\n" + + "57 ALOAD 4\n" + +- "58 PUTFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$2 : Lorg/parboiled/support/Var;\n" + ++ "58 PUTFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$2 : Lorg/parboiled/support/Var;\n" + + "59 DUP\n" + + "60 ILOAD 2\n" + +- "61 PUTFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$3 : I\n" + ++ "61 PUTFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$3 : I\n" + + "62 DUP\n" + + "63 ILOAD 3\n" + +- "64 PUTFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$4 : I\n" + ++ "64 PUTFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$4 : I\n" + + "65 AASTORE\n" + + "66 INVOKEVIRTUAL org/parboiled/transform/TestParser.Sequence (Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Lorg/parboiled/Rule;\n" + + "67 NEW org/parboiled/matchers/VarFramingMatcher\n" + +diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/VarInitClassGeneratorTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/VarInitClassGeneratorTest.java +--- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/VarInitClassGeneratorTest.java 2023-10-11 09:54:38.815455526 +0200 ++++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/VarInitClassGeneratorTest.java 2023-10-11 09:55:09.208982017 +0200 +@@ -120,14 +120,14 @@ + assertEquals(getClassDump(group.getGroupClassCode()), "" + + "// class version 51.0 (51)\n" + + "// access flags 0x1011\n" + +- "public final synthetic class org/parboiled/transform/Action$wahXW5a63chqvc1g extends org/parboiled/transform/BaseAction {\n" + ++ "public final synthetic class org/parboiled/transform/Action$ha3NOiBr9DZ3I2Sh extends org/parboiled/transform/BaseAction {\n" + + "\n" + + "\n" + + " // access flags 0x1001\n" + + " public synthetic Lorg/parboiled/support/Var; field$0\n" + + "\n" + + " // access flags 0x1001\n" + +- " public synthetic Lorg/parboiled/transform/VarInitClassGeneratorTest$Parser; field$1\n" + ++ " public synthetic Lorg/parboiled/transform/VarInitClassGeneratorTest$Parser$$parboiled; field$1\n" + + "\n" + + " // access flags 0x1\n" + + " public (Ljava/lang/String;)V\n" + +@@ -141,11 +141,11 @@ + " // access flags 0x1\n" + + " public run(Lorg/parboiled/Context;)Z\n" + + " ALOAD 0\n" + +- " GETFIELD org/parboiled/transform/Action$wahXW5a63chqvc1g.field$0 : Lorg/parboiled/support/Var;\n" + ++ " GETFIELD org/parboiled/transform/Action$ha3NOiBr9DZ3I2Sh.field$0 : Lorg/parboiled/support/Var;\n" + + " INVOKEVIRTUAL org/parboiled/support/Var.get ()Ljava/lang/Object;\n" + + " CHECKCAST java/util/List\n" + + " ALOAD 0\n" + +- " GETFIELD org/parboiled/transform/Action$wahXW5a63chqvc1g.field$1 : Lorg/parboiled/transform/VarInitClassGeneratorTest$Parser;\n" + ++ " GETFIELD org/parboiled/transform/Action$ha3NOiBr9DZ3I2Sh.field$1 : Lorg/parboiled/transform/VarInitClassGeneratorTest$Parser$$parboiled;\n" + + " DUP\n" + + " ALOAD 1\n" + + " INVOKEINTERFACE org/parboiled/ContextAware.setContext (Lorg/parboiled/Context;)V (itf)\n" + From f6e9ebc26759edbea0e091cfe8eae7b0eea0052b2a742134ef9e82fa5bc30d8b Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Wed, 11 Oct 2023 08:10:32 +0000 Subject: [PATCH 5/7] OBS-URL: https://build.opensuse.org/package/show/Java:packages/parboiled?expand=0&rev=20 --- restore-java8-compatibility.patch | 321 +----------------------------- 1 file changed, 4 insertions(+), 317 deletions(-) diff --git a/restore-java8-compatibility.patch b/restore-java8-compatibility.patch index 9c51c18..cd239e8 100644 --- a/restore-java8-compatibility.patch +++ b/restore-java8-compatibility.patch @@ -1,5 +1,4 @@ -diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/AsmUtils.java parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/AsmUtils.java ---- parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/AsmUtils.java 2023-10-11 09:54:38.742121727 +0200 +--- parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/AsmUtils.java 2023-10-11 09:54:38.742121727 +0200 +++ parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/AsmUtils.java 2023-10-11 09:54:51.432202375 +0200 @@ -35,7 +35,6 @@ @@ -92,8 +91,7 @@ diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/tr } finally { defineClassMethod.setAccessible(false); } -diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/GroupClassGenerator.java parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/GroupClassGenerator.java ---- parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/GroupClassGenerator.java 2023-10-11 09:54:38.758788500 +0200 +--- parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/GroupClassGenerator.java 2023-10-11 09:54:38.758788500 +0200 +++ parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/GroupClassGenerator.java 2023-10-11 09:58:14.413389233 +0200 @@ -23,7 +23,8 @@ import org.objectweb.asm.tree.*; @@ -133,29 +131,7 @@ diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/tr group.setGroupClassType(Type.getObjectType(groupClassInternalName)); } -diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/InstructionGraphCreator.java parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/InstructionGraphCreator.java ---- parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/InstructionGraphCreator.java 2023-10-11 09:54:38.758788500 +0200 -+++ parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/InstructionGraphCreator.java 2023-10-11 09:54:51.432202375 +0200 -@@ -23,8 +23,6 @@ - package org.parboiled.transform; - - import static org.parboiled.common.Preconditions.*; -- --import org.objectweb.asm.Type; - import org.objectweb.asm.tree.analysis.Analyzer; - - /** -@@ -53,7 +51,7 @@ - interpreter.newControlFlowEdge(insn, successor); - return true; - } -- }.analyze(Type.getInternalName(classNode.getParentClass()), method); -+ }.analyze(classNode.name, method); - - interpreter.finish(); - } -diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/LookupFactory.java parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/LookupFactory.java ---- parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/LookupFactory.java 2023-10-11 09:54:38.758788500 +0200 +--- parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/LookupFactory.java 2023-10-11 09:54:38.758788500 +0200 +++ parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/LookupFactory.java 1970-01-01 01:00:00.000000000 +0100 @@ -1,105 +0,0 @@ -/* @@ -264,8 +240,7 @@ diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/tr - } -} \ No newline at end of file -diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/ParserTransformer.java parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/ParserTransformer.java ---- parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/transform/ParserTransformer.java 2023-10-11 09:54:38.758788500 +0200 +--- parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/ParserTransformer.java 2023-10-11 09:54:38.758788500 +0200 +++ parboiled-1.4.1/parboiled-java/src/main/java/org/parboiled/transform/ParserTransformer.java 2023-10-11 09:55:09.205648662 +0200 @@ -32,8 +32,8 @@ public static synchronized Class transformParser(Class parserClass) throws Exception { @@ -291,291 +266,3 @@ diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/main/java/org/parboiled/tr )); } -diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/ActionTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/ActionTest.java ---- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/ActionTest.java 2023-10-11 09:54:38.758788500 +0200 -+++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/ActionTest.java 2023-10-11 09:55:09.205648662 +0200 -@@ -135,13 +135,13 @@ - - assertEquals(stats.printActionClassInstances(), "" + - "Action classes and their instances for rule 'A':\n" + -- " Action$KT5vcoYNBwlSxCxf : B_Action1\n" + -- " Action$PAqU0LvxzUVoURCx : A_Action1\n" + -- " Action$fKILGTA7SHvK2Wv0 : A_Action2\n" + -- " Action$m85l2h2jwKmRq8Y3 : B_Action2, C_Action1\n" + -- " Action$n449VU3wlEEz4TDj : D_Action3\n" + -- " Action$phKm3I8AzhaefYYv : D_Action1\n" + -- " Action$uNJUVN3EfXLXlH8Y : D_Action2\n" + -+ " Action$0QAUd2XJhkFkwVyB : D_Action2\n" + -+ " Action$BYXjsBCgkaYmhXqh : D_Action3\n" + -+ " Action$M1hejMpBJ5SjCHvC : B_Action1\n" + -+ " Action$Qy8BzTl3RpzAzrXV : A_Action1\n" + -+ " Action$Syt5vvsOCzKOZ8Az : D_Action1\n" + -+ " Action$esdKf3Sj9cYL9I1s : B_Action2, C_Action1\n" + -+ " Action$xipkqpZJpsrvOANU : A_Action2\n" + - " and 1 anonymous instance(s)\n"); - } - -diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/PrevCallsTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/PrevCallsTest.java ---- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/PrevCallsTest.java 2023-10-11 09:54:38.762121854 +0200 -+++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/PrevCallsTest.java 2023-10-11 09:55:09.205648662 +0200 -@@ -22,8 +22,6 @@ - import org.parboiled.test.TestNgParboiledTest; - import org.testng.annotations.Test; - --import java.lang.invoke.MethodHandles; -- - public class PrevCallsTest extends TestNgParboiledTest { - - @BuildParseTree -diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/ActionClassGeneratorTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/ActionClassGeneratorTest.java ---- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/ActionClassGeneratorTest.java 2023-10-11 09:54:38.812122172 +0200 -+++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/ActionClassGeneratorTest.java 2023-10-11 09:55:09.208982017 +0200 -@@ -126,11 +126,11 @@ - assertEquals(getClassDump(group.getGroupClassCode()), "" + - "// class version 51.0 (51)\n" + - "// access flags 0x1011\n" + -- "public final synthetic class org/parboiled/transform/Action$xPqljUb88dWGGhyd extends org/parboiled/transform/BaseAction {\n" + -+ "public final synthetic class org/parboiled/transform/Action$OrG2zjbz0MYoT8sO extends org/parboiled/transform/BaseAction {\n" + - "\n" + - "\n" + - " // access flags 0x1001\n" + -- " public synthetic Lorg/parboiled/transform/TestParser; field$0\n" + -+ " public synthetic Lorg/parboiled/transform/TestParser$$parboiled; field$0\n" + - "\n" + - " // access flags 0x1001\n" + - " public synthetic I field$1\n" + -@@ -156,21 +156,21 @@ - " // access flags 0x1\n" + - " public run(Lorg/parboiled/Context;)Z\n" + - " ALOAD 0\n" + -- " GETFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$0 : Lorg/parboiled/transform/TestParser;\n" + -+ " GETFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$0 : Lorg/parboiled/transform/TestParser$$parboiled;\n" + - " GETFIELD org/parboiled/transform/TestParser.integer : I\n" + - " ALOAD 0\n" + -- " GETFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$1 : I\n" + -+ " GETFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$1 : I\n" + - " IADD\n" + - " ALOAD 0\n" + -- " GETFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$2 : Lorg/parboiled/support/Var;\n" + -+ " GETFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$2 : Lorg/parboiled/support/Var;\n" + - " INVOKEVIRTUAL org/parboiled/support/Var.get ()Ljava/lang/Object;\n" + - " CHECKCAST java/lang/String\n" + - " INVOKEVIRTUAL java/lang/String.length ()I\n" + - " ALOAD 0\n" + -- " GETFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$3 : I\n" + -+ " GETFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$3 : I\n" + - " ISUB\n" + - " ALOAD 0\n" + -- " GETFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$4 : I\n" + -+ " GETFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$4 : I\n" + - " ISUB\n" + - " IF_ICMPGE L0\n" + - " ICONST_1\n" + -diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/InstructionGroupPreparerTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/InstructionGroupPreparerTest.java ---- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/InstructionGroupPreparerTest.java 2023-10-11 09:54:38.812122172 +0200 -+++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/InstructionGroupPreparerTest.java 2023-10-11 09:55:09.208982017 +0200 -@@ -56,9 +56,9 @@ - assertEquals(group.getFields().get(2).desc, "I"); - - group = method.getGroups().get(2); -- assertEquals(group.getName(), "Action$xPqljUb88dWGGhyd"); -+ assertEquals(group.getName(), "Action$OrG2zjbz0MYoT8sO"); - assertEquals(group.getFields().size(), 5); -- assertEquals(group.getFields().get(0).desc, "Lorg/parboiled/transform/TestParser;"); -+ assertEquals(group.getFields().get(0).desc, "Lorg/parboiled/transform/TestParser$$parboiled;"); - assertEquals(group.getFields().get(1).desc, "I"); - assertEquals(group.getFields().get(2).desc, "Lorg/parboiled/support/Var;"); - assertEquals(group.getFields().get(3).desc, "I"); -diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/LookupMethodTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/LookupMethodTest.java ---- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/LookupMethodTest.java 2023-10-11 09:54:38.812122172 +0200 -+++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/LookupMethodTest.java 1970-01-01 01:00:00.000000000 +0100 -@@ -1,48 +0,0 @@ --/* -- * Copyright (C) 2022 parboiled contributors -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.parboiled.transform; -- --import org.parboiled.BaseParser; --import org.parboiled.Parboiled; --import org.parboiled.Rule; --import org.parboiled.test.TestNgParboiledTest; --import org.testng.Assert; --import org.testng.annotations.Test; -- --import java.lang.invoke.MethodHandles; -- --public class LookupMethodTest extends TestNgParboiledTest { -- static boolean lookupMethodInvoked = false; -- -- public static class Parser extends BaseParser { -- -- public Rule A() { -- return Sequence('a', push(42)); -- } -- -- public static MethodHandles.Lookup lookup() { -- lookupMethodInvoked = true; -- return MethodHandles.lookup(); -- } -- } -- -- @Test -- public void testLookupMethodUsed() { -- Parser parser = Parboiled.createParser(Parser.class); -- Assert.assertTrue(lookupMethodInvoked, "The lookup() method must be used if available."); -- } --} -diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/ParserHierarchyTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/ParserHierarchyTest.java ---- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/ParserHierarchyTest.java 2023-10-11 09:54:38.812122172 +0200 -+++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/ParserHierarchyTest.java 2023-10-11 09:55:09.208982017 +0200 -@@ -124,13 +124,13 @@ - " 0 ALOAD 0\n" + - " 1 BIPUSH 66\n" + - " 2 INVOKESTATIC java/lang/Character.valueOf (C)Ljava/lang/Character;\n" + -- " 3 NEW org/parboiled/transform/Action$02sFO02Q9LhJ2mmp\n" + -+ " 3 NEW org/parboiled/transform/Action$Px2Jp4FIYS9AjKV7\n" + - " 4 DUP\n" + - " 5 LDC \"$B_Action1\"\n" + -- " 6 INVOKESPECIAL org/parboiled/transform/Action$02sFO02Q9LhJ2mmp. (Ljava/lang/String;)V\n" + -+ " 6 INVOKESPECIAL org/parboiled/transform/Action$Px2Jp4FIYS9AjKV7. (Ljava/lang/String;)V\n" + - " 7 DUP\n" + - " 8 ALOAD 0\n" + -- " 9 PUTFIELD org/parboiled/transform/Action$02sFO02Q9LhJ2mmp.field$0 : Lorg/parboiled/transform/ParserHierarchyTest$Parser3;\n" + -+ " 9 PUTFIELD org/parboiled/transform/Action$Px2Jp4FIYS9AjKV7.field$0 : Lorg/parboiled/transform/ParserHierarchyTest$Parser3$$parboiled;\n" + - "10 ICONST_0\n" + - "11 ANEWARRAY java/lang/Object\n" + - "12 INVOKEVIRTUAL org/parboiled/transform/ParserHierarchyTest$Parser1.Sequence (Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Lorg/parboiled/Rule;\n" + -@@ -160,13 +160,13 @@ - "20 ANEWARRAY java/lang/Object\n" + - "21 DUP\n" + - "22 ICONST_0\n" + -- "23 NEW org/parboiled/transform/Action$UbnKC3brDnPwNKXv\n" + -+ "23 NEW org/parboiled/transform/Action$k4qTyX8Zgn8Lm8a0\n" + - "24 DUP\n" + - "25 LDC \"B_Action1\"\n" + -- "26 INVOKESPECIAL org/parboiled/transform/Action$UbnKC3brDnPwNKXv. (Ljava/lang/String;)V\n" + -+ "26 INVOKESPECIAL org/parboiled/transform/Action$k4qTyX8Zgn8Lm8a0. (Ljava/lang/String;)V\n" + - "27 DUP\n" + - "28 ALOAD 0\n" + -- "29 PUTFIELD org/parboiled/transform/Action$UbnKC3brDnPwNKXv.field$0 : Lorg/parboiled/transform/ParserHierarchyTest$Parser3;\n" + -+ "29 PUTFIELD org/parboiled/transform/Action$k4qTyX8Zgn8Lm8a0.field$0 : Lorg/parboiled/transform/ParserHierarchyTest$Parser3$$parboiled;\n" + - "30 AASTORE\n" + - "31 INVOKEVIRTUAL org/parboiled/transform/ParserHierarchyTest$Parser3.Sequence (Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Lorg/parboiled/Rule;\n" + - "32 DUP\n" + -@@ -187,13 +187,13 @@ - " 0 ALOAD 0\n" + - " 1 ALOAD 0\n" + - " 2 INVOKESPECIAL org/parboiled/transform/ParserHierarchyTest$Parser1.C ()Lorg/parboiled/Rule;\n" + -- " 3 NEW org/parboiled/transform/Action$COjnrfuG0T4POBCt\n" + -+ " 3 NEW org/parboiled/transform/Action$zJfzDznnLMaJTxvg\n" + - " 4 DUP\n" + - " 5 LDC \"$C_Action1\"\n" + -- " 6 INVOKESPECIAL org/parboiled/transform/Action$COjnrfuG0T4POBCt. (Ljava/lang/String;)V\n" + -+ " 6 INVOKESPECIAL org/parboiled/transform/Action$zJfzDznnLMaJTxvg. (Ljava/lang/String;)V\n" + - " 7 DUP\n" + - " 8 ALOAD 0\n" + -- " 9 PUTFIELD org/parboiled/transform/Action$COjnrfuG0T4POBCt.field$0 : Lorg/parboiled/transform/ParserHierarchyTest$Parser3;\n" + -+ " 9 PUTFIELD org/parboiled/transform/Action$zJfzDznnLMaJTxvg.field$0 : Lorg/parboiled/transform/ParserHierarchyTest$Parser3$$parboiled;\n" + - "10 ICONST_0\n" + - "11 ANEWARRAY java/lang/Object\n" + - "12 INVOKEVIRTUAL org/parboiled/transform/ParserHierarchyTest$Parser2.Sequence (Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Lorg/parboiled/Rule;\n" + -diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/RuleMethodRewriterTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/RuleMethodRewriterTest.java ---- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/RuleMethodRewriterTest.java 2023-10-11 09:54:38.812122172 +0200 -+++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/RuleMethodRewriterTest.java 2023-10-11 09:55:09.208982017 +0200 -@@ -59,13 +59,13 @@ - " 6 ANEWARRAY java/lang/Object\n" + - " 7 DUP\n" + - " 8 ICONST_0\n" + -- " 9 NEW org/parboiled/transform/Action$9oFgHpRIhPPzfI17\n" + -+ " 9 NEW org/parboiled/transform/Action$K54Cjo0vNpv0KPTK\n" + - "10 DUP\n" + - "11 LDC \"RuleWithIndirectImplicitAction_Action1\"\n" + -- "12 INVOKESPECIAL org/parboiled/transform/Action$9oFgHpRIhPPzfI17. (Ljava/lang/String;)V\n" + -+ "12 INVOKESPECIAL org/parboiled/transform/Action$K54Cjo0vNpv0KPTK. (Ljava/lang/String;)V\n" + - "13 DUP\n" + - "14 ALOAD 0\n" + -- "15 PUTFIELD org/parboiled/transform/Action$9oFgHpRIhPPzfI17.field$0 : Lorg/parboiled/transform/TestParser;\n" + -+ "15 PUTFIELD org/parboiled/transform/Action$K54Cjo0vNpv0KPTK.field$0 : Lorg/parboiled/transform/TestParser$$parboiled;\n" + - "16 AASTORE\n" + - "17 INVOKEVIRTUAL org/parboiled/transform/TestParser.Sequence (Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Lorg/parboiled/Rule;\n" + - "18 ARETURN\n"); -@@ -118,25 +118,25 @@ - "43 AASTORE\n" + - "44 DUP\n" + - "45 ICONST_1\n" + -- "46 NEW org/parboiled/transform/Action$xPqljUb88dWGGhyd\n" + -+ "46 NEW org/parboiled/transform/Action$OrG2zjbz0MYoT8sO\n" + - "47 DUP\n" + - "48 LDC \"RuleWithComplexActionSetup_Action2\"\n" + -- "49 INVOKESPECIAL org/parboiled/transform/Action$xPqljUb88dWGGhyd. (Ljava/lang/String;)V\n" + -+ "49 INVOKESPECIAL org/parboiled/transform/Action$OrG2zjbz0MYoT8sO. (Ljava/lang/String;)V\n" + - "50 DUP\n" + - "51 ALOAD 0\n" + -- "52 PUTFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$0 : Lorg/parboiled/transform/TestParser;\n" + -+ "52 PUTFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$0 : Lorg/parboiled/transform/TestParser$$parboiled;\n" + - "53 DUP\n" + - "54 ILOAD 1\n" + -- "55 PUTFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$1 : I\n" + -+ "55 PUTFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$1 : I\n" + - "56 DUP\n" + - "57 ALOAD 4\n" + -- "58 PUTFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$2 : Lorg/parboiled/support/Var;\n" + -+ "58 PUTFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$2 : Lorg/parboiled/support/Var;\n" + - "59 DUP\n" + - "60 ILOAD 2\n" + -- "61 PUTFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$3 : I\n" + -+ "61 PUTFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$3 : I\n" + - "62 DUP\n" + - "63 ILOAD 3\n" + -- "64 PUTFIELD org/parboiled/transform/Action$xPqljUb88dWGGhyd.field$4 : I\n" + -+ "64 PUTFIELD org/parboiled/transform/Action$OrG2zjbz0MYoT8sO.field$4 : I\n" + - "65 AASTORE\n" + - "66 INVOKEVIRTUAL org/parboiled/transform/TestParser.Sequence (Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Lorg/parboiled/Rule;\n" + - "67 NEW org/parboiled/matchers/VarFramingMatcher\n" + -diff -urEbwBN parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/VarInitClassGeneratorTest.java parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/VarInitClassGeneratorTest.java ---- parboiled-1.4.1.orig/parboiled-java/src/test/java/org/parboiled/transform/VarInitClassGeneratorTest.java 2023-10-11 09:54:38.815455526 +0200 -+++ parboiled-1.4.1/parboiled-java/src/test/java/org/parboiled/transform/VarInitClassGeneratorTest.java 2023-10-11 09:55:09.208982017 +0200 -@@ -120,14 +120,14 @@ - assertEquals(getClassDump(group.getGroupClassCode()), "" + - "// class version 51.0 (51)\n" + - "// access flags 0x1011\n" + -- "public final synthetic class org/parboiled/transform/Action$wahXW5a63chqvc1g extends org/parboiled/transform/BaseAction {\n" + -+ "public final synthetic class org/parboiled/transform/Action$ha3NOiBr9DZ3I2Sh extends org/parboiled/transform/BaseAction {\n" + - "\n" + - "\n" + - " // access flags 0x1001\n" + - " public synthetic Lorg/parboiled/support/Var; field$0\n" + - "\n" + - " // access flags 0x1001\n" + -- " public synthetic Lorg/parboiled/transform/VarInitClassGeneratorTest$Parser; field$1\n" + -+ " public synthetic Lorg/parboiled/transform/VarInitClassGeneratorTest$Parser$$parboiled; field$1\n" + - "\n" + - " // access flags 0x1\n" + - " public (Ljava/lang/String;)V\n" + -@@ -141,11 +141,11 @@ - " // access flags 0x1\n" + - " public run(Lorg/parboiled/Context;)Z\n" + - " ALOAD 0\n" + -- " GETFIELD org/parboiled/transform/Action$wahXW5a63chqvc1g.field$0 : Lorg/parboiled/support/Var;\n" + -+ " GETFIELD org/parboiled/transform/Action$ha3NOiBr9DZ3I2Sh.field$0 : Lorg/parboiled/support/Var;\n" + - " INVOKEVIRTUAL org/parboiled/support/Var.get ()Ljava/lang/Object;\n" + - " CHECKCAST java/util/List\n" + - " ALOAD 0\n" + -- " GETFIELD org/parboiled/transform/Action$wahXW5a63chqvc1g.field$1 : Lorg/parboiled/transform/VarInitClassGeneratorTest$Parser;\n" + -+ " GETFIELD org/parboiled/transform/Action$ha3NOiBr9DZ3I2Sh.field$1 : Lorg/parboiled/transform/VarInitClassGeneratorTest$Parser$$parboiled;\n" + - " DUP\n" + - " ALOAD 1\n" + - " INVOKEINTERFACE org/parboiled/ContextAware.setContext (Lorg/parboiled/Context;)V (itf)\n" + From c8537006c520c111a9dc884aa954c0b1c8434ee0ac4f8732db6950aea978d3e3 Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Wed, 11 Oct 2023 08:15:45 +0000 Subject: [PATCH 6/7] OBS-URL: https://build.opensuse.org/package/show/Java:packages/parboiled?expand=0&rev=21 --- parboiled.spec | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/parboiled.spec b/parboiled.spec index b4582dd..eb0f4e1 100644 --- a/parboiled.spec +++ b/parboiled.spec @@ -17,8 +17,12 @@ %global base_name parboiled +Name: %{base_name} Version: 1.4.1 Release: 0 +Summary: Java library providing parsing of input text based on PEGs +License: Apache-2.0 +Group: Development/Libraries/Java URL: http://parboiled.org/ Source0: https://github.com/sirthias/parboiled/archive/%{version}.tar.gz Source1: %{base_name}-build.tar.xz @@ -28,18 +32,14 @@ Source3: https://repo1.maven.org/maven2/org/parboiled/%{base_name}-java/% Patch0: restore-java8-compatibility.patch BuildRequires: ant BuildRequires: fdupes +BuildRequires: java-devel >= 1.8 BuildRequires: javapackages-local -BuildArch: noarch -Name: %{base_name} -Summary: Java library providing parsing of input text based on PEGs -License: Apache-2.0 -Group: Development/Libraries/Java -BuildRequires: java-devel >= 9 BuildRequires: objectweb-asm Requires: mvn(org.ow2.asm:asm) Requires: mvn(org.ow2.asm:asm-analysis) Requires: mvn(org.ow2.asm:asm-tree) Requires: mvn(org.ow2.asm:asm-util) +BuildArch: noarch %description parboiled is a mixed Java library providing parsing of @@ -60,9 +60,6 @@ This package contains javadoc for %{name}. %setup -q -n %{base_name}-%{version} -a1 %patch0 -p1 -find . -name "*.class" -delete -find . -name "*.jar" -delete - cp %{SOURCE2} %{base_name}-core/pom.xml cp %{SOURCE3} %{base_name}-java/pom.xml @@ -81,7 +78,7 @@ for i in %{modules}; do # jar install -pm 0644 %{base_name}-${i}/target/%{base_name}-${i}*%{version}.jar %{buildroot}%{_javadir}/%{base_name}/${i}.jar # pom - %mvn_install_pom %{base_name}-${i}/pom.xml %{buildroot}%{_mavenpomdir}/%{base_name}/${i}.pom + %{mvn_install_pom} %{base_name}-${i}/pom.xml %{buildroot}%{_mavenpomdir}/%{base_name}/${i}.pom %add_maven_depmap %{base_name}/${i}.pom %{base_name}/${i}.jar # javadoc install -dm 0755 %{buildroot}%{_javadocdir}/%{base_name}/${i} From 4bf61d3ab61b24095185ba6919379e5ddf5c5a50b33f3b15ec42b3ebe6d84ae8 Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Wed, 11 Oct 2023 10:05:52 +0000 Subject: [PATCH 7/7] OBS-URL: https://build.opensuse.org/package/show/Java:packages/parboiled?expand=0&rev=22 --- parboiled.spec | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/parboiled.spec b/parboiled.spec index eb0f4e1..30e92ba 100644 --- a/parboiled.spec +++ b/parboiled.spec @@ -1,5 +1,5 @@ # -# spec file +# spec file for package parboiled # # Copyright (c) 2023 SUSE LLC # @@ -16,8 +16,7 @@ # -%global base_name parboiled -Name: %{base_name} +Name: parboiled Version: 1.4.1 Release: 0 Summary: Java library providing parsing of input text based on PEGs @@ -25,20 +24,16 @@ License: Apache-2.0 Group: Development/Libraries/Java URL: http://parboiled.org/ Source0: https://github.com/sirthias/parboiled/archive/%{version}.tar.gz -Source1: %{base_name}-build.tar.xz +Source1: %{name}-build.tar.xz # for build see https://github.com/sirthias/parboiled/wiki/Building-parboiled -Source2: https://repo1.maven.org/maven2/org/parboiled/%{base_name}-core/%{version}/%{base_name}-core-%{version}.pom -Source3: https://repo1.maven.org/maven2/org/parboiled/%{base_name}-java/%{version}/%{base_name}-java-%{version}.pom +Source2: https://repo1.maven.org/maven2/org/parboiled/%{name}-core/%{version}/%{name}-core-%{version}.pom +Source3: https://repo1.maven.org/maven2/org/parboiled/%{name}-java/%{version}/%{name}-java-%{version}.pom Patch0: restore-java8-compatibility.patch BuildRequires: ant BuildRequires: fdupes BuildRequires: java-devel >= 1.8 BuildRequires: javapackages-local BuildRequires: objectweb-asm -Requires: mvn(org.ow2.asm:asm) -Requires: mvn(org.ow2.asm:asm-analysis) -Requires: mvn(org.ow2.asm:asm-tree) -Requires: mvn(org.ow2.asm:asm-util) BuildArch: noarch %description @@ -57,11 +52,11 @@ Group: Documentation/HTML This package contains javadoc for %{name}. %prep -%setup -q -n %{base_name}-%{version} -a1 +%setup -q -n %{name}-%{version} -a1 %patch0 -p1 -cp %{SOURCE2} %{base_name}-core/pom.xml -cp %{SOURCE3} %{base_name}-java/pom.xml +cp %{SOURCE2} %{name}-core/pom.xml +cp %{SOURCE3} %{name}-java/pom.xml %build mkdir -p lib @@ -72,17 +67,17 @@ build-jar-repository -s lib \ %install %global modules core java -install -dm 0755 %{buildroot}%{_javadir}/%{base_name} -install -dm 0755 %{buildroot}%{_mavenpomdir}/%{base_name} +install -dm 0755 %{buildroot}%{_javadir}/%{name} +install -dm 0755 %{buildroot}%{_mavenpomdir}/%{name} for i in %{modules}; do # jar - install -pm 0644 %{base_name}-${i}/target/%{base_name}-${i}*%{version}.jar %{buildroot}%{_javadir}/%{base_name}/${i}.jar + install -pm 0644 %{name}-${i}/target/%{name}-${i}*%{version}.jar %{buildroot}%{_javadir}/%{name}/${i}.jar # pom - %{mvn_install_pom} %{base_name}-${i}/pom.xml %{buildroot}%{_mavenpomdir}/%{base_name}/${i}.pom - %add_maven_depmap %{base_name}/${i}.pom %{base_name}/${i}.jar + %{mvn_install_pom} %{name}-${i}/pom.xml %{buildroot}%{_mavenpomdir}/%{name}/${i}.pom + %add_maven_depmap %{name}/${i}.pom %{name}/${i}.jar # javadoc - install -dm 0755 %{buildroot}%{_javadocdir}/%{base_name}/${i} - cp -pr %{base_name}-${i}/target/site/apidocs/* %{buildroot}%{_javadocdir}/%{base_name}/${i}/ + install -dm 0755 %{buildroot}%{_javadocdir}/%{name}/${i} + cp -pr %{name}-${i}/target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}/${i}/ done %fdupes -s %{buildroot}%{_javadocdir} @@ -92,6 +87,6 @@ done %files javadoc %license LICENSE -%{_javadocdir}/%{base_name} +%{_javadocdir}/%{name} %changelog