From a9f7552ac0da19cd19c94a88321b9a2eca96be8d Mon Sep 17 00:00:00 2001 From: Marian Koncek Date: Feb 23 2023 11:54:53 +0000 Subject: Update to upstream version 9.4 --- diff --git a/.gitignore b/.gitignore index 6211337..9c6a2d3 100644 --- a/.gitignore +++ b/.gitignore @@ -85,3 +85,9 @@ /asm-test-9.3.pom /asm-tree-9.3.pom /asm-util-9.3.pom +/asm-9.4.pom +/asm-analysis-9.4.pom +/asm-commons-9.4.pom +/asm-test-9.4.pom +/asm-tree-9.4.pom +/asm-util-9.4.pom diff --git a/0001-Generate-the-module-info-classes-without-Bnd.-Delete.patch b/0001-Generate-the-module-info-classes-without-Bnd.-Delete.patch deleted file mode 100644 index 8d4a837..0000000 --- a/0001-Generate-the-module-info-classes-without-Bnd.-Delete.patch +++ /dev/null @@ -1,614 +0,0 @@ -From 5921eb2a141f0dcc83c6a5d7dcd5035a30c5edfc Mon Sep 17 00:00:00 2001 -From: Eric Bruneton -Date: Sun, 31 Jul 2022 12:21:41 +0000 -Subject: [PATCH] Generate the module info classes without Bnd. Delete the Bnd - plugin. - ---- - .../asm/tools/ModuleInfoBndPlugin.java | 99 ------ - .../org/objectweb/asm/tools/Retrofitter.java | 336 +++++++++++++----- - 4 files changed, 267 insertions(+), 206 deletions(-) - delete mode 100644 tools/bnd-module-plugin/src/main/java/org/objectweb/asm/tools/ModuleInfoBndPlugin.java - -diff --git a/tools/bnd-module-plugin/src/main/java/org/objectweb/asm/tools/ModuleInfoBndPlugin.java b/tools/bnd-module-plugin/src/main/java/org/objectweb/asm/tools/ModuleInfoBndPlugin.java -deleted file mode 100644 -index ee91bdc1..00000000 ---- a/tools/bnd-module-plugin/src/main/java/org/objectweb/asm/tools/ModuleInfoBndPlugin.java -+++ /dev/null -@@ -1,99 +0,0 @@ --// ASM: a very small and fast Java bytecode manipulation framework --// Copyright (c) 2000-2011 INRIA, France Telecom --// All rights reserved. --// --// Redistribution and use in source and binary forms, with or without --// modification, are permitted provided that the following conditions --// are met: --// 1. Redistributions of source code must retain the above copyright --// notice, this list of conditions and the following disclaimer. --// 2. Redistributions in binary form must reproduce the above copyright --// notice, this list of conditions and the following disclaimer in the --// documentation and/or other materials provided with the distribution. --// 3. Neither the name of the copyright holders nor the names of its --// contributors may be used to endorse or promote products derived from --// this software without specific prior written permission. --// --// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" --// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE --// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE --// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE --// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR --// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF --// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS --// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN --// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) --// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF --// THE POSSIBILITY OF SUCH DAMAGE. --package org.objectweb.asm.tools; -- --import aQute.bnd.header.Attrs; --import aQute.bnd.header.Parameters; --import aQute.bnd.osgi.Analyzer; --import aQute.bnd.osgi.Constants; --import aQute.bnd.osgi.EmbeddedResource; --import aQute.bnd.service.AnalyzerPlugin; --import org.objectweb.asm.ClassWriter; --import org.objectweb.asm.ModuleVisitor; --import org.objectweb.asm.Opcodes; -- --/** -- * An biz.aQute.bnd plugin to generate a module-info class from the name, version, requires and -- * export properties of the bundle. -- * -- * @author Remi Forax -- */ --public class ModuleInfoBndPlugin implements AnalyzerPlugin { -- private static final String MODULE_NAME = "Module-Name"; -- private static final String MODULE_VERSION = "Module-Version"; -- private static final String MODULE_REQUIRES = "Module-Requires"; -- private static final String MODULE_EXPORTS = "Module-Exports"; -- -- @Override -- public boolean analyzeJar(final Analyzer analyzer) throws Exception { -- ClassWriter classWriter = new ClassWriter(0); -- classWriter.visit(Opcodes.V9, Opcodes.ACC_MODULE, "module-info", null, null, null); -- String moduleName = -- analyzer.getProperty(MODULE_NAME, analyzer.getProperty(Constants.BUNDLE_SYMBOLICNAME)); -- String moduleVersion = -- analyzer.getProperty(MODULE_VERSION, analyzer.getProperty(Constants.BUNDLE_VERSION)); -- ModuleVisitor moduleVisitor = -- classWriter.visitModule(moduleName, Opcodes.ACC_OPEN, moduleVersion); -- -- String requireModules = analyzer.getProperty(MODULE_REQUIRES); -- if (requireModules != null) { -- Parameters requireParams = analyzer.parseHeader(requireModules); -- for (String requireName : requireParams.keySet()) { -- Attrs attrs = requireParams.get(requireName); -- boolean isTransitive = attrs.containsKey("transitive"); -- boolean isStatic = attrs.containsKey("static"); -- moduleVisitor.visitRequire( -- requireName, -- (isTransitive ? Opcodes.ACC_TRANSITIVE : 0) | (isStatic ? Opcodes.ACC_STATIC_PHASE : 0), -- null); -- } -- } -- moduleVisitor.visitRequire("java.base", Opcodes.ACC_MANDATED, null); -- -- String exportPackages = -- analyzer.getProperty(MODULE_EXPORTS, analyzer.getProperty(Constants.EXPORT_PACKAGE)); -- if (exportPackages != null) { -- Parameters exportParams = analyzer.parseHeader(exportPackages); -- for (String packageName : exportParams.keySet()) { -- if (packageName.endsWith("*")) { -- throw new IllegalStateException("Unsupported wildcard packages " + packageName); -- } -- moduleVisitor.visitExport(packageName.replace('.', '/'), 0); -- } -- } -- moduleVisitor.visitEnd(); -- classWriter.visitEnd(); -- -- analyzer -- .getJar() -- .putResource( -- "module-info.class", -- new EmbeddedResource(classWriter.toByteArray(), System.currentTimeMillis())); -- return false; -- } --} -diff --git a/tools/retrofitter/src/main/java/org/objectweb/asm/tools/Retrofitter.java b/tools/retrofitter/src/main/java/org/objectweb/asm/tools/Retrofitter.java -index 2d017ed2..b3d51e63 100644 ---- a/tools/retrofitter/src/main/java/org/objectweb/asm/tools/Retrofitter.java -+++ b/tools/retrofitter/src/main/java/org/objectweb/asm/tools/Retrofitter.java -@@ -27,22 +27,33 @@ - // THE POSSIBILITY OF SUCH DAMAGE. - package org.objectweb.asm.tools; - -+import static java.lang.String.format; -+import static java.util.stream.Collectors.toSet; -+ - import java.io.BufferedReader; - import java.io.File; - import java.io.IOException; - import java.io.InputStream; - import java.io.InputStreamReader; - import java.io.LineNumberReader; --import java.io.OutputStream; -+import java.lang.module.ModuleDescriptor; - import java.nio.file.Files; -+import java.nio.file.Path; -+import java.util.ArrayList; - import java.util.HashMap; - import java.util.HashSet; -+import java.util.List; -+import java.util.Set; -+import java.util.stream.Stream; - import java.util.zip.GZIPInputStream; - import org.objectweb.asm.ClassReader; - import org.objectweb.asm.ClassVisitor; - import org.objectweb.asm.ClassWriter; -+import org.objectweb.asm.FieldVisitor; - import org.objectweb.asm.Handle; -+import org.objectweb.asm.Label; - import org.objectweb.asm.MethodVisitor; -+import org.objectweb.asm.ModuleVisitor; - import org.objectweb.asm.Opcodes; - import org.objectweb.asm.Type; - -@@ -57,6 +68,12 @@ import org.objectweb.asm.Type; - */ - public class Retrofitter { - -+ /** The name of the module-info file. */ -+ private static final String MODULE_INFO = "module-info.class"; -+ -+ /** The name of the java.base module. */ -+ private static final String JAVA_BASE_MODULE = "java.base"; -+ - /** - * The fields and methods of the JDK 1.5 API. Each string has the form - * "<owner><name><descriptor>". -@@ -68,12 +85,158 @@ public class Retrofitter { - */ - private final HashMap jdkHierarchy = new HashMap<>(); - -+ /** The internal names of the packages exported by the retrofitted classes. */ -+ private final HashSet exports = new HashSet<>(); -+ -+ /** The internal names of the packages imported by the retrofitted classes. */ -+ private final HashSet imports = new HashSet<>(); -+ -+ /** -+ * Transforms the class files in the given directory, in place, in order to make them compatible -+ * with the JDK 1.5. Also generates a module-info class in this directory, with the given module -+ * version. -+ * -+ * @param args a directory containing compiled classes and the ASM release version. -+ * @throws IOException if a file can't be read or written. -+ */ -+ public static void main(final String[] args) throws IOException { -+ if (args.length == 2) { -+ new Retrofitter().retrofit(new File(args[0]), args[1]); -+ } else { -+ System.err.println("Usage: Retrofitter "); // NOPMD -+ } -+ } -+ -+ /** -+ * Transforms the class files in the given directory, in place, in order to make them compatible -+ * with the JDK 1.5. Also generates a module-info class in this directory, with the given module -+ * version. -+ * -+ * @param classesDir a directory containing compiled classes. -+ * @param version the module-info version. -+ * @throws IOException if a file can't be read or written. -+ */ -+ public void retrofit(final File classesDir, final String version) throws IOException { -+ for (File classFile : getAllClasses(classesDir, new ArrayList())) { -+ ClassReader classReader = new ClassReader(Files.newInputStream(classFile.toPath())); -+ ClassWriter classWriter = new ClassWriter(0); -+ classReader.accept(new ClassRetrofitter(classWriter), ClassReader.SKIP_FRAMES); -+ Files.write(classFile.toPath(), classWriter.toByteArray()); -+ } -+ generateModuleInfoClass(classesDir, version); -+ } -+ - /** -- * Constructs a new {@link Retrofitter}. -+ * Verify that the class files in the given directory only use JDK 1.5 APIs, and that a -+ * module-info class is present with the expected content. - * -- * @throws IOException if the JDK API description file can't be read. -+ * @param classesDir a directory containing compiled classes. -+ * @param expectedVersion the expected module-info version. -+ * @param expectedExports the expected module-info exported packages. -+ * @param expectedRequires the expected module-info required modules. -+ * @throws IOException if a file can't be read. -+ * @throws IllegalArgumentException if the module-info class does not have the expected content. - */ -- public Retrofitter() throws IOException { -+ public void verify( -+ final File classesDir, -+ final String expectedVersion, -+ final List expectedExports, -+ final List expectedRequires) -+ throws IOException { -+ if (jdkApi.isEmpty()) { -+ readJdkApi(); -+ } -+ for (File classFile : getAllClasses(classesDir, new ArrayList())) { -+ if (!classFile.getName().equals(MODULE_INFO)) { -+ new ClassReader(Files.newInputStream(classFile.toPath())).accept(new ClassVerifier(), 0); -+ } -+ } -+ verifyModuleInfoClass( -+ classesDir, -+ expectedVersion, -+ new HashSet(expectedExports), -+ Stream.concat(expectedRequires.stream(), Stream.of(JAVA_BASE_MODULE)).collect(toSet())); -+ } -+ -+ private List getAllClasses(final File file, final List allClasses) -+ throws IOException { -+ if (file.isDirectory()) { -+ File[] children = file.listFiles(); -+ if (children == null) { -+ throw new IOException("Unable to read files of " + file); -+ } -+ for (File child : children) { -+ getAllClasses(child, allClasses); -+ } -+ } else if (file.getName().endsWith(".class")) { -+ allClasses.add(file); -+ } -+ return allClasses; -+ } -+ -+ private void generateModuleInfoClass(final File dstDir, final String version) throws IOException { -+ ClassWriter classWriter = new ClassWriter(0); -+ classWriter.visit(Opcodes.V9, Opcodes.ACC_MODULE, "module-info", null, null, null); -+ ArrayList moduleNames = new ArrayList<>(); -+ for (String exportName : exports) { -+ if (isAsmModule(exportName)) { -+ moduleNames.add(exportName); -+ } -+ } -+ if (moduleNames.size() != 1) { -+ throw new IllegalArgumentException("Module name can't be infered from classes"); -+ } -+ ModuleVisitor moduleVisitor = -+ classWriter.visitModule(moduleNames.get(0), Opcodes.ACC_OPEN, version); -+ -+ for (String importName : imports) { -+ if (isAsmModule(importName) && !exports.contains(importName)) { -+ moduleVisitor.visitRequire(importName.replace('/', '.'), Opcodes.ACC_TRANSITIVE, null); -+ } -+ } -+ moduleVisitor.visitRequire(JAVA_BASE_MODULE, Opcodes.ACC_MANDATED, null); -+ -+ for (String exportName : exports) { -+ moduleVisitor.visitExport(exportName, 0); -+ } -+ moduleVisitor.visitEnd(); -+ classWriter.visitEnd(); -+ Files.write(Path.of(dstDir.getAbsolutePath(), MODULE_INFO), classWriter.toByteArray()); -+ } -+ -+ private void verifyModuleInfoClass( -+ final File dstDir, -+ final String expectedVersion, -+ final Set expectedExports, -+ final Set expectedRequires) -+ throws IOException { -+ ModuleDescriptor module = -+ ModuleDescriptor.read(Files.newInputStream(Path.of(dstDir.getAbsolutePath(), MODULE_INFO))); -+ String version = module.version().map(ModuleDescriptor.Version::toString).orElse(""); -+ if (!version.equals(expectedVersion)) { -+ throw new IllegalArgumentException( -+ format("Wrong module-info version '%s' (expected '%s')", version, expectedVersion)); -+ } -+ Set exports = -+ module.exports().stream().map(ModuleDescriptor.Exports::source).collect(toSet()); -+ if (!exports.equals(expectedExports)) { -+ throw new IllegalArgumentException( -+ format("Wrong module-info exports %s (expected %s)", exports, expectedExports)); -+ } -+ Set requires = -+ module.requires().stream().map(ModuleDescriptor.Requires::name).collect(toSet()); -+ if (!requires.equals(expectedRequires)) { -+ throw new IllegalArgumentException( -+ format("Wrong module-info requires %s (expected %s)", requires, expectedRequires)); -+ } -+ } -+ -+ private static boolean isAsmModule(final String packageName) { -+ return packageName.startsWith("org/objectweb/asm") -+ && !packageName.equals("org/objectweb/asm/signature"); -+ } -+ -+ private void readJdkApi() throws IOException { - try (InputStream inputStream = - new GZIPInputStream( - Retrofitter.class.getClassLoader().getResourceAsStream("jdk1.5.0.12.txt.gz")); -@@ -97,56 +260,8 @@ public class Retrofitter { - } - } - -- /** -- * Transforms the source class file, or if it is a directory, its files (recursively), in place, -- * in order to make them compatible with the JDK 1.5. -- * -- * @param src source file or directory. -- * @throws IOException if the source files can't be read or written. -- */ -- public void retrofit(final File src) throws IOException { -- retrofit(src, null); -- } -- -- /** -- * Transforms the source class file, or if it is a directory, its files (recursively), either in -- * place or into the destination file or directory, in order to make them compatible with the JDK -- * 1.5. -- * -- * @param src source file or directory. -- * @param dst optional destination file or directory. -- * @throws IOException if the source or destination file can't be read or written. -- */ -- public void retrofit(final File src, final File dst) throws IOException { -- if (src.isDirectory()) { -- File[] files = src.listFiles(); -- if (files == null) { -- throw new IOException("Unable to read files of " + src); -- } -- for (File file : files) { -- retrofit(file, dst == null ? null : new File(dst, file.getName())); -- } -- } else if (src.getName().endsWith(".class")) { -- if (dst == null || !dst.exists() || dst.lastModified() < src.lastModified()) { -- ClassReader classReader = new ClassReader(Files.newInputStream(src.toPath())); -- ClassWriter classWriter = new ClassWriter(0); -- ClassVerifier classVerifier = new ClassVerifier(classWriter); -- ClassRetrofitter classRetrofitter = new ClassRetrofitter(classVerifier); -- classReader.accept(classRetrofitter, ClassReader.SKIP_FRAMES); -- -- if (dst != null && !dst.getParentFile().exists() && !dst.getParentFile().mkdirs()) { -- throw new IOException("Cannot create directory " + dst.getParentFile()); -- } -- try (OutputStream outputStream = -- Files.newOutputStream((dst == null ? src : dst).toPath())) { -- outputStream.write(classWriter.toByteArray()); -- } -- } -- } -- } -- - /** A ClassVisitor that retrofits classes to 1.5 version. */ -- static class ClassRetrofitter extends ClassVisitor { -+ class ClassRetrofitter extends ClassVisitor { - - public ClassRetrofitter(final ClassVisitor classVisitor) { - super(/* latest api =*/ Opcodes.ASM8, classVisitor); -@@ -160,9 +275,21 @@ public class Retrofitter { - final String signature, - final String superName, - final String[] interfaces) { -+ addPackageReferences(Type.getObjectType(name), /* export = */ true); - super.visit(Opcodes.V1_5, access, name, signature, superName, interfaces); - } - -+ @Override -+ public FieldVisitor visitField( -+ final int access, -+ final String name, -+ final String descriptor, -+ final String signature, -+ final Object value) { -+ addPackageReferences(Type.getType(descriptor), /* export = */ false); -+ return super.visitField(access, name, descriptor, signature, value); -+ } -+ - @Override - public MethodVisitor visitMethod( - final int access, -@@ -170,9 +297,17 @@ public class Retrofitter { - final String descriptor, - final String signature, - final String[] exceptions) { -+ addPackageReferences(Type.getType(descriptor), /* export = */ false); - return new MethodVisitor( - api, super.visitMethod(access, name, descriptor, signature, exceptions)) { - -+ @Override -+ public void visitFieldInsn( -+ final int opcode, final String owner, final String name, final String descriptor) { -+ addPackageReferences(Type.getType(descriptor), /* export = */ false); -+ super.visitFieldInsn(opcode, owner, name, descriptor); -+ } -+ - @Override - public void visitMethodInsn( - final int opcode, -@@ -180,6 +315,7 @@ public class Retrofitter { - final String name, - final String descriptor, - final boolean isInterface) { -+ addPackageReferences(Type.getType(descriptor), /* export = */ false); - // Remove the addSuppressed() method calls generated for try-with-resources statements. - // This method is not defined in JDK1.5. - if (owner.equals("java/lang/Throwable") -@@ -190,8 +326,52 @@ public class Retrofitter { - super.visitMethodInsn(opcode, owner, name, descriptor, isInterface); - } - } -+ -+ @Override -+ public void visitTypeInsn(final int opcode, final String type) { -+ addPackageReferences(Type.getObjectType(type), /* export = */ false); -+ super.visitTypeInsn(opcode, type); -+ } -+ -+ @Override -+ public void visitMultiANewArrayInsn(final String descriptor, final int numDimensions) { -+ addPackageReferences(Type.getType(descriptor), /* export = */ false); -+ super.visitMultiANewArrayInsn(descriptor, numDimensions); -+ } -+ -+ @Override -+ public void visitTryCatchBlock( -+ final Label start, final Label end, final Label handler, final String type) { -+ if (type != null) { -+ addPackageReferences(Type.getObjectType(type), /* export = */ false); -+ } -+ super.visitTryCatchBlock(start, end, handler, type); -+ } - }; - } -+ -+ private void addPackageReferences(final Type type, final boolean export) { -+ switch (type.getSort()) { -+ case Type.ARRAY: -+ addPackageReferences(type.getElementType(), export); -+ break; -+ case Type.METHOD: -+ for (Type argumentType : type.getArgumentTypes()) { -+ addPackageReferences(argumentType, export); -+ } -+ addPackageReferences(type.getReturnType(), export); -+ break; -+ case Type.OBJECT: -+ String internalName = type.getInternalName(); -+ int lastSlashIndex = internalName.lastIndexOf('/'); -+ if (lastSlashIndex != -1) { -+ (export ? exports : imports).add(internalName.substring(0, lastSlashIndex)); -+ } -+ break; -+ default: -+ break; -+ } -+ } - } - - /** -@@ -199,18 +379,18 @@ public class Retrofitter { - */ - class ClassVerifier extends ClassVisitor { - -- /** The name of the visited class. */ -+ /** The internal name of the visited class. */ - String className; - - /** The name of the currently visited method. */ - String currentMethodName; - -- public ClassVerifier(final ClassVisitor classVisitor) { -+ public ClassVerifier() { - // Make sure use we don't use Java 9 or higher classfile features. - // We also want to make sure we don't use Java 6, 7 or 8 classfile - // features (invokedynamic), but this can't be done in the same way. - // Instead, we use manual checks below. -- super(Opcodes.ASM4, classVisitor); -+ super(Opcodes.ASM4, null); - } - - @Override -@@ -222,10 +402,9 @@ public class Retrofitter { - final String superName, - final String[] interfaces) { - if ((version & 0xFFFF) > Opcodes.V1_5) { -- throw new IllegalArgumentException("ERROR: " + name + " version is newer than 1.5"); -+ throw new IllegalArgumentException(format("ERROR: %d version is newer than 1.5", version)); - } - className = name; -- super.visit(version, access, name, signature, superName, interfaces); - } - - @Override -@@ -243,7 +422,6 @@ public class Retrofitter { - public void visitFieldInsn( - final int opcode, final String owner, final String name, final String descriptor) { - check(owner, name); -- super.visitFieldInsn(opcode, owner, name, descriptor); - } - - @Override -@@ -254,7 +432,6 @@ public class Retrofitter { - final String descriptor, - final boolean isInterface) { - check(owner, name + descriptor); -- super.visitMethodInsn(opcode, owner, name, descriptor, isInterface); - } - - @Override -@@ -263,21 +440,16 @@ public class Retrofitter { - int sort = ((Type) value).getSort(); - if (sort == Type.METHOD) { - throw new IllegalArgumentException( -- "ERROR: ldc with a MethodType called in " -- + className -- + ' ' -- + currentMethodName -- + " is not available in JDK 1.5"); -+ format( -+ "ERROR: ldc with a MethodType called in %s %s is not available in JDK 1.5", -+ className, currentMethodName)); - } - } else if (value instanceof Handle) { - throw new IllegalArgumentException( -- "ERROR: ldc with a MethodHandle called in " -- + className -- + ' ' -- + currentMethodName -- + " is not available in JDK 1.5"); -+ format( -+ "ERROR: ldc with a MethodHandle called in %s %s is not available in JDK 1.5", -+ className, currentMethodName)); - } -- super.visitLdcInsn(value); - } - - @Override -@@ -287,11 +459,9 @@ public class Retrofitter { - final Handle bootstrapMethodHandle, - final Object... bootstrapMethodArguments) { - throw new IllegalArgumentException( -- "ERROR: invokedynamic called in " -- + className -- + ' ' -- + currentMethodName -- + " is not available in JDK 1.5"); -+ format( -+ "ERROR: invokedynamic called in %s %s is not available in JDK 1.5", -+ className, currentMethodName)); - } - }; - } -@@ -302,7 +472,7 @@ public class Retrofitter { - * @param owner A class name. - * @param member A field name or a method name and descriptor. - */ -- void check(final String owner, final String member) { -+ private void check(final String owner, final String member) { - if (owner.startsWith("java/")) { - String currentOwner = owner; - while (currentOwner != null) { -@@ -312,15 +482,9 @@ public class Retrofitter { - currentOwner = jdkHierarchy.get(currentOwner); - } - throw new IllegalArgumentException( -- "ERROR: " -- + owner -- + ' ' -- + member -- + " called in " -- + className -- + ' ' -- + currentMethodName -- + " is not defined in the JDK 1.5 API"); -+ format( -+ "ERROR: %s %s called in %s %s is not defined in the JDK 1.5 API", -+ owner, member, className, currentMethodName)); - } - } - } --- -2.37.1 - diff --git a/0002-Replace-slash-for-dot-in-generated-module-infos.patch b/0002-Replace-slash-for-dot-in-generated-module-infos.patch deleted file mode 100644 index 3b7faba..0000000 --- a/0002-Replace-slash-for-dot-in-generated-module-infos.patch +++ /dev/null @@ -1,27 +0,0 @@ -From b4a0366b3c17fcc0d8187cffbcdd2e1bd61ab0fb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Mari=C3=A1n=20Kon=C4=8Dek?= -Date: Fri, 2 Sep 2022 09:41:23 +0200 -Subject: [PATCH] Replace slash for dot in generated module infos - -Forwarded: no - ---- - .../src/main/java/org/objectweb/asm/tools/Retrofitter.java | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tools/retrofitter/src/main/java/org/objectweb/asm/tools/Retrofitter.java b/tools/retrofitter/src/main/java/org/objectweb/asm/tools/Retrofitter.java -index b3d51e63..43002cea 100644 ---- a/tools/retrofitter/src/main/java/org/objectweb/asm/tools/Retrofitter.java -+++ b/tools/retrofitter/src/main/java/org/objectweb/asm/tools/Retrofitter.java -@@ -187,7 +187,7 @@ public class Retrofitter { - throw new IllegalArgumentException("Module name can't be infered from classes"); - } - ModuleVisitor moduleVisitor = -- classWriter.visitModule(moduleNames.get(0), Opcodes.ACC_OPEN, version); -+ classWriter.visitModule(moduleNames.get(0).replace('/', '.'), Opcodes.ACC_OPEN, version); - - for (String importName : imports) { - if (isAsmModule(importName) && !exports.contains(importName)) { --- -2.37.2 - diff --git a/objectweb-asm.spec b/objectweb-asm.spec index 0e25897..bdbb0f9 100644 --- a/objectweb-asm.spec +++ b/objectweb-asm.spec @@ -1,8 +1,8 @@ %bcond_with bootstrap Name: objectweb-asm -Version: 9.3 -Release: 5%{?dist} +Version: 9.4 +Release: 1%{?dist} Summary: Java bytecode manipulation and analysis framework License: BSD URL: https://asm.ow2.org/ @@ -22,16 +22,6 @@ Source7: https://repo1.maven.org/maven2/org/ow2/asm/asm-util/%{version}/a Source9: generate-tarball.sh Source10: tools-retrofitter.pom -# This patch makes it possible to generate module-info.class files without -# needing to use bnd-maven-plugin during the build. The replacement is an added -# main method that has to be invoked manually. -# Patch already applied in upstream master -# https://gitlab.ow2.org/asm/asm/-/commit/5921eb2a141f0dcc83c6a5d7dcd5035a30c5edfc -Patch1: 0001-Generate-the-module-info-classes-without-Bnd.-Delete.patch - -# Attempted fix for: https://gitlab.ow2.org/asm/asm/-/issues/317983 -Patch2: 0002-Replace-slash-for-dot-in-generated-module-infos.patch - %if %{with bootstrap} BuildRequires: javapackages-bootstrap %else @@ -60,9 +50,6 @@ This package provides %{summary}. %prep %setup -q -%patch1 -p1 -%patch2 -p1 - # A custom pom to aggregate the build cp -p %{SOURCE1} pom.xml @@ -100,6 +87,9 @@ done %license LICENSE.txt %changelog +* Thu Feb 23 2023 Marian Koncek - 9.4-1 +- Update to upstream version 9.4 + * Thu Jan 19 2023 Fedora Release Engineering - 9.3-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild diff --git a/sources b/sources index e89e1c4..cd07e26 100644 --- a/sources +++ b/sources @@ -1,7 +1,7 @@ -SHA512 (objectweb-asm-9.3.tar.gz) = ec23e717f17789fee264a6a08b3d52c2ec46d39270b38e0804ea18f1abebdddc738c7ff788d2ab348af8345b41c827021dec4e843b18ede04965eac77697e72b -SHA512 (asm-9.3.pom) = a354aaa4a45f6e6c3d24e28b8a9e4490bd0a5e43a33a45dd712daefaab33a65f45cd9ae11d57e38c45082053efbe03e6ab7d5c3882d50f1e6a5d6984f477ce86 -SHA512 (asm-analysis-9.3.pom) = e32fd3696ac4770f109a4abaf38e56cb4c8ad4f5131f8d24ff54505798279593c602402363c18b580f5453717a35fc7820fbe18e3b34ed780aa0c7025087d8cd -SHA512 (asm-commons-9.3.pom) = 1446c1528e07110c5a5894365c5c84063d264ec833532d894e3238bdb027f98a72398bc763fb89785a6f757e1d195f2934505ab63f75eb4538532fbed1ef0af9 -SHA512 (asm-test-9.3.pom) = 6c99662ac0701653dc76619e651ed3969c20ccd92a3f61eda9f785cceae446e6a4cf74e67f90835125719ce220d0639887f3047525c697203f3804e27dae8ff0 -SHA512 (asm-tree-9.3.pom) = f066513d4dba672edc85e9b457d827c16d55a321cb02f4f5faf6e02f59594c44fe3eae23006e6a7310151ff88ea53e654e27fdced6b0af85dcb24ab276279ca2 -SHA512 (asm-util-9.3.pom) = 283675d07165cd635d0417eed078be18aae09ec8960e370d5d56b5b7845d74e150330f21e4610c0c4ca391843d7dd21bcd341604763924f102d65875df8ff927 +SHA512 (objectweb-asm-9.4.tar.gz) = 33f45238f5d029f08bb1093388333e8e6a33f5dd29660eee2986a73f2965d3a732cc99e05b6fd96d7e9b11385e6d008846bf55fdd933496b5c3f579e03d83d92 +SHA512 (asm-9.4.pom) = 711c595da7e141d5a6ee6b63d574abc752679363c8ea1068db4acba9a34723500cc02c573883d87edfe2a33654506e77a9f59c957c337bbc34f7b32008d1ef48 +SHA512 (asm-analysis-9.4.pom) = 28489b2496cfefcd20a900bd4d107969c7dfeba8da5156f3bf487504ce563fe89d5aa6c871e0d610cfc5f9f21d5762339645da6841776175b85256b7feee4681 +SHA512 (asm-commons-9.4.pom) = 2c7103334bf26e5881ffcee948edb99e4694cd5794762d683d15b78c330b8bea61e5379a7dfc156685b93c8f070c13eaf34b5d6440012584c76255867ae618ea +SHA512 (asm-test-9.4.pom) = 2d427d54223769a1b57ddaee687ec2dc531a8504ba93607cfef86aa7aa1053caa19946b6da7feb7ab3ac212556f8f2b560d76cff71245d4826608cece436626a +SHA512 (asm-tree-9.4.pom) = 52f75f8d5fa2eb7af9e0e96d6c834bf131461d12db0a01d01c53d63edf10c6d33a8355cea58326a0c5f09ca948d946cc05906a9a745757553471a2719d8f3dc5 +SHA512 (asm-util-9.4.pom) = 99de2d813a29d812de45763a01e59f5bbe2ad44503afdbecc311119eeece9bd6d8afc587c22e6f12958f155ebcd08534e75d3f53947f81d276052de2791dd57a