diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/wayland')
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; +} |