amdvlk: add nixos test

This commit is contained in:
Sebastian Neubauer 2022-11-14 11:36:20 +01:00
parent fded5825fd
commit 3ac01325a6
2 changed files with 52 additions and 0 deletions

View File

@ -1,4 +1,5 @@
{ stdenv
, callPackage
, lib
, fetchRepoProject
, writeScript
@ -102,6 +103,8 @@ in stdenv.mkDerivation rec {
setHash "$hash"
'';
passthru.impureTests = { amdvlk = callPackage ./test.nix {}; };
meta = with lib; {
description = "AMD Open Source Driver For Vulkan";
homepage = "https://github.com/GPUOpen-Drivers/AMDVLK";

View File

@ -0,0 +1,49 @@
{ lib, makeImpureTest, coreutils, amdvlk, vulkan-tools }:
makeImpureTest {
name = "amdvlk";
testedPackage = "amdvlk";
sandboxPaths = [ "/sys" "/dev/dri" ];
nativeBuildInputs = [ vulkan-tools ];
VK_ICD_FILENAMES = "${amdvlk}/share/vulkan/icd.d/amd_icd64.json";
XDG_RUNTIME_DIR = "/tmp";
# AMDVLK needs access to /dev/dri/card0 (or another card), but normally it is rw-rw----
# Change the permissions to be rw for everyone
prepareRunCommands = ''
function reset_perms()
{
# Reset permissions to previous state
for card in /dev/dri/card*; do
sudo ${coreutils}/bin/chmod "0''${cardPerms[$card]}" $card
done
}
# Save permissions on /dev/dri/card*
declare -A cardPerms
for card in /dev/dri/card*; do
cardPerms[$card]=$(stat -c "%a" $card)
done
sudo ${coreutils}/bin/chmod o+rw /dev/dri/card*
trap reset_perms EXIT
'';
testScript = ''
# Check that there is at least one card with write-access
if ! ls -l /dev/dri/card* | cut -b8-9 | grep -q rw; then
echo 'AMDVLK needs rw access to /dev/dri/card0 or a fitting card, please run `sudo chmod o+rw /dev/dri/card*`'
exit 1
fi
vulkaninfo --summary
echo "Checking version"
vulkaninfo --summary | grep '= ${amdvlk.version}'
'';
meta = with lib.maintainers; {
maintainers = [ Flakebi ];
};
}