This is an automated email from the ASF dual-hosted git repository.

kou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/main by this push:
     new 5127ef0369 GH-40082: [CI][C++] Add a job on ARM64 macOS (#40456)
5127ef0369 is described below

commit 5127ef0369e37cda05cbcfb545319ff52191668d
Author: Sutou Kouhei <[email protected]>
AuthorDate: Tue Mar 12 05:59:00 2024 +0900

    GH-40082: [CI][C++] Add a job on ARM64 macOS (#40456)
    
    ### Rationale for this change
    
    We can use GitHub hosted M1 macOS runner.
    
    ### What changes are included in this PR?
    
    * Add a job on macos-14
    * Update expected L2 CPU cache range to 32KiB-12MiB from 32KiB-8MiB because 
M1 macOS runner has 12MiB
    * Disable arrow-s3fs-test for now. It'll be fixed by GH-40410
    
    ### Are these changes tested?
    
    Yes.
    
    ### Are there any user-facing changes?
    
    No.
    * GitHub Issue: #40082
    
    Authored-by: Sutou Kouhei <[email protected]>
    Signed-off-by: Sutou Kouhei <[email protected]>
---
 .github/workflows/cpp.yml          | 22 +++++++++++++++-------
 ci/scripts/cpp_test.sh             |  3 +++
 ci/scripts/install_minio.sh        |  1 +
 cpp/src/arrow/util/io_util_test.cc |  2 +-
 4 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/.github/workflows/cpp.yml b/.github/workflows/cpp.yml
index e9409f1cd6..a48b5aafab 100644
--- a/.github/workflows/cpp.yml
+++ b/.github/workflows/cpp.yml
@@ -181,10 +181,18 @@ jobs:
           docker-compose run --rm minimal
 
   macos:
-    name: AMD64 macOS 12 C++
-    runs-on: macos-latest
+    name: ${{ matrix.architecture }} macOS ${{ matrix.macos-version }} C++
+    runs-on: macos-${{ matrix.macos-version }}
     if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
     timeout-minutes: 75
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - architecture: AMD64
+            macos-version: "12"
+          - architecture: ARM64
+            macos-version: "14"
     env:
       ARROW_AZURE: ON
       ARROW_BUILD_TESTS: ON
@@ -193,7 +201,7 @@ jobs:
       ARROW_GANDIVA: ON
       ARROW_GCS: ON
       ARROW_HDFS: ON
-      ARROW_HOME: /usr/local
+      ARROW_HOME: /tmp/local
       ARROW_JEMALLOC: ON
       ARROW_ORC: ON
       ARROW_PARQUET: ON
@@ -225,11 +233,11 @@ jobs:
       - name: Install MinIO
         run: |
           $(brew --prefix bash)/bin/bash \
-            ci/scripts/install_minio.sh latest /usr/local
+            ci/scripts/install_minio.sh latest ${ARROW_HOME}
       - name: Set up Python
         uses: actions/setup-python@v5
         with:
-          python-version: 3.9
+          python-version: 3.12
       - name: Install Google Cloud Storage Testbench
         run: ci/scripts/install_gcs_testbench.sh default
       - name: Install Azurite Storage Emulator
@@ -245,8 +253,8 @@ jobs:
         uses: actions/cache@v4
         with:
           path: ${{ steps.ccache-info.outputs.cache-dir }}
-          key: cpp-ccache-macos-${{ hashFiles('cpp/**') }}
-          restore-keys: cpp-ccache-macos-
+          key: cpp-ccache-macos-${{ matrix.macos-version }}-${{ 
hashFiles('cpp/**') }}
+          restore-keys: cpp-ccache-macos-${{ matrix.macos-version }}-
       - name: Build
         run: |
           ci/scripts/cpp_build.sh $(pwd) $(pwd)/build
diff --git a/ci/scripts/cpp_test.sh b/ci/scripts/cpp_test.sh
index a23ea8eb1c..f388825fd0 100755
--- a/ci/scripts/cpp_test.sh
+++ b/ci/scripts/cpp_test.sh
@@ -49,6 +49,9 @@ case "$(uname)" in
     ;;
   Darwin)
     n_jobs=$(sysctl -n hw.ncpu)
+    # TODO: https://github.com/apache/arrow/issues/40410
+    exclude_tests="arrow-s3fs-test"
+    ctest_options+=(--exclude-regex "${exclude_tests}")
     ;;
   MINGW*)
     n_jobs=${NUMBER_OF_PROCESSORS:-1}
diff --git a/ci/scripts/install_minio.sh b/ci/scripts/install_minio.sh
index e493a183b4..40762c9f32 100755
--- a/ci/scripts/install_minio.sh
+++ b/ci/scripts/install_minio.sh
@@ -71,6 +71,7 @@ download()
   local output=$1
   local url=$2
 
+  mkdir -p $(dirname ${output})
   if type wget > /dev/null 2>&1; then
     wget -nv --output-document ${output} ${url}
   else
diff --git a/cpp/src/arrow/util/io_util_test.cc 
b/cpp/src/arrow/util/io_util_test.cc
index 2599c92d82..d0569c7995 100644
--- a/cpp/src/arrow/util/io_util_test.cc
+++ b/cpp/src/arrow/util/io_util_test.cc
@@ -1065,7 +1065,7 @@ TEST(CpuInfo, Basic) {
   const auto l2 = ci->CacheSize(CpuInfo::CacheLevel::L2);
   const auto l3 = ci->CacheSize(CpuInfo::CacheLevel::L3);
   ASSERT_TRUE(l1 >= 4 * 1024 && l1 <= 512 * 1024) << "unexpected L1 size: " << 
l1;
-  ASSERT_TRUE(l2 >= 32 * 1024 && l2 <= 8 * 1024 * 1024) << "unexpected L2 
size: " << l2;
+  ASSERT_TRUE(l2 >= 32 * 1024 && l2 <= 12 * 1024 * 1024) << "unexpected L2 
size: " << l2;
   ASSERT_TRUE(l3 >= 256 * 1024 && l3 <= 1024 * 1024 * 1024)
       << "unexpected L3 size: " << l3;
   ASSERT_LE(l1, l2) << "L1 cache size " << l1 << " larger than L2 " << l2;

Reply via email to