From 383433a365164224f6b292819f818cf64438d3ca Mon Sep 17 00:00:00 2001 From: sisungo Date: Tue, 23 Jun 2026 15:27:46 +0800 Subject: [PATCH] feat: add dependencies and provisions Signed-off-by: sisungo --- lib/make.py | 23 +++++++++++++++++++++++ packages/airup/pkgbuild.py | 1 + packages/aws-lc/pkgbuild.py | 10 ++++++++++ packages/bzip2/pkgbuild.py | 5 +++++ packages/coreutils/pkgbuild.py | 1 + packages/diffutils/pkgbuild.py | 1 + packages/expat/pkgbuild.py | 3 +++ packages/findutils/pkgbuild.py | 1 + packages/gnu-make/pkgbuild.py | 1 + packages/icu4c/pkgbuild.py | 3 +++ packages/kmod/pkgbuild.py | 3 +++ packages/libarchive/pkgbuild.py | 9 +++++++++ packages/mksh/pkgbuild.py | 2 ++ packages/nghttp2/pkgbuild.py | 2 ++ packages/ninja/pkgbuild.py | 3 ++- packages/pkgconf/pkgbuild.py | 3 +++ packages/semi-libc/pkgbuild.py | 1 + packages/sqlite/pkgbuild.py | 3 +++ packages/xz/pkgbuild.py | 3 +++ packages/zlib-ng/pkgbuild.py | 5 +++++ packages/zstd/pkgbuild.py | 3 +++ x.py | 4 ++++ 22 files changed, 89 insertions(+), 1 deletion(-) diff --git a/lib/make.py b/lib/make.py index 818f998..8f9dd06 100644 --- a/lib/make.py +++ b/lib/make.py @@ -1,5 +1,7 @@ import typing +from lib import arch + from . import pkgcomposer, sources _key_global = "@global" @@ -8,11 +10,15 @@ _key_description = "description" _key_on_pack = "on_pack" _key_arch_any = "arch_any" _key_links = "links" +_key_dependencies = "dependencies" +_key_provides = "provides" _current_pkgname: str = _key_global _pkginfo: dict[str, dict[str, typing.Any]] = { _key_global: { _key_links: [], + _key_dependencies: [], + _key_provides: [], }, } _supported_arch: typing.Callable[[str], bool] = lambda x: True @@ -25,6 +31,9 @@ def package(s: str): global _current_pkgname _current_pkgname = s _pkginfo[s] = _pkginfo[_key_global].copy() + _pkginfo[s][_key_links] = _pkginfo[s][_key_links].copy() + _pkginfo[s][_key_dependencies] = _pkginfo[s][_key_dependencies].copy() + _pkginfo[s][_key_provides] = _pkginfo[s][_key_provides].copy() def version(s: str): @@ -39,6 +48,20 @@ def arch_any(): _pkginfo[_current_pkgname][_key_arch_any] = True +def provide(s: str): + _pkginfo[_current_pkgname][_key_provides] += [ + s.replace("@same-arch", f"@{arch.get_target()}") + ] + + +def dep(s: str): + _pkginfo[_current_pkgname][_key_dependencies] += [ + s.replace("(same)", "(same-version) @same-arch") + .replace("(same-version)", f"(={_pkginfo[_current_pkgname][_key_version]})") + .replace("@same-arch", f"@{arch.get_target()}") + ] + + def link(src: str, dst: str, default: bool = True): _pkginfo[_current_pkgname][_key_links] += [ { diff --git a/packages/airup/pkgbuild.py b/packages/airup/pkgbuild.py index 25050f4..80561af 100644 --- a/packages/airup/pkgbuild.py +++ b/packages/airup/pkgbuild.py @@ -27,3 +27,4 @@ def pack_airup(composer): package("airup") on_pack(pack_airup) +dep("semi-libc @same-arch") diff --git a/packages/aws-lc/pkgbuild.py b/packages/aws-lc/pkgbuild.py index b35d9bc..61c824a 100644 --- a/packages/aws-lc/pkgbuild.py +++ b/packages/aws-lc/pkgbuild.py @@ -29,12 +29,22 @@ def pack_libssl(composer): package("aws-lc-libcrypto") on_pack(pack_libcrypto) +dep("semi-libc @same-arch") +provide("libcrypto@same-arch") package("aws-lc-libssl") on_pack(pack_libssl) +dep("aws-lc-libcrypto (same)") +provide("libssl@same-arch") package("aws-lc-tools") cpp.use_auto_pack(["bin"]) +dep("aws-lc-libcrypto (same)") +dep("aws-lc-libssl (same)") package("aws-lc-dev") cpp.use_auto_pack(["dev"]) +dep("aws-lc-libcrypto (same)") +dep("aws-lc-libssl (same)") +provide("libcrypto-dev@same-arch") +provide("libssl-dev@same-arch") diff --git a/packages/bzip2/pkgbuild.py b/packages/bzip2/pkgbuild.py index ad074ff..cc18c8c 100644 --- a/packages/bzip2/pkgbuild.py +++ b/packages/bzip2/pkgbuild.py @@ -21,9 +21,14 @@ on_build(build) package("libbzip2") cpp.use_auto_pack(["lib"]) +dep("semi-libc @same-arch") package("bzip2") cpp.use_auto_pack(["bin"]) +dep("libbzip2 (same)") +dep("sh") +dep("coreutils") package("libbzip2-dev") cpp.use_auto_pack(["dev"]) +dep("libbzip2 (same)") diff --git a/packages/coreutils/pkgbuild.py b/packages/coreutils/pkgbuild.py index 6c603cc..e887f3c 100644 --- a/packages/coreutils/pkgbuild.py +++ b/packages/coreutils/pkgbuild.py @@ -98,3 +98,4 @@ package("coreutils") for func in functions: link(f"bin/coreutils", f"/bin/{func}") rust.use_auto_pack(["bin"]) +dep("semi-libc @same-arch") diff --git a/packages/diffutils/pkgbuild.py b/packages/diffutils/pkgbuild.py index 3f94ff5..578b827 100644 --- a/packages/diffutils/pkgbuild.py +++ b/packages/diffutils/pkgbuild.py @@ -17,3 +17,4 @@ package("diffutils") rust.use_auto_pack(["bin"]) link("bin/diffutils", "/bin/cmp") link("bin/diffutils", "/bin/diff") +dep("semi-libc @same-arch") diff --git a/packages/expat/pkgbuild.py b/packages/expat/pkgbuild.py index 043c4c6..08d5da9 100644 --- a/packages/expat/pkgbuild.py +++ b/packages/expat/pkgbuild.py @@ -20,9 +20,12 @@ on_build(build) package("libexpat") cpp.use_auto_pack(["lib"]) +dep("semi-libc @same-arch") package("libexpat-tools") cpp.use_auto_pack(["bin"]) +dep("libexpat (same)") package("libexpat-dev") cpp.use_auto_pack(["dev"]) +dep("libexpat (same)") diff --git a/packages/findutils/pkgbuild.py b/packages/findutils/pkgbuild.py index 4fc30c3..0a9ec04 100644 --- a/packages/findutils/pkgbuild.py +++ b/packages/findutils/pkgbuild.py @@ -14,3 +14,4 @@ on_build(build) package("findutils") rust.use_auto_pack(["bin"]) +dep("semi-libc @same-arch") diff --git a/packages/gnu-make/pkgbuild.py b/packages/gnu-make/pkgbuild.py index c9d649d..64c9f0d 100644 --- a/packages/gnu-make/pkgbuild.py +++ b/packages/gnu-make/pkgbuild.py @@ -15,3 +15,4 @@ on_build(build) package("gnu-make") cpp.use_auto_pack(["bin"]) +dep("semi-libc @same-arch") diff --git a/packages/icu4c/pkgbuild.py b/packages/icu4c/pkgbuild.py index 6c7ec47..8d68867 100644 --- a/packages/icu4c/pkgbuild.py +++ b/packages/icu4c/pkgbuild.py @@ -20,9 +20,12 @@ on_build(build) package("libicu4c") cpp.use_auto_pack(["lib"]) +dep("semi-libc @same-arch") package("icu4c") cpp.use_auto_pack(["bin"]) +dep("libicu4c (same)") package("libicu4c-dev") cpp.use_auto_pack(["dev"]) +dep("libicu4c (same)") diff --git a/packages/kmod/pkgbuild.py b/packages/kmod/pkgbuild.py index 3cc9a72..c4a85c4 100644 --- a/packages/kmod/pkgbuild.py +++ b/packages/kmod/pkgbuild.py @@ -18,9 +18,12 @@ on_build(build) package("libkmod") cpp.use_auto_pack(["lib"]) +dep("semi-libc @same-arch") package("kmod") cpp.use_auto_pack(["bin"]) +dep("libkmod (same)") package("libkmod-dev") cpp.use_auto_pack(["dev"]) +dep("libkmod (same)") diff --git a/packages/libarchive/pkgbuild.py b/packages/libarchive/pkgbuild.py index 56529aa..d08047c 100644 --- a/packages/libarchive/pkgbuild.py +++ b/packages/libarchive/pkgbuild.py @@ -17,9 +17,18 @@ on_build(build) package("libarchive") cpp.use_auto_pack(["lib"]) +dep("libcrypto@same-arch") +dep("libzstd @same-arch") +dep("libz @same-arch") +dep("liblzma @same-arch") +dep("semi-libc @same-arch") +dep("libzstd @same-arch") package("libarchive-tools") cpp.use_auto_pack(["bin"]) +dep("libarchive (same)") +provide("bsdtar") package("libarchive-dev") cpp.use_auto_pack(["dev"]) +dep("libarchive (same)") diff --git a/packages/mksh/pkgbuild.py b/packages/mksh/pkgbuild.py index 6540bcb..e1881cf 100644 --- a/packages/mksh/pkgbuild.py +++ b/packages/mksh/pkgbuild.py @@ -20,3 +20,5 @@ def pack_mksh(composer): package("mksh") on_pack(pack_mksh) +dep("semi-libc @same-arch") +provide("sh") diff --git a/packages/nghttp2/pkgbuild.py b/packages/nghttp2/pkgbuild.py index de3166b..cf3ee3b 100644 --- a/packages/nghttp2/pkgbuild.py +++ b/packages/nghttp2/pkgbuild.py @@ -20,6 +20,8 @@ on_build(build) package("libnghttp2") cpp.use_auto_pack(["lib"]) +dep("semi-libc @same-arch") package("libnghttp2-dev") cpp.use_auto_pack(["dev"]) +dep("libnghttp2 (same)") diff --git a/packages/ninja/pkgbuild.py b/packages/ninja/pkgbuild.py index adaf66b..685380d 100644 --- a/packages/ninja/pkgbuild.py +++ b/packages/ninja/pkgbuild.py @@ -1,6 +1,5 @@ import os -import lib.cpp as cpp from lib.make import * version("1.13.2") @@ -21,3 +20,5 @@ def pack_ninja(composer): package("ninja") on_pack(pack_ninja) +dep("semi-libc @same-arch") +dep("libcxx @same-arch") diff --git a/packages/pkgconf/pkgbuild.py b/packages/pkgconf/pkgbuild.py index a74b0b1..f4c843f 100644 --- a/packages/pkgconf/pkgbuild.py +++ b/packages/pkgconf/pkgbuild.py @@ -23,9 +23,12 @@ on_build(build) package("libpkgconf") cpp.use_auto_pack(["lib"]) +dep("semi-libc @same-arch") package("pkgconf") cpp.use_auto_pack(["bin"]) +dep("libpkgconf (same)") package("libpkgconf-dev") cpp.use_auto_pack(["dev"]) +dep("libpkgconf (same)") diff --git a/packages/semi-libc/pkgbuild.py b/packages/semi-libc/pkgbuild.py index 9949a5f..1b07e3d 100644 --- a/packages/semi-libc/pkgbuild.py +++ b/packages/semi-libc/pkgbuild.py @@ -25,3 +25,4 @@ link("lib/libc.so", f"/lib/ld-musl-{musl_target()}.so.1") package("semi-libc-dev") use_auto_pack(["dev"]) +dep("semi-libc (same)") diff --git a/packages/sqlite/pkgbuild.py b/packages/sqlite/pkgbuild.py index abf0823..4457c35 100644 --- a/packages/sqlite/pkgbuild.py +++ b/packages/sqlite/pkgbuild.py @@ -22,9 +22,12 @@ on_build(build) package("libsqlite") cpp.use_auto_pack(["lib"]) +dep("semi-libc @same-arch") package("sqlite") cpp.use_auto_pack(["bin"]) +dep("libsqlite (same)") package("libsqlite-dev") cpp.use_auto_pack(["dev"]) +dep("libsqlite (same)") diff --git a/packages/xz/pkgbuild.py b/packages/xz/pkgbuild.py index 8d22b30..12a377e 100644 --- a/packages/xz/pkgbuild.py +++ b/packages/xz/pkgbuild.py @@ -17,9 +17,12 @@ on_build(build) package("liblzma") cpp.use_auto_pack(["lib"]) +dep("semi-libc @same-arch") package("xz") cpp.use_auto_pack(["bin"]) +dep("liblzma (same)") package("liblzma-dev") cpp.use_auto_pack(["dev"]) +dep("liblzma (same)") diff --git a/packages/zlib-ng/pkgbuild.py b/packages/zlib-ng/pkgbuild.py index 27f4113..cc52d22 100644 --- a/packages/zlib-ng/pkgbuild.py +++ b/packages/zlib-ng/pkgbuild.py @@ -18,9 +18,14 @@ on_build(build) package("libz-ng") cpp.use_auto_pack(["lib"]) +provide("libz") +dep("semi-libc @same-arch") package("zlib-ng-tools") cpp.use_auto_pack(["bin"]) +dep("libz-ng (same)") package("libz-ng-dev") cpp.use_auto_pack(["dev"]) +dep("libz-ng (same)") +provide("libz-dev") diff --git a/packages/zstd/pkgbuild.py b/packages/zstd/pkgbuild.py index 2c1887e..fd6c88c 100644 --- a/packages/zstd/pkgbuild.py +++ b/packages/zstd/pkgbuild.py @@ -19,9 +19,12 @@ on_build(build) package("libzstd") cpp.use_auto_pack(["lib"]) +dep("semi-libc @same-arch") package("zstd") cpp.use_auto_pack(["bin"]) +dep("libzstd (same)") package("libzstd-dev") cpp.use_auto_pack(["dev"]) +dep("libzstd (same)") diff --git a/x.py b/x.py index b3af438..be87220 100644 --- a/x.py +++ b/x.py @@ -79,6 +79,8 @@ def run_build_package(package: str): # Pack packages for pkgname in lib.make._pkginfo.keys(): + lib.make._current_pkgname = pkgname + if pkgname == lib.make._key_global: continue @@ -106,6 +108,8 @@ def run_build_package(package: str): "version": pkgver, "arch": pkgarch, "links": pkginfo[lib.make._key_links], + "dependencies": pkginfo[lib.make._key_dependencies], + "provides": pkginfo[lib.make._key_provides], } composer.write_manifest(manifest) composer.compose()