# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # Usage # ----- # # The docker compose file is parametrized using environment variables, the # defaults are set in .env file. # # Example: # $ ARCH=arm64v8 docker compose build java # $ ARCH=arm64v8 docker compose run java volumes: ccache-cache: name: ccache-cache maven-cache: name: maven-cache services: ubuntu: # Build and test arrow-java on Ubuntu. # # Usage: # docker compose build ubuntu # docker compose run ubuntu # Parameters: # MAVEN: 3.9.9 # JDK: 17, 21 image: ${ARCH}/maven:${MAVEN}-eclipse-temurin-${JDK} volumes: - .:/arrow-java:delegated - ${DOCKER_VOLUME_PREFIX}maven-cache:/root/.m2:delegated command: /bin/bash -c " /arrow-java/ci/scripts/build.sh /arrow-java /build /jni && /arrow-java/ci/scripts/test.sh /arrow-java /build /jni" conda-jni-cdata: # Builds and tests just the C Data Interface JNI library and JARs. # (No dependencies on arrow-cpp.) # This build isn't meant for distribution. It's for testing only. # # Usage: # docker compose build conda-jni-cdata # docker compose run conda-jni-cdata # Parameters: # MAVEN: 3.9.9 # JDK: 17, 21 image: ${REPO}:${ARCH}-conda-java-${JDK}-maven-${MAVEN}-jni-integration build: context: . dockerfile: ci/docker/conda-jni.dockerfile cache_from: - ${REPO}:${ARCH}-conda-java-${JDK}-maven-${MAVEN}-jni-integration args: jdk: ${JDK} maven: ${MAVEN} # required to use micromamba with rootless docker # https://github.com/mamba-org/micromamba-docker/issues/407#issuecomment-2088523507 user: root volumes: - .:/arrow-java:delegated - ${DOCKER_VOLUME_PREFIX}maven-cache:/root/.m2:delegated environment: ARROW_JAVA_CDATA: "ON" command: /bin/bash -c " /arrow-java/ci/scripts/jni_build.sh /arrow-java /build/jni /build /jni && /arrow-java/ci/scripts/build.sh /arrow-java /build /jni && /arrow-java/ci/scripts/test.sh /arrow-java /build /jni" vcpkg-jni: # Builds all the JNI libraries, but not the JARs. # (Requires arrow-cpp.) # The artifacts from this build are meant to be used for packaging. # # Usage: # docker compose build vcpkg-jni # docker compose run vcpkg-jni image: ${REPO}:${ARCH}-vcpkg-jni-${VCPKG} build: context: . dockerfile: ci/docker/vcpkg-jni.dockerfile cache_from: - ${REPO}:${ARCH}-vcpkg-jni-${VCPKG} args: base: ${ARROW_REPO}:${ARCH}-cpp-jni-${VCPKG} volumes: - .:/arrow-java:delegated - ${ARROW_REPO_ROOT}:/arrow:delegated - ${DOCKER_VOLUME_PREFIX}ccache-cache:/ccache:delegated - ${DOCKER_VOLUME_PREFIX}maven-cache:/root/.m2:delegated environment: ARROW_JAVA_CDATA: "ON" CCACHE_DIR: "/ccache" command: ["git config --global --add safe.directory /arrow-java && \ /arrow-java/ci/scripts/jni_manylinux_build.sh /arrow-java /arrow /build/java /arrow-java/jni"]