Add a lock file around building the loom cache. Regenerate if the lock file exists.

This helps to ensure that failed or canceled builds do not cause the cache to be left in an undetectable invalid state.
This commit is contained in:
modmuss50
2022-07-30 19:21:56 +01:00
parent c7e10a596e
commit 3913c2e897
17 changed files with 97 additions and 35 deletions

View File

@@ -69,6 +69,7 @@ public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implemen
private NamedMinecraftProvider<?> namedMinecraftProvider;
private IntermediaryMinecraftProvider<?> intermediaryMinecraftProvider;
private InstallerData installerData;
private boolean refreshDeps;
public LoomGradleExtensionImpl(Project project, LoomFiles files) {
super(project, files);
@@ -83,7 +84,15 @@ public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implemen
provider.getIntermediaryUrl()
.convention(getIntermediaryUrl())
.finalizeValueOnRead();
provider.getRefreshDeps().set(project.provider(() -> LoomGradleExtension.get(project).refreshDeps()));
});
refreshDeps = project.getGradle().getStartParameter().isRefreshDependencies() || Boolean.getBoolean("loom.refresh");
if (refreshDeps) {
project.getLogger().lifecycle("Refresh dependencies is in use, loom will be significantly slower.");
}
}
@Override
@@ -227,12 +236,19 @@ public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implemen
builder.forceDownload();
}
// TODO
//builder.executor();
return builder;
}
@Override
public boolean refreshDeps() {
return refreshDeps;
}
@Override
public void setRefreshDeps(boolean refreshDeps) {
this.refreshDeps = refreshDeps;
}
@Override
protected <T extends IntermediateMappingsProvider> void configureIntermediateMappingsProviderInternal(T provider) {
provider.getMinecraftVersion().set(getProject().provider(() -> getMinecraftProvider().minecraftVersion()));