summary refs log tree commit diff
diff options
context:
space:
mode:
authorJohn Kehayias <john.kehayias@protonmail.com>2023-07-30 18:34:40 -0400
committerJohn Kehayias <john.kehayias@protonmail.com>2023-07-30 18:34:40 -0400
commit62e917a0c6ae8f3ed9c16e288c9c6bccf13c3487 (patch)
tree5b3575a6f797a3efe4692fac54c95ee76429ba5b
parent5e9db8ad3f3ba91d94f98d5b4229d01ace3b3f5a (diff)
downloadguix-62e917a0c6ae8f3ed9c16e288c9c6bccf13c3487.tar.gz
gnu: kitty: Update to 0.21.2.
There are newer versions of kitty but there are additional requirements.  From
v0.22.0 kitty requires additional Sphinx packages which use node to build
themes.  From v0.27.0 kitty additionally uses Go to build statically compiled,
standalone binaries to use on servers.  This will require more work to
package, if possible at all currently (in the case of node and sphinx themes).

* gnu/packages/patches/kitty-fix-wayland-protocols.patch: New file.
* gnu/local.mk: Add it.
* gnu/packages/terminals.scm (kitty): Update to 0.21.2.
[source]: Use kitty-fix-wayland-protocols.patch.
[native-inputs, inputs]: Remove labels.
[phases]: Use gexps.  Improve style.  Use search-input-file.
Remove trailing #t.
{check}: Respect tests?.
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/patches/kitty-fix-wayland-protocols.patch37
-rw-r--r--gnu/packages/terminals.scm127
3 files changed, 101 insertions, 64 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 680876e2ff..6dcacd3d6e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1454,6 +1454,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/kinit-kdeinit-extra_libs.patch		\
   %D%/packages/patches/kio-search-smbd-on-PATH.patch		\
   %D%/packages/patches/kismet-unbundle-boost.patch		\
+  %D%/packages/patches/kitty-fix-wayland-protocols.patch	\
   %D%/packages/patches/kmod-module-directory.patch		\
   %D%/packages/patches/kmscon-runtime-keymap-switch.patch	\
   %D%/packages/patches/kobodeluxe-paths.patch			\
diff --git a/gnu/packages/patches/kitty-fix-wayland-protocols.patch b/gnu/packages/patches/kitty-fix-wayland-protocols.patch
new file mode 100644
index 0000000000..6fcb38a360
--- /dev/null
+++ b/gnu/packages/patches/kitty-fix-wayland-protocols.patch
@@ -0,0 +1,37 @@
+See <https://github.com/kovidgoyal/kitty/issues/6422> for details.
+
+Modified with further fixes from <https://github.com/kovidgoyal/kitty/issues/6422#issuecomment-1622071032>.
+
+From 95d15648fa375bb131ff897f0db03b764dabaf65 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid@kovidgoyal.net>
+Date: Wed, 5 Jul 2023 10:29:33 +0530
+Subject: [PATCH] Fix not building with wayland-protocols 1.32
+
+Fix #6422
+
+diff --git a/glfw/wl_platform.h b/glfw/wl_platform.h
+index f35b55e94..42c90b1fa 100644
+--- a/glfw/wl_platform.h
++++ b/glfw/wl_platform.h
+@@ -122,6 +122,7 @@ typedef enum WaylandWindowState {
+ 	TOPLEVEL_STATE_TILED_RIGHT = 32,
+ 	TOPLEVEL_STATE_TILED_TOP = 64,
+ 	TOPLEVEL_STATE_TILED_BOTTOM = 128,
++        TOPLEVEL_STATE_SUSPENDED = 256,
+ } WaylandWindowState;
+ 
+ 
+diff --git a/glfw/wl_window.c b/glfw/wl_window.c
+index f7e329609..23868154f 100644
+--- a/glfw/wl_window.c
++++ b/glfw/wl_window.c
+@@ -420,6 +420,9 @@ static void xdgToplevelHandleConfigure(void* data,
+             C(TOPLEVEL_STATE_TILED_RIGHT);
+             C(TOPLEVEL_STATE_TILED_TOP);
+             C(TOPLEVEL_STATE_TILED_BOTTOM);
++#ifdef XDG_TOPLEVEL_STATE_SUSPENDED_SINCE_VERSION
++            C(TOPLEVEL_STATE_SUSPENDED);
++ #endif
+ #undef C
+         }
+     }
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 9b705c874f..1bfec73477 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -1205,7 +1205,7 @@ tmux.")
 (define-public kitty
   (package
     (name "kitty")
-    (version "0.20.3")
+    (version "0.21.2")
     (home-page "https://sw.kovidgoyal.net/kitty/")
     (source
      (origin
@@ -1215,7 +1215,8 @@ tmux.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "13qv4469q9q2xdrb77lbyw4dz491zf1qvqx4adp0dd9annnlir5c"))
+        (base32 "0y0mg8rr18mn0wzym7v48x6kl0ixd5q387kr5jhbdln55ph2jk9d"))
+       (patches (search-patches "kitty-fix-wayland-protocols.patch"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -1231,70 +1232,68 @@ tmux.")
            #t))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("libdbus" ,dbus)
-       ("libgl1-mesa" ,mesa)
-       ("libxcursor" ,libxcursor)
-       ("libxi" ,libxi)
-       ("libxinerama" ,libxinerama)
-       ("libxkbcommon" ,libxkbcommon)
-       ("libxrandr" ,libxrandr)
-       ("ncurses" ,ncurses) ;; for tic command
-       ("pkg-config" ,pkg-config)
-       ("sphinx" ,python-sphinx)
-       ("wayland-protocols" ,wayland-protocols)))
+     (list dbus
+           mesa
+           libxcursor
+           libxi
+           libxinerama
+           libxkbcommon
+           libxrandr
+           ncurses ;; for tic command
+           pkg-config
+           python-sphinx
+           wayland-protocols))
     (inputs
-     `(("fontconfig" ,fontconfig)
-       ("freetype" ,freetype)
-       ("harfbuzz" ,harfbuzz)
-       ("lcms" ,lcms)
-       ("libcanberra" ,libcanberra)
-       ("libpng" ,libpng)
-       ("pygments" ,python-pygments)
-       ("python" ,python-wrapper)
-       ("wayland" ,wayland)
-       ("zlib" ,zlib)))
+     (list fontconfig
+           freetype
+           harfbuzz
+           lcms
+           libcanberra
+           libpng
+           python-pygments
+           python-wrapper
+           wayland
+           zlib))
     (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (delete 'configure)   ;no configure script
-                  (replace 'build
-                    (lambda* (#:key inputs #:allow-other-keys)
-                      ;; The "kitty" sub-directory must be writable prior to
-                      ;; configuration (e.g., un-setting updates).
-                      (for-each make-file-writable (find-files "kitty"))
-
-                      (invoke "python3" "setup.py" "linux-package"
-                              ;; Do not phone home.
-                              "--update-check-interval=0"
-                              ;; Wayland backend requires EGL, which isn't
-                              ;; found out-of-the-box for some reason.
-                              (string-append "--egl-library="
-                                             (assoc-ref inputs "libgl1-mesa")
-                                             "/lib/libEGL.so.1"))))
-                  (replace 'check
-                    (lambda _
-                      ;; Fix "cannot find kitty executable" error when running
-                      ;; tests.
-                      (setenv "PATH" (string-append "linux-package/bin:"
-                                                    (getenv "PATH")))
-                      (invoke "python3" "test.py")))
-                  (add-before 'install 'rm-pycache
-                    ;; created python cache __pycache__ are non deterministic
-                    (lambda _
-                      (let ((pycaches (find-files "linux-package/"
-                                                  "__pycache__"
-                                                  #:directories? #t)))
-                        (for-each delete-file-recursively pycaches)
-                        #t)))
-                  (replace 'install
-                    (lambda _
-                      (let* ((out (assoc-ref %outputs "out"))
-                             (obin (string-append out "/bin"))
-                             (olib (string-append out "/lib"))
-                             (oshare (string-append out "/share")))
-                        (copy-recursively "linux-package/bin" obin)
-                        (copy-recursively "linux-package/share" oshare)
-                        (copy-recursively "linux-package/lib" olib)
-                        #t))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)   ;no configure script
+          (replace 'build
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; The "kitty" sub-directory must be writable prior to
+              ;; configuration (e.g., un-setting updates).
+              (for-each make-file-writable (find-files "kitty"))
+              (invoke "python3" "setup.py" "linux-package"
+                      ;; Do not phone home.
+                      "--update-check-interval=0"
+                      ;; Wayland backend requires EGL, which isn't
+                      ;; found out-of-the-box for some reason.
+                      (string-append "--egl-library="
+                                     (search-input-file inputs "/lib/libEGL.so.1")))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                ;; Fix "cannot find kitty executable" error when running
+                ;; tests.
+                (setenv "PATH" (string-append "linux-package/bin:"
+                                              (getenv "PATH")))
+                (invoke "python3" "test.py"))))
+          (add-before 'install 'rm-pycache
+            ;; created python cache __pycache__ are non deterministic
+            (lambda _
+              (let ((pycaches (find-files "linux-package/"
+                                          "__pycache__"
+                                          #:directories? #t)))
+                (for-each delete-file-recursively pycaches))))
+          (replace 'install
+            (lambda _
+              (let* ((obin (string-append #$output "/bin"))
+                     (olib (string-append #$output "/lib"))
+                     (oshare (string-append #$output "/share")))
+                (copy-recursively "linux-package/bin" obin)
+                (copy-recursively "linux-package/share" oshare)
+                (copy-recursively "linux-package/lib" olib)))))))
     (synopsis "Fast, featureful, GPU based terminal emulator")
     (description "Kitty is a fast and featureful GPU-based terminal emulator:
 @itemize