Skip to content

Commit 4bd9254

Browse files
committed
Auxiliary artifacts variant-aware resolution opt-out
To fix an issue with auxiliary artifact variant selection (it doesn't work), a new flag `--global-auxiliary-variants` can be enabled to overwrite any previous source JAR variants in the output. - Fixes Parchment sources not including remapped parameter names. - See [gradle/gradle#35065](<gradle/gradle#35065>).
1 parent 0bef474 commit 4bd9254

File tree

6 files changed

+45
-34
lines changed

6 files changed

+45
-34
lines changed

src/main/java/net/minecraftforge/mcmaven/cli/MavenTask.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ static void run(String[] args) throws Exception {
7575
.availableUnless(mappingsO)
7676
.withRequiredArg();
7777

78+
var globalAuxiliaryVariantsO = parser.accepts("global-auxiliary-variants",
79+
"Declares sources and javadoc jars as global variants, no matter the mapping version. This is used to work around gradle/gradle#35065");
80+
7881
var shorthandOptions = new HashMap<String, OptionSpecBuilder>();
7982
var artifacts = Map.of(
8083
"forge", Constants.FORGE_ARTIFACT,
@@ -139,7 +142,7 @@ static void run(String[] args) throws Exception {
139142
? new ParchmentMappings(options.valueOf(parchmentO))
140143
: Mappings.of(options.valueOf(mappingsO));
141144

142-
var mcmaven = new MinecraftMaven(output, cache, jdkCache, mappings);
145+
var mcmaven = new MinecraftMaven(output, cache, jdkCache, mappings, options.has(globalAuxiliaryVariantsO));
143146
mcmaven.run(artifact);
144147
}
145148
}

src/main/java/net/minecraftforge/mcmaven/impl/MinecraftMaven.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,21 @@
2828
// TODO [MCMavenizer][Deobf] ADD DEOBF
2929
// use single detached configuration to resolve individual configurations
3030
// pass in downloaded files to mcmaven (absolute path)
31-
public record MinecraftMaven(File output, Cache cache, Mappings mappings) {
31+
public record MinecraftMaven(File output, Cache cache, Mappings mappings, boolean globalAuxiliaryVariants) {
3232
private static final ComparableVersion MIN_SUPPORTED_FORGE = new ComparableVersion("1.14.4"); // Only 1.14.4+ has official mappings, we can support more when we add more mappings
3333

34-
public MinecraftMaven(File output, File cacheRoot, File jdkCacheRoot, Mappings mappings) {
35-
this(output, new Cache(cacheRoot, jdkCacheRoot), mappings);
34+
public MinecraftMaven(File output, File cacheRoot, File jdkCacheRoot, Mappings mappings, boolean globalAuxiliaryVariants) {
35+
this(output, new Cache(cacheRoot, jdkCacheRoot), mappings, globalAuxiliaryVariants);
3636
}
3737

3838
public MinecraftMaven {
39-
Log.info(" Output: " + output.getAbsolutePath());
40-
Log.info(" Cache: " + cache.root().getAbsolutePath());
41-
Log.info(" JDK Cache: " + cache.jdks().root().getAbsolutePath());
42-
Log.info(" Offline: " + GlobalOptions.isOffline());
43-
Log.info(" Cache Only: " + GlobalOptions.isCacheOnly());
44-
Log.info(" Mappings: " + mappings);
39+
Log.info(" Output: " + output.getAbsolutePath());
40+
Log.info(" Cache: " + cache.root().getAbsolutePath());
41+
Log.info(" JDK Cache: " + cache.jdks().root().getAbsolutePath());
42+
Log.info(" Offline: " + GlobalOptions.isOffline());
43+
Log.info(" Cache Only: " + GlobalOptions.isCacheOnly());
44+
Log.info(" Mappings: " + mappings);
45+
Log.info(" GradleVariantHack: " + globalAuxiliaryVariants);
4546
Log.info();
4647
}
4748

@@ -170,7 +171,7 @@ private void finalize(Artifact module, Mappings mappings, List<Repo.PendingArtif
170171
var file = new GradleModule.Variant.File(target);
171172
for (var variant : data) {
172173
variant.file(file);
173-
if (suffix != null)
174+
if (suffix != null && !(pending.isAuxiliary() && this.globalAuxiliaryVariants))
174175
variant.name = variant.name + '-' + suffix;
175176
}
176177
JsonData.toJson(data, varTarget);

src/main/java/net/minecraftforge/mcmaven/impl/data/GradleModule.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public Variant variant(Variant variant) {
5555
if (variants == null)
5656
variants = new ArrayList<>();
5757

58+
variants.removeIf(v -> Objects.equals(v.name, variant.name));
5859
variants.add(variant);
5960
return variant;
6061
}

src/main/java/net/minecraftforge/mcmaven/impl/repo/Repo.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,16 @@ public final Cache getCache() {
4747

4848
public abstract List<PendingArtifact> process(Artifact artifact, Mappings mappings);
4949

50-
protected static PendingArtifact pending(String message, Task task, Artifact artifact) {
51-
return pending(message, task, artifact, (Task)null);
50+
protected static PendingArtifact pending(String message, Task task, Artifact artifact, boolean auxiliary) {
51+
return pending(message, task, artifact, auxiliary, (Task)null);
5252
}
5353

54-
protected static PendingArtifact pending(String message, Task task, Artifact artifact, Supplier<GradleModule.Variant[]> variants) {
55-
return pending(message, task, artifact, variantTask(task, variants));
54+
protected static PendingArtifact pending(String message, Task task, Artifact artifact, boolean auxiliary, Supplier<GradleModule.Variant[]> variants) {
55+
return pending(message, task, artifact, auxiliary, variantTask(task, variants));
5656
}
5757

58-
protected static PendingArtifact pending(String message, Task task, Artifact artifact, @Nullable Task variants) {
59-
return new PendingArtifact(message, task, artifact, variants);
58+
protected static PendingArtifact pending(String message, Task task, Artifact artifact, boolean auxiliary, @Nullable Task variants) {
59+
return new PendingArtifact(message, task, artifact, auxiliary, variants);
6060
}
6161

6262
// Sources has no dependencies, so just need to specify the attributes
@@ -184,12 +184,14 @@ public static final class PendingArtifact implements Supplier<File> {
184184
private final String message;
185185
private final Task task;
186186
private final Artifact artifact;
187+
private final boolean auxiliary;
187188
private final @Nullable Task variants;
188189

189-
private PendingArtifact(String message, Task task, Artifact artifact, @Nullable Task variants) {
190+
private PendingArtifact(String message, Task task, Artifact artifact, boolean auxiliary, @Nullable Task variants) {
190191
this.message = message;
191192
this.task = task;
192193
this.artifact = artifact;
194+
this.auxiliary = auxiliary;
193195
this.variants = variants;
194196
}
195197

@@ -218,6 +220,10 @@ public Artifact getArtifact() {
218220
return artifact;
219221
}
220222

223+
public boolean isAuxiliary() {
224+
return auxiliary;
225+
}
226+
221227
public @Nullable Task getVariants() {
222228
return variants;
223229
}

src/main/java/net/minecraftforge/mcmaven/impl/repo/forge/ForgeRepo.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,14 @@ private List<PendingArtifact> processV3(String version, Mappings mappings) {
140140
var extraCoords = Artifact.from(Constants.MC_GROUP, Constants.MC_CLIENT + "-extra", patcher.getMCP().getName().getVersion());
141141
var mappingCoords = mappings.getArtifact(joined);
142142

143-
var mapzip = pending("Mappings Zip", mappings.getCsvZip(joined), mappingCoords);
144-
var mappom = pending("Mappings POM", simplePom(build, mappingCoords), mappingCoords.withExtension("pom"));
143+
var mapzip = pending("Mappings Zip", mappings.getCsvZip(joined), mappingCoords, false);
144+
var mappom = pending("Mappings POM", simplePom(build, mappingCoords), mappingCoords.withExtension("pom"), false);
145145

146-
var sources = pending("Sources", sourcesTask, name.withClassifier("sources"), sourceVariant(mappings));
147-
var classes = pending("Classes", classesTask, name, () -> classVariants(mappings, patcher, extraCoords, mappingCoords));
148-
var metadata = pending("Metadata", metadata(build, patcher), name.withClassifier("metadata").withExtension("zip"));
146+
var sources = pending("Sources", sourcesTask, name.withClassifier("sources"), true, sourceVariant(mappings));
147+
var classes = pending("Classes", classesTask, name, false, () -> classVariants(mappings, patcher, extraCoords, mappingCoords));
148+
var metadata = pending("Metadata", metadata(build, patcher), name.withClassifier("metadata").withExtension("zip"), false);
149149

150-
var pom = pending("Maven POM", pom(build, patcher, version, extraCoords, mappingCoords), name.withExtension("pom"));
150+
var pom = pending("Maven POM", pom(build, patcher, version, extraCoords, mappingCoords), name.withExtension("pom"), false);
151151

152152
var extraOutput = this.mcpconfig.processExtra(Constants.MC_GROUP + ':' + Constants.MC_CLIENT, patcher.getMCP().getName().getVersion());
153153
return Stream.concat(

src/main/java/net/minecraftforge/mcmaven/impl/repo/mcpconfig/MCPConfigRepo.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,25 +106,25 @@ public List<PendingArtifact> process(Artifact artifact, Mappings mappings) {
106106
if (isMappings) {
107107
name = mappings.getArtifact(mcpSide);
108108
return List.of(
109-
pending("Mappings", mappings.getCsvZip(mcpSide), name),
110-
pending("Mappings POM", simplePom(build, name), name.withExtension("pom"))
109+
pending("Mappings", mappings.getCsvZip(mcpSide), name, false),
110+
pending("Mappings POM", simplePom(build, name), name.withExtension("pom"), false)
111111
);
112112
}
113113

114114
return switch (mappings.channel()) {
115-
case "notch" -> List.of(pending("Classes", mcpTasks.getRawJar(), name.withClassifier("raw"), simpleVariant("obf-notch", new Mappings("notch", null))));
116-
case "srg", "searge" -> List.of(pending("Classes", mcpTasks.getSrgJar(), name.withClassifier("srg"), simpleVariant("obf-searge", new Mappings("searge", null))));
115+
case "notch" -> List.of(pending("Classes", mcpTasks.getRawJar(), name.withClassifier("raw"), false, simpleVariant("obf-notch", new Mappings("notch", null))));
116+
case "srg", "searge" -> List.of(pending("Classes", mcpTasks.getSrgJar(), name.withClassifier("srg"), false, simpleVariant("obf-searge", new Mappings("searge", null))));
117117
default -> {
118118
var pending = new ArrayList<PendingArtifact>();
119119

120120
var sourcesTask = new RenameTask(build, name, mcpSide, mcpSide.getSources(), mappings);
121121
var recompile = new RecompileTask(build, name, mcpSide.getMCP(), mcpSide::getClasspath, sourcesTask, mappings);
122122
var classesTask = mergeExtra(build, side, recompile, mcpSide.getTasks().getExtra(), mappings);
123123

124-
var sources = pending("Sources", sourcesTask, name.withClassifier("sources"), sourceVariant(mappings));
125-
var classes = pending("Classes", classesTask, name, () -> classVariants(mappings, mcpSide));
126-
var metadata = pending("Metadata", metadata(build, mcpSide), name.withClassifier("metadata").withExtension("zip"));
127-
var pom = pending("Maven POM", pom(build, side, mcpSide, version), name.withExtension("pom"));
124+
var sources = pending("Sources", sourcesTask, name.withClassifier("sources"), true, sourceVariant(mappings));
125+
var classes = pending("Classes", classesTask, name, false, () -> classVariants(mappings, mcpSide));
126+
var metadata = pending("Metadata", metadata(build, mcpSide), name.withClassifier("metadata").withExtension("zip"), false);
127+
var pom = pending("Maven POM", pom(build, side, mcpSide, version), name.withExtension("pom"), false);
128128

129129
pending.addAll(List.of(
130130
sources, classes, metadata, pom
@@ -150,8 +150,8 @@ public List<PendingArtifact> processExtra(String module, String version) {
150150
var extraTask = mcpSide.getTasks().getExtra();
151151
var pomTask = pomExtra(build, side + "-extra", version);
152152

153-
var extra = pending(displayName + " Extra", extraTask, name);
154-
var pom = pending(displayName + " Maven POM", pomTask, name.withExtension("pom"));
153+
var extra = pending(displayName + " Extra", extraTask, name, false);
154+
var pom = pending(displayName + " Maven POM", pomTask, name.withExtension("pom"), false);
155155

156156
return List.of(extra, pom);
157157
}

0 commit comments

Comments
 (0)