gfxreconstruct: wrap properly

Wrap the capture app so that it works from nix-shell, without installing
gfxreconstruct (the layer needs to be available to Vulkan).
This commit is contained in:
Flakebi 2023-04-15 14:27:56 +02:00 committed by Sebastian Neubauer
parent 97b17f3236
commit 0dfdc9a874

View File

@ -50,10 +50,17 @@ stdenv.mkDerivation rec {
--replace "scriptdir, '..', cmd" 'scriptdir'
'';
# Fix the path to the layer library
# Fix the paths to load the layer.
# Also remove the .py suffix on files so that gfxrecon
# does not try to start the wrapper bash scripts with python.
postInstall = ''
substituteInPlace $out/share/vulkan/explicit_layer.d/VkLayer_gfxreconstruct.json \
--replace 'libVkLayer_gfxreconstruct.so' "$out/lib/libVkLayer_gfxreconstruct.so"
for f in $out/bin/*.py; do
mv -- "$f" "''${f%%.py}"
done
wrapProgram $out/bin/gfxrecon-capture-vulkan \
--prefix VK_ADD_LAYER_PATH : "$out/share/vulkan/explicit_layer.d"
wrapProgram $out/bin/gfxrecon-replay \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ vulkan-loader ]}
'';
@ -61,6 +68,7 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "Graphics API Capture and Replay Tools";
homepage = "https://github.com/LunarG/gfxreconstruct/";
changelog = "https://github.com/LunarG/gfxreconstruct/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ Flakebi ];
platforms = platforms.linux;