Skip to content

Commit b92cbc6

Browse files
committed
Exclude libsignal-client testing libraries
1 parent 68b7416 commit b92cbc6

File tree

3 files changed

+91
-4
lines changed

3 files changed

+91
-4
lines changed

build.gradle.kts

+38-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,41 @@ graalvmNative {
4646
}
4747
}
4848

49+
val artifactType = Attribute.of("artifactType", String::class.java)
50+
val minified = Attribute.of("minified", Boolean::class.javaObjectType)
4951
dependencies {
52+
attributesSchema {
53+
attribute(minified)
54+
}
55+
artifactTypes.getByName("jar") {
56+
attributes.attribute(minified, false)
57+
}
58+
}
59+
60+
configurations.runtimeClasspath.configure {
61+
attributes {
62+
attribute(minified, true)
63+
}
64+
}
65+
val excludePatterns = mapOf(
66+
"libsignal-client" to setOf(
67+
"libsignal_jni_testing_amd64.so",
68+
"signal_jni_testing_amd64.dll",
69+
"libsignal_jni_testing_amd64.dylib",
70+
"libsignal_jni_testing_aarch64.dylib",
71+
)
72+
)
73+
74+
dependencies {
75+
registerTransform(JarFileExcluder::class) {
76+
from.attribute(minified, false).attribute(artifactType, "jar")
77+
to.attribute(minified, true).attribute(artifactType, "jar")
78+
79+
parameters {
80+
excludeFilesByArtifact = excludePatterns
81+
}
82+
}
83+
5084
implementation(libs.bouncycastle)
5185
implementation(libs.jackson.databind)
5286
implementation(libs.argparse4j)
@@ -92,9 +126,11 @@ tasks.register("fatJar", type = Jar::class) {
92126
"META-INF/NOTICE*",
93127
"META-INF/LICENSE*",
94128
"META-INF/INDEX.LIST",
95-
"**/module-info.class"
129+
"**/module-info.class",
96130
)
97131
duplicatesStrategy = DuplicatesStrategy.WARN
98-
from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
132+
doFirst {
133+
from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
134+
}
99135
with(tasks.jar.get())
100136
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import org.gradle.api.artifacts.transform.*
2+
import org.gradle.api.file.FileSystemLocation
3+
import org.gradle.api.provider.Provider
4+
import org.gradle.api.tasks.Input
5+
import org.gradle.api.tasks.PathSensitive
6+
import org.gradle.api.tasks.PathSensitivity
7+
import java.io.File
8+
import java.io.FileInputStream
9+
import java.io.FileOutputStream
10+
import java.util.zip.ZipInputStream
11+
import java.util.zip.ZipOutputStream
12+
13+
@CacheableTransform
14+
abstract class JarFileExcluder : TransformAction<JarFileExcluder.Parameters> {
15+
interface Parameters : TransformParameters {
16+
@get:Input
17+
var excludeFilesByArtifact: Map<String, Set<String>>
18+
}
19+
20+
@get:PathSensitive(PathSensitivity.NAME_ONLY)
21+
@get:InputArtifact
22+
abstract val inputArtifact: Provider<FileSystemLocation>
23+
24+
override
25+
fun transform(outputs: TransformOutputs) {
26+
val fileName = inputArtifact.get().asFile.name
27+
for (entry in parameters.excludeFilesByArtifact) {
28+
if (fileName.startsWith(entry.key)) {
29+
val nameWithoutExtension = fileName.substring(0, fileName.lastIndexOf("."))
30+
excludeFiles(inputArtifact.get().asFile, entry.value, outputs.file("${nameWithoutExtension}.jar"))
31+
return
32+
}
33+
}
34+
outputs.file(inputArtifact)
35+
}
36+
37+
private fun excludeFiles(artifact: File, excludeFiles: Set<String>, jarFile: File) {
38+
ZipInputStream(FileInputStream(artifact)).use { input ->
39+
ZipOutputStream(FileOutputStream(jarFile)).use { output ->
40+
var entry = input.nextEntry
41+
while (entry != null) {
42+
if (!excludeFiles.contains(entry.name)) {
43+
output.putNextEntry(entry)
44+
input.copyTo(output)
45+
output.closeEntry()
46+
}
47+
48+
entry = input.nextEntry
49+
}
50+
}
51+
}
52+
}
53+
}

graalvm-config-dir/resource-config.json

-2
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,6 @@
188188
"pattern":"\\Qlibsignal_jni_amd64.dylib\\E"
189189
}, {
190190
"pattern":"\\Qlibsignal_jni_amd64.so\\E"
191-
}, {
192-
"pattern":"\\Qlibsignal_jni_testing_amd64.so\\E"
193191
}, {
194192
"pattern":"\\Qorg/asamk/signal/manager/config/ias.store\\E"
195193
}, {

0 commit comments

Comments
 (0)