aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/fabricmc/loom/configuration/providers
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-03-05 16:25:17 +0800
committershedaniel <daniel@shedaniel.me>2021-03-05 16:25:17 +0800
commitf66548f7fb413b46715e490140fec60251284433 (patch)
tree7da7d6a44e1497510cd3d4cd3f1aea2c3977c101 /src/main/java/net/fabricmc/loom/configuration/providers
parentace2a412f27e8daecd0435b4905cf17430716eac (diff)
downloadarchitectury-loom-f66548f7fb413b46715e490140fec60251284433.tar.gz
architectury-loom-f66548f7fb413b46715e490140fec60251284433.tar.bz2
architectury-loom-f66548f7fb413b46715e490140fec60251284433.zip
Update tiny remapper
Diffstat (limited to 'src/main/java/net/fabricmc/loom/configuration/providers')
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java1
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftMappedProvider.java40
2 files changed, 29 insertions, 12 deletions
diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java
index 2afd3eed..cccfc7f8 100644
--- a/src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java
+++ b/src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java
@@ -428,6 +428,7 @@ public class MinecraftPatchedProvider extends DependencyProvider {
Files.deleteIfExists(output);
TinyRemapper remapper = TinyRemapper.newRemapper()
+ .logger(getProject().getLogger()::lifecycle)
.withMappings(TinyRemapperMappingsHelper.create(mappingsWithSrg, "srg", "official", true))
.withMappings(InnerClassRemapper.of(input, mappingsWithSrg, "srg", "official"))
.renameInvalidLocals(true)
diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftMappedProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftMappedProvider.java
index 93068ba4..1a9a5db0 100644
--- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftMappedProvider.java
+++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftMappedProvider.java
@@ -35,7 +35,9 @@ import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import java.util.function.Consumer;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
@@ -48,12 +50,12 @@ import net.fabricmc.loom.configuration.DependencyProvider;
import net.fabricmc.loom.configuration.providers.MinecraftProvider;
import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider;
import net.fabricmc.loom.util.Constants;
-import net.fabricmc.loom.util.ThreadingUtils;
import net.fabricmc.loom.util.TinyRemapperMappingsHelper;
import net.fabricmc.loom.util.srg.AtRemapper;
import net.fabricmc.loom.util.srg.CoreModClassRemapper;
import net.fabricmc.loom.util.srg.InnerClassRemapper;
import net.fabricmc.mapping.tree.TinyTree;
+import net.fabricmc.tinyremapper.IMappingProvider;
import net.fabricmc.tinyremapper.NonClassCopyMode;
import net.fabricmc.tinyremapper.OutputConsumerPath;
import net.fabricmc.tinyremapper.TinyRemapper;
@@ -137,14 +139,15 @@ public class MinecraftMappedProvider extends DependencyProvider {
Path outputSrg = minecraftSrgJar == null ? null : minecraftSrgJar.toPath();
Path[] libraries = getRemapClasspath(getProject());
+ TinyRemapper remapper = getTinyRemapper();
+ remapper.readClassPath(libraries);
+ remapper.prepareClasses();
- ThreadingUtils.run(getExtension().isForge() ? Arrays.asList("named", "intermediary", "srg") : Arrays.asList("named", "intermediary"), toM -> {
+ for (String toM : getExtension().isForge() ? Arrays.asList("named", "intermediary", "srg") : Arrays.asList("named", "intermediary")) {
Path output = "named".equals(toM) ? outputMapped : "srg".equals(toM) ? outputSrg : outputIntermediary;
getProject().getLogger().lifecycle(":remapping minecraft (TinyRemapper, " + fromM + " -> " + toM + ")");
- TinyRemapper remapper = getTinyRemapper(input, fromM, toM);
-
try (OutputConsumerPath outputConsumer = new OutputConsumerPath.Builder(output).build()) {
if (getExtension().isForge()) {
outputConsumer.addNonClassFiles(input, NonClassCopyMode.FIX_META_INF, remapper);
@@ -152,14 +155,14 @@ public class MinecraftMappedProvider extends DependencyProvider {
outputConsumer.addNonClassFiles(input);
}
- remapper.readClassPath(libraries);
+ remapper.replaceMappings(getMappings(input, fromM, toM));
remapper.readInputs(input);
remapper.apply(outputConsumer);
} catch (Exception e) {
Files.deleteIfExists(output);
throw new RuntimeException("Failed to remap JAR " + input + " with mappings from " + mappingsProvider.tinyMappings, e);
} finally {
- remapper.finish();
+ remapper.removeInput();
}
if (getExtension().isForge() && !"srg".equals(toM)) {
@@ -196,14 +199,18 @@ public class MinecraftMappedProvider extends DependencyProvider {
AtRemapper.remap(getProject().getLogger(), output, yarnWithSrg);
CoreModClassRemapper.remapJar(output, yarnWithSrg, getProject().getLogger());
}
- });
+ }
+
+ remapper.finish();
}
- public TinyRemapper getTinyRemapper(@Nullable Path fromJar, String fromM, String toM) throws IOException {
+ public TinyRemapper getTinyRemapper() throws IOException {
TinyRemapper.Builder builder = TinyRemapper.newRemapper()
- .withMappings(TinyRemapperMappingsHelper.create(getExtension().isForge() ? getExtension().getMappingsProvider().getMappingsWithSrg() : getExtension().getMappingsProvider().getMappings(), fromM, toM, true))
.renameInvalidLocals(true)
.ignoreConflicts(getExtension().isForge())
+ .cacheMappings(true)
+ .threads(Runtime.getRuntime().availableProcessors())
+ .logger(getProject().getLogger()::lifecycle)
.rebuildSourceFilenames(true);
if (getExtension().isForge()) {
@@ -211,15 +218,24 @@ public class MinecraftMappedProvider extends DependencyProvider {
* They won't get remapped to their proper packages, so IllegalAccessErrors will happen without ._.
*/
builder.fixPackageAccess(true);
+ }
+
+ return builder.build();
+ }
+
+ public Set<IMappingProvider> getMappings(@Nullable Path fromJar, String fromM, String toM) throws IOException {
+ Set<IMappingProvider> providers = new HashSet<>();
+ providers.add(TinyRemapperMappingsHelper.create(getExtension().isForge() ? getExtension().getMappingsProvider().getMappingsWithSrg() : getExtension().getMappingsProvider().getMappings(), fromM, toM, true));
+ if (getExtension().isForge()) {
if (fromJar != null) {
- builder.withMappings(InnerClassRemapper.of(fromJar, getExtension().getMappingsProvider().getMappingsWithSrg(), fromM, toM));
+ providers.add(InnerClassRemapper.of(fromJar, getExtension().getMappingsProvider().getMappingsWithSrg(), fromM, toM));
}
} else {
- builder.withMappings(out -> JSR_TO_JETBRAINS.forEach(out::acceptClass));
+ providers.add(out -> JSR_TO_JETBRAINS.forEach(out::acceptClass));
}
- return builder.build();
+ return providers;
}
public static Path[] getRemapClasspath(Project project) {