From 1b80f4055b095400eb850415a0407ab420209c1d Mon Sep 17 00:00:00 2001 From: Brian Neumann-Fopiano Date: Wed, 21 Oct 2026 06:14:01 -0400 Subject: [PATCH 1/2] Raised Bukkit build budget - Bukkit source builds use four Gradle workers - Bukkit source builds reserve 8 GiB of memory --- gradle/multiplexor.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/multiplexor.gradle b/gradle/multiplexor.gradle index e3a46eb5c..b4b8d128c 100644 --- a/gradle/multiplexor.gradle +++ b/gradle/multiplexor.gradle @@ -40,7 +40,7 @@ gradle.projectsEvaluated { File spiArtifact = project(':spi').tasks.named('jar', Jar).get().archiveFile.locationOnly.get().asFile buildTargets.addAll([ [id: 'bukkit', tasks: [':buildBukkit'], arguments: [], java: 25, - memoryMiB: 6144, workers: 2, dependsOn: [], artifacts: [ + memoryMiB: 8192, workers: 4, dependsOn: [], artifacts: [ [path: relativePath(bukkitArtifact), role: 'runtime', platforms: ['plugin'], minecraftVersions: bukkitVersions]]], [id: 'api', tasks: [':irisApi'], arguments: [], java: 25, memoryMiB: 6144, workers: 2, dependsOn: [], artifacts: [ From 20ff08aeb7ffb9e79cb95b22d6f5dc98125307d0 Mon Sep 17 00:00:00 2001 From: Brian Neumann-Fopiano Date: Wed, 21 Oct 2026 06:22:20 -0400 Subject: [PATCH 2/2] Persisted Forge build caches - Sandboxed Forge lanes retain Mavenizer and ForgeGradle caches in their private Gradle home - Nested mod builds receive the sandbox property --- adapters/forge/build.gradle | 7 +++++-- build.gradle | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/adapters/forge/build.gradle b/adapters/forge/build.gradle index b8a3c8f35..d659e39e5 100644 --- a/adapters/forge/build.gradle +++ b/adapters/forge/build.gradle @@ -66,10 +66,13 @@ String forgeVersion = providers.gradleProperty('forgeVersion').getOrElse(irisMod String buildLane = gradle.extensions.extraProperties.has('irisBuildLane') ? gradle.extensions.extraProperties.get('irisBuildLane').toString() : null if (buildLane != null) { + File laneCache = providers.gradleProperty('multiplexorSandbox').getOrElse('false').toBoolean() + ? new File(gradle.gradleUserHomeDir, "caches/iris-forge/${buildLane}") + : file(".gradle/iris-lanes/${buildLane}") plugins.withType(EnhancedPlugin).configureEach { EnhancedPlugin forgePlugin -> - forgePlugin.globalCaches().set(layout.projectDirectory.dir(".gradle/iris-lanes/${buildLane}/forgegradle")) + forgePlugin.globalCaches().set(new File(laneCache, 'forgegradle')) } - minecraft.mavenizerOutput.set(layout.projectDirectory.dir(".gradle/iris-lanes/${buildLane}/mavenizer/repo")) + minecraft.mavenizerOutput.set(new File(laneCache, 'mavenizer/repo')) } Closure loaderDisplayVersion = { String loaderVersion -> String coordinatePrefix = "${minecraftVersion}-" diff --git a/build.gradle b/build.gradle index 0124517c5..41f6c4b33 100644 --- a/build.gradle +++ b/build.gradle @@ -334,7 +334,7 @@ Provider matrixWorkers = gradle.sharedServices.registerI } List nestedBuildArguments = [gradle.startParameter.buildCacheEnabled ? '--build-cache' : '--no-build-cache'] if (providers.gradleProperty('multiplexorSandbox').getOrElse('false').toBoolean()) { - nestedBuildArguments.add('--no-daemon') + nestedBuildArguments.addAll(['--no-daemon', '-PmultiplexorSandbox=true']) } String nestedJvmArguments = providers.gradleProperty('org.gradle.jvmargs').getOrElse('') + ' -XX:ActiveProcessorCount=2'