quarkusio / quarkus

Quarkus: Supersonic Subatomic Java.
https://quarkus.io
Apache License 2.0
13.87k stars 2.71k forks source link

Check that no dependencies include native-image metadata #16062

Open Sanne opened 3 years ago

Sanne commented 3 years ago

Description

Library maintainers are now encouraged to add metadata for native-image within the jar files to improve the out-of-the-box experience on GraalVM native.

This is great as it will likely, on average, reduce the friction to adopt native-image in the larger ecosystem; however we've already witnessed that in some cases such metadata might be incompatible with flags from other libraries, or just have a different impact than what the original author intended.

My proposal is to introduce some assertions in our build to verify that no 3rd party library we depend on has any such metadata; that's not to say we want to ban them, but this is meant to make sure we actually notice when some apparently innocent version upgrade of a random library pulls in new flags on the classpath, so that we get a chance to investigate them and test them, and possibly apply corrective measures.

zakkak commented 3 years ago

:+1: https://github.com/quarkusio/quarkus/issues/16139 and https://github.com/quarkusio/quarkus/issues/15434 seem to be caused by such native-image metadata.

Detecting such metadata and overriding the offending parts with oracle/graal#3179 (expected to land in GraalVM 21.2.0 on Jul 20 2021) would be nice!

zakkak commented 2 years ago

FTR #29413 is also caused by such native-image metadata.