Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
128 commits
Select commit Hold shift + click to select a range
df92778
Improvement: Add Mac OS CI workflow
spenke91 Mar 30, 2026
3346b84
First tests [run ci]
spenke91 Mar 30, 2026
c35e5f7
More tests [run ci]
spenke91 Mar 30, 2026
9e2ab80
More tests [run ci]
spenke91 Mar 30, 2026
06804de
More tests [run ci]
spenke91 Mar 30, 2026
bbe9221
More tests [run ci]
spenke91 Mar 30, 2026
0ff629f
More tests [run ci]
spenke91 Mar 30, 2026
580b68d
More tests [run ci]
spenke91 Mar 30, 2026
e922dd2
More tests [run ci]
spenke91 Mar 30, 2026
ebca3b7
More tests [run ci]
spenke91 Mar 30, 2026
53dafab
More tests [run ci]
spenke91 Mar 30, 2026
db6aef0
Try only parallel tests [run ci]
spenke91 Mar 31, 2026
121e61f
More tests [run ci]
spenke91 Mar 31, 2026
a5a987e
More tests [run ci]
spenke91 Mar 31, 2026
d1ebefa
More tests [run ci]
spenke91 Mar 31, 2026
6cdca1e
More tests [run ci]
spenke91 Mar 31, 2026
953c6d8
More tests [run ci]
spenke91 Mar 31, 2026
f8de27d
Add some debugging output
spenke91 Apr 13, 2026
66028ab
Merge remote-tracking branch 'origin/main' into impr_macos_CI
spenke91 Apr 13, 2026
6c2b055
More tests [run ci]
spenke91 Apr 13, 2026
39b3822
More tests [run ci]
spenke91 Apr 13, 2026
0a5ba72
Try to use homebrew MPI version [run ci]
spenke91 Apr 13, 2026
78dada2
Try to use homebrew MPI version [run ci]
spenke91 Apr 13, 2026
910ac96
Try to use homebrew MPI version [run ci]
spenke91 Apr 13, 2026
32a9d5b
Try to use homebrew MPI version [run ci]
spenke91 Apr 13, 2026
e98aaf3
Try two threads for debugging purposes [run ci]
spenke91 Apr 13, 2026
58e68ad
Try two threads for debugging purposes [run ci]
spenke91 Apr 13, 2026
8056387
Try two threads for debugging purposes [run ci]
spenke91 Apr 13, 2026
5ab8186
Try two threads for debugging purposes [run ci]
spenke91 Apr 13, 2026
4f775d8
Try oversubscribing via custom t8code mpi command [run ci]
spenke91 Apr 13, 2026
6063da0
Improvements [run ci]
spenke91 Apr 13, 2026
8a98f2d
Test deactivating FORTRAN part again [run ci]
spenke91 Apr 13, 2026
3569f5e
Add gcc [run ci]
spenke91 Apr 13, 2026
ffa170c
More tests [run ci]
spenke91 Apr 13, 2026
0577d9d
More tests [run ci]
spenke91 Apr 13, 2026
85c4083
Try with FORTRAN interface [run ci]
spenke91 Apr 13, 2026
84d2587
Try gfortran [run ci]
spenke91 Apr 13, 2026
e28d77c
Try gfortran [run ci]
spenke91 Apr 13, 2026
7a42669
Try gfortran [run ci]
spenke91 Apr 13, 2026
c045cf5
Try gfortran [run ci]
spenke91 Apr 13, 2026
157079c
Deactivate fortran part to check runtimes [run ci]
spenke91 Apr 14, 2026
32c75e6
Activate FORTRAN part again [run ci]
spenke91 Apr 15, 2026
b5b4a53
Activate FORTRAN part again [run ci]
spenke91 Apr 15, 2026
c19ae4f
Activate serial tests again [run ci]
spenke91 Apr 15, 2026
4117d29
Try to debug stalling test case [run ci]
spenke91 Apr 16, 2026
0d5cde0
Try to debug stalling test case [run ci]
spenke91 Apr 16, 2026
aaa56c1
Try to debug stalling test case [run ci]
spenke91 Apr 16, 2026
52a027a
Try to debug stalling test case [run ci]
spenke91 Apr 16, 2026
b9f9716
Try to debug stalling test case [run ci]
spenke91 Apr 16, 2026
679f76d
Try to debug stalling test case [run ci]
spenke91 Apr 16, 2026
9441542
Try to debug stalling test case [run ci]
spenke91 Apr 16, 2026
38a0869
Try to debug stalling test case [run ci]
spenke91 Apr 16, 2026
8e2daab
Try to debug stalling test case [run ci]
spenke91 Apr 16, 2026
7d3c49d
Try to debug stalling test case [run ci]
spenke91 Apr 16, 2026
63d0cc9
Move assertion out of loop [run ci]
spenke91 Apr 17, 2026
148c3b7
Merge remote-tracking branch 'origin/main' into impr_macos_CI
spenke91 Jun 11, 2026
55c2f4f
Revert some changes to origin/main
spenke91 Jun 11, 2026
6162722
Trying desperate stuff again
spenke91 Jun 11, 2026
4b99a33
Test Release mode instead of Debug
spenke91 Jun 11, 2026
1831194
Remove large-number section
spenke91 Jun 12, 2026
e31aa8c
Merge remote-tracking branch 'origin/main' into impr_macos_CI
spenke91 Jun 22, 2026
1847511
Trying to find code position causing failure
spenke91 Jun 22, 2026
fd5ff8f
Inner for loop
spenke91 Jun 22, 2026
2890c65
Only one inner iteration
spenke91 Jun 22, 2026
b558c56
Try further
spenke91 Jun 22, 2026
536b74d
Try uint32_t instead of uint64_t
spenke91 Jun 22, 2026
b8af151
Try stuff
spenke91 Jun 22, 2026
c50bb91
Try stuff
spenke91 Jun 22, 2026
d71be95
Try stuff
spenke91 Jun 22, 2026
0596fd4
Try manual inlining
spenke91 Jun 23, 2026
2a3b139
Try to identify error source
spenke91 Jun 23, 2026
ab5ef46
It is getting weird
spenke91 Jun 23, 2026
04b6450
It is getting weird
spenke91 Jun 23, 2026
ac4b483
Trying
spenke91 Jun 23, 2026
1e3da93
Trying
spenke91 Jun 23, 2026
cd28703
Desperation
spenke91 Jun 23, 2026
3c8db42
Desperation
spenke91 Jun 23, 2026
afaad8c
Desperation
spenke91 Jun 23, 2026
0a5ad98
Desperation
spenke91 Jun 23, 2026
23c6b62
Desperation
spenke91 Jun 23, 2026
d258356
Desperation
spenke91 Jun 23, 2026
7b6837a
Changed back to int64
spenke91 Jun 23, 2026
4888b81
Successively add lines
spenke91 Jun 23, 2026
e555ba0
Successively add lines
spenke91 Jun 23, 2026
b101ed2
Successively add lines
spenke91 Jun 23, 2026
c8247cc
Successively add lines
spenke91 Jun 23, 2026
716387a
Successively add lines
spenke91 Jun 23, 2026
c0d64aa
Successively add lines
spenke91 Jun 23, 2026
37dd5fa
Successively add lines
spenke91 Jun 23, 2026
1e5b7c4
Successively add lines
spenke91 Jun 23, 2026
ca73f55
Successively add lines
spenke91 Jun 23, 2026
54ed6e1
Successively add lines
spenke91 Jun 23, 2026
fc29388
Successively add lines
spenke91 Jun 24, 2026
08ca2b1
Successively add lines
spenke91 Jun 24, 2026
81a01a5
Successively add lines
spenke91 Jun 24, 2026
126692c
Successively add lines
spenke91 Jun 24, 2026
135d68c
Successively add lines
spenke91 Jun 24, 2026
091d984
Successively add lines
spenke91 Jun 24, 2026
518e79a
Merge remote-tracking branch 'origin/main' into impr_macos_CI
spenke91 Jul 21, 2026
8a43811
NULL?
spenke91 Jul 21, 2026
41dff5e
SCABORTF
spenke91 Jul 21, 2026
f70b8e2
Try logging
spenke91 Jul 21, 2026
6a0ac34
Whitespace error?
spenke91 Jul 21, 2026
e2d9d40
More verbose MPI output
spenke91 Jul 21, 2026
f6171bb
Try to run MPI
spenke91 Jul 22, 2026
6012f25
Try again
spenke91 Jul 22, 2026
a6668b8
4 procs
spenke91 Jul 22, 2026
3c485a7
oversubscribe
spenke91 Jul 22, 2026
57ced14
Try custom parallel command
spenke91 Jul 22, 2026
00616ad
Add brackets
spenke91 Jul 22, 2026
88c0276
Try whether it still works without env variables
spenke91 Jul 22, 2026
d6eb1cd
Try FORTRAN part
spenke91 Jul 22, 2026
4a5675e
Trying to clean up annoying test case
spenke91 Jul 22, 2026
e87de7e
Here we go again
spenke91 Jul 22, 2026
02c814d
Here we go again
spenke91 Jul 22, 2026
f8b3c94
Here we go again
spenke91 Jul 22, 2026
f003830
Here we go again
spenke91 Jul 22, 2026
a5a3abc
Here we go again
spenke91 Jul 24, 2026
b93539d
Add back test-level-specific stuff
spenke91 Jul 24, 2026
0655060
Try uint32_t again
spenke91 Jul 24, 2026
5dd7ae9
Add back assertion
spenke91 Jul 24, 2026
ad3e352
Back to uint64_t
spenke91 Jul 24, 2026
e3098c2
Here we go again
spenke91 Jul 24, 2026
8e9b264
Here we go again
spenke91 Jul 24, 2026
3aff63a
Here we go again
spenke91 Jul 24, 2026
f1c79b0
Try whether sum_0 is the problem
spenke91 Jul 24, 2026
27a5e57
Try fewer iterations
spenke91 Jul 24, 2026
e77b3e0
Giving up: Deactivate test for mac OS
spenke91 Jul 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
175 changes: 175 additions & 0 deletions .github/workflows/test_t8code_macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
name: CMake tests t8code on Mac OS


# This file is part of t8code.
# t8code is a C library to manage a collection (a forest) of multiple
# connected adaptive space-trees of general element types in parallel.
#
# Copyright (C) 2026 the developers
#
# t8code is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# t8code is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with t8code; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

# This workflow checks whether building and testing works on Mac OS.
# In the past, this meant that Mac-OS-specific problems in t8code became
# apparrent only in Trixi and T8Code.jl, where they are very hard and
# cumbersome to debug. This workflow is intended to avoid that by catching
# such problems as early as possible, i.e., within t8code's CI.
# not just all of t8code's remaining CI workflows rely
# To reduce runtime, (for now) only one configuration is run, that is, Debug mode
# with MPI, mesh handle, and Fortran interface. The main reason the external
# libraries (VTK, OpenCASCADE) are deactivated is that github's Mac OS runners
# do not use containers, meaning we would have to install the libraries in every
# single CI run (or cache them).

env:
DEBUG_CONFIG: "-O1"

on:
workflow_call:
# Note: To simplify adding more configurations of this workflow later, the MPI mode and the BUILD_TYPE
# are passed as input, although currently only MPI on and Debug mode are tested.
inputs:
MAKEFLAGS:
required: true
type: string
description: 'Make flags to use for compilation (like -j4)'
MPI:
required: true
type: string
description: 'Use MPI for compilation (ON/OFF)'
BUILD_TYPE:
required: true
type: string
description: 'Build type (Release/Debug)'
TEST_LEVEL:
required: true
type: string
description: 'Test level used for configuring (T8_TEST_LEVEL_FULL, T8_TEST_LEVEL_MEDIUM, or T8_TEST_LEVEL_BASIC)'
default: 'T8_TEST_LEVEL_FULL'

jobs:
t8code_cmake_tests:
#
# Container setup: To avoid unwanted side effects of gcc or mpich, an own Clang version of the
# t8-dependencies Docker image is used. Aside from some basic packages, it contains a manually built
# Clang version of OpenMPI.
timeout-minutes: 60
runs-on: macos-latest
steps:
#
# Part 1: Preparation
# -------------------------------------
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Update packages
run: brew update
- name: Install missing packages via Homebrew
run: |
brew install open-mpi ninja cmake googletest openssl
- name: Export correct OpenMPI path to environment variables
run: |
export OPENMPI_BIN="/opt/homebrew/opt/open-mpi/bin"
echo OPENMPI_BIN="$OPENMPI_BIN" >> $GITHUB_ENV
- name: Reinstall gfortran
run: brew reinstall gfortran
- name: Show gfortran version
run: $OPENMPI_BIN/mpifort --version
# which gfortran
# - name: Show Clang version
# run: clang --version
- name: Show mpicc version
run: $OPENMPI_BIN/mpicc --version
- name: Show mpiexec version
run: $OPENMPI_BIN/mpiexec --version
- name: MPI sanity check (should print hostname four times)
run: $OPENMPI_BIN/mpiexec --oversubscribe -n 4 hostname
- name: init submodules
run: git submodule init
- name: update submodules
run: git submodule update
- name: Get input vars
run: export MAKEFLAGS="${{ inputs.MAKEFLAGS }}"
&& export MPI="${{ inputs.MPI }}"
&& export BUILD_TYPE="${{ inputs.BUILD_TYPE }}"
&& echo MAKEFLAGS="$MAKEFLAGS" >> $GITHUB_ENV
&& echo MPI="$MPI" >> $GITHUB_ENV
&& echo BUILD_TYPE="$BUILD_TYPE" >> $GITHUB_ENV
#
# Part 2: Build t8code
# --------------------
# Define build config
- name: Set test level
run: export TEST_LEVEL_FLAG="-DT8CODE_TEST_LEVEL=${{ inputs.TEST_LEVEL }}"
&& echo TEST_LEVEL_FLAG="$TEST_LEVEL_FLAG" >> $GITHUB_ENV
- name: build config variables
run: |
export CONFIG_OPTIONS="-GNinja -DCMAKE_INSTALL_PREFIX=$(pwd)/install \
-DT8CODE_ENABLE_MPI=ON -DCMAKE_BUILD_TYPE=$BUILD_TYPE ${TEST_LEVEL_FLAG} -DCMAKE_C_FLAGS_DEBUG=${DEBUG_CONFIG} -DCMAKE_CXX_FLAGS_DEBUG=${DEBUG_CONFIG} \
-DT8CODE_BUILD_PEDANTIC=ON -DT8CODE_BUILD_WALL=ON -DT8CODE_BUILD_WERROR=OFF -DT8CODE_BUILD_WEXTRA=ON \
-DT8CODE_BUILD_FORTRAN_INTERFACE=ON -DT8CODE_BUILD_MESH_HANDLE=ON \
-DT8CODE_ENABLE_OCC=OFF -DT8CODE_ENABLE_VTK=OFF"
echo CONFIG_OPTIONS="$CONFIG_OPTIONS" >> $GITHUB_ENV
# Run cmake
# Note that DT8CODE_CUSTOM_PARALLEL_TEST_COMMAND is not included in $CONFIG_OPTIONS because of whitespace issues.
- name: echo cmake line
run: echo 'cmake ../ $CONFIG_OPTIONS -DT8CODE_CUSTOM_PARALLEL_TEST_COMMAND="mpirun --oversubscribe -np 4"'
- name: cmake
run: mkdir build && cd build && cmake ../ $CONFIG_OPTIONS -DT8CODE_CUSTOM_PARALLEL_TEST_COMMAND="mpirun --oversubscribe -np 4"
# On failure, upload logs
- name: OnFailUploadLog
if: failure()
uses: actions/upload-artifact@v7
with:
name: cmake_w_clang_and_ompi_${{ inputs.BUILD_TYPE }}_MPI_${{ inputs.MPI }}.log
path: build/CMakeFiles/CMakeOutput.log
# Build with ninja
- name: ninja
run: cd build && ninja $MAKEFLAGS
- name: ninja install
run: cd build && ninja install $MAKEFLAGS
#
# Part 3: Run t8code tests
# ------------------------
# - name: Manual test
# run: |
# cd build/test/t8_cmesh/
# ./t8_gtest_compute_first_element_serial
- name: serial tests (if MPI is enabled)
run: cd build && ctest -R _serial
if: ${{ inputs.MPI == 'ON' }}
- name: parallel tests (if MPI is enabled)
run: |
cd build
ctest -R _parallel
# env:
# # Note: These openmpi options are required to ensure stable runs in github workflows and avoid stalling.
# # In particular, they activate oversubscription and define the communication channels, here tcp (and self).
# OMPI_ALLOW_RUN_AS_ROOT: 1
# OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1
# OMPI_MCA_rmaps_base_oversubscribe: 1
# OMPI_MCA_btl: self,tcp
# OMPI_MCA_pml: ob1
if: ${{ inputs.MPI == 'ON' }}
- name: tests (if MPI is disabled)
run: cd build && ctest $MAKEFLAGS
if: ${{ inputs.MPI == 'OFF' }}
# On failure, upload logs
- name: OnFailUploadLog
if: failure()
uses: actions/upload-artifact@v7
with:
name: test-suite_w_clang_and_ompi_${{ inputs.BUILD_TYPE }}_MPI_${{ inputs.MPI }}.log
path: build/Testing/Temporary/LastTest.log
Loading
Loading