2020-11-27 11:09:53 +00:00
|
|
|
{ lib
|
|
|
|
, stdenv
|
|
|
|
, fetchurl
|
2021-04-03 11:36:34 +00:00
|
|
|
, substituteAll
|
2020-11-27 11:09:53 +00:00
|
|
|
, meson
|
2021-01-19 06:50:56 +00:00
|
|
|
, pkg-config
|
2020-11-27 11:09:53 +00:00
|
|
|
, ninja
|
2021-05-04 17:59:15 +00:00
|
|
|
, wayland-scanner
|
2021-04-03 11:36:34 +00:00
|
|
|
, expat
|
|
|
|
, libxml2
|
2021-02-17 05:17:07 +00:00
|
|
|
, withLibraries ? stdenv.isLinux
|
2021-04-03 11:36:34 +00:00
|
|
|
, libffi
|
2021-02-17 05:17:07 +00:00
|
|
|
, withDocumentation ? withLibraries && stdenv.hostPlatform == stdenv.buildPlatform
|
2020-11-27 11:09:53 +00:00
|
|
|
, graphviz-nox
|
|
|
|
, doxygen
|
|
|
|
, libxslt
|
|
|
|
, xmlto
|
|
|
|
, python3
|
|
|
|
, docbook_xsl
|
|
|
|
, docbook_xml_dtd_45
|
|
|
|
, docbook_xml_dtd_42
|
2015-02-19 02:31:19 +00:00
|
|
|
}:
|
2012-12-02 10:20:07 +00:00
|
|
|
|
2021-02-17 05:17:07 +00:00
|
|
|
# Documentation is only built when building libraries.
|
|
|
|
assert withDocumentation -> withLibraries;
|
|
|
|
|
2020-02-04 21:16:04 +00:00
|
|
|
let
|
|
|
|
isCross = stdenv.buildPlatform != stdenv.hostPlatform;
|
2020-11-27 11:09:53 +00:00
|
|
|
in
|
|
|
|
stdenv.mkDerivation rec {
|
2019-03-21 03:09:21 +00:00
|
|
|
pname = "wayland";
|
2022-07-04 20:35:21 +00:00
|
|
|
version = "1.21.0";
|
2012-12-02 10:20:07 +00:00
|
|
|
|
|
|
|
src = fetchurl {
|
2022-07-04 20:35:21 +00:00
|
|
|
url = "https://gitlab.freedesktop.org/wayland/wayland/-/releases/${version}/downloads/${pname}-${version}.tar.xz";
|
|
|
|
sha256 = "1b0ixya9bfw5c9jx8mzlr7yqnlyvd3jv5z8wln9scdv8q5zlvikd";
|
2012-12-02 10:20:07 +00:00
|
|
|
};
|
|
|
|
|
2021-04-03 11:36:34 +00:00
|
|
|
postPatch = lib.optionalString withDocumentation ''
|
|
|
|
patchShebangs doc/doxygen/gen-doxygen.py
|
2021-12-04 14:51:51 +00:00
|
|
|
'' + lib.optionalString stdenv.hostPlatform.isStatic ''
|
|
|
|
# delete line containing os-wrappers-test, disables
|
|
|
|
# the building of os-wrappers-test
|
|
|
|
sed -i '/os-wrappers-test/d' tests/meson.build
|
2021-04-03 11:36:34 +00:00
|
|
|
'';
|
|
|
|
|
2021-04-03 13:29:55 +00:00
|
|
|
outputs = [ "out" "bin" "dev" ] ++ lib.optionals withDocumentation [ "doc" "man" ];
|
2019-01-31 14:47:51 +00:00
|
|
|
separateDebugInfo = true;
|
|
|
|
|
2021-02-17 05:17:07 +00:00
|
|
|
mesonFlags = [
|
|
|
|
"-Ddocumentation=${lib.boolToString withDocumentation}"
|
2022-12-09 15:56:36 +00:00
|
|
|
"-Dlibraries=${lib.boolToString withLibraries}"
|
|
|
|
"-Dtests=${lib.boolToString withLibraries}"
|
2021-02-17 05:17:07 +00:00
|
|
|
];
|
2020-01-31 14:36:41 +00:00
|
|
|
|
2020-05-27 17:12:43 +00:00
|
|
|
depsBuildBuild = [
|
2021-01-19 06:50:56 +00:00
|
|
|
pkg-config
|
2020-05-27 17:12:43 +00:00
|
|
|
];
|
|
|
|
|
2018-11-26 07:12:45 +00:00
|
|
|
nativeBuildInputs = [
|
2020-11-27 11:09:53 +00:00
|
|
|
meson
|
2021-01-19 06:50:56 +00:00
|
|
|
pkg-config
|
2020-11-27 11:09:53 +00:00
|
|
|
ninja
|
2020-02-04 21:16:04 +00:00
|
|
|
] ++ lib.optionals isCross [
|
2021-05-04 17:59:15 +00:00
|
|
|
wayland-scanner
|
2020-01-31 14:36:41 +00:00
|
|
|
] ++ lib.optionals withDocumentation [
|
|
|
|
(graphviz-nox.override { pango = null; }) # To avoid an infinite recursion
|
2020-11-27 11:09:53 +00:00
|
|
|
doxygen
|
|
|
|
libxslt
|
|
|
|
xmlto
|
|
|
|
python3
|
|
|
|
docbook_xml_dtd_45
|
2021-10-23 04:32:39 +00:00
|
|
|
docbook_xsl
|
2018-11-26 07:12:45 +00:00
|
|
|
];
|
2015-02-19 02:31:19 +00:00
|
|
|
|
2020-11-27 11:09:53 +00:00
|
|
|
buildInputs = [
|
|
|
|
expat
|
|
|
|
libxml2
|
2021-02-17 05:17:07 +00:00
|
|
|
] ++ lib.optionals withLibraries [
|
|
|
|
libffi
|
2020-01-31 14:36:41 +00:00
|
|
|
] ++ lib.optionals withDocumentation [
|
2020-11-27 11:09:53 +00:00
|
|
|
docbook_xsl
|
|
|
|
docbook_xml_dtd_45
|
|
|
|
docbook_xml_dtd_42
|
2020-01-31 14:36:41 +00:00
|
|
|
];
|
2012-12-02 10:20:07 +00:00
|
|
|
|
2021-05-04 17:59:15 +00:00
|
|
|
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
|
|
|
|
'';
|
|
|
|
|
2022-12-09 15:59:16 +00:00
|
|
|
passthru = { inherit withLibraries; };
|
|
|
|
|
2021-02-17 05:17:07 +00:00
|
|
|
meta = with lib; {
|
2020-01-31 00:29:21 +00:00
|
|
|
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).
|
|
|
|
'';
|
2020-11-27 11:09:53 +00:00
|
|
|
homepage = "https://wayland.freedesktop.org/";
|
2021-02-17 05:17:07 +00:00
|
|
|
license = licenses.mit; # Expat version
|
|
|
|
platforms = if withLibraries then platforms.linux else platforms.unix;
|
2021-02-17 05:21:53 +00:00
|
|
|
maintainers = with maintainers; [ primeos codyopel qyliss ];
|
2012-12-02 10:20:07 +00:00
|
|
|
};
|
2015-02-19 17:57:13 +00:00
|
|
|
|
|
|
|
passthru.version = version;
|
2012-12-02 10:20:07 +00:00
|
|
|
}
|