From e2439b7f57a82c365d4726d068b68ea2eb606f78 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Mon, 11 Oct 2021 13:47:16 +0100 Subject: Rewrite GenSources including full support for CFR. (#511) * Rewrite CFR decompiler interface. Support javadoc * CFR line numbers and fixes. * Cleanup and fix * Use WorkerExecutor to fork, massively cleans up the fernflower code, but does remove the fancy multithreaded logging. * Use IPC to get logging back from the decompilers. * Cleanup UnpickJarTask, fix leak in IPCServer * Used published CFR build * Handle older windows versions that do not support AF_UNIX. * Fixes and basic unit test * Improve memory handling of genSources * Stop decompile worker JVM --- .../java/net/fabricmc/loom/task/UnpickJarTask.java | 77 +++++++++------------- 1 file changed, 30 insertions(+), 47 deletions(-) (limited to 'src/main/java/net/fabricmc/loom/task/UnpickJarTask.java') diff --git a/src/main/java/net/fabricmc/loom/task/UnpickJarTask.java b/src/main/java/net/fabricmc/loom/task/UnpickJarTask.java index 93c71747..e750cb10 100644 --- a/src/main/java/net/fabricmc/loom/task/UnpickJarTask.java +++ b/src/main/java/net/fabricmc/loom/task/UnpickJarTask.java @@ -29,7 +29,12 @@ import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; +import javax.inject.Inject; + +import org.gradle.api.file.ConfigurableFileCollection; +import org.gradle.api.file.RegularFileProperty; import org.gradle.api.tasks.InputFile; +import org.gradle.api.tasks.InputFiles; import org.gradle.api.tasks.Internal; import org.gradle.api.tasks.JavaExec; import org.gradle.api.tasks.OutputFile; @@ -39,26 +44,43 @@ import net.fabricmc.loom.configuration.providers.LaunchProvider; import net.fabricmc.loom.extension.LoomFiles; import net.fabricmc.loom.util.Constants; -public class UnpickJarTask extends JavaExec { - File inputJar; - File unpickDefinition; +public abstract class UnpickJarTask extends JavaExec { + @InputFile + public abstract RegularFileProperty getInputJar(); + + @InputFile + public abstract RegularFileProperty getUnpickDefinitions(); + + @InputFiles + // Only 1 file, but it comes from a configuration + public abstract ConfigurableFileCollection getConstantJar(); + + @InputFiles + public abstract ConfigurableFileCollection getUnpickClasspath(); - File outputJar; + @OutputFile + public abstract RegularFileProperty getOutputJar(); + @Inject public UnpickJarTask() { - getOutputs().upToDateWhen(e -> false); classpath(getProject().getConfigurations().getByName(Constants.Configurations.UNPICK_CLASSPATH)); getMainClass().set("daomephsta.unpick.cli.Main"); + + getConstantJar().setFrom(getProject().getConfigurations().getByName(Constants.Configurations.MAPPING_CONSTANTS)); + getUnpickClasspath().setFrom(getProject().getConfigurations().getByName(Constants.Configurations.MINECRAFT_DEPENDENCIES)); } @Override public void exec() { - fileArg(getInputJar(), getOutputJar(), getUnpickDefinition()); - fileArg(getConstantJar()); + fileArg(getInputJar().get().getAsFile(), getOutputJar().get().getAsFile(), getUnpickDefinitions().get().getAsFile()); + fileArg(getConstantJar().getSingleFile()); // Classpath fileArg(getExtension().getMinecraftMappedProvider().getMappedJar()); - fileArg(getMinecraftDependencies()); + + for (File file : getUnpickClasspath()) { + fileArg(file); + } writeUnpickLogConfig(); systemProperty("java.util.logging.config.file", getDirectories().getUnpickLoggingConfigFile().getAbsolutePath()); @@ -75,45 +97,6 @@ public class UnpickJarTask extends JavaExec { } } - private File[] getMinecraftDependencies() { - return getProject().getConfigurations().getByName(Constants.Configurations.MINECRAFT_DEPENDENCIES) - .resolve().toArray(new File[0]); - } - - private File getConstantJar() { - return getProject().getConfigurations().getByName(Constants.Configurations.MAPPING_CONSTANTS).getSingleFile(); - } - - @InputFile - public File getInputJar() { - return inputJar; - } - - public UnpickJarTask setInputJar(File inputJar) { - this.inputJar = inputJar; - return this; - } - - @InputFile - public File getUnpickDefinition() { - return unpickDefinition; - } - - public UnpickJarTask setUnpickDefinition(File unpickDefinition) { - this.unpickDefinition = unpickDefinition; - return this; - } - - @OutputFile - public File getOutputJar() { - return outputJar; - } - - public UnpickJarTask setOutputJar(File outputJar) { - this.outputJar = outputJar; - return this; - } - private void fileArg(File... files) { for (File file : files) { args(file.getAbsolutePath()); -- cgit