Skip to content
Merged
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
2 changes: 1 addition & 1 deletion .github/scripts/install_cuda_ubuntu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ CPU_ARCH="x86_64"
PIN_FILENAME="cuda-ubuntu${UBUNTU_VERSION}.pin"
PIN_URL="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION}/${CPU_ARCH}/${PIN_FILENAME}"
# apt keyring package now available https://developer.nvidia.com/blog/updating-the-cuda-linux-gpg-repository-key/
KERYRING_PACKAGE_FILENAME="cuda-keyring_1.0-1_all.deb"
KERYRING_PACKAGE_FILENAME="cuda-keyring_1.1-1_all.deb"
KEYRING_PACKAGE_URL="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION}/${CPU_ARCH}/${KERYRING_PACKAGE_FILENAME}"
REPO_URL="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION}/${CPU_ARCH}/"

Expand Down
16 changes: 10 additions & 6 deletions .github/workflows/CMake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ jobs:
cuda_arch: "35"
hostcxx: gcc-9
os: ubuntu-22.04
python:
python:
- "3.8"
config:
- name: "Release"
config: "Release"
SEATBELTS: "ON"
VISUALISATION:
VISUALISATION:
- "OFF"
# 'default' or '' will not install cmake, otherwise provide a full semver version.
cmake:
Expand Down Expand Up @@ -95,7 +95,7 @@ jobs:
echo "CUDAHOSTCXX=/usr/bin/g++-${gcc_version}" >> $GITHUB_ENV

- name: Select Python
if: ${{ env.PYTHON != '' && env.FLAMEGPU_BUILD_PYTHON == 'ON' }}
if: ${{ env.PYTHON != '' && env.FLAMEGPU_BUILD_PYTHON == 'ON' }}
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON }}
Expand All @@ -110,8 +110,12 @@ jobs:
- name: Install Visualisation Dependencies
if: ${{ startswith(env.OS, 'ubuntu') && env.VISUALISATION == 'ON' }}
run: |
# Install ubuntu-24.04 packages
if [ "$OS" == 'ubuntu-24.04' ]; then
sudo apt-get install -y libglew-dev libfontconfig1-dev libsdl2-dev libdevil-dev libfreetype-dev
fi
# Install ubuntu-22.04 packages
if [ "$OS" == 'ubuntu-22.04' ]; then
if [ "$OS" == 'ubuntu-22.04' ]; then
sudo apt-get install -y libglew-dev libfontconfig1-dev libsdl2-dev libdevil-dev libfreetype-dev
fi

Expand Down Expand Up @@ -139,7 +143,7 @@ jobs:
cmake . -B "${{ env.BUILD_DIR }}"
-DCMAKE_BUILD_TYPE="${{ env.CONFIG }}"
-Werror=dev
-DCMAKE_WARN_DEPRECATED="OFF"
-DCMAKE_WARN_DEPRECATED="OFF"
-DFLAMEGPU_WARNINGS_AS_ERRORS="ON"
-DCMAKE_CUDA_ARCHITECTURES="${{ env.CUDA_ARCH }}"
-DFLAMEGPU_BUILD_TESTS="${{ env.FLAMEGPU_BUILD_TESTS }}"
Expand All @@ -155,7 +159,7 @@ jobs:
cmake . -B "${{ env.BUILD_DIR }}"
-DCMAKE_BUILD_TYPE="${{ env.CONFIG }}"
-Werror=dev
-DCMAKE_WARN_DEPRECATED="OFF"
-DCMAKE_WARN_DEPRECATED="OFF"
-DFLAMEGPU_WARNINGS_AS_ERRORS="ON"
-DCMAKE_CUDA_ARCHITECTURES="${{ env.CUDA_ARCH }}"
-DFLAMEGPU_ENABLE_NVTX="ON"
72 changes: 38 additions & 34 deletions .github/workflows/Draft-Release.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Perform thorough builds, and potentially create a draft CI workflow.
# Perform thorough builds, and potentially create a draft CI workflow.
name: Draft Release

on:
Expand All @@ -10,15 +10,15 @@ on:
pull_request:
paths:
- ".github/workflows/Draft-Release.yml"
# Or trigger on manual dispatch. This will not produce a release, but will perform the thorough build.
# Or trigger on manual dispatch. This will not produce a release, but will perform the thorough build.
workflow_dispatch:

defaults:
run:
# Default to using bash regardless of OS unless otherwise specified.
shell: bash

# @todo - add a job/step which validates the version is of the correct format (for pre releases) and that the git tag matches the CMake/header version(s)
# @todo - add a job/step which validates the version is of the correct format (for pre releases) and that the git tag matches the CMake/header version(s)

# Several jobs with some dependencies between them.
# + Thorough Ubuntu builds
Expand All @@ -43,8 +43,8 @@ jobs:
cudacxx:
- cuda: "12.6"
cuda_arch: "50-real;90-real;90-virtual;"
hostcxx: gcc-12
os: ubuntu-22.04
hostcxx: gcc-13
os: ubuntu-24.04
- cuda: "12.0"
cuda_arch: "50-real;90-real;90-virtual;"
hostcxx: gcc-11
Expand All @@ -59,7 +59,7 @@ jobs:
- name: "Release"
config: "Release"
SEATBELTS: "ON"
VISUALISATION:
VISUALISATION:
- "OFF"

# Name the job based on matrix/env options
Expand Down Expand Up @@ -101,7 +101,7 @@ jobs:
echo "CUDAHOSTCXX=/usr/bin/g++-${gcc_version}" >> $GITHUB_ENV

- name: Select Python
if: ${{ env.PYTHON != '' && env.FLAMEGPU_BUILD_PYTHON == 'ON' }}
if: ${{ env.PYTHON != '' && env.FLAMEGPU_BUILD_PYTHON == 'ON' }}
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON }}
Expand All @@ -115,15 +115,19 @@ jobs:
- name: Install Visualisation Dependencies
if: ${{ startswith(env.OS, 'ubuntu') && env.VISUALISATION == 'ON' }}
run: |
# Install ubuntu-24.04 packages
if [ "$OS" == 'ubuntu-24.04' ]; then
sudo apt-get install -y libglew-dev libfontconfig1-dev libsdl2-dev libdevil-dev libfreetype-dev
fi
# Install ubuntu-22.04 packages
if [ "$OS" == 'ubuntu-22.04' ]; then
if [ "$OS" == 'ubuntu-22.04' ]; then
sudo apt-get install -y libglew-dev libfontconfig1-dev libsdl2-dev libdevil-dev libfreetype-dev
fi

- name: Install Swig >= 4.0.2
run: |
# Install additional apt-based dependencies required to build swig 4.0.2
sudo apt-get install -y bison
# Install additional apt-based dependencies required to build swig 4.0.2. 4.0.2 requires pcre-config from pcre3-dev. swig >= 4.1 requires pcre2-config from libpcre2-dev
sudo apt-get install -y bison automake libpcre3-dev libpcre2-dev
# Create a local directory to build swig in.
mkdir -p swig-from-source && cd swig-from-source
# Install SWIG building from source dependencies
Expand All @@ -144,7 +148,7 @@ jobs:
cmake . -B "${{ env.BUILD_DIR }}"
-DCMAKE_BUILD_TYPE="${{ env.CONFIG }}"
-Werror=dev
-DCMAKE_WARN_DEPRECATED="OFF"
-DCMAKE_WARN_DEPRECATED="OFF"
-DFLAMEGPU_WARNINGS_AS_ERRORS="ON"
-DCMAKE_CUDA_ARCHITECTURES="${{ env.CUDA_ARCH }}"
-DFLAMEGPU_BUILD_TESTS="${{ env.FLAMEGPU_BUILD_TESTS }}"
Expand Down Expand Up @@ -191,13 +195,13 @@ jobs:
cuda_arch: "50-real;90-real;90-virtual"
hostcxx: "Visual Studio 17 2022"
os: windows-2022
python:
python:
- "3.8"
config:
- name: "Release"
config: "Release"
SEATBELTS: "ON"
VISUALISATION:
VISUALISATION:
- "OFF"

# Name the job based on matrix/env options
Expand Down Expand Up @@ -234,11 +238,11 @@ jobs:
run: .github\scripts\install_cuda_windows.ps1

- name: Select Python
if: ${{ env.PYTHON != '' && env.FLAMEGPU_BUILD_PYTHON == 'ON' }}
if: ${{ env.PYTHON != '' && env.FLAMEGPU_BUILD_PYTHON == 'ON' }}
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON }}

- name: Install python dependencies
if: ${{ env.PYTHON != '' && env.FLAMEGPU_BUILD_PYTHON == 'ON' }}
run: |
Expand All @@ -250,19 +254,19 @@ jobs:
# This pre-emptively patches a bug where ManyLinux didn't generate buildnumber as git dir was owned by diff user
- name: Enable git safe-directory
run: git config --global --add safe.directory $GITHUB_WORKSPACE

# Must pass -G -A for windows, and -DPython3_ROOT_DIR/-DPYTHON3_EXECUTABLE as a github action workaround
- name: Configure cmake
run: >
cmake . -B "${{ env.BUILD_DIR }}"
cmake . -B "${{ env.BUILD_DIR }}"
-G "${{ env.HOSTCXX }}" -A x64
-Werror=dev
-DCMAKE_WARN_DEPRECATED="OFF"
-DFLAMEGPU_WARNINGS_AS_ERRORS="ON"
-DCMAKE_CUDA_ARCHITECTURES="${{ env.CUDA_ARCH }}"
-DFLAMEGPU_BUILD_TESTS="${{ env.FLAMEGPU_BUILD_TESTS }}"
-DFLAMEGPU_BUILD_PYTHON="${{ env.FLAMEGPU_BUILD_PYTHON }}"
-DPython3_ROOT_DIR="$(dirname $(which python))"
-DFLAMEGPU_BUILD_PYTHON="${{ env.FLAMEGPU_BUILD_PYTHON }}"
-DPython3_ROOT_DIR="$(dirname $(which python))"
-DPython3_EXECUTABLE="$(which python)"
-DFLAMEGPU_VISUALISATION="${{ env.VISUALISATION }}"
-DFLAMEGPU_ENABLE_NVTX="ON"
Expand Down Expand Up @@ -305,7 +309,7 @@ jobs:
cuda_arch: "35-real;50-real;60-real;70-real;80-real;80-virtual"
hostcxx: gcc-toolset-9
os: ubuntu-22.04
python:
python:
- "3.12"
- "3.11"
- "3.10"
Expand All @@ -315,7 +319,7 @@ jobs:
- name: "Release"
config: "Release"
SEATBELTS: "ON"
VISUALISATION:
VISUALISATION:
- "ON"
- "OFF"

Expand Down Expand Up @@ -355,7 +359,7 @@ jobs:
run: |
# Install gcc-toolset-X
yum install -y ${{ env.HOSTCXX }}
# Enable the toolset via source not scl enable which doesn't get on with multi-step GHA
# Enable the toolset via source not scl enable which doesn't get on with multi-step GHA
source /opt/rh/${{ env.HOSTCXX }}/enable
# Export the new environment / compilers for subsequent steps.
echo "PATH=${PATH}" >> $GITHUB_ENV
Expand All @@ -377,7 +381,7 @@ jobs:
- name: Install Visualisation Dependencies (EL 8)
if: ${{ env.VISUALISATION == 'ON' }}
run: |
yum install -y glew-devel fontconfig-devel SDL2-devel freetype-devel
yum install -y glew-devel fontconfig-devel SDL2-devel freetype-devel
# Build/Install DevIL from source.
yum install -y freeglut-devel
git clone --depth 1 https://github.com/DentonW/DevIL.git
Expand Down Expand Up @@ -421,7 +425,7 @@ jobs:
cmake . -B "${{ env.BUILD_DIR }}"
-DCMAKE_BUILD_TYPE="${{ env.CONFIG }}"
-Werror=dev
-DCMAKE_WARN_DEPRECATED="OFF"
-DCMAKE_WARN_DEPRECATED="OFF"
-DFLAMEGPU_WARNINGS_AS_ERRORS="ON"
-DCMAKE_CUDA_ARCHITECTURES="${{ env.CUDA_ARCH }}"
-DFLAMEGPU_BUILD_TESTS="${{ env.FLAMEGPU_BUILD_TESTS }}"
Expand All @@ -447,7 +451,7 @@ jobs:
run: auditwheel show lib/${{ env.CONFIG }}/python/dist/*whl

# Ideally we should use auditwheel repair to check/enforce conformity
# But we cannot due to cuda shared object (libcuda.so.1) dependencies which we cannot/shouldnot/wil not package into the wheel.
# But we cannot due to cuda shared object (libcuda.so.1) dependencies which we cannot/shouldnot/wil not package into the wheel.
- name: Run auditwheel repair
if: ${{ env.AUDITWHEEL_REPAIR == 'ON' }}
working-directory: ${{ env.BUILD_DIR }}
Expand Down Expand Up @@ -479,7 +483,7 @@ jobs:
cuda_arch: "50-real;60-real;70-real;80-real;90-real;90-virtual"
hostcxx: "Visual Studio 17 2022"
os: windows-2022
python:
python:
- "3.12"
- "3.11"
- "3.10"
Expand All @@ -489,13 +493,13 @@ jobs:
- name: "Release"
config: "Release"
SEATBELTS: "ON"
VISUALISATION:
VISUALISATION:
- "ON"
- "OFF"

# Name the job based on matrix/env options
name: "wheel-windows (${{ matrix.cudacxx.cuda }}, ${{matrix.python}}, ${{ matrix.VISUALISATION }}, ${{ matrix.config.name }}, ${{ matrix.cudacxx.os }})"


# Define job-wide env constants, and promote matrix elements to env constants for portable steps.
env:
Expand Down Expand Up @@ -530,7 +534,7 @@ jobs:
run: .github\scripts\install_cuda_windows.ps1

- name: Select Python
if: ${{ env.PYTHON != '' && env.FLAMEGPU_BUILD_PYTHON == 'ON' }}
if: ${{ env.PYTHON != '' && env.FLAMEGPU_BUILD_PYTHON == 'ON' }}
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON }}
Expand All @@ -550,15 +554,15 @@ jobs:
# Must pass -G -A for windows, and -DPython3_ROOT_DIR/-DPYTHON3_EXECUTABLE as a github action workaround
- name: Configure cmake
run: >
cmake . -B "${{ env.BUILD_DIR }}"
cmake . -B "${{ env.BUILD_DIR }}"
-G "${{ env.HOSTCXX }}" -A x64
-Werror=dev
-DCMAKE_WARN_DEPRECATED="OFF"
-DFLAMEGPU_WARNINGS_AS_ERRORS="ON"
-DCMAKE_CUDA_ARCHITECTURES="${{ env.CUDA_ARCH }}"
-DFLAMEGPU_BUILD_TESTS="${{ env.FLAMEGPU_BUILD_TESTS }}"
-DFLAMEGPU_BUILD_PYTHON="${{ env.FLAMEGPU_BUILD_PYTHON }}"
-DPython3_ROOT_DIR="$(dirname $(which python))"
-DFLAMEGPU_BUILD_PYTHON="${{ env.FLAMEGPU_BUILD_PYTHON }}"
-DPython3_ROOT_DIR="$(dirname $(which python))"
-DPython3_EXECUTABLE="$(which python)"
-DFLAMEGPU_VISUALISATION="${{ env.VISUALISATION }}"
-DFLAMEGPU_ENABLE_NVTX="ON"
Expand All @@ -585,7 +589,7 @@ jobs:

# Create a draft release, if all other jobs are successful and if the workflow was triggered by a version tag push event.
create-draft-release:
needs:
needs:
- build-ubuntu
- build-windows
- wheel-manylinux_2_28
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/Lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,4 @@ jobs:

- name: Lint
working-directory: ${{ env.BUILD_DIR }}
run: cmake --build . --target all_lint --verbose -j `nproc`
run: cmake --build . --target all_lint --verbose -j `nproc`
Loading