Set up dependency providers before mappings, clean up code

This lets us use the same order as in 1.1, so I can also clean up some
changes made for the ordering. Thanks to merging MinecraftProvider's
provideFirst() and provide(), I could safely move the dependency providers
back to where they belong. (Alternatively, I could've moved the libraries
to provideFirst() but it's better to just get rid of it anyway to reduce
isForge() checks.)

Partially reverts commit 3d74e11167.
This commit is contained in:
Juuz
2023-04-30 13:03:28 +03:00
parent 0ae0562f5f
commit c847f05bee
6 changed files with 16 additions and 53 deletions

View File

@@ -194,14 +194,14 @@ public abstract class CompileConfiguration implements Runnable {
extension.setMinecraftProvider(minecraftProvider);
minecraftProvider.provide();
final DependencyInfo mappingsDep = DependencyInfo.create(getProject(), Configurations.MAPPINGS);
final MappingConfiguration mappingConfiguration = MappingConfiguration.create(getProject(), configContext.serviceManager(), mappingsDep, minecraftProvider);
extension.setMappingConfiguration(mappingConfiguration);
// This needs to run after MinecraftProvider.initFiles and MinecraftLibraryProvider.provide
// but before MinecraftPatchedProvider.provide.
setupDependencyProviders(project, extension);
final DependencyInfo mappingsDep = DependencyInfo.create(getProject(), Configurations.MAPPINGS);
final MappingConfiguration mappingConfiguration = MappingConfiguration.create(getProject(), configContext.serviceManager(), mappingsDep, minecraftProvider);
extension.setMappingConfiguration(mappingConfiguration);
if (extension.isForge()) {
ForgeLibrariesProvider.provide(mappingConfiguration, project);
((ForgeMinecraftProvider) minecraftProvider).getPatchedProvider().provide();

View File

@@ -77,7 +77,7 @@ public final class FieldMigratedMappingConfiguration extends MappingConfiguratio
@Override
protected void setup(Project project, SharedServiceManager serviceManager, MinecraftProvider minecraftProvider, Path inputJar) throws IOException {
final Path forgeCache = ForgeProvider.getCurrentForgeCache(project);
final Path forgeCache = ForgeProvider.getForgeCache(project);
Files.createDirectories(forgeCache);
migratedFieldsCache = forgeCache.resolve("migrated-fields.json");
migratedFields.clear();
@@ -99,8 +99,8 @@ public final class FieldMigratedMappingConfiguration extends MappingConfiguratio
super.setup(project, serviceManager, minecraftProvider, inputJar);
}
public static String createForgeMappingsIdentifier(Project project, String mappingsName, String version, String classifier, String minecraftVersion) {
return FieldMigratedMappingConfiguration.createMappingsIdentifier(mappingsName, version, classifier, minecraftVersion) + "-forge-" + ForgeProvider.getCombinedForgeVersion(project);
public static String createForgeMappingsIdentifier(LoomGradleExtension extension, String mappingsName, String version, String classifier, String minecraftVersion) {
return FieldMigratedMappingConfiguration.createMappingsIdentifier(mappingsName, version, classifier, minecraftVersion) + "-forge-" + extension.getForgeProvider().getVersion().getCombined();
}
@Override

View File

@@ -28,8 +28,6 @@ import java.io.File;
import java.nio.file.Path;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.Dependency;
import net.fabricmc.loom.LoomGradleExtension;
import net.fabricmc.loom.configuration.DependencyInfo;
@@ -78,53 +76,18 @@ public class ForgeProvider extends DependencyProvider {
return Constants.Configurations.FORGE;
}
/**
* Gets the full/combined Forge version <em>without</em> resolving dependencies
* that haven't been resolved yet.
*
* @param project the Gradle project
* @return the Forge version
*/
public static String getCombinedForgeVersion(Project project) {
final LoomGradleExtension extension = LoomGradleExtension.get(project);
if (extension.getDependencyProviders() != null) {
return extension.getForgeProvider().getVersion().getCombined();
}
final Configuration configuration = project.getConfigurations().getByName(Constants.Configurations.FORGE);
for (Dependency dependency : configuration.getDependencies()) {
if (dependency.getVersion() != null) {
return dependency.getVersion();
}
}
throw new RuntimeException("Could not find Forge version. Searched " + configuration.getDependencies().size() + " dependencies");
}
/**
* {@return the Forge cache directory}.
*
* @param project the project
* @param version the Forge version
*/
public static Path getForgeCache(Project project, String version) {
public static Path getForgeCache(Project project) {
final LoomGradleExtension extension = LoomGradleExtension.get(project);
final String version = extension.getForgeProvider().getVersion().getCombined();
return LoomGradleExtension.get(project).getMinecraftProvider()
.dir("forge/" + version).toPath();
}
/**
* {@return the cache directory for the current Forge version}
*
* <p>This method is slower than {@link #getForgeCache} if you already know the Forge version.
*
* @param project the project
*/
public static Path getCurrentForgeCache(Project project) {
return getForgeCache(project, getCombinedForgeVersion(project));
}
public static final class ForgeVersion {
private final String combined;
private final String minecraftVersion;

View File

@@ -134,7 +134,7 @@ public class MinecraftPatchedProvider {
private void initPatchedFiles() {
String forgeVersion = getExtension().getForgeProvider().getVersion().getCombined();
Path forgeWorkingDir = ForgeProvider.getForgeCache(project, forgeVersion);
Path forgeWorkingDir = ForgeProvider.getForgeCache(project);
String patchId = "forge-" + forgeVersion + "-";
minecraftProvider.setJarPrefix(patchId);

View File

@@ -1,7 +1,7 @@
/*
* This file is part of fabric-loom, licensed under the MIT License (MIT).
*
* Copyright (c) 2020-2021 FabricMC
* Copyright (c) 2020-2023 FabricMC
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -46,7 +46,7 @@ public class PatchProvider extends DependencyProvider {
@Override
public void provide(DependencyInfo dependency) throws Exception {
init(dependency.getDependency().getVersion());
init();
if (Files.notExists(clientPatches) || Files.notExists(serverPatches) || refreshDeps()) {
getProject().getLogger().info(":extracting forge patches");
@@ -60,8 +60,8 @@ public class PatchProvider extends DependencyProvider {
}
}
private void init(String forgeVersion) {
final Path projectCacheFolder = ForgeProvider.getForgeCache(getProject(), forgeVersion);
private void init() {
final Path projectCacheFolder = ForgeProvider.getForgeCache(getProject());
clientPatches = projectCacheFolder.resolve("patches-client.lzma");
serverPatches = projectCacheFolder.resolve("patches-server.lzma");

View File

@@ -125,7 +125,7 @@ public class MappingConfiguration {
String mappingsIdentifier;
if (extension.isForge()) {
mappingsIdentifier = FieldMigratedMappingConfiguration.createForgeMappingsIdentifier(project, mappingsName, version, getMappingsClassifier(dependency, jarInfo.v2()), minecraftProvider.minecraftVersion());
mappingsIdentifier = FieldMigratedMappingConfiguration.createForgeMappingsIdentifier(extension, mappingsName, version, getMappingsClassifier(dependency, jarInfo.v2()), minecraftProvider.minecraftVersion());
} else {
mappingsIdentifier = createMappingsIdentifier(mappingsName, version, getMappingsClassifier(dependency, jarInfo.v2()), minecraftProvider.minecraftVersion());
}