diff --git a/hosts/common/cross/default.nix b/hosts/common/cross/default.nix index 674ce64c..5e7ae881 100644 --- a/hosts/common/cross/default.nix +++ b/hosts/common/cross/default.nix @@ -258,7 +258,6 @@ in # nixpkgs hdf5 is at commit 3e847e003632bdd5fdc189ccbffe25ad2661e16f # hdf5 # configure: error: cannot run test program while cross compiling # http2 - kitty # "FileNotFoundError: [Errno 2] No such file or directory: 'pkg-config'" libgccjit # "../../gcc-9.5.0/gcc/jit/jit-result.c:52:3: error: 'dlclose' was not declared in this scope" (needed by emacs!) # libsForQt5 # qtbase # make: g++: No such file or directory libtiger # "src/tiger_internal.h:24:10: fatal error: pango/pango.h: No such file or directory" @@ -733,10 +732,17 @@ in nativeBuildInputs = orig.nativeBuildInputs ++ [ next.glib next.gtk-doc ]; }); - # kitty = prev.kitty.override { - # # does not solve original error - # inherit (emulated) stdenv; - # }; + kitty = prev.kitty.overrideAttrs (upstream: { + # fixes: "FileNotFoundError: [Errno 2] No such file or directory: 'pkg-config'" + PKGCONFIG_EXE = "${next.buildPackages.pkg-config}/bin/${next.buildPackages.pkg-config.targetPrefix}pkg-config"; + + # when building docs, kitty's setup.py invokes `sphinx`, which tries to load a .so for the host. + # on cross compilation, that fails + KITTY_NO_DOCS = true; + patches = upstream.patches ++ [ + ./kitty-no-docs.patch + ]; + }); libchamplain = prev.libchamplain.overrideAttrs (upstream: { # fixes: "failed to produce output path for output 'devdoc'" diff --git a/hosts/common/cross/kitty-no-docs.patch b/hosts/common/cross/kitty-no-docs.patch new file mode 100644 index 00000000..2bb4bfab --- /dev/null +++ b/hosts/common/cross/kitty-no-docs.patch @@ -0,0 +1,22 @@ +diff --git a/setup.py b/setup.py +index 2b9d240e..770bc5e7 100755 +--- a/setup.py ++++ b/setup.py +@@ -1092,11 +1092,12 @@ def c(base_path: str, **kw: object) -> None: + + + def create_linux_bundle_gunk(ddir: str, libdir_name: str) -> None: +- if not os.path.exists('docs/_build/html'): +- make = 'gmake' if is_freebsd else 'make' +- run_tool([make, 'docs']) +- copy_man_pages(ddir) +- copy_html_docs(ddir) ++ if not os.getenv('KITTY_NO_DOCS'): ++ if not os.path.exists('docs/_build/html'): ++ make = 'gmake' if is_freebsd else 'make' ++ run_tool([make, 'docs']) ++ copy_man_pages(ddir) ++ copy_html_docs(ddir) + for (icdir, ext) in {'256x256': 'png', 'scalable': 'svg'}.items(): + icdir = os.path.join(ddir, 'share', 'icons', 'hicolor', icdir, 'apps') + safe_makedirs(icdir)