python312Packages.icontract: relax deps (#380554)
[NixPkgs.git] / pkgs / by-name / am / amdvlk / test.nix
blob40da948c68369e1edf1cb6cd563063bbb301bbb5
2   lib,
3   makeImpureTest,
4   coreutils,
5   amdvlk,
6   vulkan-tools,
7 }:
8 makeImpureTest {
9   name = "amdvlk";
10   testedPackage = "amdvlk";
12   sandboxPaths = [
13     "/sys"
14     "/dev/dri"
15   ];
17   nativeBuildInputs = [ vulkan-tools ];
19   VK_ICD_FILENAMES = "${amdvlk}/share/vulkan/icd.d/amd_icd64.json";
20   XDG_RUNTIME_DIR = "/tmp";
22   # AMDVLK needs access to /dev/dri/card0 (or another card), but normally it is rw-rw----
23   # Change the permissions to be rw for everyone
24   prepareRunCommands = ''
25     function reset_perms()
26     {
27       # Reset permissions to previous state
28       for card in /dev/dri/card*; do
29         sudo ${coreutils}/bin/chmod "0''${cardPerms[$card]}" $card
30       done
31     }
33     # Save permissions on /dev/dri/card*
34     declare -A cardPerms
35     for card in /dev/dri/card*; do
36       cardPerms[$card]=$(stat -c "%a" $card)
37     done
39     sudo ${coreutils}/bin/chmod o+rw /dev/dri/card*
40     trap reset_perms EXIT
41   '';
43   testScript = ''
44     # Check that there is at least one card with write-access
45     if ! ls -l /dev/dri/card* | cut -b8-9 | grep -q rw; then
46       echo 'AMDVLK needs rw access to /dev/dri/card0 or a fitting card, please run `sudo chmod o+rw /dev/dri/card*`'
47       exit 1
48     fi
50     vulkaninfo --summary
51     echo "Checking version"
52     vulkaninfo --summary | grep '= ${amdvlk.version}'
53   '';
55   meta = with lib.maintainers; {
56     maintainers = [ Flakebi ];
57   };