From 8d99e1d12a25644a5b9d2f59ec03f52a0dcf08ac Mon Sep 17 00:00:00 2001 From: sisungo Date: Sat, 11 Jul 2026 16:17:17 +0800 Subject: [PATCH] feat: add package cmake Signed-off-by: sisungo --- lib/make.py | 2 + packages/cmake/pkgbuild.py | 63 ++++++++++++++++++++++++++++++++ packages/rhash/files/librhash.pc | 11 ++++++ packages/rhash/pkgbuild.py | 20 +++++++++- 4 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 packages/cmake/pkgbuild.py create mode 100644 packages/rhash/files/librhash.pc diff --git a/lib/make.py b/lib/make.py index c87fbbe..2638653 100644 --- a/lib/make.py +++ b/lib/make.py @@ -44,6 +44,8 @@ def builddep(s: str): elif s == "shortcut/rust": builddep("shortcut/c") _builddep += ["cargo", "rustc"] + elif s == "shortcut/cmake": + _builddep += ["cmake", "ninja"] else: _builddep += [s] diff --git a/packages/cmake/pkgbuild.py b/packages/cmake/pkgbuild.py new file mode 100644 index 0000000..bd895da --- /dev/null +++ b/packages/cmake/pkgbuild.py @@ -0,0 +1,63 @@ +import subprocess +import os + +from lib import cpp, arch +from lib.make import * + +upstream_version = "4.3.4" +[upstream_major, upstream_minor, upstream_rev] = upstream_version.split(".") + +version(upstream_version) +source_url( + "https://github.com/Kitware/CMake/releases/download/v4.3.4/cmake-4.3.4.tar.gz" +) + +builddep("shortcut/c++") +builddep("shortcut/autotools") +builddep("shortcut/cmake") +builddep(f"libcurl-dev @{arch.get_target()}") +builddep(f"aws-lc-dev @{arch.get_target()}") +builddep(f"libcurl-dev @{arch.get_target()}") +builddep(f"libexpat-dev @{arch.get_target()}") +builddep(f"libz-dev @{arch.get_target()}") +builddep(f"libbzip2-dev @{arch.get_target()}") +builddep(f"liblzma-dev @{arch.get_target()}") +builddep(f"libzstd-dev @{arch.get_target()}") +builddep(f"libnghttp2-dev @{arch.get_target()}") +builddep(f"librhash-dev @{arch.get_target()}") +builddep(f"libarchive-dev @{arch.get_target()}") +builddep(f"linux-dev @{arch.get_target()}") + + +def build(): + os.environ["CMAKE_PREFIX_PATH"] = f"/lib/{arch.get_target()}" + cpp.cmake([ + f"-DCMAKE_INSTALL_PREFIX={get_prefix('cmake')}", + "-DCMAKE_USE_SYSTEM_CURL=ON", + "-DCMAKE_USE_SYSTEM_ZLIB=ON", + "-DCMAKE_USE_SYSTEM_ZSTD=ON", + "-DCMAKE_USE_SYSTEM_LIBRHASH=ON", + "-DCMAKE_USE_SYSTEM_LIBARCHIVE=ON", + "-DCMAKE_USE_SYSTEM_LIBLZMA=ON", + "-DCMAKE_USE_SYSTEM_EXPAT=ON", + "-DCMAKE_USE_SYSTEM_BZIP2=ON", + ]) + cpp.ninja() + cpp.ninja_install() + + +on_build(build) + +def pack_cmake(composer): + composer.add_dir("bin", "bin") + composer.makedir("share") + composer.add_dir( + f"share/cmake-{upstream_major}.{upstream_minor}", + f"share/cmake-{upstream_major}.{upstream_minor}", + ) + +package("cmake") +dep("semi-libc @same-arch") +dep("libcxx @same-arch") +dep("libcurl @same-arch") +on_pack(pack_cmake) diff --git a/packages/rhash/files/librhash.pc b/packages/rhash/files/librhash.pc new file mode 100644 index 0000000..1f201da --- /dev/null +++ b/packages/rhash/files/librhash.pc @@ -0,0 +1,11 @@ +prefix=/ +exec_prefix=${prefix} +libdir= +includedir= + +Name: librhash +Description: LibRHash shared library +Version: +Cflags: -I${includedir} +Libs: -L${libdir} -lrhash +Libs.private: diff --git a/packages/rhash/pkgbuild.py b/packages/rhash/pkgbuild.py index af2d8c9..79c5346 100644 --- a/packages/rhash/pkgbuild.py +++ b/packages/rhash/pkgbuild.py @@ -1,25 +1,43 @@ from lib import cpp from lib.make import * -version("1.4.6") +import os + +upstream_version = "1.4.6" + +version(upstream_version) source_url("https://github.com/rhash/RHash/archive/refs/tags/v1.4.6.tar.gz") builddep("shortcut/c") builddep("shortcut/autotools") +with open("files/librhash.pc") as f: + librhash_pc = f.read() def build(): + global librhash_pc cpp.configure( [ "--prefix=/", f"--bindir={get_prefix('rhash-tools')}/bin", f"--libdir={get_prefix('librhash')}/lib", "--disable-gettext", + "--enable-lib-static", ] ) cpp.make() cpp.make_install() + os.symlink("librhash.so.1", "./lib/librhash.so") + os.makedirs("./lib/pkgconfig", exist_ok=True) + with open("./lib/pkgconfig/librhash.pc", "w+") as file: + librhash_pc = (librhash_pc + .replace("libdir=", f"libdir={get_prefix('librhash')}/lib") + .replace("includedir=", f"includedir={get_prefix('librhash-dev')}/include") + .replace("Version:", f"Version: {upstream_version}") + ) + file.write(librhash_pc) + on_build(build)