forked from semios/semios-packages
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
adea3cc896 | ||
|
|
df21a97eb1 | ||
|
|
18f624e3c9 | ||
|
|
0cc9a5c843 | ||
|
|
187e56dfef | ||
|
|
a24cf0b528 | ||
|
|
73b1fcd745 | ||
|
|
878a501804 | ||
|
|
eee111823d | ||
|
|
2dfaea6426 | ||
|
|
d61c4ab118 | ||
|
|
a3690e710c | ||
|
|
a1f00f3b4f | ||
|
|
d4a8040a9c | ||
|
|
ddd14ddfda | ||
|
|
e8234fc32a | ||
|
|
1c1b8c0a5f | ||
|
|
35d6dda90a | ||
|
|
3b4bd8274b | ||
|
|
52237e92c3 | ||
|
|
1a88d3cc3f | ||
|
|
cdfa61524c | ||
|
|
5c7754c852 | ||
|
|
d415dd8ea5 | ||
|
|
44ac99e6b9 | ||
|
|
6fba906736 | ||
|
|
1092471a91 | ||
|
|
64e961c02b | ||
|
|
675af1b352 | ||
|
|
41edafea75 | ||
|
|
909f4b009b | ||
|
|
164d9f9006 | ||
|
|
2f204dc5ff | ||
|
|
6f46eb5bc9 | ||
|
|
b084ee0c6b | ||
|
|
fc4a14281c | ||
|
|
86139f1ddc | ||
|
|
95483cedaf | ||
|
|
fb4af908ba | ||
|
|
828e4dcf6d | ||
|
|
a2fe8796d3 | ||
|
|
15b8c28c56 | ||
|
|
791a621723 | ||
|
|
7d16c90042 | ||
|
|
91226580aa | ||
|
|
e8c3ebafc7 | ||
|
|
d159cd0b5b | ||
|
|
5b4036abd2 | ||
|
|
daa4312ece | ||
|
|
aaae8fc7af | ||
|
|
ec67faee81 | ||
|
|
f9dba39603 | ||
|
|
d8007af248 | ||
|
|
ff75acbb20 | ||
|
|
bf52025629 | ||
|
|
1a2fa464c6 | ||
|
|
797459750f | ||
|
|
b94159b492 | ||
|
|
4c6c0a2ecc |
+13
-2
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
@@ -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
@@ -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))
|
||||
@@ -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)
|
||||
|
||||
@@ -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": []
|
||||
}
|
||||
@@ -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)
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
|
||||
@@ -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")
|
||||
@@ -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"])
|
||||
@@ -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);
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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"])
|
||||
@@ -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)
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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"])
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user