From 22254db74cc4883a755faa02b98ce3d2c0e1a1f4 Mon Sep 17 00:00:00 2001 From: Colin Date: Fri, 22 Mar 2024 14:42:37 +0000 Subject: [PATCH] koreader-from-src: cleanup (remove unused "machineAgnostic" and "package" third-party dependency options) --- pkgs/additional/koreader-from-src/default.nix | 50 ++++--------------- 1 file changed, 11 insertions(+), 39 deletions(-) diff --git a/pkgs/additional/koreader-from-src/default.nix b/pkgs/additional/koreader-from-src/default.nix index 0510b793..648e7e62 100644 --- a/pkgs/additional/koreader-from-src/default.nix +++ b/pkgs/additional/koreader-from-src/default.nix @@ -88,6 +88,7 @@ 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. @@ -97,6 +98,7 @@ let "${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";` @@ -108,6 +110,7 @@ let "${src}/base/thirdparty/luajit/koreader-luajit-enable-table_pack.patch" ]; }); + overlayedLuaPkgs = luaPkgs: let ps = with ps; { luajson = buildLuarocksPackage rec { @@ -159,6 +162,7 @@ let }; } // luaPkgs; in ps; + luaEnv = luajit52.withPackages (ps: with (overlayedLuaPkgs ps); [ luajson htmlparser @@ -168,10 +172,12 @@ let luasocket rapidjson ]); + rockspecFor = luaPkgName: let pkg = (overlayedLuaPkgs luaEnv.pkgs)."${luaPkgName}"; in "${luaEnv}/${pkg.rocksSubdir}/${luaPkgName}/${pkg.rockspecVersion}/${luaPkgName}-${pkg.rockspecVersion}.rockspec"; + crossTargets = { # koreader-base Makefile targets to use when compiling for the given host platform # only used when cross compiling @@ -182,24 +188,6 @@ let else crossTargets."${stdenv.hostPlatform.parsed.cpu.name}"; - fakeBuildDep = buildPackages.writeShellScript "fake-build-ko-dep" '' - set -x - lib="$1" - build_dir="$2" - prebuilt="$3" - mkdir -p "$build_dir/$lib-prefix/src" - rm -rf "$build_dir/$lib-prefix/src/$lib" - rm -rf "$build_dir/$lib-prefix/src/$lib-build" - # the library build directory koreader uses isn't consistently named, but we can cover most cases ($lib or $lib-build). - # we have to copy the full tree rather than just symlink because koreader/base/Makefile.third - # is copying lib/*.so into include/. - # seriously, wtf are they doing over there. - cp -R "$prebuilt" "$build_dir/$lib-prefix/src/$lib" - cp -R "$prebuilt" "$build_dir/$lib-prefix/src/$lib-build" - # ln -s "$prebuilt" "$build_dir/$lib-prefix/src/$lib" - # ln -s "$prebuilt" "$build_dir/$lib-prefix/src/$lib-build" - ''; - getContrib = pkg: stdenv.mkDerivation { inherit (pkg) name src; dontConfigure = true; @@ -310,7 +298,6 @@ let ZSTD_DIR="${lib.getDev zstd}" \ ZSTD_DESTDIR="${lib.getDev zstd}" \ ''; - # LUAROCKS_BINARY="${lib.optionalString (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) (stdenv.hostPlatform.emulator buildPackages)} ${luajit52}/bin/lua ${luaEnv.pkgs.luarocks}/bin/.luarocks-wrapped" \ # DO_STRIP=0 else it'll try to strip our externally built libraries, and error because those live in the nix store. makeFlags = '' @@ -420,12 +407,10 @@ stdenv.mkDerivation rec { link_lib_into_build_dir() { lib="$1" rev="$2" - platform="$3" - prebuilt="$4" lib_src="../$lib" cmake_lists="base/thirdparty/$lib/CMakeLists.txt" - build_dir="base/thirdparty/$lib/build/$platform" + build_dir="base/thirdparty/$lib/build/${stdenv.hostPlatform.config}" # link the nix clone into the directory koreader would use for checkout # ref="base/thirdparty/$l/build/git_checkout" @@ -462,25 +447,12 @@ stdenv.mkDerivation rec { cp -R "$lib_src" "$prefix/src/$lib" # src dir needs to be writable for koreader to apply its own patches chmod u+w -R "$prefix/src/$lib" - - if [ -n "$prebuilt" ]; then - abs_build_dir="$(realpath "$build_dir")" - sed -i 's/INSTALL_COMMAND .*/INSTALL_COMMAND ""/' "$cmake_lists" - sed -i \ - "s:BUILD_COMMAND .*:BUILD_COMMAND ${fakeBuildDep} $lib $abs_build_dir $prebuilt:" \ - "$cmake_lists" - fi } - ${builtins.concatStringsSep "\n" (lib.mapAttrsToList - (name: src: - let - # for machine-agnostic libraries (e.g. pure lua), koreader doesn't build them in a flavored directory - machine = if src.machineAgnostic or false then "" else stdenv.hostPlatform.config; - in - ''link_lib_into_build_dir "${name}" "${src.source.rev}" "${machine}" "${src.package or ""}"'' - ) - sources.thirdparty + ${builtins.concatStringsSep "\n" ( + lib.mapAttrsToList + (name: src: lib.escapeShellArgs [ "link_lib_into_build_dir" name src.source.rev ]) + sources.thirdparty )} # outDir should match OUTPUT_DIR in koreader-base