Compare commits

..
59 Commits
Author SHA1 Message Date
sisungo adea3cc896 feat: add package airup
Signed-off-by: sisungo <[email protected]>
2026-06-18 01:25:39 +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 18f624e3c9 feat (lib): add artifacts_dir to rust
Signed-off-by: sisungo <[email protected]>
2026-06-17 20:27:37 +08:00
sisungo 0cc9a5c843 Merge pull request 'feat: add package nghttp2' (#30) from sisungo/semios-packages:nghttp2 into master
Reviewed-on: semios/semios-packages#30
2026-06-13 22:58:44 +08:00
sisungo 187e56dfef feat: add package nghttp2
Signed-off-by: sisungo <[email protected]>
2026-06-13 18:16:40 +08:00
sisungo a24cf0b528 Merge pull request 'fix: coreutils links are invalid' (#29) from sisungo/semios-packages:coreutils-links into master
Reviewed-on: semios/semios-packages#29
2026-06-13 12:46:29 +08:00
sisungo 73b1fcd745 fix: coreutils links are invalid
Signed-off-by: sisungo <[email protected]>
2026-06-13 12:45:37 +08:00
sisungo 878a501804 Merge pull request 'feat: add links to coreutils' (#28) from sisungo/semios-packages:coreutils-links into master
Reviewed-on: semios/semios-packages#28
2026-06-13 12:22:36 +08:00
sisungo eee111823d feat: add links to coreutils
Signed-off-by: sisungo <[email protected]>
2026-06-13 12:21:58 +08:00
sisungo 2dfaea6426 Merge pull request 'fix: autostrip caught wrong binaries' (#27) from sisungo/semios-packages:master into master
Reviewed-on: semios/semios-packages#27
2026-06-13 12:14:31 +08:00
sisungo d61c4ab118 fix: autostrip caught wrong binaries
Signed-off-by: sisungo <[email protected]>
2026-06-13 12:13:59 +08:00
sisungo a3690e710c Merge pull request 'feat: add package kmod' (#24) from sisungo/semios-packages:kmod into master
Reviewed-on: semios/semios-packages#24
2026-06-13 12:03:04 +08:00
sisungo a1f00f3b4f Merge pull request 'feat (lib): add autolink and autostrip' (#26) from sisungo/semios-packages:master into master
Reviewed-on: semios/semios-packages#26
2026-06-13 12:02:48 +08:00
sisungo d4a8040a9c feat (lib): add autolink and autostrip
Signed-off-by: sisungo <[email protected]>
2026-06-13 12:01:43 +08:00
sisungo ddd14ddfda feat: add package kmod
Signed-off-by: sisungo <[email protected]>
2026-06-12 17:40:41 +08:00
sisungo e8234fc32a Merge pull request 'feat: add package bzip2' (#20) from sisungo/semios-packages:bzip2 into master
Reviewed-on: semios/semios-packages#20
2026-06-12 13:16:06 +08:00
sisungo 1c1b8c0a5f Merge pull request 'feat: add package xz' (#21) from sisungo/semios-packages:xz into master
Reviewed-on: semios/semios-packages#21
2026-06-12 13:15:54 +08:00
sisungo 35d6dda90a Merge pull request 'feat (lib): add cpp.meson build' (#22) from sisungo/semios-packages:mesonbuild into master
Reviewed-on: semios/semios-packages#22
2026-06-12 13:15:39 +08:00
sisungo 3b4bd8274b Merge pull request 'feat: add package pkgconf' (#23) from sisungo/semios-packages:pkgconf into master
Reviewed-on: semios/semios-packages#23
2026-06-12 13:15:26 +08:00
sisungo 52237e92c3 Merge pull request 'feat: add package expat' (#19) from sisungo/semios-packages:expat into master
Reviewed-on: semios/semios-packages#19
2026-06-12 13:15:15 +08:00
sisungo 1a88d3cc3f feat: add package pkgconf
Signed-off-by: sisungo <[email protected]>
2026-06-12 12:34:33 +08:00
sisungo cdfa61524c feat (lib): add cpp.meson build
Signed-off-by: sisungo <[email protected]>
2026-06-12 12:33:56 +08:00
sisungo 5c7754c852 feat: add package xz
Signed-off-by: sisungo <[email protected]>
2026-06-12 11:42:33 +08:00
sisungo d415dd8ea5 feat: add package bzip2
Signed-off-by: sisungo <[email protected]>
2026-06-12 11:32:42 +08:00
sisungo 44ac99e6b9 feat: add package expat
Signed-off-by: sisungo <[email protected]>
2026-06-12 11:20:39 +08:00
sisungo 6fba906736 Merge pull request 'feat: add package findutils' (#16) from sisungo/semios-packages:findutils into master
Reviewed-on: semios/semios-packages#16
2026-06-12 11:08:35 +08:00
sisungo 1092471a91 Merge pull request 'feat: add package diffutils' (#17) from sisungo/semios-packages:diffutils into master
Reviewed-on: semios/semios-packages#17
2026-06-12 11:07:52 +08:00
sisungo 64e961c02b Merge pull request 'feat: add package linux' (#18) from sisungo/semios-packages:linux into master
Reviewed-on: semios/semios-packages#18
2026-06-12 11:07:05 +08:00
sisungo 675af1b352 feat: add package linux
Signed-off-by: sisungo <[email protected]>
2026-06-12 11:05:29 +08:00
sisungo 41edafea75 feat: add package diffutils
Signed-off-by: sisungo <[email protected]>
2026-06-11 19:23:57 +08:00
sisungo 909f4b009b feat: add package findutils
Signed-off-by: sisungo <[email protected]>
2026-06-11 19:13:11 +08:00
sisungo 164d9f9006 Merge pull request 'feat: improve package naming' (#15) from sisungo/semios-packages:master into master
Reviewed-on: semios/semios-packages#15
2026-06-11 17:42:30 +08:00
sisungo 2f204dc5ff Merge pull request 'feat: add package sqlite' (#14) from sisungo/semios-packages:sqlite into master
Reviewed-on: semios/semios-packages#14
2026-06-11 17:05:31 +08:00
sisungo 6f46eb5bc9 Merge pull request 'feat: add package linenoise' (#13) from sisungo/semios-packages:linenoise into master
Reviewed-on: semios/semios-packages#13
2026-06-11 16:45:28 +08:00
sisungo b084ee0c6b feat: improve package naming
Signed-off-by: sisungo <[email protected]>
2026-06-11 15:23:32 +08:00
sisungo fc4a14281c feat: add package sqlite
Signed-off-by: sisungo <[email protected]>
2026-06-11 14:53:17 +08:00
sisungo 86139f1ddc feat: add package linenoise
Signed-off-by: sisungo <[email protected]>
2026-06-11 14:16:33 +08:00
sisungo 95483cedaf Merge pull request 'feat: add package libarchive' (#12) from sisungo/semios-packages:libarchive into master
Reviewed-on: semios/semios-packages#12
2026-06-11 13:47:10 +08:00
sisungo fb4af908ba feat: add package libarchive
Signed-off-by: sisungo <[email protected]>
2026-06-11 13:46:40 +08:00
sisungo 828e4dcf6d Merge pull request 'feat: add package zstd' (#11) from sisungo/semios-packages:zstd into master
Reviewed-on: semios/semios-packages#11
2026-06-11 13:34:14 +08:00
sisungo a2fe8796d3 feat: add package zstd
Signed-off-by: sisungo <[email protected]>
2026-06-11 13:33:19 +08:00
sisungo 15b8c28c56 Merge pull request 'feat: add package zlib-ng' (#10) from sisungo/semios-packages:zlib-ng into master
Reviewed-on: semios/semios-packages#10
2026-06-11 13:24:08 +08:00
sisungo 791a621723 feat: add package zlib-ng
Signed-off-by: sisungo <[email protected]>
2026-06-11 13:23:30 +08:00
sisungo 7d16c90042 Merge pull request 'feat: add package aws-lc' (#9) from sisungo/semios-packages:aws-lc into master
Reviewed-on: semios/semios-packages#9
2026-06-10 21:32:54 +08:00
sisungo 91226580aa Merge pull request 'feat: add package ninja' (#8) from sisungo/semios-packages:ninja into master
Reviewed-on: semios/semios-packages#8
2026-06-10 19:08:59 +08:00
sisungo e8c3ebafc7 Merge pull request 'feat: add package gnu-make' (#7) from sisungo/semios-packages:gnu-make into master
Reviewed-on: semios/semios-packages#7
2026-06-10 18:30:08 +08:00
sisungo d159cd0b5b Merge pull request 'feat: add hooks/autopatch' (#6) from sisungo/semios-packages:patches into master
Reviewed-on: semios/semios-packages#6
2026-06-10 18:29:41 +08:00
sisungo 5b4036abd2 Merge pull request 'feat: add package mksh' (#5) from sisungo/semios-packages:mksh into master
Reviewed-on: semios/semios-packages#5
2026-06-10 16:13:40 +08:00
sisungo daa4312ece Merge pull request 'feat (lib): add source_git' (#4) from sisungo/semios-packages:source_git into master
Reviewed-on: semios/semios-packages#4
2026-06-10 16:13:26 +08:00
sisungo aaae8fc7af Merge pull request 'feat: add package coreutils' (#3) from sisungo/semios-packages:coreutils into master
Reviewed-on: semios/semios-packages#3
2026-06-10 12:37:48 +08:00
sisungo ec67faee81 Merge pull request 'feat: add rust packing methods' (#2) from sisungo/semios-packages:rust into master
Reviewed-on: semios/semios-packages#2
2026-06-10 12:37:33 +08:00
sisungo f9dba39603 feat: add package aws-lc
Signed-off-by: sisungo <[email protected]>
2026-06-10 07:17:27 +08:00
sisungo d8007af248 feat: add package ninja
Signed-off-by: sisungo <[email protected]>
2026-06-10 05:10:54 +08:00
sisungo ff75acbb20 feat: add package gnu-make
Signed-off-by: sisungo <[email protected]>
2026-06-10 04:54:22 +08:00
sisungo bf52025629 feat: add hooks/autopatch
Signed-off-by: sisungo <[email protected]>
2026-06-10 04:53:01 +08:00
sisungo 1a2fa464c6 feat: add package mksh
Signed-off-by: sisungo <[email protected]>
2026-06-10 03:08:11 +08:00
sisungo 797459750f feat (lib): add source_git
Signed-off-by: sisungo <[email protected]>
2026-06-10 03:06:21 +08:00
sisungo b94159b492 feat: add rust packing methods
Signed-off-by: sisungo <[email protected]>
2026-06-10 00:29:19 +08:00
sisungo 4c6c0a2ecc Merge pull request 'fix (lib/cpp): auto-pack included absolute symlinks' (#1) from sisungo/semios-packages:master into master
Reviewed-on: semios/semios-packages#1
2026-06-09 21:48:59 +08:00
36 changed files with 9883 additions and 26 deletions
+13 -2
View File
@@ -1,9 +1,20 @@
from typing import Callable, TypeAlias
from . import autostrip
from lib import pkgcomposer
from . import autolink, autopatch, autostrip
PreBuild: TypeAlias = Callable[[], None]
PostBuild: TypeAlias = Callable[[], None]
PostPack: TypeAlias = Callable[[pkgcomposer.PkgComposer], None]
post_build: dict[str, PostBuild] = {
pre_build: dict[str, PreBuild] = {
"autopatch": autopatch.autopatch,
}
post_build: dict[str, PostBuild] = {}
post_pack: dict[str, PostPack] = {
"autolink": autolink.autolink,
"autostrip": autostrip.autostrip,
}
+31
View File
@@ -0,0 +1,31 @@
import os
from lib import arch, common, make, pkgcomposer
def autolink(composer: pkgcomposer.PkgComposer):
os.chdir(composer.workdir + "/bundle/")
try:
for i in common.treedir("bin"):
if i.is_file():
make.link(f"bin/{i.name}", "/bin/" + i.name)
except Exception:
pass
try:
for i in common.treedir("lib"):
if i.is_file():
make.link(f"lib/{i.name}", "/lib/" + arch.get_target() + "/" + i.name)
except Exception:
pass
try:
for i in common.treedir("include"):
if i.is_file():
make.link(
f"include/{i.name}",
"/lib/" + arch.get_target() + "/include/" + i.name,
)
except Exception:
pass
+29
View File
@@ -0,0 +1,29 @@
import os
import subprocess
import lib.sources as sources
def autopatch():
if not os.path.exists("patches"):
return
target_dir = os.getcwd() + "/target"
source_dir = sources.sources_dir_name()
patches_tag_file = f"{target_dir}/patches.tag"
patches_dir = os.getcwd() + "/patches"
patches = os.listdir(patches_dir)
patches.sort()
os.chdir(source_dir)
if not os.path.exists(patches_tag_file):
open(patches_tag_file, "+w").close()
for i in patches:
with open(patches_tag_file, "r") as file:
if i + "\n" in file.readlines():
continue
with open(f"{patches_dir}/{i}", "r") as file:
subprocess.run(["patch", "-p1"], stdin=file)
with open(patches_tag_file, "+a") as file:
file.write(i + "\n")
+22 -2
View File
@@ -1,2 +1,22 @@
def autostrip():
pass
import os
import subprocess
from lib import common
strip = os.environ.get("STRIP", "strip")
def _is_elf(filepath):
with open(filepath, "rb") as f:
return f.read(4) == b"\x7fELF"
def autostrip(composer):
for ent in common.treedir(composer.workdir):
if not ent.is_file(follow_symlinks=False):
continue
if not (os.access(ent.path, os.X_OK) or ".so" in ent.name):
continue
if not _is_elf(ent.path):
continue
subprocess.run([strip, ent.path], check=True)
+21
View File
@@ -0,0 +1,21 @@
import os
import types
def _wrap_treedir_entry(ent, prefix=""):
wrapped = types.SimpleNamespace()
wrapped.name = f"{prefix}/{ent.name}" if prefix else ent.name
wrapped.path = ent.path
wrapped.is_dir = ent.is_dir
wrapped.is_file = ent.is_file
wrapped.is_symlink = ent.is_symlink
return wrapped
def treedir(root: str, prefix: str = ""):
with os.scandir(root) as entries:
for ent in entries:
wrapped = _wrap_treedir_entry(ent, prefix)
yield wrapped
if wrapped.is_dir(follow_symlinks=False):
yield from treedir(ent.path, wrapped.name)
+77 -17
View File
@@ -1,6 +1,8 @@
import os
import subprocess
from lib.common import treedir
from . import make as libmake
from . import pkgcomposer
@@ -9,6 +11,23 @@ def configure(rem: list[str] = []):
subprocess.run(["./configure"] + rem, check=True)
def cmake(rem: list[str] = []):
source_dir = os.getcwd()
os.makedirs("../cmake_build", exist_ok=True)
os.chdir("../cmake_build")
subprocess.run(
[
"cmake",
"-GNinja",
"-DCMAKE_BUILD_TYPE=Release",
"-DCMAKE_INSTALL_PREFIX=/",
source_dir,
]
+ rem,
check=True,
)
def make(rem: list[str] = []):
subprocess.run(["make", f"-j{os.cpu_count()}"] + rem, check=True)
@@ -20,33 +39,74 @@ def make_install(rem: list[str] | None = None, chdir: bool = True):
os.chdir("../cpp_install")
def ninja(rem: list[str] = []):
subprocess.run(["ninja"] + rem, check=True)
def ninja_install(rem: list[str] = [], chdir: bool = True):
if chdir:
os.environ["DESTDIR"] = os.getcwd() + "/../cpp_install"
subprocess.run(["ninja", "install"] + rem, check=True)
if chdir:
os.chdir(os.environ["DESTDIR"])
def meson_setup(rem: list[str] = []):
subprocess.run(["meson", "setup", "_meson_build"] + rem, check=True)
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):
default_rem = ["--destdir", f"{os.getcwd()}/../cpp_install"]
if not rem:
os.makedirs("../cpp_install", exist_ok=True)
subprocess.run(
["meson", "install", "-C", "_meson_build"] + (rem or default_rem), check=True
)
if chdir:
os.chdir("../cpp_install")
def _do_auto_pack(pc: pkgcomposer.PkgComposer, srcdir: str, dstdir: str, filter):
pc.makedir(srcdir)
with os.scandir(srcdir) as entries:
for ent in entries:
if filter(ent):
if ent.is_dir(follow_symlinks=False):
pc.makedir(f"{dstdir}/{ent.name}")
elif ent.is_file(follow_symlinks=False):
pc.addfile(ent.path, f"{dstdir}/{ent.name}")
elif ent.is_symlink() and not os.path.isabs(os.readlink(ent.path)):
pc.addfile(ent.path, f"{dstdir}/{ent.name}")
if not os.path.exists(srcdir):
return
try:
pc.makedir(dstdir)
except Exception:
pass
for ent in treedir(srcdir):
if filter(ent):
if ent.is_file(follow_symlinks=False):
pc.makedirs(os.path.dirname(f"{dstdir}/{ent.name}"))
pc.addfile(ent.path, f"{dstdir}/{ent.name}")
elif ent.is_symlink() and not os.path.isabs(os.readlink(ent.path)):
pc.addfile(ent.path, f"{dstdir}/{ent.name}")
def _is_dev_file(ent) -> bool:
return (
ent.name.endswith(".o")
or ent.name.endswith(".a")
or ent.name.endswith(".la")
or ent.name.endswith(".pc")
or ent.name.endswith(".h")
or ent.name.endswith(".cmake")
)
def _autopack_filter_lib(ent) -> bool:
if ent.name.endswith(".o") or ent.name.endswith(".a"):
return False
return True
return not _is_dev_file(ent)
def _autopack_filter_bin(ent) -> bool:
return True
return os.access(ent.path, os.X_OK) and ent.is_file(follow_symlinks=False)
def _autopack_filter_dev(ent):
if ".so" in ent.name:
return False
return True
return _is_dev_file(ent)
def _auto_pack(profiles: list[str], pc: pkgcomposer.PkgComposer):
+18 -1
View File
@@ -7,10 +7,13 @@ _key_version = "version"
_key_description = "description"
_key_on_pack = "on_pack"
_key_arch_any = "arch_any"
_key_links = "links"
_current_pkgname: str = _key_global
_pkginfo: dict[str, dict[str, typing.Any]] = {
_key_global: {},
_key_global: {
_key_links: [],
},
}
_supported_arch: typing.Callable[[str], bool] = lambda x: True
_on_build: typing.Callable[[], None] | None = None
@@ -36,6 +39,16 @@ def arch_any():
_pkginfo[_current_pkgname][_key_arch_any] = True
def link(src: str, dst: str, default: bool = True):
_pkginfo[_current_pkgname][_key_links] += [
{
"from": src,
"to": dst,
"default": default,
}
]
def supported_arch(s: list[str] | typing.Callable[[str], bool]):
global _supported_arch
if isinstance(s, list):
@@ -59,3 +72,7 @@ def block_hook(hook: str):
def source_url(url: str):
sources.source_url(url)
def source_git(url: str, branch: str | None = None):
sources.source_git(url, branch)
+3
View File
@@ -32,6 +32,9 @@ class PkgComposer:
def makedir(self, name: str):
os.mkdir(f"{self.workdir}/bundle/{name}")
def makedirs(self, name: str):
os.makedirs(f"{self.workdir}/bundle/{name}", exist_ok=True)
def addfile(self, src: str, dst: str):
shutil.copy2(src, f"{self.workdir}/bundle/{dst}", follow_symlinks=False)
+63
View File
@@ -0,0 +1,63 @@
import os
import subprocess
from . import arch, make, pkgcomposer
def _rust_triple(semios: str) -> str:
return semios.replace("-semios-linux", "-unknown-linux-musl")
def build(rem: list[str] = []):
cmdline = [
"cargo",
"build",
"--release",
"--target",
_rust_triple(arch.get_target()),
] + rem
os.environ["RUSTFLAGS"] = (
os.environ.get("RUSTFLAGS", "") + " -C target-feature=-crt-static"
)
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:
for ent in entries:
if filter(ent):
if ent.is_dir(follow_symlinks=False):
pc.makedir(f"{dstdir}/{ent.name}")
elif ent.is_file(follow_symlinks=False):
pc.addfile(ent.path, f"{dstdir}/{ent.name}")
elif ent.is_symlink() and not os.path.isabs(os.readlink(ent.path)):
pc.addfile(ent.path, f"{dstdir}/{ent.name}")
def _autopack_filter_lib(ent) -> bool:
if ent.is_dir(follow_symlinks=False):
return False
if ent.name.endswith(".so"):
return True
else:
return False
def _autopack_filter_bin(ent) -> bool:
return os.access(ent.path, os.X_OK) and ent.is_file(follow_symlinks=False)
def _auto_pack(profiles: list[str], pc: pkgcomposer.PkgComposer):
if "lib" in profiles:
_do_auto_pack(pc, artifacts_dir(), "lib", _autopack_filter_lib)
if "bin" in profiles:
_do_auto_pack(pc, artifacts_dir(), "bin", _autopack_filter_bin)
def use_auto_pack(profiles: list[str]):
make.on_pack(lambda pc: _auto_pack(profiles, pc))
+18
View File
@@ -1,4 +1,5 @@
import os
import subprocess
import sys
import tarfile
import urllib.parse
@@ -109,3 +110,20 @@ def source_url(url: str):
tar.extractall(extract_dir)
with open("./target/sources.tag", "wt+") as file:
file.write(sources_dir)
def _git_repo_name(url: str) -> str:
return url.split("/")[-1].replace(".git", "")
def source_git(url: str, branch: str | None = None):
source_path = os.getcwd() + "/target/" + _git_repo_name(url)
if os.path.exists("./target/sources.tag"):
return
cmdline = ["git", "clone", "--depth=1"]
if branch:
cmdline += ["-b", branch]
cmdline += [url, source_path]
subprocess.run(cmdline, check=True)
with open("./target/sources.tag", "wt+") as file:
file.write(source_path)
+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": []
}
+29
View File
@@ -0,0 +1,29 @@
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)
+40
View File
@@ -0,0 +1,40 @@
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")
def build():
cpp.cmake(["-DBUILD_SHARED_LIBS=1"])
cpp.ninja()
cpp.ninja_install()
os.chdir("usr")
on_build(build)
def pack_libcrypto(composer):
composer.makedir("lib")
composer.addfile("lib/libcrypto.so", "lib/libcrypto.so")
def pack_libssl(composer):
composer.makedir("lib")
composer.addfile("lib/libssl.so", "lib/libssl.so")
package("aws-lc-libcrypto")
on_pack(pack_libcrypto)
package("aws-lc-libssl")
on_pack(pack_libssl)
package("aws-lc-tools")
cpp.use_auto_pack(["bin"])
package("aws-lc-dev")
cpp.use_auto_pack(["dev"])
+29
View File
@@ -0,0 +1,29 @@
import os
import shutil
import lib.cpp as cpp
from lib.make import *
upstream_version = "1.0.8"
version(f"{upstream_version}")
source_url(f"https://sourceware.org/pub/bzip2/bzip2-{upstream_version}.tar.gz")
def build():
cpp.make(["-f", "Makefile-libbz2_so"])
cpp.make_install(["PREFIX=../cpp_install"], chdir=False)
shutil.copy2(f"libbz2.so.{upstream_version}", "../cpp_install/lib/libbz2.so")
os.chdir("../cpp_install")
on_build(build)
package("libbzip2")
cpp.use_auto_pack(["lib"])
package("bzip2")
cpp.use_auto_pack(["bin"])
package("libbzip2-dev")
cpp.use_auto_pack(["dev"])
+84
View File
@@ -3,6 +3,7 @@ from lib.make import *
version("0.9.0")
source_url("https://github.com/uutils/coreutils/archive/refs/tags/0.9.0.tar.gz")
block_hook("autolink")
def build():
@@ -11,6 +12,89 @@ def build():
on_build(build)
functions = [
"[",
"b2sum",
"base32",
"base64",
"basename",
"basenc",
"cat",
"cksum",
"comm",
"cp",
"csplit",
"cut",
"date",
"dd",
"df",
"dir",
"dircolors",
"dirname",
"du",
"echo",
"env",
"expand",
"expr",
"factor",
"false",
"fmt",
"fold",
"head",
"join",
"link",
"ln",
"ls",
"md5sum",
"mkdir",
"mktemp",
"more",
"mv",
"nl",
"numfmt",
"od",
"paste",
"pathchk",
"pr",
"printenv",
"printf",
"ptx",
"pwd",
"readlink",
"realpath",
"rm",
"rmdir",
"seq",
"sha1sum",
"sha224sum",
"sha256sum",
"sha384sum",
"sha512sum",
"shred",
"shuf",
"sleep",
"sort",
"split",
"sum",
"tac",
"tail",
"tee",
"test",
"touch",
"tr",
"true",
"truncate",
"tsort",
"tty",
"unexpand",
"uniq",
"unlink",
"vdir",
"wc",
"yes",
]
package("coreutils")
for func in functions:
link(f"bin/coreutils", f"/bin/{func}")
rust.use_auto_pack(["bin"])
+19
View File
@@ -0,0 +1,19 @@
import lib.rust as rust
from lib.make import *
version("0.5.0")
source_url("https://github.com/uutils/diffutils/archive/refs/tags/v0.5.0.tar.gz")
block_hook("autolink")
def build():
rust.build()
on_build(build)
package("diffutils")
rust.use_auto_pack(["bin"])
link("bin/diffutils", "/bin/cmp")
link("bin/diffutils", "/bin/diff")
+28
View File
@@ -0,0 +1,28 @@
import os
import lib.cpp as cpp
from lib.make import *
version("2.8.1")
source_url(
"https://github.com/libexpat/libexpat/releases/download/R_2_8_1/expat-2.8.1.tar.gz"
)
def build():
cpp.cmake()
cpp.ninja()
cpp.ninja_install()
os.chdir("usr")
on_build(build)
package("libexpat")
cpp.use_auto_pack(["lib"])
package("libexpat-tools")
cpp.use_auto_pack(["bin"])
package("libexpat-dev")
cpp.use_auto_pack(["dev"])
+16
View File
@@ -0,0 +1,16 @@
import lib.rust as rust
from lib.make import *
version("0.9.0")
source_url("https://github.com/uutils/findutils/archive/refs/tags/0.9.0.tar.gz")
def build():
rust.build()
on_build(build)
package("findutils")
rust.use_auto_pack(["bin"])
@@ -0,0 +1,36 @@
--- a/lib/fnmatch.c
+++ b/lib/fnmatch.c
@@ -120,9 +120,6 @@
/* Avoid depending on library functions or files
whose names are inconsistent. */
-# if !defined _LIBC && !defined getenv
-extern char *getenv ();
-# endif
# ifndef errno
extern int errno;
--- a/src/getopt.c
+++ b/src/getopt.c
@@ -202,7 +202,7 @@ static char *posixly_correct;
whose names are inconsistent. */
#ifndef getenv
-extern char *getenv ();
+extern char *getenv (const char *);
#endif
static char *
--- a/src/getopt.h
+++ b/src/getopt.h
@@ -102,7 +102,7 @@ struct option
errors, only prototype getopt for the GNU C library. */
extern int getopt (int argc, char *const *argv, const char *shortopts);
#else /* not __GNU_LIBRARY__ */
-extern int getopt ();
+extern int getopt (int, char * const*, const char *);
#endif /* __GNU_LIBRARY__ */
extern int getopt_long (int argc, char *const *argv, const char *shortopts,
const struct option *longopts, int *longind);
+17
View File
@@ -0,0 +1,17 @@
import lib.cpp as cpp
from lib.make import *
version("4.4.1")
source_url("https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz")
def build():
cpp.configure(["--prefix=/"])
cpp.make()
cpp.make_install()
on_build(build)
package("gnu-make")
cpp.use_auto_pack(["bin"])
+26
View File
@@ -0,0 +1,26 @@
import os
import lib.cpp as cpp
from lib.make import *
version("1.34")
source_url("https://github.com/kmod-project/kmod/archive/refs/tags/v34.tar.gz")
def build():
cpp.meson_setup()
cpp.meson_compile()
cpp.meson_install()
os.chdir("usr")
on_build(build)
package("libkmod")
cpp.use_auto_pack(["lib"])
package("kmod")
cpp.use_auto_pack(["bin"])
package("libkmod-dev")
cpp.use_auto_pack(["dev"])
+25
View File
@@ -0,0 +1,25 @@
import lib.cpp as cpp
from lib.make import *
version("3.8.7")
source_url(
"https://github.com/libarchive/libarchive/releases/download/v3.8.7/libarchive-3.8.7.tar.gz"
)
def build():
cpp.configure(["--prefix=/"])
cpp.make()
cpp.make_install()
on_build(build)
package("libarchive")
cpp.use_auto_pack(["lib"])
package("libarchive-tools")
cpp.use_auto_pack(["bin"])
package("libarchive-dev")
cpp.use_auto_pack(["dev"])
+17
View File
@@ -0,0 +1,17 @@
from lib.make import *
version("2.0")
source_url("https://github.com/antirez/linenoise/archive/refs/tags/2.0.tar.gz")
on_build(lambda: None)
def pack_dev(composer):
composer.addfile("linenoise.c", "linenoise.c")
composer.addfile("linenoise.h", "linenoise.h")
composer.addfile("Makefile", "Makefile")
package("linenoise-dev")
arch_any()
on_pack(pack_dev)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+76
View File
@@ -0,0 +1,76 @@
import os
import shutil
import lib.arch as arch
import lib.cpp as cpp
from lib.make import *
upstream_version = "6.18.35"
version(f"{upstream_version}")
source_url(
f"https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-{upstream_version}.tar.xz"
)
def get_arch():
return arch.get_target().split("-")[0].replace("aarch64", "arm64")
def build():
makeopts = [f"ARCH={get_arch()}", "LLVM=1"]
config_name = get_arch()
if os.environ.get("LINUX_VARIANT"):
config_name += "-" + os.environ["LINUX_VARIANT"]
config_file = "../../configs/config." + config_name
shutil.copy2(config_file, ".config")
cpp.make(makeopts + ["olddefconfig"])
cpp.make(makeopts)
cpp.make(["headers_install", "INSTALL_HDR_PATH=../kheaders_install"])
cpp.make(["install", "INSTALL_PATH=../kimage_install"])
cpp.make(
["modules_install", "INSTALL_MOD_STRIP=1", "INSTALL_MOD_PATH=../kmod_install"]
)
os.remove(f"../kmod_install/lib/modules/{upstream_version}/build")
on_build(build)
base_name = "linux"
if os.environ.get("LINUX_VARIANT"):
base_name += "-" + os.environ["LINUX_VARIANT"]
def pack_linux_dev(composer):
composer.add_dir(
"../kheaders_install/include",
"include",
)
package(f"{base_name}-dev")
on_pack(pack_linux_dev)
def pack_linux(composer):
try:
composer.addfile(f"../kimage_install/vmlinux-{upstream_version}", "vmlinux")
except Exception:
pass
try:
composer.addfile(f"../kimage_install/vmlinuz-{upstream_version}", "vmlinuz")
except Exception:
pass
try:
composer.addfile(
f"../kimage_install/System.map-{upstream_version}", "System.map"
)
except Exception:
pass
composer.add_dir(f"../kmod_install/lib/modules/{upstream_version}", "modules")
package(f"{base_name}")
on_pack(pack_linux)
+22
View File
@@ -0,0 +1,22 @@
import os
from lib.make import *
version("1.59.2")
source_git("https://github.com/mirabilos/mksh-cvs2git.git", "mksh-R59c")
def build():
os.system("sh ./Build.sh")
on_build(build)
def pack_mksh(composer):
composer.makedir("bin")
composer.addfile("mksh", "bin/mksh")
package("mksh")
on_pack(pack_mksh)
+25
View File
@@ -0,0 +1,25 @@
import os
from lib import cpp
from lib.make import *
version("1.69.0")
source_url(
"https://github.com/nghttp2/nghttp2/releases/download/v1.69.0/nghttp2-1.69.0.tar.gz"
)
def build():
cpp.cmake()
cpp.ninja()
cpp.ninja_install()
os.chdir("usr")
on_build(build)
package("libnghttp2")
cpp.use_auto_pack(["lib"])
package("libnghttp2-dev")
cpp.use_auto_pack(["dev"])
+23
View File
@@ -0,0 +1,23 @@
import os
import lib.cpp as cpp
from lib.make import *
version("1.13.2")
source_url("https://github.com/ninja-build/ninja/archive/refs/tags/v1.13.2.tar.gz")
def build():
os.system("./configure.py --bootstrap")
on_build(build)
def pack_ninja(composer):
composer.makedir("bin")
composer.addfile("ninja", "bin/ninja")
package("ninja")
on_pack(pack_ninja)
+31
View File
@@ -0,0 +1,31 @@
import lib.cpp as cpp
from lib import arch
from lib.make import *
version("2.5.1")
source_url("https://distfiles.ariadne.space/pkgconf/pkgconf-2.5.1.tar.gz")
def build():
cpp.configure(
[
"--prefix=/",
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",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("libpkgconf")
cpp.use_auto_pack(["lib"])
package("pkgconf")
cpp.use_auto_pack(["bin"])
package("libpkgconf-dev")
cpp.use_auto_pack(["dev"])
+6
View File
@@ -1,3 +1,4 @@
import lib.arch as arch
from lib.cpp import *
from lib.make import *
@@ -14,8 +15,13 @@ def build():
on_build(build)
def musl_target():
return arch.get_target().split("-")[0]
package("semi-libc")
use_auto_pack(["lib"])
link("lib/libc.so", f"/lib/ld-musl-{musl_target()}.so.1")
package("semi-libc-dev")
use_auto_pack(["dev"])
+30
View File
@@ -0,0 +1,30 @@
import lib.cpp as cpp
from lib.make import *
version("3.53.2")
source_url("https://sqlite.org/2026/sqlite-autoconf-3530200.tar.gz")
def build():
cpp.configure(
[
"--prefix=/",
"--all",
"--with-linenoise=/pkg/linenoise-dev=2.0@any",
"--icu-collations",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("libsqlite")
cpp.use_auto_pack(["lib"])
package("sqlite")
cpp.use_auto_pack(["bin"])
package("libsqlite-dev")
cpp.use_auto_pack(["dev"])
+25
View File
@@ -0,0 +1,25 @@
from lib import cpp
from lib.make import *
version("5.8.3")
source_url(
"https://github.com/tukaani-project/xz/releases/download/v5.8.3/xz-5.8.3.tar.gz"
)
def build():
cpp.configure(["--prefix=/"])
cpp.make()
cpp.make_install()
on_build(build)
package("liblzma")
cpp.use_auto_pack(["lib"])
package("xz")
cpp.use_auto_pack(["bin"])
package("liblzma-dev")
cpp.use_auto_pack(["dev"])
+26
View File
@@ -0,0 +1,26 @@
import os
import lib.cpp as cpp
from lib.make import *
version("2.3.3")
source_url("https://github.com/zlib-ng/zlib-ng/archive/refs/tags/2.3.3.tar.gz")
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"])
package("zlib-ng-tools")
cpp.use_auto_pack(["bin"])
package("libz-ng-dev")
cpp.use_auto_pack(["dev"])
+27
View File
@@ -0,0 +1,27 @@
import os
import lib.cpp as cpp
from lib.make import *
version("1.5.7")
source_url(
"https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz"
)
def build():
cpp.make()
cpp.make_install()
os.chdir("usr/local")
on_build(build)
package("libzstd")
cpp.use_auto_pack(["lib"])
package("zstd")
cpp.use_auto_pack(["bin"])
package("libzstd-dev")
cpp.use_auto_pack(["dev"])
+21 -4
View File
@@ -3,6 +3,7 @@ import importlib
import os
import shutil
import sys
import typing
import hooks
import lib.arch
@@ -29,6 +30,18 @@ else:
lib.arch.set_target(lib.arch.get_target())
def run_hooks(map, arg: typing.Any = None):
current_dir = os.getcwd()
for n in map.keys():
if n in lib.make._blocked_hooks:
continue
if arg:
map[n](arg)
else:
map[n]()
os.chdir(current_dir)
def run_build_package(package: str):
try:
os.chdir(f"packages/{package}")
@@ -46,6 +59,9 @@ def run_build_package(package: str):
print(f"Architecture {lib.arch.get_target()} is not supported for this package")
exit(1)
# Run `pre_build` hooks
run_hooks(hooks.pre_build)
# Build the package
if lib.make._on_build:
os.chdir(lib.sources.sources_dir_name())
@@ -54,10 +70,7 @@ def run_build_package(package: str):
print("on_build(): Not defined")
# Run `post_build` hooks
for n in hooks.post_build.keys():
if n in lib.make._blocked_hooks:
continue
hooks.post_build[n]()
run_hooks(hooks.post_build)
# Pack packages
for pkgname in lib.make._pkginfo.keys():
@@ -80,10 +93,14 @@ def run_build_package(package: str):
pkginfo[lib.make._key_on_pack](composer)
# Run post_pack hooks
run_hooks(hooks.post_pack, composer)
manifest = {
"name": pkgname,
"version": pkgver,
"arch": pkgarch,
"links": pkginfo[lib.make._key_links],
}
composer.write_manifest(manifest)
composer.compose()