From eb55ece3434a7c7ac1f0cd9404a4bcef78f08a7d Mon Sep 17 00:00:00 2001 From: shedaniel Date: Tue, 12 Jan 2021 10:01:05 +0800 Subject: [PATCH] Fix build --- .../loom/providers/MappingsProvider.java | 6 +++-- .../fabricmc/loom/task/CleanLoomBinaries.java | 2 +- .../loom/util/srg/SpecialSourceExecutor.java | 22 +++++++++++++------ 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java b/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java index 6a1ca143..2f45c289 100644 --- a/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java +++ b/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java @@ -200,8 +200,7 @@ public class MappingsProvider extends DependencyProvider { processorManager.setupProcessors(); if (extension.isForge()) { - patchedProvider = new MinecraftPatchedProvider(getProject()); - patchedProvider.provide(dependency, postPopulationScheduler); + patchedProvider = new MinecraftPatchedProvider(this, getProject()); } if (processorManager.active() || (extension.isForge() && patchedProvider.usesProjectCache())) { @@ -211,6 +210,9 @@ public class MappingsProvider extends DependencyProvider { mappedProvider = new MinecraftMappedProvider(getProject()); } + if (extension.isForge()) { + patchedProvider.provide(dependency, postPopulationScheduler); + } mappedProvider.initFiles(minecraftProvider, this); mappedProvider.provide(dependency, postPopulationScheduler); } diff --git a/src/main/java/net/fabricmc/loom/task/CleanLoomBinaries.java b/src/main/java/net/fabricmc/loom/task/CleanLoomBinaries.java index fbcf00fc..2b845afb 100644 --- a/src/main/java/net/fabricmc/loom/task/CleanLoomBinaries.java +++ b/src/main/java/net/fabricmc/loom/task/CleanLoomBinaries.java @@ -43,7 +43,7 @@ public class CleanLoomBinaries extends AbstractLoomTask { Optional.ofNullable(extension.getMinecraftMappedProvider().getSrgJar()).ifPresent(File::delete); if (extension.isForge()) { try { - MinecraftPatchedProvider provider = new MinecraftPatchedProvider(getProject()); + MinecraftPatchedProvider provider = new MinecraftPatchedProvider(extension.getMappingsProvider(), getProject()); provider.initFiles(); provider.cleanCache(); } catch (IOException e) { diff --git a/src/main/java/net/fabricmc/loom/util/srg/SpecialSourceExecutor.java b/src/main/java/net/fabricmc/loom/util/srg/SpecialSourceExecutor.java index 3b44651a..7f69d52c 100644 --- a/src/main/java/net/fabricmc/loom/util/srg/SpecialSourceExecutor.java +++ b/src/main/java/net/fabricmc/loom/util/srg/SpecialSourceExecutor.java @@ -1,6 +1,7 @@ package net.fabricmc.loom.util.srg; import net.fabricmc.loom.LoomGradleExtension; +import net.fabricmc.loom.providers.MappingsProvider; import org.apache.commons.io.IOUtils; import org.gradle.api.Project; import org.gradle.api.tasks.JavaExec; @@ -20,12 +21,14 @@ import java.util.stream.Collectors; import java.util.zip.ZipEntry; public class SpecialSourceExecutor { - public static Path produceSrgJar(Project project, File specialSourceJar, Path officialJar, Path srgPath) throws Exception { + public static Path produceSrgJar(Project project, MappingsProvider provider, String side, File specialSourceJar, Path officialJar, Path srgPath) + throws Exception { Set filter = Files.readAllLines(srgPath, StandardCharsets.UTF_8).stream() .filter(s -> !s.startsWith("\t")) .map(s -> s.split(" ")[0] + ".class") .collect(Collectors.toSet()); - Path stripped = project.getExtensions().getByType(LoomGradleExtension.class).getProjectBuildCache().toPath().resolve(officialJar.getFileName().toString().substring(0, officialJar.getFileName().toString().length() - 4) + "-filtered.jar"); + LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); + Path stripped = extension.getProjectBuildCache().toPath().resolve(officialJar.getFileName().toString().substring(0, officialJar.getFileName().toString().length() - 4) + "-filtered.jar"); Files.deleteIfExists(stripped); try (JarOutputStream output = new JarOutputStream(Files.newOutputStream(stripped))) { ZipUtil.iterate(officialJar.toFile(), (in, zipEntry) -> { @@ -36,7 +39,8 @@ public class SpecialSourceExecutor { } }); } - Path output = tmpFile(); + Path output = extension.getProjectBuildCache().toPath().resolve(officialJar.getFileName().toString().substring(0, officialJar.getFileName().toString().length() - 4) + "-srg-output.jar"); + Files.deleteIfExists(output); String[] args = new String[]{ "--in-jar", @@ -47,6 +51,7 @@ public class SpecialSourceExecutor { srgPath.toAbsolutePath().toString() }; + project.getLogger().lifecycle(":remapping minecraft (SpecialSource, " + side + ", official -> srg)"); JavaExec java = project.getTasks().create("PleaseIgnore_JavaExec_" + UUID.randomUUID().toString().replace("-", ""), JavaExec.class); java.setArgs(Arrays.asList(args)); java.setClasspath(project.files(specialSourceJar)); @@ -60,11 +65,14 @@ public class SpecialSourceExecutor { project.getTasks().remove(java); } - // TODO: Figure out why doing this produces a different result? Possible different class path? - // SpecialSource.main(args); - Files.deleteIfExists(stripped); - return output; + + Path tmp = tmpFile(); + Files.deleteIfExists(tmp); + Files.copy(output, tmp); + + Files.deleteIfExists(output); + return tmp; } private static Path tmpFile() throws IOException {