From 428e0fdc540fb01cb02720009e40f83308877f34 Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Mon, 25 Jan 2021 14:52:05 +0100 Subject: libxkbcommon: Add a "USE flag" for Wayland support (#110693) This can be used to enable the optional "interactive-wayland" subcommand of xkbcli. --- pkgs/development/libraries/libxkbcommon/default.nix | 14 +++++++++++--- .../libxkbcommon/fix-cross-compilation.patch | 20 ++++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 pkgs/development/libraries/libxkbcommon/fix-cross-compilation.patch (limited to 'pkgs/development/libraries/libxkbcommon') diff --git a/pkgs/development/libraries/libxkbcommon/default.nix b/pkgs/development/libraries/libxkbcommon/default.nix index c0785b34e89..5d9878c33f4 100644 --- a/pkgs/development/libraries/libxkbcommon/default.nix +++ b/pkgs/development/libraries/libxkbcommon/default.nix @@ -2,6 +2,8 @@ , xkeyboard_config, libxcb, libxml2 , python3 , libX11 +# To enable the "interactive-wayland" subcommand of xkbcli: +, withWaylandSupport ? false, wayland, wayland-protocols }: stdenv.mkDerivation rec { @@ -13,18 +15,24 @@ stdenv.mkDerivation rec { sha256 = "0lmwglj16anhpaq0h830xsl1ivknv75i4lir9bk88aq73s2jy852"; }; + patches = [ + ./fix-cross-compilation.patch + ]; + outputs = [ "out" "dev" "doc" ]; - nativeBuildInputs = [ meson ninja pkg-config yacc doxygen ]; - buildInputs = [ xkeyboard_config libxcb libxml2 ]; + nativeBuildInputs = [ meson ninja pkg-config yacc doxygen ] + ++ lib.optional withWaylandSupport wayland; + buildInputs = [ xkeyboard_config libxcb libxml2 ] + ++ lib.optionals withWaylandSupport [ wayland wayland-protocols ]; checkInputs = [ python3 ]; mesonFlags = [ "-Dxkb-config-root=${xkeyboard_config}/etc/X11/xkb" "-Dxkb-config-extra-path=/etc/xkb" # default=$sysconfdir/xkb ($out/etc) "-Dx-locale-root=${libX11.out}/share/X11/locale" - "-Denable-wayland=false" "-Denable-xkbregistry=false" # Optional, separate library (TODO: Install into extra output) + "-Denable-wayland=${lib.boolToString withWaylandSupport}" ]; doCheck = true; diff --git a/pkgs/development/libraries/libxkbcommon/fix-cross-compilation.patch b/pkgs/development/libraries/libxkbcommon/fix-cross-compilation.patch new file mode 100644 index 00000000000..55730554a90 --- /dev/null +++ b/pkgs/development/libraries/libxkbcommon/fix-cross-compilation.patch @@ -0,0 +1,20 @@ +diff --git a/meson.build b/meson.build +index 47c436f..536c60b 100644 +--- a/meson.build ++++ b/meson.build +@@ -440,13 +440,12 @@ if build_tools + if get_option('enable-wayland') + wayland_client_dep = dependency('wayland-client', version: '>=1.2.0', required: false) + wayland_protocols_dep = dependency('wayland-protocols', version: '>=1.12', required: false) +- wayland_scanner_dep = dependency('wayland-scanner', required: false, native: true) +- if not wayland_client_dep.found() or not wayland_protocols_dep.found() or not wayland_scanner_dep.found() ++ if not wayland_client_dep.found() or not wayland_protocols_dep.found() + error('''The Wayland xkbcli programs require wayland-client >= 1.2.0, wayland-protocols >= 1.7 which were not found. + You can disable the Wayland xkbcli programs with -Denable-wayland=false.''') + endif + +- wayland_scanner = find_program(wayland_scanner_dep.get_pkgconfig_variable('wayland_scanner')) ++ wayland_scanner = find_program('wayland-scanner', native: true) + wayland_scanner_code_gen = generator( + wayland_scanner, + output: '@BASENAME@-protocol.c', -- cgit 1.4.1