From a316c87db6bafd295cc418538bc4f9457eafc028 Mon Sep 17 00:00:00 2001 From: Colin Date: Fri, 22 Mar 2024 14:29:23 +0000 Subject: [PATCH] koreader-from-src: use nixpkgs nanosvg (or, most of it) --- pkgs/additional/koreader-from-src/default.nix | 14 +++++++++++++- pkgs/additional/koreader-from-src/sources.nix | 14 +++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/pkgs/additional/koreader-from-src/default.nix b/pkgs/additional/koreader-from-src/default.nix index e0bbe513..0510b793 100644 --- a/pkgs/additional/koreader-from-src/default.nix +++ b/pkgs/additional/koreader-from-src/default.nix @@ -65,6 +65,7 @@ , libpng , libunibreak , libwebp +, nanosvg , openssl , openssh , sdcv @@ -87,6 +88,15 @@ let rev = "v${version}"; hash = "sha256-/51pOGSAoaS0gOKlqNKruwaKY5qylzCpeNUrWyzYTpA="; }; + nanosvg-headers-ko = symlinkJoin { + # koreader's heavily-patched mupdf is dependent on a koreader-specific `stb_image_write` extension to nanosvg. + # nanosvg is used as a header-only library, so just patch that extension straight into the src. + name = "nanosvg-headers-ko"; + paths = [ + "${nanosvg.src}/src" + "${src}/base/thirdparty/nanosvg" + ]; + }; # XXX: for some inscrutable reason, `enable52Compat` is *partially* broken, only when cross compiling. # `table.unpack` is non-nil, but `table.pack` is nil. # the normal path is for `enable52Compat` to set `env.NIX_CFLAGS_COMPILE = "-DLUAJIT_ENABLE_LUA52COMPAT";` @@ -279,6 +289,8 @@ let LUA_LIBDIR="${lib.getLib luaEnv}/lib/libluajit-5.1.so" \ LUA_RAPIDJSON_ROCK="${rockspecFor "rapidjson"}" \ LUA_SPORE_ROCK="${rockspecFor "lua-spore"}" \ + NANOSVG_HEADERS="${nanosvg-headers-ko}" \ + NANOSVG_INCLUDE_DIR="${nanosvg-headers-ko}" \ OPENSSL_LIB="${lib.getLib openssl}/lib/libssl.so" \ OPENSSL_DIR="${opensslAll}" \ SSL_LIB="${lib.getLib openssl}/lib/libssl.so.3" \ @@ -515,7 +527,7 @@ stdenv.mkDerivation rec { passthru = { # exposed for debugging - inherit luajit52 luaEnv rockspecFor; + inherit luajit52 luaEnv nanosvg-headers-ko rockspecFor; inherit (overlayedLuaPkgs luaEnv.pkgs) luajson htmlparser diff --git a/pkgs/additional/koreader-from-src/sources.nix b/pkgs/additional/koreader-from-src/sources.nix index 56b64a22..710fa8d2 100644 --- a/pkgs/additional/koreader-from-src/sources.nix +++ b/pkgs/additional/koreader-from-src/sources.nix @@ -241,13 +241,13 @@ in # package = libAndDev mupdf; # nixpkgs' mupdf is incompatible with koreader's `libwrap-mupdf` # package = libAndDev mupdf_1_17; # does not compile }; - nanosvg = { - source.url = "https://github.com/memononen/nanosvg.git"; - source.rev = "93ce879dc4c04a3ef1758428ec80083c38610b1f"; - source.hash = "sha256-ZtenaXJqMZr2+BxYENG1zUoQ+Qoxlxy0m/1YfJBKAFk="; - machineAgnostic = true; - package = nanosvg.src; # KOReader only wants the .h files, but decides to do that without even building it. - }; + # nanosvg = { + # source.url = "https://github.com/memononen/nanosvg.git"; + # source.rev = "93ce879dc4c04a3ef1758428ec80083c38610b1f"; + # source.hash = "sha256-ZtenaXJqMZr2+BxYENG1zUoQ+Qoxlxy0m/1YfJBKAFk="; + # machineAgnostic = true; + # package = nanosvg.src; # KOReader only wants the .h files, but decides to do that without even building it. + # }; # openssh = { # source.url = "https://github.com/openssh/openssh-portable.git"; # source.rev = "V_8_6_P1";