Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Almalinux #364

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
102 changes: 102 additions & 0 deletions .github/workflows/almalinux-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
name: AlmaLinux CI

on:
push:
pull_request:
branches:
- master

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
container:
image: almalinux:9.5

steps:
- name: Install dependencies
run: |
dnf -y update
dnf -y --enablerepo=crb install epel-release
dnf -y --enablerepo=crb install \
lsb_release cmake git gcc g++ wget man make ninja-build \
bzip2-devel freeglut-devel libXext-devel libXt-devel libXpm-devel \
libXft-devel numactl-devel openmpi-devel zlib-devel lapack-devel \
blas-devel readline-devel sqlite-devel openssl-devel xz-devel \
libffi-devel findutils patch which perl-Digest-SHA \
xorg-x11-server-Xvfb fontconfig mesa-dri-drivers

- name: Start Xvfb
run: |
set -e
XVFBARGS=":99 -ac -screen 0 2560x1440x24"
/usr/bin/Xvfb $XVFBARGS >> /tmp/Xvfb.out 2>&1 &
disown -ar
sleep 3

- name: Set OSVERS
run: |
ID=$(grep -oP '(?<=^ID=).+' /etc/os-release | tr -d '"')
VERSION=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"')
echo "OSVERS=$ID-$VERSION" >> $GITHUB_ENV

- name: Cache pyenv
uses: actions/cache@v4
id: pyenv-cache
with:
path: ~/.pyenv
key: ${{ env.OSVERS }}-pyenv-3.9.1

- name: Install pyenv dependency
if: steps.pyenv-cache.outputs.cache-hit != 'true'
run: |
if [ ! -f "$HOME/.pyenv/bin/pyenv" ]; then
curl https://pyenv.run | bash
fi
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.9.1
pyenv shell 3.9.1

- name: Checkout BioDynaMo
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Cache Third Party Packages
uses: actions/cache@v4
with:
path: build/third_party
key: ${{ env.OSVERS }}-third-party-${{ hashFiles('cmake/external/SHA256Digests.cmake') }}

- name: Build BioDynaMo
shell: bash
run: |
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
pyenv shell 3.9.1
. /etc/profile.d/modules.sh || true
module load mpi
cmake -G Ninja \
-Dparaview=OFF \
-Dbenchmark=ON \
-Dlibgit2=ON \
-Dnuma=OFF \
-DCMAKE_BUILD_TYPE=Release \
-B build
cmake --build build --parallel --config Release

- name: Unit tests BioDynaMo
shell: bash
working-directory: build
run: |
. bin/thisbdm.sh
bdm config
export DISPLAY=:99.0
sleep 3
ninja run-unit-tests
161 changes: 161 additions & 0 deletions .github/workflows/almalinux-system-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
# Runs the installation tests and valgrind tests in the following cases:
# 1) every day at 3 am
# 2) a pull request to the master branch

name: AlmaLinux System CI

on:
schedule:
# Every day at 3 am
- cron: '0 3 * * *'
pull_request:
# Upon pull requests
branches:
- master

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
container:
image: almalinux:9.5

steps:
- name: Set GHA_BRANCH_NAME
run: |
if [ "${{ github.event_name }}" = "pull_request" ]; then
echo "GHA_BRANCH_NAME=${{ github.head_ref }}" >> $GITHUB_ENV
fi
if [ "${{ github.event_name }}" = "schedule" ]; then
echo "GHA_BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
fi

- name: Set OSVERS
run: |
ID=$(grep -oP '(?<=^ID=).+' /etc/os-release | tr -d '"')
VERSION=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"')
echo "OSVERS=$ID-$VERSION" >> $GITHUB_ENV

# Do this prior to checkout BioDynaMo, because the AlmaLinux docker
# container does not come with git preinstalled. This would mess
# up later calls to
# `git describe --tags`
- name: Install latest version of git
shell: bash
run: |
dnf -y --enablerepo=crb install git

- name: Start Xvfb
run: |
set -e
dnf -y install xorg-x11-server-Xvfb
XVFBARGS=":99 -ac -screen 0 2560x1440x24"
/usr/bin/Xvfb $XVFBARGS >> /tmp/Xvfb.out 2>&1 &
disown -ar
sleep 3

- name: Install BioDynaMo
shell: bash
run: |
dnf update -y
dnf install -y --allowerasing sudo curl
curl https://raw.githubusercontent.com/BioDynaMo/biodynamo/${GHA_BRANCH_NAME}/util/install | bash
# remove whole BioDynaMo repository to catch errors related to paths pointing into the build dir
mktemp -d
find /tmp -iname biodynamo -type d || true
rm -rf $(find $(mktemp -d)/../* -maxdepth 1 -iname biodynamo -type d 2>/dev/null)
echo "Removed"
find /tmp -iname biodynamo -type d || true

- name: Checkout BioDynaMo
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set INSTALL_DIR
run: |
if [ "${{ github.event_name }}" = "pull_request" ]; then
echo "INSTALL_DIR=${GITHUB_WORKSPACE}/build" >> $GITHUB_ENV
fi
if [ "${{ github.event_name }}" = "schedule" ]; then
echo "INSTALL_DIR=$(echo ${HOME}/biodynamo-*)" >> $GITHUB_ENV
fi

- name: Cache pyenv
uses: actions/cache@v4
id: pyenv-cache
with:
path: ~/.pyenv
key: ${{ env.OSVERS }}-pyenv-3.9.1

- name: Install pyenv dependency
if: steps.pyenv-cache.outputs.cache-hit != 'true'
run: |
if [ ! -f "$HOME/.pyenv/bin/pyenv" ]; then
curl https://pyenv.run | bash
fi
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
if [ ! -f "$HOME/.pyenv/versions/3.9.1/lib/libpython3.so" ]; then
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.9.1
fi
pyenv shell 3.9.1

- name: Cache Third Party Packages
uses: actions/cache@v4
with:
path: build/third_party
key: ${{ env.OSVERS }}-third-party-${{ hashFiles('cmake/external/SHA256Digests.cmake') }}

- name: Build BioDynaMo
shell: bash
run: |
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
pyenv shell 3.9.1
. /etc/profile.d/modules.sh || true
module load mpi
cmake \
-Dparaview=OFF \
-Dbenchmark=ON \
-Dsbml=OFF \
-Dnuma=OFF \
-Dlibgit2=OFF \
-DCMAKE_BUILD_TYPE=Release \
-B build
cmake --build build --config Release

# # Don't do this in the `Build BioDynaMo step`, because notebooks might time out in GHA
# # runners, while waiting for other targets to be compiled
# - name: Run notebooks
# shell: bash
# run: |
# export PATH="$HOME/.pyenv/bin:$PATH"
# eval "$(pyenv init --path)"
# eval "$(pyenv init -)"
# pyenv shell 3.9.1
# . /etc/profile.d/modules.sh || true
# module load mpi
# cmake \
# -Dnotebooks=ON \
# -B build
# cmake --build build --config Release --target notebooks -- -j1

- name: Run system tests
shell: bash
working-directory: build
run: |
dnf install -y xorg-x11-server-Xvfb fontconfig mesa-dri-drivers
. $INSTALL_DIR/bin/thisbdm.sh
git config --system user.name "Test User"
git config --system user.email user@test.com
export DISPLAY=:99.0
biodynamo new test-sim
. ../test/util.inc
run_cmake_simulation test-sim
make run-demos
25 changes: 19 additions & 6 deletions cmake/external/ROOT.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,25 @@ if(APPLE)
elseif("${DETECTED_OS_VERS}" MATCHES "^osx-11")
message(FATAL_ERROR "We officially only support the latest macOS 11 versions 11.6, 11.7.")
endif()
#else()
#if("${DETECTED_OS_VERS}" MATCHES "^ubuntu-23" AND
#"${DETECTED_ARCH}" STREQUAL "aarch64")
#set(ROOT_SHA_KEY ubuntu-23.04-${DETECTED_ARCH}-ROOT)
#set(ROOT_TAR_FILE root_v6.30.02_cxx17_python3.9_ubuntu-23.04-${DETECTED_ARCH}.tar.gz)
# endif()
else()
if("${DETECTED_OS_VERS}" MATCHES "^ubuntu-24")
if("${DETECTED_ARCH}" STREQUAL "aarch64")
set(ROOT_SHA_KEY ubuntu-24.04-${DETECTED_ARCH}-ROOT)
set(ROOT_TAR_FILE root_v6.32.08_cxx17_python3.12_ubuntu-24.04-${DETECTED_ARCH}.tar.gz)
else()
set(ROOT_SHA_KEY ubuntu-24.04-ROOT)
set(ROOT_TAR_FILE root_v6.32.08_cxx17_python3.12_ubuntu-24.04.tar.gz)
endif()
endif()
if("${DETECTED_OS_VERS}" MATCHES "^almalinux-9")
if("${DETECTED_ARCH}" STREQUAL "aarch64")
set(ROOT_SHA_KEY almalinux-9-${DETECTED_ARCH}-ROOT)
set(ROOT_TAR_FILE root_v6.32.08_cxx17_python3.9_almalinux-9-${DETECTED_ARCH}.tar.gz)
else()
set(ROOT_SHA_KEY almalinux-9-ROOT)
set(ROOT_TAR_FILE root_v6.32.08_cxx17_python3.9_almalinux-9.tar.gz)
endif()
endif()
endif()
set(ROOT_SHA ${${ROOT_SHA_KEY}})

Expand Down
6 changes: 4 additions & 2 deletions cmake/external/SHA256Digests.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -108,11 +108,13 @@ SET(ubuntu-22.04-ParaView afc803835973fdb8b963fe10eaf1103f2e1650e4573141964c1322
SET(ubuntu-22.04-Qt b2388d1bcca4e3741ab5b2b0fb95395aeb6c448951a0d3cdeb6db33b64a7d41c)
SET(ubuntu-22.04-ROOT 24921a85b53c5cfbe9f192e523263781d595c59c9c553818349992e61efc64ac)

SET(ubuntu-23.04-aarch64-ROOT 7d2fcaaeb1e452c38c1d8436288e3171d1b6935f5b6f25d5df16b21e00ca45d8)
SET(ubuntu-23.10-aarch64-ROOT 8f6fa9db579e011ef4ae7e96830d8ab1284b6df95a1b2f46e6a1cea56fd4626f)
SET(ubuntu-24.04-ROOT xxx)
SET(ubuntu-24.04-aarch64-ROOT xxx)

SET(centos-7-Libroadrunner a0b49487a28aedc4b909a71c66263d4a388964008e2b23073dd744231251470c)
SET(centos-7-ParaView 45d545e75baf32c9fe30944781b4f6b172d4efd7d6cd794dcd19ec671cc5ead0)
SET(centos-7-Qt 4308621ff9ec84585c3aead92a9d2de787b3c700323333b6e78ed45d04a0d2a4)
SET(centos-7-ROOT 54298aa5f13dc2942925c10d755768f81f53d7135ac1a3e698e9b7ef1a3dfd1e)

SET(almalinux-9-ROOT xxx)
SET(almalinux-9-aarch64-ROOT xxx)
21 changes: 15 additions & 6 deletions cmake/utils.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,11 @@
# -----------------------------------------------------------------------------

# Detect the system flavour and version. Generate variables
# called DETECTED_OS (ubuntu-18.04, ubuntu-20.04, centos-7, osx)
# and DETECTED_OS_VERS (ubuntu-18.04, ubuntu-20.04, centos-7 or osx-11.2-i386).
# called DETECTED_OS (ubuntu-18.04, ubuntu-20.04, almalinux-9, osx)
# and DETECTED_OS_VERS (ubuntu-18.04, ubuntu-20.04, almalinux-9 or
# osx-11.2-i386).
# In case the Linux arch is aarch64, the DETECTED_OS_VERS ends in -aarch64,
# like ubuntu-23.10-aarch64. For backward compatibility reasons we don't
# like ubuntu-24.04-aarch64. For backward compatibility reasons we don't
# add -x86_64.
function(detect_os)
if(APPLE)
Expand All @@ -32,12 +33,20 @@ function(detect_os)
else()
set(GET_OS_ID "echo $(grep -oP '(?<=^ID=).+' /etc/os-release | tr -d '\"')")
set(GET_OS_VERSION "echo $(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '\"')")
set(GET_ALMA_OS_VERSION "echo $(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '\"' | cut -d . -f 1)")
execute_process(COMMAND bash -c "${GET_OS_ID}"
OUTPUT_VARIABLE DISTRO_NAME
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND bash -c "${GET_OS_VERSION}"
OUTPUT_VARIABLE DISTRO_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
if("${DISTRO_NAME}" STREQUAL "almalinux")
# strip of minor version number 9.5 -> 9
execute_process(COMMAND bash -c "${GET_ALMA_OS_VERSION}"
OUTPUT_VARIABLE DISTRO_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
else()
execute_process(COMMAND bash -c "${GET_OS_VERSION}"
OUTPUT_VARIABLE DISTRO_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
execute_process(COMMAND arch
OUTPUT_VARIABLE DISTRO_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
set(BDM_OS "${DISTRO_NAME}-${DISTRO_VERSION}")
Expand Down
Loading
Loading