diff --git a/dev/tasks/java-jars/github.yml b/dev/tasks/java-jars/github.yml index 763f5df5cd7..f3d1741559c 100644 --- a/dev/tasks/java-jars/github.yml +++ b/dev/tasks/java-jars/github.yml @@ -47,8 +47,8 @@ jobs: run: archery docker push java-jni-manylinux-2014 {% endif %} - build-cpp-macos: - name: Build C++ libraries macOS + build-cpp-macos-x86_64: + name: Build C++ libraries macOS x86_64 runs-on: macos-latest env: MACOSX_DEPLOYMENT_TARGET: "10.13" @@ -76,12 +76,53 @@ jobs: $GITHUB_WORKSPACE/arrow/cpp-build \ $GITHUB_WORKSPACE/arrow/java-dist - name: Compress into single artifact to keep directory structure - run: tar -cvzf arrow-shared-libs-macos.tar.gz arrow/java-dist/ + run: | + mkdir -p arrow/java-dist/x86_64 + mv arrow/java-dist/*.* arrow/java-dist/x86_64/ + tar -cvzf arrow-shared-libs-macos-x86_64.tar.gz arrow/java-dist/ - name: Upload artifacts uses: actions/upload-artifact@v2 with: - name: macos-shared-lib - path: arrow-shared-libs-macos.tar.gz + name: macos-shared-lib-x86_64 + path: arrow-shared-libs-macos-x86_64.tar.gz + + build-cpp-macos-arm64: + name: Build C++ libraries macOS arm64 + runs-on: ["self-hosted", "macOS", "arm64"] + env: + MACOSX_DEPLOYMENT_TARGET: "10.13" + steps: + {{ macros.github_checkout_arrow()|indent }} + - name: Install dependencies + run: | + brew install --overwrite git + brew bundle --file=arrow/cpp/Brewfile + # We want to link aws-sdk-cpp statically but Homebrew's + # aws-sdk-cpp provides only shared library. If we have + # Homebrew's aws-sdk-cpp, our build mix Homebrew's + # aws-sdk-cpp and bundled aws-sdk-cpp. We uninstall Homebrew's + # aws-sdk-cpp to ensure using only bundled aws-sdk-cpp. + brew uninstall aws-sdk-cpp + - name: Setup ccache + run: | + arrow/ci/scripts/ccache_setup.sh + - name: Build C++ libraries + run: | + set -e + arrow/ci/scripts/java_jni_macos_build.sh \ + $GITHUB_WORKSPACE/arrow \ + $GITHUB_WORKSPACE/arrow/cpp-build \ + $GITHUB_WORKSPACE/arrow/java-dist + - name: Compress into single artifact to keep directory structure + run: | + mkdir -p arrow/java-dist/aarch_64 + mv arrow/java-dist/*.* arrow/java-dist/aarch_64/ + tar -cvzf arrow-shared-libs-macos-arm64.tar.gz arrow/java-dist/ + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: macos-shared-lib-arm64 + path: arrow-shared-libs-macos-arm64.tar.gz build-cpp-windows: name: Build C++ libraries Windows @@ -118,7 +159,8 @@ jobs: runs-on: macos-latest needs: - build-cpp-ubuntu - - build-cpp-macos + - build-cpp-macos-x86_64 + - build-cpp-macos-arm64 - build-cpp-windows steps: {{ macros.github_checkout_arrow(fetch_depth=0)|indent }} @@ -126,34 +168,42 @@ jobs: uses: actions/download-artifact@v2 with: name: ubuntu-shared-lib - - name: Download macOS C++ libraries + - name: Download macOS x86_64 C++ libraries uses: actions/download-artifact@v2 with: - name: macos-shared-lib + name: macos-shared-lib-x86_64 - name: Download Windows C++ libraries uses: actions/download-artifact@v2 with: name: windows-shared-lib + - name: Download macOS arm64 C++ libraries + uses: actions/download-artifact@v2 + with: + name: macos-shared-lib-arm64 - name: Descompress artifacts run: | tar -xvzf arrow-shared-libs-linux.tar.gz - tar -xvzf arrow-shared-libs-macos.tar.gz + tar -xvzf arrow-shared-libs-macos-x86_64.tar.gz + tar -xvzf arrow-shared-libs-macos-arm64.tar.gz tar -xvzf arrow-shared-libs-windows.tar.gz - name: Test that shared libraries exist run: | set -x - test -f arrow/java-dist/libarrow_cdata_jni.dylib test -f arrow/java-dist/libarrow_cdata_jni.so test -f arrow/java-dist/arrow_cdata_jni.dll - test -f arrow/java-dist/libarrow_dataset_jni.dylib + test -f arrow/java-dist/x86_64/libarrow_dataset_jni.dylib + test -f arrow/java-dist/aarch_64/libarrow_dataset_jni.dylib test -f arrow/java-dist/libarrow_dataset_jni.so test -f arrow/java-dist/arrow_dataset_jni.dll - test -f arrow/java-dist/libarrow_orc_jni.dylib + test -f arrow/java-dist/x86_64/libarrow_orc_jni.dylib + test -f arrow/java-dist/aarch_64/libarrow_orc_jni.dylib test -f arrow/java-dist/libarrow_orc_jni.so test -f arrow/java-dist/arrow_orc_jni.dll - test -f arrow/java-dist/libgandiva_jni.dylib + test -f arrow/java-dist/x86_64/libgandiva_jni.dylib + test -f arrow/java-dist/aarch_64/libgandiva_jni.dylib test -f arrow/java-dist/libgandiva_jni.so - test -f arrow/java-dist/libplasma_java.dylib + test -f arrow/java-dist/x86_64/libplasma_java.dylib + test -f arrow/java-dist/aarch_64/libplasma_java.dylib test -f arrow/java-dist/libplasma_java.so - name: Build bundled jar run: | diff --git a/docker-compose.yml b/docker-compose.yml index 86e4c9fd61b..ce4911eb8e3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1008,10 +1008,10 @@ services: - ${DOCKER_VOLUME_PREFIX}python-wheel-manylinux2014-ccache:/ccache:delegated command: ["pip install -e /arrow/dev/archery && \ - /arrow/ci/scripts/java_jni_manylinux_build.sh /arrow /build /arrow/java-dist && \ + /arrow/ci/scripts/java_jni_manylinux_build.sh /arrow /build /arrow/java-dist/x86_64 && \ source /opt/rh/rh-maven35/enable && \ - /arrow/ci/scripts/java_build.sh /arrow /build /arrow/java-dist && \ - /arrow/ci/scripts/java_test.sh /arrow /build /arrow/java-dist"] + /arrow/ci/scripts/java_build.sh /arrow /build /arrow/java-dist/x86_64 && \ + /arrow/ci/scripts/java_test.sh /arrow /build /arrow/java-dist/x86_64"] ############################## Integration ################################# diff --git a/java/pom.xml b/java/pom.xml index c477b4d7970..6bcf3aeb604 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -1058,7 +1058,7 @@ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX=${arrow.dataset.jni.dist.dir} - -DCMAKE_PREFIX_PATH=${project.basedir}/../java-dist + -DCMAKE_PREFIX_PATH=${project.basedir}/../java-dist/${os.detected.arch} ../ @@ -1175,7 +1175,7 @@ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX=${arrow.dataset.jni.dist.dir} - -DCMAKE_PREFIX_PATH=${project.basedir}/../java-dist + -DCMAKE_PREFIX_PATH=${project.basedir}/../java-dist/${os.detected.arch} ../