From 078ec7fb87d8151ce1d8734486a4f7253e8b84ae Mon Sep 17 00:00:00 2001 From: sisungo Date: Thu, 16 Jul 2026 02:03:17 +0800 Subject: [PATCH] feat: add package glib Signed-off-by: sisungo --- lib/cpp.py | 4 ++- packages/glib/pkgbuild.py | 60 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 packages/glib/pkgbuild.py diff --git a/lib/cpp.py b/lib/cpp.py index 68af147..fd9ad4b 100644 --- a/lib/cpp.py +++ b/lib/cpp.py @@ -78,7 +78,7 @@ def meson_compile(rem: list[str] = []): subprocess.run(["meson", "compile", "-C", "_meson_build"] + rem, check=True) -def meson_install(rem: list[str] | None = None, chdir: bool = True): +def meson_install(rem: list[str] | None = None, chdir: bool = True, move: bool = True): default_rem = ["--destdir", f"{os.getcwd()}/../cpp_install"] if not rem: os.makedirs("../cpp_install", exist_ok=True) @@ -87,6 +87,8 @@ def meson_install(rem: list[str] | None = None, chdir: bool = True): ) if chdir: os.chdir("../cpp_install") + if chdir and move: + _move_install() def _do_auto_pack(pc: pkgcomposer.PkgComposer, srcdir: str, dstdir: str, filter): diff --git a/packages/glib/pkgbuild.py b/packages/glib/pkgbuild.py new file mode 100644 index 0000000..8bea4c3 --- /dev/null +++ b/packages/glib/pkgbuild.py @@ -0,0 +1,60 @@ +import shutil + +from lib.make import * +from lib import cpp + +upstream_version = "2.89.2" + +version(upstream_version) +source_url("https://download.gnome.org/sources/glib/2.89/glib-2.89.2.tar.xz") + +builddep("shortcut/c++") +builddep("shortcut/meson") +builddep("gettext") +builddep(f"libintl-dev @{arch.get_target()}") +builddep("pcre2-tools") +builddep(f"libpcre2-dev @{arch.get_target()}") +builddep(f"libffi-dev @{arch.get_target()}") +builddep("pkgconf") +builddep(f"libz-ng-dev @{arch.get_target()}") +builddep("libexpat") + + +def build(): + cpp.meson_setup([ + "-Druntime_dir=/run", + f"-Dgio_module_dir=/lib/{arch.get_target()}/gio/modules", + "--prefix=/", + f"--bindir={get_prefix('glib-tools')}/bin", + f"--libdir={get_prefix('glib')}/lib", + f"--includedir={get_prefix('glib-dev')}/include", + f"--libexecdir={get_prefix('glib')}/libexec", + f"--datadir={get_prefix('glib')}/share", + ]) + cpp.meson_compile() + cpp.meson_install() + +on_build(build) + +def pack_glib(composer): + composer.makedir("share") + composer.add_dir("share/glib-2.0", "share/glib-2.0") + composer.add_dir("libexec", "libexec") + composer.add_dir("lib", "lib") + shutil.rmtree(f"{composer.workdir}/bundle/lib/{arch.get_target()}") + shutil.rmtree(f"{composer.workdir}/bundle/lib/glib-2.0") + +package("glib") +dep("semi-libc @same-arch") +dep("libz @same-arch") +dep("libpcre2 @same-arch") +dep("libffi @same-arch") +on_pack(pack_glib) + +package("glib-tools") +dep("glib (same)") +cpp.use_auto_pack(["bin"]) + +package("glib-dev") +dep("glib (same)") +cpp.use_auto_pack(["dev"])