Initial config caching work (#1053)

This commit is contained in:
modmuss
2024-04-15 18:56:59 +01:00
committed by GitHub
parent b8da4e5498
commit 9a3b82c8a3
13 changed files with 353 additions and 68 deletions

View File

@@ -32,7 +32,10 @@ import java.util.Collections;
import java.util.List;
import java.util.Objects;
import javax.inject.Inject;
import org.gradle.api.Project;
import org.gradle.api.configuration.BuildFeatures;
import org.gradle.api.file.ConfigurableFileCollection;
import org.gradle.api.file.FileCollection;
import org.gradle.api.provider.ListProperty;
@@ -57,7 +60,7 @@ import net.fabricmc.loom.util.download.Download;
import net.fabricmc.loom.util.download.DownloadBuilder;
import net.fabricmc.loom.util.gradle.GradleUtils;
public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implements LoomGradleExtension {
public abstract class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implements LoomGradleExtension {
private final Project project;
private final MixinExtension mixinApExtension;
private final LoomFiles loomFiles;
@@ -72,10 +75,16 @@ public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implemen
private IntermediaryMinecraftProvider<?> intermediaryMinecraftProvider;
private InstallerData installerData;
private boolean refreshDeps;
private Provider<Boolean> multiProjectOptimisation;
private final Provider<Boolean> multiProjectOptimisation;
private final ListProperty<LibraryProcessorManager.LibraryProcessorFactory> libraryProcessorFactories;
private final LoomProblemReporter problemReporter;
private final boolean configurationCacheActive;
private final boolean isolatedProjectsActive;
@Inject
protected abstract BuildFeatures getBuildFeatures();
@Inject
public LoomGradleExtensionImpl(Project project, LoomFiles files) {
super(project, files);
this.project = project;
@@ -99,6 +108,22 @@ public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implemen
libraryProcessorFactories.addAll(LibraryProcessorManager.DEFAULT_LIBRARY_PROCESSORS);
libraryProcessorFactories.finalizeValueOnRead();
configurationCacheActive = getBuildFeatures().getConfigurationCache().getActive().get();
isolatedProjectsActive = getBuildFeatures().getIsolatedProjects().getActive().get();
// Fundamentally impossible to support multi-project optimisation with the configuration cache and/or isolated projects.
if (multiProjectOptimisation.get() && configurationCacheActive) {
throw new UnsupportedOperationException("Multi-project optimisation is not supported with the configuration cache");
}
if (multiProjectOptimisation.get() && isolatedProjectsActive) {
throw new UnsupportedOperationException("Isolated projects are not supported with multi-project optimisation");
}
if (configurationCacheActive) {
project.getLogger().warn("Loom support for the Gradle configuration cache is highly experimental and may not work as expected. Please report any issues you encounter.");
}
if (refreshDeps) {
project.getLogger().lifecycle("Refresh dependencies is in use, loom will be significantly slower.");
}
@@ -286,4 +311,9 @@ public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implemen
public LoomProblemReporter getProblemReporter() {
return problemReporter;
}
@Override
public boolean isConfigurationCacheActive() {
return configurationCacheActive;
}
}