kitty: 0.25.0 -> 0.25.1

This commit is contained in:
Brian Leung 2022-05-28 22:28:03 -07:00
parent 18a07645e5
commit b22c2113df
No known key found for this signature in database
GPG Key ID: 3ADC75F013D678F9
3 changed files with 32 additions and 53 deletions

View File

@ -28,14 +28,14 @@
with python3Packages; with python3Packages;
buildPythonApplication rec { buildPythonApplication rec {
pname = "kitty"; pname = "kitty";
version = "0.25.0"; version = "0.25.1";
format = "other"; format = "other";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "kovidgoyal"; owner = "kovidgoyal";
repo = "kitty"; repo = "kitty";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-RYQVcbyKIv/FlrtROoQywWR+iF+4KYiYrrzErUrOCWM="; sha256 = "sha256-wL631cbA6ffXZomi6iDHk7XerRlpIL6T2qlEiQvFSJY=";
}; };
buildInputs = [ buildInputs = [
@ -78,23 +78,42 @@ buildPythonApplication rec {
outputs = [ "out" "terminfo" "shell_integration" ]; outputs = [ "out" "terminfo" "shell_integration" ];
patches = [ patches = [
# Required to get `test_ssh_env_vars` to pass.
(fetchpatch {
name = "increase-pty-lines.patch";
url = "https://github.com/kovidgoyal/kitty/commit/eb84990f5a8edc458e04d24cc1cda05316d74ceb.patch";
sha256 = "sha256-eOANfhGPMoN4FqxtIGDBu5X0O3RPLABDnL+LKqSLROI=";
})
# Fix to ensure that files in tar files used by SSH kitten have write permissions. # Fix to ensure that files in tar files used by SSH kitten have write permissions.
./tarball-restore-write-permissions.patch (fetchpatch {
name = "fix-tarball-file-permissions.patch";
url = "https://github.com/kovidgoyal/kitty/commit/8540ca399053e8d42df27283bb5dd4af562ed29b.patch";
sha256 = "sha256-y5w+ritkR+ZEfNSRDQW9r3BU2qt98UNK7vdEX/X+mKU=";
})
# Remove upon next release. Needed because of a missing #define.
(fetchpatch {
name = "fontconfig-1.patch";
url = "https://github.com/kovidgoyal/kitty/commit/bec620a8d30c36453e471b140b07483c7f875bf4.patch";
sha256 = "sha256-r1OTcXdO+RUAXmmIqI07m+z0zXq8DXCzgBRXPpnkGGM=";
})
(fetchpatch {
name = "fontconfig-2.patch";
url = "https://github.com/kovidgoyal/kitty/commit/1283a2b7e552d30cabce9345e5c13e5f9079183d.patch";
sha256 = "sha256-UM/OsumnfVHuHTahpRwyWZOeu6L8WOwbBf3lcjwdTj8=";
})
(fetchpatch {
name = "fontconfig-3.patch";
url = "https://github.com/kovidgoyal/kitty/commit/5c4abe749b1f50ae556a711d24ac7f3e384fac4e.patch";
sha256 = "sha256-amvyv5cZxHGPg7dZv649WjH4MNloFbmz5D4rhjKNzYA=";
})
# Needed on darwin # Needed on darwin
# Gets `test_ssh_shell_integration` to pass for `zsh` when `compinit` complains about # Gets `test_ssh_shell_integration` to pass for `zsh` when `compinit` complains about
# permissions. # permissions.
./zsh-compinit.patch ./zsh-compinit.patch
# Skip `test_ssh_login_shell_detection` in some cases, build users have their shell set to
# `/sbin/nologin` which causes issues. # Skip login shell detection when login shell is set to nologin
./disable-test_ssh_login_shell_detection.patch (fetchpatch {
name = "skip-login-shell-detection-for-nologin.patch";
url = "https://github.com/kovidgoyal/kitty/commit/27906ea853ce7862bcb83e324ef80f6337b5d846.patch";
sha256 = "sha256-Zg6uWkiWvb45i4xcp9k6jy0R2IQMT4PXr7BenzZ/md8=";
})
# Skip `test_ssh_bootstrap_with_different_launchers` when launcher is `zsh` since it causes: # Skip `test_ssh_bootstrap_with_different_launchers` when launcher is `zsh` since it causes:
# OSError: master_fd is in error condition # OSError: master_fd is in error condition
./disable-test_ssh_bootstrap_with_different_launchers.patch ./disable-test_ssh_bootstrap_with_different_launchers.patch
@ -122,6 +141,7 @@ buildPythonApplication rec {
--egl-library='${lib.getLib libGL}/lib/libEGL.so.1' \ --egl-library='${lib.getLib libGL}/lib/libEGL.so.1' \
--startup-notification-library='${libstartup_notification}/lib/libstartup-notification-1.so' \ --startup-notification-library='${libstartup_notification}/lib/libstartup-notification-1.so' \
--canberra-library='${libcanberra}/lib/libcanberra.so' \ --canberra-library='${libcanberra}/lib/libcanberra.so' \
--fontconfig-library='${fontconfig.lib}/lib/libfontconfig.so' \
${commonOptions} ${commonOptions}
''} ''}
runHook postBuild runHook postBuild
@ -203,7 +223,6 @@ buildPythonApplication rec {
passthru.tests.test = nixosTests.terminal-emulators.kitty; passthru.tests.test = nixosTests.terminal-emulators.kitty;
meta = with lib; { meta = with lib; {
broken = stdenv.isDarwin;
homepage = "https://github.com/kovidgoyal/kitty"; homepage = "https://github.com/kovidgoyal/kitty";
description = "A modern, hackable, featureful, OpenGL based terminal emulator"; description = "A modern, hackable, featureful, OpenGL based terminal emulator";
license = licenses.gpl3Only; license = licenses.gpl3Only;

View File

@ -1,13 +0,0 @@
diff --git a/kitty_tests/ssh.py b/kitty_tests/ssh.py
index 1f424146..57620334 100644
--- a/kitty_tests/ssh.py
+++ b/kitty_tests/ssh.py
@@ -197,7 +197,7 @@ def test_ssh_login_shell_detection(self):
expected_login_shell = pwd.getpwuid(os.geteuid()).pw_shell
for m in methods:
for sh in self.all_possible_sh:
- if 'python' in sh:
+ if 'python' in sh or '/sbin/nologin' in expected_login_shell:
continue
with self.subTest(sh=sh, method=m), tempfile.TemporaryDirectory() as tdir:
pty = self.check_bootstrap(sh, tdir, test_script=f'{m}; echo "$login_shell"; exit 0', SHELL_INTEGRATION_VALUE='')

View File

@ -1,27 +0,0 @@
From 59f6876187da2c01b35e696e169ca98239c08a41 Mon Sep 17 00:00:00 2001
From: Jason Felice <jason.m.felice@gmail.com>
Date: Tue, 24 May 2022 07:54:25 -0400
Subject: [PATCH] Restore write permissions in tarball
In Nix, the source files are stored in an immutable store and
therefore have been stripped of write permissions. When the SSH
kitten makes the tarfile, the files contained in it are also missing
the write permissions, causing commands on the remote side to fail.
---
kittens/ssh/main.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/kittens/ssh/main.py b/kittens/ssh/main.py
index 0b50d5ff..f80ac13d 100644
--- a/kittens/ssh/main.py
+++ b/kittens/ssh/main.py
@@ -123,6 +123,7 @@ def make_tarfile(ssh_opts: SSHOptions, base_env: Dict[str, str], compression: st
def normalize_tarinfo(tarinfo: tarfile.TarInfo) -> tarfile.TarInfo:
tarinfo.uname = tarinfo.gname = ''
tarinfo.uid = tarinfo.gid = 0
+ tarinfo.mode |= 0o200
return tarinfo
def add_data_as_file(tf: tarfile.TarFile, arcname: str, data: Union[str, bytes]) -> tarfile.TarInfo:
--
2.36.0