diff --git a/.github/workflows/publish-exp.yml b/.github/workflows/publish-exp.yml index 05e14c9a..a8a3e15a 100644 --- a/.github/workflows/publish-exp.yml +++ b/.github/workflows/publish-exp.yml @@ -6,11 +6,13 @@ on: jobs: build: - runs-on: ubuntu-22.04 - container: - image: eclipse-temurin:17-jdk - options: --user root + runs-on: ubuntu-24.04 steps: + - name: setup jdk + uses: actions/setup-java@v4 + with: + java-version: 21 + distribution: 'temurin' - uses: actions/checkout@v4 - uses: gradle/wrapper-validation-action@v2 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d25b99c9..2e9899c6 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,5 +1,4 @@ -name: Java CI - +name: Publish on: push: branches: @@ -20,16 +19,15 @@ on: jobs: build: - - runs-on: ubuntu-latest - + runs-on: ubuntu-24.04 steps: + - name: setup jdk + uses: actions/setup-java@v4 + with: + java-version: 21 + distribution: 'temurin' - uses: actions/checkout@v4 - uses: gradle/wrapper-validation-action@v2 - - name: Set up JDK 17 - uses: actions/setup-java@v1 - with: - java-version: 17 - name: Upload to Maven run: ./gradlew publish --stacktrace env: diff --git a/.github/workflows/test-push.yml b/.github/workflows/test-push.yml index 278ef0ea..6008a8c3 100644 --- a/.github/workflows/test-push.yml +++ b/.github/workflows/test-push.yml @@ -7,18 +7,16 @@ concurrency: jobs: build: - strategy: - fail-fast: false - matrix: - version: [8.7.0-jdk17] - runs-on: ubuntu-22.04 - container: - image: gradle:${{ matrix.version }} - options: --user root + runs-on: ubuntu-24.04 steps: + - name: setup jdk + uses: actions/setup-java@v4 + with: + java-version: 21 + distribution: 'temurin' - uses: actions/checkout@v4 - uses: gradle/wrapper-validation-action@v2 - - run: gradle build check -x test --stacktrace --warning-mode fail + - run: ./gradlew build check -x test --stacktrace --warning-mode fail - uses: Juuxel/publish-checkstyle-report@v1 if: ${{ failure() }} with: @@ -32,7 +30,7 @@ jobs: - name: setup jdk uses: actions/setup-java@v4 with: - java-version: 17 + java-version: 21 distribution: 'temurin' - uses: gradle/wrapper-validation-action@v2 - run: ./gradlew build check -x test --stacktrace --warning-mode fail @@ -42,14 +40,16 @@ jobs: # Lets wait to ensure it builds before going running tests needs: build - runs-on: ubuntu-22.04 - container: - image: gradle:8.7.0-jdk17 - options: --user root + runs-on: ubuntu-24.04 steps: + - name: setup jdk + uses: actions/setup-java@v4 + with: + java-version: 21 + distribution: 'temurin' - uses: actions/checkout@v4 - - run: gradle writeActionsTestMatrix --stacktrace --warning-mode fail + - run: ./gradlew writeActionsTestMatrix --stacktrace --warning-mode fail - id: set-matrix run: echo "matrix=$(cat build/test_matrix.json)" >> $GITHUB_OUTPUT @@ -63,17 +63,18 @@ jobs: strategy: fail-fast: false matrix: - version: [8.7.0-jdk17] test: ${{ fromJson(needs.prepare_test_matrix.outputs.matrix) }} - runs-on: ubuntu-22.04 - container: - image: gradle:${{ matrix.version }} - options: --user root + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - - run: gradle printActionsTestName --name="${{ matrix.test }}" test --tests ${{ matrix.test }} --stacktrace --warning-mode fail + - name: setup jdk + uses: actions/setup-java@v4 + with: + java-version: 21 + distribution: 'temurin' + - run: ./gradlew printActionsTestName --name="${{ matrix.test }}" test --tests ${{ matrix.test }} --stacktrace --warning-mode fail env: TEST_WARNING_MODE: fail id: test @@ -95,17 +96,16 @@ jobs: strategy: fail-fast: false matrix: - java: [17] test: ${{ fromJson(needs.prepare_test_matrix.outputs.matrix) }} runs-on: windows-2022 steps: - uses: actions/checkout@v4 - - name: setup jdk ${{ matrix.java }} + - name: setup jdk uses: actions/setup-java@v4 with: - java-version: ${{ matrix.java }} + java-version: 21 distribution: 'temurin' - run: ./gradlew printActionsTestName --name="${{ matrix.test }}" test --tests ${{ matrix.test }} --stacktrace --warning-mode fail env: @@ -131,7 +131,7 @@ jobs: fail-fast: false matrix: java: [ 17, 21 ] - os: [ windows-2022, ubuntu-22.04, macos-14 ] + os: [ windows-2022, ubuntu-24.04, macos-14 ] runs-on: ${{ matrix.os }} steps: diff --git a/bootstrap/src/main/java/net/fabricmc/loom/bootstrap/LoomGradlePluginBootstrap.java b/bootstrap/src/main/java/net/fabricmc/loom/bootstrap/LoomGradlePluginBootstrap.java index 4f4a7625..976517bb 100644 --- a/bootstrap/src/main/java/net/fabricmc/loom/bootstrap/LoomGradlePluginBootstrap.java +++ b/bootstrap/src/main/java/net/fabricmc/loom/bootstrap/LoomGradlePluginBootstrap.java @@ -14,7 +14,7 @@ import org.gradle.util.GradleVersion; */ @SuppressWarnings("unused") public class LoomGradlePluginBootstrap implements Plugin { - private static final String MIN_SUPPORTED_GRADLE_VERSION = "8.7"; + private static final String MIN_SUPPORTED_GRADLE_VERSION = "8.8"; private static final int MIN_SUPPORTED_MAJOR_JAVA_VERSION = 17; private static final int MIN_SUPPORTED_MAJOR_IDEA_VERSION = 2021; diff --git a/build.gradle b/build.gradle index b020c3c0..7d8d3e98 100644 --- a/build.gradle +++ b/build.gradle @@ -91,11 +91,17 @@ configurations { testRuntimeClasspath.extendsFrom bootstrap } -configurations.all { +configurations.configureEach { resolutionStrategy { // I am sorry, for now // failOnNonReproducibleResolution() } + + if (canBeConsumed) { + attributes { + attribute(GradlePluginApiVersion.GRADLE_PLUGIN_API_VERSION_ATTRIBUTE, objects.named(GradlePluginApiVersion, GradleVersion.current().getVersion())) + } + } } sourceSets { @@ -383,7 +389,7 @@ publishing { } // Need to tweak this file to pretend we are compatible with j8 so the bootstrap will run. -tasks.withType(GenerateModuleMetadata) { +tasks.withType(GenerateModuleMetadata).configureEach { doLast { def file = outputFile.get().asFile @@ -398,7 +404,7 @@ tasks.withType(GenerateModuleMetadata) { } // A task to output a json file with a list of all the test to run -task writeActionsTestMatrix() { +tasks.register('writeActionsTestMatrix') { doLast { def testMatrix = [] file('src/test/groovy/net/fabricmc/loom/test/integration').traverse { @@ -445,7 +451,7 @@ tasks.named('wrapper') { /** * Run this task to download the gradle sources next to the api jar, you may need to manually attach the sources jar */ -task downloadGradleSources() { +tasks.register('downloadGradleSources') { doLast { // Awful hack to find the gradle api location def gradleApiFile = project.configurations.detachedConfiguration(dependencies.gradleApi()).files.stream() @@ -467,13 +473,13 @@ tasks.withType(GenerateModuleMetadata) { enabled = false } -task printActionsTestName(type: PrintActionsTestName) { +tasks.register('printActionsTestName', PrintActionsTestName) { } /** * Replaces invalid characters in test names for GitHub Actions artifacts. */ -class PrintActionsTestName extends DefaultTask { +abstract class PrintActionsTestName extends DefaultTask { @Input @Option(option = "name", description = "The test name") String testName diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 53e8573e..f855da16 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,9 +17,8 @@ loom-native = "0.2.0" # Plugins spotless = "6.25.0" test-retry = "1.5.6" -checkstyle = "10.13.0" +checkstyle = "10.17.0" codenarc = "3.4.0" -jacoco = "0.8.11" # Forge libraries forge-installer-tools = "1.2.0" diff --git a/gradle/test.libs.versions.toml b/gradle/test.libs.versions.toml index 5de78a1f..33eaef18 100644 --- a/gradle/test.libs.versions.toml +++ b/gradle/test.libs.versions.toml @@ -1,13 +1,13 @@ [versions] spock = "2.3-groovy-3.0" junit = "5.10.2" -javalin = "6.1.3" -mockito = "5.11.0" +javalin = "6.1.6" +mockito = "5.12.0" java-debug = "0.52.0" mixin = "0.12.5+mixin.0.8.5" -gradle-nightly = "8.9-20240505002558+0000" -fabric-loader = "0.15.10" +gradle-nightly = "8.10-20240613003017+0000" +fabric-loader = "0.15.11" fabric-installer = "1.0.1" [libraries] diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d64cd491..e6441136 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e7646dea..6f7a6eb3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 1aa94a42..b740cf13 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. diff --git a/src/main/java/net/fabricmc/loom/extension/LoomProblemReporter.java b/src/main/java/net/fabricmc/loom/extension/LoomProblemReporter.java index d8eee138..92aa6bc6 100644 --- a/src/main/java/net/fabricmc/loom/extension/LoomProblemReporter.java +++ b/src/main/java/net/fabricmc/loom/extension/LoomProblemReporter.java @@ -40,7 +40,7 @@ public abstract class LoomProblemReporter { public void reportSelfResolvingDependencyUsage() { problemReporter.reporting(spec -> spec - .label("SelfResolvingDependency is deprecated") + .id("loom-deprecated-selfresolvingdependency", "SelfResolvingDependency is deprecated") .details("SelfResolvingDependency has been deprecated for removal in Gradle 9") .solution("Please replace usages of SelfResolvingDependency") .documentedAt("https://github.com/gradle/gradle/pull/27420") diff --git a/src/main/java/net/fabricmc/loom/util/gradle/WorkerDaemonClientsManagerHelper.java b/src/main/java/net/fabricmc/loom/util/gradle/WorkerDaemonClientsManagerHelper.java index b5d1f7f1..d51f7920 100644 --- a/src/main/java/net/fabricmc/loom/util/gradle/WorkerDaemonClientsManagerHelper.java +++ b/src/main/java/net/fabricmc/loom/util/gradle/WorkerDaemonClientsManagerHelper.java @@ -59,8 +59,13 @@ public class WorkerDaemonClientsManagerHelper { return Collections.emptyList(); }; - //noinspection unchecked - manager.selectIdleClientsToStop((Transformer) transformer); + try { + Method selectIdleClientsToStop = manager.getClass().getDeclaredMethod("selectIdleClientsToStop", Transformer.class); + selectIdleClientsToStop.setAccessible(true); + selectIdleClientsToStop.invoke(manager, transformer); + } catch (InvocationTargetException | NoSuchMethodException | IllegalAccessException e) { + throw new RuntimeException("Failed to selectIdleClientsToStop", e); + } return stopped.get(); } diff --git a/src/test/groovy/net/fabricmc/loom/test/integration/FabricAPITest.groovy b/src/test/groovy/net/fabricmc/loom/test/integration/FabricAPITest.groovy index beb81838..3b84c8cd 100644 --- a/src/test/groovy/net/fabricmc/loom/test/integration/FabricAPITest.groovy +++ b/src/test/groovy/net/fabricmc/loom/test/integration/FabricAPITest.groovy @@ -44,7 +44,7 @@ class FabricAPITest extends Specification implements GradleProjectTestTrait { setup: def gradle = gradleProject( repo: "https://github.com/FabricMC/fabric.git", - commit: "efa5891941a32589207dc58c2e77183d599465b8", + commit: "41bc64cd617f03d49ecc4a4f7788cb65d465415c", version: version, patch: "fabric_api" ) @@ -62,10 +62,10 @@ class FabricAPITest extends Specification implements GradleProjectTestTrait { // Change the plugin used gradle.buildGradle.text = gradle.buildGradle.text - .replace('id "fabric-loom" version "1.4.1"', 'id "dev.architectury.loom"') + .replace('id "fabric-loom" version "1.6.11"', 'id "dev.architectury.loom"') .replace('"fabric-loom"', '"dev.architectury.loom"') + mixinApPatch - def minecraftVersion = "23w51b" + def minecraftVersion = "1.21" def server = ServerRunner.create(gradle.projectDir, minecraftVersion) .withMod(gradle.getOutputFile("fabric-api-999.0.0.jar")) diff --git a/src/test/groovy/net/fabricmc/loom/test/integration/buildSrc/stopDaemon/TestPlugin.groovy b/src/test/groovy/net/fabricmc/loom/test/integration/buildSrc/stopDaemon/TestPlugin.groovy index 7fe886af..143138f1 100644 --- a/src/test/groovy/net/fabricmc/loom/test/integration/buildSrc/stopDaemon/TestPlugin.groovy +++ b/src/test/groovy/net/fabricmc/loom/test/integration/buildSrc/stopDaemon/TestPlugin.groovy @@ -28,7 +28,6 @@ import java.nio.file.Path import java.util.concurrent.CompletableFuture import java.util.concurrent.TimeUnit -import org.gradle.api.JavaVersion import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.cache.FileLockManager @@ -39,6 +38,7 @@ import org.gradle.internal.nativeintegration.services.NativeServices import org.gradle.internal.remote.internal.inet.InetAddressFactory import org.gradle.internal.service.ServiceRegistry import org.gradle.invocation.DefaultGradle +import org.gradle.jvm.toolchain.JavaLanguageVersion import org.gradle.launcher.daemon.configuration.DaemonParameters import org.gradle.launcher.daemon.context.DefaultDaemonContext import org.gradle.launcher.daemon.protocol.DaemonMessageSerializer @@ -109,7 +109,7 @@ class TestPlugin implements Plugin { return new DefaultDaemonContext( UUID.randomUUID().toString(), new File("."), - JavaVersion.current(), + JavaLanguageVersion.current(), new File("."), ProcessHandle.current().pid(), 0, diff --git a/src/test/groovy/net/fabricmc/loom/test/util/GradleProjectTestTrait.groovy b/src/test/groovy/net/fabricmc/loom/test/util/GradleProjectTestTrait.groovy index 988035d6..9cf2e7b9 100644 --- a/src/test/groovy/net/fabricmc/loom/test/util/GradleProjectTestTrait.groovy +++ b/src/test/groovy/net/fabricmc/loom/test/util/GradleProjectTestTrait.groovy @@ -29,6 +29,7 @@ import groovy.transform.Immutable import org.apache.commons.io.FileUtils import org.gradle.testkit.runner.BuildResult import org.gradle.testkit.runner.GradleRunner +import org.gradle.util.GradleVersion import spock.lang.Shared import net.fabricmc.loom.test.LoomTestConstants @@ -201,7 +202,8 @@ trait GradleProjectTestTrait { .withPluginClasspath() .withGradleVersion(gradleVersion) .forwardOutput() - .withDebug(enableDebugging) + // Only enable debugging when the current gradle version matches the version we are testing + .withDebug(enableDebugging && gradleVersion == GradleVersion.current().getVersion()) } File getProjectDir() { diff --git a/src/test/resources/patches/fabric_api.patch b/src/test/resources/patches/fabric_api.patch index 77b7e86c..5e8c2476 100644 --- a/src/test/resources/patches/fabric_api.patch +++ b/src/test/resources/patches/fabric_api.patch @@ -1,6 +1,6 @@ diff --git a/build.gradle b/build.gradle ---- a/build.gradle (revision 23e8616e7457d7d4a65119b93952d134607ffc5c) -+++ b/build.gradle (date 1699535194191) +--- a/build.gradle (revision 41bc64cd617f03d49ecc4a4f7788cb65d465415c) ++++ b/build.gradle (date 1718312645477) @@ -13,7 +13,7 @@ def ENV = System.getenv() @@ -9,8 +9,8 @@ diff --git a/build.gradle b/build.gradle +version = "999.0.0" logger.lifecycle("Building Fabric: " + version) - -@@ -22,24 +22,7 @@ + def metaProjects = [ +@@ -34,24 +34,7 @@ import org.apache.commons.codec.digest.DigestUtils def getSubprojectVersion(project) { diff --git a/src/test/resources/projects/dependencyResolutionManagement/basic/gradle.properties b/src/test/resources/projects/dependencyResolutionManagement/basic/gradle.properties index 40e9e571..5abea333 100644 --- a/src/test/resources/projects/dependencyResolutionManagement/basic/gradle.properties +++ b/src/test/resources/projects/dependencyResolutionManagement/basic/gradle.properties @@ -3,9 +3,9 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use - minecraft_version=1.16.5 - yarn_mappings=1.16.5+build.6 - loader_version=0.11.3 + minecraft_version=1.20.4 + yarn_mappings=1.20.4+build.3 + loader_version=0.15.11 # Mod Properties mod_version = 1.0.0 diff --git a/src/test/resources/projects/dependencyResolutionManagement/projmap/gradle.properties b/src/test/resources/projects/dependencyResolutionManagement/projmap/gradle.properties index 40e9e571..5abea333 100644 --- a/src/test/resources/projects/dependencyResolutionManagement/projmap/gradle.properties +++ b/src/test/resources/projects/dependencyResolutionManagement/projmap/gradle.properties @@ -3,9 +3,9 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use - minecraft_version=1.16.5 - yarn_mappings=1.16.5+build.6 - loader_version=0.11.3 + minecraft_version=1.20.4 + yarn_mappings=1.20.4+build.3 + loader_version=0.15.11 # Mod Properties mod_version = 1.0.0 diff --git a/src/test/resources/projects/runconfigs/build.gradle b/src/test/resources/projects/runconfigs/build.gradle index c32435a4..304aa890 100644 --- a/src/test/resources/projects/runconfigs/build.gradle +++ b/src/test/resources/projects/runconfigs/build.gradle @@ -44,7 +44,7 @@ version = "1.0.0" dependencies { minecraft "com.mojang:minecraft:1.18.1" mappings "net.fabricmc:yarn:1.18.1+build.12:v2" - modImplementation "net.fabricmc:fabric-loader:0.12.12" + modImplementation "net.fabricmc:fabric-loader:0.15.11" } base {