diff --git a/.gitignore b/.gitignore index e7aae49..a44bcfb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,2 @@ -/v1.1-alpha.tar.gz -/jctools-1.2.1.tar.gz -/jctools-2.0.2.tar.gz -/jctools-2.1.2.tar.gz +/jctools-*.tar.gz +/*.src.rpm diff --git a/0001-Javaparser-API.patch b/0001-Javaparser-API.patch deleted file mode 100644 index 920a0ec..0000000 --- a/0001-Javaparser-API.patch +++ /dev/null @@ -1,325 +0,0 @@ -From 19806373f6ac4babbbb3929870f8b5089e851773 Mon Sep 17 00:00:00 2001 -From: Mat Booth -Date: Tue, 28 Jul 2020 10:42:10 +0100 -Subject: [PATCH] Javaparser API - ---- - jctools-build/pom.xml | 2 +- - .../JavaParsingAtomicArrayQueueGenerator.java | 18 +++++------ - ...JavaParsingAtomicLinkedQueueGenerator.java | 28 ++++++++-------- - .../jctools/queues/atomic/TraceVisitor.java | 32 +++++++++---------- - 4 files changed, 40 insertions(+), 40 deletions(-) - -diff --git a/jctools-build/pom.xml b/jctools-build/pom.xml -index fac435c..8b1d820 100644 ---- a/jctools-build/pom.xml -+++ b/jctools-build/pom.xml -@@ -17,7 +17,7 @@ - - com.github.javaparser - javaparser-core -- 3.3.0 -+ 3.14.2 - - - -\ No newline at end of file -diff --git a/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicArrayQueueGenerator.java b/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicArrayQueueGenerator.java -index 3708b8a..9602eca 100644 ---- a/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicArrayQueueGenerator.java -+++ b/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicArrayQueueGenerator.java -@@ -12,6 +12,7 @@ import com.github.javaparser.JavaParser; - import com.github.javaparser.ast.CompilationUnit; - import com.github.javaparser.ast.ImportDeclaration; - import com.github.javaparser.ast.Modifier; -+import com.github.javaparser.ast.Modifier.Keyword; - import com.github.javaparser.ast.Node; - import com.github.javaparser.ast.NodeList; - import com.github.javaparser.ast.PackageDeclaration; -@@ -87,7 +88,7 @@ public final class JavaParsingAtomicArrayQueueGenerator extends VoidVisitorAdapt - } - - if (!node.getMethodsByName("failFastOffer").isEmpty()) { -- MethodDeclaration deprecatedMethodRedirect = node.addMethod("weakOffer", Modifier.PUBLIC); -+ MethodDeclaration deprecatedMethodRedirect = node.addMethod("weakOffer", Keyword.PUBLIC); - patchMethodAsDepreciatedRedirector(deprecatedMethodRedirect, "failFastOffer", PrimitiveType.intType(), - new Parameter(classType("E"), "e")); - } -@@ -147,7 +148,7 @@ public final class JavaParsingAtomicArrayQueueGenerator extends VoidVisitorAdapt - - // Remove all static fields - for (FieldDeclaration field : node.getFields()) { -- if (field.getModifiers().contains(Modifier.STATIC)) { -+ if (field.getModifiers().contains(Modifier.staticModifier())) { - field.remove(); - continue; - } -@@ -221,7 +222,7 @@ public final class JavaParsingAtomicArrayQueueGenerator extends VoidVisitorAdapt - String className = n.getNameAsString(); - - for (FieldDeclaration field : n.getFields()) { -- if (field.getModifiers().contains(Modifier.STATIC)) { -+ if (field.getModifiers().contains(Keyword.STATIC)) { - // Ignore statics - continue; - } -@@ -266,7 +267,7 @@ public final class JavaParsingAtomicArrayQueueGenerator extends VoidVisitorAdapt - } - - if (usesFieldUpdater) { -- field.addModifier(Modifier.VOLATILE); -+ field.addModifier(Keyword.VOLATILE); - } - } - } -@@ -346,12 +347,11 @@ public final class JavaParsingAtomicArrayQueueGenerator extends VoidVisitorAdapt - * @return - */ - private static FieldDeclaration fieldDeclarationWithInitialiser(Type type, String name, Expression initializer, -- Modifier... modifiers) { -+ Keyword... modifiers) { - FieldDeclaration fieldDeclaration = new FieldDeclaration(); - VariableDeclarator variable = new VariableDeclarator(type, name, initializer); - fieldDeclaration.getVariables().add(variable); -- EnumSet modifierSet = EnumSet.copyOf(Arrays.asList(modifiers)); -- fieldDeclaration.setModifiers(modifierSet); -+ fieldDeclaration.setModifiers(modifiers); - return fieldDeclaration; - } - -@@ -368,7 +368,7 @@ public final class JavaParsingAtomicArrayQueueGenerator extends VoidVisitorAdapt - - ClassOrInterfaceType type = simpleParametricType("AtomicLongFieldUpdater", className); - FieldDeclaration newField = fieldDeclarationWithInitialiser(type, fieldUpdaterFieldName(variableName), -- initializer, Modifier.PRIVATE, Modifier.STATIC, Modifier.FINAL); -+ initializer, Keyword.PRIVATE, Keyword.STATIC, Keyword.FINAL); - return newField; - } - -@@ -536,7 +536,7 @@ public final class JavaParsingAtomicArrayQueueGenerator extends VoidVisitorAdapt - for (int i = 1; i < args.length; i++) { - File file = new File(args[i]); - System.out.println("Processing " + file); -- CompilationUnit cu = JavaParser.parse(file); -+ CompilationUnit cu = new JavaParser().parse(file).getResult().get(); - new JavaParsingAtomicArrayQueueGenerator(file.getName()).visit(cu, null); - - organiseImports(cu); -diff --git a/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicLinkedQueueGenerator.java b/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicLinkedQueueGenerator.java -index 1a195b4..77fab49 100644 ---- a/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicLinkedQueueGenerator.java -+++ b/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicLinkedQueueGenerator.java -@@ -12,6 +12,7 @@ import com.github.javaparser.JavaParser; - import com.github.javaparser.ast.CompilationUnit; - import com.github.javaparser.ast.ImportDeclaration; - import com.github.javaparser.ast.Modifier; -+import com.github.javaparser.ast.Modifier.Keyword; - import com.github.javaparser.ast.Node; - import com.github.javaparser.ast.NodeList; - import com.github.javaparser.ast.PackageDeclaration; -@@ -88,8 +89,8 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap - /* - * Special case for MPSC - */ -- node.removeModifier(Modifier.ABSTRACT); -- node.addModifier(Modifier.FINAL); -+ node.removeModifier(Keyword.ABSTRACT); -+ node.addModifier(Keyword.FINAL); - } - - if (isCommentPresent(node, GEN_DIRECTIVE_CLASS_CONTAINS_ORDERED_FIELD_ACCESSORS)) { -@@ -118,8 +119,8 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap - n.setName(translateQueueName(n.getNameAsString())); - if (MPSC_LINKED_ATOMIC_QUEUE_NAME.equals(n.getNameAsString())) { - // Special case for MPSC because the Unsafe variant has a static factory method and a protected constructor. -- n.setModifier(Modifier.PROTECTED, false); -- n.setModifier(Modifier.PUBLIC, true); -+ n.setModifier(Keyword.PROTECTED, false); -+ n.setModifier(Keyword.PUBLIC, true); - } - } - -@@ -177,7 +178,7 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap - - // Remove all static fields - for (FieldDeclaration field : node.getFields()) { -- if (field.getModifiers().contains(Modifier.STATIC)) { -+ if (field.getModifiers().contains(Modifier.staticModifier())) { - field.remove(); - continue; - } -@@ -222,7 +223,7 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap - String className = n.getNameAsString(); - - for (FieldDeclaration field : n.getFields()) { -- if (field.getModifiers().contains(Modifier.STATIC)) { -+ if (field.getModifiers().contains(Keyword.STATIC)) { - // Ignore statics - continue; - } -@@ -269,7 +270,7 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap - usesFieldUpdater = true; - String fieldUpdaterFieldName = fieldUpdaterFieldName(variableName); - -- MethodDeclaration method = n.addMethod("xchgProducerNode", Modifier.PROTECTED, Modifier.FINAL); -+ MethodDeclaration method = n.addMethod("xchgProducerNode", Keyword.PROTECTED, Keyword.FINAL); - method.setType(simpleParametricType("LinkedQueueAtomicNode", "E")); - method.addParameter(simpleParametricType("LinkedQueueAtomicNode", "E"), "newValue"); - method.setBody(fieldUpdaterGetAndSet(fieldUpdaterFieldName, "newValue")); -@@ -285,7 +286,7 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap - } - - if (usesFieldUpdater) { -- field.addModifier(Modifier.VOLATILE); -+ field.addModifier(Keyword.VOLATILE); - } - } - } -@@ -380,12 +381,11 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap - * @return - */ - private static FieldDeclaration fieldDeclarationWithInitialiser(Type type, String name, Expression initializer, -- Modifier... modifiers) { -+ Keyword... modifiers) { - FieldDeclaration fieldDeclaration = new FieldDeclaration(); - VariableDeclarator variable = new VariableDeclarator(type, name, initializer); - fieldDeclaration.getVariables().add(variable); -- EnumSet modifierSet = EnumSet.copyOf(Arrays.asList(modifiers)); -- fieldDeclaration.setModifiers(modifierSet); -+ fieldDeclaration.setModifiers(modifiers); - return fieldDeclaration; - } - -@@ -403,7 +403,7 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap - ClassOrInterfaceType type = simpleParametricType("AtomicReferenceFieldUpdater", className, - "LinkedQueueAtomicNode"); - FieldDeclaration newField = fieldDeclarationWithInitialiser(type, fieldUpdaterFieldName(variableName), -- initializer, Modifier.PRIVATE, Modifier.STATIC, Modifier.FINAL); -+ initializer, Keyword.PRIVATE, Keyword.STATIC, Keyword.FINAL); - return newField; - } - -@@ -425,7 +425,7 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap - - ClassOrInterfaceType type = simpleParametricType("AtomicLongFieldUpdater", className); - FieldDeclaration newField = fieldDeclarationWithInitialiser(type, fieldUpdaterFieldName(variableName), -- initializer, Modifier.PRIVATE, Modifier.STATIC, Modifier.FINAL); -+ initializer, Keyword.PRIVATE, Keyword.STATIC, Keyword.FINAL); - return newField; - } - -@@ -621,7 +621,7 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap - for (int i = 1; i < args.length; i++) { - File file = new File(args[i]); - System.out.println("Processing " + file); -- CompilationUnit cu = JavaParser.parse(file); -+ CompilationUnit cu = new JavaParser().parse(file).getResult().get(); - new JavaParsingAtomicLinkedQueueGenerator(file.getName()).visit(cu, null); - - organiseImports(cu); -diff --git a/jctools-build/src/main/java/org/jctools/queues/atomic/TraceVisitor.java b/jctools-build/src/main/java/org/jctools/queues/atomic/TraceVisitor.java -index 7ff87f4..e64cf74 100644 ---- a/jctools-build/src/main/java/org/jctools/queues/atomic/TraceVisitor.java -+++ b/jctools-build/src/main/java/org/jctools/queues/atomic/TraceVisitor.java -@@ -58,11 +58,11 @@ import com.github.javaparser.ast.expr.TypeExpr; - import com.github.javaparser.ast.expr.UnaryExpr; - import com.github.javaparser.ast.expr.VariableDeclarationExpr; - import com.github.javaparser.ast.modules.ModuleDeclaration; --import com.github.javaparser.ast.modules.ModuleExportsStmt; --import com.github.javaparser.ast.modules.ModuleOpensStmt; --import com.github.javaparser.ast.modules.ModuleProvidesStmt; --import com.github.javaparser.ast.modules.ModuleRequiresStmt; --import com.github.javaparser.ast.modules.ModuleUsesStmt; -+import com.github.javaparser.ast.modules.ModuleExportsDirective; -+import com.github.javaparser.ast.modules.ModuleOpensDirective; -+import com.github.javaparser.ast.modules.ModuleProvidesDirective; -+import com.github.javaparser.ast.modules.ModuleRequiresDirective; -+import com.github.javaparser.ast.modules.ModuleUsesDirective; - import com.github.javaparser.ast.stmt.AssertStmt; - import com.github.javaparser.ast.stmt.BlockStmt; - import com.github.javaparser.ast.stmt.BreakStmt; -@@ -72,13 +72,13 @@ import com.github.javaparser.ast.stmt.DoStmt; - import com.github.javaparser.ast.stmt.EmptyStmt; - import com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt; - import com.github.javaparser.ast.stmt.ExpressionStmt; -+import com.github.javaparser.ast.stmt.ForEachStmt; - import com.github.javaparser.ast.stmt.ForStmt; --import com.github.javaparser.ast.stmt.ForeachStmt; - import com.github.javaparser.ast.stmt.IfStmt; - import com.github.javaparser.ast.stmt.LabeledStmt; - import com.github.javaparser.ast.stmt.LocalClassDeclarationStmt; - import com.github.javaparser.ast.stmt.ReturnStmt; --import com.github.javaparser.ast.stmt.SwitchEntryStmt; -+import com.github.javaparser.ast.stmt.SwitchEntry; - import com.github.javaparser.ast.stmt.SwitchStmt; - import com.github.javaparser.ast.stmt.SynchronizedStmt; - import com.github.javaparser.ast.stmt.ThrowStmt; -@@ -317,8 +317,8 @@ public final class TraceVisitor extends VoidVisitorAdapter { - } - - @Override -- public void visit(ForeachStmt n, Void arg) { -- out.println("ForeachStmt: " + (extended ? n : "")); -+ public void visit(ForEachStmt n, Void arg) { -+ out.println("ForEachStmt: " + (extended ? n : "")); - super.visit(n, arg); - } - -@@ -445,31 +445,31 @@ public final class TraceVisitor extends VoidVisitorAdapter { - } - - @Override -- public void visit(ModuleExportsStmt n, Void arg) { -+ public void visit(ModuleExportsDirective n, Void arg) { - out.println("ModuleExportsStmt: " + (extended ? n : "")); - super.visit(n, arg); - } - - @Override -- public void visit(ModuleOpensStmt n, Void arg) { -+ public void visit(ModuleOpensDirective n, Void arg) { - out.println("ModuleOpensStmt: " + (extended ? n : "")); - super.visit(n, arg); - } - - @Override -- public void visit(ModuleProvidesStmt n, Void arg) { -+ public void visit(ModuleProvidesDirective n, Void arg) { - out.println("ModuleProvidesStmt: " + (extended ? n : "")); - super.visit(n, arg); - } - - @Override -- public void visit(ModuleRequiresStmt n, Void arg) { -+ public void visit(ModuleRequiresDirective n, Void arg) { - out.println("ModuleRequiresStmt: " + (extended ? n : "")); - super.visit(n, arg); - } - - @Override -- public void visit(ModuleUsesStmt n, Void arg) { -+ public void visit(ModuleUsesDirective n, Void arg) { - out.println("ModuleUsesStmt: " + (extended ? n : "")); - super.visit(n, arg); - } -@@ -559,7 +559,7 @@ public final class TraceVisitor extends VoidVisitorAdapter { - } - - @Override -- public void visit(SwitchEntryStmt n, Void arg) { -+ public void visit(SwitchEntry n, Void arg) { - out.println("SwitchEntryStmt: " + (extended ? n : "")); - super.visit(n, arg); - } -@@ -665,7 +665,7 @@ public final class TraceVisitor extends VoidVisitorAdapter { - public static void main(String[] args) throws Exception { - for (String file : args) { - System.out.println("Opening " + file); -- CompilationUnit cu = JavaParser.parse(new File(file)); -+ CompilationUnit cu = new JavaParser().parse(new File(file)).getResult().get(); - new TraceVisitor(System.out, false).visit(cu, null); - System.out.println(); - System.out.println(); --- -2.26.2 - diff --git a/jctools.spec b/jctools.spec index 4ac432b..41761b2 100644 --- a/jctools.spec +++ b/jctools.spec @@ -1,18 +1,11 @@ -%global namedreltag %nil -%global namedversion %{version}%{?namedreltag} - Name: jctools -Version: 2.1.2 -Release: 10%{?dist} +Version: 3.1.0 +Release: 1%{?dist} Summary: Java Concurrency Tools for the JVM License: ASL 2.0 URL: http://jctools.github.io/JCTools/ -Source0: https://github.com/JCTools/JCTools/archive/v%{namedversion}/%{name}-%{namedversion}.tar.gz - -# Update for javaparser API change, taken from https://github.com/JCTools/JCTools/commit/b8311b2f818e40cd3e2efa6686169ec7d4ee7dac -Patch0: 0001-Javaparser-API.patch +Source0: https://github.com/JCTools/JCTools/archive/v%{version}/%{name}-%{version}.tar.gz -BuildRequires: java-1.8.0-openjdk-devel BuildRequires: maven-local BuildRequires: mvn(com.github.javaparser:javaparser-core) >= 3.14.16 BuildRequires: mvn(com.google.guava:guava-testlib) @@ -20,10 +13,16 @@ BuildRequires: mvn(junit:junit) BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) BuildRequires: mvn(org.codehaus.mojo:exec-maven-plugin) BuildRequires: mvn(org.hamcrest:hamcrest-all) -BuildRequires: mvn(org.ow2.asm:asm-util) BuildArch: noarch +# Parent pom package obsoleted in F34 +Obsoletes: %{name}-parent < 3.1.0-1 +# Can't ship these modules any longer due to usage of Unsafe.defineClass +# not available in JDK 11, see https://github.com/JCTools/JCTools/issues/254 +Obsoletes: %{name}-channels < 3.1.0-1 +Obsoletes: %{name}-experimental < 3.1.0-1 + %description This project aims to offer some concurrent data structures currently missing from the JDK: @@ -36,35 +35,14 @@ currently missing from the JDK: ° Low contention stats counters ° Executor -%package channels -Summary: JCTools Channel implementations - -%description channels -Channel implementations for the -Java Concurrency Tools Library. - -%package experimental -Summary: JCTools Experimental implementations - -%description experimental -Experimental implementations for the -Java Concurrency Tools Library. - %package javadoc -Summary: Javadoc for %{name} +Summary: Javadoc for %{name} %description javadoc This package contains javadoc for %{name}. -%package parent -Summary: JCTools Parent POM - -%description parent -JCTools Parent POM. - %prep -%setup -q -n JCTools-%{namedversion} -%patch0 -p1 +%setup -q -n JCTools-%{version} # Cleanup find . -name '*.class' -print -delete @@ -75,13 +53,14 @@ rm jctools-core/src/test/java/org/jctools/queues/MpqSanityTestMpscCompound.java rm jctools-core/src/test/java/org/jctools/queues/atomic/AtomicMpqSanityTestMpscCompound.java rm jctools-core/src/test/java/org/jctools/maps/NonBlockingHashMapTest.java -%pom_xpath_set pom:project/pom:version %{namedversion} -%pom_xpath_set -r pom:parent/pom:version %{namedversion} %{name}-{build,core,channels,experimental} +# Fix up version +%pom_xpath_set pom:project/pom:version %{version} +%pom_xpath_set -r pom:parent/pom:version %{version} %{name}-{build,core,channels,experimental} # Remove plugins unnecessary for RPM builds %pom_remove_plugin :maven-enforcer-plugin -%pom_remove_plugin :coveralls-maven-plugin -%pom_remove_plugin :jacoco-maven-plugin +%pom_remove_plugin :coveralls-maven-plugin %{name}-core +%pom_remove_plugin :jacoco-maven-plugin %{name}-core %pom_remove_plugin :maven-source-plugin %{name}-core %pom_remove_plugin :maven-javadoc-plugin %{name}-core @@ -89,34 +68,16 @@ rm jctools-core/src/test/java/org/jctools/maps/NonBlockingHashMapTest.java %pom_disable_module %{name}-benchmarks %pom_disable_module %{name}-concurrency-test -# Modern asm deps -%pom_change_dep ":asm-all" ":asm-util" jctools-{channels,experimental} - -# Add OSGi support -for mod in core experimental; do - %pom_xpath_set "pom:project/pom:packaging" bundle %{name}-${mod} - %pom_add_plugin org.apache.felix:maven-bundle-plugin:2.3.7 %{name}-${mod} ' - true - - - bundle-manifest - process-classes - - manifest - - - - - true - ' -done +# Can't build these modules due to use of Unsafe.defineClass which is not present +# in JDK 11, see https://github.com/JCTools/JCTools/issues/254 +%pom_disable_module %{name}-channels +%pom_disable_module %{name}-experimental # No need to package internal build tools +%mvn_package :jctools-parent __noinstall %mvn_package :jctools-build __noinstall %build -# https://github.com/JCTools/JCTools/issues/254 (Unsafe.defineClass) -export JAVA_HOME=%{_jvmdir}/java-1.8.0 %mvn_build -s %install @@ -126,17 +87,14 @@ export JAVA_HOME=%{_jvmdir}/java-1.8.0 %doc README.md %license LICENSE -%files channels -f .mfiles-%{name}-channels - -%files experimental -f .mfiles-%{name}-experimental - %files javadoc -f .mfiles-javadoc %license LICENSE -%files parent -f .mfiles-%{name}-parent -%license LICENSE - %changelog +* Fri Sep 04 2020 Mat Booth - 3.1.0-1 +- Update to latest upstream version +- Obsolete sub-packages that cannot be built on JDK 11 + * Tue Jul 28 2020 Mat Booth - 2.1.2-10 - Patch for javaparser API changes diff --git a/sources b/sources index 9cd347a..44ff9c1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (jctools-2.1.2.tar.gz) = 374c15d2c77846fb866cdc59bd5b9f3830adef5f0db8b285566c9faf9de7315a01be67bb8c86b580003b1a2077ae9b54c64188033985143f0a4de043d68ce947 +SHA512 (jctools-3.1.0.tar.gz) = bf69387732dea043e6e5fa44fe60a5f80ef5ae9d32ebb39ac16353e5bd82502b3b6e5564a8bd9f3b8ad073a95ff984ae55133884ebeea9d0b9a777c488af2a74