From 272e4ded73276d7822d67b38d5af752846358337 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Sat, 4 Jan 2025 21:20:59 +0000 Subject: [PATCH 1/2] Update to Loom 1.10 and use new prod run tasks --- .github/workflows/build.yml | 15 ++-- build.gradle | 87 ++++-------------------- gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 25 insertions(+), 79 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 90cd7e6690..538e5a4838 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,16 +43,21 @@ jobs: with: distribution: 'microsoft' java-version: '21' - - run: mkdir run && echo "eula=true" >> run/eula.txt - - name: Run Client Gametests - uses: modmuss50/xvfb-action@v1 - with: - run: ./gradlew runProductionClientGametest --stacktrace --warning-mode=fail + - run: | + curl -L -o tracy-capture https://github.com/modmuss50/tracy-utils/releases/download/0.0.2/linux-x86_64-tracy-capture + chmod +x tracy-capture + mkdir run && echo "eula=true" >> run/eula.txt + - run: ./gradlew runProductionClientGametest --stacktrace --warning-mode=fail - uses: actions/upload-artifact@v4 if: always() with: name: Test Screenshots path: run/screenshots + - uses: actions/upload-artifact@v4 + if: always() + with: + name: Tracy Profile + path: profile.tracy server_test: runs-on: ubuntu-22.04 diff --git a/build.gradle b/build.gradle index ae35a7cfb6..747b572501 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { id "idea" id "maven-publish" id 'jacoco' - id "fabric-loom" version "1.9.2" apply false + id "fabric-loom" version "1.10.0-alpha.11" apply false id "com.diffplug.spotless" version "6.20.0" id "org.ajoberstar.grgit" version "5.2.2" id "me.modmuss50.remotesign" version "0.5.0" apply false @@ -478,94 +478,35 @@ tasks.register('coverage', JacocoReport) { } configurations { - productionRuntime { - extendsFrom configurations.minecraftLibraries - extendsFrom configurations.loaderLibraries - extendsFrom configurations.minecraftRuntimeLibraries - } - productionRuntimeServer productionMods { transitive = false } } dependencies { - productionRuntime "net.fabricmc:fabric-loader:${project.loader_version}" - productionRuntime "net.fabricmc:intermediary:${project.minecraft_version}" - - productionRuntimeServer "net.fabricmc:fabric-installer:${project.installer_version}:server" productionMods project(':fabric-client-gametest-api-v1') } -import net.fabricmc.loom.util.Platform - def productionMods = project.files(configurations.productionMods, remapJar.archiveFile, remapTestmodJar.archiveFile) -// This is very far beyond loom's API if you copy this, you're on your own. -tasks.register('runProductionClientGametest', JavaExec) { - dependsOn productionMods, downloadAssets - classpath.from configurations.productionRuntime - mainClass = "net.fabricmc.loader.impl.launch.knot.KnotClient" - workingDir = file("run") +tasks.register('runProductionClientGametest', net.fabricmc.loom.task.prod.ClientProductionRunTask) { + mods.setFrom productionMods + jvmArgs.addAll(["-Dfabric.client.gametest", "-Dfabric-tag-conventions-v2.missingTagTranslationWarning=fail", "-Dfabric-tag-conventions-v1.legacyTagWarning=fail"]) + jvmArgs.addAll(debugArgs) - doFirst { - classpath.from loom.minecraftProvider.minecraftClientJar - workingDir.mkdirs() - - args( - "--assetIndex", loom.minecraftProvider.versionInfo.assetIndex().fabricId(loom.minecraftProvider.minecraftVersion()), - "--assetsDir", new File(loom.files.userCache, "assets").absolutePath, - "--gameDir", workingDir.absolutePath - ) - - if (Platform.CURRENT.operatingSystem.isMacOS()) { - jvmArgs( - "-XstartOnFirstThread" - ) + if (ENV.CI) { + tracy { + tracyCapture = file("tracy-capture") + output = file("profile.tracy") } - - jvmArgs( - "-Dfabric.addMods=${productionMods.collect { it.absolutePath }.join(File.pathSeparator)}", - "-Dfabric.client.gametest", - "-Dfabric-tag-conventions-v2.missingTagTranslationWarning=fail", - "-Dfabric-tag-conventions-v1.legacyTagWarning=fail" - ) - jvmArgs(debugArgs) } } -tasks.register('serverPropertiesJar', Jar) { - def propsFile = file("build/tmp/install.properties") - - doFirst { - propsFile.text = """\ - fabric-loader-version=${project.loader_version} - game-version=${project.minecraft_version} - """.stripMargin().stripIndent() - } - - archiveFileName = "test-server-properties.jar" - destinationDirectory = file("build/tmp") - from(propsFile) -} - -tasks.register('runProductionAutoTestServer', JavaExec) { - dependsOn productionMods, serverPropertiesJar - classpath.from configurations.productionRuntimeServer, serverPropertiesJar - mainClass = "net.fabricmc.installer.ServerLauncher" - workingDir = file("run") - - doFirst { - workingDir.mkdirs() - - jvmArgs( - "-Dfabric.addMods=${productionMods.collect { it.absolutePath }.join(File.pathSeparator)}", - "-Dfabric.autoTest", - ) - jvmArgs(debugArgs) - - args("nogui") - } +tasks.register('runProductionAutoTestServer', net.fabricmc.loom.task.prod.ServerProductionRunTask) { + mods.setFrom productionMods + jvmArgs.add("-Dfabric.autoTest") + jvmArgs.addAll(debugArgs) + programArgs.add("nogui") } // Format all the gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e2847c8200..cea7a793a8 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.11.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From d3e527660e1abcb1a70bd2af35d89296956b926a Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Sat, 4 Jan 2025 21:29:37 +0000 Subject: [PATCH 2/2] Fixes --- build.gradle | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 747b572501..dd9eecd368 100644 --- a/build.gradle +++ b/build.gradle @@ -249,11 +249,12 @@ allprojects { useJUnitPlatform() } + def resourceVersion = project.version tasks.withType(ProcessResources).configureEach { - inputs.property "version", project.version + inputs.property "version", resourceVersion filesMatching("fabric.mod.json") { - expand "version": project.version + expand "version": resourceVersion } } @@ -491,7 +492,11 @@ def productionMods = project.files(configurations.productionMods, remapJar.archi tasks.register('runProductionClientGametest', net.fabricmc.loom.task.prod.ClientProductionRunTask) { mods.setFrom productionMods - jvmArgs.addAll(["-Dfabric.client.gametest", "-Dfabric-tag-conventions-v2.missingTagTranslationWarning=fail", "-Dfabric-tag-conventions-v1.legacyTagWarning=fail"]) + jvmArgs.addAll([ + "-Dfabric.client.gametest", + "-Dfabric-tag-conventions-v2.missingTagTranslationWarning=fail", + "-Dfabric-tag-conventions-v1.legacyTagWarning=fail" + ]) jvmArgs.addAll(debugArgs) if (ENV.CI) {