Skip to content

Commit

Permalink
Port to almalinux-9 and ubuntu-24.04.
Browse files Browse the repository at this point in the history
  • Loading branch information
FonsRademakers committed Dec 21, 2024
1 parent d795274 commit ce25979
Show file tree
Hide file tree
Showing 14 changed files with 243 additions and 48 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/almalinux-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
build:
runs-on: ubuntu-latest
container:
image: almalinux:9.3
image: almalinux:9.5

steps:
- name: Install dependencies
Expand All @@ -26,7 +26,7 @@ jobs:
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 \
libffi-devel findutils patch which perl-Digest-SHA \
xorg-x11-server-Xvfb fontconfig mesa-dri-drivers
- name: Start Xvfb
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/almalinux-system-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
build:
runs-on: ubuntu-latest
container:
image: almalinux:9.3
image: almalinux:9.5

steps:
- name: Set GHA_BRANCH_NAME
Expand Down
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
8 changes: 4 additions & 4 deletions cmake/external/SHA256Digests.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -108,13 +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.3-ROOT 9231fdebcce4794623bfa4f703ad7ba51da01acf6ed3ccfa8fe65bf26e5958ef)
SET(almalinux-9.3-aarch64-ROOT f72e4abbfcaeca16cba862310d4dada2d6a7eda16e1044bcdaea9321e50ae48a)
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
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
#
# -----------------------------------------------------------------------------

FROM almalinux:9.3
FROM almalinux:9.5

# workaround for https://github.com/containers/buildah/issues/1046
RUN echo "" >> /etc/hosts && cat /etc/hosts && yum -y install setup
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,7 @@ libffi-devel
findutils
patch
which
perl-Digest-SHA
xorg-x11-server-Xvfb
fontconfig
mesa-dri-drivers
Original file line number Diff line number Diff line change
Expand Up @@ -34,38 +34,14 @@ sudo dnf -y update
# Install required packages
sudo dnf -y --enablerepo=crb install epel-release
sudo dnf -y --enablerepo=crb install \
$(cat $BDM_PROJECT_DIR/util/installation/almalinux-9.3/package_list_required)

if [ -n "${PYENV_ROOT}" ]; then
unset PYENV_ROOT
fi

# If PyEnv is not installed, install it
if [ ! -f "$HOME/.pyenv/bin/pyenv" ]; then
echo "PyEnv was not found. Installing now..."
curl https://pyenv.run | bash
fi
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
pyenv update

PYVERS=3.9.1

# If Python $PYVERS is not installed, install it
if [ ! -f "$HOME/.pyenv/versions/$PYVERS/lib/libpython3.so" ]; then
echo "Python $PYVERS was not found. Installing now..."
/usr/bin/env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install -f $PYVERS
fi
pyenv shell $PYVERS
$(cat $BDM_PROJECT_DIR/util/installation/almalinux-9/package_list_required)

# Install optional packages
if [ $1 == "all" ]; then
python -m pip install --upgrade pip
python3 -m pip install --upgrade pip
PIP_PACKAGES="markupsafe==2.0.1 nbformat jupyter metakernel jupyterlab nbformat==5.4.0 nbconvert==6.5.3 nbclient==0.6.6"
# Don't install --user: the packages should end up in the PYENV_ROOT directory
python -m pip install $PIP_PACKAGES
python3 -m pip install $PIP_PACKAGES
# SBML integration
#sudo bash -c 'cat << EOF > /etc/yum.repos.d/springdale-7-SCL.repo
#[SCL-core]
Expand All @@ -76,7 +52,7 @@ if [ $1 == "all" ]; then
#gpgkey=http://springdale.math.ias.edu/data/puias/7.6/x86_64/os/RPM-GPG-KEY-puias
#EOF'
sudo dnf -y --enablerepo=crb install --nogpgcheck \
$(cat $BDM_PROJECT_DIR/util/installation/almalinux-9.3/package_list_extra)
$(cat $BDM_PROJECT_DIR/util/installation/almalinux-9/package_list_extra)
fi

exit 0
50 changes: 50 additions & 0 deletions util/installation/ubuntu-24.04/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# -----------------------------------------------------------------------------
#
# Copyright (C) 2021 CERN & University of Surrey for the benefit of the
# BioDynaMo collaboration. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#
# See the LICENSE file distributed with this work for details.
# See the NOTICE file distributed with this work for additional information
# regarding copyright ownership.
#
# -----------------------------------------------------------------------------

FROM ubuntu:24.04

# man required by ROOT
RUN apt-get update && apt-get install -y \
git \
sudo \
man \
software-properties-common \
wget \
xvfb

# This will avoid tzdata package from requesting user interaction (tzdata is a
# dependency of one of the prerequisites of PyEnv)
RUN if ! [ -L /etc/localtime ]; then \
sudo ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime; \
fi

RUN git config --system user.name "Test User" && \
git config --system user.email user@test.com

# update user id and group id such that mapped volumes can be accessed with the
# same rights as on the host. Files created by the container can also be
# accessed on the host without chowning.
ARG HOST_UID
ARG HOST_GID

RUN groupadd -g $HOST_GID testuser && \
useradd -u $HOST_UID -g $HOST_GID -m -c "Testuser" testuser && \
passwd --delete testuser && \
echo "testuser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

USER testuser

# preserve the environment variable BDM_LOCAL_LFS when calling scripts with
# sudo
RUN echo "Defaults env_keep += \"BDM_LOCAL_LFS\"" | sudo tee -a /etc/sudoers
11 changes: 11 additions & 0 deletions util/installation/ubuntu-24.04/package_list_extra
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
clang
clang-format
clang-tidy
doxygen
graphviz
libxml2-dev
llvm-14
llvm-14-dev
llvm-14-runtime
valgrind
libgsl-dev
28 changes: 28 additions & 0 deletions util/installation/ubuntu-24.04/package_list_required
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
cmake
curl
freeglut3-dev
g++
gcc
git
libblas-dev
libbz2-dev
liblapack-dev
libnuma-dev
libomp5
libomp-dev
libopenmpi-dev
libpthread-stubs0-dev
make
wget
zlib1g-dev

libbz2-dev
libffi-dev
liblzma-dev
libreadline-dev
libsqlite3-dev
libssl-dev
python3-openssl
tk-dev
xz-utils
zlib1g-dev
22 changes: 22 additions & 0 deletions util/installation/ubuntu-24.04/pip_packages.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
jupyter
jupyter-client
jupyter-console
jupyter-core
jupyter-events
jupyter-server
jupyter-server-terminals
jupyterlab
jupyterlab-pygments
jupyterlab-server
jupyterlab-widgets
metakernel
nbclassic
nbclient
nbconvert
nbformat
markupsafe
beautifulsoup4
ipython
traitlets
websocket-client
zipp
82 changes: 82 additions & 0 deletions util/installation/ubuntu-24.04/prerequisites.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
#!/bin/bash
# -----------------------------------------------------------------------------
#
# Copyright (C) 2021 CERN & University of Surrey for the benefit of the
# BioDynaMo collaboration. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#
# See the LICENSE file distributed with this work for details.
# See the NOTICE file distributed with this work for additional information
# regarding copyright ownership.
#
# -----------------------------------------------------------------------------

#This script installs the required packages
if [[ $# -ne 1 ]]; then
echo "ERROR: Wrong number of arguments.
Description:
This script installs the prerequisites of BioDynaMo, but not BioDynaMo
itself. Script install.sh installs both prerequisites and BioDynaMo.
Arguments:
<install_type> all/required. If all is specified, then this script
will install all the prerequisites."
exit 1
fi

BDM_PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../../.."

# Required to add Kitware ppa below
sudo apt-get update
sudo apt-get install apt-transport-https

# Add ppa for newer CMake version
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add -
CODENAME=$(grep -oP '(?<=^UBUNTU_CODENAME=).+' /etc/os-release | tr -d '"')
REPO="deb https://apt.kitware.com/ubuntu/ ${CODENAME} main"
sudo apt-add-repository "$REPO"

# Update
sudo apt-get update
sudo apt install -y cmake-data=3.22.1-1ubuntu1.22.04.1

# Install required packages
sudo apt-get install -y \
$(cat $BDM_PROJECT_DIR/util/installation/ubuntu-22.04/package_list_required)

if [ -n "${PYENV_ROOT}" ]; then
unset PYENV_ROOT
fi

# If PyEnv is not installed, install it
if [ ! -f "$HOME/.pyenv/bin/pyenv" ]; then
echo "PyEnv was not found. Installing now..."
curl https://pyenv.run | bash
fi

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
pyenv update

PYVERS=3.9.1

# If Python $PYVERS is not installed, install it
if [ ! -f "$HOME/.pyenv/versions/$PYVERS/lib/libpython3.so" ]; then
echo "Python $PYVERS was not found. Installing now..."
/usr/bin/env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install -f $PYVERS
fi
pyenv shell $PYVERS

# Install optional packages
if [ $1 == "all" ]; then
# Don't install --user: the packages should end up in the PYENV_ROOT directory
python -m pip install -r $BDM_PROJECT_DIR/util/installation/ubuntu-22.04/pip_packages.txt

sudo apt-get install -y \
$(cat $BDM_PROJECT_DIR/util/installation/ubuntu-22.04/package_list_extra)
fi

exit 0

0 comments on commit ce25979

Please sign in to comment.