For the newly introduced test_multiprocessing_spawn, we need to set
PATH to include the freshly built kitty binary, since it uses
kitty_exe() to determine the path to the binary which it uses to
spawn worker processes.
https://github.com/kovidgoyal/kitty/releases/tag/v0.18.0
I submitted a patch to kitty, so that the library paths can now be passed as arguments to the build system, eliminating the need for patching. This should reduce the required maintenance effort in the future.
This commit removes the dependency on `which`, which is no longer necessary since 5e4fe584fa. It was introduced in 481e61fad8.
The configure phase is now ignored because kitty has no configure script.
The kitty tests are now run after compilation.
The zsh completions no longer need to be invoked with `source` since 38eb737845, so remove the outdated comment.
There is now a link to the changelog.
https://github.com/kovidgoyal/kitty/releases/tag/v0.17.1
The png2icns patch is no longer needed because kitty will now automatically use `png2icns` when `iconutil` cannot be found.
The zsh completions will now work without needing to invoke them with `source`, which means, that we can just install them like the other shell completions.
These two dependencies were used to generate the PNG icons that would later be converted to the icon for the macOS app. The PNGs are now stored in git and are not generated during the build anymore.
Without the `no-werror.patch`, the compilation would fail with the following warning:
```
clang-7: error: argument unused during compilation: '-fno-strict-overflow' [-Werror,-Wunused-command-line-argument]
```
To fix this, the compiler command line options `-pedantic-errors` and `-Werror` were patched out of the build script so that the warning would not become an error and stop the build. This is not ideal as this piece of code is changed fairly frequently, which requires fixing the patch. In the next kitty version the patch would need to be fixed again.
A better alternative is to just not pass `-fno-strict-overflow` to the compiler. This is done by disabling the `strictoverflow` hardening feature.
This makes patching the path for `libEGL` consistent with `libstartup-notification` and `libcanberra`.
It should also prevent silently doing nothing in case the code in kitty is changed, similar to what was described in 1842c4aaa4.
When trying to play a sound, kitty prints an error message because it cannot find `libcanberra.so`:
```
Failed to load libcanberra.so, cannot play beep sound, with error: libcanberra.so.0.2.5: cannot open shared object file: No such file or directory
```
This is fixed by patching the path to the library.
Install the `kitty` command-line utility and the `kitty.app` macOS
application.
* Prefer libicns (png2icns) over Apple's non-free iconutil.
* Work around warnings from Apple headers by disabling -pedantic-errors
and -Werror.
* Work around ld not support LLVM-LTO by disabling LTO.
* Make Kitty and glfw compile for macOS 10.11 (and macOS 10.10).
The previous substitutution only worked by accident as make requires
environment variables to be enclosed in curly brackets as shown in this
excerpt from the build output:
> PYTHONPATH=YTHONPATH:.. HOME=MPDIR/nowhere sphinx-build -M html "." "_build" -T
The substituition is moved to the existing patch file to simplify the
builder expression.
Startup notification doesn't work in recent versions of Kitty:
> Traceback (most recent call last):
> File "/nix/store/3a3b0xd952gp8jw70k5kh3a4zhgzf0p7-kitty-0.12.3/bin/../lib/kitty/kitty/utils.py", line 216, in init_startup_notification
> return init_startup_notification_x11(window_handle, startup_id)
> File "/nix/store/3a3b0xd952gp8jw70k5kh3a4zhgzf0p7-kitty-0.12.3/bin/../lib/kitty/kitty/utils.py", line 201, in init_startup_notification_x11
> return init_x11_startup_notification(display, window_handle, sid)
> OSError: Failed to load libstartup-notification-1.so with error: libstartup-notification-1.so: cannot open shared object file: No such file or directory
Apparently dispatching of startup notification has been moved to a C
binding in kitty 0.6.0 [1] so the substituion had to be modified to reflect
that. Without this fix Kitty still works except that window managers
which depend on startup notifications to be fired (e.g. Awesome)
cannot apply special placement rules.
The substitution mechanism is also changed to use a patch file to detect
this kind of mistakes in the future.
[1]: b08f4ab593