Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

kitty: Fix compilation on aarch64-darwin #137512

Closed
wants to merge 1 commit into from
Closed

Conversation

azuwis
Copy link
Contributor

@azuwis azuwis commented Sep 12, 2021

Motivation for this change

See compilation error log in https://hydra.nixos.org/build/151584660/nixlog/1/tail

Things done
  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • 21.11 Release Notes (or backporting 21.05 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

@Luflosi
Copy link
Contributor

Luflosi commented Sep 12, 2021

Hmm, this is supposed to be detected automatically by kitty's build system. See kovidgoyal/kitty#2876 and kovidgoyal/kitty#2997. In one of those PRs I added some code to kitty to compile a simple program with the new UserNotifications framework and if it compiles fine, it uses that framework, else the old one. The reason for doing this is that the new API doesn't work on older versions of macOS.
Let's debug this together. I will then create a patch for kitty that should fix this properly.
Clone the kitty repo, then execute nix-shell --pure, open setup.py, edit test_compile() and change the line stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, stdin=subprocess.PIPE, to stdin=subprocess.PIPE,, then execute make debug. See if there are any error messages or warnings.

@azuwis
Copy link
Contributor Author

azuwis commented Sep 12, 2021

/tmp
❯ git clone https://github.com/kovidgoyal/kitty.git                  
Cloning into 'kitty'...
remote: Enumerating objects: 41204, done.
remote: Counting objects: 100% (1549/1549), done.
remote: Compressing objects: 100% (593/593), done.
remote: Total 41204 (delta 1037), reused 1451 (delta 949), pack-reused 39655
Receiving objects: 100% (41204/41204), 29.75 MiB | 3.27 MiB/s, done.
Resolving deltas: 100% (31437/31437), done.

/tmp
❯ cd kitty

/tmp/kitty master
❯ sed -i -e 's/stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, stdin=subprocess.PIPE,/stdin=subprocess.PIPE,/' setup.py

/tmp/kitty master*
❯ nix-shell --pure

[nix-shell:/private/tmp/kitty]$ make debug
python3 setup.py build  --debug
CC: clang (11, 1)
mktemp: failed to create file via template ‘/dev/null.XXXXXX’: Permission denied
clang-11: error: linker command failed with exit code 1 (use -v to see invocation)
mktemp: failed to create file via template ‘/dev/null.XXXXXX’: Permission denied
clang-11: error: linker command failed with exit code 1 (use -v to see invocation)
<stdin>:1:10: fatal error: 'UserNotifications/UserNotifications.h' file not found
#include <UserNotifications/UserNotifications.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[33/61] Compiling [cocoa] glfw/osmesa_context.c ... done
Compiling kitty/cocoa_window.m ...
clang -MMD -DDEBUG -DPRIMARY_VERSION=4000 -DSECONDARY_VERSION=23 -DXT_VERSION="0.23.1" -DKITTY_USE_DEPRECATED_MACOS_NOTIFICATION_API -DGL_SILENCE_DEPRECATION -Wextra -Wfloat-conversion -Wno-missing-field-initializers -Wall -Wstrict-prototypes -std=c11 -pedantic-errors -Werror -g3 -Og -fwrapv -pipe -fvisibility=hidden -D_FORTIFY_SOURCE=2 -DKITTY_DEBUG_BUILD -pthread -I/nix/store/sq38a6xlqk29fwyflx1pws9c96yq4vya-zlib-1.2.11-dev/include -I/nix/store/nl6bnw3cq8l3805mkkr39dzqr58p060z-libpng-apng-1.6.37-dev/include/libpng16 -I/nix/store/pzz09s2cszwnkxls3hv0q8gigmc12cgc-lcms2-2.12-dev/include -I/nix/store/nq04xhrlrss45ddh08hsfcmyw0rymab2-harfbuzz-2.8.2-dev/include/harfbuzz -I/nix/store/blzb8lql4vjjj6v30ayg43dlk68316vk-python3-3.9.6/include/python3.9 -c kitty/cocoa_window.m -o build/fast_data_types-cocoa_window.m.o
kitty/cocoa_window.m:178:37: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    - (void)userNotificationCenter:(NSUserNotificationCenter *)center
                                    ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:179:37: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
            didDeliverNotification:(NSUserNotification *)notification {
                                    ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
kitty/cocoa_window.m:183:38: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    - (BOOL) userNotificationCenter:(NSUserNotificationCenter *)center
                                     ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:184:40: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
            shouldPresentNotification:(NSUserNotification *)notification {
                                       ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
kitty/cocoa_window.m:189:38: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    - (void) userNotificationCenter:(NSUserNotificationCenter *)center
                                     ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:190:38: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
            didActivateNotification:(NSUserNotification *)notification {
                                     ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
kitty/cocoa_window.m:205:5: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
    ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:205:66: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
                                                                 ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:208:5: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    NSUserNotification *n = [NSUserNotification new];
    ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
kitty/cocoa_window.m:208:49: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    NSUserNotification *n = [NSUserNotification new];
                                                ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
10 errors generated.
make: *** [Makefile:19: debug] Error 1

@azuwis
Copy link
Contributor Author

azuwis commented Sep 12, 2021

nix-info -m

  • system: "aarch64-darwin"
  • host os: Darwin 20.6.0, macOS 11.5.2
  • multi-user?: yes
  • sandbox: no
  • version: nix-env (Nix) 2.3.15
  • channels(azuwis): "darwin, home-manager, nixpkgs-21.11pre313955.b72ad04a8a3"
  • channels(root): ""
  • nixpkgs: /Users/azuwis/.nix-defexpr/channels/nixpkgs

@azuwis
Copy link
Contributor Author

azuwis commented Sep 12, 2021

$ echo 'int main(void) { return 0; }' | clang -fstack-protector-strong -x c -o /dev/null -
mktemp: failed to create file via template '/dev/null.XXXXXX': Permission denied
clang-11: error: linker command failed with exit code 1 (use -v to see invocation)

It seems clang will create a temp file before writing the final file. There is a option -fno-temp-file to disable this behavior:

-fno-temp-file          Directly create compilation output files. This may lead to incorrect incremental builds if the compiler crashes

But it does not work as expected:

$ echo 'int main(void) { return 0; }' | clang -fno-temp-file -fstack-protector-strong -x c -o /dev/null -
mktemp: failed to create file via template '/dev/null.XXXXXX': Permission denied
clang-11: error: linker command failed with exit code 1 (use -v to see invocation)

@Luflosi
Copy link
Contributor

Luflosi commented Sep 12, 2021

Given that the command line option you found doesn't seem to work, I think the best workaround is to create a temporary directory for the useless files.
Do git reset --hard in the kitty source, then apply this patch:

diff --git a/setup.py b/setup.py
index b737c3c7..e7831d6e 100755
--- a/setup.py
+++ b/setup.py
@@ -14,6 +14,7 @@
 import sys
 import sysconfig
 import platform
+import tempfile
 import time
 from contextlib import suppress
 from functools import partial
@@ -230,18 +231,19 @@ def get_sanitize_args(cc: str, ccver: Tuple[int, int]) -> List[str]:
 
 def test_compile(cc: str, *cflags: str, src: Optional[str] = None, lang: str = 'c') -> bool:
     src = src or 'int main(void) { return 0; }'
-    p = subprocess.Popen(
-        [cc] + list(cflags) + ['-x', lang, '-o', os.devnull, '-'],
-        stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, stdin=subprocess.PIPE,
-    )
-    stdin = p.stdin
-    assert stdin is not None
-    try:
-        stdin.write(src.encode('utf-8'))
-        stdin.close()
-    except BrokenPipeError:
-        return False
-    return p.wait() == 0
+    with tempfile.TemporaryDirectory() as tdir:
+        p = subprocess.Popen(
+            [cc] + list(cflags) + ['-x', lang, '-o', os.devnull, '-'], cwd=tdir,
+            stdin=subprocess.PIPE,
+        )
+        stdin = p.stdin
+        assert stdin is not None
+        try:
+            stdin.write(src.encode('utf-8'))
+            stdin.close()
+        except BrokenPipeError:
+            return False
+        return p.wait() == 0
 
 
 def first_successful_compile(cc: str, *cflags: str, src: Optional[str] = None, lang: str = 'c') -> str:

Then compile as above. If that doesn't work, do git reset --hard again and apply this patch instead:

diff --git a/setup.py b/setup.py
index b737c3c7..0c945ed2 100755
--- a/setup.py
+++ b/setup.py
@@ -14,6 +14,7 @@
 import sys
 import sysconfig
 import platform
+import tempfile
 import time
 from contextlib import suppress
 from functools import partial
@@ -230,18 +231,19 @@ def get_sanitize_args(cc: str, ccver: Tuple[int, int]) -> List[str]:
 
 def test_compile(cc: str, *cflags: str, src: Optional[str] = None, lang: str = 'c') -> bool:
     src = src or 'int main(void) { return 0; }'
-    p = subprocess.Popen(
-        [cc] + list(cflags) + ['-x', lang, '-o', os.devnull, '-'],
-        stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, stdin=subprocess.PIPE,
-    )
-    stdin = p.stdin
-    assert stdin is not None
-    try:
-        stdin.write(src.encode('utf-8'))
-        stdin.close()
-    except BrokenPipeError:
-        return False
-    return p.wait() == 0
+    with tempfile.TemporaryDirectory() as tdir:
+        p = subprocess.Popen(
+            [cc] + list(cflags) + ['-x', lang, '-o', tdir + '/result', '-'],
+            stdin=subprocess.PIPE,
+        )
+        stdin = p.stdin
+        assert stdin is not None
+        try:
+            stdin.write(src.encode('utf-8'))
+            stdin.close()
+        except BrokenPipeError:
+            return False
+        return p.wait() == 0
 
 
 def first_successful_compile(cc: str, *cflags: str, src: Optional[str] = None, lang: str = 'c') -> str:

and try compiling again.

@azuwis
Copy link
Contributor Author

azuwis commented Sep 13, 2021

First patch:

$ make debug
python3 setup.py build  --debug
CC: clang (11, 1)
mktemp: failed to create file via template ‘/dev/null.XXXXXX’: Permission denied
clang-11: error: linker command failed with exit code 1 (use -v to see invocation)
mktemp: failed to create file via template ‘/dev/null.XXXXXX’: Permission denied
clang-11: error: linker command failed with exit code 1 (use -v to see invocation)
<stdin>:1:10: fatal error: 'UserNotifications/UserNotifications.h' file not found
#include <UserNotifications/UserNotifications.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[32/61] Compiling [cocoa] glfw/vulkan.c ... done
Compiling kitty/cocoa_window.m ...
clang -MMD -DDEBUG -DPRIMARY_VERSION=4000 -DSECONDARY_VERSION=23 -DXT_VERSION="0.23.1" -DKITTY_USE_DEPRECATED_MACOS_NOTIFICATION_API -DGL_SILENCE_DEPRECATION -Wextra -Wfloat-conversion -Wno-missing-field-initializers -Wall -Wstrict-prototypes -std=c11 -pedantic-errors -Werror -g3 -Og -fwrapv -pipe -fvisibility=hidden -D_FORTIFY_SOURCE=2 -DKITTY_DEBUG_BUILD -pthread -I/nix/store/sq38a6xlqk29fwyflx1pws9c96yq4vya-zlib-1.2.11-dev/include -I/nix/store/nl6bnw3cq8l3805mkkr39dzqr58p060z-libpng-apng-1.6.37-dev/include/libpng16 -I/nix/store/pzz09s2cszwnkxls3hv0q8gigmc12cgc-lcms2-2.12-dev/include -I/nix/store/nq04xhrlrss45ddh08hsfcmyw0rymab2-harfbuzz-2.8.2-dev/include/harfbuzz -I/nix/store/blzb8lql4vjjj6v30ayg43dlk68316vk-python3-3.9.6/include/python3.9 -c kitty/cocoa_window.m -o build/fast_data_types-cocoa_window.m.o
kitty/cocoa_window.m:178:37: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    - (void)userNotificationCenter:(NSUserNotificationCenter *)center
                                    ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:179:37: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
            didDeliverNotification:(NSUserNotification *)notification {
                                    ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
kitty/cocoa_window.m:183:38: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    - (BOOL) userNotificationCenter:(NSUserNotificationCenter *)center
                                     ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:184:40: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
            shouldPresentNotification:(NSUserNotification *)notification {
                                       ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
kitty/cocoa_window.m:189:38: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    - (void) userNotificationCenter:(NSUserNotificationCenter *)center
                                     ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:190:38: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
            didActivateNotification:(NSUserNotification *)notification {
                                     ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
kitty/cocoa_window.m:205:5: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
    ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:205:66: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
                                                                 ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:208:5: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    NSUserNotification *n = [NSUserNotification new];
    ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
kitty/cocoa_window.m:208:49: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    NSUserNotification *n = [NSUserNotification new];
                                                ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
10 errors generated.
make: *** [Makefile:19: debug] Error 1

Second patch:

$ make debug
python3 setup.py build  --debug
CC: clang (11, 1)
<stdin>:1:10: fatal error: 'UserNotifications/UserNotifications.h' file not found
#include <UserNotifications/UserNotifications.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[32/61] Compiling [cocoa] glfw/vulkan.c ... done
Compiling kitty/cocoa_window.m ...
clang -MMD -DDEBUG -DPRIMARY_VERSION=4000 -DSECONDARY_VERSION=23 -DXT_VERSION="0.23.1" -DKITTY_USE_DEPRECATED_MACOS_NOTIFICATION_API -DGL_SILENCE_DEPRECATION -Wextra -Wfloat-conversion -Wno-missing-field-initializers -Wall -Wstrict-prototypes -std=c11 -pedantic-errors -Werror -g3 -Og -fwrapv -fstack-protector-strong -pipe -fvisibility=hidden -D_FORTIFY_SOURCE=2 -DKITTY_DEBUG_BUILD -pthread -I/nix/store/sq38a6xlqk29fwyflx1pws9c96yq4vya-zlib-1.2.11-dev/include -I/nix/store/nl6bnw3cq8l3805mkkr39dzqr58p060z-libpng-apng-1.6.37-dev/include/libpng16 -I/nix/store/pzz09s2cszwnkxls3hv0q8gigmc12cgc-lcms2-2.12-dev/include -I/nix/store/nq04xhrlrss45ddh08hsfcmyw0rymab2-harfbuzz-2.8.2-dev/include/harfbuzz -I/nix/store/blzb8lql4vjjj6v30ayg43dlk68316vk-python3-3.9.6/include/python3.9 -c kitty/cocoa_window.m -o build/fast_data_types-cocoa_window.m.o
kitty/cocoa_window.m:178:37: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    - (void)userNotificationCenter:(NSUserNotificationCenter *)center
                                    ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:179:37: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
            didDeliverNotification:(NSUserNotification *)notification {
                                    ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
kitty/cocoa_window.m:183:38: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    - (BOOL) userNotificationCenter:(NSUserNotificationCenter *)center
                                     ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:184:40: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
            shouldPresentNotification:(NSUserNotification *)notification {
                                       ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
kitty/cocoa_window.m:189:38: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    - (void) userNotificationCenter:(NSUserNotificationCenter *)center
                                     ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:190:38: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
            didActivateNotification:(NSUserNotification *)notification {
                                     ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
kitty/cocoa_window.m:205:5: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
    ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:205:66: error: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
                                                                 ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
kitty/cocoa_window.m:208:5: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    NSUserNotification *n = [NSUserNotification new];
    ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
kitty/cocoa_window.m:208:49: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
    NSUserNotification *n = [NSUserNotification new];
                                                ^
/nix/store/ans3v1vy096aa7qycpqazyqgw3d0yypz-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
10 errors generated.
make: *** [Makefile:19: debug] Error 1

@Luflosi
Copy link
Contributor

Luflosi commented Sep 13, 2021

Try this patch:

diff --git a/kitty/cocoa_window.m b/kitty/cocoa_window.m
index d3281ade..05f8acfd 100644
--- a/kitty/cocoa_window.m
+++ b/kitty/cocoa_window.m
@@ -11,7 +11,7 @@
 #include "monotonic.h"
 #include <Cocoa/Cocoa.h>
 #ifndef KITTY_USE_DEPRECATED_MACOS_NOTIFICATION_API
-#include <UserNotifications/UserNotifications.h>
+#import <UserNotifications/UserNotifications.h>
 #endif
 
 #include <AvailabilityMacros.h>
diff --git a/setup.py b/setup.py
index b737c3c7..365bec2e 100755
--- a/setup.py
+++ b/setup.py
@@ -14,6 +14,7 @@
 import sys
 import sysconfig
 import platform
+import tempfile
 import time
 from contextlib import suppress
 from functools import partial
@@ -230,18 +231,19 @@ def get_sanitize_args(cc: str, ccver: Tuple[int, int]) -> List[str]:
 
 def test_compile(cc: str, *cflags: str, src: Optional[str] = None, lang: str = 'c') -> bool:
     src = src or 'int main(void) { return 0; }'
-    p = subprocess.Popen(
-        [cc] + list(cflags) + ['-x', lang, '-o', os.devnull, '-'],
-        stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, stdin=subprocess.PIPE,
-    )
-    stdin = p.stdin
-    assert stdin is not None
-    try:
-        stdin.write(src.encode('utf-8'))
-        stdin.close()
-    except BrokenPipeError:
-        return False
-    return p.wait() == 0
+    with tempfile.TemporaryDirectory() as tdir:
+        p = subprocess.Popen(
+            [cc] + list(cflags) + ['-x', lang, '-o', tdir + '/result', '-'],
+            stdin=subprocess.PIPE,
+        )
+        stdin = p.stdin
+        assert stdin is not None
+        try:
+            stdin.write(src.encode('utf-8'))
+            stdin.close()
+        except BrokenPipeError:
+            return False
+        return p.wait() == 0
 
 
 def first_successful_compile(cc: str, *cflags: str, src: Optional[str] = None, lang: str = 'c') -> str:
@@ -383,7 +385,7 @@ def kitty_env() -> Env:
         platform_libs = [
             '-framework', 'CoreText', '-framework', 'CoreGraphics',
         ]
-        test_program_src = '''#include <UserNotifications/UserNotifications.h>
+        test_program_src = '''#import <UserNotifications/UserNotifications.h>
         int main(void) { return 0; }\n'''
         user_notifications_framework = first_successful_compile(
             ans.cc, '-framework UserNotifications', src=test_program_src, lang='objective-c')
diff --git a/shell.nix b/shell.nix
index c735f133..4995e97f 100644
--- a/shell.nix
+++ b/shell.nix
@@ -4,7 +4,7 @@ with pkgs;
 let
   inherit (lib) optional optionals;
   inherit (xorg) libX11 libXrandr libXinerama libXcursor libXi libXext;
-  inherit (darwin.apple_sdk.frameworks) Cocoa CoreGraphics Foundation IOKit Kernel OpenGL;
+  inherit (darwin.apple_sdk.frameworks) Cocoa CoreGraphics Foundation IOKit Kernel OpenGL UserNotifications;
   harfbuzzWithCoreText = harfbuzz.override { withCoreText = stdenv.isDarwin; };
 in
 with python3Packages;
@@ -20,6 +20,7 @@ mkShell rec {
     IOKit
     Kernel
     OpenGL
+    UserNotifications
     libpng
     python3
     zlib

@Luflosi
Copy link
Contributor

Luflosi commented Sep 13, 2021

And then enter the nix-shell again and recompile.

@azuwis
Copy link
Contributor Author

azuwis commented Sep 13, 2021

$ make debug
python3 setup.py build  --debug
CC: clang (11, 1)
[61/61] Compiling kitty/gl-wrapper.c ... done
[5/5] Linking kittens/choose/subseq_matcher ... done
iconutil not found, using png2icns (without retina support) to convert the logo
Using icns type 'is32', mask 's8mk' for '/private/tmp/kitty/logo/kitty.iconset/icon_16x16.png'
Using icns type 'il32', mask 'l8mk' for '/private/tmp/kitty/logo/kitty.iconset/icon_32x32.png'
Using icns type 'it32', mask 't8mk' for '/private/tmp/kitty/logo/kitty.iconset/icon_128x128.png'
Using icns type 'ic08' (ARGB) for '/private/tmp/kitty/logo/kitty.iconset/icon_256x256.png'
Using icns type 'ic09' (ARGB) for '/private/tmp/kitty/logo/kitty.iconset/icon_512x512.png'
Saved icns file to kitty/launcher/kitty.app/Contents/Resources/kitty.icns

@Luflosi
Copy link
Contributor

Luflosi commented Sep 13, 2021

So this PR needs to download a patch for kitty after I made a PR upstream and add UserNotifications to the build inputs either if it exists or alternatively if the macOS SDK is >= 11.0, since that framework does not exist in the older SDK. Any ideas how to do that detection?

@Luflosi
Copy link
Contributor

Luflosi commented Sep 13, 2021

I think something like this should work (not tested):

diff --git a/pkgs/applications/terminal-emulators/kitty/default.nix b/pkgs/applications/terminal-emulators/kitty/default.nix
index cfd46a613f7..c2645364d1a 100644
--- a/pkgs/applications/terminal-emulators/kitty/default.nix
+++ b/pkgs/applications/terminal-emulators/kitty/default.nix
@@ -11,6 +11,8 @@
   IOKit,
   Kernel,
   OpenGL,
+  UserNotifications,
+  apple_sdk_version,
   libcanberra,
   libicns,
   libpng,
@@ -45,6 +47,8 @@ buildPythonApplication rec {
     libpng
     python3
     zlib
+  ] ++ lib.optionals (stdenv.isDarwin && lib.versionAtLeast apple_sdk_version "11.0") [
+    UserNotifications
   ] ++ lib.optionals stdenv.isLinux [
     fontconfig libunistring libcanberra libX11
     libXrandr libXinerama libXcursor libxkbcommon libXi libXext
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 89756d2669c..fb08998291a 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -978,7 +978,8 @@ with pkgs;
 
   kitty = callPackage ../applications/terminal-emulators/kitty {
     harfbuzz = harfbuzz.override { withCoreText = stdenv.isDarwin; };
-    inherit (darwin.apple_sdk.frameworks) Cocoa CoreGraphics Foundation IOKit Kernel OpenGL;
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreGraphics Foundation IOKit Kernel OpenGL UserNotifications;
+    apple_sdk_version = darwin.apple_sdk.sdk.version;
   };
 
   lifecycled = callPackage ../tools/misc/lifecycled { };

The patch for kitty is still missing of course.

@Luflosi
Copy link
Contributor

Luflosi commented Sep 13, 2021

Do you know why the evaluation fails and how to fix that?
Also I don't think changing #include to #import is actually required to make this compile. You can probably remove it to make the diff smaller.

@Luflosi
Copy link
Contributor

Luflosi commented Sep 13, 2021

Yeah, that looks much nicer than my version.
For some reason beautifulsoup4 (indirect dependency of kitty) does not compile on my Mac but it seems to work fine for you. I haven't yet figured out, why it's broken.

@Luflosi
Copy link
Contributor

Luflosi commented Sep 13, 2021

Unfortunately it looks like it still doesn't evaluate properly yet.

Copy link
Contributor

@Luflosi Luflosi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

Comment on lines 1052 to 1054
UserNotifications = if (builtins.hasAttr "UserNotifications" darwin.apple_sdk.frameworks)
then darwin.apple_sdk.frameworks.UserNotifications
else null;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There needs to be another way than this hackery. Could we gate the usage of the framework behind a lib.optional?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In fact, I tried this first:

} // lib.optionalAttrs (builtins.hasAttr "UserNotifications" darwin.apple_sdk.frameworks) {
    UserNotifications = darwin.apple_sdk.frameworks.UserNotifications;
};

But it does not work, see #137512 (comment) for log.

pinentry in pkgs/top-level/all-packages.nix has similar logic:

pinentry = libsForQt5.callPackage ../tools/security/pinentry {
  libcap = if stdenv.isDarwin then null else libcap;
};

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pinentry in pkgs/top-level/all-packages.nix has similar logic:

I am going to change that right now because that is a really error prone coding style.

@Luflosi
Copy link
Contributor

Luflosi commented Nov 5, 2021

This is what it used to be at some earlier time:

} // lib.optionalAttrs (builtins.hasAttr "UserNotifications" darwin.apple_sdk.frameworks) {
  inherit (darwin.apple_sdk.frameworks) UserNotifications;

Is that better? I don't see how else it could be done.

@azuwis
Copy link
Contributor Author

azuwis commented Nov 5, 2021

This is what it used to be at some earlier time:

} // lib.optionalAttrs (builtins.hasAttr "UserNotifications" darwin.apple_sdk.frameworks) {
  inherit (darwin.apple_sdk.frameworks) UserNotifications;

Is that better? I don't see how else it could be done.

I've tried this, It does not work, same error as the original issue.

@azuwis
Copy link
Contributor Author

azuwis commented Nov 5, 2021

/src/nixpkgs kitty* ⇣⇡ 9s
❯ git diff
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 3db28ab3926..4de79aaf2c8 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1049,9 +1049,8 @@ with pkgs;
   kitty = callPackage ../applications/terminal-emulators/kitty {
     harfbuzz = harfbuzz.override { withCoreText = stdenv.isDarwin; };
     inherit (darwin.apple_sdk.frameworks) Cocoa CoreGraphics Foundation IOKit Kernel OpenGL;
-    UserNotifications = if (builtins.hasAttr "UserNotifications" darwin.apple_sdk.frameworks)
-      then darwin.apple_sdk.frameworks.UserNotifications
-      else null;
+  } // lib.optionalAttrs (builtins.hasAttr "UserNotifications" darwin.apple_sdk.frameworks) {
+    inherit (darwin.apple_sdk.frameworks) UserNotifications;
   };
 
   lifecycled = callPackage ../tools/misc/lifecycled { };

~/src/nixpkgs kitty* ⇣⇡
❯ nix build .#kitty 
warning: Git tree '/Users/azuwis/src/nixpkgs' is dirty
error: builder for '/nix/store/f2jpjg5jyx4rzf907jmxan17klsq6lrr-kitty-0.23.1.drv' failed with exit code 1;
       last 10 log lines:
       > /nix/store/c1lc32m1pvspxvx3akkkl3n8ag4f8j5x-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
       > @interface NSUserNotification : NSObject <NSCopying> {
       >            ^
       > kitty/cocoa_window.m:208:49: error: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Werror,-Wdeprecated-declarations]
       >     NSUserNotification *n = [NSUserNotification new];
       >                                                 ^
       > /nix/store/c1lc32m1pvspxvx3akkkl3n8ag4f8j5x-apple-framework-Foundation-11.0.0/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
       > @interface NSUserNotification : NSObject <NSCopying> {
       >            ^
       > 10 errors generated.
       For full logs, run 'nix log /nix/store/f2jpjg5jyx4rzf907jmxan17klsq6lrr-kitty-0.23.1.drv'.

@SuperSandro2000
Copy link
Member

This is what it used to be at some earlier time:

} // lib.optionalAttrs (builtins.hasAttr "UserNotifications" darwin.apple_sdk.frameworks) {
  inherit (darwin.apple_sdk.frameworks) UserNotifications;

Is that better? I don't see how else it could be done.

I think I like that more.

@Luflosi
Copy link
Contributor

Luflosi commented Nov 5, 2021

Unfortunately that doesn't work as mentioned above.

@azuwis
Copy link
Contributor Author

azuwis commented Nov 13, 2021

Please review the new changes.

Cocoa
CoreGraphics
Foundation
IOKit
Kernel
OpenGL
darwin.apple_sdk.frameworks.Cocoa
darwin.apple_sdk.frameworks.CoreGraphics
darwin.apple_sdk.frameworks.Foundation
darwin.apple_sdk.frameworks.IOKit
darwin.apple_sdk.frameworks.Kernel
darwin.apple_sdk.frameworks.OpenGL
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please revert this. I am not sure how to properly handle the UserNotifications framework but this is also not the solution. Maybe we should just wait until the SDK is bumped.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Copy link
Contributor

@Luflosi Luflosi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@@ -5,6 +5,7 @@
lcms2,
installShellFiles,
dbus,
darwin,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Most packages have UserNotifications as input, which defaults to null, and in the all-packages.nix the test if available is done. Any reason to not do that here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

darwin.apple_sdk.frameworks.UserNotifications does not exit in sdk 10, and x86_64-darwin use sdk 10.

@natsukagami
Copy link
Contributor

Bumping this. Are we still waiting for something else?

Luflosi added a commit to Luflosi/kitty that referenced this pull request Dec 28, 2021
shell.nix is missing a depencency on the UserNotifications framework on macOS with Apple silicon. Unfortunately we can't just unconditionally include this dependency because Nixpkgs uses a different macOS SDK version for macOS on an Intel processor compared to macOS on Apple silicon. The older SDK version 10.12 on Intel does not have the UserNotifications framework, which would lead to an "attribute missing" error when trying to execute `nix-shell`. The condition can be dropped when the macOS SDK version for Intel processors is finally updated. See NixOS/nixpkgs#101229 for progress on that.
See NixOS/nixpkgs#137512 for more context.
Closes kovidgoyal#4352.
@Luflosi Luflosi mentioned this pull request Jan 8, 2022
13 tasks
@teto teto closed this in 5025d2f Jan 16, 2022
@azuwis azuwis deleted the kitty branch January 20, 2022 02:33
@toonn
Copy link
Contributor

toonn commented Feb 2, 2022

Could this have broken Kitty on x86_64-darwin?

@azuwis
Copy link
Contributor Author

azuwis commented Feb 3, 2022

Could this have broken Kitty on x86_64-darwin?

No, see kovidgoyal/kitty#4175 and #143987

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants