Compare commits

..
15 Commits
Author SHA1 Message Date
sisungo e7d77b63b3 fix: llvm build configuration has invalid fields
Signed-off-by: sisungo <[email protected]>
2026-08-09 13:01:40 +08:00
sisungo 0238507da1 Merge pull request 'feat: add package semios-assembly' (#138) from sisungo/semios-packages:semios-assembly into master
Reviewed-on: semios/semios-packages#138
2026-08-04 10:09:57 +08:00
sisungo 21bb0c0416 feat: add package semios-assembly
Signed-off-by: sisungo <[email protected]>
2026-08-04 08:36:25 +08:00
sisungo 614aae909b Merge pull request 'feat: add package alsa-utils' (#125) from sisungo/semios-packages:alsa-utils into master
Reviewed-on: semios/semios-packages#125
2026-08-03 19:45:16 +08:00
sisungo 71ae4dd1cb Merge pull request 'feat: add package util-linux' (#134) from sisungo/semios-packages:util-linux into master
Reviewed-on: semios/semios-packages#134
2026-08-03 19:44:53 +08:00
sisungo 19d58033f0 Merge pull request 'fix: kmod is missing links' (#136) from sisungo/semios-packages:kmodfix into master
Reviewed-on: semios/semios-packages#136
2026-08-03 19:44:35 +08:00
sisungo 7c61d7ca8b Merge pull request 'fix: llvm is not well packaged' (#137) from sisungo/semios-packages:llvm-split into master
Reviewed-on: semios/semios-packages#137
2026-08-03 19:42:42 +08:00
sisungo 3b613fc446 fix: llvm is not well packaged
Signed-off-by: sisungo <[email protected]>
2026-08-03 18:52:58 +08:00
sisungo cfb2a07fa4 fix: kmod is missing links
Signed-off-by: sisungo <[email protected]>
2026-07-24 16:26:27 +08:00
sisungo a7afab336b feat: add package util-linux
Signed-off-by: sisungo <[email protected]>
2026-07-24 15:49:11 +08:00
sisungo e0af0577bf Merge pull request 'feat: add package dbus' (#127) from sisungo/semios-packages:dbus into master
Reviewed-on: semios/semios-packages#127
2026-07-17 14:54:06 +08:00
sisungo da5c4329bf Merge pull request 'feat: add package glib' (#128) from sisungo/semios-packages:glib into master
Reviewed-on: semios/semios-packages#128
2026-07-17 14:52:12 +08:00
sisungo aa19be566b feat: add package dbus
Signed-off-by: sisungo <[email protected]>
2026-07-17 13:54:24 +08:00
sisungo 05cb5c94c5 feat: add package glib
Signed-off-by: sisungo <[email protected]>
2026-07-17 13:01:21 +08:00
sisungo 2b3204cb9a feat: add package alsa-utils
Signed-off-by: sisungo <[email protected]>
2026-07-12 15:05:03 +08:00
17 changed files with 931 additions and 461 deletions
+38 -15
View File
@@ -3,29 +3,52 @@ import os
from lib import arch, common, make, pkgcomposer
def is_abslink(path):
try:
return os.readlink(path).startswith("/")
except:
return False
def autolink_bin(composer: pkgcomposer.PkgComposer):
if is_abslink("bin"):
return
for i in common.treedir("bin"):
if i.is_file() and os.access(i.path, os.X_OK):
make.link(f"bin/{i.name}", "/bin/" + i.name)
def autolink_lib(composer: pkgcomposer.PkgComposer):
if is_abslink("lib"):
return
for i in common.treedir("lib"):
if i.is_file():
make.link(f"lib/{i.name}", "/lib/" + arch.get_target() + "/" + i.name)
def autolink_include(composer: pkgcomposer.PkgComposer):
if is_abslink("include"):
return
for i in common.treedir("include"):
if i.is_file():
make.link(
f"include/{i.name}",
"/lib/" + arch.get_target() + "/include/" + i.name,
)
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:
autolink_bin(composer)
except:
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:
autolink_lib(composer)
except:
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:
autolink_include(composer)
except:
pass
+3 -1
View File
@@ -78,7 +78,7 @@ 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):
def meson_install(rem: list[str] | None = None, chdir: bool = True, move: bool = True):
default_rem = ["--destdir", f"{os.getcwd()}/../cpp_install"]
if not rem:
os.makedirs("../cpp_install", exist_ok=True)
@@ -87,6 +87,8 @@ def meson_install(rem: list[str] | None = None, chdir: bool = True):
)
if chdir:
os.chdir("../cpp_install")
if chdir and move:
_move_install()
def _do_auto_pack(pc: pkgcomposer.PkgComposer, srcdir: str, dstdir: str, filter):
+1
View File
@@ -8,6 +8,7 @@ source_url("https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.16.1.tar.bz2
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"linux-dev @{arch.get_target()}")
def build():
+35
View File
@@ -0,0 +1,35 @@
from lib.make import *
from lib import cpp
version("1.2.16")
source_url("https://www.alsa-project.org/files/pub/utils/alsa-utils-1.2.16.tar.bz2")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep("pkgconf")
builddep(f"libncurses-dev @{arch.get_target()}")
builddep(f"alsa-lib-dev @{arch.get_target()}")
builddep(f"libintl-dev @{arch.get_target()}")
builddep("gettext")
def build():
cpp.configure([f"--prefix={get_prefix('alsa-utils')}", "--disable-nls"])
cpp.make()
cpp.make_install()
on_build(build)
def pack_alsa_utils(composer):
composer.add_dir("bin", "bin")
composer.add_dir("sbin", "bin", merge=True)
composer.add_dir("lib", "lib")
composer.makedir("share")
composer.add_dir("share/alsa", "share/alsa")
composer.add_dir("share/sounds", "share/sounds")
package("alsa-utils")
dep("semi-libc @same-arch")
dep("alsa-lib @same-arch")
dep("libncurses @same-arch")
on_pack(pack_alsa_utils)
+1
View File
@@ -56,6 +56,7 @@ package("aws-lc-tools")
cpp.use_auto_pack(["bin"])
dep("aws-lc-libcrypto (same)")
dep("aws-lc-libssl (same)")
dep("libcxx @same-arch")
package("aws-lc-dev")
cpp.use_auto_pack(["dev"])
+53
View File
@@ -0,0 +1,53 @@
import os
from lib.make import *
from lib import cpp
version("1.16.2")
source_url("https://dbus.freedesktop.org/releases/dbus/dbus-1.16.2.tar.xz")
builddep("shortcut/c")
builddep("shortcut/meson")
builddep("gettext")
builddep(f"libintl-dev @{arch.get_target()}")
builddep(f"glib-dev @{arch.get_target()}")
builddep("pkgconf")
def build():
cpp.meson_setup([
"-Dapparmor=disabled",
"-Dmessage_bus=false",
"-Druntime_dir=/run",
"-Dsystemd=disabled",
"--prefix=/",
f"--libdir={get_prefix('libdbus')}/lib",
f"--bindir={get_prefix('dbus-tools')}/bin",
f"--includedir={get_prefix('libdbus-dev')}/include",
"--sysconfdir=/var/config",
"--localstatedir=/var/db/dbus",
])
cpp.meson_compile()
cpp.meson_install()
on_build(build)
def pack_libdbus(composer):
composer.makedir("lib")
for i in os.listdir("lib"):
if not ".so" in i:
continue
composer.addfile(f"lib/{i}", f"lib/{i}")
os.symlink(f"{get_prefix('libdbus-dev')}/lib/dbus-1.0", f"{composer.workdir}/bundle/lib/dbus-1.0")
package("libdbus")
dep("semi-libc @same-arch")
on_pack(pack_libdbus)
package("dbus-tools")
dep("libdbus (same)")
cpp.use_auto_pack(["bin"])
package("libdbus-dev")
dep("libdbus (same)")
cpp.use_auto_pack(["dev"])
-44
View File
@@ -1,44 +0,0 @@
import os
from lib import cpp, arch
from lib.make import *
version("0.195")
source_url("https://sourceware.org/elfutils/ftp/0.195/elfutils-0.195.tar.bz2")
builddep("shortcut/c++")
builddep("shortcut/autotools")
builddep(f"libargp-dev @{arch.get_target()}")
builddep("gettext")
builddep(f"libintl-dev @{arch.get_target()}")
builddep("pkgconf")
builddep(f"libz-ng-dev @{arch.get_target()}")
builddep(f"libbzip2-dev @{arch.get_target()}")
builddep(f"liblzma-dev @{arch.get_target()}")
builddep(f"libzstd-dev @{arch.get_target()}")
builddep(f"libfts-dev @{arch.get_target()}")
builddep(f"libiberty-obstack-dev @{arch.get_target()}")
builddep(f"libcurl-dev @{arch.get_target()}")
builddep("bzip2")
builddep("gnu-m4")
builddep(f"linux-dev @{arch.get_target()}")
def build():
os.environ["LIBS"] = "-liberty_obstack -largp -lfts"
os.environ["ac_cv_search__obstack_free"] = "yes"
cpp.configure(
[
"--prefix=/",
"--disable-stacktrace",
"--disable-demangler",
#"--enable-libdebuginfod",
#"--enable-debuginfod",
#"--enable-debuginfod-ima-verification",
]
)
cpp.make()
cpp.make_install()
on_build(build)
+122
View File
@@ -0,0 +1,122 @@
import shutil
import os
from lib.make import *
from lib import cpp
upstream_version = "2.89.2"
version(upstream_version)
source_url("https://download.gnome.org/sources/glib/2.89/glib-2.89.2.tar.xz")
builddep("shortcut/c++")
builddep("shortcut/meson")
builddep("gettext")
builddep(f"libintl-dev @{arch.get_target()}")
builddep("pcre2-tools")
builddep(f"libpcre2-dev @{arch.get_target()}")
builddep(f"libffi-dev @{arch.get_target()}")
builddep("pkgconf")
builddep(f"libz-ng-dev @{arch.get_target()}")
builddep("libexpat")
def build():
os.environ["CFLAGS"] = os.environ.get("CFLAGS", "") + " -Wno-missing-include-dirs"
os.environ["CXXFLAGS"] = os.environ.get("CXXLAGS", "") + os.environ["CFLAGS"]
cpp.meson_setup([
"-Druntime_dir=/run",
f"-Dgio_module_dir=/lib/{arch.get_target()}/gio/modules",
"--prefix=/",
f"--bindir={get_prefix('glib-tools')}/bin",
f"--libdir={get_prefix('glib')}/lib",
f"--includedir={get_prefix('glib-dev')}/include",
f"--libexecdir={get_prefix('libglib')}/libexec",
f"--datadir={get_prefix('glib')}/share",
])
cpp.meson_compile()
cpp.meson_install()
on_build(build)
def pack_libxxx(composer, prefix):
composer.makedirs("lib")
for i in os.listdir("lib"):
if not i.startswith(prefix):
continue
composer.addfile(f"lib/{i}", f"lib/{i}")
def pack_libglib(composer):
composer.add_dir("libexec", "libexec")
pack_libxxx(composer, "libglib")
package("libglib")
dep("semi-libc @same-arch")
dep("libpcre2 @same-arch")
on_pack(pack_libglib)
package("libgobject")
dep("libglib (same)")
dep("libffi @same-arch")
on_pack(lambda composer: pack_libxxx(composer, "libgobject"))
package("libgthread")
dep("libglib (same)")
dep("semi-libc @same-arch")
on_pack(lambda composer: pack_libxxx(composer, "libgthread"))
package("libgmodule")
dep("libglib (same)")
dep("semi-libc @same-arch")
on_pack(lambda composer: pack_libxxx(composer, "libgmodule"))
package("libgio")
dep("libglib (same)")
dep("libgobject (same)")
dep("libgmodule (same)")
dep("libz @same-arch")
dep("semi-libc @same-arch")
on_pack(lambda composer: pack_libxxx(composer, "libgio"))
package("libgirepository")
dep("libglib (same)")
dep("libgobject (same)")
dep("libgmodule (same)")
dep("libffi @same-arch")
dep("semi-libc @same-arch")
on_pack(lambda composer: pack_libxxx(composer, "libgirepository"))
def pack_glib(composer):
composer.makedir("lib")
for i in os.listdir("lib"):
if not i.endswith(".so"):
continue
pkgname = i.split("-")[0]
os.symlink(f"{get_prefix(pkgname)}/lib/{i}", f"{composer.workdir}/bundle/lib/{i}")
os.symlink(f"{get_prefix('glib-dev')}/lib/glib-2.0", f"{composer.workdir}/bundle/lib/glib-2.0")
composer.add_dir("share", "share")
package("glib")
dep("libglib (same)")
dep("libgobject (same)")
dep("libgthread (same)")
dep("libgmodule (same)")
dep("libgio (same)")
dep("libgirepository (same)")
on_pack(pack_glib)
package("glib-tools")
dep("glib (same)")
cpp.use_auto_pack(["bin"])
package("glib-dev")
dep("glib (same)")
dep("libz-dev @same-arch")
dep("libpcre2-dev @same-arch")
dep("libffi-dev @same-arch")
cpp.use_auto_pack(["dev"])
+27 -6
View File
@@ -1,17 +1,30 @@
import os
import lib.cpp as cpp
from lib import cpp, arch
from lib.make import *
version("1.34")
source_url("https://github.com/kmod-project/kmod/archive/refs/tags/v34.tar.gz")
builddep("shortcut/c")
builddep("shortcut/meson")
builddep(f"linux-dev @{arch.get_target()}")
builddep(f"libzstd-dev @{arch.get_target()}")
builddep(f"aws-lc-dev @{arch.get_target()}")
builddep(f"liblzma-dev @{arch.get_target()}")
builddep(f"libz-ng-dev @{arch.get_target()}")
builddep("pkgconf")
def build():
cpp.meson_setup()
cpp.meson_setup([
"-Dprefix=/",
f"-Ddistconfdir={get_prefix('libkmod')}/share",
"-Dmoduledir=/lib/lkm",
"-Dtools=true",
"-Ddlopen=all",
"-Dmanpages=false",
])
cpp.meson_compile()
cpp.meson_install()
os.chdir("usr")
on_build(build)
@@ -19,12 +32,20 @@ on_build(build)
package("libkmod")
cpp.use_auto_pack(["lib"])
dep("semi-libc @same-arch")
dep("libzstd @same-arch")
dep("libcrypto @same-arch")
recommend("libzstd @same-arch")
recommend("libz @same-arch")
recommend("liblzma @same-arch")
package("kmod")
cpp.use_auto_pack(["bin"])
dep("libkmod (same)")
link("bin/kmod", "/bin/depmod")
link("bin/kmod", "/bin/insmod")
link("bin/kmod", "/bin/lsmod")
link("bin/kmod", "/bin/modinfo")
link("bin/kmod", "/bin/modprobe")
link("bin/kmod", "/bin/rmmod")
package("libkmod-dev")
cpp.use_auto_pack(["dev"])
+285 -354
View File
@@ -1,395 +1,326 @@
import glob
import os
import subprocess
import shutil
import glob
upstream_version = "22.1.8"
[upstream_major, upstream_minor, upstream_rev] = upstream_version.split(".")
# Begin of file lists
LLVM_TOOLS = [
"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",
]
LLDB_BINARIES = [
"lldb",
"lldb-argdumper",
"lldb-dap",
"lldb-instr",
"lldb-mcp",
"lldb-server",
"yaml2macho-core",
]
LLD_BINARIES = ["lld", "lld-link", "ld64.lld", "wasm-ld", "wrapper://ld.lld~ld.lld"]
CLANG_BINARIES = [
f"clang-{upstream_major}~llvm-clang",
"wrapper://clang~clang",
"wrapper://clang++~clang++",
f"wrapper://clang~clang-{upstream_major}",
"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++",
"libexec/analyze-cc",
"libexec/c++-analyzer",
"libexec/ccc-analyzer",
"libexec/intercept-c++",
"libexec/intercept-cc",
]
# End of file lists
import lib.cpp as cpp
from lib import arch
import lib
from lib import arch, cpp
from lib.make import *
version(upstream_version)
source_url(
f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{upstream_version}/llvm-project-{upstream_version}.src.tar.xz"
)
pkgver = "22.1.8"
[pkgver_major, pkgver_minor, pkgver_rev] = pkgver.split(".")
version(pkgver)
source_url(f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{pkgver}/llvm-project-{pkgver}.src.tar.xz")
builddep("shortcut/c++")
builddep("shortcut/cmake")
builddep(f"linux-dev @{arch.get_target()}")
builddep(f"libffi-dev @{arch.get_target()}")
builddep(f"libz-ng-dev @{arch.get_target()}")
builddep(f"aws-lc-dev @{arch.get_target()}")
builddep(f"libunwind-dev @{arch.get_target()}")
srcdir = None
packname = None
def llvm_host_triple():
return arch.get_target().replace("-semios-linux", "-semios-linux-musl")
def cmake(sourcedir, args):
builddir = os.getcwd() + f"/../_build_{sourcedir}"
installdir = os.getcwd() + f"/../_cpp_install/{sourcedir}"
template_args = [
"cmake", "-G", "Ninja", "-S", sourcedir, "-B", builddir,
"-DCMAKE_BUILD_TYPE=Release",
f"-DLLVM_DEFAULT_TARGET_TRIPLE={llvm_host_triple()}",
f"-DLLVM_HOST_TRIPLE={llvm_host_triple()}",
"-DLLVM_ENABLE_EH=ON",
"-DLLVM_ENABLE_RTTI=ON",
"-DLLVM_ENABLE_ASSERTIONS=OFF",
"-DLLVM_BUILD_LLVM_DYLIB=ON",
"-DLLVM_LINK_LLVM_DYLIB=ON",
"-DLLVM_ENABLE_LIBCXX=ON",
"-DLLVM_ENABLE_LLD=ON",
"-DLLVM_ENABLE_FFI=ON",
]
subprocess.run(template_args + args, check=True)
subprocess.run(["cmake", "--build", builddir], check=True)
os.environ["DESTDIR"] = installdir
subprocess.run(["cmake", "--install", builddir], check=True)
def import_llvm():
return [f"-DLLVM_ROOT={os.getcwd()}/../_cpp_install/llvm/usr/local"]
def import_clang():
return [f"-DClang_DIR={os.getcwd()}/../_cpp_install/clang/usr/local"]
def enter_install(name):
global packname
packname = name
def auto_pack_static(composer):
composer.makedir("lib")
for i in os.listdir("lib"):
if ".a" in i:
composer.addfile(f"lib/{i}", f"lib/{i}")
def auto_pack_dev(composer, name, devbins=[], extdirs=["lib/cmake"]):
composer.add_dir("include", "include")
composer.makedir("lib")
for i in os.listdir("lib"):
prefix = None
if os.path.isdir(i) and f"lib/{i}" in extdirs:
composer.add_dir(f"lib/{i}", f"lib/{i}")
elif ".so" in i:
prefix = get_prefix(f"lib{name}")
elif ".a" in i:
prefix = get_prefix(f"lib{name}-static")
if prefix:
os.symlink(f"{prefix}/lib/{i}", f"{composer.workdir}/bundle/lib/{i}")
composer.makedir("bin")
for i in devbins:
composer.addfile(f"bin/{i}", f"bin/{i}")
for i in os.listdir("bin"):
if i in devbins:
continue
prefix = get_prefix(name)
os.symlink(f"{prefix}/bin/{i}", f"{composer.workdir}/bundle/bin/{i}")
def auto_pack_runtime_lib(composer, name):
composer.makedir("lib")
for i in os.listdir("lib"):
if name in i and ".so" in i:
composer.addfile(f"lib/{i}", f"lib/{i}")
def auto_pack_glob(composer, matches):
for matchable in matches:
for i in glob.glob(matchable):
composer.makedirs(f"{os.path.dirname(i)}")
if os.path.isdir(i):
composer.add_dir(i, i)
else:
composer.addfile(i, i)
old_on_pack = on_pack
def new_on_pack(f):
current_packname = packname
def wrap_f(composer):
pkgdir = f"{srcdir}/../_cpp_install/{current_packname}/usr/local"
os.chdir(pkgdir)
f(composer)
old_on_pack(wrap_f)
lib.make.on_pack = new_on_pack
on_pack = new_on_pack
def build_llvm():
cmake("llvm", [])
def build_bolt():
cmake("bolt", import_llvm())
def build_clang():
options = [
"-DCLANG_DEFAULT_CXX_STDLIB=libc++",
"-DCLANG_DEFAULT_RTLIB=compiler-rt",
"-DLLVM_INCLUDE_TESTS=OFF",
f"-DC_INCLUDE_DIRS=/lib/{arch.get_target()}/include",
]
cmake("clang", import_llvm() + options)
def build_lldb():
cmake("lldb", import_llvm() + import_clang())
def build_lld():
cmake("lld", import_llvm())
def build_polly():
cmake("polly", import_llvm())
def build_runtimes():
os.makedirs("../_build_runtimes", exist_ok=True)
shutil.rmtree("../_build_runtimes")
options = [
# Configure runtimes
"-DLLVM_ENABLE_RUNTIMES=libunwind;libcxxabi;libcxx",
# Configure libcxx
"-DLIBCXX_HAS_MUSL_LIBC=ON",
]
cmake("runtimes", options)
shutil.rmtree("../_build_runtimes")
options = [
# Configure runtimes
"-DLLVM_ENABLE_RUNTIMES=compiler-rt",
# Configure compiler-rt
"-DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON",
"-DCOMPILER_RT_BUILD_GWP_ASAN=OFF",
"-DCOMPILER_RT_BUILD_LIBFUZZER=OFF",
]
cmake("runtimes", options)
def build():
os.environ["CXXFLAGS"] = os.environ.get("CXXFLAGS", "") + " --rtlib=compiler-rt"
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_ENABLE_LLD=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")
global srcdir
srcdir = os.getcwd()
build_llvm()
build_bolt()
build_clang()
build_lldb()
build_lld()
build_polly()
build_runtimes()
on_build(build)
# Begin of helper functions
package_dir = os.getcwd()
def install_wrapper(composer, name: str, dst: str):
composer.addfile(f"{package_dir}/wrapper/{name}.wrapper", dst)
with open(f"{composer.workdir}/bundle/{dst}", "r") as f:
s = f.read()
s = s.replace("LLVM_VERSION=", f"LLVM_VERSION={upstream_version}").replace(
"ARCHITECTURE=", "ARCHITECTURE=" + arch.get_target()
).replace("LLVM_ARCH=", "LLVM_ARCH=" + llvm_host_triple())
with open(f"{composer.workdir}/bundle/{dst}", "w") as f:
f.write(s)
os.chmod(f"{composer.workdir}/bundle/{dst}", 0o755)
def auto_pack_llvm_runtime(composer, prefix, dev):
composer.makedirs("lib")
parent_dir = f"./lib/{llvm_host_triple()}"
for i in os.listdir(parent_dir):
fullpath = f"{parent_dir}/{i}"
if i.split(".")[0] != prefix:
continue
if dev:
if ".so" in i:
continue
else:
if not ".so" in i:
continue
composer.addfile(fullpath, f"lib/{i}")
if not dev:
return
def auto_pack_llvm_runtime_dev(composer, condition):
composer.makedir("include")
parent_include = f"./usr/include"
for i in condition:
if i.startswith("lib:"):
auto_pack_llvm_runtime(composer, i.replace("lib:", ""), True)
continue
i = i.replace("include:", "")
for file in glob.glob(f"{parent_include}/{i}"):
name = file.replace(f"{parent_include}/", "")
if "/" in name:
composer.makedirs(f"include/{os.path.dirname(name)}")
if os.path.isdir(file):
composer.add_dir(file, f"include/{name}")
else:
composer.addfile(file, f"include/{name}")
def use_llvm_runtime_auto_pack(prefix: str):
on_pack(lambda composer: auto_pack_llvm_runtime(composer, prefix, False))
def use_llvm_runtime_dev_auto_pack(des: list[str]):
on_pack(lambda composer: auto_pack_llvm_runtime_dev(composer, des))
def auto_pack_llvm_libs(composer, prefixes: list[str]):
composer.makedirs("lib")
parent_dir = f"./lib/"
for i in os.listdir(parent_dir):
fullpath = f"{parent_dir}/{i}"
if not i.split(".")[0] in prefixes:
continue
if not ".so" in i:
continue
composer.addfile(fullpath, f"lib/{i}")
def use_llvm_libs_auto_pack(prefixes: list[str]):
on_pack(lambda composer: auto_pack_llvm_libs(composer, prefixes))
def auto_pack_bin(composer, conditions: list[str]):
for i in conditions:
prefix = "bin"
if i.startswith("libexec/"):
i = i.replace("libexec/", "")
prefix = "libexec"
composer.makedirs(prefix)
src = i
dst = f"{prefix}/{i}"
if len(i.split("~")) == 2:
src = i.split("~")[0]
dst = f"bin/{i.split('~')[1]}"
if src.startswith("wrapper://"):
src = src.replace("wrapper://", "")
if len(i.split("~")) == 1:
dst = f"bin/{src}.wrapper"
install_wrapper(composer, src, dst)
continue
if os.path.exists(f"{prefix}/{src}"):
src = f"{prefix}/{src}"
elif os.path.exists(f"usr/{prefix}/{src}"):
src = f"usr/{prefix}/{src}"
composer.addfile(src, dst)
def use_bin_auto_pack(conditions: list[str]):
on_pack(lambda composer: auto_pack_bin(composer, conditions))
# End of helper functions
# Begin of packages
package("libunwind")
dep("semi-libc @same-arch")
use_llvm_runtime_auto_pack("libunwind")
package("libunwind-dev")
dep("libunwind (same)")
use_llvm_runtime_dev_auto_pack(
["lib:libunwind", "include:mach-o", "include:*unwind*.h"]
)
package("libcxxabi")
dep("libunwind (same)")
use_llvm_runtime_auto_pack("libc++abi")
package("libcxxabi-dev")
dep("libcxxabi (same)")
use_llvm_runtime_dev_auto_pack(["lib:libc++abi"])
package("libcxx")
dep("libcxxabi (same)")
use_llvm_runtime_auto_pack("libc++")
package("libcxx-dev")
dep("libcxx (same)")
use_llvm_runtime_dev_auto_pack(
[
"lib:libc++",
"lib:libc++experimental",
f"include:{llvm_host_triple()}/c++/v1/__config_site",
"include:c++/v1",
]
)
enter_install("llvm")
package("libllvm")
dep("semi-libc @same-arch")
dep("libunwind @same-arch")
dep("libcxx @same-arch")
use_llvm_libs_auto_pack(["libLLVM", "libLTO", "libRemarks"])
dep("libcxxabi @same-arch")
dep("libffi @same-arch")
on_pack(lambda composer: auto_pack_glob(composer, ["lib/*.so*"]))
package("libllvm-dev")
dep("libllvm (same)")
on_pack(lambda composer: auto_pack_dev(composer, "llvm", ["llvm-config"]))
package("libllvm-static")
on_pack(auto_pack_static)
def pack_llvm(composer):
composer.add_dir("bin", "bin")
os.remove(f"{composer.workdir}/bundle/bin/llvm-config")
composer.add_dir("share", "share")
package("llvm")
dep("libllvm (same)")
use_bin_auto_pack(LLVM_TOOLS)
on_pack(pack_llvm)
for i in ["strip", "ar", "ranlib", "readelf", "objcopy", "objdump", "strings", "nm"]:
link(f"bin/llvm-{i}", f"/bin/{i}")
package("lld")
enter_install("bolt")
package("bolt")
dep("libcxx @same-arch")
use_bin_auto_pack(LLD_BINARIES)
link("bin/ld.lld", "/bin/ld")
package("liblldb")
dep("libcxx @same-arch")
use_llvm_libs_auto_pack(["liblldb", "liblldbIntelFeatures"])
cpp.use_auto_pack(["bin"])
package("lldb")
dep("libcxx @same-arch")
dep("liblldb (same)")
use_bin_auto_pack(LLDB_BINARIES)
enter_install("clang")
package("libclang")
dep("libcxx @same-arch")
dep("libllvm (same)")
use_llvm_libs_auto_pack(["libclang", "libclang-cpp"])
cpp.use_auto_pack(["lib"])
package("libclang-static")
on_pack(auto_pack_static)
package("libclang-dev")
dep("libclang (same)")
on_pack(lambda composer: auto_pack_dev(composer, "clang"))
def pack_clang(composer):
auto_pack_bin(composer, CLANG_BINARIES)
composer.makedirs(f"lib/clang/{upstream_major}/lib")
composer.add_dir(
f"lib/clang/{upstream_major}/lib/{llvm_host_triple()}",
f"lib/clang/{upstream_major}/lib/{llvm_host_triple()}",
)
# Add base files
composer.add_dir("bin", "bin")
composer.add_dir("libexec", "libexec")
composer.makedir("share")
for i in ["clang", "scan-build", "scan-view"]:
composer.add_dir(f"share/{i}", f"share/{i}")
# Add resource files
composer.makedir("lib")
composer.add_dir("lib/clang", "lib/clang")
# Add compiler-rt for current architecture
linuxrtdir = "../../../runtimes/usr/local/lib/linux"
localrtdir = f"lib/clang/{pkgver_major}/lib/{llvm_host_triple()}"
composer.makedirs(localrtdir)
for rtlib in os.listdir(linuxrtdir):
larch = llvm_host_triple().split("-")[0]
lrtlib = rtlib.replace(f"-{larch}", "")
composer.addfile(f"{linuxrtdir}/{rtlib}", f"{localrtdir}/{lrtlib}")
# Add configuration
clang_cfg = f"-L/lib/{arch.get_target()}\n-B/lib/{arch.get_target()}\n-rtlib=compiler-rt\n"
clangxx_cfg = f"-stdlib=libc++\n{clang_cfg}"
with open(f"{composer.workdir}/bundle/bin/clang.cfg", "wt+") as file:
file.write(clang_cfg)
with open(f"{composer.workdir}/bundle/bin/clang++.cfg", "wt+") as file:
file.write(clangxx_cfg)
package("clang")
dep("libclang (same)")
on_pack(pack_clang)
# End of packages
enter_install("lld")
package("lld")
dep("libllvm (same)")
cpp.use_auto_pack(["bin"])
link("bin/ld.lld", "/bin/ld")
package("lld-dev")
dep("lld (same)")
cpp.use_auto_pack(["dev"])
enter_install("lldb")
package("liblldb")
dep("libclang (same)")
dep("libllvm (same)")
cpp.use_auto_pack(["lib"])
package("liblldb-dev")
dep("liblldb (same)")
cpp.use_auto_pack(["dev"])
package("lldb")
dep("liblldb (same)")
cpp.use_auto_pack(["bin"])
enter_install("polly")
package("polly")
dep("libcxx @same-arch")
on_pack(lambda composer: auto_pack_glob(composer, ["*"]))
enter_install("runtimes")
package("libunwind")
dep("semi-libc @same-arch")
on_pack(lambda composer: auto_pack_runtime_lib(composer, "unwind"))
package("libunwind-dev")
dep("libunwind (same)")
on_pack(lambda composer: auto_pack_glob(composer, ["lib/libunwind.a", "include/*unwind*", "include/mach-o"]))
package("libcxxabi")
dep("libunwind (same)")
on_pack(lambda composer: auto_pack_runtime_lib(composer, "libc++abi"))
package("libcxxabi-dev")
dep("libcxxabi (same)")
on_pack(lambda composer: auto_pack_glob(composer, ["lib/libc++abi.a"]))
package("libcxx")
dep("libcxxabi (same)")
on_pack(lambda composer: auto_pack_runtime_lib(composer, "libc++"))
package("libcxx-dev")
dep("libcxx (same)")
on_pack(lambda composer: auto_pack_glob(composer, ["lib/libc++experimental.a", "lib/libc++.a", "lib/libc++.modules.json", "include/c++", "share/libc++"]))
@@ -1,19 +0,0 @@
#!/bin/sh
LLVM_VERSION=
ARCHITECTURE=
LLVM_ARCH=
CLANG=$(packie print package.prefix."clang (=${LLVM_VERSION}) @${ARCHITECTURE}")/bin/llvm-clang
exec ${CLANG} \
-Wno-unused-command-line-argument \
-isystem /lib/${ARCHITECTURE}/include/c++/v1 \
-isystem /lib/${ARCHITECTURE}/include/${LLVM_ARCH}/c++/v1 \
-isystem /lib/${ARCHITECTURE}/include \
-stdlib=libc++ \
-rtlib=compiler-rt \
-B /lib/${ARCHITECTURE} \
-lc++ \
-Wunused-command-line-argument \
"$@"
@@ -1,14 +0,0 @@
#!/bin/sh
LLVM_VERSION=
ARCHITECTURE=
CLANG=$(packie print package.prefix."clang (=${LLVM_VERSION}) @${ARCHITECTURE}")/bin/llvm-clang
exec ${CLANG} \
-Wno-unused-command-line-argument \
-isystem /lib/${ARCHITECTURE}/include \
-rtlib=compiler-rt \
-B /lib/${ARCHITECTURE} \
-Wunused-command-line-argument \
"$@"
@@ -1,8 +0,0 @@
#!/bin/sh
LLVM_VERSION=
ARCHITECTURE=
LLD=$(packie print package.prefix."lld (=${LLVM_VERSION}) @${ARCHITECTURE}")/bin/lld
exec ${LLD} -flavor gnu -L/lib/${ARCHITECTURE} "$@"
+1
View File
@@ -21,4 +21,5 @@ def build():
on_build(build)
package("mandoc")
dep("libz @same-arch")
cpp.use_auto_pack(["bin"])
Binary file not shown.
+42
View File
@@ -0,0 +1,42 @@
import os
from lib.make import *
from lib import arch
def deplinux(s):
if "linux" in arch.get_target():
dep(s)
version("1.0.0")
source_url(f"file://{os.getcwd()}/empty.tar")
on_build(lambda: print("Building virtual package `semios-assembly`..."))
package("SemiOS.Assembly.CoreRuntime")
deplinux("semi-libc @same-arch")
deplinux("libgcc-compat @same-arch")
dep("libunwind @same-arch")
dep("mksh @same-arch")
dep("coreutils @same-arch")
dep("findutils @same-arch")
dep("diffutils @same-arch")
dep("grep @same-arch")
dep("packie @same-arch")
dep("iana-timezone-db")
on_pack(lambda _: print("Packing virtual package `SemiOS.Assembly.CoreRuntime`..."))
package("SemiOS.Assembly.Cli")
dep("less @same-arch")
dep("ncurses-tools @same-arch")
dep("ncurses-terminfo")
dep("mandoc @same-arch")
dep("neatvi @same-arch")
on_pack(lambda _: print("Packing virtual package `SemiOS.Assembly.Cli`..."))
package("SemiOS.Assembly.Networking")
dep("aws-lc-libssl @same-arch")
dep("aws-lc-tools @same-arch")
dep("ca-certificates")
dep("certutil @same-arch")
deplinux("iproute2 @same-arch")
on_pack(lambda _: print("Packing virtual package `SemiOS.Assembly.Networking`..."))
+323
View File
@@ -0,0 +1,323 @@
import os
from lib.make import *
from lib import cpp
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep("gettext")
builddep("bash")
builddep(f"linux-dev @{arch.get_target()}")
builddep(f"libintl-dev @{arch.get_target()}")
builddep(f"libz-ng-dev @{arch.get_target()}")
builddep(f"libncurses-dev @{arch.get_target()}")
version("2.42.2")
source_url("https://www.kernel.org/pub/linux/utils/util-linux/v2.42/util-linux-2.42.2.tar.xz")
def build():
cpp.configure([
"--prefix=/",
"--enable-fs-paths-default=/bin",
"--disable-su",
"--disable-sulogin",
"--disable-chfn-chsh",
"--disable-login",
"--without-systemd",
"--disable-makeinstall-setuid",
"--disable-makeinstall-chown",
"--disable-makeinstall-tty-setgid",
])
cpp.make()
cpp.make_install()
on_build(build)
def fix_pc(libname: str):
pkgname_lib = f"lib{libname}"
pkgname_dev = f"lib{libname}-dev"
pc_path = f"lib/pkgconfig/{libname}.pc"
with open(pc_path, "r") as file:
pc_content = file.read()
pc_content = pc_content.replace(
"libdir=//lib", f"libdir={get_prefix(pkgname_lib)}/lib"
).replace(
"includedir=//include", f"includedir={get_prefix(pkgname_dev)}/include"
)
with open(pc_path, "wt") as file:
file.write(pc_content)
def pack_lib(composer, name):
composer.makedir("lib")
for i in os.listdir("lib"):
if name in i and "so" in i:
composer.addfile(f"lib/{i}", f"lib/{i}")
def pack_dev(composer, name):
fix_pc(name)
composer.makedir("lib")
for i in os.listdir("lib"):
if name in i and "so" not in i:
composer.addfile(f"lib/{i}", f"lib/{i}")
composer.makedir("lib/pkgconfig")
composer.addfile(f"lib/pkgconfig/{name}.pc", f"lib/pkgconfig/{name}.pc")
composer.makedir("include")
for i in os.listdir("include"):
if name in i:
composer.add_dir(f"include/{i}", f"include/{i}")
def pack_bin(composer, list):
composer.makedir("bin")
for i in list:
if i.startswith("sbin/"):
i = i.replace("sbin/", "")
composer.addfile(f"sbin/{i}", f"bin/{i}")
else:
composer.addfile(f"bin/{i}", f"bin/{i}")
package("libblkid")
dep("semi-libc @same-arch")
on_pack(lambda composer: pack_lib(composer, "blkid"))
package("libblkid-dev")
dep("libblkid (same)")
on_pack(lambda composer: pack_dev(composer, "blkid"))
package("libfdisk")
dep("libuuid (same)")
dep("libblkid (same)")
on_pack(lambda composer: pack_lib(composer, "fdisk"))
package("libfdisk-dev")
dep("libfdisk (same)")
on_pack(lambda composer: pack_dev(composer, "fdisk"))
package("libmount")
dep("libblkid (same)")
on_pack(lambda composer: pack_lib(composer, "mount"))
package("libmount-dev")
dep("libmount (same)")
on_pack(lambda composer: pack_dev(composer, "mount"))
package("libsmartcols")
dep("semi-libc @same-arch")
on_pack(lambda composer: pack_lib(composer, "smartcols"))
package("libsmartcols-dev")
dep("libsmartcols (same)")
on_pack(lambda composer: pack_dev(composer, "smartcols"))
package("libuuid")
dep("semi-libc @same-arch")
on_pack(lambda composer: pack_lib(composer, "uuid"))
package("libuuid-dev")
dep("libuuid (same)")
on_pack(lambda composer: pack_dev(composer, "uuid"))
package("util-linux-swap")
dep("libblkid (same)")
dep("libmount (same)")
dep("libsmartcols (same)")
on_pack(lambda composer: pack_bin(composer, ["sbin/swaplabel", "sbin/swapoff", "sbin/swapon", "sbin/mkswap"]))
package("util-linux-mount")
provide("mount")
dep("libmount (same)")
on_pack(lambda composer: pack_bin(composer, ["mount", "umount"]))
package("util-linux-fdisk")
provide("fdisk")
dep("libfdisk (same)")
dep("libsmartcols (same)")
dep("libncurses @same-arch")
on_pack(lambda composer: pack_bin(composer, ["sbin/fdisk"]))
package("util-linux-sfdisk")
provide("sfdisk")
dep("libfdisk (same)")
dep("libsmartcols (same)")
dep("libncurses @same-arch")
on_pack(lambda composer: pack_bin(composer, ["sbin/sfdisk"]))
package("util-linux-cfdisk")
provide("cfdisk")
dep("libfdisk (same)")
dep("libsmartcols (same)")
dep("libncurses @same-arch")
on_pack(lambda composer: pack_bin(composer, ["sbin/cfdisk"]))
package("util-linux-mkfs")
dep("semi-libc @same-arch")
dep("libz @same-arch")
provide("mkfs")
on_pack(lambda composer: pack_bin(composer, ["sbin/mkfs", "sbin/mkfs.bfs", "sbin/mkfs.cramfs", "sbin/mkfs.minix"]))
package("util-linux-fsck")
dep("libmount (same)")
dep("libblkid (same)")
dep("libz @same-arch")
provide("fsck")
on_pack(lambda composer: pack_bin(composer, ["sbin/fsck", "sbin/fsck.cramfs", "sbin/fsck.minix"]))
package("util-linux-fs")
dep("libblkid (same)")
dep("libsmartcols (same)")
dep("libmount (same)")
on_pack(lambda composer: pack_bin(composer, [
"sbin/addpart",
"sbin/resizepart",
"sbin/delpart",
"sbin/partx",
"sbin/losetup",
"sbin/blkdiscard",
"sbin/blkid",
"sbin/blkpr",
"sbin/blkzone",
"sbin/blockdev",
"sbin/findfs",
"sbin/fsfreeze",
"sbin/fstrim",
"copyfilerange",
"exch",
"fadvise",
"fallocate",
"fincore",
"flock",
"getino",
"hardlink",
"mountpoint",
"namei",
"rename",
"whereis",
"sbin/pivot_root",
"sbin/switch_root",
"sbin/wipefs",
"sbin/zramctl",
"findmnt",
]))
package("util-linux-security")
dep("libsmartcols (same)")
dep("libmount (same)")
on_pack(lambda composer: pack_bin(composer, [
"utmpdump",
"unshare",
"last",
"lastb",
"nsenter",
"lsns",
"sbin/nologin",
]))
package("util-linux-proc")
dep("libsmartcols (same)")
dep("semi-libc @same-arch")
on_pack(lambda composer: pack_bin(composer, [
"uclampset",
"waitpid",
"setsid",
"setpgid",
"taskset",
"chrt",
"coresched",
"prlimit",
"renice",
"ionice",
]))
package("util-linux-text")
dep("libncurses @same-arch")
dep("libsmartcols (same)")
on_pack(lambda composer: pack_bin(composer, [
"bits",
"cal",
"colcrt",
"colrm",
"column",
"getopt",
"hexdump",
"look",
"mcookie",
"rev",
"ul",
]))
package("util-linux-term")
dep("libncurses @same-arch")
on_pack(lambda composer: pack_bin(composer, [
"setterm",
"mesg",
"script",
"scriptlive",
"scriptreplay",
"wall",
"sbin/agetty",
"sbin/ldattach",
]))
package("util-linux-ipc")
dep("libmount (same)")
dep("libsmartcols (same)")
on_pack(lambda composer: pack_bin(composer, [
"ipcmk",
"ipcrm",
"ipcs",
"lslocks",
"pipesz",
"dmesg",
]))
package("util-linux-hardware")
dep("libsmartcols (same)")
dep("libncurses @same-arch")
on_pack(lambda composer: pack_bin(composer, [
"irqtop",
"lsirq",
"lsmem",
"wdctl",
"sbin/hwclock",
"sbin/readprofile",
"sbin/rfkill",
"sbin/rtcwake",
]))
package("isosize")
dep("semi-libc @same-arch")
on_pack(lambda composer: pack_bin(composer, ["isosize"]))
package("util-linux-arch")
dep("semi-libc @same-arch")
on_pack(lambda composer: pack_bin(composer, ["setarch", "uname26", "linux32", "linux64"]))
package("util-linux-uuid")
dep("libuuid (same)")
dep("libsmartcols (same)")
on_pack(lambda composer: pack_bin(composer, [
"uuidgen",
"uuidparse",
"sbin/uuidd",
]))
package("util-linux")
dep("util-linux-swap (same)")
dep("util-linux-mount (same)")
dep("util-linux-fdisk (same)")
dep("util-linux-sfdisk (same)")
dep("util-linux-cfdisk (same)")
dep("util-linux-mkfs (same)")
dep("util-linux-fsck (same)")
dep("util-linux-fs (same)")
dep("util-linux-security (same)")
dep("util-linux-proc (same)")
dep("util-linux-text (same)")
dep("util-linux-term (same)")
dep("util-linux-ipc (same)")
dep("util-linux-hardware (same)")
dep("isosize (same)")
dep("util-linux-arch (same)")
dep("util-linux-uuid (same)")
on_pack(lambda _composer: None)