From 1c82542488641d363613afa9e3f1f5a2427f3488 Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Fri, 31 Jan 2020 01:29:21 +0100 Subject: [PATCH 1/4] wayland: 1.17.0 -> 1.18.0 This also switches the build from Autotools to Meson. The only difference should be that the libtool archives (.la files) aren't generated anymore. Additionally I've updated the meta attributes and added myself as maintainer. The changelog is in the final release announcement [0] and an overview of most commits is in the alpha release announcement [1]. [0]: https://lists.freedesktop.org/archives/wayland-devel/2020-February/041207.html [1]: https://lists.freedesktop.org/archives/wayland-devel/2020-January/041140.html --- .../development/libraries/wayland/default.nix | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/pkgs/development/libraries/wayland/default.nix b/pkgs/development/libraries/wayland/default.nix index 60d240552d4..08ab4c6748e 100644 --- a/pkgs/development/libraries/wayland/default.nix +++ b/pkgs/development/libraries/wayland/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, pkgconfig +{ lib, stdenv, fetchurl, meson, pkgconfig, ninja , libffi, libxml2, wayland , expat ? null # Build wayland-scanner (currently cannot be disabled as of 1.7.0) }: @@ -8,23 +8,19 @@ assert expat != null; stdenv.mkDerivation rec { pname = "wayland"; - version = "1.17.0"; + version = "1.18.0"; src = fetchurl { url = "https://wayland.freedesktop.org/releases/${pname}-${version}.tar.xz"; - sha256 = "194ibzwpdcn6fvk4xngr4bf5axpciwg2bj82fdvz88kfmjw13akj"; + sha256 = "0k995rn96xkplrapz5k648j651wc43kq817xk1x8280h16gsfxa6"; }; separateDebugInfo = true; - configureFlags = [ - "--disable-documentation" - ] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ - "--with-host-scanner" - ]; + mesonFlags = [ "-Ddocumentation=false" ]; nativeBuildInputs = [ - pkgconfig + meson pkgconfig ninja ] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ # for wayland-scanner during build wayland @@ -33,11 +29,19 @@ stdenv.mkDerivation rec { buildInputs = [ libffi /* docbook_xsl doxygen graphviz libxslt xmlto */ expat libxml2 ]; meta = { - description = "Reference implementation of the wayland protocol"; + description = "Core Wayland window system code and protocol"; + longDescription = '' + Wayland is a project to define a protocol for a compositor to talk to its + clients as well as a library implementation of the protocol. + The wayland protocol is essentially only about input handling and buffer + management, but also handles drag and drop, selections, window management + and other interactions that must go through the compositor (but not + rendering). + ''; homepage = https://wayland.freedesktop.org/; - license = lib.licenses.mit; + license = lib.licenses.mit; # Expat version platforms = lib.platforms.linux; - maintainers = with lib.maintainers; [ codyopel ]; + maintainers = with lib.maintainers; [ primeos codyopel ]; }; passthru.version = version; From c16b065cc959158717b1ccc6098881eec7ff926f Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Fri, 31 Jan 2020 15:36:41 +0100 Subject: [PATCH 2/4] wayland: Add a flag to build the documentation But don't build the documentation by default. --- pkgs/development/libraries/wayland/default.nix | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/wayland/default.nix b/pkgs/development/libraries/wayland/default.nix index 08ab4c6748e..db476da55a1 100644 --- a/pkgs/development/libraries/wayland/default.nix +++ b/pkgs/development/libraries/wayland/default.nix @@ -1,6 +1,8 @@ { lib, stdenv, fetchurl, meson, pkgconfig, ninja , libffi, libxml2, wayland , expat ? null # Build wayland-scanner (currently cannot be disabled as of 1.7.0) +, withDocumentation ? false, graphviz-nox, doxygen, libxslt, xmlto, python3 +, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42 }: # Require the optional to be enabled until upstream fixes or removes the configure flag @@ -17,16 +19,26 @@ stdenv.mkDerivation rec { separateDebugInfo = true; - mesonFlags = [ "-Ddocumentation=false" ]; + mesonFlags = [ "-Ddocumentation=${lib.boolToString withDocumentation}" ]; + + postPatch = lib.optionalString withDocumentation '' + patchShebangs doc/doxygen/gen-doxygen.py + ''; nativeBuildInputs = [ meson pkgconfig ninja ] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ # for wayland-scanner during build wayland + ] ++ lib.optionals withDocumentation [ + (graphviz-nox.override { pango = null; }) # To avoid an infinite recursion + doxygen libxslt xmlto python3 docbook_xml_dtd_45 ]; - buildInputs = [ libffi /* docbook_xsl doxygen graphviz libxslt xmlto */ expat libxml2 ]; + buildInputs = [ libffi expat libxml2 + ] ++ lib.optionals withDocumentation [ + docbook_xsl docbook_xml_dtd_45 docbook_xml_dtd_42 + ]; meta = { description = "Core Wayland window system code and protocol"; From de3f4fe9005f7814ef61bc75b25c0f69a0ba1e53 Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Tue, 4 Feb 2020 22:16:04 +0100 Subject: [PATCH 3/4] wayland: Fix the cross-compilation with Meson The build sandbox provides only wayland-scanner and not the library and the wayland-egl symbols check test must use nm prefixed with the target triplet. --- pkgs/development/libraries/wayland/default.nix | 15 +++++++++++---- .../wayland/fix-wayland-cross-compilation.patch | 14 ++++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 pkgs/development/libraries/wayland/fix-wayland-cross-compilation.patch diff --git a/pkgs/development/libraries/wayland/default.nix b/pkgs/development/libraries/wayland/default.nix index db476da55a1..ef88e690067 100644 --- a/pkgs/development/libraries/wayland/default.nix +++ b/pkgs/development/libraries/wayland/default.nix @@ -8,7 +8,9 @@ # Require the optional to be enabled until upstream fixes or removes the configure flag assert expat != null; -stdenv.mkDerivation rec { +let + isCross = stdenv.buildPlatform != stdenv.hostPlatform; +in stdenv.mkDerivation rec { pname = "wayland"; version = "1.18.0"; @@ -21,15 +23,20 @@ stdenv.mkDerivation rec { mesonFlags = [ "-Ddocumentation=${lib.boolToString withDocumentation}" ]; + patches = lib.optional isCross ./fix-wayland-cross-compilation.patch; + postPatch = lib.optionalString withDocumentation '' patchShebangs doc/doxygen/gen-doxygen.py + '' + lib.optionalString isCross '' + substituteInPlace egl/meson.build --replace \ + "find_program('nm').path()" \ + "find_program('${stdenv.cc.targetPrefix}nm').path()" ''; nativeBuildInputs = [ meson pkgconfig ninja - ] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ - # for wayland-scanner during build - wayland + ] ++ lib.optionals isCross [ + wayland # For wayland-scanner during the build ] ++ lib.optionals withDocumentation [ (graphviz-nox.override { pango = null; }) # To avoid an infinite recursion doxygen libxslt xmlto python3 docbook_xml_dtd_45 diff --git a/pkgs/development/libraries/wayland/fix-wayland-cross-compilation.patch b/pkgs/development/libraries/wayland/fix-wayland-cross-compilation.patch new file mode 100644 index 00000000000..77639acb653 --- /dev/null +++ b/pkgs/development/libraries/wayland/fix-wayland-cross-compilation.patch @@ -0,0 +1,14 @@ +diff --git a/src/meson.build b/src/meson.build +index 3e8c9bf..75241cb 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -55,8 +55,7 @@ pkgconfig.generate( + ) + + if meson.is_cross_build() +- scanner_dep = dependency('wayland-scanner', native: true, version: '>=1.14.0') +- wayland_scanner_for_build = find_program(scanner_dep.get_pkgconfig_variable('wayland_scanner')) ++ wayland_scanner_for_build = find_program('wayland-scanner', native: true, version: '>=1.14.0') + else + wayland_scanner_for_build = wayland_scanner + endif From ded18bd210172ae03660852d6741427b89f3a2d5 Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Wed, 5 Feb 2020 00:52:48 +0100 Subject: [PATCH 4/4] wayland-protocols: Update meta and add myself as maintainer --- pkgs/development/libraries/wayland/protocols.nix | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/wayland/protocols.nix b/pkgs/development/libraries/wayland/protocols.nix index 0b367f4a930..8c2823d74b0 100644 --- a/pkgs/development/libraries/wayland/protocols.nix +++ b/pkgs/development/libraries/wayland/protocols.nix @@ -17,10 +17,17 @@ stdenv.mkDerivation rec { meta = { description = "Wayland protocol extensions"; - homepage = https://wayland.freedesktop.org/; - license = lib.licenses.mit; + longDescription = '' + wayland-protocols contains Wayland protocols that add functionality not + available in the Wayland core protocol. Such protocols either add + completely new functionality, or extend the functionality of some other + protocol either in Wayland core, or some other protocol in + wayland-protocols. + ''; + homepage = https://gitlab.freedesktop.org/wayland/wayland-protocols; + license = lib.licenses.mit; # Expat version platforms = lib.platforms.linux; - maintainers = with lib.maintainers; [ ]; + maintainers = with lib.maintainers; [ primeos ]; }; passthru.version = version;