diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake index bc3a3a2249d..63e2c036c9a 100644 --- a/cpp/cmake_modules/ThirdpartyToolchain.cmake +++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake @@ -4965,8 +4965,20 @@ macro(build_awssdk) set(AWSSDK_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/awssdk_ep-install") set(AWSSDK_INCLUDE_DIR "${AWSSDK_PREFIX}/include") + # The AWS SDK has a few warnings around shortening lengths + set(AWS_C_FLAGS "${EP_C_FLAGS}") + set(AWS_CXX_FLAGS "${EP_CXX_FLAGS}") + if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_ID STREQUAL + "Clang") + # Negate warnings that AWS SDK cannot build under + string(APPEND AWS_C_FLAGS " -Wno-error=shorten-64-to-32") + string(APPEND AWS_CXX_FLAGS " -Wno-error=shorten-64-to-32") + endif() + set(AWSSDK_COMMON_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS} + -DCMAKE_C_FLAGS=${AWS_C_FLAGS} + -DCMAKE_CXX_FLAGS=${AWS_CXX_FLAGS} -DCPP_STANDARD=${CMAKE_CXX_STANDARD} -DCMAKE_INSTALL_PREFIX=${AWSSDK_PREFIX} -DCMAKE_PREFIX_PATH=${AWSSDK_PREFIX} diff --git a/dev/tasks/r/github.macos.cran.yml b/dev/tasks/r/github.macos.cran.yml new file mode 100644 index 00000000000..33965988e21 --- /dev/null +++ b/dev/tasks/r/github.macos.cran.yml @@ -0,0 +1,82 @@ +# 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. + +{% import 'macros.jinja' as macros with context %} + +{{ macros.github_header() }} + +jobs: + macos-cran: + name: "macOS similar to CRAN" + runs-on: macOS-latest + strategy: + fail-fast: false + + steps: + {{ macros.github_checkout_arrow()|indent }} + + - name: Configure dependencies (macos) + run: | + brew install openssl + # disable sccache on macos as it times out for unknown reasons + # see GH-33721 + # brew install sccache + # remove cmake so that we can test our cmake downloading abilities + brew uninstall cmake + - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + # CRAN builders have the entire bin here added to the path. This sometimes + # includes things like GNU libtool which name-collide with what we expect + - name: Add R.framework/Resources/bin to the path + run: echo "/Library/Frameworks/R.framework/Resources/bin" >> $GITHUB_PATH + - name : Check whether libtool in R is used + run: | + if [ "$(which libtool)" != "/Library/Frameworks/R.framework/Resources/bin/libtool" ]; then + echo "libtool provided by R isn't found: $(which libtool)" + exit 1 + fi + - name: Install dependencies + uses: r-lib/actions/setup-r-dependencies@v2 + with: + cache: false # cache does not work on across branches + working-directory: arrow/r + extra-packages: | + any::rcmdcheck + any::sys + - name: Install + env: + _R_CHECK_CRAN_INCOMING_: false + CXX: "clang++ -mmacos-version-min=14.6" + CFLAGS: "-falign-functions=8 -g -O2 -Wall -pedantic -Wconversion -Wno-sign-conversion -Wstrict-prototypes" + CXXFLAGS: "-g -O2 -Wall -pedantic -Wconversion -Wno-sign-conversion" + NOT_CRAN: false + run: | + sccache --start-server || echo 'sccache not found' + cd arrow/r + R CMD INSTALL . --install-tests + - name: Run the tests + run: R -e 'if(tools::testInstalledPackage("arrow") != 0L) stop("There was a test failure.")' + - name: Dump test logs + run: cat arrow-tests/testthat.Rout* + if: failure() + - name: Save the test output + uses: actions/upload-artifact@v2 + with: + name: test-output + path: arrow-tests/testthat.Rout* + if: always() diff --git a/dev/tasks/tasks.yml b/dev/tasks/tasks.yml index a9da7eb2889..fe02fe9ce68 100644 --- a/dev/tasks/tasks.yml +++ b/dev/tasks/tasks.yml @@ -1319,6 +1319,10 @@ tasks: params: MATRIX: {{ "${{ matrix.r_image }}" }} + test-r-macos-as-cran: + ci: github + template: r/github.macos.cran.yml + test-r-arrow-backwards-compatibility: ci: github template: r/github.linux.arrow.version.back.compat.yml