From 0fa4e1e05ed860bcffb0ec146e8c8d9121006cc8 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 25 Jan 2023 09:30:36 +0000 Subject: [PATCH] Fix #815 - Regression causing TAWs from runtime only deps to be applied. --- .../processors/SpecContextImpl.java | 19 +++++++++++++------ .../AccessWidenerJarProcessorTest.groovy | 2 -- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/fabricmc/loom/configuration/processors/SpecContextImpl.java b/src/main/java/net/fabricmc/loom/configuration/processors/SpecContextImpl.java index bc26a01b..83de5673 100644 --- a/src/main/java/net/fabricmc/loom/configuration/processors/SpecContextImpl.java +++ b/src/main/java/net/fabricmc/loom/configuration/processors/SpecContextImpl.java @@ -38,6 +38,7 @@ import java.util.stream.Stream; import org.gradle.api.Project; import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.ProjectDependency; +import org.gradle.api.attributes.Usage; import org.gradle.api.plugins.JavaPlugin; import net.fabricmc.loom.LoomGradleExtension; @@ -108,18 +109,14 @@ public record SpecContextImpl(List modDependencies, List getCompileRuntimeModsFromRemapConfigs(Project project) { final LoomGradleExtension extension = LoomGradleExtension.get(project); - final Function> resolve = settings -> - settings.getSourceConfiguration().get().resolve().stream() - .map(File::toPath); - final List runtimeEntries = extension.getRuntimeRemapConfigurations().stream() .filter(settings -> settings.getApplyDependencyTransforms().get()) - .flatMap(resolve) + .flatMap(resolveArtifacts(project, true)) .toList(); return extension.getCompileRemapConfigurations().stream() .filter(settings -> settings.getApplyDependencyTransforms().get()) - .flatMap(resolve) + .flatMap(resolveArtifacts(project, false)) .filter(runtimeEntries::contains) // Use the intersection of the two configurations. .map(FabricModJsonFactory::createFromZipOptional) .filter(Optional::isPresent) @@ -127,6 +124,16 @@ public record SpecContextImpl(List modDependencies, List> resolveArtifacts(Project project, boolean runtime) { + final Usage usage = project.getObjects().named(Usage.class, runtime ? Usage.JAVA_RUNTIME : Usage.JAVA_API); + + return settings -> { + final Configuration configuration = settings.getSourceConfiguration().get().copy(); + configuration.attributes(attributes -> attributes.attribute(Usage.USAGE_ATTRIBUTE, usage)); + return configuration.resolve().stream().map(File::toPath); + }; + } + // Returns a list of Loom Projects found in both the runtime and compile classpath private static Stream getCompileRuntimeProjectDependencies(Project project) { final Stream runtimeProjects = getLoomProjectDependencies(project.getConfigurations().getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME)); diff --git a/src/test/groovy/net/fabricmc/loom/test/unit/processor/AccessWidenerJarProcessorTest.groovy b/src/test/groovy/net/fabricmc/loom/test/unit/processor/AccessWidenerJarProcessorTest.groovy index 707ae3ef..1a2e69db 100644 --- a/src/test/groovy/net/fabricmc/loom/test/unit/processor/AccessWidenerJarProcessorTest.groovy +++ b/src/test/groovy/net/fabricmc/loom/test/unit/processor/AccessWidenerJarProcessorTest.groovy @@ -46,7 +46,6 @@ class AccessWidenerJarProcessorTest extends Specification { then: spec != null - spec.hashCode() == 858364006 } def "Dep AW"() { @@ -73,7 +72,6 @@ class AccessWidenerJarProcessorTest extends Specification { then: spec != null - spec.hashCode() == 1534839952 } def "No AWs"() {