Try installing Node16 on old linux #26
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build OpenFX libs and examples | |
permissions: | |
id-token: write | |
contents: read | |
actions: write | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
release: | |
types: | |
- published | |
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 }} | |
env: | |
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: 'true' | |
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 | |
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 | |
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 | |
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 | |
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: Set up Node.js | |
uses: actions/setup-node@v3 | |
if: matrix.checkout_version == 3 | |
with: | |
node-version: 16 # Specify Node.js version to match checkout@v3 | |
- 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: Set RELEASE_NAME | |
# this looks like "linux-vfx2022-release-1.5[-no-opengl]"; used in filenames | |
run: | | |
RELEASE_PREFIX=${{ matrix.release_prefix }} | |
OPENGL_BUILD=${{ env.OPENGL_BUILD }} | |
if [ "${{ github.ref_type }}" == "tag" ]; then | |
REF_SUFFIX=$(echo "${{ github.ref_name }}" | sed 's/OFX_Release_//') | |
else | |
REF_SUFFIX=$(echo ${{ github.sha }} | cut -c1-8) | |
fi | |
echo "RELEASE_NAME=${RELEASE_PREFIX}-${BUILDTYPE_LC}-${REF_SUFFIX}${OPENGL_BUILD}" >> $GITHUB_ENV | |
- name: Set up python 3.11 | |
uses: actions/setup-python@v5 | |
if: matrix.ostype == 'mac' | |
with: | |
python-version: '3.11' | |
# Q: should we use uv everywhere? | |
# Unfortunately astral-sh/setup-uv action doesn't work on CentOS 7, its GLIBC is too old. | |
- name: Set up uv manually | |
if: matrix.release_prefix == 'linux-vfx2021' | |
run: | | |
curl -LsSf https://astral.sh/uv/install.sh | sh | |
source ~/.local/bin/env | |
echo After sourcing uv env: "$PATH" | |
uv python install --preview 3.11 | |
# Add symlinks for python3 and python | |
(cd ~/.local/bin; ln -sf python3.11 python3; ln -sf python3.11 python) | |
# Save updated path | |
echo "PATH=$PATH" >> $GITHUB_ENV | |
- name: Check python, uv paths | |
run: | | |
echo $PATH | |
which python | |
which python3 | |
python --version | |
python3 --version | |
which uv || yes | |
- name: Install Conan | |
id: conan | |
uses: turtlebrowser/get-conan@main | |
with: | |
version: ${{ matrix.conan_version }} | |
- name: Set up conan | |
run: | | |
which conan | |
conan --version | |
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: | |
# Need CUDA >= 12.4 to support recent VS2022 (17.10 and later, MSVC 19.40) | |
cuda: '12.4.1' | |
method: 'network' | |
sub-packages: '["nvcc", "cudart"]' | |
# - 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 | |
# Artifacts for build & release: | |
# - Header files, doc, and support libs, for use when developing hosts & plugins | |
# - Built/installed example plugins, for testing in a host | |
# Create and sign headers/libs tarball | |
- name: Create headers/libs tarball | |
run: | | |
find ${{ env.BUILD_DIR }} -name "lib*" > ./libfiles.txt | |
ls -l ./libfiles.txt | |
cat ./libfiles.txt | |
tar -czf openfx-$RELEASE_NAME.tar.gz \ | |
-T ./libfiles.txt \ | |
--exclude='${{ env.BUILD_DIR }}/include/DocSrc' \ | |
--exclude='${{ env.BUILD_DIR }}/include/*.png' \ | |
--exclude='${{ env.BUILD_DIR }}/include/*.doxy' \ | |
--exclude='${{ env.BUILD_DIR }}/include/*.dtd' \ | |
${{ env.BUILD_DIR }}/include \ | |
${{ env.BUILD_DIR }}/Support/include \ | |
${{ env.BUILD_DIR }}/HostSupport/include | |
rm ./libfiles.txt | |
- name: Sign header/libs tarball with Sigstore | |
uses: sigstore/gh-action-sigstore-python@f514d46b907ebcd5bedc05145c03b69c1edd8b46 # v3.0.0 | |
# if: github.event_name == 'release' | |
with: | |
inputs: openfx-${{ env.RELEASE_NAME }}.tar.gz | |
upload-signing-artifacts: false | |
release-signing-artifacts: false | |
- name: Upload header/libs tarball and signatures | |
uses: actions/upload-artifact@v3 | |
with: | |
name: "openfx-${{ env.RELEASE_NAME }}-${{ matrix.release_prefix }}" | |
path: | | |
openfx-${{ env.RELEASE_NAME }}.tar.gz | |
openfx-${{ env.RELEASE_NAME }}.tar.gz.sig | |
openfx-${{ env.RELEASE_NAME }}.tar.gz.crt | |
openfx-${{ env.RELEASE_NAME }}.tar.gz.sigstore.json | |
strip-path-prefix: build/Release | |
# Now the same, for the plugins | |
- name: Create built/installed plugins tarball | |
run: | | |
tar -czf openfx-plugins-$RELEASE_NAME.tar.gz -C build/Install . | |
- name: Sign plugins tarball with Sigstore | |
uses: sigstore/gh-action-sigstore-python@f514d46b907ebcd5bedc05145c03b69c1edd8b46 # v3.0.0 | |
# if: github.event_name == 'release' | |
with: | |
inputs: openfx-plugins-${{ env.RELEASE_NAME }}.tar.gz | |
upload-signing-artifacts: false | |
release-signing-artifacts: false | |
- name: Upload plugins tarball and signatures | |
uses: actions/upload-artifact@v3 | |
with: | |
name: "openfx-plugins-${{ env.RELEASE_NAME }}-${{ matrix.release_prefix }}" | |
path: | | |
openfx-plugins-${{ env.RELEASE_NAME }}.tar.gz | |
openfx-plugins-${{ env.RELEASE_NAME }}.tar.gz.sig | |
openfx-plugins-${{ env.RELEASE_NAME }}.tar.gz.crt | |
openfx-plugins-${{ env.RELEASE_NAME }}.tar.gz.sigstore.json | |
# - name: Upload release archive | |
# # if: github.event_name == 'release' | |
# env: | |
# GH_TOKEN: ${{ github.token }} | |
# run: gh release upload ${TAG} ${OPENFX_TARBALL} ${OPENFX_TARBALL}.sigstore.json |