Skip to content

pyktx (Python bindings for libktx) #197

pyktx (Python bindings for libktx)

pyktx (Python bindings for libktx) #197

Workflow file for this run

# Copyright 2015-2020 The Khronos Group Inc.
# SPDX-License-Identifier: Apache-2.0
name: KTX-Software Windows 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
- .travis.yml
# Allow manual trigger
workflow_dispatch:
jobs:
windows:
strategy:
matrix:
os: [ windows-latest ]
toolset: [v143, CLangCL]
arch: [ x64 ]
options: [
{config: 'Debug,Release',
doc: ON, jni: ON, loadtests: OpenGL+Vulkan, py: ON, tests: ON, tools: ON, tools_cts: ON,
package: YES,
sse: ON, opencl: OFF},
{config: Release,
doc: OFF, loadtests: OFF, py: OFF, tests: OFF, tools: OFF, tools_cts: OFF,
package: NO,
sse: OFF, opencl: OFF},
{config: Release,
doc: OFF, loadtests: OFF, py: OFF, tests: OFF, tools: OFF, tools_cts: OFF,
package: NO,
sse: OFF, opencl: ON},
{config: Release,
doc: OFF, loadtests: OFF, py: OFF, tests: OFF, tools: OFF, tools_cts: OFF,
package: NO,
sse: ON, opencl: ON}
]
include:
- os: windows-2019
generator: 'Visual Studio 16 2019'
toolset: v142
arch: x64
options: {
config: 'Debug,Release',
doc: ON, jni: ON, loadtests: OpenGL+Vulkan, py: ON, tests: ON, tools: ON, tools_cts: ON,
package: NO,
sse: ON, opencl: OFF
}
- os: windows-latest
generator: 'Visual Studio 17 2022'
toolset: CLangCL
arch: arm64
# No tests on arm64 since the host is x64 and can't run the
# built tests
options: {
config: 'Debug,Release',
doc: ON, jni: ON, loadtests: OFF, py: OFF, tests: ON, tools: ON, tools_cts: ON,
package: YES
}
runs-on: ${{ matrix.os }}
env:
# Skip downloading necessities for the load tests and source and golden
# images for the other tests since we can't run arm64 tests on the x64
# build host.
GIT_LFS_SKIP_SMUDGE: 1
BUILD_DIR: "build"
CMAKE_GEN: ${{ matrix.generator }}
CMAKE_TOOLSET: ${{ matrix.toolset }}
ARCH: ${{ matrix.arch }}
CONFIGURATION: ${{ matrix.options.config }}
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 }}
FEATURE_TOOLS: ${{ matrix.options.tools }}
FEATURE_TOOLS_CTS: ${{ matrix.options.tools_cts }}
PACKAGE: ${{ matrix.options.package }}
SUPPORT_OPENCL: ${{ matrix.options.opencl }}
SUPPORT_SSE: ${{ matrix.options.sse }}
WERROR: ON
CODE_SIGN_TIMESTAMP_URL: "http://timestamp.digicert.com"
AZURE_KEY_VAULT_URL: ${{ secrets.AZURE_KEY_VAULT_URL }}
AZURE_KEY_VAULT_CERTIFICATE: ${{ secrets.AZURE_KEY_VAULT_CERTIFICATE }}
AZURE_KEY_VAULT_CLIENT_ID: ${{ secrets.AZURE_KEY_VAULT_CLIENT_ID }}
AZURE_KEY_VAULT_CLIENT_SECRET: ${{ secrets.AZURE_KEY_VAULT_CLIENT_SECRET }}
AZURE_KEY_VAULT_TENANT_ID: ${{ secrets.AZURE_KEY_VAULT_TENANT_ID }}
OPENCL_SDK_HOME: https://github.com/intel/llvm/releases/download/2021-09
OPENCL_SDK_NAME: win-oclcpuexp-2021.12.9.0.24_rel
OPENGL_ES_EMULATOR: C:/Imagination/Windows_x86_64
OPENGL_ES_EMULATOR_WIN: C:\Imagination\Windows_x86_64
PVR_SDK_HOME: https://github.com/powervr-graphics/Native_SDK/raw/master/lib/Windows_x86_64/
PYTHON: C:\hostedtoolcache\windows\Python\3.11.4\x64\python.exe
VULKAN_SDK_VER: 1.3.243.0
steps:
- uses: actions/checkout@v3
with:
# Fetch all history to make sure tags are
# included (used for version creation)
fetch-depth: 0
- name: Force fetch provoking tag's annotation.
# Work around https://github.com/actions/checkout/issues/290.
if: github.ref_type == 'tag'
run: git fetch -f origin ${{ github.ref }}:${{ github.ref }}
# Need doxygen if docs are supposed to be built.
# Note this suffers frequent failures due to Chocolatey attempts
# to blackmail you into purchasing a license. Hence we retry a
# few times. If this still fails, re-run the build.
- name: Install Doxygen
if: matrix.options.doc == 'ON'
#run: choco install doxygen.install
run: |
$retryCount = 4
$success = $false
for ($i = 1; $i -le $retryCount; $i++) {
Write-Host "Attempt no: $i"
choco install doxygen.install --no-progress
if ($LASTEXITCODE -eq 0) {
$success = $true
Write-Host "Installation successful."
break
} else {
Write-Host "Installation failed. Retrying..."
Start-Sleep -Seconds (2*$i)
}
}
if (-not $success) {
Write-Host "Installation failed after $retryCount attempts."
exit 1
}
- name: Install AzureSignTool
id: install-ast
run: |
if ($env:PACKAGE -eq "YES" -and $env:AZURE_KEY_VAULT_URL) {
dotnet tool install --global AzureSignTool
echo "CODE_SIGN_KEY_VAULT=Azure" >> $env:GITHUB_ENV
}
- name: Install Dependencies
# This script only installs what's needed by ON FEATUREs.
run: ci_scripts/install_win.ps1
- name: Set up JDK 17.
if: matrix.options.jni == 'ON'
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: Set up Python 3.11
if: matrix.options.py == 'ON'
uses: actions/setup-python@v4
with:
python-version: '3.11.4'
- name: Smudge embedded dates
if: matrix.options.doc == 'ON'
run: |
./install-gitconfig.ps1
ci_scripts/smudge_date.ps1
- name: Build Windows
# The installers run as part of "Install Dependencies" add
# environment variables to the registry and augment $Path there.
# Although each step gets a new Powershell instance, that instance
# is spawned from some parent Powershell so it does not pick up
# the changes from the registry. Use Chocolatey's helper to
# pull in the changes.
# After import `refreshenv` is an alias for
# Update-SessionEnvironment. Without the import refreshenv will end
# up calling the cmd.exe version, which won't help Powershell, and
# Update-SessionEnvironment will not exist.
# Unfortunately this resets JAVA_HOME to whatever is in the registry.
# The one from the Set Up JDK step was set in the environment before
# this step is called.
run: |
$step_java_home=$env:JAVA_HOME
Import-Module "$env:ChocolateyInstall/helpers/chocolateyInstaller.psm1"
refreshenv
$env:JAVA_HOME=$step_java_home
ci_scripts/build_win.ps1
- name: Test Windows build
if: matrix.arch == 'x64' && matrix.options.tests == 'ON'
run: ctest --output-on-failure --test-dir $env:BUILD_DIR -C Release
- name: Upload test log
if: ${{ failure() }}
run: ci_scripts/on_failure.ps1
- name: Get KTX version
if: matrix.options.package == 'YES'
id: ktx-version
run: |
$KTX_VERSION = Get-Content $env:BUILD_DIR/ktx.version
echo "KTX_VERSION=$KTX_VERSION" >> $env:GITHUB_ENV
- name: Upload Artifact
if: matrix.options.package == 'YES' && matrix.toolset == 'CLangCL'
uses: actions/upload-artifact@v3
with:
name: KTX-Software-${{env.KTX_VERSION}}-Windows-${{matrix.arch}}
path: ${{env.BUILD_DIR}}/KTX-Software-*.exe*
- name: Upload To Release
uses: softprops/action-gh-release@v1
if: matrix.options.package == 'YES' && matrix.toolset == 'CLangCL' && github.event_name == 'push' && github.ref_type == 'tag'
with:
draft: true
prerelease: true
files: ${{env.BUILD_DIR}}/KTX-Software-*.exe*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}