diff --git a/native/build-support/build-all-linux-natives.sh b/native/build-support/build-all-linux-natives.sh index 0e182da6..4c2eb3ef 100755 --- a/native/build-support/build-all-linux-natives.sh +++ b/native/build-support/build-all-linux-natives.sh @@ -5,29 +5,44 @@ set -e # make sure we're in the correct directory - the top-level `native` directory cd "$(dirname "$0")/.." || exit 1 +# Use docker by default, falling back to podman. Set CONTAINER_ENGINE to pick one explicitly. +if [ -z "$CONTAINER_ENGINE" ]; then + if command -v docker > /dev/null 2>&1; then + CONTAINER_ENGINE=docker + elif command -v podman > /dev/null 2>&1; then + CONTAINER_ENGINE=podman + else + echo "Neither docker nor podman was found on PATH." >&2 + exit 1 + fi +fi + +echo "Using container engine: $CONTAINER_ENGINE" + ARCHS=(x86_64 aarch64) BASE_DOCKERFILE_VARIANTS=(ubuntu-focal ubuntu-jammy alpine) COMPRESSION_VARIANTS=(ubuntu-focal alpine) +# Build one image per (variant, arch). Passing several --platform flags to a single tagged build +# does not produce a multi-arch tag - only the last architecture keeps the tag, and the run below +# then sees a platform mismatch, treats the image as missing and tries to pull it from a registry. for variant in "${BASE_DOCKERFILE_VARIANTS[@]}"; do - docker_platforms="" for arch in "${ARCHS[@]}"; do - docker_platforms="$docker_platforms --platform linux/${arch}" + echo "Building base build image for $variant on $arch..." + $CONTAINER_ENGINE build -t velocity-native-build:$variant-$arch --platform linux/${arch} \ + -f build-support/$variant.Dockerfile . done - - echo "Building base build image for $variant..." - docker build -t velocity-native-build:$variant $docker_platforms -f build-support/$variant.Dockerfile . done for arch in "${ARCHS[@]}"; do for variant in "${BASE_DOCKERFILE_VARIANTS[@]}"; do echo "Building native crypto for $arch on $variant..." - docker run --rm -v "$(pwd)":/app --platform linux/${arch} velocity-native-build:$variant /bin/bash -c "cd /app && ./build-support/compile-linux-crypto.sh" + $CONTAINER_ENGINE run --rm --pull=never -v "$(pwd)":/app --platform linux/${arch} velocity-native-build:$variant-$arch /bin/bash -c "cd /app && ./build-support/compile-linux-crypto.sh" done for variant in "${COMPRESSION_VARIANTS[@]}"; do echo "Building native compression for $arch on $variant..." - docker run --rm -v "$(pwd)":/app --platform linux/${arch} velocity-native-build:$variant /bin/bash -c "cd /app && ./build-support/compile-linux-compress.sh" + $CONTAINER_ENGINE run --rm --pull=never -v "$(pwd)":/app --platform linux/${arch} velocity-native-build:$variant-$arch /bin/bash -c "cd /app && ./build-support/compile-linux-compress.sh" done -done \ No newline at end of file +done diff --git a/native/src/main/resources/linux_aarch64/velocity-cipher-ossl30x.so b/native/src/main/resources/linux_aarch64/velocity-cipher-ossl30x.so index 814b22a6..24ffa127 100755 Binary files a/native/src/main/resources/linux_aarch64/velocity-cipher-ossl30x.so and b/native/src/main/resources/linux_aarch64/velocity-cipher-ossl30x.so differ diff --git a/native/src/main/resources/linux_x86_64/velocity-cipher-ossl30x.so b/native/src/main/resources/linux_x86_64/velocity-cipher-ossl30x.so index 259b1b3f..1064f83c 100755 Binary files a/native/src/main/resources/linux_x86_64/velocity-cipher-ossl30x.so and b/native/src/main/resources/linux_x86_64/velocity-cipher-ossl30x.so differ diff --git a/native/src/main/resources/macos_arm64/velocity-cipher.dylib b/native/src/main/resources/macos_arm64/velocity-cipher.dylib index 552a6fd4..a3877605 100755 Binary files a/native/src/main/resources/macos_arm64/velocity-cipher.dylib and b/native/src/main/resources/macos_arm64/velocity-cipher.dylib differ diff --git a/native/src/main/resources/macos_arm64/velocity-compress.dylib b/native/src/main/resources/macos_arm64/velocity-compress.dylib index 5ccce7c8..f09f22ec 100755 Binary files a/native/src/main/resources/macos_arm64/velocity-compress.dylib and b/native/src/main/resources/macos_arm64/velocity-compress.dylib differ