From 1797fc8d27e092a103e6f5ea281e62d5ec7fed5e Mon Sep 17 00:00:00 2001 From: sisungo Date: Fri, 17 Jul 2026 12:52:18 +0800 Subject: [PATCH] feat: add package glib Signed-off-by: sisungo --- lib/cpp.py | 4 +- packages/glib/pkgbuild.py | 118 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 121 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..2ed09d3 --- /dev/null +++ b/packages/glib/pkgbuild.py @@ -0,0 +1,118 @@ +import shutil +import os + +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(): + os.environ["CFLAGS"] = os.environ.get("CFLAGS", "") + " -Wno-missing-include-dirs" + os.environ["CXXFLAGS"] = os.environ.get("CXXLAGS", "") + os.environ["CFLAGS"] + 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('libglib')}/libexec", + f"--datadir={get_prefix('glib')}/share", + ]) + cpp.meson_compile() + cpp.meson_install() + +on_build(build) + + +def pack_libxxx(composer, prefix): + composer.makedirs("lib") + for i in os.listdir("lib"): + if not i.startswith(prefix): + continue + composer.addfile(f"lib/{i}", f"lib/{i}") + + +def pack_libglib(composer): + composer.add_dir("libexec", "libexec") + pack_libxxx(composer, "libglib") + + +package("libglib") +dep("semi-libc @same-arch") +dep("libpcre2 @same-arch") +on_pack(pack_libglib) + + +package("libgobject") +dep("libglib (same)") +dep("libffi @same-arch") +on_pack(lambda composer: pack_libxxx(composer, "libgobject")) + +package("libgthread") +dep("libglib (same)") +dep("semi-libc @same-arch") +on_pack(lambda composer: pack_libxxx(composer, "libgthread")) + +package("libgmodule") +dep("libglib (same)") +dep("semi-libc @same-arch") +on_pack(lambda composer: pack_libxxx(composer, "libgmodule")) + +package("libgio") +dep("libglib (same)") +dep("libgobject (same)") +dep("libgmodule (same)") +dep("libz @same-arch") +dep("semi-libc @same-arch") +on_pack(lambda composer: pack_libxxx(composer, "libgio")) + +package("libgirepository") +dep("libglib (same)") +dep("libgobject (same)") +dep("libgmodule (same)") +dep("libffi @same-arch") +dep("semi-libc @same-arch") +on_pack(lambda composer: pack_libxxx(composer, "libgirepository")) + + +def pack_glib(composer): + composer.makedir("lib") + for i in os.listdir("lib"): + if not i.endswith(".so"): + continue + pkgname = i.split("-")[0] + os.symlink(f"{get_prefix(pkgname)}/lib/{i}", f"{composer.workdir}/bundle/lib/{i}") + composer.add_dir("share", "share") + +package("glib") +dep("libglib (same)") +dep("libgobject (same)") +dep("libgthread (same)") +dep("libgmodule (same)") +dep("libgio (same)") +dep("libgirepository (same)") +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"])