aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/fabricmc/loom/task
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/fabricmc/loom/task')
-rw-r--r--src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java6
-rw-r--r--src/main/java/net/fabricmc/loom/task/RemapJarTask.java50
2 files changed, 30 insertions, 26 deletions
diff --git a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java
index ecd9ad84..22211b01 100644
--- a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java
+++ b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java
@@ -62,6 +62,7 @@ import net.fabricmc.loom.configuration.accesswidener.TransitiveAccessWidenerMapp
import net.fabricmc.loom.configuration.providers.mappings.MappingsProviderImpl;
import net.fabricmc.loom.decompilers.LineNumberRemapper;
import net.fabricmc.loom.util.Constants;
+import net.fabricmc.loom.util.FileSystemUtil;
import net.fabricmc.loom.util.IOStringConsumer;
import net.fabricmc.loom.util.OperatingSystem;
import net.fabricmc.loom.util.gradle.ThreadedProgressLoggerConsumer;
@@ -69,7 +70,6 @@ import net.fabricmc.loom.util.gradle.ThreadedSimpleProgressLogger;
import net.fabricmc.loom.util.gradle.WorkerDaemonClientsManagerHelper;
import net.fabricmc.loom.util.ipc.IPCClient;
import net.fabricmc.loom.util.ipc.IPCServer;
-import net.fabricmc.stitch.util.StitchUtil;
public abstract class GenerateSourcesTask extends AbstractLoomTask {
public final LoomDecompiler decompiler;
@@ -265,8 +265,8 @@ public abstract class GenerateSourcesTask extends AbstractLoomTask {
LineNumberRemapper remapper = new LineNumberRemapper();
remapper.readMappings(linemap.toFile());
- try (StitchUtil.FileSystemDelegate inFs = StitchUtil.getJarFileSystem(oldCompiledJar.toFile(), true);
- StitchUtil.FileSystemDelegate outFs = StitchUtil.getJarFileSystem(linemappedJarDestination.toFile(), true)) {
+ try (FileSystemUtil.Delegate inFs = FileSystemUtil.getJarFileSystem(oldCompiledJar.toFile(), true);
+ FileSystemUtil.Delegate outFs = FileSystemUtil.getJarFileSystem(linemappedJarDestination.toFile(), true)) {
remapper.process(logger, inFs.get().getPath("/"), outFs.get().getPath("/"));
}
}
diff --git a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java
index 37293266..600d6821 100644
--- a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java
+++ b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java
@@ -24,20 +24,21 @@
package net.fabricmc.loom.task;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
+import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.jar.Manifest;
-import java.util.zip.ZipEntry;
import com.google.common.base.Preconditions;
import org.gradle.api.Action;
@@ -52,9 +53,6 @@ import org.gradle.api.tasks.InputFile;
import org.gradle.api.tasks.TaskAction;
import org.gradle.jvm.tasks.Jar;
import org.jetbrains.annotations.ApiStatus;
-import org.zeroturnaround.zip.ZipUtil;
-import org.zeroturnaround.zip.transform.StreamZipEntryTransformer;
-import org.zeroturnaround.zip.transform.ZipEntryTransformerEntry;
import net.fabricmc.loom.LoomGradleExtension;
import net.fabricmc.loom.api.mappings.layered.MappingsNamespace;
@@ -72,6 +70,7 @@ import net.fabricmc.loom.configuration.providers.mappings.MappingsProviderImpl;
import net.fabricmc.loom.util.Constants;
import net.fabricmc.loom.util.TinyRemapperHelper;
import net.fabricmc.loom.util.ZipReprocessorUtil;
+import net.fabricmc.loom.util.ZipUtils;
import net.fabricmc.stitch.util.Pair;
import net.fabricmc.tinyremapper.TinyRemapper;
import net.fabricmc.tinyremapper.TinyUtils;
@@ -190,26 +189,31 @@ public class RemapJarTask extends Jar {
}
if (accessWidener != null) {
- boolean replaced = ZipUtil.replaceEntry(data.output.toFile(), accessWidener.getLeft(), accessWidener.getRight());
- Preconditions.checkArgument(replaced, "Failed to remap access widener");
+ try {
+ ZipUtils.replace(data.output, accessWidener.getLeft(), accessWidener.getRight());
+ } catch (IOException e) {
+ throw new UncheckedIOException("Failed to replace access widener in output jar", e);
+ }
}
// Add data to the manifest
- boolean transformed = ZipUtil.transformEntries(data.output.toFile(), new ZipEntryTransformerEntry[]{
- new ZipEntryTransformerEntry(MANIFEST_PATH, new StreamZipEntryTransformer() {
- @Override
- protected void transform(ZipEntry zipEntry, InputStream in, OutputStream out) throws IOException {
- var manifest = new Manifest(in);
- var manifestConfiguration = new JarManifestConfiguration(project);
-
- manifestConfiguration.configure(manifest);
- manifest.getMainAttributes().putValue("Fabric-Mapping-Namespace", toM);
-
- manifest.write(out);
- }
- })
- });
- Preconditions.checkArgument(transformed, "Failed to transform jar manifest");
+ try {
+ int count = ZipUtils.transform(data.output, Map.of(MANIFEST_PATH, bytes -> {
+ var manifest = new Manifest(new ByteArrayInputStream(bytes));
+ var manifestConfiguration = new JarManifestConfiguration(project);
+
+ manifestConfiguration.configure(manifest);
+ manifest.getMainAttributes().putValue("Fabric-Mapping-Namespace", toM);
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ manifest.write(out);
+ return out.toByteArray();
+ }));
+
+ Preconditions.checkState(count > 0, "Did not transform any jar manifest");
+ } catch (IOException e) {
+ throw new UncheckedIOException("Failed to transform jar manifest", e);
+ }
if (isReproducibleFileOrder() || !isPreserveFileTimestamps()) {
try {