Skip to content

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.

@ofborg ofborg bot added the 6.topic: darwin Running or building packages on Darwin label Sep 12, 2021
@ofborg ofborg bot requested review from Luflosi, rvolosatovs and tex September 12, 2021 11:07
@ofborg ofborg bot added 10.rebuild-darwin: 1-10 This PR causes between 1 and 10 packages to rebuild on Darwin. 10.rebuild-darwin: 1 This PR causes 1 package to rebuild on Darwin. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. 10.rebuild-linux: 1 This PR causes 1 package to rebuild on Linux. labels Sep 12, 2021
@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.

@ofborg ofborg bot added 10.rebuild-linux: 0 This PR does not cause any packages to rebuild on Linux. and removed 10.rebuild-linux: 1 This PR causes 1 package to rebuild on Linux. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. labels Sep 13, 2021
@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.

@azuwis azuwis force-pushed the kitty branch 3 times, most recently from a7477f8 to 6343e31 Compare September 13, 2021 15:02
@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.

@ofborg ofborg bot removed the 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. label Nov 5, 2021
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
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.

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.

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

Labels

6.topic: darwin Running or building packages on Darwin 10.rebuild-darwin: 1-10 This PR causes between 1 and 10 packages to rebuild on Darwin. 10.rebuild-darwin: 1 This PR causes 1 package to rebuild on Darwin. 10.rebuild-linux: 0 This PR does not cause any packages to rebuild on Linux.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants