Compare commits

..
56 Commits
Author SHA1 Message Date
sisungo f7ff9d9742 feat: add prefix support
Signed-off-by: sisungo <[email protected]>
2026-07-02 22:35:03 +08:00
sisungo c9627305c2 Merge pull request 'feat: add package libffi' (#61) from sisungo/semios-packages:libffi into master
Reviewed-on: semios/semios-packages#61
2026-06-29 16:37:04 +08:00
sisungo 69adb4a599 Merge pull request 'feat: add package neatvi' (#60) from sisungo/semios-packages:neatvi into master
Reviewed-on: semios/semios-packages#60
2026-06-29 16:36:49 +08:00
sisungo 7076f76481 Merge pull request 'feat: add package awk' (#64) from sisungo/semios-packages:awk into master
Reviewed-on: semios/semios-packages#64
2026-06-29 16:36:33 +08:00
sisungo bc23a14b1a feat: add package awk
Signed-off-by: sisungo <[email protected]>
2026-06-29 15:43:38 +08:00
sisungo 5b78c48d8e feat: add package libffi
Signed-off-by: sisungo <[email protected]>
2026-06-29 14:13:56 +08:00
sisungo 36ceb91590 feat: add package neatvi
Signed-off-by: sisungo <[email protected]>
2026-06-29 13:56:33 +08:00
sisungo f24ea2d4bf Merge pull request 'feat: use packie new links format' (#59) from sisungo/semios-packages:new-links-format into master
Reviewed-on: semios/semios-packages#59
2026-06-28 17:12:16 +08:00
sisungo b4aa642b52 feat: use packie new links format
Signed-off-by: sisungo <[email protected]>
2026-06-28 16:31:35 +08:00
sisungo 9eb4453f3a Merge pull request 'feat: update aws-lc OPENSSLDIR' (#58) from sisungo/semios-packages:aws-lc-patch into master
Reviewed-on: semios/semios-packages#58
2026-06-28 11:32:43 +08:00
sisungo 132c47e419 Merge pull request 'feat: add aws-lc support for python' (#57) from sisungo/semios-packages:python into master
Reviewed-on: semios/semios-packages#57
2026-06-28 10:25:56 +08:00
sisungo 596b055467 feat: update aws-lc OPENSSLDIR
Signed-off-by: sisungo <[email protected]>
2026-06-28 03:35:34 +08:00
sisungo cc0a73feff feat: add aws-lc support for python
Signed-off-by: sisungo <[email protected]>
2026-06-28 02:46:31 +08:00
sisungo 4b842d43be Merge pull request 'feat: add package file' (#52) from sisungo/semios-packages:file into master
Reviewed-on: semios/semios-packages#52
2026-06-27 22:00:27 +08:00
sisungo 7f1ee4b598 Merge pull request 'feat: update aws-lc to 5.1.0' (#56) from sisungo/semios-packages:aws-lc-update into master
Reviewed-on: semios/semios-packages#56
2026-06-27 22:00:09 +08:00
sisungo 15eb054209 feat: update aws-lc to 5.1.0
Signed-off-by: sisungo <[email protected]>
2026-06-27 21:31:22 +08:00
sisungo 16a1087785 feat: add package file
Signed-off-by: sisungo <[email protected]>
2026-06-27 18:28:20 +08:00
sisungo d0186dacb5 Merge pull request 'feat: add package python' (#49) from sisungo/semios-packages:python into master
Reviewed-on: semios/semios-packages#49
2026-06-27 13:45:30 +08:00
sisungo 574f8a5996 Merge pull request 'feat: update semi-libc to v1.2.6' (#50) from sisungo/semios-packages:semi-libc-new into master
Reviewed-on: semios/semios-packages#50
2026-06-27 13:44:27 +08:00
sisungo bb3c5b2741 feat: update semi-libc to v1.2.6
Signed-off-by: sisungo <[email protected]>
2026-06-27 13:43:36 +08:00
sisungo e749a4f1f9 feat: add package python
Signed-off-by: sisungo <[email protected]>
2026-06-27 10:46:20 +08:00
sisungo 10ca4e4931 Merge pull request 'feat: add package openssh' (#47) from sisungo/semios-packages:openssh into master
Reviewed-on: semios/semios-packages#47
2026-06-26 19:58:49 +08:00
sisungo e65eee4bf1 Merge pull request 'feat: add package iana-timezone' (#46) from sisungo/semios-packages:iana-timezone into master
Reviewed-on: semios/semios-packages#46
2026-06-26 19:58:39 +08:00
sisungo 7797e7674c Merge pull request 'feat: add package mandoc' (#45) from sisungo/semios-packages:mandoc into master
Reviewed-on: semios/semios-packages#45
2026-06-26 19:58:24 +08:00
sisungo d9b7a01d01 Merge pull request 'feat: add package ncurses' (#48) from sisungo/semios-packages:ncurses into master
Reviewed-on: semios/semios-packages#48
2026-06-26 19:58:08 +08:00
sisungo 232d8c51d6 feat: add package ncurses
Signed-off-by: sisungo <[email protected]>
2026-06-26 18:11:33 +08:00
sisungo 56998f9787 feat: add package openssh
Signed-off-by: sisungo <[email protected]>
2026-06-26 17:07:35 +08:00
sisungo 510eca1ab6 feat: add package iana-timezone
Signed-off-by: sisungo <[email protected]>
2026-06-26 16:43:12 +08:00
sisungo 057330e43f feat: add package mandoc
Signed-off-by: sisungo <[email protected]>
2026-06-26 14:30:24 +08:00
sisungo 0ba3f9a31c Merge pull request 'feat: add package ripgrep' (#41) from sisungo/semios-packages:ripgrep into master
Reviewed-on: semios/semios-packages#41
2026-06-26 14:12:41 +08:00
sisungo 63c3485f5e Merge pull request 'feat: add package sed' (#42) from sisungo/semios-packages:sed into master
Reviewed-on: semios/semios-packages#42
2026-06-26 14:12:26 +08:00
sisungo 9835791b4c Merge pull request 'feat: add package nextvi' (#40) from sisungo/semios-packages:nextvi into master
Reviewed-on: semios/semios-packages#40
2026-06-26 14:12:15 +08:00
sisungo 204f650c63 Merge pull request 'fix: some dependencies are invalid' (#44) from sisungo/semios-packages:fix-deps into master
Reviewed-on: semios/semios-packages#44
2026-06-26 14:12:01 +08:00
sisungo e9fe74358f Merge pull request 'feat: add link to /bin/sh in mksh' (#39) from sisungo/semios-packages:mksh-link into master
Reviewed-on: semios/semios-packages#39
2026-06-26 14:11:48 +08:00
sisungo 962c916ae1 fix: some dependencies are invalid
Signed-off-by: sisungo <[email protected]>
2026-06-26 13:37:12 +08:00
sisungo 248c0bbc66 Merge pull request 'feat: add unix functions to coreutils' (#38) from sisungo/semios-packages:coreutils-unix into master
Reviewed-on: semios/semios-packages#38
2026-06-25 21:52:24 +08:00
sisungo 33d3df6dfc feat: add package nextvi
Signed-off-by: sisungo <[email protected]>
2026-06-25 06:46:24 +08:00
sisungo bffd8e3cdc feat: add link to /bin/sh in mksh
Signed-off-by: sisungo <[email protected]>
2026-06-25 06:19:26 +08:00
sisungo 51368da8ff feat: add package ripgrep
Signed-off-by: sisungo <[email protected]>
2026-06-25 06:14:38 +08:00
sisungo f8f18ce917 feat: add package sed
Signed-off-by: sisungo <[email protected]>
2026-06-25 06:10:15 +08:00
sisungo f7242af3a9 feat: add unix functions to coreutils
Signed-off-by: sisungo <[email protected]>
2026-06-25 05:57:11 +08:00
sisungo a3dbac2b67 Merge pull request 'feat: add dependencies and provisions' (#37) from sisungo/semios-packages:deps into master
Reviewed-on: semios/semios-packages#37
2026-06-23 15:29:18 +08:00
sisungo 383433a365 feat: add dependencies and provisions
Signed-off-by: sisungo <[email protected]>
2026-06-23 15:27:46 +08:00
sisungo 844b40daaa Merge pull request 'fix: architecture environments overrides inherited' (#36) from sisungo/semios-packages:arches into master
Reviewed-on: semios/semios-packages#36
2026-06-22 19:14:50 +08:00
sisungo e568b3f8ee fix: architecture environments overrides inherited
Signed-off-by: sisungo <[email protected]>
2026-06-22 18:32:41 +08:00
sisungo a1ae78330c Merge pull request 'feat: refactor ./x script' (#35) from sisungo/semios-packages:master into master
Reviewed-on: semios/semios-packages#35
2026-06-22 17:41:40 +08:00
sisungo 9ca10cb556 feat: refactor ./x script
Signed-off-by: sisungo <[email protected]>
2026-06-22 17:38:23 +08:00
sisungo 95a92ddae2 Merge pull request 'feat: add package llvm-project' (#25) from sisungo/semios-packages:llvm-project into master
Reviewed-on: semios/semios-packages#25
2026-06-21 20:36:38 +08:00
sisungo e6dd47ca7f feat: add package llvm-project
Signed-off-by: sisungo <[email protected]>
2026-06-21 20:35:56 +08:00
sisungo 2d9586117e Merge pull request 'feat: add package icu4c' (#33) from sisungo/semios-packages:icu4c into master
Reviewed-on: semios/semios-packages#33
2026-06-18 18:59:24 +08:00
sisungo 4df9ac681f Merge pull request 'feat (lib): fix cpp auto-pack symlink error' (#34) from sisungo/semios-packages:cpp_fixup into master
Reviewed-on: semios/semios-packages#34
2026-06-18 18:59:11 +08:00
sisungo a47f241569 Merge pull request 'feat: add package airup' (#32) from sisungo/semios-packages:airup into master
Reviewed-on: semios/semios-packages#32
2026-06-18 18:58:32 +08:00
sisungo df21a97eb1 Merge pull request 'feat (lib): add artifacts_dir to rust' (#31) from sisungo/semios-packages:rust-artifacts into master
Reviewed-on: semios/semios-packages#31
2026-06-18 18:55:08 +08:00
sisungo adea3cc896 feat: add package airup
Signed-off-by: sisungo <[email protected]>
2026-06-18 01:25:39 +08:00
sisungo 5a36fc628c feat: add package icu4c
Signed-off-by: sisungo <[email protected]>
2026-06-18 01:19:16 +08:00
sisungo 18f624e3c9 feat (lib): add artifacts_dir to rust
Signed-off-by: sisungo <[email protected]>
2026-06-17 20:27:37 +08:00
41 changed files with 1153 additions and 27 deletions
+15 -3
View File
@@ -3,7 +3,18 @@ import os
from . import packie
all: dict[str, dict[str, str]] = {
"aarch64-semios-linux": {},
"aarch64-semios-linux": {
"CC": "clang -target aarch64-semios-linux-musl",
"CXX": "clang++ -target aarch64-semios-linux-musl",
},
"x86_64-semios-linux": {
"CC": "clang -target x86_64-semios-linux-musl",
"CXX": "clang++ -target x86_64-semios-linux-musl",
},
"riscv64-semios-linux": {
"CC": "clang -target riscv64-semios-linux-musl",
"CXX": "clang++ -target riscv64-semios-linux-musl",
},
}
_target: str = packie.host_arch()
@@ -15,5 +26,6 @@ def get_target():
def set_target(arch: str):
global _target
_target = arch
for key, val in all[_target]:
os.environ[key] = val
for key in all[_target].keys():
if not os.environ.get(key):
os.environ[key] = all[_target][key]
+16 -1
View File
@@ -1,4 +1,5 @@
import os
import shutil
import subprocess
from lib.common import treedir
@@ -32,11 +33,25 @@ def make(rem: list[str] = []):
subprocess.run(["make", f"-j{os.cpu_count()}"] + rem, check=True)
def make_install(rem: list[str] | None = None, chdir: bool = True):
def make_install(rem: list[str] | None = None, chdir: bool = True, move: bool = True):
default_rem = ["DESTDIR=" + os.getcwd() + "/../cpp_install"]
if rem is None:
try:
shutil.rmtree("../cpp_install")
except:
pass
subprocess.run(["make", "install"] + (rem or default_rem), check=True)
if rem is None and chdir:
os.chdir("../cpp_install")
if chdir and move:
subprocess.run(
["sh", "-c", "cp -r ./pkg/*@*/* . 2>/dev/null || true"], check=False
)
subprocess.run(
["sh", "-c", "cp -r ./usr/local/* . 2>/dev/null || true"], check=False
)
subprocess.run(["sh", "-c", "cp -r ./usr/* . 2>/dev/null || true"], check=False)
subprocess.run(["rm", "-rf", "./pkg", "./usr"], check=False)
def ninja(rem: list[str] = []):
+32
View File
@@ -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] += [
{
@@ -49,6 +72,15 @@ def link(src: str, dst: str, default: bool = True):
]
def get_prefix(pkgname: str) -> str:
pkginfo = _pkginfo[pkgname]
if pkginfo.get(_key_arch_any):
pkgarch = "any"
else:
pkgarch = arch.get_target()
return f"/pkg/{pkgname}={pkginfo[_key_version]}@{pkgarch}"
def supported_arch(s: list[str] | typing.Callable[[str], bool]):
global _supported_arch
if isinstance(s, list):
+7 -1
View File
@@ -23,7 +23,13 @@ class PkgComposer:
def write_manifest(self, manifest: dict):
with open(self.workdir + "/PkgManifest.json", "w") as f:
json.dump(manifest, f, indent=4)
json.dump(manifest, f)
def write_links(self, links: list[dict]):
with open(self.workdir + "/_links", "w") as f:
for link in links:
json.dump(link, f)
f.write("\n")
def compose(self):
shutil.make_archive(self.pkgfile, _archive_format, self.workdir)
+6 -3
View File
@@ -22,6 +22,10 @@ def build(rem: list[str] = []):
subprocess.run(cmdline)
def artifacts_dir():
return f"target/{_rust_triple(arch.get_target())}/release"
def _do_auto_pack(pc: pkgcomposer.PkgComposer, srcdir: str, dstdir: str, filter):
pc.makedir(dstdir)
with os.scandir(srcdir) as entries:
@@ -49,11 +53,10 @@ def _autopack_filter_bin(ent) -> bool:
def _auto_pack(profiles: list[str], pc: pkgcomposer.PkgComposer):
target_dir = f"target/{_rust_triple(arch.get_target())}/release"
if "lib" in profiles:
_do_auto_pack(pc, target_dir, "lib", _autopack_filter_lib)
_do_auto_pack(pc, artifacts_dir(), "lib", _autopack_filter_lib)
if "bin" in profiles:
_do_auto_pack(pc, target_dir, "bin", _autopack_filter_bin)
_do_auto_pack(pc, artifacts_dir(), "bin", _autopack_filter_bin)
def use_auto_pack(profiles: list[str]):
+9
View File
@@ -0,0 +1,9 @@
{
"os_name": "\u001b[36;4mSemiOS\u001b[0m",
"config_dir": "/var/config/airup",
"service_dir": "/share/airup/services",
"milestone_dir": "/share/airup/milestones",
"runtime_dir": "/run/airup",
"env_vars": {},
"early_cmds": []
}
+30
View File
@@ -0,0 +1,30 @@
import os
import shutil
from lib import rust
from lib.make import *
version("0.10.9")
source_url("https://github.com/sisungo/airup/archive/refs/tags/v0.10.9.tar.gz")
def build():
shutil.copy2("../../build_manifest.json", "build_manifest.json")
rust.build()
on_build(build)
def pack_airup(composer):
os.chdir(rust.artifacts_dir())
composer.makedir("bin")
composer.makedir("libexec")
composer.addfile("airup", "bin/airup")
composer.addfile("airupd", "bin/airupd")
composer.addfile("airup-fallback-logger", "libexec/airup-fallback-logger")
package("airup")
on_pack(pack_airup)
dep("semi-libc @same-arch")
+24
View File
@@ -0,0 +1,24 @@
import os
from lib import cpp
from lib.make import *
version("2026.4.26")
source_url("https://github.com/onetrueawk/awk/archive/refs/tags/20260426.tar.gz")
def build():
cpp.make()
on_build(build)
def pack(composer):
composer.makedir("bin")
composer.addfile("a.out", "bin/awk")
package("awk")
dep("semi-libc @same-arch")
on_pack(pack)
@@ -0,0 +1,11 @@
--- a/crypto/x509/x509_def.c
+++ b/crypto/x509/x509_def.c
@@ -5,7 +5,7 @@
// TODO(fork): cleanup
-#define OPENSSLDIR "/etc/ssl"
+#define OPENSSLDIR "/var/config/ssl"
#define X509_CERT_AREA OPENSSLDIR
#define X509_CERT_DIR OPENSSLDIR "/certs"
+12 -2
View File
@@ -3,8 +3,8 @@ import os
import lib.cpp as cpp
from lib.make import *
version("5.0.0")
source_url("https://github.com/aws/aws-lc/archive/refs/tags/v5.0.0.tar.gz")
version("5.1.0")
source_url("https://github.com/aws/aws-lc/archive/refs/tags/v5.1.0.tar.gz")
def build():
@@ -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")
+5
View File
@@ -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)")
+30 -1
View File
@@ -7,19 +7,24 @@ block_hook("autolink")
def build():
rust.build()
rust.build(["--features", "unix"])
on_build(build)
functions = [
"[",
"arch",
"b2sum",
"base32",
"base64",
"basename",
"basenc",
"cat",
"chgrp",
"chmod",
"chown",
"chroot",
"cksum",
"comm",
"cp",
@@ -40,21 +45,34 @@ functions = [
"false",
"fmt",
"fold",
"groups",
"head",
"hostid",
"hostname",
"id",
"install",
"join",
"kill",
"link",
"ln",
"logname",
"ls",
"md5sum",
"mkdir",
"mkfifo",
"mknod",
"mktemp",
"more",
"mv",
"nice",
"nl",
"nohup",
"nproc",
"numfmt",
"od",
"paste",
"pathchk",
"pinky",
"pr",
"printenv",
"printf",
@@ -75,22 +93,32 @@ functions = [
"sleep",
"sort",
"split",
"stat",
"stdbuf",
"stty",
"sum",
"sync",
"tac",
"tail",
"tee",
"test",
"timeout",
"touch",
"tr",
"true",
"truncate",
"tsort",
"tty",
"uname",
"unexpand",
"uniq",
"unlink",
"uptime",
"users",
"vdir",
"wc",
"who",
"whoami",
"yes",
]
@@ -98,3 +126,4 @@ package("coreutils")
for func in functions:
link(f"bin/coreutils", f"/bin/{func}")
rust.use_auto_pack(["bin"])
dep("semi-libc @same-arch")
+1
View File
@@ -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")
+3
View File
@@ -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)")
+43
View File
@@ -0,0 +1,43 @@
import subprocess
from lib import cpp
from lib.make import *
VERSION = "5.48"
version(VERSION)
source_git("https://github.com/file/file.git", "FILE5_48")
def build():
subprocess.run(["autoreconf", "-fiv"], check=True)
cpp.configure(["--prefix=/", f"--datadir=/share/file"])
cpp.make()
cpp.make_install()
on_build(build)
def pack_magic_db(composer):
composer.add_dir(f"share/file", "share")
package("file-magic-db")
arch_any()
link("share/misc/magic.mgc", "/share/file/misc/magic.mgc")
on_pack(pack_magic_db)
package("libmagic")
dep("semi-libc @same-arch")
dep("file-magic-db (same-version) @any")
cpp.use_auto_pack(["lib"])
package("libmagic-dev")
dep("libmagic (same)")
cpp.use_auto_pack(["dev"])
package("file")
dep("libmagic (same)")
cpp.use_auto_pack(["bin"])
+1
View File
@@ -14,3 +14,4 @@ on_build(build)
package("findutils")
rust.use_auto_pack(["bin"])
dep("semi-libc @same-arch")
+2 -1
View File
@@ -6,7 +6,7 @@ source_url("https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz")
def build():
cpp.configure(["--prefix=/"])
cpp.configure([f"--prefix={get_prefix('gnu-make')}"])
cpp.make()
cpp.make_install()
@@ -15,3 +15,4 @@ on_build(build)
package("gnu-make")
cpp.use_auto_pack(["bin"])
dep("semi-libc @same-arch")
+32
View File
@@ -0,0 +1,32 @@
import os
from lib import cpp
from lib.make import *
version("2026.4.22")
source_url("https://data.iana.org/time-zones/releases/tzdb-2026b.tar.lz")
def build():
cpp.make()
cpp.make_install()
on_build(build)
def pack_db(composer):
composer.makedir("share")
composer.add_dir("share/zoneinfo", "share/zoneinfo")
package("iana-timezone-db")
arch_any()
on_pack(pack_db)
package("iana-timezone-tools")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["bin"])
package("iana-timezone-dev")
cpp.use_auto_pack(["dev"])
+40
View File
@@ -0,0 +1,40 @@
import os
from lib import cpp
from lib.make import *
version("78.3")
source_url(
"https://github.com/unicode-org/icu/releases/download/release-78.3/icu4c-78.3-sources.tgz"
)
def build():
os.chdir("source")
cpp.configure(
[
"--enable-plugins",
"--prefix=/",
f"--bindir={get_prefix('icu4c')}/bin",
f"--sbindir={get_prefix('icu4c')}/sbin",
f"--libdir={get_prefix('libicu4c')}/lib",
f"--includedir={get_prefix('libicu4c-dev')}/include",
]
)
cpp.make()
cpp.make_install()
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)")
+5
View File
@@ -18,9 +18,14 @@ on_build(build)
package("libkmod")
cpp.use_auto_pack(["lib"])
dep("semi-libc @same-arch")
dep("libzstd @same-arch")
dep("libcrypto @same-arch")
package("kmod")
cpp.use_auto_pack(["bin"])
dep("libkmod (same)")
package("libkmod-dev")
cpp.use_auto_pack(["dev"])
dep("libkmod (same)")
+17 -1
View File
@@ -8,7 +8,14 @@ source_url(
def build():
cpp.configure(["--prefix=/"])
cpp.configure(
[
"--prefix=/",
f"--bindir={get_prefix('libarchive-tools')}/bin",
f"--libdir={get_prefix('libarchive')}/lib",
f"--includedir={get_prefix('libarchive-dev')}/include",
]
)
cpp.make()
cpp.make_install()
@@ -17,9 +24,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)")
+32
View File
@@ -0,0 +1,32 @@
from lib import cpp
from lib.make import *
version("3.6.0")
source_url(
"https://github.com/libffi/libffi/releases/download/v3.6.0/libffi-3.6.0.tar.gz"
)
def build():
cpp.configure(
[
"--prefix=/",
f"--libdir={get_prefix('libffi')}/lib",
f"--includedir={get_prefix('libffi-dev')}/include",
"--enable-portable-binary",
"--disable-multi-os-directory",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("libffi")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["lib"])
package("libffi-dev")
dep("libffi (same)")
cpp.use_auto_pack(["dev"])
+366
View File
@@ -0,0 +1,366 @@
import os
import subprocess
import lib.cpp as cpp
from lib import arch
from lib.make import *
version("22.1.7")
source_url(
"https://github.com/llvm/llvm-project/releases/download/llvmorg-22.1.7/llvm-project-22.1.7.src.tar.xz"
)
def llvm_host_triple():
return arch.get_target().replace("-semios-linux", "-semios-linux-musl")
def build():
subprocess.run(
[
"cmake",
"-G",
"Ninja",
"-S",
"llvm",
"-B",
"build",
"-DCMAKE_BUILD_TYPE=Release",
f"-DLLVM_DEFAULT_TARGET_TRIPLE={llvm_host_triple()}",
f"-DLLVM_HOST_TRIPLE={llvm_host_triple()}",
"-DLLVM_ENABLE_PROJECTS=clang;lldb;lld;bolt",
"-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi;libunwind;compiler-rt",
"-DLLVM_ENABLE_EH=ON",
"-DLLVM_ENABLE_RTTI=ON",
"-DCMAKE_INSTALL_PREFIX=/",
"-DLLVM_ENABLE_ASSERTIONS=OFF",
"-DLLVM_BUILD_LLVM_DYLIB=ON",
"-DLLVM_ENABLE_LIBCXX=ON",
"-DLLVM_ENABLE_LIBEDIT=ON",
"-DLLVM_LINK_LLVM_DYLIB=ON",
"-DLIBCXX_HAS_MUSL_LIBC=ON",
"-DCOMPILER_RT_BUILD_GWP_ASAN=OFF",
],
check=True,
)
subprocess.run(["cmake", "--build", "build"], check=True)
os.environ["DESTDIR"] = os.getcwd() + "/cpp_install"
subprocess.run(["cmake", "--install", "build"], check=True)
os.chdir("cpp_install")
on_build(build)
def pack_runtime_lib(composer, files):
composer.makedir("lib")
for file in files:
composer.addfile(f"lib/{llvm_host_triple()}/{file}", f"lib/{file}")
def pack_runtime_dev(composer, files: list[str]):
for file in files:
if file.startswith("lib/"):
composer.makedirs("lib")
composer.addfile(file.replace("lib/", f"lib/{llvm_host_triple()}/"), file)
elif file.startswith("include/"):
realpath = file.replace("include/", "usr/include/")
composer.makedirs(os.path.dirname(file))
if os.path.isfile(realpath):
composer.addfile(realpath, file)
elif os.path.isdir(realpath):
composer.add_dir(realpath, file)
package("libunwind")
on_pack(
lambda composer: pack_runtime_lib(
composer, ["libunwind.so.1.0", "libunwind.so.1", "libunwind.so"]
)
)
package("libunwind-dev")
on_pack(
lambda composer: pack_runtime_dev(
composer,
[
"lib/libunwind.a",
"include/mach-o/compact_unwind_encoding.h",
"include/__libunwind_config.h",
"include/libunwind.h",
"include/libunwind.modulemap",
"include/unwind.h",
"include/unwind_arm_ehabi.h",
"include/unwind_itanium.h",
],
)
)
package("libcxxabi")
on_pack(
lambda composer: pack_runtime_lib(
composer, ["libc++abi.so", "libc++abi.so.1", "libc++abi.so.1.0"]
)
)
package("libcxxabi-dev")
on_pack(lambda composer: pack_runtime_dev(composer, ["lib/libc++abi.a"]))
package("libcxx")
on_pack(
lambda composer: pack_runtime_lib(
composer, ["libc++.so", "libc++.so.1", "libc++.so.1.0"]
)
)
package("libcxx-dev")
on_pack(
lambda composer: pack_runtime_dev(
composer,
[
"lib/libc++.a",
"lib/libc++experimental.a",
"lib/libc++.modules.json",
f"include/{llvm_host_triple()}/c++/v1",
"include/c++/v1",
],
)
)
def pack_libllvm(composer):
LIBRARIES = [
"libLLVM.so.22.1",
"libLLVM.so",
"libLLVM-22.so",
"libLTO.so",
"libLTO.so.22.1",
"libRemarks.so",
"libRemarks.so.22.1",
]
composer.makedir("lib")
for lib in LIBRARIES:
composer.addfile(f"lib/{lib}", f"lib/{lib}")
package("libllvm")
on_pack(pack_libllvm)
def pack_llvm(composer):
BINARIES = [
"bugpoint",
"dsymutil",
"llc",
"lli",
"llvm-addr2line",
"llvm-ar",
"llvm-as",
"llvm-bcanalyzer",
"llvm-bitcode-strip",
"llvm-bolt",
"llvm-bolt-binary-analysis",
"llvm-bolt-heatmap",
"llvm-boltdiff",
"llvm-c-test",
"llvm-cas",
"llvm-cat",
"llvm-cfi-verify",
"llvm-cgdata",
"llvm-config",
"llvm-cov",
"llvm-ctxprof-util",
"llvm-cvtres",
"llvm-cxxdump",
"llvm-cxxfilt",
"llvm-cxxmap",
"llvm-debuginfo-analyzer",
"llvm-debuginfod",
"llvm-debuginfod-find",
"llvm-diff",
"llvm-dis",
"llvm-dlltool",
"llvm-dwarfdump",
"llvm-dwarfutil",
"llvm-dwp",
"llvm-exegesis",
"llvm-extract",
"llvm-gsymutil",
"llvm-ifs",
"llvm-install-name-tool",
"llvm-ir2vec",
"llvm-jitlink",
"llvm-lib",
"llvm-libtool-darwin",
"llvm-link",
"llvm-lipo",
"llvm-lto",
"llvm-lto2",
"llvm-mc",
"llvm-mca",
"llvm-ml",
"llvm-ml64",
"llvm-modextract",
"llvm-nm",
"llvm-objcopy",
"llvm-objdump",
"llvm-offload-binary",
"llvm-offload-wrapper",
"llvm-opt-report",
"llvm-otool",
"llvm-pdbutil",
"llvm-profdata",
"llvm-profgen",
"llvm-ranlib",
"llvm-rc",
"llvm-readelf",
"llvm-readobj",
"llvm-readtapi",
"llvm-reduce",
"llvm-remarkutil",
"llvm-rtdyld",
"llvm-sim",
"llvm-size",
"llvm-split",
"llvm-stress",
"llvm-strings",
"llvm-strip",
"llvm-symbolizer",
"llvm-tblgen",
"llvm-tli-checker",
"llvm-undname",
"llvm-windres",
"llvm-xray",
"merge-fdata",
"opt",
"perf2bolt",
"reduce-chunk-list",
"sancov",
"sanstats",
"verify-uselistorder",
]
composer.makedir("bin")
for bin in BINARIES:
composer.addfile(f"usr/bin/{bin}", f"bin/{bin}")
package("llvm")
on_pack(pack_llvm)
def pack_lld(composer):
BINARIES = ["lld", "lld-link", "ld.lld", "ld64.lld", "wasm-ld"]
composer.makedir("bin")
for bin in BINARIES:
composer.addfile(f"usr/bin/{bin}", f"bin/{bin}")
package("lld")
on_pack(pack_lld)
def pack_liblldb(composer):
LIBRARIES = [
"liblldb.so",
"liblldb.so.22.1",
"liblldb.so.22.1.7",
"liblldbIntelFeatures.so",
"liblldbIntelFeatures.so.22.1",
]
composer.makedir("lib")
for lib in LIBRARIES:
composer.addfile(f"lib/{lib}", f"lib/{lib}")
package("liblldb")
on_pack(pack_liblldb)
def pack_lldb(composer):
BINARIES = [
"lldb",
"lldb-argdumper",
"lldb-dap",
"lldb-instr",
"lldb-mcp",
"lldb-server",
"yaml2macho-core",
]
composer.makedir("bin")
for bin in BINARIES:
composer.addfile(f"bin/{bin}", f"bin/{bin}")
package("lldb")
on_pack(pack_lldb)
def pack_libclang(composer):
LIBRARIES = [
"libclang.so",
"libclang-cpp.so",
"libclang-cpp.so.22.1",
"libclang.so.22.1",
"libclang.so.22.1.7",
]
composer.makedir("lib")
for lib in LIBRARIES:
composer.addfile(f"lib/{lib}", f"lib/{lib}")
package("libclang")
on_pack(pack_libclang)
def pack_clang(composer):
BINARIES = [
"clang",
"clang++",
"clang-22",
"clang-check",
"clang-cl",
"clang-cpp",
"clang-extdef-mapping",
"clang-format",
"clang-installapi",
"clang-linker-wrapper",
"clang-nvlink-wrapper",
"clang-offload-bundler",
"clang-offload-packager",
"clang-refactor",
"clang-repl",
"clang-scan-deps",
"clang-sycl-linker",
"clang-tblgen",
"diagtool",
"git-clang-format",
"hmaptool",
"intercept-build",
"amdgpu-arch",
"c-index-test",
"analyze-build",
"nvptx-arch",
"offload-arch",
"scan-build",
"scan-build-py",
"scan-view",
]
LIBEXEC = [
"analyze-c++",
"analyze-cc",
"c++-analyzer",
"ccc-analyzer",
"intercept-c++",
"intercept-cc",
]
composer.makedir("bin")
for bin in BINARIES:
composer.addfile(f"usr/bin/{bin}", f"bin/{bin}")
composer.makedir("libexec")
for libexec in LIBEXEC:
composer.addfile(f"usr/libexec/{libexec}", f"libexec/{libexec}")
package("clang")
on_pack(pack_clang)
+21
View File
@@ -0,0 +1,21 @@
import os
import subprocess
from lib import cpp
from lib.make import *
version("1.14.6")
source_url("https://mandoc.bsd.lv/snapshots/mandoc-1.14.6.tar.gz")
def build():
cpp.configure()
cpp.make([f"CC={os.environ['CC']}"])
cpp.make_install()
subprocess.run(["sh", "-c", "chmod +w bin/* sbin/*"], check=True)
on_build(build)
package("mandoc")
cpp.use_auto_pack(["bin"])
+3
View File
@@ -20,3 +20,6 @@ def pack_mksh(composer):
package("mksh")
on_pack(pack_mksh)
dep("semi-libc @same-arch")
provide("sh")
link("bin/mksh", "/bin/sh")
+65
View File
@@ -0,0 +1,65 @@
import os
from lib import cpp
from lib.make import *
version("6.6")
source_url("https://invisible-island.net/archives/ncurses/ncurses-6.6.tar.gz")
def build():
cpp.configure(
[
"--prefix=/",
f"--bindir={get_prefix('ncurses-tools')}/bin",
f"--sbindir={get_prefix('ncurses-tools')}/sbin",
f"--libdir={get_prefix('libncurses')}/lib",
f"--includedir={get_prefix('libncurses')}/include",
"--enable-pc-files",
"--with-shared",
"--with-terminfo-dirs=/share/terminfo",
"--enable-symlinks",
"--enable-sp-funcs",
"--enable-ext-colors",
"--enable-rgb-color",
"--enable-ext-mouse",
"--enable-ext-putwin",
"--enable-no-padding",
"--enable-sigwinch",
"--enable-tcap-names",
"--with-pthread",
"--enable-pthreads-eintr",
"--enable-weak-symbols",
"--enable-reentrant",
"--without-develop",
]
)
cpp.make()
cpp.make_install()
os.unlink("lib/terminfo")
on_build(build)
package("libncurses")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["lib"])
package("ncurses-tools")
dep("libncurses (same)")
cpp.use_auto_pack(["bin"])
package("libncurses-dev")
dep("libncurses (same)")
cpp.use_auto_pack(["dev"])
def pack_terminfo(composer):
composer.makedir("share")
composer.add_dir("share/tabset", "share/tabset")
composer.add_dir("share/terminfo", "share/terminfo")
package("ncurses-terminfo")
arch_any()
on_pack(pack_terminfo)
+25
View File
@@ -0,0 +1,25 @@
import os
from lib import cpp
from lib.make import *
version("19")
source_url("https://github.com/aligrudi/neatvi/archive/refs/tags/19.tar.gz")
def build():
cpp.make([f"CC={os.environ['CC']}"])
on_build(build)
def pack(composer):
composer.makedir("bin")
composer.addfile("vi", "bin/vi")
package("neatvi")
provide("vi")
dep("semi-libc @same-arch")
on_pack(pack)
+27
View File
@@ -0,0 +1,27 @@
import os
import subprocess
from lib import cpp
from lib.make import *
version("5.3")
source_url("https://github.com/kyx0r/nextvi/archive/refs/tags/5.3.tar.gz")
def build():
os.environ["PREFIX"] = "/"
subprocess.run(["./cbuild.sh"])
on_build(build)
def pack(composer):
composer.makedir("bin")
composer.addfile("vi", "bin/vi")
package("nextvi")
on_pack(pack)
dep("semi-libc @same-arch")
provide("vi")
+2
View File
@@ -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)")
+2 -1
View File
@@ -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")
+55
View File
@@ -0,0 +1,55 @@
from lib import cpp
from lib.make import *
version("10.3.1")
source_url("https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.3p1.tar.gz")
def build():
cpp.configure(
[
"--prefix=/",
"--sysconfdir=/var/config",
"--disable-etc-default-login",
"--with-linux-memlock-onfault",
"--without-shadow",
"--with-pam",
"--with-pie",
]
)
cpp.make()
cpp.make_install()
on_build(build)
def pack_client(composer):
composer.add_dir("bin", "bin")
composer.makedir("libexec")
composer.addfile("libexec/ssh-sk-helper", "libexec/ssh-sk-helper")
composer.addfile("libexec/ssh-pkcs11-helper", "libexec/ssh-pkcs11-helper")
package("openssh-client")
dep("semi-libc @same-arch")
dep("libcrypto @same-arch")
dep("libz @same-arch")
on_pack(pack_client)
provide("ssh")
def pack_server(composer):
composer.makedir("bin")
composer.addfile("sbin/sshd", "bin/sshd")
composer.makedir("libexec")
composer.addfile("libexec/sftp-server", "libexec/sftp-server")
composer.addfile("libexec/ssh-keysign", "libexec/ssh-keysign")
composer.addfile("libexec/sshd-auth", "libexec/sshd-auth")
composer.addfile("libexec/sshd-session", "libexec/sshd-session")
package("openssh-server")
dep("openssh-client (same)")
dep("libpam @same-arch")
on_pack(pack_server)
+6
View File
@@ -10,6 +10,9 @@ def build():
cpp.configure(
[
"--prefix=/",
f"--bindir={get_prefix('pkgconf')}/bin",
f"--libdir={get_prefix('libpkgconf')}/lib",
f"--includedir={get_prefix('libpkgconf-dev')}/include",
f"--with-system-libdir=/lib:/lib/{arch.get_target()}",
f"--with-system-includedir=/lib/{arch.get_target()}/include",
f"--with-pkg-config-dir=/lib/{arch.get_target()}/pkgconfig",
@@ -23,9 +26,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)")
+97
View File
@@ -0,0 +1,97 @@
import os
import shutil
import subprocess
from lib import arch, cpp
from lib.make import *
VERSION_BASE = "3.14"
VERSION_APPEND = "6"
VERSION_FULL = f"{VERSION_BASE}.{VERSION_APPEND}"
version(VERSION_FULL)
source_url(
f"https://www.python.org/ftp/python/{VERSION_FULL}/Python-{VERSION_FULL}.tar.xz"
)
def build():
cpp.configure(
[
"--prefix=/",
f"--with-platlibdir=lib/{arch.get_target()}",
"--enable-shared",
"--enable-safety",
"--enable-optimizations",
"--enable-loadable-sqlite-extensions",
"--enable-ipv6",
"--with-lto=thin",
"--with-tzpath=/share/zoneinfo",
"--with-system-expat",
"--with-system-libmpdec",
"--with-readline=editline",
"--with-tail-call-interp",
"--without-ensurepip",
"--with-ssl-default-suites=openssl",
]
)
cpp.make()
cpp.make_install()
os.rename(
f"lib/{arch.get_target()}/python{VERSION_BASE}", f"lib/python{VERSION_BASE}"
)
os.rmdir(f"lib/{arch.get_target()}")
on_build(build)
def python_config_target():
return arch.get_target().replace("-semios-linux", "-linux-musl")
def pack_libpython(composer):
# Pack the standard library
pystdpath = f"{composer.workdir}/bundle/lib/python{VERSION_BASE}"
composer.makedir("lib")
composer.add_dir(f"lib/python{VERSION_BASE}", f"lib/python{VERSION_BASE}")
shutil.rmtree(f"{pystdpath}/test")
os.remove(
f"{pystdpath}/config-{VERSION_BASE}-{python_config_target()}/libpython{VERSION_BASE}.a"
)
os.remove(f"{pystdpath}/config-{VERSION_BASE}-{python_config_target()}/python.o")
# Pack native libraries
composer.addfile(
f"lib/libpython{VERSION_BASE}.so", f"lib/libpython{VERSION_BASE}.so"
)
composer.addfile(
f"lib/libpython{VERSION_BASE}.so.1.0", f"lib/libpython{VERSION_BASE}.so.1.0"
)
composer.addfile("lib/libpython3.so", "lib/libpython3.so")
package("libpython")
dep("semi-libc @same-arch")
on_pack(pack_libpython)
package("python")
dep("libpython (same)")
cpp.use_auto_pack(["bin"])
link(f"bin/python{VERSION_BASE}", "/bin/python3")
link(f"bin/python{VERSION_BASE}", "/bin/python")
package("libpython-dev")
dep("libpython (same)")
cpp.use_auto_pack(["dev"])
def pack_test(composer):
composer.makedirs(f"lib/python{VERSION_BASE}")
composer.add_dir(f"lib/python{VERSION_BASE}/test", f"lib/python{VERSION_BASE}/test")
package("python-test")
dep("libpython (same)")
on_pack(pack_test)
+16
View File
@@ -0,0 +1,16 @@
from lib import rust
from lib.make import *
version("15.1.0")
source_url("https://github.com/BurntSushi/ripgrep/archive/refs/tags/15.1.0.tar.gz")
def build():
rust.build()
on_build(build)
package("ripgrep")
dep("semi-libc @same-arch")
rust.use_auto_pack(["bin"])
+16
View File
@@ -0,0 +1,16 @@
from lib import rust
from lib.make import *
version("0.1.1")
source_url("https://github.com/uutils/sed/releases/download/0.1.1/source.tar.gz")
def build():
rust.build()
on_build(build)
package("sed")
dep("semi-libc @same-arch")
rust.use_auto_pack(["bin"])
+3 -2
View File
@@ -2,9 +2,9 @@ import lib.arch as arch
from lib.cpp import *
from lib.make import *
source_url("https://gitea.semilabs.org/semios/semi-libc/archive/v1.2.5.tar.gz")
version("1.2.5")
version("1.2.6")
source_url("https://gitea.semilabs.org/semios/semi-libc/archive/v1.2.6.tar.gz")
def build():
configure(["--prefix=/"])
@@ -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)")
+6
View File
@@ -9,6 +9,9 @@ def build():
cpp.configure(
[
"--prefix=/",
f"--libdir={get_prefix('libsqlite')}/lib",
f"--bindir={get_prefix('sqlite')}/bin",
f"--includedir={get_prefix('libsqlite-dev')}/include",
"--all",
"--with-linenoise=/pkg/linenoise-dev=2.0@any",
"--icu-collations",
@@ -22,9 +25,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)")
+11 -1
View File
@@ -8,7 +8,14 @@ source_url(
def build():
cpp.configure(["--prefix=/"])
cpp.configure(
[
"--prefix=/",
f"--libdir={get_prefix('liblzma')}/lib",
f"--bindir={get_prefix('xz')}/bin",
f"--includedir={get_prefix('liblzma-dev')}/include",
]
)
cpp.make()
cpp.make_install()
@@ -17,9 +24,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)")
+5 -1
View File
@@ -11,16 +11,20 @@ def build():
cpp.cmake(["-DZLIB_COMPAT=ON", "-DINSTALL_UTILS=ON"])
cpp.ninja()
cpp.ninja_install()
os.chdir("usr")
on_build(build)
package("libz-ng")
cpp.use_auto_pack(["lib"])
provide("libz@same-arch")
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@same-arch")
+4 -2
View File
@@ -10,18 +10,20 @@ source_url(
def build():
cpp.make()
cpp.make(["HAVE_ZLIB=0", "HAVE_LZMA=0", "HAVE_LZ4=0"])
cpp.make_install()
os.chdir("usr/local")
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)")
+50 -7
View File
@@ -20,8 +20,13 @@ argparser = argparse.ArgumentParser(
argparser.add_argument(
"--target", type=str, help="Target architecture to build the package for"
)
argparser.add_argument("--build", type=str, help="Package to build")
argparser.add_argument("--clean", type=str, help="Package to clean")
subparsers = argparser.add_subparsers(dest="subcommand")
parser_build = subparsers.add_parser("build")
parser_build.add_argument("BUILD_PKGNAME")
parser_clean = subparsers.add_parser("clean")
parser_clean.add_argument("CLEAN_PKGNAME")
parser_list = subparsers.add_parser("list")
parser_list.add_argument("ITEM", choices=("all", "built", "new"))
args = argparser.parse_args()
if args.target:
@@ -74,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
@@ -100,11 +107,17 @@ def run_build_package(package: str):
"name": pkgname,
"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.write_links(pkginfo[lib.make._key_links])
composer.compose()
# Build success
with open(f"{package_dir}/target/build-ok.tag", "wt+") as file:
file.write("OK")
def run_clean_package(package: str):
try:
@@ -113,7 +126,37 @@ def run_clean_package(package: str):
pass
if args.build:
run_build_package(args.build)
if args.clean:
run_clean_package(args.clean)
def run_list(item):
if item == "all":
for i in os.listdir("packages"):
if i.startswith("."):
continue
print(i)
elif item == "built":
for i in os.listdir("packages"):
if i.startswith("."):
continue
if os.path.exists(f"packages/{i}/target/build-ok.tag"):
print(i)
elif item == "new":
for i in os.listdir("packages"):
if i.startswith("."):
continue
try:
pkgbuild_mtime = os.path.getmtime(f"packages/{i}/pkgbuild.py")
target_mtime = os.path.getmtime(f"packages/{i}/target/build-ok.tag")
if target_mtime < pkgbuild_mtime:
print(i)
except Exception:
print(i)
if args.subcommand == "build":
run_build_package(args.BUILD_PKGNAME)
elif args.subcommand == "clean":
run_clean_package(args.CLEAN_PKGNAME)
elif args.subcommand == "list":
run_list(args.ITEM)
else:
print("error: no action specified", file=sys.stderr)
exit(1)