openxray: 2188-november-2023-rc1 -> 2921-january-2025-rc1 (#375925)
[NixPkgs.git] / pkgs / by-name / li / libxkbcommon_8 / package.nix
blob88e3830d150cf1d63c7814508a710d00cfe93bec
2   lib,
3   stdenv,
4   fetchurl,
5   meson,
6   ninja,
7   pkg-config,
8   bison,
9   doxygen,
10   xkeyboard_config,
11   libxcb,
12   libxml2,
13   python3,
14   libX11,
15   # To enable the "interactive-wayland" subcommand of xkbcli. This is the
16   # wayland equivalent of `xev` on X11.
17   xorg,
18   withWaylandTools ? stdenv.hostPlatform.isLinux,
19   wayland,
20   wayland-protocols,
21   wayland-scanner,
22   testers,
25 stdenv.mkDerivation (finalAttrs: {
26   pname = "libxkbcommon";
27   version = "1.7.0";
29   src = fetchurl {
30     url = with finalAttrs; "https://xkbcommon.org/download/${pname}-${version}.tar.xz";
31     hash = "sha256-ZXgvChCktFWvnGuqtwQOL1N1IMqi7CCSgFzf02hjskc=";
32   };
34   patches = [
35     # Disable one Xvfb test as it fails for permission checks.
36     ./disable-x11com.patch
37   ];
39   outputs = [
40     "out"
41     "dev"
42     "doc"
43   ];
45   depsBuildBuild = [ pkg-config ];
46   nativeBuildInputs = [
47     meson
48     ninja
49     pkg-config
50     bison
51     doxygen
52     xorg.xvfb
53   ] ++ lib.optional withWaylandTools wayland-scanner;
54   buildInputs =
55     [
56       xkeyboard_config
57       libxcb
58       libxml2
59     ]
60     ++ lib.optionals withWaylandTools [
61       wayland
62       wayland-protocols
63     ];
64   nativeCheckInputs = [ python3 ];
66   mesonFlags = [
67     "-Dxkb-config-root=${xkeyboard_config}/etc/X11/xkb"
68     "-Dxkb-config-extra-path=/etc/xkb" # default=$sysconfdir/xkb ($out/etc)
69     "-Dx-locale-root=${libX11.out}/share/X11/locale"
70     "-Denable-docs=true"
71     "-Denable-wayland=${lib.boolToString withWaylandTools}"
72   ];
74   doCheck = true;
75   preCheck = ''
76     patchShebangs ../test/
77   '';
79   passthru = {
80     tests.pkg-config = testers.hasPkgConfigModules {
81       package = finalAttrs.finalPackage;
82     };
83   };
85   meta = with lib; {
86     description = "Library to handle keyboard descriptions";
87     longDescription = ''
88       libxkbcommon is a keyboard keymap compiler and support library which
89       processes a reduced subset of keymaps as defined by the XKB (X Keyboard
90       Extension) specification. It also contains a module for handling Compose
91       and dead keys.
92     ''; # and a separate library for listing available keyboard layouts.
93     homepage = "https://xkbcommon.org";
94     changelog = "https://github.com/xkbcommon/libxkbcommon/blob/xkbcommon-${finalAttrs.version}/NEWS";
95     license = licenses.mit;
96     maintainers = with maintainers; [
97       primeos
98       ttuegel
99     ];
100     mainProgram = "xkbcli";
101     platforms = with platforms; unix;
102     pkgConfigModules = [
103       "xkbcommon"
104       "xkbcommon-x11"
105       "xkbregistry"
106     ];
107   };