From 27fb8be562475a7e921a79f9566f07bb3c3d06f01dc8d826b7b00b3d9c65add0 Mon Sep 17 00:00:00 2001 From: sisungo Date: Fri, 11 Sep 2026 07:33:59 +0000 Subject: [PATCH] feat: add general gui libraries Signed-off-by: sisungo --- packages/fribidi/pkgbuild.py | 38 ++++++++++ packages/harfbuzz/pkgbuild.py | 100 ++++++++++++++++++++++++++ packages/shared-mime-info/pkgbuild.py | 44 ++++++++++++ 3 files changed, 182 insertions(+) create mode 100644 packages/fribidi/pkgbuild.py create mode 100644 packages/harfbuzz/pkgbuild.py create mode 100644 packages/shared-mime-info/pkgbuild.py diff --git a/packages/fribidi/pkgbuild.py b/packages/fribidi/pkgbuild.py new file mode 100644 index 0000000..e9602a4 --- /dev/null +++ b/packages/fribidi/pkgbuild.py @@ -0,0 +1,38 @@ +from lib import cpp +from lib.make import * + + +version("1.0.16") +description("The Free Implementation of the Unicode Bidirectional Algorithm.") +maintainer("sisungo ") +source_url("https://github.com/fribidi/fribidi/releases/download/v1.0.16/fribidi-1.0.16.tar.xz") + +builddep("shortcut/c") +builddep("shortcut/autotools") + + +def build(): + cpp.configure([ + f"--libdir={get_prefix('libfribidi')}/lib", + f"--bindir={get_prefix('fribidi')}/bin", + f"--includedir={get_prefix('libfribidi-dev')}/include", + "--disable-deprecated", + ]) + cpp.make() + cpp.make_install() + +on_build(build) + + +package("libfribidi") +dep("semi-libc @same-arch") +cpp.use_auto_pack(["lib"]) + +package("fribidi") +dep("libfribidi (same)") +cpp.use_auto_pack(["bin"]) + +package("libfribidi-dev") +dep("libfribidi (same)") +dep("semi-libc-dev @same-arch") +cpp.use_auto_pack(["dev"]) diff --git a/packages/harfbuzz/pkgbuild.py b/packages/harfbuzz/pkgbuild.py new file mode 100644 index 0000000..c329dda --- /dev/null +++ b/packages/harfbuzz/pkgbuild.py @@ -0,0 +1,100 @@ +import glob +import os +import shutil + +from lib.make import * +from lib import cpp + + +version("14.3.1") +description("HarfBuzz text shaping engine") +maintainer("sisungo ") +source_url("https://github.com/harfbuzz/harfbuzz/releases/download/14.3.1/harfbuzz-14.3.1.tar.xz") + +builddep("shortcut/meson") +builddep("shortcut/c++") +builddep("glib-dev @target") +builddep("libicu4c-dev @target") +builddep("libcairo-dev @target") +builddep("gobject-introspection @target") +builddep("glib-tools") + + +def fix_pc(newpkgname): + path = f"lib/pkgconfig/harfbuzz-{newpkgname}.pc" + with open(path, 'r') as file: + content = file.read() + content = content.replace( + "-I${includedir}/harfbuzz", + f"-I${{includedir}}/harfbuzz -I{get_prefix(f'libharfbuzz-{newpkgname}-dev')}/include/harfbuzz" + ) + content = content.replace("-L${libdir}", f"-L${{libdir}} -L{get_prefix(f'libharfbuzz-{newpkgname}')}/lib") + with open(path, 'wt+') as file: + file.write(content) + + +def build(): + cpp.meson_setup([ + "--prefix=/", + f"--libdir={get_prefix('libharfbuzz')}/lib", + f"--includedir={get_prefix('libharfbuzz-dev')}/include", + f"-Dcmakepackagedir={get_prefix('libharfbuzz-dev')}/lib/cmake", + "-Dglib=disabled", + "-Dgobject=enabled", + "-Dcairo=enabled", + "-Dicu=enabled", + "-Dfreetype=enabled", + "-Dintrospection=enabled", + "-Dtests=disabled", + ]) + cpp.meson_compile() + if os.path.exists("../cpp_install"): + shutil.rmtree("../cpp_install") + cpp.meson_install() + os.mkdir("include/gir") + os.rename("share/gir-1.0", "include/gir/gir-1.0") + fix_pc("gobject") + +on_build(build) + + +def pack_glob(composer, globs, excluded_kw=[]): + for iglob in globs: + for i in glob.glob(iglob): + if any(excluded_pattern in i for excluded_pattern in excluded_kw): + continue + composer.makedirs(os.path.dirname(i)) + if os.path.islink(i) or os.path.isfile(i): + composer.addfile(i) + else: + composer.add_dir(i) + + +package("libharfbuzz") +dep("libfreetype @same-arch") +dep("libcairo @same-arch") +dep("libicu4c @same-arch") +dep("libpng @same-arch") +dep("libz @same-arch") +on_pack(lambda c: pack_glob(c, ["lib/*.so*"], ["gobject"])) + +package("libharfbuzz-dev") +dep("libharfbuzz (same)") +dep("libfreetype-dev @same-arch") +dep("libcairo-dev @same-arch") +dep("libicu4c-dev @same-arch") +dep("libpng-dev @same-arch") +dep("libz-dev @same-arch") +on_pack(lambda c: pack_glob(c, ["lib/cmake", "lib/pkgconfig/*", "include/harfbuzz/*"], ["gobject"])) + +package("libharfbuzz-gobject") +dep("libharfbuzz (same)") +dep("libglib @same-arch") +dep("libgobject @same-arch") +on_pack(lambda c: pack_glob(c, ["lib/*gobject*", "lib/girepository-1.0"])) + +package("libharfbuzz-gobject-dev") +dep("libharfbuzz-gobject (same)") +dep("libharfbuzz-dev (same)") +dep("glib-dev @same-arch") +on_pack(lambda c: pack_glob(c, ["lib/pkgconfig/*gobject*", "include/harfbuzz/*gobject*", "include/gir"])) diff --git a/packages/shared-mime-info/pkgbuild.py b/packages/shared-mime-info/pkgbuild.py new file mode 100644 index 0000000..98831f4 --- /dev/null +++ b/packages/shared-mime-info/pkgbuild.py @@ -0,0 +1,44 @@ +from lib.make import * +from lib import cpp + + +version("2.5.1") +description("The FreeDesktop Shared MIMO Info database and utilities") +maintainer("sisungo ") +source_url("https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/2.5.1/shared-mime-info-2.5.1.tar.gz") + +builddep("shortcut/c++") +builddep("shortcut/meson") +builddep("libintl-dev @target") +builddep("gettext") +builddep("libxml2-dev @target") +builddep("glib-dev @target") + + +def build(): + cpp.meson_setup([ + f"--prefix={get_prefix('shared-mime-info')}", + "-Dbuild-tools=true", + "-Dbuild-translations=true", + "-Dbuild-tests=false", + "-Dbuild-spec=false", + ]) + cpp.meson_compile() + cpp.meson_install() + +on_build(build) + + +def pack(composer): + composer.makedir("lib") + composer.makedir("share") + composer.add_dir("share/mime") + composer.add_dir("share/pkgconfig", "lib/pkgconfig") + composer.add_dir("share/locale") + composer.add_dir("bin") + +package("shared-mime-info") +dep("libxml2 @same-arch") +dep("libglib @same-arch") +dep("libcxx @same-arch") +on_pack(pack)