Skip to content

Commit 8b30ede

Browse files
authored
Merge pull request #216 from ModificationStation/develop
Fix Buildscript And a5.1
2 parents e809470 + 17562b5 commit 8b30ede

38 files changed

Lines changed: 174 additions & 50 deletions

File tree

build.gradle.kts

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// tl;dr, tells us off for using properties for versions. Too bad, we don't like trawling this file for version numbers.
22
@file:Suppress("GradlePackageVersionRange")
33

4-
import babric.SubprojectHelpers.addDependencyXML
4+
import net.modificationstation.stationapi.gradle.SubprojectHelpers.addDependencyXML
55

66
plugins {
77
id("maven-publish")
88
id("fabric-loom") version "1.9-SNAPSHOT"
9-
id("babric-loom-extension") version "1.9.4"
9+
id("babric-loom-extension") version "1.9.2"
1010
}
1111

1212
// https://stackoverflow.com/a/40101046 - Even with kotlin, gradle can't get it's shit together.
@@ -40,7 +40,13 @@ allprojects {
4040
}
4141

4242
configurations {
43+
val transitiveImplementation = create("transitiveImplementation")
44+
implementation.get().extendsFrom(transitiveImplementation)
45+
46+
// Required cause loom 0.14 for some reason doesn't remove asm-all 4.1. Ew.
4347
all {
48+
exclude(group = "org.ow2.asm", module = "asm-debug-all")
49+
exclude(group = "org.ow2.asm", module = "asm-all")
4450
exclude(group = "babric")
4551
}
4652
}
@@ -60,16 +66,16 @@ allprojects {
6066

6167
modImplementation("net.fabricmc:fabric-loader:${project.properties["loader_version"]}")
6268

63-
transitiveImplementation(modImplementation("org.apache.commons:commons-lang3:3.12.0") as Dependency)
64-
transitiveImplementation(modImplementation("commons-io:commons-io:2.11.0") as Dependency)
65-
transitiveImplementation(modImplementation("net.jodah:typetools:${project.properties["typetools_version"]}") as Dependency)
66-
transitiveImplementation(modImplementation("com.github.mineLdiver:UnsafeEvents:${project.properties["unsafeevents_version"]}") as Dependency)
67-
transitiveImplementation(modImplementation("it.unimi.dsi:fastutil:${project.properties["fastutil_version"]}") as Dependency)
68-
transitiveImplementation(modImplementation("com.github.ben-manes.caffeine:caffeine:${project.properties["caffeine_version"]}") as Dependency)
69-
transitiveImplementation(modImplementation("com.mojang:datafixerupper:${project.properties["dfu_version"]}") as Dependency)
70-
transitiveImplementation(modImplementation("maven.modrinth:spasm:${project.properties["spasm_version"]}") as Dependency)
71-
transitiveImplementation(modImplementation("me.carleslc:Simple-Yaml:1.8.4") as Dependency)
72-
transitiveImplementation(modImplementation("net.glasslauncher.mods:GlassConfigAPI:${project.properties["gcapi_version"]}") as Dependency)
69+
"transitiveImplementation"("org.apache.commons:commons-lang3:3.12.0")
70+
"transitiveImplementation"("commons-io:commons-io:2.11.0")
71+
"transitiveImplementation"("net.jodah:typetools:${project.properties["typetools_version"]}")
72+
"transitiveImplementation"("com.github.mineLdiver:UnsafeEvents:${project.properties["unsafeevents_version"]}")
73+
"transitiveImplementation"("it.unimi.dsi:fastutil:${project.properties["fastutil_version"]}")
74+
"transitiveImplementation"("com.github.ben-manes.caffeine:caffeine:${project.properties["caffeine_version"]}")
75+
"transitiveImplementation"("com.mojang:datafixerupper:${project.properties["dfu_version"]}")
76+
"transitiveImplementation"("maven.modrinth:spasm:${project.properties["spasm_version"]}")
77+
"transitiveImplementation"("me.carleslc:Simple-Yaml:1.8.4")
78+
"transitiveImplementation"("net.glasslauncher.mods:GlassConfigAPI:${project.properties["gcapi_version"]}")
7379

7480
// convenience stuff
7581
// adds some useful annotations for data classes. does not add any dependencies
@@ -159,9 +165,20 @@ allprojects {
159165
artifact(tasks.getByName("remapJar")).builtBy(tasks.getByName("remapJar"))
160166
artifact(tasks.getByName("remapSourcesJar")).builtBy(tasks.getByName("remapJar"))
161167
}
162-
// Remove this once I fix a **weird** edge case bug in babric.
163-
pom.withXml {
164-
this.asNode().appendNode("dependencies")
168+
169+
pom {
170+
withXml {
171+
// Wipes dependency block, cause it's just hopelessly wrong, and also includes floader for some reason
172+
val depsNode = asNode().appendNode("dependencies")
173+
// Jank solution to an annoying issue
174+
configurations.getByName("transitiveImplementation").dependencies.forEach {
175+
val depNode = depsNode.appendNode("dependency")
176+
depNode.appendNode("groupId", it.group)
177+
depNode.appendNode("artifactId", it.name)
178+
depNode.appendNode("version", it.version)
179+
depNode.appendNode("scope", "compile")
180+
}
181+
}
165182
}
166183
}
167184
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* This file is part of fabric-loom, licensed under the MIT License (MIT).
3+
*
4+
* Copyright (c) 2016-2021 FabricMC
5+
*
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to deal
8+
* in the Software without restriction, including without limitation the rights
9+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
* copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in all
14+
* copies or substantial portions of the Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
* SOFTWARE.
23+
*/
24+
25+
package net.fabricmc.loom.util;
26+
27+
import groovy.util.Node;
28+
import groovy.xml.QName;
29+
30+
public final class GroovyXmlUtil {
31+
private GroovyXmlUtil() { }
32+
33+
public static Node getOrCreateNode(Node parent, String name) {
34+
for (Object object : parent.children()) {
35+
if (object instanceof Node node && isSameName(node.name(), name)) {
36+
return node;
37+
}
38+
}
39+
40+
return parent.appendNode(name);
41+
}
42+
43+
private static boolean isSameName(Object nodeName, String givenName) {
44+
if (nodeName instanceof String) {
45+
return nodeName.equals(givenName);
46+
}
47+
48+
if (nodeName instanceof QName qName) {
49+
return qName.matches(givenName);
50+
}
51+
52+
// New groovy 3 (gradle 7) class
53+
if (nodeName instanceof groovy.namespace.QName qName) {
54+
return qName.matches(givenName);
55+
}
56+
57+
throw new UnsupportedOperationException("Cannot determine if " + nodeName.getClass() + " is the same as a String");
58+
}
59+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,58 @@
11
package net.modificationstation.stationapi.gradle;
22

3+
import groovy.util.Node;
4+
import groovy.util.NodeList;
5+
import groovy.xml.XmlUtil;
6+
import net.fabricmc.loom.util.GroovyXmlUtil;
37
import org.gradle.api.Project;
8+
import org.gradle.api.XmlProvider;
9+
import org.gradle.api.artifacts.Dependency;
10+
import org.gradle.api.publish.PublishingExtension;
11+
import org.gradle.api.publish.maven.MavenPublication;
12+
import org.gradle.internal.impldep.org.codehaus.plexus.util.xml.XmlReader;
13+
14+
import java.util.*;
15+
import java.util.stream.*;
416

517
public class SubprojectHelpers {
618

19+
20+
public static void addModuleDependencies(Project project, String... projectNames) {
21+
List<Dependency> modules = Arrays.stream(projectNames).map((it) -> project.getDependencies().project(Map.of("path", ":" + it, "configuration", "dev"))).collect(Collectors.toList());
22+
// Arrays.stream(projectNames).forEach((it) -> project.getDependencies().project(Map.of("path", ":" + it, "configuration", "dev")));
23+
24+
modules.forEach(dependency -> project.getDependencies().add("implementation", dependency));
25+
26+
MavenPublication publishing = (MavenPublication) project.getExtensions().getByType(PublishingExtension.class).getPublications().getByName("mavenJava");
27+
publishing.pom((e) -> e.withXml((f) -> {
28+
addDependencies(f.asNode(), "implementation", modules);
29+
}));
30+
}
31+
32+
public static void addDependencyXML(Node xml, String scope, Project dependency) {
33+
Node depsNode = GroovyXmlUtil.getOrCreateNode(xml, "dependencies");
34+
35+
Node appNode = depsNode.appendNode("dependency");
36+
appNode.appendNode("groupId", dependency.getGroup());
37+
appNode.appendNode("artifactId", dependency.getName());
38+
appNode.appendNode("version", dependency.getVersion());
39+
appNode.appendNode("scope", scope);
40+
}
41+
42+
public static void addDependencies(Node xml, String scope, List<Dependency> dependencies) {
43+
Node depsNode = GroovyXmlUtil.getOrCreateNode(xml, "dependencies");
44+
45+
for (Dependency dep : dependencies) {
46+
Node appNode = depsNode.appendNode("dependency");
47+
appNode.appendNode("groupId", dep.getGroup());
48+
appNode.appendNode("artifactId", dep.getName());
49+
appNode.appendNode("version", dep.getVersion());
50+
appNode.appendNode("scope", scope);
51+
}
52+
}
53+
754
public static String getSubprojectVersion(Project project, String ver) {
855
return project.getProperties().get("mod_version") + "-" + ver;
956
}
57+
1058
}

station-achievements-v0/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion
2-
import babric.SubprojectHelpers.addModuleDependencies
2+
import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies
33

44
base.archivesName.set("station-achievements-v0")
55
version = getSubprojectVersion(project, "1.0.0")

station-armor-api-v0/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion
2-
import babric.SubprojectHelpers.addModuleDependencies
2+
import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies
33

44
base.archivesName.set("station-armor-api-v0")
55
version = getSubprojectVersion(project, "1.0.0")

station-audio-loader-v0/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion
2-
import babric.SubprojectHelpers.addModuleDependencies
2+
import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies
33
base.archivesName.set("station-audio-loader-v0")
44
version = getSubprojectVersion(project, "1.0.0")
55

station-biome-events-v0/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion
2-
import babric.SubprojectHelpers.addModuleDependencies
2+
import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies
33
base.archivesName.set("station-biome-events-v0")
44
version = getSubprojectVersion(project, "1.0.0")
55

station-blockentities-v0/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion
2-
import babric.SubprojectHelpers.addModuleDependencies
2+
import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies
33
base.archivesName.set("station-blockentities-v0")
44
version = getSubprojectVersion(project, "1.0.0")
55

station-blockitems-v0/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion
2-
import babric.SubprojectHelpers.addModuleDependencies
2+
import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies
33
base.archivesName.set("station-blockitems-v0")
44
version = getSubprojectVersion(project, "1.0.0")
55

station-blocks-v0/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion
2-
import babric.SubprojectHelpers.addModuleDependencies
2+
import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies
33
base.archivesName.set("station-blocks-v0")
44
version = getSubprojectVersion(project, "1.0.0")
55

0 commit comments

Comments
 (0)