Skip to content

Commit 03eb7dd

Browse files
committed
Update action.yml
support os-specific SDK versions (since not all versions are available for all!?)
1 parent b186178 commit 03eb7dd

File tree

3 files changed

+172
-70
lines changed

3 files changed

+172
-70
lines changed

.github/workflows/ci.yml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
- uses: actions/checkout@v2
2020
- uses: ./
2121
with:
22-
vulkan-version: 1.2.154.1
22+
vulkan-version: 1.2.154.0
2323
- name: Test Vulkan SDK Install
2424
run: |
2525
echo "Vulkan SDK downloaded from '$VULKAN_SDK_URL'"
@@ -51,3 +51,22 @@ jobs:
5151
echo "Vulkan SDK downloaded from '$env:VULKAN_SDK_URL'"
5252
echo "Vulkan SDK parsed app_version '$env:VULKAN_SDK_VERSION'"
5353
if (!$env:VULKAN_SDK_VERSION) { throw "vulkan sdk install error" }
54+
55+
setup-both-with-versions:
56+
strategy:
57+
matrix:
58+
runs-on: [ubuntu-latest, windows-latest]
59+
runs-on: ${{ matrix.runs-on }}
60+
steps:
61+
- uses: actions/checkout@v2
62+
- uses: ./
63+
with:
64+
vulkan-version-linux: 1.2.154.0
65+
vulkan-version-windows: 1.2.154.1
66+
- name: Test Vulkan SDK Install
67+
shell: bash
68+
run: |
69+
echo "Vulkan SDK downloaded from '$VULKAN_SDK_URL'"
70+
echo "Vulkan SDK parsed app_version '$VULKAN_SDK_VERSION'"
71+
test -n "$VULKAN_SDK_VERSION"
72+

action.yml

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,46 @@ inputs:
55
description: 'specify a Vulkan SDK release version, e.g. 1.2.162.1'
66
default: 'latest'
77
required: false
8+
vulkan-version-linux:
9+
description: 'specify a linux-specific Vulkan SDK release version, e.g. 1.2.162.1'
10+
default: ''
11+
required: false
12+
vulkan-version-windows:
13+
description: 'specify a windows-specific Vulkan SDK release version, e.g. 1.2.162.1'
14+
default: ''
15+
required: false
816
runs:
917
using: "composite"
1018
steps:
19+
20+
- name: Determine requested SDK Version
21+
shell: bash
22+
run: |
23+
case `uname -s` in
24+
Linux)
25+
echo VK_VERSION=${{ inputs.vulkan-version-linux }} >> $GITHUB_ENV
26+
;;
27+
Darwin)
28+
;;
29+
*) # Windows
30+
echo VK_VERSION=${{ inputs.vulkan-version-windows }} >> $GITHUB_ENV
31+
;;
32+
esac
33+
1134
- name: Download and extract Vulkan SDK
1235
shell: bash
1336
run: |
14-
echo . ./install_vulkan_sdk.sh "${{ inputs.vulkan-version }}"
15-
. ./install_vulkan_sdk.sh "${{ inputs.vulkan-version }}"
16-
if [ -n "$VULKAN_SDK" ]; then
17-
echo "Failed to install Vulkan SDK $VK_VERSION using '$VULKAN_SDK_URL'."
37+
VK_VERSION=${VK_VERSION:-${{ inputs.vulkan-version }}}
38+
echo "VK_VERSION=VK_VERSION" >> $GITHUB_ENV
39+
echo "requested SDK version is $VK_VERSION" >&2
40+
./install_vulkan_sdk.sh $VK_VERSION | tee -a $GITHUB_ENV
41+
42+
- name: Verify Vulkan SDK installation
43+
shell: bash
44+
run: |
45+
if [ -z "$VULKAN_SDK" ]; then
46+
echo "Failed to install Vulkan SDK ${{ inputs.vulkan-version }} using '$VULKAN_SDK_URL'."
1847
exit 3
1948
else
20-
echo "Vulkan SDK $VK_VERSION ($VULKAN_SDK_VERSION) successfully installed using '$VULKAN_SDK_URL'."
49+
echo "Vulkan SDK ${{ inputs.vulkan-version }} ($VULKAN_SDK_VERSION) successfully installed using '$VULKAN_SDK_URL'."
2150
fi
22-
echo "VULKAN_SDK_URL=$VULKAN_SDK_URL" >> $GITHUB_ENV
23-
echo "VULKAN_SDK_ROOT=$VULKAN_SDK_ROOT" >> $GITHUB_ENV
24-
echo "VULKAN_SDK_VERSION=$VULKAN_SDK_VERSION" >> $GITHUB_ENV
25-
echo "VULKAN_SDK=$VULKAN_SDK" >> $GITHUB_ENV

install_vulkan_sdk.sh

Lines changed: 118 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,137 @@
11
#!/bin/bash
22
# helper script to download and install the Vulkan SDK on headless CI systems
33
# (note: currently outputs vulkan_sdk in current directory)
4-
set -ea
4+
#set -e
55
VK_VERSION=${1:-latest}
66

7-
test -d vulkan_sdk || mkdir vulkan_sdk
7+
test -d vulkan_sdk || mkdir vulkan_sdk || true
8+
89
function detect_sdk_version() {
910
local dump=$(find vulkan_sdk -name VkLayer_api_dump.json | head -1)
1011
test -s $dump && cat $dump /dev/null | grep api_version | sed -e 's/^.*: "//;s/",//;'
1112
}
1213

13-
EXISTING_SDK_VERSION=$(detect_sdk_version)
14-
if [ "$EXISTING_SDK_VERSION" != "" ] ; then
15-
echo "Existing Vulkan SDK $EXISTING_SDK_VERSION already found in $PWD/vulkan_sdk/ -- aborting installation of $VK_VERSION."
16-
exit 4
17-
fi
14+
function get_windows_filename() {
15+
if [ "$1" == "latest" ]; then
16+
echo vulkan-sdk.exe
17+
else
18+
echo VulkanSDK-$1-Installer.exe
19+
fi
20+
}
21+
22+
function get_windows_url() {
23+
if [ "$1" == "latest" ]; then
24+
echo https://sdk.lunarg.com/sdk/download/latest/windows/$(get_windows_filename $1)?u=
25+
else
26+
echo https://sdk.lunarg.com/sdk/download/$1/windows/$(get_windows_filename $1)?Human=true
27+
fi
28+
}
29+
30+
function fetch_windows() {
31+
local VULKAN_SDK_URL=$1
32+
local VULKAN_SDK_FILE=$2
33+
if [ -s $VULKAN_SDK_FILE ]; then
34+
echo "Existing '$VULKAN_SDK_FILE' found." >&2
35+
else
36+
echo "Fetching '$VULKAN_SDK_URL' => '$VULKAN_SDK_FILE'" >&2
37+
curl -s $VULKAN_SDK_URL -o $VULKAN_SDK_FILE
38+
fi
39+
if [ ! -s $VULKAN_SDK_FILE ] ; then
40+
echo "Error downloading $VK_VERSION from '$VULKAN_SDK_URL'." >&2
41+
exit 2
42+
fi
43+
if [ $(stat --format=%s "$VULKAN_SDK_FILE") -lt 100000 ]; then
44+
echo "Error downloading $VK_VERSION from '$VULKAN_SDK_URL'." >&2
45+
ls -l $VULKAN_SDK_FILE >&2
46+
file $VULKAN_SDK_FILE >&2
47+
exit 3
48+
fi
49+
}
50+
51+
function get_linux_filename() {
52+
if [ "$1" == "latest" ]; then
53+
echo vulkan-sdk.tar.gz
54+
else
55+
echo vulkansdk-linux-x86_64-$1.tar.gz
56+
fi
57+
}
58+
59+
function get_linux_url() {
60+
if [ "$1" == "latest" ]; then
61+
echo https://sdk.lunarg.com/sdk/download/latest/linux/$(get_linux_filename $1)?u=
62+
else
63+
echo https://sdk.lunarg.com/sdk/download/$1/linux/$(get_linux_filename $1)
64+
fi
65+
}
66+
67+
function fetch_linux() {
68+
local VULKAN_SDK_URL=$1
69+
local VULKAN_SDK_FILE=$2
70+
if [ -s $VULKAN_SDK_FILE ]; then
71+
echo "Existing '$VULKAN_SDK_FILE' found." >&2
72+
else
73+
echo "Fetching '$VULKAN_SDK_URL' => '$VULKAN_SDK_FILE'" >&2
74+
wget -q -O $VULKAN_SDK_FILE $VULKAN_SDK_URL
75+
fi
76+
if [ ! -s $VULKAN_SDK_FILE ] ; then
77+
echo "Error downloading $VK_VERSION from '$VULKAN_SDK_URL'." >&2
78+
exit 2
79+
fi
80+
if [ $(stat --format=%s "$VULKAN_SDK_FILE") -lt 100000 ]; then
81+
echo "Error downloading $VK_VERSION from '$VULKAN_SDK_URL'." >&2
82+
ls -l $VULKAN_SDK_FILE >&2
83+
file $VULKAN_SDK_FILE >&2
84+
exit 3
85+
fi
86+
}
87+
88+
# EXISTING_SDK_VERSION=$(detect_sdk_version)
89+
# if [ "$EXISTING_SDK_VERSION" != "" ] ; then
90+
# echo "Existing Vulkan SDK $EXISTING_SDK_VERSION already found in $PWD/vulkan_sdk/ -- aborting installation of $VK_VERSION." >&2
91+
# exit 4
92+
# fi
1893
if [ `uname -m` != 'x86_64' ]; then echo 'Error: Not supported platform.' && exit 1; fi
1994
case `uname -s` in
2095
Linux)
21-
if [ "$VK_VERSION" == "latest" ]; then
22-
VULKAN_SDK_FILE=vulkan-sdk.tar.gz
23-
VULKAN_SDK_URL=https://sdk.lunarg.com/sdk/download/latest/linux/$VULKAN_SDK_FILE?u=
24-
else
25-
VULKAN_SDK_FILE=vulkansdk-linux-x86_64-$VK_VERSION.tar.gz
26-
VULKAN_SDK_URL=https://sdk.lunarg.com/sdk/download/$VK_VERSION/linux/$VULKAN_SDK_FILE
27-
fi
28-
if [ -s $VULKAN_SDK_FILE ]; then
29-
echo "Existing '$VULKAN_SDK_FILE' found." >> /dev/stderr
30-
else
31-
echo "Fetching '$VULKAN_SDK_URL' => '$VULKAN_SDK_FILE'" >> /dev/stderr
32-
wget -q -O $VULKAN_SDK_FILE $VULKAN_SDK_URL
33-
fi
34-
if [ ! -s $VULKAN_SDK_FILE ] ; then
35-
echo "Error downloading $VK_VERSION from '$VULKAN_SDK_URL'."
36-
exit 2
37-
fi
38-
ls -lh $VULKAN_SDK_FILE
39-
echo "extracting..." >> /dev/stderr
40-
tar -C vulkan_sdk -zxf $VULKAN_SDK_FILE
41-
echo "... extracted $(du -hs vulkan_sdk)" >> /dev/stderr
42-
VULKAN_SDK=$PWD/$(ls vulkan_sdk/*/x86_64 -d)
43-
VULKAN_SDK_ROOT=$PWD/vulkan_sdk/`echo $(cd vulkan_sdk && ls)`
44-
# rm -rf vulkan_sdk/source vulkan_sdk/samples
45-
# find vulkan_sdk -type f | grep -v -E 'vulkan|glslang' | xargs rm
46-
# rm $VULKAN_SDK_FILE
96+
export VULKAN_SDK_URL=$(get_linux_url $VK_VERSION)
97+
export VULKAN_SDK_FILE=$(get_linux_filename $VK_VERSION)
98+
fetch_linux $VULKAN_SDK_URL $VULKAN_SDK_FILE
99+
if [ "$(ls -A vulkan_sdk)" == "" ]; then
100+
ls -lh $VULKAN_SDK_FILE >&2
101+
echo "extracting..." >&2
102+
tar -C vulkan_sdk -zxf $VULKAN_SDK_FILE 2>&1 >&2
103+
echo "... extracted $(du -hs vulkan_sdk)" >&2
104+
fi
105+
export VULKAN_SDK=$PWD/$(ls vulkan_sdk/*/x86_64 -d)
106+
export VULKAN_SDK_ROOT=$PWD/vulkan_sdk/`echo $(cd vulkan_sdk && ls)`
107+
# rm $VULKAN_SDK_FILE
108+
# rm -rf vulkan_sdk/source vulkan_sdk/samples
109+
# find vulkan_sdk -type f | grep -v -E 'vulkan|glslang' | xargs rm
47110
;;
48111
Darwin)
112+
echo "TODO=Darwin"
113+
exit 5
49114
;;
50115
*) # Windows
51-
if [ "$VK_VERSION" == "latest" ]; then
52-
VULKAN_SDK_FILE=vulkan-sdk.exe
53-
VULKAN_SDK_URL=https://sdk.lunarg.com/sdk/download/latest/windows/vulkan-sdk.exe?u=
54-
else
55-
VULKAN_SDK_FILE=VulkanSDK-$VK_VERSION-Installer.exe
56-
VULKAN_SDK_URL=https://sdk.lunarg.com/sdk/download/$VK_VERSION/windows/VulkanSDK-$VK_VERSION-Installer.exe?Human=true
57-
fi
58-
if [ -s $VULKAN_SDK_FILE ]; then
59-
echo "Existing '$VULKAN_SDK_FILE' found." >> /dev/stderr
60-
else
61-
echo "Fetching '$VULKAN_SDK_URL' => '$VULKAN_SDK_FILE'" >> /dev/stderr
62-
curl -s $VULKAN_SDK_URL -o $VULKAN_SDK_FILE
63-
fi
64-
if [ ! -s $VULKAN_SDK_FILE ] ; then
65-
echo "Error downloading $VK_VERSION from '$VULKAN_SDK_URL'."
66-
exit 2
67-
fi
68-
ls -lh $VULKAN_SDK_FILE
69-
echo "extracting..." >> /dev/stderr
70-
7z x -aoa ./$VULKAN_SDK_FILE -ovulkan_sdk > nul
71-
echo "... extracted $(du -hs vulkan_sdk)" >> /dev/stderr
72-
VULKAN_SDK_ROOT=$PWD/vulkan_sdk
73-
VULKAN_SDK=$PWD/vulkan_sdk
74-
# rm $VULKAN_SDK_FILE
75-
# rm -rf $VULKAN_SDK/{Samples,Third-Party,Tools,Tools32,Bin32,Lib32}
116+
export VULKAN_SDK_FILE=$(get_windows_filename $VK_VERSION)
117+
export VULKAN_SDK_URL=$(get_windows_url $VK_VERSION)
118+
fetch_windows $VULKAN_SDK_URL $VULKAN_SDK_FILE
119+
if [ "$(ls -A vulkan_sdk)" == "" ]; then
120+
ls -lh $VULKAN_SDK_FILE >&2
121+
echo "extracting..." >&2
122+
7z x -aoa ./$VULKAN_SDK_FILE -ovulkan_sdk 2>&1 > /dev/null
123+
echo "... extracted $(du -hs vulkan_sdk)" >&2
124+
fi
125+
export VULKAN_SDK_ROOT=$PWD/vulkan_sdk
126+
export VULKAN_SDK=$PWD/vulkan_sdk
127+
# rm $VULKAN_SDK_FILE
128+
# rm -rf $VULKAN_SDK/{Samples,Third-Party,Tools,Tools32,Bin32,Lib32}
76129
;;
77130
esac
78-
VULKAN_SDK_VERSION=$(detect_sdk_version)
79-
echo -e "... vulkan_sdk installed:\n\tVULKAN_SDK_VERSION=$VULKAN_SDK_VERSION\n\tVULKAN_SDK=$VULKAN_SDK" >> /dev/stderr
131+
export VULKAN_SDK_VERSION=$(detect_sdk_version)
132+
133+
echo VULKAN_SDK=$VULKAN_SDK
134+
echo VULKAN_SDK_VERSION=$VULKAN_SDK_VERSION
135+
echo VULKAN_SDK_URL=$VULKAN_SDK_URL
136+
137+
# echo -e "... vulkan_sdk installed:\n\tVULKAN_SDK_VERSION=$VULKAN_SDK_VERSION\n\tVULKAN_SDK=$VULKAN_SDK" >&2

0 commit comments

Comments
 (0)