Add workaround for setupCIWorkspace not being sufficient
This commit is contained in:
@@ -7,7 +7,6 @@ pipeline:
|
|||||||
commands:
|
commands:
|
||||||
- curl --fail --create-dirs -o $HOME/.gradle/init.d/mirror.gradle https://maven.johni0702.de/config/gradle
|
- curl --fail --create-dirs -o $HOME/.gradle/init.d/mirror.gradle https://maven.johni0702.de/config/gradle
|
||||||
- curl --fail --create-dirs -o $HOME/.m2/settings.xml https://maven.johni0702.de/config/maven
|
- curl --fail --create-dirs -o $HOME/.m2/settings.xml https://maven.johni0702.de/config/maven
|
||||||
- JAVA_OPTS=-Xmx1516M ./gradlew setupDecompWorkspace
|
|
||||||
- ./gradlew :build
|
- ./gradlew :build
|
||||||
archive:
|
archive:
|
||||||
image: plugins/s3
|
image: plugins/s3
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
eyJhbGciOiJIUzI1NiJ9.cGlwZWxpbmU6CiAgY2xvbmU6CiAgICBpbWFnZTogcGx1Z2lucy9naXQKICAgIHRhZ3M6IHRydWUKICBidWlsZDoKICAgIGltYWdlOiBtYXZlbjozLjMuOS1qZGstOAogICAgY29tbWFuZHM6CiAgICAgIC0gY3VybCAtLWZhaWwgLS1jcmVhdGUtZGlycyAtbyAkSE9NRS8uZ3JhZGxlL2luaXQuZC9taXJyb3IuZ3JhZGxlIGh0dHBzOi8vbWF2ZW4uam9obmkwNzAyLmRlL2NvbmZpZy9ncmFkbGUKICAgICAgLSBjdXJsIC0tZmFpbCAtLWNyZWF0ZS1kaXJzIC1vICRIT01FLy5tMi9zZXR0aW5ncy54bWwgaHR0cHM6Ly9tYXZlbi5qb2huaTA3MDIuZGUvY29uZmlnL21hdmVuCiAgICAgIC0gSkFWQV9PUFRTPS1YbXgxNTE2TSAuL2dyYWRsZXcgc2V0dXBEZWNvbXBXb3Jrc3BhY2UKICAgICAgLSAuL2dyYWRsZXcgOmJ1aWxkCiAgYXJjaGl2ZToKICAgIGltYWdlOiBwbHVnaW5zL3MzCiAgICBhY2w6IHB1YmxpYy1yZWFkCiAgICByZWdpb246ICJ1cy1lYXN0LTEiCiAgICBidWNrZXQ6ICJyZXBsYXltb2QiCiAgICBwYXRoX3N0eWxlOiB0cnVlCiAgICBzb3VyY2U6IGJ1aWxkL2xpYnMvKgogICAgc3RyaXBfcHJlZml4OiBidWlsZC9saWJzLwogICAgdGFyZ2V0OiAvCg.nzPW0_TpMIjnFZZ5Ci439QDKlaDo1a3DCH-VCYUgpx8
|
eyJhbGciOiJIUzI1NiJ9.cGlwZWxpbmU6CiAgY2xvbmU6CiAgICBpbWFnZTogcGx1Z2lucy9naXQKICAgIHRhZ3M6IHRydWUKICBidWlsZDoKICAgIGltYWdlOiBtYXZlbjozLjMuOS1qZGstOAogICAgY29tbWFuZHM6CiAgICAgIC0gY3VybCAtLWZhaWwgLS1jcmVhdGUtZGlycyAtbyAkSE9NRS8uZ3JhZGxlL2luaXQuZC9taXJyb3IuZ3JhZGxlIGh0dHBzOi8vbWF2ZW4uam9obmkwNzAyLmRlL2NvbmZpZy9ncmFkbGUKICAgICAgLSBjdXJsIC0tZmFpbCAtLWNyZWF0ZS1kaXJzIC1vICRIT01FLy5tMi9zZXR0aW5ncy54bWwgaHR0cHM6Ly9tYXZlbi5qb2huaTA3MDIuZGUvY29uZmlnL21hdmVuCiAgICAgIC0gLi9ncmFkbGV3IDpidWlsZAogIGFyY2hpdmU6CiAgICBpbWFnZTogcGx1Z2lucy9zMwogICAgYWNsOiBwdWJsaWMtcmVhZAogICAgcmVnaW9uOiAidXMtZWFzdC0xIgogICAgYnVja2V0OiAicmVwbGF5bW9kIgogICAgcGF0aF9zdHlsZTogdHJ1ZQogICAgc291cmNlOiBidWlsZC9saWJzLyoKICAgIHN0cmlwX3ByZWZpeDogYnVpbGQvbGlicy8KICAgIHRhcmdldDogLwo.Z6rpaLplJKQ4pzB8AjCnplgci42qEu7L4LeS0fGm4SY
|
||||||
51
build.gradle
51
build.gradle
@@ -200,6 +200,57 @@ setupDecompWorkspace.dependsOn copySrg
|
|||||||
setupDevWorkspace.dependsOn copySrg
|
setupDevWorkspace.dependsOn copySrg
|
||||||
project.tasks.idea.dependsOn copySrg
|
project.tasks.idea.dependsOn copySrg
|
||||||
|
|
||||||
|
|
||||||
|
import org.objectweb.asm.*
|
||||||
|
|
||||||
|
import java.util.zip.ZipEntry
|
||||||
|
import java.util.zip.ZipFile
|
||||||
|
import java.util.zip.ZipOutputStream
|
||||||
|
|
||||||
|
import static org.objectweb.asm.Opcodes.ASM5
|
||||||
|
|
||||||
|
// MC binaries were complied with a java version that produces invalid class files under certain circumstances
|
||||||
|
// This causes setupCIWorkspace to be insufficient for compiling.
|
||||||
|
// Related JDK bug: https://bugs.openjdk.java.net/browse/JDK-8066725
|
||||||
|
// As a workaround, to use setupCIWorkspace on Drone, we modify the bin jar in-place and remove all parameter annotations.
|
||||||
|
// WARNING: This piece of code ignores any and all gradle conventions and will probably fail horribly when run outside
|
||||||
|
// of a single-use environment (e.g. Drone). Use setupDecompWorkspace for normal use.
|
||||||
|
tasks.deobfMcMCP.doLast {
|
||||||
|
println "Applying RuntimeInvisibleParameterAnnotations workaround..."
|
||||||
|
File jar = getOutJar()
|
||||||
|
File tmp = new File((File) getTemporaryDir(), "workaround.jar")
|
||||||
|
tmp.withOutputStream {
|
||||||
|
new ZipOutputStream(it).withStream { dst ->
|
||||||
|
new ZipFile(jar).withCloseable { src ->
|
||||||
|
src.entries().each {
|
||||||
|
if (it.name.startsWith("net/minecraft/") && it.name.endsWith(".class")) {
|
||||||
|
def cw = new ClassWriter(0)
|
||||||
|
def cv = new ClassVisitor(ASM5, cw) {
|
||||||
|
@Override
|
||||||
|
MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
|
||||||
|
return new MethodVisitor(ASM5, cv.visitMethod(access, name, desc, signature, exceptions)) {
|
||||||
|
@Override
|
||||||
|
AnnotationVisitor visitParameterAnnotation(int parameter, String pdesc, boolean visible) {
|
||||||
|
return null // Strip all parameter annotations
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
new ClassReader(src.getInputStream(it)).accept(cv, 0)
|
||||||
|
dst.putNextEntry(new ZipEntry(it.name))
|
||||||
|
dst.write(cw.toByteArray())
|
||||||
|
} else {
|
||||||
|
dst.putNextEntry(it)
|
||||||
|
dst.write(src.getInputStream(it).bytes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
jar.delete()
|
||||||
|
tmp.renameTo(jar)
|
||||||
|
}
|
||||||
|
|
||||||
def generateVersionsJson() {
|
def generateVersionsJson() {
|
||||||
// List all tags
|
// List all tags
|
||||||
def stdout = new ByteArrayOutputStream()
|
def stdout = new ByteArrayOutputStream()
|
||||||
|
|||||||
Reference in New Issue
Block a user