-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaction.yml
More file actions
106 lines (98 loc) · 6.44 KB
/
action.yml
File metadata and controls
106 lines (98 loc) · 6.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
name: 'Setup Vulkan SDK'
description: 'Sets up the Vulkan SDK for the given platform'
inputs:
version:
description: 'Vulkan SDK version'
default: 'latest'
required: false
runs:
using: composite
steps:
# Identify latest SDK version
- run: echo sdkVersion=$(curl -sSL 'https://vulkan.lunarg.com/sdk/latest/${{ (runner.os == 'Linux') && 'linux' || ((runner.os == 'macOS') && 'mac' || ((runner.os == 'Windows' && runner.arch == 'x64') && 'windows' || 'warm')) }}.txt') >> "$GITHUB_OUTPUT"
shell: bash
id: determineSdkVersion
if: ${{ inputs.version == 'latest' }}
# Attempt to load from cache
- name: Restore existing Vulkan SDK from cache
id: cache-restore
uses: actions/cache/restore@v4
with:
path: ${{ runner.tool_cache }}/vulkan/${{ inputs.version == 'latest' && steps.determineSdkVersion.outputs.sdkVersion || inputs.version }}
key: vulkan-sdk-${{ runner.os }}-${{ runner.arch }}-${{ inputs.version == 'latest' && steps.determineSdkVersion.outputs.sdkVersion || inputs.version }}
# Download and extract SDK if we failed to restore
- run: |
sdkVersion='${{ inputs.version == 'latest' && steps.determineSdkVersion.outputs.sdkVersion || inputs.version }}'
curl -sSL -o "$RUNNER_TEMP/vulkan_sdk.tar.xz" "https://sdk.lunarg.com/sdk/download/$sdkVersion/linux/vulkan_sdk.tar.xz"
mkdir -p "$RUNNER_TOOL_CACHE/vulkan/$sdkVersion"
tar -xf "$RUNNER_TEMP/vulkan_sdk.tar.xz" -C "$RUNNER_TOOL_CACHE/vulkan/$sdkVersion" --strip-components 2 "$sdkVersion/x86_64"
shell: bash
if: ${{ steps.cache-restore.outputs.cache-hit != 'true' && runner.os == 'Linux' }}
- run: |
sdkVersion='${{ inputs.version == 'latest' && steps.determineSdkVersion.outputs.sdkVersion || inputs.version }}'
curl -sSL -o "$RUNNER_TEMP/vulkan_sdk.zip" "https://sdk.lunarg.com/sdk/download/$sdkVersion/mac/vulkan_sdk.zip"
mkdir -p "$RUNNER_TOOL_CACHE/vulkan/$sdkVersion"
mkdir -p "$RUNNER_TEMP/vulkan_sdk"
ditto -xk "$RUNNER_TEMP/vulkan_sdk.zip" "$RUNNER_TEMP/vulkan_sdk"
installer=""
if [[ -d "$RUNNER_TEMP/vulkan_sdk/InstallVulkan.app" ]]; then
# This version uses the "old" SDK installer layout
appRoot="$RUNNER_TEMP/vulkan_sdk/InstallVulkan.app"
installer="$appRoot/Contents/MacOS/InstallVulkan"
elif [[ -d "$RUNNER_TEMP/vulkan_sdk/vulkansdk-macOS-$sdkVersion.app" ]]; then
# This version uses the "new" SDK installer layout
appRoot="$RUNNER_TEMP/vulkan_sdk/vulkansdk-macOS-$sdkVersion.app"
installer="$appRoot/Contents/MacOS/vulkansdk-macOS-$sdkVersion"
else
echo "::error::Failed to determine Vulkan SDK installer layout"
echo "unknown SDK layout" && exit 1
fi
$installer --root "$RUNNER_TOOL_CACHE/vulkan/$sdkVersion" --accept-licenses --default-answer --auto-answer OverwriteTargetDirectory=Yes --confirm-command install copy_only=1
shell: bash
if: ${{ steps.cache-restore.outputs.cache-hit != 'true' && runner.os == 'macOS' }}
- run: |
$sdkVersion='${{ inputs.version == 'latest' && steps.determineSdkVersion.outputs.sdkVersion || inputs.version }}'
curl -sSL -o "${Env:RUNNER_TEMP}/vulkan_sdk.exe" "https://sdk.lunarg.com/sdk/download/$sdkVersion/windows/vulkan_sdk.exe"
$null = New-Item -ItemType Directory -Force -Path "${Env:RUNNER_TOOL_CACHE}/vulkan/$sdkVersion"
& "${Env:RUNNER_TEMP}/vulkan_sdk.exe" --root "${Env:RUNNER_TOOL_CACHE}/vulkan/$sdkVersion" --accept-licenses --default-answer --auto-answer OverwriteTargetDirectory=Yes --confirm-command install
shell: pwsh
if: ${{ steps.cache-restore.outputs.cache-hit != 'true' && runner.os == 'Windows' && runner.arch == 'x64' }}
- run: |
$sdkVersion='${{ inputs.version == 'latest' && steps.determineSdkVersion.outputs.sdkVersion || inputs.version }}'
curl -sSL -o "${Env:RUNNER_TEMP}/vulkan_sdk.exe" "https://sdk.lunarg.com/sdk/download/$sdkVersion/warm/vulkan_sdk.exe"
$null = New-Item -ItemType Directory -Force -Path "${Env:RUNNER_TOOL_CACHE}/vulkan/$sdkVersion"
& "${Env:RUNNER_TEMP}/vulkan_sdk.exe" --root "${Env:RUNNER_TOOL_CACHE}/vulkan/$sdkVersion" --accept-licenses --default-answer --auto-answer OverwriteTargetDirectory=Yes --confirm-command install
shell: pwsh
if: ${{ steps.cache-restore.outputs.cache-hit != 'true' && runner.os == 'Windows' && (runner.arch == 'ARM' || runner.arch == 'ARM64') }}
- name: Save cache
id: cache-save
uses: actions/cache/save@v4
with:
path: ${{ runner.tool_cache }}/vulkan/${{ inputs.version == 'latest' && steps.determineSdkVersion.outputs.sdkVersion || inputs.version }}
key: ${{ steps.cache-restore.outputs.cache-primary-key }}
if: ${{ steps.cache-restore.outputs.cache-hit != 'true' }}
# Setup environment variables
- run: |
VULKAN_SDK="$RUNNER_TOOL_CACHE/vulkan/${{ inputs.version == 'latest' && steps.determineSdkVersion.outputs.sdkVersion || inputs.version }}"
echo "VULKAN_SDK=$VULKAN_SDK" >> "$GITHUB_ENV"
echo "$(pwd)/Vulkan/bin" >> "$GITHUB_PATH"
echo "LD_LIBRARY_PATH=$VULKAN_SDK/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" >> "$GITHUB_ENV"
echo "VK_ADD_LAYER_PATH=$VULKAN_SDK/share/vulkan/explicit_layer.d${VK_ADD_LAYER_PATH:+:$VK_ADD_LAYER_PATH}" >> "$GITHUB_ENV"
shell: bash
if: ${{ runner.os == 'Linux' }}
- run: |
VULKAN_SDK="$RUNNER_TOOL_CACHE/vulkan/${{ inputs.version == 'latest' && steps.determineSdkVersion.outputs.sdkVersion || inputs.version }}/macos"
echo "VULKAN_SDK=$VULKAN_SDK" >> "$GITHUB_ENV"
echo "$VULKAN_SDK/bin" >> "$GITHUB_PATH"
echo "DYLD_LIBRARY_PATH=$VULKAN_SDK/lib${DYLD_LIBRARY_PATH:+:$DYLD_LIBRARY_PATH}" >> "$GITHUB_ENV"
echo "VK_ICD_FILENAMES=$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json" >> "$GITHUB_ENV"
echo "VK_ADD_LAYER_PATH=$VULKAN_SDK/share/vulkan/explicit_layer.d${VK_ADD_LAYER_PATH:+:$VK_ADD_LAYER_PATH}" >> "$GITHUB_ENV"
shell: bash
if: ${{ runner.os == 'macOS' }}
- run: |
$VULKAN_SDK="${Env:RUNNER_TOOL_CACHE}\\vulkan\\${{ inputs.version == 'latest' && steps.determineSdkVersion.outputs.sdkVersion || inputs.version }}"
echo "VULKAN_SDK=$VULKAN_SDK" >> "${Env:GITHUB_ENV}"
echo "$VULKAN_SDK\\Bin" >> "${Env:GITHUB_PATH}"
echo "VK_LAYER_PATH=$VULKAN_SDK\\Bin" >> "${Env:GITHUB_ENV}"
shell: pwsh
if: ${{ runner.os == 'Windows' }}