Skip to content

GH-44703: [CI][MATLAB][Packaging] Update MATLAB CI and crossbow packaging workflows to build against MATLAB R2024b #19035

GH-44703: [CI][MATLAB][Packaging] Update MATLAB CI and crossbow packaging workflows to build against MATLAB R2024b

GH-44703: [CI][MATLAB][Packaging] Update MATLAB CI and crossbow packaging workflows to build against MATLAB R2024b #19035

Workflow file for this run

# 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.
name: MATLAB
on:
push:
branches:
- '**'
- '!dependabot/**'
tags:
- '**'
paths:
- '.github/workflows/matlab.yml'
- 'ci/scripts/matlab*.sh'
- 'matlab/**'
- 'cpp/src/arrow/**'
pull_request:
paths:
- '.github/workflows/matlab.yml'
- 'ci/scripts/matlab*.sh'
- 'matlab/**'
- 'cpp/src/arrow/**'
concurrency:
group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }}
cancel-in-progress: true
permissions:
contents: read
jobs:
ubuntu:
name: AMD64 Ubuntu 20.04 MATLAB
# Explicitly pin the Ubuntu version to 20.04 for the time being because:
#
# 1. The version of GLIBCXX shipped with Ubuntu 22.04 is not binary compatible
# with the GLIBCXX bundled with MATLAB R2023a. This is a relatively common
# issue.
#
# For example, see:
#
# https://www.mathworks.com/matlabcentral/answers/1907290-how-to-manually-select-the-libstdc-library-to-use-to-resolve-a-version-glibcxx_-not-found
#
# 2. The version of GLIBCXX shipped with Ubuntu 22.04 is not binary compatible with
# the version of GLIBCXX shipped with Debian 11. Several of the Arrow community
# members who work on the MATLAB bindings use Debian 11 locally for qualification.
# Using Ubuntu 20.04 eases development workflows for these community members.
#
# In the future, we can investigate adding support for building against more Linux (e.g. `ubuntu-22.04`) and MATLAB versions (e.g. R2023b).
runs-on: ubuntu-20.04
if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install ninja-build
run: sudo apt-get install ninja-build
- name: Install MATLAB
uses: matlab-actions/setup-matlab@v2
with:
release: R2024b
- name: Install ccache
run: sudo apt-get install ccache
- name: Setup ccache
shell: bash
run: ci/scripts/ccache_setup.sh
- name: ccache info
id: ccache-info
shell: bash
run: echo "cache-dir=$(ccache --get-config cache_dir)" >> $GITHUB_OUTPUT
- name: Cache ccache
uses: actions/cache@v4
with:
path: ${{ steps.ccache-info.outputs.cache-dir }}
key: matlab-ccache-ubuntu-${{ hashFiles('cpp/**', 'matlab/**') }}
restore-keys: matlab-ccache-ubuntu-
- name: Build MATLAB Interface
run: ci/scripts/matlab_build.sh $(pwd)
- name: Run MATLAB Tests
env:
# Add the installation directory to the MATLAB Search Path by
# setting the MATLABPATH environment variable.
MATLABPATH: matlab/install/arrow_matlab
uses: matlab-actions/run-tests@v2
with:
select-by-folder: matlab/test
strict: true
macos:
name: ${{ matrix.architecture }} macOS ${{ matrix.macos-version }} MATLAB
runs-on: macos-${{ matrix.macos-version }}
if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
strategy:
matrix:
include:
- architecture: AMD64
macos-version: "13"
- architecture: ARM64
macos-version: "14"
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install ninja-build
run: brew install ninja
- name: Install MATLAB
uses: matlab-actions/setup-matlab@v2
with:
release: R2024b
- name: Install ccache
run: brew install ccache
- name: Setup ccache
shell: bash
run: ci/scripts/ccache_setup.sh
- name: ccache info
id: ccache-info
shell: bash
run: echo "cache-dir=$(ccache --get-config cache_dir)" >> $GITHUB_OUTPUT
- name: Cache ccache
uses: actions/cache@v4
with:
path: ${{ steps.ccache-info.outputs.cache-dir }}
key: matlab-ccache-macos-${{ hashFiles('cpp/**', 'matlab/**') }}
restore-keys: matlab-ccache-macos-
- name: Build MATLAB Interface
run: ci/scripts/matlab_build.sh $(pwd)
- name: Run MATLAB Tests
env:
# Add the installation directory to the MATLAB Search Path by
# setting the MATLABPATH environment variable.
MATLABPATH: matlab/install/arrow_matlab
uses: matlab-actions/run-tests@v2
with:
select-by-folder: matlab/test
strict: true
windows:
name: AMD64 Windows 2022 MATLAB
runs-on: windows-2022
if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install MATLAB
uses: matlab-actions/setup-matlab@v2
with:
release: R2024b
- name: Download Timezone Database
shell: bash
run: ci/scripts/download_tz_database.sh
- name: Install ccache
shell: bash
run: ci/scripts/install_ccache.sh 4.6.3 /usr
- name: Setup ccache
shell: bash
run: ci/scripts/ccache_setup.sh
- name: ccache info
id: ccache-info
shell: bash
run: echo "cache-dir=$(ccache --get-config cache_dir)" >> $GITHUB_OUTPUT
- name: Cache ccache
uses: actions/cache@v4
with:
path: |
${{ steps.ccache-info.outputs.cache-dir }}
key: matlab-ccache-windows-${{ hashFiles('cpp/**', 'matlab/**') }}
restore-keys: matlab-ccache-windows-
- name: Build MATLAB Interface
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
bash -c "ci/scripts/matlab_build.sh $(pwd)"
- name: Run MATLAB Tests
env:
# Add the installation directory to the MATLAB Search Path by
# setting the MATLABPATH environment variable.
MATLABPATH: matlab/install/arrow_matlab
uses: matlab-actions/run-tests@v2
with:
select-by-folder: matlab/test
strict: true