Merge remote-tracking branch 'upstream/dev/0.11' into dev/0.11.0

# Conflicts:
#	src/main/java/net/fabricmc/loom/task/AbstractRemapJarTask.java
#	src/main/java/net/fabricmc/loom/task/RemapTaskConfiguration.java
This commit is contained in:
Juuz
2022-01-27 19:56:59 +02:00
3 changed files with 62 additions and 28 deletions

View File

@@ -59,6 +59,12 @@ public abstract class AbstractRemapJarTask extends Jar {
@Input
public abstract Property<String> getTargetNamespace();
/**
* When enabled the TinyRemapperService will not be shared across sub projects.
*/
@Input
public abstract Property<Boolean> getRemapperIsolation();
@Inject
protected abstract WorkerExecutor getWorkerExecutor();
@@ -66,6 +72,7 @@ public abstract class AbstractRemapJarTask extends Jar {
public AbstractRemapJarTask() {
getSourceNamespace().convention(MappingsNamespace.NAMED.toString()).finalizeValueOnRead();
getTargetNamespace().convention(SourceRemapper.intermediary(getProject())).finalizeValueOnRead();
getRemapperIsolation().convention(false).finalizeValueOnRead();
}
public final <P extends AbstractRemapParams> void submitWork(Class<? extends AbstractRemapAction<P>> workAction, Action<P> action) {

View File

@@ -84,18 +84,6 @@ public class RemapTaskConfiguration {
trySetupSourceRemapping(project);
if (extension.getSetupRemappedVariants().get()) {
// Remove -dev jars from the default jar task
for (String configurationName : new String[] { JavaPlugin.API_ELEMENTS_CONFIGURATION_NAME, JavaPlugin.RUNTIME_ELEMENTS_CONFIGURATION_NAME }) {
Configuration configuration = project.getConfigurations().getByName(configurationName);
final Task jarTask = project.getTasks().getByName(JavaPlugin.JAR_TASK_NAME);
configuration.getArtifacts().removeIf(artifact -> {
// if the artifact is a -dev jar and "builtBy jar"
return "dev".equals(artifact.getClassifier()) && artifact.getBuildDependencies().getDependencies(null).contains(jarTask);
});
}
}
project.afterEvaluate(p -> {
if (extension.isForge()) {
if (PropertyUtil.getAndFinalize(extension.getForge().getConvertAccessWideners())) {
@@ -113,18 +101,34 @@ public class RemapTaskConfiguration {
}
}
});
if (!extension.getSetupRemappedVariants().get()) {
return;
}
project.afterEvaluate(p -> {
// Remove -dev jars from the default jar task
for (String configurationName : new String[] { JavaPlugin.API_ELEMENTS_CONFIGURATION_NAME, JavaPlugin.RUNTIME_ELEMENTS_CONFIGURATION_NAME }) {
Configuration configuration = project.getConfigurations().getByName(configurationName);
final Task jarTask = project.getTasks().getByName(JavaPlugin.JAR_TASK_NAME);
configuration.getArtifacts().removeIf(artifact -> {
// if the artifact is a -dev jar and "builtBy jar"
return "dev".equals(artifact.getClassifier()) && artifact.getBuildDependencies().getDependencies(null).contains(jarTask);
});
}
});
}
private static void trySetupSourceRemapping(Project project) {
final TaskContainer tasks = project.getTasks();
final LoomGradleExtension extension = LoomGradleExtension.get(project);
final JavaPluginExtension javaExtension = project.getExtensions().getByType(JavaPluginExtension.class);
final String sourcesJarTaskName = javaExtension.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME).getSourcesJarTaskName();
TaskProvider<RemapSourcesJarTask> remapSourcesTask = tasks.register(REMAP_SOURCES_JAR_TASK_NAME, RemapSourcesJarTask.class, task -> {
task.setDescription("Remaps the default sources jar to intermediary mappings.");
task.setGroup(Constants.TaskGroup.FABRIC);
final JavaPluginExtension javaExtension = project.getExtensions().getByType(JavaPluginExtension.class);
final String sourcesJarTaskName = javaExtension.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME).getSourcesJarTaskName();
final Task sourcesTask = project.getTasks().findByName(sourcesJarTaskName);
if (sourcesTask == null) {
@@ -145,21 +149,31 @@ public class RemapTaskConfiguration {
task.dependsOn(sourcesJarTask);
task.getInputFile().convention(sourcesJarTask.getArchiveFile());
if (extension.getSetupRemappedVariants().get()) {
if (project.getConfigurations().getNames().contains(JavaPlugin.SOURCES_ELEMENTS_CONFIGURATION_NAME)) {
project.getArtifacts().add(JavaPlugin.SOURCES_ELEMENTS_CONFIGURATION_NAME, task);
// Remove the dev sources artifact
Configuration configuration = project.getConfigurations().getByName(JavaPlugin.SOURCES_ELEMENTS_CONFIGURATION_NAME);
configuration.getArtifacts().removeIf(a -> a.getFile().equals(sourcesJarTask.getArchiveFile().get().getAsFile()));
} else {
// Sources jar may not have been created with withSourcesJar
project.getLogger().warn("Not publishing sources jar as it was not found. Use java.withSourcesJar() to fix.");
}
}
});
tasks.named(BasePlugin.ASSEMBLE_TASK_NAME).configure(task -> task.dependsOn(remapSourcesTask));
if (!extension.getSetupRemappedVariants().get()) {
return;
}
project.afterEvaluate(p -> {
final Task sourcesTask = project.getTasks().findByName(sourcesJarTaskName);
if (!(sourcesTask instanceof Jar sourcesJarTask)) {
return;
}
if (project.getConfigurations().getNames().contains(JavaPlugin.SOURCES_ELEMENTS_CONFIGURATION_NAME)) {
project.getArtifacts().add(JavaPlugin.SOURCES_ELEMENTS_CONFIGURATION_NAME, remapSourcesTask);
// Remove the dev sources artifact
Configuration configuration = project.getConfigurations().getByName(JavaPlugin.SOURCES_ELEMENTS_CONFIGURATION_NAME);
configuration.getArtifacts().removeIf(a -> a.getFile().equals(sourcesJarTask.getArchiveFile().get().getAsFile()));
} else {
// Sources jar may not have been created with withSourcesJar
project.getLogger().warn("Not publishing sources jar as it was not found. Use java.withSourcesJar() to fix.");
}
});
}
}

View File

@@ -33,6 +33,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.StringJoiner;
import dev.architectury.tinyremapper.IMappingProvider;
import dev.architectury.tinyremapper.InputTag;
@@ -56,7 +57,19 @@ public class TinyRemapperService implements SharedService {
final boolean useKotlinExtension = project.getPluginManager().hasPlugin("org.jetbrains.kotlin.jvm");
// Generates an id that is used to share the remapper across projects. This tasks in the remap jar task name to handle custom remap jar tasks separately.
final String id = extension.getMappingsProvider().getBuildServiceName("remapJarService", from, to) + ":" + remapJarTask.getName() + (useKotlinExtension ? ":kotlin" : "");
final var joiner = new StringJoiner(":");
joiner.add(extension.getMappingsProvider().getBuildServiceName("remapJarService", from, to));
joiner.add(remapJarTask.getName());
if (useKotlinExtension) {
joiner.add("kotlin");
}
if (remapJarTask.getRemapperIsolation().get()) {
joiner.add(project.getPath());
}
final String id = joiner.toString();
TinyRemapperService service = sharedServiceManager.getOrCreateService(id, () -> {
List<IMappingProvider> mappings = new ArrayList<>();