From e5b7bccdf2b99a005d9e0a8daf70fca4e1c09238 Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Sun, 1 Sep 2024 10:06:21 +0200 Subject: [PATCH] Correctly include lib64 library on manylinux archives Manylinux build are based on Redhat and libs are put in `/lib64` directory and not in `/lib//` as on Debian based build. Fix #746 --- .github/scripts/common.py | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/.github/scripts/common.py b/.github/scripts/common.py index b7c09d7a..bc93a5c0 100644 --- a/.github/scripts/common.py +++ b/.github/scripts/common.py @@ -69,6 +69,14 @@ def major_version(version: str) -> str: return version.split(".")[0] +# Depending of base distribution, libraries are in "lib64" (redhat base) or "lib/" (debian base). +# On top of that, when cross-compiling, libraries are always put in `lib/`. +# As we use this as glob regex to select which files to add to archive, this is not a problem to have both. +def lib_prefix(file): + yield "lib64/" + file + yield "lib/*/" + file + + # We have build everything. Now create archives for public deployement. EXPORT_FILES = { "kiwix-tools": ( @@ -97,18 +105,25 @@ def major_version(version: str) -> str: "libzim": ( INSTALL_DIR, ( + ## Linux # We need to package all dependencies (`*.a`) on wasm - "lib/*/libzim.a" if COMPILE_CONFIG != "wasm" else "lib/*.a", - "lib/*/libzim.so", - "lib/*/libzim.so.{version}".format(version=main_project_versions["libzim"]), - "lib/*/libzim.so.{version}".format( - version=major_version(main_project_versions["libzim"]) + *lib_prefix("libzim.a" if COMPILE_CONFIG != "wasm" else "*.a"), + *lib_prefix("libzim.so"), + *lib_prefix( + "libzim.so.{version}".format(version=main_project_versions["libzim"]) + ), + *lib_prefix( + "libzim.so.{version}".format( + version=major_version(main_project_versions["libzim"]) + ) ), + ## MacOS "lib/libzim.{}.dylib".format( major_version(main_project_versions["libzim"]) ), "lib/libzim.dylib", "lib/*/libzim.pc", + ## Windows "bin/zim-{version}.dll".format( version=major_version(main_project_versions["libzim"]) ), @@ -117,6 +132,7 @@ def major_version(version: str) -> str: version=major_version(main_project_versions["libzim"]) ), "lib/zim.lib", + ## Includes and others "include/zim/**/*.h", "share/icu/{}/icudt{}l.dat".format( base_deps_versions["icu4c"], major_version(base_deps_versions["icu4c"])