about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/wlroots
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/wlroots')
-rw-r--r--nixpkgs/pkgs/development/libraries/wlroots/0001-Fix-missing-headers-when-building-without-X11.patch133
-rw-r--r--nixpkgs/pkgs/development/libraries/wlroots/default.nix86
2 files changed, 219 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/wlroots/0001-Fix-missing-headers-when-building-without-X11.patch b/nixpkgs/pkgs/development/libraries/wlroots/0001-Fix-missing-headers-when-building-without-X11.patch
new file mode 100644
index 000000000000..7eb55132100f
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/wlroots/0001-Fix-missing-headers-when-building-without-X11.patch
@@ -0,0 +1,133 @@
+From 3588e89124d37c8d1968b3b6dbb723b4f6c4525c Mon Sep 17 00:00:00 2001
+From: Alyssa Ross <hi@alyssa.is>
+Date: Sun, 21 Apr 2019 00:35:57 +0000
+Subject: [PATCH] Fix missing headers when building without X11
+
+The deleted includes are redundant, because other headers will include
+the necessary files. Additionally, they cause build failures, because
+including EGL/egl.h or EGL/eglext.h directly, instead of through
+wlr/render/egl.h or wlr/render/interface.h, will mean that
+MESA_EGL_NO_X11_HEADERS will not have been defined, and so the EGL
+headers will attempt to pull in unnecessary X11 headers that may not
+exist on the system.
+
+For the headers produced by glgen.sh, the includes couldn't simply be
+deleted, because no other header would include the EGL headers. Neither
+wlr/render/egl.h or wlr/render/interface.h felt appropriate to include,
+so I opted instead to copy the MESA_EGL_NO_X11_HEADERS definition before
+the EGL includes.
+---
+ backend/drm/drm.c         | 2 --
+ backend/drm/renderer.c    | 2 --
+ backend/headless/output.c | 2 --
+ backend/wayland/backend.c | 2 --
+ glgen.sh                  | 5 +++++
+ include/render/gles2.h    | 2 --
+ render/egl.c              | 2 --
+ rootston/output.c         | 1 -
+ 8 files changed, 5 insertions(+), 13 deletions(-)
+
+diff --git a/backend/drm/drm.c b/backend/drm/drm.c
+index 7fd36794..74aeeb42 100644
+--- a/backend/drm/drm.c
++++ b/backend/drm/drm.c
+@@ -2,8 +2,6 @@
+ #include <assert.h>
+ #include <drm_fourcc.h>
+ #include <drm_mode.h>
+-#include <EGL/egl.h>
+-#include <EGL/eglext.h>
+ #include <errno.h>
+ #include <gbm.h>
+ #include <GLES2/gl2.h>
+diff --git a/backend/drm/renderer.c b/backend/drm/renderer.c
+index 72cfd430..1771e725 100644
+--- a/backend/drm/renderer.c
++++ b/backend/drm/renderer.c
+@@ -1,6 +1,4 @@
+ #include <assert.h>
+-#include <EGL/egl.h>
+-#include <EGL/eglext.h>
+ #include <gbm.h>
+ #include <stdbool.h>
+ #include <stdlib.h>
+diff --git a/backend/headless/output.c b/backend/headless/output.c
+index 3cb35dce..283b5513 100644
+--- a/backend/headless/output.c
++++ b/backend/headless/output.c
+@@ -1,6 +1,4 @@
+ #include <assert.h>
+-#include <EGL/egl.h>
+-#include <EGL/eglext.h>
+ #include <stdlib.h>
+ #include <wlr/interfaces/wlr_output.h>
+ #include <wlr/render/wlr_renderer.h>
+diff --git a/backend/wayland/backend.c b/backend/wayland/backend.c
+index 2a937de7..7c8bb4e0 100644
+--- a/backend/wayland/backend.c
++++ b/backend/wayland/backend.c
+@@ -5,8 +5,6 @@
+ 
+ #include <wlr/config.h>
+ 
+-#include <EGL/egl.h>
+-#include <EGL/eglext.h>
+ #include <wayland-server.h>
+ 
+ #include <wlr/backend/interface.h>
+diff --git a/glgen.sh b/glgen.sh
+index fb3bb3c6..daa98b00 100755
+--- a/glgen.sh
++++ b/glgen.sh
+@@ -62,6 +62,11 @@ cat > "$OUTDIR/$BASE.h" << EOF
+ #define $INCLUDE_GUARD
+ 
+ #include <stdbool.h>
++#include <wlr/config.h>
++
++#if !WLR_HAS_X11_BACKEND && !WLR_HAS_XWAYLAND && !defined MESA_EGL_NO_X11_HEADERS
++#define MESA_EGL_NO_X11_HEADERS
++#endif
+ 
+ #include <EGL/egl.h>
+ #include <EGL/eglext.h>
+diff --git a/include/render/gles2.h b/include/render/gles2.h
+index 593c7d1c..7e0782d4 100644
+--- a/include/render/gles2.h
++++ b/include/render/gles2.h
+@@ -1,8 +1,6 @@
+ #ifndef RENDER_GLES2_H
+ #define RENDER_GLES2_H
+ 
+-#include <EGL/egl.h>
+-#include <EGL/eglext.h>
+ #include <GLES2/gl2.h>
+ #include <GLES2/gl2ext.h>
+ #include <stdbool.h>
+diff --git a/render/egl.c b/render/egl.c
+index cc00dece..c0d43609 100644
+--- a/render/egl.c
++++ b/render/egl.c
+@@ -1,7 +1,5 @@
+ #include <assert.h>
+ #include <drm_fourcc.h>
+-#include <EGL/egl.h>
+-#include <EGL/eglext.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <wlr/render/egl.h>
+diff --git a/rootston/output.c b/rootston/output.c
+index bc2f4d6c..4e9e9d18 100644
+--- a/rootston/output.c
++++ b/rootston/output.c
+@@ -13,7 +13,6 @@
+ #include <wlr/types/wlr_xdg_shell.h>
+ #include <wlr/util/log.h>
+ #include <wlr/util/region.h>
+-#include <wlr/xwayland.h>
+ #include "rootston/config.h"
+ #include "rootston/layers.h"
+ #include "rootston/output.h"
+-- 
+2.19.2
+
diff --git a/nixpkgs/pkgs/development/libraries/wlroots/default.nix b/nixpkgs/pkgs/development/libraries/wlroots/default.nix
new file mode 100644
index 000000000000..67ea5051a92f
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/wlroots/default.nix
@@ -0,0 +1,86 @@
+{ stdenv, lib, fetchFromGitHub, meson, ninja, pkgconfig
+, wayland, libGL, wayland-protocols, libinput, libxkbcommon, pixman, mesa_noglu
+
+, libcapSupport ? true, libcap
+, x11Support ? true, libX11
+, xcbIcccmSupport ? x11Support, xcbutilwm
+, xcbErrorsSupport ? x11Support, xcbutilerrors
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wlroots";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "swaywm";
+    repo = "wlroots";
+    rev = version;
+    sha256 = "1rdcmll5b8w242n6yfjpsaprq280ck2jmbz46dxndhignxgda7k4";
+  };
+
+  # $out for the library, $bin for rootston, and $examples for the example
+  # programs (in examples) AND rootston
+  outputs = [ "out" "bin" "examples" ];
+
+  nativeBuildInputs = [ meson ninja pkgconfig ];
+
+  buildInputs = [
+    wayland libGL wayland-protocols libinput libxkbcommon pixman mesa_noglu
+  ] ++ lib.optional libcapSupport libcap
+    ++ lib.optional x11Support libX11
+    ++ lib.optional xcbErrorsSupport xcbutilerrors
+    ++ lib.optional xcbIcccmSupport xcbutilwm;
+
+  mesonFlags = [ "-Dlogind=enabled" ]
+    ++ lib.optional libcapSupport "-Dlibcap=enabled"
+    ++ lib.optionals x11Support [ "-Dxwayland=enabled" "-Dx11-backend=enabled" ]
+    ++ lib.optional xcbErrorsSupport "-Dxcb-errors=enabled"
+    ++ lib.optional xcbIcccmSupport  "-Dxcb-icccm=enabled";
+
+  postPatch = ''
+    # It happens from time to time that the version wasn't updated:
+    sed -iE "s/version: '[0-9]\.[0-9]\.[0-9]'/version: '${version}.0'/" meson.build
+  '';
+
+  postInstall = ''
+    # Copy the library to $bin and $examples
+    for output in "$bin" "$examples"; do
+      mkdir -p $output/lib
+      cp -P libwlroots* $output/lib/
+    done
+  '';
+
+  postFixup = ''
+    # Install rootston (the reference compositor) to $bin and $examples (this
+    # has to be done after the fixup phase to prevent broken binaries):
+    for output in "$bin" "$examples"; do
+      mkdir -p $output/bin
+      cp rootston/rootston $output/bin/
+      patchelf \
+        --set-rpath "$(patchelf --print-rpath $output/bin/rootston | sed s,$out,$output,g)" \
+        $output/bin/rootston
+      mkdir $output/etc
+      cp ../rootston/rootston.ini.example $output/etc/rootston.ini
+    done
+    # Install ALL example programs to $examples:
+    # screencopy dmabuf-capture input-inhibitor layer-shell idle-inhibit idle
+    # screenshot output-layout multi-pointer rotation tablet touch pointer
+    # simple
+    mkdir -p $examples/bin
+    cd ./examples
+    for binary in $(find . -executable -type f -printf '%P\n' | grep -vE '\.so'); do
+      cp "$binary" "$examples/bin/wlroots-$binary"
+      patchelf \
+        --set-rpath "$(patchelf --print-rpath $output/bin/rootston | sed s,$out,$examples,g)" \
+        "$examples/bin/wlroots-$binary"
+    done
+  '';
+
+  meta = with lib; {
+    description = "A modular Wayland compositor library";
+    inherit (src.meta) homepage;
+    license     = licenses.mit;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}