8 Commits
14 changed files with 302 additions and 4 deletions
+20
View File
@@ -41,6 +41,16 @@ def autolink_share_pkgconfig():
if i.is_file(): if i.is_file():
make.link(f"share/pkgconfig/{i.name}", "/share/pkgconfig/" + i.name) make.link(f"share/pkgconfig/{i.name}", "/share/pkgconfig/" + i.name)
def autolink_services():
for i in common.treedir("share/services"):
if i.is_file() and os.access(i.path, os.F_OK):
make.link(f"share/services/{i.name}", "/share/services/" + i.name)
def autolink_milestones():
for i in common.treedir("share/milestones"):
if i.is_file() and os.access(i.path, os.F_OK):
make.link(f"share/milestones/{i.name}", "/share/milestones/" + i.name)
def autolink(composer: pkgcomposer.PkgComposer): def autolink(composer: pkgcomposer.PkgComposer):
os.chdir(composer.workdir + "/bundle/") os.chdir(composer.workdir + "/bundle/")
@@ -64,3 +74,13 @@ def autolink(composer: pkgcomposer.PkgComposer):
autolink_share_pkgconfig() autolink_share_pkgconfig()
except: except:
pass pass
try:
autolink_services()
except:
pass
try:
autolink_milestones()
except:
pass
+8
View File
@@ -16,6 +16,7 @@ _key_links = "links"
_key_dependencies = "dependencies" _key_dependencies = "dependencies"
_key_recommendations = "recommendations" _key_recommendations = "recommendations"
_key_provides = "provides" _key_provides = "provides"
_key_configure = "configure"
_current_pkgname: str = _key_global _current_pkgname: str = _key_global
_pkginfo: dict[str, dict[str, typing.Any]] = { _pkginfo: dict[str, dict[str, typing.Any]] = {
@@ -25,6 +26,7 @@ _pkginfo: dict[str, dict[str, typing.Any]] = {
_key_maintainers: [], _key_maintainers: [],
_key_provides: [], _key_provides: [],
_key_recommendations: [], _key_recommendations: [],
_key_configure: [],
}, },
} }
_supported_arch: typing.Callable[[str], bool] = lambda x: True _supported_arch: typing.Callable[[str], bool] = lambda x: True
@@ -87,6 +89,12 @@ def provide(s: str):
] ]
def configure_script(s: str):
_pkginfo[_current_pkgname][_key_configure] += [
os.path.realpath(s)
]
def _translate_dep_spec(s: str) -> str: def _translate_dep_spec(s: str) -> str:
return ( return (
s.replace("(same)", "(same-version) @same-arch") s.replace("(same)", "(same-version) @same-arch")
+9
View File
@@ -25,6 +25,15 @@ class PkgComposer:
json.dump(link, f) json.dump(link, f)
f.write("\n") f.write("\n")
def add_configure(self, path: str, name: str = None):
if name is None:
name = os.path.basename(path)
configuredir = self.workdir + "/configure/"
dstpath = configuredir + name
os.makedirs(configuredir, exist_ok=True)
shutil.copy2(path, dstpath)
os.chmod(dstpath, 0o755)
def compose(self): def compose(self):
subprocess.run( subprocess.run(
[ [
+2 -2
View File
@@ -1,8 +1,8 @@
{ {
"os_name": "\u001b[36;4mSemiOS\u001b[0m", "os_name": "\u001b[36;4mSemiOS\u001b[0m",
"config_dir": "/var/config/airup", "config_dir": "/var/config/airup",
"service_dir": "/share/airup/services", "service_dir": "/share/services",
"milestone_dir": "/share/airup/milestones", "milestone_dir": "/share/milestones",
"runtime_dir": "/run/airup", "runtime_dir": "/run/airup",
"env_vars": {}, "env_vars": {},
"early_cmds": [] "early_cmds": []
+19 -2
View File
@@ -16,14 +16,30 @@ def build():
shutil.copy2("../../build_manifest.json", "build_manifest.json") shutil.copy2("../../build_manifest.json", "build_manifest.json")
rust.build() rust.build()
on_build(build) on_build(build)
def patch_logger_airs(path):
with open(path) as fd:
content = fd.read()
content = content.replace(
"/usr/libexec/airup/airup-fallback-logger",
get_prefix('airup') + "/libexec/airup-fallback-logger",
)
with open(path, 'wt+') as fd:
fd.write(content)
def pack_airup(composer): def pack_airup(composer):
os.chdir(rust.artifacts_dir())
composer.makedir("bin") composer.makedir("bin")
composer.makedir("libexec") composer.makedir("libexec")
composer.makedirs("share/services")
patch_logger_airs("docs/resources/airup-fallback-logger.airs")
composer.addfile("docs/resources/airup-fallback-logger.airs", "share/services/airup-fallback-logger.airs")
composer.addfile("docs/resources/airupd.airs", "share/services/airupd.airs")
os.chdir(rust.artifacts_dir())
composer.addfile("airup", "bin/airup") composer.addfile("airup", "bin/airup")
composer.addfile("airupd", "bin/airupd") composer.addfile("airupd", "bin/airupd")
composer.addfile("airup-fallback-logger", "libexec/airup-fallback-logger") composer.addfile("airup-fallback-logger", "libexec/airup-fallback-logger")
@@ -32,3 +48,4 @@ def pack_airup(composer):
package("airup") package("airup")
on_pack(pack_airup) on_pack(pack_airup)
dep("semi-libc @same-arch") dep("semi-libc @same-arch")
link("bin/airupd", "/bin/init")
@@ -0,0 +1,6 @@
#!/bin/sh
[ "${ACTION}" = "remove" ] && exit 0
command -v certutil >/dev/null 2>&1 || exit 0
certutil refresh
+2
View File
@@ -27,4 +27,6 @@ def pack(composer):
package("ca-certificates") package("ca-certificates")
arch_any() arch_any()
configure_script("configure/refresh")
recommend("certutil")
on_pack(pack) on_pack(pack)
+26
View File
@@ -0,0 +1,26 @@
import subprocess
import os
import lib
from lib.make import *
version("0.1.0-alpha.1")
description("SemiOS init scripts")
maintainer("sisungo <[email protected]>")
source_url("https://gitea.semilabs.org/semios/init-scripts/archive/0.1.0-alpha.1.tar.gz")
def build():
subprocess.run(["env", f"PREFIX={get_prefix('init-scripts')}", "sh", "install.sh"], check=True)
os.chdir("./target")
on_build(build)
def pack(composer):
composer.add("share")
composer.add("bin")
package("init-scripts")
arch_any()
on_pack(pack)
+33
View File
@@ -0,0 +1,33 @@
from lib import cpp
from lib.make import *
version("1.3.6")
description("Ogg container format libraries")
maintainer("sisungo <[email protected]>")
source_url("https://downloads.xiph.org/releases/ogg/libogg-1.3.6.tar.xz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.configure(
[
"--prefix=/",
f"--libdir={get_prefix('libogg')}/lib",
f"--includedir={get_prefix('libogg-dev')}/include",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("libogg")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["lib"])
package("libogg-dev")
dep("libogg (same)")
cpp.use_auto_pack(["dev"])
+35
View File
@@ -0,0 +1,35 @@
from lib import cpp
from lib.make import *
version("1.3.7")
description("Reference implementation of the Ogg Vorbis audio format.")
maintainer("sisungo <[email protected]>")
source_url("https://downloads.xiph.org/releases/vorbis/libvorbis-1.3.7.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep("libogg-dev @target")
def build():
cpp.configure(
[
"--prefix=/",
f"--libdir={get_prefix('libvorbis')}/lib",
f"--includedir={get_prefix('libvorbis-dev')}/include",
"--disable-oggtest",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("libvorbis")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["lib"])
package("libvorbis-dev")
dep("libvorbis (same)")
cpp.use_auto_pack(["dev"])
+79
View File
@@ -0,0 +1,79 @@
import os
import shutil
from lib.make import *
from lib import cpp
version("1.6.0")
description("a library to encode and decode images in WebP format")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/webmproject/libwebp/archive/refs/tags/v1.6.0.tar.gz")
builddep("shortcut/c")
builddep("shortcut/cmake")
def split_libsharpyuv():
os.makedirs("sharpyuv/libdev/pkgconfig")
os.makedirs("sharpyuv/lib")
os.makedirs("sharpyuv/include")
os.rename("lib/pkgconfig/libsharpyuv.pc", "sharpyuv/libdev/pkgconfig/libsharpyuv.pc")
os.system("mv lib/libsharpyuv* sharpyuv/lib/")
os.rename("include/webp/sharpyuv", "sharpyuv/include/sharpyuv")
with open("sharpyuv/libdev/pkgconfig/libsharpyuv.pc", "r") as pcf:
pc = pcf.read()
pc = pc.replace(get_prefix("libwebp"), get_prefix("libsharpyuv"))
pc = pc.replace(f"{get_prefix('libwebp-dev')}/include/webp", f"{get_prefix('libsharpyuv-dev')}/include")
with open("sharpyuv/libdev/pkgconfig/libsharpyuv.pc", "wt+") as pcf:
pcf.write(pc)
def build():
cpp.cmake([
"-DBUILD_SHARED_LIBS=1",
f"-DCMAKE_INSTALL_LIBDIR={get_prefix('libwebp')}/lib",
f"-DCMAKE_INSTALL_BINDIR={get_prefix('libwebp-tools')}/bin",
f"-DCMAKE_INSTALL_INCLUDEDIR={get_prefix('libwebp-dev')}/include",
])
cpp.ninja()
if os.path.exists("../cpp_install"):
shutil.rmtree("../cpp_install")
cpp.ninja_install()
split_libsharpyuv()
on_build(build)
def pack_libsharpyuv(composer):
composer.add_dir("sharpyuv/lib", "lib")
def pack_libsharpyuv_dev(composer):
composer.add_dir("sharpyuv/libdev", "lib")
composer.add_dir("sharpyuv/include", "include")
package("libsharpyuv")
description("Library for sharp RGB to YUV conversion")
dep("semi-libc @same-arch")
on_pack(pack_libsharpyuv)
package("libsharpyuv-dev")
description("Library for sharp RGB to YUV conversion")
dep("libsharpyuv (same)")
dep("semi-libc-dev @same-arch")
on_pack(pack_libsharpyuv_dev)
package("libwebp")
dep("semi-libc @same-arch")
dep("libsharpyuv (same)")
cpp.use_auto_pack(["lib"])
package("libwebp-tools")
dep("libwebp (same)")
cpp.use_auto_pack(["bin"])
package("libwebp-dev")
dep("libwebp (same)")
dep("libsharpyuv-dev (same)")
dep("semi-libc-dev @same-arch")
cpp.use_auto_pack(["dev"])
+59
View File
@@ -0,0 +1,59 @@
import glob
from lib import arch, cpp
from lib.make import *
version("1.7.2")
description("Linux PAM (Pluggable Authentication Modules for Linux) project")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/linux-pam/linux-pam/releases/download/v1.7.2/Linux-PAM-1.7.2.tar.xz")
supported_arch(lambda x: "linux" in x)
builddep("shortcut/c")
builddep("shortcut/meson")
builddep("linux-dev @target")
def build():
cpp.meson_setup([
f"--libdir={get_prefix('linux-pam')}/lib",
f"--includedir={get_prefix('linux-pam-dev')}/include",
"--sysconfdir=/var/config",
"-Di18n=disabled",
"-Daudit=disabled",
"-Deconf=disabled",
"-Dlogind=disabled",
"-Delogind=disabled",
"-Dopenssl=disabled",
"-Dpwaccess=disabled",
"-Dselinux=disabled",
"-Dnis=disabled",
f"-Dsecuredir=/lib/{arch.get_target()}/pam",
f"-Dvendordir={get_prefix('linux-pam')}/share/pam",
"-Dpam_userdb=disabled",
"-Dpam_unix=disabled",
])
cpp.meson_compile()
cpp.meson_install()
on_build(build)
def pack(composer):
composer.makedir("lib")
for i in glob.glob("lib/*.so*"):
composer.addfile(i)
composer.add_dir(f"lib/{arch.get_target()}/pam", "linux/pam")
composer.makedir("share")
composer.add_dir("share/pam")
composer.add_dir("sbin", "bin")
package("linux-pam")
dep("semi-libc @same-arch")
on_pack(pack)
package("linux-pam-dev")
dep("linux-pam (same)")
dep("semi-libc-dev @same-arch")
cpp.use_auto_pack(["dev"])
+1
View File
@@ -35,6 +35,7 @@ Libs: -L${libdir} -ludev
def pack(composer): def pack(composer):
composer.makedirs("share/device") composer.makedirs("share/device")
composer.add_dir("misc/rules", "share/device/rules") composer.add_dir("misc/rules", "share/device/rules")
composer.add_dir("misc/airup", "share/services")
oldpwd = os.getcwd() oldpwd = os.getcwd()
os.chdir(rust.artifacts_dir()) os.chdir(rust.artifacts_dir())
composer.makedir("bin") composer.makedir("bin")
+3
View File
@@ -123,6 +123,9 @@ def cmd_build_package(package: str):
} }
composer.write_manifest(manifest) composer.write_manifest(manifest)
composer.write_links(pkginfo[lib.make._key_links]) composer.write_links(pkginfo[lib.make._key_links])
for i in pkginfo[lib.make._key_configure]:
composer.add_configure(i)
composer.compose() composer.compose()
# Build success # Build success