Tweaked the action
Some checks failed
Build VulkanEngine / build (push) Failing after 3s

This commit is contained in:
Alexandre 2026-10-07 13:24:28 +02:00
parent 9515c4293e
commit a78a17fdde
3 changed files with 157 additions and 178 deletions

View File

@ -12,66 +12,13 @@ on:
jobs:
build:
runs-on: ubuntu-latest
container: git.alexdelcamp.fr/alexandre_1a/flake-actions:latest
steps:
- name: Update apt
run: sudo apt update
- name: Install dependencies
run: |
sudo apt install -y \
cmake \
ninja-build \
libvulkan-memory-allocator-dev \
libvulkan-volk-dev \
pkg-config \
g++ \
libvulkan1 \
glslang-tools \
libglfw3-dev \
libcli11-dev \
libglm-dev \
libpulse-dev \
libwayland-dev \
wayland-protocols \
libxkbcommon-dev
- name: Install Slang
run: |
SLANG_VERSION="2026.19"
curl -fL \
"https://github.com/shader-slang/slang/releases/download/v${SLANG_VERSION}/slang-${SLANG_VERSION}-linux-x86_64.tar.gz" \
-o /tmp/slang.tar.gz
sudo tar \
-xzf /tmp/slang.tar.gz \
-C /usr/local
echo "Slang installed:"
ls -la /usr/local/bin/slangc
- name: Install Vulkan SDK
uses: humbletim/setup-vulkan-sdk@v1.2.1
with:
vulkan-query-version: 1.4.335.0
vulkan-components: Vulkan-Headers, Vulkan-Loader
vulkan-use-cache: true
- name: Check dependencies
run: |
cmake --version
ninja --version
g++ --version
echo "glslang:"
glslangValidator --version
echo "Slang:"
slangc -v
- name: Checkout
uses: actions/checkout@v4
with:
@ -81,51 +28,30 @@ jobs:
- name: Configure
run: |
cmake \
--preset release
- name: Debug Vulkan headers
run: |
echo
echo "=== System Vulkan ==="
find /usr/include/vulkan -maxdepth 1 -type f \
-name '*.h' -print | head -20
echo
echo "=== Header versions ==="
grep -R \
-E 'VK_HEADER_VERSION(_COMPLETE)?' \
bin/release/_deps 2>/dev/null | head -20 || true
grep -E 'VK_HEADER_VERSION(_COMPLETE)?' \
/usr/include/vulkan/vulkan_core.h
- name: Check Vulkan versions
run: |
echo "System:"
grep -E 'VK_HEADER_VERSION|VK_HEADER_VERSION_COMPLETE' \
/usr/include/vulkan/vulkan_core.h
echo "enum helper:"
grep -E 'VK_HEADER_VERSION' \
/usr/include/vulkan/vk_enum_string_helper.h || true
nix develop --command cmake -S . -B build \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release
- name: Build
run: |
cmake \
--build \
--preset release \
--parallel
nix develop --command cmake --build build \
--parallel 2
- name: Upload des artefacts
if: success()
uses: actions/upload-artifact@v3
- name: Check binary
run: |
find build -type f -executable
find build -type f -executable \
-exec sh -c '
file "$1"
readelf -l "$1" | grep interpreter || true
readelf -d "$1" | grep -E "RPATH|RUNPATH|NEEDED" || true
' _ {} \;
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: vulkan-engine
path: |
./engine-bundle
if-no-files-found: warn
archive: false
name: VulkanEngine-linux-x86_64
path: build/
- name: Notify routine
if: always()

View File

@ -9,10 +9,44 @@ include(FetchContent)
include(CheckIPOSupported)
check_ipo_supported(RESULT LTO_SUPPORTED OUTPUT LTO_ERROR)
option(VULKANENGINE_PORTABLE
"Build a Linux binary without Nix-specific runtime paths"
OFF
)
option(VULKANENGINE_BUNDLE
"Build a Linux bundle using libraries from the bundle directory"
OFF
)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# RPATH / runtime paths
if(VULKANENGINE_PORTABLE)
message(STATUS "VulkanEngine: PORTABLE build")
set(CMAKE_SKIP_BUILD_RPATH TRUE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
set(CMAKE_INSTALL_RPATH "")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
elseif(VULKANENGINE_BUNDLE)
message(STATUS "VulkanEngine: BUNDLE build")
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
# Executables are installed in bin/
# Libraries are installed in lib/
set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
else()
message(STATUS "VulkanEngine: normal build")
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
find_program(GCC_AR NAMES gcc-ar REQUIRED)
find_program(GCC_RANLIB NAMES gcc-ranlib REQUIRED)
@ -29,26 +63,13 @@ FetchContent_Declare(
)
FetchContent_MakeAvailable(fastgltf)
FetchContent_Declare(
vk_bootstrap
GIT_REPOSITORY https://github.com/charles-lunarg/vk-bootstrap
GIT_TAG v1.4.321
)
FetchContent_MakeAvailable(vk_bootstrap)
FetchContent_Declare(
fmt
GIT_REPOSITORY https://github.com/fmtlib/fmt.git
GIT_TAG 11.2.0
)
FetchContent_MakeAvailable(fmt)
# Find all package dependencies
find_package( glfw3 REQUIRED )
find_package( glm REQUIRED )
find_package( VulkanMemoryAllocator CONFIG REQUIRED )
find_package( CLI11 REQUIRED )
find_package( simdjson REQUIRED )
# Shader compilers
add_executable (glslang::validator IMPORTED)
find_program (
@ -116,8 +137,20 @@ function ( addBinary BINARY_NAME )
target_include_directories( ${BINARY_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src )
# Sets the output dir to have clear separation between binaries
set_target_properties ( ${BINARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${BINARY_NAME} )
set_target_properties ( ${BINARY_NAME} PROPERTIES CXX_STANDARD 20 ) # Uses C++20
set_target_properties (
${BINARY_NAME}
PROPERTIES
RUNTIME_OUTPUT_DIRECTORY
${CMAKE_BINARY_DIR}/${BINARY_NAME}
CXX_STANDARD
20 # C++ 20
CXX_STANDARD_REQUIRED
ON
CXX_EXTENSIONS
OFF
CXX_SCAN_FOR_MODULES
OFF
)
# Sets per binary LTO
if(LTO_SUPPORTED AND CMAKE_BUILD_TYPE STREQUAL "Release")
set_target_properties(${BINARY_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE)
@ -234,8 +267,8 @@ list(
lib_list
# Libs used
glfw
fmt::fmt
vk-bootstrap::vk-bootstrap
fmt
vk-bootstrap
#Vulkan::UtilityHeaders
vulkan
CLI11::CLI11

148
flake.nix
View File

@ -1,5 +1,5 @@
{
description = "General Vulkan dev environment";
description = "VulkanEngine development environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
@ -13,77 +13,97 @@
inherit system;
config.allowUnfree = true;
};
vulkanPackages = with pkgs; [
vulkan-headers
vulkan-loader
vulkan-validation-layers
vulkan-tools
vulkan-utility-libraries
vulkan-memory-allocator
vulkan-volk
vk-bootstrap
];
developmentPackages = with pkgs; [
# Shaders
shader-slang
glslang
# Vulkan
vulkan-headers
vulkan-loader
vulkan-validation-layers
vulkan-tools
vulkan-utility-libraries
vulkan-memory-allocator
vulkan-volk
vk-bootstrap
# Windowing
glfw3
wayland
wayland-protocols
wayland-scanner
libxkbcommon
# Audio
libpulseaudio
libpulseaudio.dev
# Libraries
fmt
cli11
simdjson
glm
nlohmann_json
tinyobjloader
tinygltf
stb
# Build
cmake
ninja
pkg-config
# Debug
gdb
renderdoc
];
in {
devShells.default = pkgs.mkShell {
name = "vulkan";
hardeningDisable = [ "fortify" ];
name = "vulkan-engine";
packages = with pkgs; [
# Shader compile
shader-slang
glslang
# Vulkan
vulkan-headers
vulkan-loader
vulkan-validation-layers
vulkan-tools
vulkan-utility-libraries
vk-bootstrap
vulkan-memory-allocator
vulkan-volk
# Wayland
wayland
wayland-protocols
wayland-scanner
libxkbcommon
# Miniaudio
libpulseaudio
libpulseaudio.dev
# Other libraries
glfw3
SDL2
sdl3
fmt
cli11
simdjson
#imgui
tinyobjloader
nlohmann_json
tinygltf
# fastgltf
stb
#ktx-tools
glm
cmake
ninja
pkg-config
# Debug
gdb
renderdoc
# git
hardeningDisable = [
"fortify"
];
# Environment Variables
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [
pkgs.vulkan-loader
pkgs.shaderc.lib
pkgs.SDL2
pkgs.vk-bootstrap
#pkgs.sdl3
];
VK_LAYER_PATH = "${pkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d";
VULKAN_SDK = "${pkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d";
GIT="${pkgs.git}";
packages = developmentPackages;
VK_LAYER_PATH =
"${pkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d";
VULKAN_SDK =
"${pkgs.vulkan-validation-layers}";
shellHook = ''
echo "Vulkan loaded"
echo "MangoHud version: $(mangohud --version 2>/dev/null || echo 'non trouvée')"
echo "VulkanEngine development environment"
echo "CMake: $(cmake --version | head -n1)"
echo "Ninja: $(ninja --version)"
echo "GCC: $(g++ --version | head -n1)"
echo "GLSLang: $(glslangValidator --version | head -n1)"
echo "Slang: $(slangc -v | head -n1)"
unset SOURCE_DATE_EPOCH
#unset NIX_ENFORCE_NO_NATIVE
echo $LD_LIBRARY_PATH
'';
};
packages.engine = pkgs.callPackage ./package.nix { };
packages.default = self.packages.${system}.engine;
});
packages.engine =
pkgs.callPackage ./package.nix {};
packages.default =
self.packages.${system}.engine;
}
);
}