Shut up warnings clang with libstdc++ emits about non-virtual destructors #53
Workflow file for this run
This file contains hidden or 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
# Copyright 2025 The Khronos Group Inc. | ||
# SPDX-License-Identifier: Apache-2.0 | ||
name: KTX-Software Linux CI | ||
# Seems no way to avoid duplicating this on logic in each .yml file. | ||
# See https://github.com/actions/starter-workflows/issues/245. | ||
on: | ||
# Trigger the workflow on a pull request, | ||
pull_request: | ||
push: | ||
# And on pushes to main, which will occur when a PR is merged. | ||
branches: | ||
- main | ||
# Also trigger on push of release tags to any branch. Useful | ||
# for testing release builds before merging to main. | ||
tags: | ||
- 'v[0-9]+.[0-9]+.[0-9]+' | ||
- 'v[0-9]+.[0-9]+.[0-9]+-*' | ||
paths-ignore: | ||
- .appveyor.yml | ||
- .github/workflows/android.yml | ||
- .github/workflows/check-mkvk.yml | ||
- .github/workflows/docs.yml | ||
- .github/workflows/formatting.yml | ||
- .github/workflows/publish-pyktx.yml | ||
- .github/workflows/windows.yml | ||
- .travis.yml | ||
- README.md | ||
- CODE_OF_CONDUCT.md | ||
- CONTRIBUTING.md | ||
- LICENSE.md | ||
- LICENSES | ||
- RELEASE_NOTES.md | ||
- REUSE.toml | ||
- install-gitconfig* | ||
# Allow manual trigger | ||
workflow_dispatch: | ||
workflow_call: | ||
jobs: | ||
#formatting: | ||
# uses: ./.github/workflows/formatting.yml | ||
linux: | ||
# Shortcircuit and don't burn CI time when formatting will reject | ||
#needs: formatting | ||
strategy: | ||
matrix: | ||
include: | ||
- name: Default | ||
os: ubuntu-22.04 | ||
generator: Ninja | ||
arch: x86_64 | ||
compiler: gcc | ||
vk_sdk_ver: '1.3.290' | ||
options: { | ||
config: Debug, | ||
doc: OFF, jni: ON, loadtests: OpenGL+Vulkan, py: ON, tools: ON, tools_cts: ON, | ||
sse: ON, opencl: OFF | ||
} | ||
- name: Clang | ||
os: ubuntu-22.04 | ||
generator: Ninja | ||
arch: x86_64 | ||
compiler: clang | ||
vk_sdk_ver: '1.3.290' | ||
options: { | ||
config: Debug,Release | ||
doc: OFF, jni: ON, loadtests: OpenGL+Vulkan, py: ON, tools: ON, tools_cts: OFF, | ||
sse: ON, opencl: OFF | ||
} | ||
- name: Package (x86_64) | ||
os: ubuntu-22.04 | ||
generator: Ninja | ||
arch: x86_64 | ||
compiler: gcc | ||
vk_sdk_ver: '1.3.290' | ||
options: { | ||
config: Release, | ||
doc: ON, jni: ON, loadtests: OpenGL+Vulkan, py: ON, tools: ON, tools_cts: ON, | ||
package: YES, sse: ON, opencl: OFF | ||
} | ||
- name: Package (aarch64) | ||
os: ubuntu-22.04-arm | ||
generator: Ninja | ||
arch: aarch64 | ||
compiler: gcc | ||
vk_sdk_ver: '1.3.290' | ||
options: { | ||
config: Release, | ||
doc: ON, jni: ON, loadtests: OpenGL, py: ON, tools: ON, tools_cts: ON, | ||
package: YES, sse: OFF, opencl: OFF | ||
} | ||
- name: OpenCL,SSE | ||
os: ubuntu-22.04 | ||
generator: Ninja | ||
arch: x86_64 | ||
compiler: gcc | ||
vk_sdk_ver: '1.3.290' | ||
options: { | ||
config: Release, | ||
doc: OFF, jni: OFF, loadtests: OFF, py: OFF, tools: OFF, tools_cts: OFF, | ||
sse: ON, opencl: ON | ||
} | ||
- name: OpenCL | ||
os: ubuntu-22.04 | ||
generator: Ninja | ||
arch: x86_64 | ||
compiler: gcc | ||
vk_sdk_ver: '1.3.290' | ||
options: { | ||
config: Release, | ||
doc: OFF, jni: OFF, loadtests: OFF, py: OFF, tools: OFF, tools_cts: OFF, | ||
sse: OFF, opencl: ON | ||
} | ||
- name: All OFF | ||
os: ubuntu-22.04 | ||
generator: Ninja | ||
arch: x86_64 | ||
compiler: gcc | ||
vk_sdk_ver: '1.3.290' | ||
options: { | ||
config: Release, | ||
doc: OFF, jni: OFF, loadtests: OFF, py: OFF, tools: OFF, tools_cts: OFF, | ||
sse: OFF, opencl: OFF | ||
} | ||
name: ${{ matrix.name && matrix.name || format('{0} SSE,OpenCL:{1},{2}', matrix.os, matrix.options.sse, matrix.options.opencl) }} | ||
runs-on: ${{ matrix.os }} | ||
env: | ||
GIT_LFS_SKIP_SMUDGE: 1 | ||
BUILD_DIR: build | ||
REL_DESC_FILE: "build/rel_desc.md" | ||
# Map test matrix elements to environmental variables, so that scripts launched from CI scripts may react to them. | ||
# Some matrix variables have defaults if unspecified by the matrix | ||
CMAKE_GEN: ${{ matrix.generator }} | ||
ARCH: ${{ matrix.arch }} | ||
CONFIGURATION: ${{ matrix.options.config }} | ||
PLATFORM: ${{ matrix.options.platform }} | ||
FEATURE_DOC: ${{ matrix.options.doc }} | ||
FEATURE_JNI: ${{ matrix.options.jni }} | ||
FEATURE_LOADTESTS: ${{ matrix.options.loadtests }} | ||
FEATURE_PY: ${{ matrix.options.py }} | ||
FEATURE_TESTS: ${{ matrix.options.tests && matrix.options.tests || 'ON' }} | ||
FEATURE_TOOLS: ${{ matrix.options.tools }} | ||
FEATURE_TOOLS_CTS: ${{ matrix.options.tools_cts }} | ||
PACKAGE: ${{ matrix.options.package && matrix.options.package || 'NO' }} | ||
SUPPORT_OPENCL: ${{ matrix.options.opencl }} | ||
SUPPORT_SSE: ${{ matrix.options.sse }} | ||
WERROR: ${{ matrix.options.werror && matrix.options.werror || 'ON' }} | ||
# CC Handled by job step | ||
# CXX Handled by job step | ||
PYTHON_DIST_DIR: interface/python_binding/dist | ||
VULKAN_SDK_VER: ${{ matrix.vk_sdk_ver }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
# Fetch all history to make sure tags are | ||
# included (used for version creation) | ||
fetch-depth: 0 | ||
- name: Set compiler | ||
if: matrix.compiler | ||
run: | | ||
if [ "${{ matrix.compiler }}" = "gcc" ]; then | ||
echo "CC=gcc" >> $GITHUB_ENV | ||
echo "CXX=g++" >> $GITHUB_ENV | ||
elif [ "${{ matrix.compiler }}" = "clang" ]; then | ||
echo "CC=clang" >> $GITHUB_ENV | ||
echo "CXX=clang++" >> $GITHUB_ENV | ||
else | ||
echo "Unknown compiler toolchain set" | ||
exit 1 | ||
fi | ||
- name: before_install | ||
run: | | ||
echo -n "Running on the following GitHub Actions CI runner: " && uname -a | ||
echo -n "CMake version on the runner is " && cmake --version | ||
echo -e "machine github.com\n login $GITHUB_TOKEN" >> ~/.netrc # Prevent rate limiting on Git LFS. | ||
cat ~/.netrc | ||
sudo apt-get update | ||
- name: install | ||
run: | | ||
echo "JAVA_HOME=$JAVA_HOME_17_X64" >> $GITHUB_ENV | ||
./scripts/install_linux.sh | ||
- name: Set up Python 3.11 | ||
if: matrix.options.py == 'ON' | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: '3.11.4' | ||
- name: before_script | ||
run: | | ||
if [ "$FEATURE_TOOLS_CTS" = "ON" ]; then | ||
git submodule update --init --recursive tests/cts | ||
fi | ||
# Make sure embedded dates are correct. | ||
./install-gitconfig.sh | ||
scripts/smudge_date.sh | ||
- name: script | ||
run: | | ||
./scripts/build_linux.sh | ||
- name: Sanitize release notes | ||
if: matrix.options.package == 'YES' && github.event_name == 'push' && github.ref_type == 'tag' | ||
run: | | ||
if [ ! -f $REL_DESC_FILE -a -f RELEASE_NOTES.md ]; then | ||
# Remove lines that are unnecessary in the context of a GitHub | ||
# release description. | ||
awk '/^Release Notes/,/^## Version/ { next } | ||
! /<!-- Copyright/ && ! /<!-- SPDX/ { print }' RELEASE_NOTES.md \ | ||
> $REL_DESC_FILE | ||
fi | ||
- name: Prepare KTX artifacts | ||
if: matrix.options.package == 'YES' | ||
id: ktx-version | ||
run: | | ||
KTX_VERSION=`cat $BUILD_DIR/ktx.version` | ||
echo "PACKAGE_NAME_SUFFIX=${KTX_VERSION}-${{runner.os}}-${{matrix.arch}}" >> $GITHUB_ENV | ||
# For these artifact uploads, need to take care that only one CLangCL | ||
# "package" job for each architecture produces artifacts. A second | ||
# job would attempt to upload a same-named artifact. | ||
- name: Upload artifact Install Package | ||
if: matrix.options.package == 'YES' | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: KTX-Software-${{env.PACKAGE_NAME_SUFFIX}} | ||
path: ${{env.BUILD_DIR}}/KTX-Software-*-* | ||
compression-level: 0 # Installer already compressed. | ||
- name: Upload artifact pyktx | ||
if: matrix.options.package == 'YES' && matrix.options.py == 'ON' | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: pyktx-${{env.PACKAGE_NAME_SUFFIX}} | ||
path: ${{env.BUILD_DIR}}/${{env.PYTHON_DIST_DIR}} | ||
- name: Upload to Release | ||
uses: softprops/action-gh-release@v2 | ||
if: matrix.options.package == 'YES' && github.event_name == 'push' && github.ref_type == 'tag' | ||
with: | ||
draft: true | ||
prerelease: true | ||
files: | | ||
${{env.BUILD_DIR}}/KTX-Software-*-* | ||
${{env.BUILD_DIR}}/${{env.PYTHON_DIST_DIR}}/pyktx-* | ||
body_path: ${{env.REL_DESC_FILE}} | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |