Skip to content

Commit a91f239

Browse files
committed
Add Vulkan SDK symlink creation and cleanup cached version handling
- Update workflow to create and manage Vulkan SDK version-specific symlinks on Linux. - Remove outdated version caching logic from `CMakeLists.txt`.
1 parent b389bcc commit a91f239

File tree

2 files changed

+65
-21
lines changed

2 files changed

+65
-21
lines changed

.github/workflows/workflow.yml

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,71 @@ jobs:
307307
- name: Install Vulkan SDK
308308
run: ${{ matrix.vulkan-install }}
309309

310+
- name: Create Vulkan SDK version symlinks (Ubuntu)
311+
if: runner.os == 'Linux'
312+
run: |
313+
# Get the current Vulkan SDK version
314+
CURRENT_VERSION=$(basename $(dirname $VULKAN_SDK))
315+
echo "Current Vulkan SDK version: $CURRENT_VERSION"
316+
317+
# Create a directory to store version information
318+
VULKAN_BASE_DIR=$(dirname $(dirname $VULKAN_SDK))
319+
echo "Vulkan base directory: $VULKAN_BASE_DIR"
320+
321+
# Create a symlink for the 'latest' directory
322+
mkdir -p $VULKAN_BASE_DIR/latest
323+
ln -sf $VULKAN_SDK $VULKAN_BASE_DIR/latest/x86_64
324+
echo "Created symlink from latest to $CURRENT_VERSION"
325+
326+
# Create a file to track the current version for future runs
327+
echo $CURRENT_VERSION > $VULKAN_BASE_DIR/current_version.txt
328+
329+
# Check if there are any previous versions we need to create symlinks for
330+
if [ -f "$VULKAN_BASE_DIR/previous_versions.txt" ]; then
331+
echo "Found previous versions file, creating symlinks for all previous versions"
332+
while read -r version; do
333+
if [ "$version" != "$CURRENT_VERSION" ] && [ -n "$version" ]; then
334+
echo "Creating symlink from $version to $CURRENT_VERSION"
335+
mkdir -p $VULKAN_BASE_DIR/$version
336+
ln -sf $VULKAN_SDK $VULKAN_BASE_DIR/$version/x86_64
337+
fi
338+
done < $VULKAN_BASE_DIR/previous_versions.txt
339+
fi
340+
341+
# Add current version to the list of previous versions for future runs
342+
if [ ! -f "$VULKAN_BASE_DIR/previous_versions.txt" ] || ! grep -q "^$CURRENT_VERSION$" "$VULKAN_BASE_DIR/previous_versions.txt"; then
343+
echo $CURRENT_VERSION >> $VULKAN_BASE_DIR/previous_versions.txt
344+
fi
345+
346+
# For the first run or if we need to handle hardcoded paths in existing build files,
347+
# create symlinks for known versions that might be referenced
348+
for version in "1.4.313.0" "1.4.321.0"; do
349+
if [ "$version" != "$CURRENT_VERSION" ]; then
350+
echo "Creating symlink from $version to $CURRENT_VERSION"
351+
mkdir -p $VULKAN_BASE_DIR/$version
352+
ln -sf $VULKAN_SDK $VULKAN_BASE_DIR/$version/x86_64
353+
fi
354+
done
355+
356+
# Find any version references in build files and create symlinks for them
357+
if [ -d "${{github.workspace}}/attachments/build" ]; then
358+
echo "Scanning build directory for version references..."
359+
# Find all version patterns like X.Y.ZZZ.W in build files
360+
FOUND_VERSIONS=$(grep -r -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" ${{github.workspace}}/attachments/build 2>/dev/null | grep -v "$CURRENT_VERSION" | sort | uniq || echo "")
361+
362+
for version in $FOUND_VERSIONS; do
363+
if [[ $version =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]] && [ "$version" != "$CURRENT_VERSION" ]; then
364+
echo "Found version reference in build files: $version, creating symlink"
365+
mkdir -p $VULKAN_BASE_DIR/$version
366+
ln -sf $VULKAN_SDK $VULKAN_BASE_DIR/$version/x86_64
367+
fi
368+
done
369+
fi
370+
371+
# List all created symlinks
372+
echo "Created the following Vulkan SDK version symlinks:"
373+
find $VULKAN_BASE_DIR -type l -exec ls -la {} \;
374+
310375
- name: Verify Vulkan Installation (Windows)
311376
if: runner.os == 'Windows'
312377
run: |

attachments/CMakeLists.txt

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,6 @@ if(NOT DEFINED ENV{VULKAN_SDK})
88
message(WARNING "VULKAN_SDK environment variable is not set. This may cause issues with finding Vulkan SDK.")
99
endif()
1010

11-
# Extract Vulkan SDK version from path to detect version changes
12-
if(DEFINED ENV{VULKAN_SDK})
13-
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+" VULKAN_SDK_VERSION "$ENV{VULKAN_SDK}")
14-
15-
# Check if cached version exists and is different from current version
16-
if(DEFINED CACHE{VULKAN_SDK_CACHED_VERSION} AND NOT VULKAN_SDK_VERSION STREQUAL VULKAN_SDK_CACHED_VERSION)
17-
message(STATUS "Vulkan SDK version changed from ${VULKAN_SDK_CACHED_VERSION} to ${VULKAN_SDK_VERSION}")
18-
message(STATUS "Clearing CMake cache to ensure correct paths are used")
19-
20-
# Force CMake to reconfigure by removing cache entries related to Vulkan
21-
unset(Vulkan_INCLUDE_DIR CACHE)
22-
unset(Vulkan_LIBRARY CACHE)
23-
unset(VulkanHpp_CPPM_DIR CACHE)
24-
unset(GLSLANG_VALIDATOR CACHE)
25-
unset(SLANGC_EXECUTABLE CACHE)
26-
endif()
27-
28-
# Store current version in cache
29-
set(VULKAN_SDK_CACHED_VERSION ${VULKAN_SDK_VERSION} CACHE STRING "Cached Vulkan SDK version" FORCE)
30-
message(STATUS "Using Vulkan SDK version: ${VULKAN_SDK_VERSION}")
31-
endif()
3211

3312
project (VulkanTutorial)
3413

0 commit comments

Comments
 (0)