koreader-from-src: cleanup (remove unused "machineAgnostic" and "package" third-party dependency options)

This commit is contained in:
Colin 2024-03-22 14:42:37 +00:00
parent a316c87db6
commit 22254db74c

View File

@ -88,6 +88,7 @@ let
rev = "v${version}"; rev = "v${version}";
hash = "sha256-/51pOGSAoaS0gOKlqNKruwaKY5qylzCpeNUrWyzYTpA="; hash = "sha256-/51pOGSAoaS0gOKlqNKruwaKY5qylzCpeNUrWyzYTpA=";
}; };
nanosvg-headers-ko = symlinkJoin { nanosvg-headers-ko = symlinkJoin {
# koreader's heavily-patched mupdf is dependent on a koreader-specific `stb_image_write` extension to nanosvg. # 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. # 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" "${src}/base/thirdparty/nanosvg"
]; ];
}; };
# XXX: for some inscrutable reason, `enable52Compat` is *partially* broken, only when cross compiling. # XXX: for some inscrutable reason, `enable52Compat` is *partially* broken, only when cross compiling.
# `table.unpack` is non-nil, but `table.pack` is nil. # `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";` # 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" "${src}/base/thirdparty/luajit/koreader-luajit-enable-table_pack.patch"
]; ];
}); });
overlayedLuaPkgs = luaPkgs: let overlayedLuaPkgs = luaPkgs: let
ps = with ps; { ps = with ps; {
luajson = buildLuarocksPackage rec { luajson = buildLuarocksPackage rec {
@ -159,6 +162,7 @@ let
}; };
} // luaPkgs; } // luaPkgs;
in ps; in ps;
luaEnv = luajit52.withPackages (ps: with (overlayedLuaPkgs ps); [ luaEnv = luajit52.withPackages (ps: with (overlayedLuaPkgs ps); [
luajson luajson
htmlparser htmlparser
@ -168,10 +172,12 @@ let
luasocket luasocket
rapidjson rapidjson
]); ]);
rockspecFor = luaPkgName: let rockspecFor = luaPkgName: let
pkg = (overlayedLuaPkgs luaEnv.pkgs)."${luaPkgName}"; pkg = (overlayedLuaPkgs luaEnv.pkgs)."${luaPkgName}";
in in
"${luaEnv}/${pkg.rocksSubdir}/${luaPkgName}/${pkg.rockspecVersion}/${luaPkgName}-${pkg.rockspecVersion}.rockspec"; "${luaEnv}/${pkg.rocksSubdir}/${luaPkgName}/${pkg.rockspecVersion}/${luaPkgName}-${pkg.rockspecVersion}.rockspec";
crossTargets = { crossTargets = {
# koreader-base Makefile targets to use when compiling for the given host platform # koreader-base Makefile targets to use when compiling for the given host platform
# only used when cross compiling # only used when cross compiling
@ -182,24 +188,6 @@ let
else else
crossTargets."${stdenv.hostPlatform.parsed.cpu.name}"; 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 { getContrib = pkg: stdenv.mkDerivation {
inherit (pkg) name src; inherit (pkg) name src;
dontConfigure = true; dontConfigure = true;
@ -310,7 +298,6 @@ let
ZSTD_DIR="${lib.getDev zstd}" \ ZSTD_DIR="${lib.getDev zstd}" \
ZSTD_DESTDIR="${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. # DO_STRIP=0 else it'll try to strip our externally built libraries, and error because those live in the nix store.
makeFlags = '' makeFlags = ''
@ -420,12 +407,10 @@ stdenv.mkDerivation rec {
link_lib_into_build_dir() { link_lib_into_build_dir() {
lib="$1" lib="$1"
rev="$2" rev="$2"
platform="$3"
prebuilt="$4"
lib_src="../$lib" lib_src="../$lib"
cmake_lists="base/thirdparty/$lib/CMakeLists.txt" 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 # link the nix clone into the directory koreader would use for checkout
# ref="base/thirdparty/$l/build/git_checkout" # ref="base/thirdparty/$l/build/git_checkout"
@ -462,25 +447,12 @@ stdenv.mkDerivation rec {
cp -R "$lib_src" "$prefix/src/$lib" cp -R "$lib_src" "$prefix/src/$lib"
# src dir needs to be writable for koreader to apply its own patches # src dir needs to be writable for koreader to apply its own patches
chmod u+w -R "$prefix/src/$lib" 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 ${builtins.concatStringsSep "\n" (
(name: src: lib.mapAttrsToList
let (name: src: lib.escapeShellArgs [ "link_lib_into_build_dir" name src.source.rev ])
# for machine-agnostic libraries (e.g. pure lua), koreader doesn't build them in a flavored directory sources.thirdparty
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
)} )}
# outDir should match OUTPUT_DIR in koreader-base # outDir should match OUTPUT_DIR in koreader-base