From 4b45783a5460c6cbd63cdc89b32fcaeb584a95e3 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Fri, 26 Nov 2021 23:10:35 +0000 Subject: [PATCH] Fix crash on Java 18 due to unpick using an outdated asm version. Unpick will now get the same version of asm that loom is running with on its classpath. --- .../providers/mappings/MappingsProviderImpl.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java index 3f85142..8ed07b9 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java @@ -48,6 +48,7 @@ import com.google.gson.JsonObject; import org.apache.tools.ant.util.StringUtils; import org.gradle.api.Project; import org.jetbrains.annotations.Nullable; +import org.objectweb.asm.Opcodes; import net.fabricmc.loom.LoomGradleExtension; import net.fabricmc.loom.LoomGradlePlugin; @@ -304,6 +305,20 @@ public class MappingsProviderImpl extends DependencyProvider implements Mappings getProject().getDependencies().add(Constants.Configurations.UNPICK_CLASSPATH, String.format("%s:%s:%s", unpickMetadata.unpickGroup, unpickCliName, unpickMetadata.unpickVersion) ); + + // Unpick ships with a slightly older version of asm, ensure it runs with at least the same version as loom. + String[] asmDeps = new String[] { + "org.ow2.asm:asm:%s", + "org.ow2.asm:asm-tree:%s", + "org.ow2.asm:asm-commons:%s", + "org.ow2.asm:asm-util:%s" + }; + + for (String asm : asmDeps) { + getProject().getDependencies().add(Constants.Configurations.UNPICK_CLASSPATH, + asm.formatted(Opcodes.class.getPackage().getImplementationVersion()) + ); + } } private void mergeAndSaveMappings(Project project, Path from, Path out) throws IOException {