From 20dd62d5b4948c92d60ee1adda18a5b8d881570b Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Sat, 16 Jan 2021 13:50:45 +0000 Subject: [PATCH 1/4] Update a number of dependencies --- .github/workflows/test-push.yml | 2 +- build.gradle | 25 +++++++++++++++---------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/.github/workflows/test-push.yml b/.github/workflows/test-push.yml index 9bde1bfc..26a80913 100644 --- a/.github/workflows/test-push.yml +++ b/.github/workflows/test-push.yml @@ -4,7 +4,7 @@ jobs: gradle: strategy: matrix: - gradle: [4.9, 4.10.2, 6.7] + gradle: [4.9, 4.10.2, 6.8] java: [jdk8, jdk11, jdk15] exclude: # Dont run older gradle versions on newer java - java: jdk15 diff --git a/build.gradle b/build.gradle index 55b8ce6f..432f7226 100644 --- a/build.gradle +++ b/build.gradle @@ -36,26 +36,31 @@ dependencies { implementation gradleApi() // libraries - implementation ('commons-io:commons-io:2.6') - implementation ('org.zeroturnaround:zt-zip:1.13') - implementation ('com.google.code.gson:gson:2.8.5') - implementation ('com.google.guava:guava:28.0-jre') + implementation ('commons-io:commons-io:2.8.0') + implementation ('org.zeroturnaround:zt-zip:1.14') + implementation ('com.google.code.gson:gson:2.8.6') + implementation ('com.google.guava:guava:30.1-jre') + implementation ('org.ow2.asm:asm:9.0') + implementation ('org.ow2.asm:asm-analysis:9.0') + implementation ('org.ow2.asm:asm-commons:9.0') + implementation ('org.ow2.asm:asm-tree:9.0') + implementation ('org.ow2.asm:asm-util:9.0') // game handling utils - implementation ('net.fabricmc:stitch:0.4.6+build.74') { + implementation ('net.fabricmc:stitch:0.5.1+build.77') { exclude module: 'enigma' } // tinyfile management - implementation ('net.fabricmc:tiny-remapper:0.3.0.70') - implementation ('net.fabricmc:tiny-mappings-parser:0.2.2.14') + implementation ('net.fabricmc:tiny-remapper:0.3.2') + implementation ('net.fabricmc:tiny-mappings-parser:0.3.0+build.17') implementation 'net.fabricmc:access-widener:1.0.0' - implementation ('net.fabricmc:lorenz-tiny:2.0.0+build.2') { + implementation ('net.fabricmc:lorenz-tiny:3.0.0') { transitive = false } - implementation ('org.cadixdev:lorenz-io-proguard:0.5.5') + implementation ('org.cadixdev:lorenz-io-proguard:0.5.6') // decompilers implementation ('net.fabricmc:procyon-fabric-compilertools:0.5.35.13') @@ -66,7 +71,7 @@ dependencies { implementation ('org.cadixdev:mercury:0.1.0-rc1') // Kapt integration - compileOnly('org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72') + compileOnly('org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.21') // Testing testImplementation(gradleTestKit()) From b4a8c306e9f0d8d02bff0e41cbf264e3c34d9313 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Sat, 16 Jan 2021 13:52:25 +0000 Subject: [PATCH 2/4] Fix build. Thanks gradle for changing versioning style.. --- .github/workflows/test-push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-push.yml b/.github/workflows/test-push.yml index 26a80913..5a199a76 100644 --- a/.github/workflows/test-push.yml +++ b/.github/workflows/test-push.yml @@ -4,7 +4,7 @@ jobs: gradle: strategy: matrix: - gradle: [4.9, 4.10.2, 6.8] + gradle: [4.9, 4.10.2, 6.8.0] java: [jdk8, jdk11, jdk15] exclude: # Dont run older gradle versions on newer java - java: jdk15 From f0bb05a205ed79d714302a95ab68396b12b4e07e Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Sat, 16 Jan 2021 13:57:43 +0000 Subject: [PATCH 3/4] Remove dep on procyon-fabric-compilertools I cannot see its use --- build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle b/build.gradle index 432f7226..e8bd7453 100644 --- a/build.gradle +++ b/build.gradle @@ -63,7 +63,6 @@ dependencies { implementation ('org.cadixdev:lorenz-io-proguard:0.5.6') // decompilers - implementation ('net.fabricmc:procyon-fabric-compilertools:0.5.35.13') implementation ('net.fabricmc:fabric-fernflower:1.3.0') implementation ('org.benf:cfr:0.150') From 47097c65cede8a4200a55ad32be1d183f474b80d Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Sun, 17 Jan 2021 18:34:22 +0000 Subject: [PATCH 4/4] Gradle 7 (and hopefully 8) support (#332) * First pass on gradle 7 support * Fix Gradle 8 deprecation warnings * Add a deprecated compile constant --- .../configuration/CompileConfiguration.java | 2 +- .../configuration/DependencyProvider.java | 4 --- .../RemappedConfigurationEntry.java | 6 ++++- .../net/fabricmc/loom/util/Constants.java | 25 ++++++++++++++----- .../fabricmc/loom/util/SourceRemapper.java | 3 ++- .../loom/util/gradle/GradleSupport.java | 8 ++++++ .../net/fabricmc/loom/BuildUtils.groovy | 11 +++----- 7 files changed, 38 insertions(+), 21 deletions(-) diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java index 8b264a01..721f1851 100644 --- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java @@ -107,7 +107,7 @@ public final class CompileConfiguration { extendsFrom(Constants.Configurations.LOADER_DEPENDENCIES, Constants.Configurations.MINECRAFT_DEPENDENCIES, project); extendsFrom(Constants.Configurations.MINECRAFT_NAMED, Constants.Configurations.LOADER_DEPENDENCIES, project); - extendsFrom(JavaPlugin.COMPILE_CONFIGURATION_NAME, Constants.Configurations.MAPPINGS_FINAL, project); + extendsFrom(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, Constants.Configurations.MAPPINGS_FINAL, project); } /** diff --git a/src/main/java/net/fabricmc/loom/configuration/DependencyProvider.java b/src/main/java/net/fabricmc/loom/configuration/DependencyProvider.java index 1795d3b7..cc1c6d49 100644 --- a/src/main/java/net/fabricmc/loom/configuration/DependencyProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/DependencyProvider.java @@ -63,10 +63,6 @@ public abstract class DependencyProvider { public abstract String getTargetConfig(); - public void addDependency(Object object) { - addDependency(object, "compile"); - } - public Dependency addDependency(Object object, String target) { if (object instanceof File) { object = project.files(object); diff --git a/src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java b/src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java index 2b0949d5..a796b62c 100644 --- a/src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java +++ b/src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java @@ -25,6 +25,10 @@ package net.fabricmc.loom.configuration; import org.gradle.api.artifacts.ConfigurationContainer; +import org.gradle.api.plugins.JavaPlugin; + +import net.fabricmc.loom.util.Constants; +import net.fabricmc.loom.util.gradle.GradleSupport; public class RemappedConfigurationEntry { private final String sourceConfiguration; @@ -61,7 +65,7 @@ public class RemappedConfigurationEntry { public String getTargetConfiguration(ConfigurationContainer container) { if (container.findByName(targetConfiguration) == null) { - return "compile"; + return GradleSupport.IS_GRADLE_7_OR_NEWER ? JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME : Constants.Configurations.COMPILE; } return targetConfiguration; diff --git a/src/main/java/net/fabricmc/loom/util/Constants.java b/src/main/java/net/fabricmc/loom/util/Constants.java index 1af3bf28..9ba92b0c 100644 --- a/src/main/java/net/fabricmc/loom/util/Constants.java +++ b/src/main/java/net/fabricmc/loom/util/Constants.java @@ -27,9 +27,11 @@ package net.fabricmc.loom.util; import java.util.List; import com.google.common.collect.ImmutableList; +import org.gradle.api.plugins.JavaPlugin; import org.objectweb.asm.Opcodes; import net.fabricmc.loom.configuration.RemappedConfigurationEntry; +import net.fabricmc.loom.util.gradle.GradleSupport; public class Constants { public static final String LIBRARIES_BASE = "https://libraries.minecraft.net/"; @@ -40,14 +42,23 @@ public class Constants { public static final int ASM_VERSION = Opcodes.ASM9; - public static final List MOD_COMPILE_ENTRIES = ImmutableList.of( - new RemappedConfigurationEntry("modCompile", "compile", true, "compile"), - new RemappedConfigurationEntry("modApi", "api", true, "compile"), - new RemappedConfigurationEntry("modImplementation", "implementation", true, "runtime"), - new RemappedConfigurationEntry("modRuntime", "runtimeOnly", false, ""), - new RemappedConfigurationEntry("modCompileOnly", "compileOnly", true, "") + private static final List LEGACY_MOD_COMPILE_ENTRIES = ImmutableList.of( + new RemappedConfigurationEntry("modCompile", Configurations.COMPILE, true, "compile"), + new RemappedConfigurationEntry("modApi", JavaPlugin.API_CONFIGURATION_NAME, true, "compile"), + new RemappedConfigurationEntry("modImplementation", JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, true, "runtime"), + new RemappedConfigurationEntry("modRuntime", JavaPlugin.RUNTIME_ONLY_CONFIGURATION_NAME, false, ""), + new RemappedConfigurationEntry("modCompileOnly", JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME, true, "") ); + private static final List MODERN_MOD_COMPILE_ENTRIES = ImmutableList.of( + new RemappedConfigurationEntry("modApi", JavaPlugin.API_CONFIGURATION_NAME, true, "compile"), + new RemappedConfigurationEntry("modImplementation", JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, true, "runtime"), + new RemappedConfigurationEntry("modRuntime", JavaPlugin.RUNTIME_ONLY_CONFIGURATION_NAME, false, ""), + new RemappedConfigurationEntry("modCompileOnly", JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME, true, "") + ); + + public static final List MOD_COMPILE_ENTRIES = GradleSupport.IS_GRADLE_7_OR_NEWER ? MODERN_MOD_COMPILE_ENTRIES : LEGACY_MOD_COMPILE_ENTRIES; + private Constants() { } @@ -65,6 +76,8 @@ public class Constants { public static final String MAPPINGS = "mappings"; public static final String MAPPINGS_FINAL = "mappingsFinal"; public static final String LOADER_DEPENDENCIES = "loaderLibraries"; + @Deprecated // Not to be used in gradle 7+ + public static final String COMPILE = "compile"; private Configurations() { } diff --git a/src/main/java/net/fabricmc/loom/util/SourceRemapper.java b/src/main/java/net/fabricmc/loom/util/SourceRemapper.java index 46642254..8cf87ff9 100644 --- a/src/main/java/net/fabricmc/loom/util/SourceRemapper.java +++ b/src/main/java/net/fabricmc/loom/util/SourceRemapper.java @@ -38,6 +38,7 @@ import org.cadixdev.mercury.Mercury; import org.cadixdev.mercury.remapper.MercuryRemapper; import org.gradle.api.Project; import org.gradle.api.artifacts.Dependency; +import org.gradle.api.plugins.JavaPlugin; import org.zeroturnaround.zip.ZipUtil; import net.fabricmc.loom.LoomGradleExtension; @@ -192,7 +193,7 @@ public class SourceRemapper { m.getClassPath().add(extension.getMinecraftMappedProvider().getIntermediaryJar().toPath()); Dependency annotationDependency = extension.getDependencyManager().getProvider(LaunchProvider.class).annotationDependency; - Set files = project.getConfigurations().getByName("compileOnly") + Set files = project.getConfigurations().getByName(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME) .files(annotationDependency); for (File file : files) { diff --git a/src/main/java/net/fabricmc/loom/util/gradle/GradleSupport.java b/src/main/java/net/fabricmc/loom/util/gradle/GradleSupport.java index 2ead1f70..068b5438 100644 --- a/src/main/java/net/fabricmc/loom/util/gradle/GradleSupport.java +++ b/src/main/java/net/fabricmc/loom/util/gradle/GradleSupport.java @@ -28,9 +28,12 @@ import java.lang.reflect.Method; import org.gradle.api.Project; import org.gradle.api.file.RegularFileProperty; +import org.gradle.util.GradleVersion; // This is used to bridge the gap over large gradle api changes. public class GradleSupport { + public static final boolean IS_GRADLE_7_OR_NEWER = isIsGradle7OrNewer(); + public static RegularFileProperty getfileProperty(Project project) { try { // First try the new method, if that fails fall back. @@ -59,4 +62,9 @@ public class GradleSupport { method.setAccessible(true); return (RegularFileProperty) method.invoke(object); } + + public static boolean isIsGradle7OrNewer() { + String version = GradleVersion.current().getVersion(); + return Integer.parseInt(version.substring(0, version.indexOf("."))) >= 7; + } } diff --git a/src/test/groovy/net/fabricmc/loom/BuildUtils.groovy b/src/test/groovy/net/fabricmc/loom/BuildUtils.groovy index 9a3083d6..58fe3cfd 100644 --- a/src/test/groovy/net/fabricmc/loom/BuildUtils.groovy +++ b/src/test/groovy/net/fabricmc/loom/BuildUtils.groovy @@ -24,10 +24,10 @@ dependencies { //to change the versions see the gradle.properties file minecraft "com.mojang:minecraft:\${project.minecraft_version}" mappings ${mappingsDep} - modCompile "net.fabricmc:fabric-loader:\${project.loader_version}" + modImplementation "net.fabricmc:fabric-loader:\${project.loader_version}" // Fabric API. This is technically optional, but you probably want it anyway. - modCompile "net.fabricmc.fabric-api:fabric-api:\${project.fabric_version}" + modImplementation "net.fabricmc.fabric-api:fabric-api:\${project.fabric_version}" // PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs. // You may need to force-disable transitiveness on them. @@ -36,14 +36,9 @@ dependencies { processResources { inputs.property "version", project.version - from(sourceSets.main.resources.srcDirs) { - include "fabric.mod.json" + filesMatching("fabric.mod.json") { expand "version": project.version } - - from(sourceSets.main.resources.srcDirs) { - exclude "fabric.mod.json" - } } // ensure that the encoding is set to UTF-8, no matter what the system default is