about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/wayland
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/wayland')
-rw-r--r--nixpkgs/pkgs/development/libraries/wayland/0001-add-placeholder-for-nm.patch25
-rw-r--r--nixpkgs/pkgs/development/libraries/wayland/default.nix125
-rw-r--r--nixpkgs/pkgs/development/libraries/wayland/protocols.nix44
3 files changed, 194 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/wayland/0001-add-placeholder-for-nm.patch b/nixpkgs/pkgs/development/libraries/wayland/0001-add-placeholder-for-nm.patch
new file mode 100644
index 000000000000..f6745e6f9433
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/wayland/0001-add-placeholder-for-nm.patch
@@ -0,0 +1,25 @@
+From 378623b0e39b12bb04d3a3a1e08e64b31bd7d99d Mon Sep 17 00:00:00 2001
+From: Florian Klink <flokli@flokli.de>
+Date: Fri, 27 Nov 2020 10:22:20 +0100
+Subject: [PATCH] add placeholder for @nm@
+
+---
+ egl/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/egl/meson.build b/egl/meson.build
+index dee9b1d..e477546 100644
+--- a/egl/meson.build
++++ b/egl/meson.build
+@@ -11,7 +11,7 @@ wayland_egl = library(
+ 
+ executable('wayland-egl-abi-check', 'wayland-egl-abi-check.c')
+ 
+-nm_path = find_program('nm').path()
++nm_path = find_program('@nm@').path()
+ 
+ test(
+ 	'wayland-egl symbols check',
+-- 
+2.29.2
+
diff --git a/nixpkgs/pkgs/development/libraries/wayland/default.nix b/nixpkgs/pkgs/development/libraries/wayland/default.nix
new file mode 100644
index 000000000000..08741c29dd6d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/wayland/default.nix
@@ -0,0 +1,125 @@
+{ lib
+, stdenv
+, fetchurl
+, fetchpatch
+, substituteAll
+, meson
+, pkg-config
+, ninja
+, wayland-scanner
+, expat
+, libxml2
+, withLibraries ? stdenv.isLinux
+, libffi
+, withDocumentation ? withLibraries && stdenv.hostPlatform == stdenv.buildPlatform
+, graphviz-nox
+, doxygen
+, libxslt
+, xmlto
+, python3
+, docbook_xsl
+, docbook_xml_dtd_45
+, docbook_xml_dtd_42
+}:
+
+# Documentation is only built when building libraries.
+assert withDocumentation -> withLibraries;
+
+let
+  isCross = stdenv.buildPlatform != stdenv.hostPlatform;
+in
+stdenv.mkDerivation rec {
+  pname = "wayland";
+  version = "1.19.0";
+
+  src = fetchurl {
+    url = "https://wayland.freedesktop.org/releases/${pname}-${version}.tar.xz";
+    sha256 = "05bd2vphyx8qwa1mhsj1zdaiv4m4v94wrlssrn0lad8d601dkk5s";
+  };
+
+  patches = [
+    # Picked from upstream 'main' branch for Darwin support.
+    (fetchpatch {
+      url = "https://gitlab.freedesktop.org/wayland/wayland/-/commit/f452e41264387dee4fd737cbf1af58b34b53941b.patch";
+      sha256 = "00mk32a01vgn31sm3wk4p8mfwvqv3xv02rxvdj1ygnzgb1ac62r7";
+    })
+    (substituteAll {
+      src = ./0001-add-placeholder-for-nm.patch;
+      nm = "${stdenv.cc.targetPrefix}nm";
+    })
+  ];
+
+  postPatch = lib.optionalString withDocumentation ''
+    patchShebangs doc/doxygen/gen-doxygen.py
+  '';
+
+  outputs = [ "out" "bin" "dev" ] ++ lib.optionals withDocumentation [ "doc" "man" ];
+  separateDebugInfo = true;
+
+  mesonFlags = [
+    "-Dlibraries=${lib.boolToString withLibraries}"
+    "-Ddocumentation=${lib.boolToString withDocumentation}"
+  ];
+
+  depsBuildBuild = [
+    pkg-config
+  ];
+
+  nativeBuildInputs = [
+    meson
+    pkg-config
+    ninja
+  ] ++ lib.optionals isCross [
+    wayland-scanner
+  ] ++ lib.optionals withDocumentation [
+    (graphviz-nox.override { pango = null; }) # To avoid an infinite recursion
+    doxygen
+    libxslt
+    xmlto
+    python3
+    docbook_xml_dtd_45
+  ];
+
+  buildInputs = [
+    expat
+    libxml2
+  ] ++ lib.optionals withLibraries [
+    libffi
+  ] ++ lib.optionals withDocumentation [
+    docbook_xsl
+    docbook_xml_dtd_45
+    docbook_xml_dtd_42
+  ];
+
+  postFixup = ''
+    # The pkg-config file is required for cross-compilation:
+    mkdir -p $bin/lib/pkgconfig/
+    cat <<EOF > $bin/lib/pkgconfig/wayland-scanner.pc
+    wayland_scanner=$bin/bin/wayland-scanner
+
+    Name: Wayland Scanner
+    Description: Wayland scanner
+    Version: ${version}
+    EOF
+  '';
+
+  meta = with lib; {
+    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 = licenses.mit; # Expat version
+    platforms = if withLibraries then platforms.linux else platforms.unix;
+    maintainers = with maintainers; [ primeos codyopel qyliss ];
+    # big sur doesn't support gcc stdenv and wayland doesn't build with clang
+    broken = stdenv.isDarwin;
+  };
+
+  passthru.version = version;
+}
diff --git a/nixpkgs/pkgs/development/libraries/wayland/protocols.nix b/nixpkgs/pkgs/development/libraries/wayland/protocols.nix
new file mode 100644
index 000000000000..71131516f942
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/wayland/protocols.nix
@@ -0,0 +1,44 @@
+{ lib, stdenv, fetchurl
+, pkg-config
+, meson, ninja, wayland-scanner
+, python3, wayland
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wayland-protocols";
+  version = "1.23";
+
+  doCheck = stdenv.hostPlatform == stdenv.buildPlatform;
+
+  src = fetchurl {
+    url = "https://wayland.freedesktop.org/releases/${pname}-${version}.tar.xz";
+    sha256 = "0xizccackgwszjhlq7jjiv2z2gwppljx0w32ga91bxlnby8z22kc";
+  };
+
+  postPatch = lib.optionalString doCheck ''
+    patchShebangs tests/
+  '';
+
+  depsBuildBuild = [ pkg-config ];
+  nativeBuildInputs = [ meson ninja wayland-scanner ];
+  checkInputs = [ python3 wayland ];
+
+  mesonFlags = [ "-Dtests=${lib.boolToString doCheck}" ];
+
+  meta = {
+    description = "Wayland protocol extensions";
+    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; [ primeos ];
+  };
+
+  passthru.version = version;
+}