summary refs log tree commit diff
diff options
context:
space:
mode:
authorVaskó László <vlaci@balabit.hu>2018-10-20 16:06:03 +0200
committerVaskó László <vlaci@balabit.hu>2018-10-20 20:40:54 +0200
commit1842c4aaa409e4731d355aa1f77ed817dd3939a2 (patch)
tree947d4b5b20913c4e3ab0febded34326c2207baed
parentef10c808479b33683422bc08dbdd4f46bfd2cd75 (diff)
downloadnixpkgs-1842c4aaa409e4731d355aa1f77ed817dd3939a2.tar
nixpkgs-1842c4aaa409e4731d355aa1f77ed817dd3939a2.tar.gz
nixpkgs-1842c4aaa409e4731d355aa1f77ed817dd3939a2.tar.bz2
nixpkgs-1842c4aaa409e4731d355aa1f77ed817dd3939a2.tar.lz
nixpkgs-1842c4aaa409e4731d355aa1f77ed817dd3939a2.tar.xz
nixpkgs-1842c4aaa409e4731d355aa1f77ed817dd3939a2.tar.zst
nixpkgs-1842c4aaa409e4731d355aa1f77ed817dd3939a2.zip
kitty: fix locating libstartup-notification-1
Startup notification doesn't work in recent versions of Kitty:
> Traceback (most recent call last):
>   File "/nix/store/3a3b0xd952gp8jw70k5kh3a4zhgzf0p7-kitty-0.12.3/bin/../lib/kitty/kitty/utils.py", line 216, in init_startup_notification
>     return init_startup_notification_x11(window_handle, startup_id)
>   File "/nix/store/3a3b0xd952gp8jw70k5kh3a4zhgzf0p7-kitty-0.12.3/bin/../lib/kitty/kitty/utils.py", line 201, in init_startup_notification_x11
>     return init_x11_startup_notification(display, window_handle, sid)
> OSError: Failed to load libstartup-notification-1.so with error: libstartup-notification-1.so: cannot open shared object file: No such file or directory

Apparently dispatching of startup notification has been moved to a C
binding in kitty 0.6.0 [1] so the substituion had to be modified to reflect
that. Without this fix Kitty still works except that window managers
which depend on startup notifications to be fired (e.g. Awesome)
cannot apply special placement rules.

The substitution mechanism is also changed to use a patch file to detect
this kind of mistakes in the future.

[1]: https://github.com/kovidgoyal/kitty/commit/b08f4ab5937199187581aa20e3a7aba7b2a34ac6
-rw-r--r--pkgs/applications/misc/kitty/default.nix14
-rw-r--r--pkgs/applications/misc/kitty/fix-paths.patch11
2 files changed, 20 insertions, 5 deletions
diff --git a/pkgs/applications/misc/kitty/default.nix b/pkgs/applications/misc/kitty/default.nix
index 4febac10806..2bdcd78b6e1 100644
--- a/pkgs/applications/misc/kitty/default.nix
+++ b/pkgs/applications/misc/kitty/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, python3Packages, glfw, libunistring, harfbuzz,
-  fontconfig, pkgconfig, ncurses, imagemagick, xsel,
+{ stdenv, substituteAll, fetchFromGitHub, python3Packages, glfw, libunistring,
+  harfbuzz, fontconfig, pkgconfig, ncurses, imagemagick, xsel,
   libstartup_notification, libX11, libXrandr, libXinerama, libXcursor,
   libxkbcommon, libXi, libXext, wayland-protocols, wayland,
   which, dbus
@@ -28,10 +28,14 @@ buildPythonApplication rec {
 
   outputs = [ "out" "terminfo" ];
 
-  postPatch = ''
-    substituteInPlace kitty/utils.py \
-      --replace "find_library('startup-notification-1')" "'${libstartup_notification}/lib/libstartup-notification-1.so'"
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      libstartup_notification = "${libstartup_notification}/lib/libstartup-notification-1.so";
+    })
+  ];
 
+  postPatch = ''
     substituteInPlace docs/Makefile \
       --replace 'python3 .. +launch :sphinx-build' \
                 'PYTHONPATH=$PYTHONPATH:.. HOME=$TMPDIR/nowhere sphinx-build'
diff --git a/pkgs/applications/misc/kitty/fix-paths.patch b/pkgs/applications/misc/kitty/fix-paths.patch
new file mode 100644
index 00000000000..dad6c949839
--- /dev/null
+++ b/pkgs/applications/misc/kitty/fix-paths.patch
@@ -0,0 +1,11 @@
+--- a/kitty/desktop.c
++++ b/kitty/desktop.c
+@@ -30,7 +30,7 @@
+ static PyObject*
+ init_x11_startup_notification(PyObject UNUSED *self, PyObject *args) {
+     static bool done = false;
+-    static const char* libname = "libstartup-notification-1.so";
++    static const char* libname = "@libstartup_notification@";
+     if (!done) {
+         done = true;
+