python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / development / libraries / wayland / default.nix
blobc9d0a7ad3b7cfc77b6ad4db4ccd95ea3a2452b65
1 { lib
2 , stdenv
3 , fetchurl
4 , substituteAll
5 , meson
6 , pkg-config
7 , ninja
8 , wayland-scanner
9 , expat
10 , libxml2
11 , withLibraries ? stdenv.isLinux
12 , libffi
13 , withDocumentation ? withLibraries && stdenv.hostPlatform == stdenv.buildPlatform
14 , graphviz-nox
15 , doxygen
16 , libxslt
17 , xmlto
18 , python3
19 , docbook_xsl
20 , docbook_xml_dtd_45
21 , docbook_xml_dtd_42
24 # Documentation is only built when building libraries.
25 assert withDocumentation -> withLibraries;
27 let
28   isCross = stdenv.buildPlatform != stdenv.hostPlatform;
30 stdenv.mkDerivation rec {
31   pname = "wayland";
32   version = "1.21.0";
34   src = fetchurl {
35     url = "https://gitlab.freedesktop.org/wayland/wayland/-/releases/${version}/downloads/${pname}-${version}.tar.xz";
36     sha256 = "1b0ixya9bfw5c9jx8mzlr7yqnlyvd3jv5z8wln9scdv8q5zlvikd";
37   };
39   postPatch = lib.optionalString withDocumentation ''
40     patchShebangs doc/doxygen/gen-doxygen.py
41   '' + lib.optionalString stdenv.hostPlatform.isStatic ''
42     # delete line containing os-wrappers-test, disables
43     # the building of os-wrappers-test
44     sed -i '/os-wrappers-test/d' tests/meson.build
45   '';
47   outputs = [ "out" "bin" "dev" ] ++ lib.optionals withDocumentation [ "doc" "man" ];
48   separateDebugInfo = true;
50   mesonFlags = [
51     "-Dlibraries=${lib.boolToString withLibraries}"
52     "-Ddocumentation=${lib.boolToString withDocumentation}"
53   ];
55   depsBuildBuild = [
56     pkg-config
57   ];
59   nativeBuildInputs = [
60     meson
61     pkg-config
62     ninja
63   ] ++ lib.optionals isCross [
64     wayland-scanner
65   ] ++ lib.optionals withDocumentation [
66     (graphviz-nox.override { pango = null; }) # To avoid an infinite recursion
67     doxygen
68     libxslt
69     xmlto
70     python3
71     docbook_xml_dtd_45
72     docbook_xsl
73   ];
75   buildInputs = [
76     expat
77     libxml2
78   ] ++ lib.optionals withLibraries [
79     libffi
80   ] ++ lib.optionals withDocumentation [
81     docbook_xsl
82     docbook_xml_dtd_45
83     docbook_xml_dtd_42
84   ];
86   postFixup = ''
87     # The pkg-config file is required for cross-compilation:
88     mkdir -p $bin/lib/pkgconfig/
89     cat <<EOF > $bin/lib/pkgconfig/wayland-scanner.pc
90     wayland_scanner=$bin/bin/wayland-scanner
92     Name: Wayland Scanner
93     Description: Wayland scanner
94     Version: ${version}
95     EOF
96   '';
98   meta = with lib; {
99     description = "Core Wayland window system code and protocol";
100     longDescription = ''
101       Wayland is a project to define a protocol for a compositor to talk to its
102       clients as well as a library implementation of the protocol.
103       The wayland protocol is essentially only about input handling and buffer
104       management, but also handles drag and drop, selections, window management
105       and other interactions that must go through the compositor (but not
106       rendering).
107     '';
108     homepage = "https://wayland.freedesktop.org/";
109     license = licenses.mit; # Expat version
110     platforms = if withLibraries then platforms.linux else platforms.unix;
111     maintainers = with maintainers; [ primeos codyopel qyliss ];
112     # big sur doesn't support gcc stdenv and wayland doesn't build with clang
113     broken = stdenv.isDarwin;
114   };
116   passthru.version = version;