From 1b4226aca912bb3fea6506cb5d74c986fc83cca6 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Sun, 11 Sep 2022 15:58:28 +0100 Subject: [PATCH] Fix mods being always being applied to the main sourceset and not the target. (#719) --- .../loom/api/RemapConfigurationSettings.java | 7 +++++++ .../configuration/RemapConfigurations.java | 20 ++++++++++++++----- .../extension/LoomGradleExtensionApiImpl.java | 3 +++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/fabricmc/loom/api/RemapConfigurationSettings.java b/src/main/java/net/fabricmc/loom/api/RemapConfigurationSettings.java index bdc7ecd1..cd88e5a9 100644 --- a/src/main/java/net/fabricmc/loom/api/RemapConfigurationSettings.java +++ b/src/main/java/net/fabricmc/loom/api/RemapConfigurationSettings.java @@ -37,6 +37,7 @@ import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; import org.gradle.api.tasks.Internal; +import org.gradle.api.tasks.SourceSet; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -53,6 +54,7 @@ public abstract class RemapConfigurationSettings implements Named { public RemapConfigurationSettings(String name) { this.name = name; + getSourceSet().finalizeValueOnRead(); getTargetConfigurationName().finalizeValueOnRead(); getClientSourceConfigurationName().finalizeValueOnRead(); getOnCompileClasspath().finalizeValueOnRead(); @@ -65,6 +67,11 @@ public abstract class RemapConfigurationSettings implements Named { return name; } + /** + * @return The target source set + */ + public abstract Property getSourceSet(); + /** * @return The target configuration name */ diff --git a/src/main/java/net/fabricmc/loom/configuration/RemapConfigurations.java b/src/main/java/net/fabricmc/loom/configuration/RemapConfigurations.java index 47b3ea2e..125aee50 100644 --- a/src/main/java/net/fabricmc/loom/configuration/RemapConfigurations.java +++ b/src/main/java/net/fabricmc/loom/configuration/RemapConfigurations.java @@ -59,6 +59,7 @@ public final class RemapConfigurations { for (ConfigurationOption option : getValidOptions(sourceSet)) { extension.addRemapConfiguration(option.name(sourceSet), configure( + sourceSet, option.targetName(sourceSet), option.compileClasspath(), option.runtimeClasspath(), @@ -106,6 +107,8 @@ public final class RemapConfigurations { } public static void applyToProject(Project project, RemapConfigurationSettings settings) { + final SourceSet sourceSet = settings.getSourceSet().get(); + final boolean isMainSourceSet = sourceSet.getName().equals("main"); // No point bothering to make it lazily, gradle realises configurations right away. // final Configuration remappedConfiguration = project.getConfigurations().create(settings.getRemappedConfigurationName()); @@ -117,13 +120,19 @@ public final class RemapConfigurations { if (settings.getOnCompileClasspath().get()) { extendsFrom(Constants.Configurations.MOD_COMPILE_CLASSPATH, configuration, project); extendsFrom(Constants.Configurations.MOD_COMPILE_CLASSPATH_MAPPED, remappedConfiguration, project); - extendsFrom(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME, remappedConfiguration, project); - extendsFrom(JavaPlugin.TEST_COMPILE_CLASSPATH_CONFIGURATION_NAME, remappedConfiguration, project); + extendsFrom(sourceSet.getCompileClasspathConfigurationName(), remappedConfiguration, project); + + if (isMainSourceSet) { + extendsFrom(JavaPlugin.TEST_COMPILE_CLASSPATH_CONFIGURATION_NAME, remappedConfiguration, project); + } } if (settings.getOnRuntimeClasspath().get()) { - extendsFrom(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME, remappedConfiguration, project); - extendsFrom(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME, remappedConfiguration, project); + extendsFrom(sourceSet.getRuntimeClasspathConfigurationName(), remappedConfiguration, project); + + if (isMainSourceSet) { + extendsFrom(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME, remappedConfiguration, project); + } } for (String outgoingConfigurationName : settings.getPublishingMode().get().outgoingConfigurations()) { @@ -131,8 +140,9 @@ public final class RemapConfigurations { } } - private static Action configure(String targetConfiguration, boolean compileClasspath, boolean runtimeClasspath, RemapConfigurationSettings.PublishingMode publishingMode) { + private static Action configure(SourceSet sourceSet, String targetConfiguration, boolean compileClasspath, boolean runtimeClasspath, RemapConfigurationSettings.PublishingMode publishingMode) { return configuration -> { + configuration.getSourceSet().convention(sourceSet); configuration.getTargetConfigurationName().convention(targetConfiguration); configuration.getOnCompileClasspath().convention(compileClasspath); configuration.getOnRuntimeClasspath().convention(runtimeClasspath); diff --git a/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java b/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java index abfc70bd..af111e9f 100644 --- a/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java +++ b/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java @@ -340,6 +340,9 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA public RemapConfigurationSettings addRemapConfiguration(String name, Action action) { final RemapConfigurationSettings configurationSettings = getProject().getObjects().newInstance(RemapConfigurationSettings.class, name); + // TODO remove in 2.0, this is a fallback to mimic the previous (Broken) behaviour + configurationSettings.getSourceSet().convention(SourceSetHelper.getMainSourceSet(getProject())); + action.execute(configurationSettings); RemapConfigurations.applyToProject(getProject(), configurationSettings); remapConfigurations.add(configurationSettings);