Skip to content

DecimalArray

DecimalArray #996

Workflow file for this run

name: Exotic architectures
on:
workflow_dispatch:
pull_request:
push:
branches: [main]
jobs:
build_job:
runs-on: ubuntu-22.04
name: Build on ${{ matrix.target.arch }} / ${{ matrix.target.distro }} / ${{ matrix.config.name }} / date-polyfill ${{ matrix.target.date-polyfill}}
strategy:
matrix:
target:
- { arch: armv6, distro: alpine_latest, date-polyfill: 'ON' }
- { arch: armv7, distro: alpine_latest, date-polyfill: 'ON' }
- { arch: aarch64, distro: alpine_latest, date-polyfill: 'ON' }
- { arch: aarch64, distro: alpine_latest, date-polyfill: 'OFF' }
- { arch: riscv64, distro: alpine_latest, date-polyfill: 'ON' }
- { arch: s390x, distro: alpine_latest, date-polyfill: 'ON' }
- { arch: s390x, distro: alpine_latest, date-polyfill: 'OFF' }
- { arch: ppc64le, distro: alpine_latest, date-polyfill: 'ON' }
- { arch: ppc64le, distro: alpine_latest, date-polyfill: 'OFF' }
config:
- { name: Debug }
- { name: Release }
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Checkout nanoarrow
uses: actions/checkout@v4
with:
repository: apache/arrow-nanoarrow
path: dependencies/tests/nanoarrow
- name: Get current date
id: date
uses: Kaven-Universe/github-action-current-date-time@v1
with:
format: "YYYY-MM-DD_HH-mm-ss-SSS"
- name: Cache builds
uses: actions/cache@v4
with:
key: ${{matrix.target.arch}}_${{matrix.target.distro}}_${{matrix.config.name}}_${{matrix.target.date-polyfill}}_ccache-${{ steps.date.outputs.time }}
path: ccache_cache
restore-keys: |
${{matrix.target.arch}}_${{matrix.target.distro}}_${{matrix.config.name}}_${{matrix.target.date-polyfill}}_ccache-
- uses: uraimo/run-on-arch-action@v2
name: Build artifact
id: build
with:
arch: ${{matrix.target.arch}}
distro: ${{matrix.target.distro}}
# Not required, but speeds up builds
githubToken: ${{github.token}}
setup: |
mkdir -p "${PWD}/artifacts"
mkdir -p "${PWD}/ccache_cache"
# Mount the artifacts directory as /artifacts
# Mount the ccache_cache directory as /ccache_cache
dockerRunArgs: |
--volume "${PWD}/artifacts:/artifacts" --volume "${PWD}/ccache_cache:/ccache_cache"
# The shell to run commands with in the container
shell: /bin/sh
# Install some dependencies in the container. This speeds up builds if
# you are also using githubToken. Any dependencies installed here will
# be part of the container image that gets cached, so subsequent
# builds don't have to re-install them. The image layer is cached
# publicly in your project's package repository, so it is vital that
# no secrets are present in the container state or logs.
install: |
case "${{matrix.target.distro}}" in
ubuntu*|bookworm)
apt-get update -q -y
apt-get install -q -y git cmake make doctest-dev libhowardhinnant-date-dev tzdata g++ ninja-build build-essential ccache
;;
fedora*)
dnf -y update
dnf -y groupinstall "Development Tools"
dnf -y install git which cmake make doctest-devel date date-devel tzdata gcc-c++ ninja-build ccache
;;
alpine*)
apk update
apk add git cmake make doctest-dev date-dev tzdata g++ samurai ccache
;;
esac
run: |
CCACHE_DIR=/ccache_cache
export CCACHE_DIR
export CCACHE_MAXSIZE=1G
CC=gcc
export CC
CXX=g++
export CXX
ROOT_DIR="${PWD}"
export ROOT_DIR
echo "Configure nanoarrow"
cd dependencies/tests/nanoarrow
cmake -G Ninja -B ./build \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_COMPILE_WARNING_AS_ERROR=FALSE \
-DCMAKE_C_STANDARD=17
echo "Build nanoarrow"
cmake --build ./build --target install
echo "Configuring sparrow"
cd $ROOT_DIR
cmake -G Ninja -Bbuild \
-DCMAKE_BUILD_TYPE:STRING=${{matrix.config.name}} \
-DUSE_DATE_POLYFILL=${{matrix.target.date-polyfill}} \
-DBUILD_TESTS=ON \
-DBUILD_EXAMPLES=ON \
-DUSE_LARGE_INT_PLACEHOLDERS=ON \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_COMPILER_LAUNCHER=ccache
cd build
echo "Building sparrow library"
cmake --build . --config ${{matrix.config.name}} --target sparrow
echo "Building sparrow tests"
cmake --build . --config ${{matrix.config.name}} --target test_sparrow_lib
echo "Running sparrow examples"
cmake --build . --config ${{matrix.config.name}} --target run_examples
echo "Running sparrow tests"
cmake --build . --config ${{matrix.config.name}} --target run_tests_with_junit_report
ccache --show-stats
- name: Upload test results
uses: actions/upload-artifact@v4
if: success() || failure()
with:
name: test_sparrow_lib_report_Linux_${{matrix.target.distro}}_${{matrix.target.arch}}_${{matrix.config.name}}_date-polyfill_${{matrix.target.date-polyfill}}
path: '**/test_sparrow_lib_report.xml'