build(arch): use build arch profiles for native dependency classification #371
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Welcome to Cryostat3! 👋
Before contributing, make sure you have:
main
branch[chore, ci, docs, feat, fix, test]
To recreate commits with GPG signature
git fetch upstream && git rebase --force --gpg-sign upstream/main
Fixes: #369
Description of the change:
Adds Maven build profiles for build arch (ex. amd64, arm64) and for including or excluding
epoll
.epoll
is used for Unix domain sockets, which we use inContainerDiscovery
for Docker/Podman API discovery of potential target containers.Motivation for the change:
Since the Netty
epoll
is a native dependency, ie contains compiled code rather than Java bytecode, the correct architecture for this dependency must be selected at build time to match the architecture of the machine that the container will run upon. Before this PR the dependency is hardcoded toamd64
, so container discovery cannot function on other architectures such asarm64
.How to manually test:
./mvnw -Dbuild.arch=arm64 ...
and re-run the smoketest. Docker/Podman discovery should also work here. See https://github.com/cryostatio/cryostat/pull/1548Still TODO: ensure that the upstream CI builds multiarch images with the correct
epoll
pulled in for each image within the multiarch manifest