Skip to content

Merge pull request #157 from AcademySoftwareFoundation/doc_improvemen… #313

Merge pull request #157 from AcademySoftwareFoundation/doc_improvemen…

Merge pull request #157 from AcademySoftwareFoundation/doc_improvemen… #313

Workflow file for this run

name: Build OpenFX libs and examples
on: [push, pull_request]
jobs:
build:
name: '${{ matrix.name_prefix }} <config=${{ matrix.buildtype }}>'
# Avoid duplicated checks when a pull_request is opened from a local branch.
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}
strategy:
fail-fast: false
matrix:
include:
- name_prefix: Linux CentOS 7 VFX CY2021
release_prefix: linux-vfx2021
ostype: linux
aswfdockerbuild: true
os: ubuntu-latest
container: aswf/ci-base:2021
vfx-cy: 2021
has_cmake_presets: false
buildtype: Release
conan_version: 2.1.0
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
checkout_version: 3
cuda: false
opencl: true
- name_prefix: Linux CentOS 7 VFX CY2022
release_prefix: linux-vfx2022
ostype: linux
aswfdockerbuild: true
os: ubuntu-latest
container: aswf/ci-base:2022
vfx-cy: 2022
has_cmake_presets: false
buildtype: Release
conan_version: 2.1.0
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
checkout_version: 3
cuda: false
opencl: true
- name_prefix: Linux Rocky 8 VFX CY2023
release_prefix: linux-vfx2023
ostype: linux
aswfdockerbuild: true
os: ubuntu-latest
container: aswf/ci-base:2023
vfx-cy: 2023
has_cmake_presets: false
buildtype: Release
conan_version: 2.1.0
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
checkout_version: 4
cuda: false
opencl: true
- name_prefix: Linux Rocky 8 VFX CY2023 No OpenGL
release_prefix: linux-vfx2023-no-ogl
ostype: linux
aswfdockerbuild: true
os: ubuntu-latest
container: aswf/ci-base:2023
vfx-cy: 2023
has_cmake_presets: false
buildtype: Release
conan_version: 2.1.0
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
checkout_version: 4
opengl: false
- name_prefix: Linux Ubuntu
release_prefix: linux-ubuntu
ostype: linux
aswfdockerbuild: false
os: ubuntu-latest
container: null
has_cmake_presets: true
buildtype: Release
conan_version: 2.1.0
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
checkout_version: 4
cuda: true
opencl: true
- name_prefix: MacOS
release_prefix: mac
ostype: mac
os: macos-latest
container: null # See the null value here
has_cmake_presets: true
buildtype: Release
conan_version: 2.1.0
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
checkout_version: 4
cuda: false
opencl: true
- name_prefix: Windows
release_prefix: windows
ostype: windows
os: windows-latest
container: null
has_cmake_presets: true
buildtype: Release
conan_version: 2.1.0
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
checkout_version: 4
cuda: true
opencl: true
- name_prefix: Windows no CUDA
release_prefix: windows-no-cuda
ostype: windows
os: windows-latest
container: null
has_cmake_presets: true
buildtype: Release
conan_version: 2.0.16
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
checkout_version: 4
cuda: false
opencl: false
defaults:
run:
shell: bash
steps:
- name: Checkout code (v4)
uses: actions/checkout@v4
if: matrix.checkout_version == 4
with:
clean: true
fetch-depth: 0
- name: Checkout code (v3)
uses: actions/checkout@v3
if: matrix.checkout_version == 3
with:
clean: true
fetch-depth: 0
- name: setup env vars
run: |
git config --global --add safe.directory $PWD # needed for checkout v3, doesn't hurt anyway
BUILDTYPE_LC=$(echo '${{ matrix.buildtype }}'|tr [:upper:] [:lower:])
echo "BUILDTYPE_LC=$BUILDTYPE_LC" >> $GITHUB_ENV
echo "OSNAME=$(echo '${{ matrix.os }}'|sed 's/-.*//')" >> $GITHUB_ENV
echo "GIT_COMMIT_ID=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
echo "CONAN_PRESET=conan-$BUILDTYPE_LC" >> $GITHUB_ENV
echo "BUILD_DIR=build/${{ matrix.buildtype }}" >> $GITHUB_ENV
- name: update Python pip
run: |
python3 -mpip install --upgrade pip
- name: Install Conan
id: conan
uses: turtlebrowser/get-conan@main
with:
version: ${{ matrix.conan_version }}
- name: Set up conan
run: |
conan profile detect
- name: Install system dependencies if needed
uses: ConorMacBride/install-package@v1
if: ${{ matrix.aswfdockerbuild == false }}
with:
apt: libgl-dev libgl1-mesa-dev
brew:
brew-cask:
- name: Setup MSVC
if: startsWith(matrix.os, 'windows')
uses: ilammy/[email protected] # use cl, not msbuild
# We use cl.exe because it can find CUDA without the CUDA visual studio integration,
# which is extremely slow to install (see Jimver/cuda-toolkit below)
# See comments at https://github.com/Jimver/cuda-toolkit/issues/253
- name: Setup Ninja
uses: seanmiddleditch/gha-setup-ninja@v4
- name: Install CUDA Toolkit
uses: Jimver/[email protected]
id: cuda-toolkit-linux
if: matrix.ostype == 'linux' && matrix.cuda == true
with:
cuda: '12.1.0'
method: 'network'
sub-packages: '["nvcc", "cudart"]'
linux-local-args: '["--toolkit"]'
- name: Install CUDA Toolkit
uses: Jimver/[email protected]
id: cuda-toolkit-win
if: matrix.ostype == 'windows' && matrix.cuda == true
with:
cuda: '12.1.0'
method: 'network'
sub-packages: '["nvcc", "cudart"]'
# workaround for cuda-toolkit action bug https://github.com/Jimver/cuda-toolkit/issues/315
use-github-cache: false
use-local-cache: false
# - name: Install system dependencies (CentOS)
# run: |
# rpm install libglvnd-devel
- name: Install dependencies
run: |
[[ "${{ matrix.opengl }}" != false && "${{ matrix.opencl }}" = true ]] && USE_OPENCL="-o use_opencl=True"
conan install -s build_type=${{ matrix.buildtype }} -pr:b=default --build=missing . -c tools.cmake.cmaketoolchain:generator=Ninja $USE_OPENCL
- name: Configure project with cmake
run: |
CMAKE_DEFINES=(-DBUILD_EXAMPLE_PLUGINS=TRUE \
-DPLUGIN_INSTALLDIR=$(pwd)/build/Install)
if [[ "${{ matrix.opengl }}" != false ]] ; then
echo "OPENGL_BUILD=" >> $GITHUB_ENV
CMAKE_DEFINES+=(-DOFX_SUPPORTS_OPENGLRENDER=TRUE)
[[ "${{ matrix.opencl }}" = true ]] && CMAKE_DEFINES+=(-DOFX_SUPPORTS_OPENCLRENDER=TRUE)
[[ "${{ matrix.cuda }}" = true ]] && CMAKE_DEFINES+=(-DOFX_SUPPORTS_CUDARENDER=TRUE)
else
echo "OPENGL_BUILD=-no-ogl" >> $GITHUB_ENV
fi
CMAKE_GENERATOR=(-G Ninja)
if [[ ${{ matrix.has_cmake_presets }} = true ]]; then
# Sets up to build in e.g. build/Release
cmake --preset $CONAN_PRESET ${CMAKE_GENERATOR[@]} ${CMAKE_DEFINES[@]} .
else
# VFX ref platforms 2022 & earlier have only cmake 3.19.
# Older cmake (<3.23) does not support presets, so invoke with explicit args.
cmake -S . -B $BUILD_DIR -G "Unix Makefiles" \
-DCMAKE_TOOLCHAIN_FILE=$(pwd)/$BUILD_DIR/generators/conan_toolchain.cmake \
-DCMAKE_POLICY_DEFAULT_CMP0091=NEW \
-DCMAKE_BUILD_TYPE=Release \
${CMAKE_DEFINES[@]}
fi
- name: Build with cmake
run: |
if [[ ${{ matrix.ostype }} = windows ]]; then
cmake --build $BUILD_DIR --target install --config Release --parallel
else
cmake --build $BUILD_DIR --target install --parallel
fi
- name: Install with cmake
run: |
if [[ ${{ matrix.ostype }} = windows ]]; then
cmake --install $BUILD_DIR --config Release
else
cmake --install $BUILD_DIR
fi
- name: Build with make
run: |
if [[ ${{ matrix.ostype }} = windows ]]; then
echo No Windows nmake build yet
else
(cd Examples; make -j)
# should build Support/Plugins too, but those need work
fi
- name: Copy includes into build folder for installation
run: |
cp -R include ${{ env.BUILD_DIR }}/include
cp -R Support/include ${{ env.BUILD_DIR }}/Support/include
cp -R HostSupport/include ${{ env.BUILD_DIR }}/HostSupport/include
- name: Archive header files and libs to artifact
uses: actions/upload-artifact@v3
with:
name: openfx-${{ matrix.release_prefix }}-${{ env.BUILDTYPE_LC }}-${{ env.GIT_COMMIT_ID }}${{env.OPENGL_BUILD}}
path: |
${{ env.BUILD_DIR }}/include
!${{ env.BUILD_DIR }}/include/DocSrc
!${{ env.BUILD_DIR }}/include/*.png
!${{ env.BUILD_DIR }}/include/*.doxy
!${{ env.BUILD_DIR }}/include/*.dtd
${{ env.BUILD_DIR }}/Support/include
${{ env.BUILD_DIR }}/HostSupport/include
${{ env.BUILD_DIR }}/**/lib*
- name: Archive built/installed plugins
uses: actions/upload-artifact@v3
with:
name: openfx_plugins-${{ matrix.release_prefix }}-${{ env.BUILDTYPE_LC }}-${{ env.GIT_COMMIT_ID }}${{env.OPENGL_BUILD}}
path: |
build/Install
# - name: Archive all build artifacts (for debugging CI)
# uses: actions/upload-artifact@v3
# with:
# name: openfx-build-${{ matrix.release_prefix }}-${{ env.BUILDTYPE_LC }}-${{ env.GIT_COMMIT_ID }}
# path: |
# .