forked from semios/semios-packages
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
db6e0867ce | ||
|
|
f315d81885 | ||
|
|
c0d84ec7a0 | ||
|
|
2cdda4f1c1 | ||
|
|
5e3086419d | ||
|
|
aee73b0820 | ||
|
|
9ffea23234 | ||
|
|
2414fb8a43 | ||
|
|
278dfa5c54 | ||
|
|
4f6837b076 | ||
|
|
75f756bd09 | ||
|
|
0ed5e65337 | ||
|
|
0ada9d32fb | ||
|
|
839b57e9bf | ||
|
|
7bae4acc42 | ||
|
|
3a1f472de2 | ||
|
|
452e767da4 | ||
|
|
933e526f26 | ||
|
|
8edccbc04e | ||
|
|
402aedcfb7 | ||
|
|
02dede7823 | ||
|
|
e9e835a7cf | ||
|
|
a14d1e6ea0 | ||
|
|
9711728da6 | ||
|
|
9810303b71 | ||
|
|
0c26fc60d1 |
@@ -0,0 +1,24 @@
|
||||
This is free and unencumbered software released into the public domain.
|
||||
|
||||
Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||
distribute this software, either in source code form or as a compiled
|
||||
binary, for any purpose, commercial or non-commercial, and by any
|
||||
means.
|
||||
|
||||
In jurisdictions that recognize copyright laws, the author or authors
|
||||
of this software dedicate any and all copyright interest in the
|
||||
software to the public domain. We make this dedication for the benefit
|
||||
of the public at large and to the detriment of our heirs and
|
||||
successors. We intend this dedication to be an overt act of
|
||||
relinquishment in perpetuity of all present and future rights to this
|
||||
software under copyright law.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
For more information, please refer to <https://unlicense.org/>
|
||||
@@ -0,0 +1,47 @@
|
||||
# SemiOS Packages
|
||||
|
||||
This is the SemiOS source package collection.
|
||||
|
||||
## Usage
|
||||
|
||||
To build a package for your native target, run:
|
||||
|
||||
```shell
|
||||
./x build <package name>
|
||||
```
|
||||
|
||||
To cross-build a package for another target, run:
|
||||
|
||||
```shell
|
||||
./x --target <target triple> build <package name>
|
||||
```
|
||||
|
||||
After a package is successfully built, you can find the build artifacts
|
||||
at `./packages/<package name>/target/*.pkg`.
|
||||
|
||||
To clean building files for a package, run:
|
||||
|
||||
```shell
|
||||
./x clean <package name> # Clean a package
|
||||
./x clean --all # Clean all packages
|
||||
```
|
||||
|
||||
## Targets
|
||||
|
||||
This repository is for SemiOS targets only. Other targets are not guaranteed to work.
|
||||
Currently, we support:
|
||||
|
||||
- aarch64-semios-linux
|
||||
- riscv64-semios-linux
|
||||
- x86_64-semios-linux
|
||||
|
||||
## Atom Builds
|
||||
|
||||
*Atom Build* is a technology to make reproducible building environments. To build a
|
||||
package in its atom environment, run:
|
||||
|
||||
```shell
|
||||
./x --atombuild build <package name>
|
||||
```
|
||||
|
||||
You can use the `--atombuild` flag with other flags described above.
|
||||
@@ -117,6 +117,7 @@ def _is_dev_file(ent) -> bool:
|
||||
or ent.name.endswith(".la")
|
||||
or ent.name.endswith(".pc")
|
||||
or ent.name.endswith(".h")
|
||||
or ent.name.endswith(".hpp")
|
||||
or ent.name.endswith(".cmake")
|
||||
or ent.name.endswith(".inc")
|
||||
or ("Makefile" in ent.name)
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ def _depcommon(s: str):
|
||||
if ")" in s:
|
||||
return s.replace(")", f", +python{PY3_VERSION})")
|
||||
else:
|
||||
return s.replace(".py", f" (+python{PY3_VERSION})")
|
||||
return s.replace(".py", f".py (+python{PY3_VERSION})")
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
+42
-10
@@ -4,6 +4,7 @@ import sys
|
||||
import tarfile
|
||||
import urllib.parse
|
||||
import urllib.request
|
||||
import zipfile
|
||||
|
||||
|
||||
def filename(url):
|
||||
@@ -128,6 +129,25 @@ def tar_common_root(tar: tarfile.TarFile) -> str | None:
|
||||
return root
|
||||
|
||||
|
||||
def zip_common_root(zip_file: zipfile.ZipFile) -> str | None:
|
||||
members = zip_file.infolist()
|
||||
if not members:
|
||||
return None
|
||||
root = None
|
||||
for member in members:
|
||||
path = member.filename.replace('\\', '/').lstrip('./').lstrip('/')
|
||||
if not path:
|
||||
continue
|
||||
this_root = path.split('/')[0]
|
||||
if this_root in ('', '.', '..'):
|
||||
continue
|
||||
if root is None:
|
||||
root = this_root
|
||||
elif this_root != root:
|
||||
return None
|
||||
return root
|
||||
|
||||
|
||||
def sources_dir_name() -> str:
|
||||
with open("./target/sources.tag") as file:
|
||||
return file.read()
|
||||
@@ -139,16 +159,28 @@ def source_url(url: str):
|
||||
download_path = f"./target/{filename(url)}"
|
||||
download(url, download_path)
|
||||
|
||||
with tarfile.open(download_path, "r") as tar:
|
||||
common_root = tar_common_root(tar)
|
||||
extract_dir = "./target"
|
||||
sources_dir = f"./target/{common_root}"
|
||||
if common_root in ["", ".", "None"]:
|
||||
extract_dir = "./target/sources"
|
||||
sources_dir = "./target/sources"
|
||||
tar.extractall(extract_dir)
|
||||
with open("./target/sources.tag", "wt+") as file:
|
||||
file.write(sources_dir)
|
||||
if download_path.endswith(".zip"):
|
||||
with zipfile.ZipFile(download_path, "r") as zip:
|
||||
common_root = zip_common_root(zip)
|
||||
else:
|
||||
with tarfile.open(download_path, "r") as tar:
|
||||
common_root = tar_common_root(tar)
|
||||
|
||||
extract_dir = "./target"
|
||||
sources_dir = f"./target/{common_root}"
|
||||
if common_root in ["", ".", None]:
|
||||
extract_dir = "./target/sources"
|
||||
sources_dir = "./target/sources"
|
||||
|
||||
if download_path.endswith(".zip"):
|
||||
with zipfile.ZipFile(download_path, "r") as zip:
|
||||
zip.extractall(extract_dir)
|
||||
else:
|
||||
with tarfile.open(download_path, "r") as tar:
|
||||
tar.extractall(extract_dir)
|
||||
|
||||
with open("./target/sources.tag", "wt+") as file:
|
||||
file.write(sources_dir)
|
||||
|
||||
|
||||
def _git_repo_name(url: str) -> str:
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
import os
|
||||
|
||||
from lib.make import *
|
||||
from lib import python
|
||||
|
||||
|
||||
python.version("1.4.1")
|
||||
description("A super-fast templating language that borrows the best ideas from the existing templating languages.")
|
||||
maintainer("sisungo <[email protected]>")
|
||||
source_url("https://files.pythonhosted.org/packages/2a/12/b5fa2353e2754cd67fb9f83793fa48ff42c213a5da7e719869d2301f6ab8/mako-1.4.1.tar.gz")
|
||||
|
||||
python.builddep("$shortcut")
|
||||
python.builddep("MarkupSafe.py")
|
||||
|
||||
|
||||
def build():
|
||||
python.build()
|
||||
python.install()
|
||||
os.chdir("lib")
|
||||
while len(os.listdir(".")) == 1:
|
||||
os.chdir(os.listdir(".")[0])
|
||||
|
||||
on_build(build)
|
||||
|
||||
|
||||
package("Mako.py")
|
||||
python.dep("python")
|
||||
python.dep("MarkupSafe.py")
|
||||
python.use_auto_pack()
|
||||
@@ -0,0 +1,22 @@
|
||||
from lib.make import *
|
||||
from lib import python
|
||||
|
||||
|
||||
python.version("3.0.3")
|
||||
description("Safely add untrusted strings to HTML/XML markup.")
|
||||
maintainer("sisungo <[email protected]>")
|
||||
source_url("https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz")
|
||||
|
||||
python.builddep("$shortcut")
|
||||
|
||||
|
||||
def build():
|
||||
python.build()
|
||||
python.install()
|
||||
|
||||
on_build(build)
|
||||
|
||||
|
||||
package("MarkupSafe.py")
|
||||
python.dep("python")
|
||||
python.use_auto_pack()
|
||||
@@ -0,0 +1,22 @@
|
||||
from lib.make import *
|
||||
from lib import python
|
||||
|
||||
|
||||
python.version("6.0.3")
|
||||
description("YAML parser and emitter for Python")
|
||||
maintainer("sisungo <[email protected]>")
|
||||
source_url("https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz")
|
||||
|
||||
python.builddep("$shortcut")
|
||||
|
||||
|
||||
def build():
|
||||
python.build()
|
||||
python.install()
|
||||
|
||||
on_build(build)
|
||||
|
||||
|
||||
package("PyYAML.py")
|
||||
python.dep("python")
|
||||
python.use_auto_pack()
|
||||
@@ -0,0 +1,37 @@
|
||||
from lib.make import *
|
||||
from lib import cpp, arch
|
||||
|
||||
|
||||
version("22.1.5")
|
||||
description("A tool and a library for bi-directional translation between SPIR-V and LLVM IR")
|
||||
maintainer("sisungo <[email protected]>")
|
||||
source_url("https://github.com/KhronosGroup/SPIRV-LLVM-Translator/archive/refs/tags/v22.1.5.tar.gz")
|
||||
|
||||
builddep("shortcut/cmake")
|
||||
builddep("shortcut/c++")
|
||||
builddep(f"libllvm-dev (~22.1.0) @{arch.get_target()}")
|
||||
builddep(f"libllvm-static (~22.1.0) @{arch.get_target()}")
|
||||
builddep("pkgconf")
|
||||
builddep("spirv-headers")
|
||||
|
||||
|
||||
def build():
|
||||
cpp.cmake([
|
||||
"-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=ON",
|
||||
f"-DLLVM_DIR=/lib/{arch.get_target()}/cmake/llvm",
|
||||
f"-DSPIRV-Headers_SOURCE_DIR=/lib/{arch.get_target()}",
|
||||
f"-DCMAKE_INSTALL_PREFIX={get_prefix('libllvmspirv-dev')}",
|
||||
])
|
||||
cpp.ninja()
|
||||
cpp.ninja_install()
|
||||
|
||||
on_build(build)
|
||||
|
||||
|
||||
package("libllvmspirv-dev")
|
||||
cpp.use_auto_pack(["dev"])
|
||||
|
||||
package("llvm-spirv")
|
||||
dep("libllvm (~22.1.0) @same-arch")
|
||||
dep("libcxx @same-arch")
|
||||
cpp.use_auto_pack(["bin"])
|
||||
@@ -0,0 +1,24 @@
|
||||
from lib import arch, cpp
|
||||
from lib.make import *
|
||||
|
||||
|
||||
version("3.3")
|
||||
description("GNU perfect hash function generator")
|
||||
maintainer("sisungo <[email protected]>")
|
||||
source_url("https://ftp.gnu.org/pub/gnu/gperf/gperf-3.3.tar.gz")
|
||||
|
||||
builddep("shortcut/c++")
|
||||
builddep("shortcut/autotools")
|
||||
|
||||
|
||||
def build():
|
||||
cpp.configure()
|
||||
cpp.make()
|
||||
cpp.make_install()
|
||||
|
||||
on_build(build)
|
||||
|
||||
|
||||
package("gperf")
|
||||
dep("libcxx @same-arch")
|
||||
cpp.use_auto_pack(["bin"])
|
||||
@@ -0,0 +1,48 @@
|
||||
import os
|
||||
|
||||
import lib.cpp as cpp
|
||||
from lib.make import *
|
||||
|
||||
|
||||
version("1.3.15")
|
||||
description("Graphite is a \"smart font\" system developed specifically to handle the complexities of lesser-known languages of the world.")
|
||||
maintainer("sisungo <[email protected]>")
|
||||
source_url("https://github.com/silnrsi/graphite/releases/download/1.3.15/graphite2-1.3.15.tgz")
|
||||
|
||||
builddep("shortcut/c++")
|
||||
builddep("shortcut/cmake")
|
||||
|
||||
|
||||
def build():
|
||||
cpp.cmake([
|
||||
f"-DCMAKE_INSTALL_PREFIX={get_prefix('libgraphite-dev')}",
|
||||
])
|
||||
cpp.ninja()
|
||||
cpp.ninja_install()
|
||||
|
||||
on_build(build)
|
||||
|
||||
|
||||
def pack_dev(composer):
|
||||
composer.add_dir("bin", "bin")
|
||||
composer.add_dir("include", "include")
|
||||
composer.add_dir("share", "share")
|
||||
composer.makedir("lib")
|
||||
composer.add_dir("lib/pkgconfig", "lib/pkgconfig")
|
||||
for i in os.listdir("lib"):
|
||||
if not os.path.isfile(f"lib/{i}"):
|
||||
continue
|
||||
if ".so" in i:
|
||||
os.symlink(f"{get_prefix('libgraphite')}/lib/{i}", f"{composer.workdir}/bundle/lib/{i}")
|
||||
else:
|
||||
composer.addfile(f"lib/{i}", f"lib/{i}")
|
||||
|
||||
|
||||
package("libgraphite")
|
||||
dep("semi-libc @same-arch")
|
||||
cpp.use_auto_pack(["lib"])
|
||||
|
||||
package("libgraphite-dev")
|
||||
dep("libgraphite (same)")
|
||||
dep("semi-libc-dev @same-arch")
|
||||
on_pack(pack_dev)
|
||||
@@ -0,0 +1,123 @@
|
||||
import os
|
||||
|
||||
from lib import cpp, arch
|
||||
from lib.make import *
|
||||
|
||||
upstream_version = "3.2.25"
|
||||
|
||||
version(upstream_version)
|
||||
source_url("https://www.infradead.org/~tgr/libnl/files/libnl-3.2.25.tar.gz")
|
||||
|
||||
builddep("shortcut/c")
|
||||
builddep("shortcut/autotools")
|
||||
builddep("flex")
|
||||
builddep("bison")
|
||||
builddep(f"linux-dev @{arch.get_target()}")
|
||||
|
||||
def build():
|
||||
cpp.configure([
|
||||
"--prefix=/",
|
||||
"--sysconfdir=/var/config",
|
||||
f"--includedir={get_prefix('libnl-dev')}/include",
|
||||
])
|
||||
cpp.make()
|
||||
cpp.make_install()
|
||||
|
||||
|
||||
on_build(build)
|
||||
|
||||
SO_SUFFIX = ["", ".200", ".200.20.0"]
|
||||
|
||||
|
||||
def pack_core(composer):
|
||||
composer.makedir("lib")
|
||||
for i in SO_SUFFIX:
|
||||
composer.addfile(f"lib/libnl-3.so{i}", f"lib/libnl-3.so{i}")
|
||||
|
||||
package("libnl-core")
|
||||
dep("semi-libc @same-arch")
|
||||
on_pack(pack_core)
|
||||
|
||||
def pack_genl(composer):
|
||||
composer.makedir("lib")
|
||||
for i in SO_SUFFIX:
|
||||
composer.addfile(f"lib/libnl-genl-3.so{i}", f"lib/libnl-genl-3.so{i}")
|
||||
|
||||
package("libnl-genl")
|
||||
dep("libnl-core (same)")
|
||||
on_pack(pack_genl)
|
||||
|
||||
def pack_idiag(composer):
|
||||
composer.makedir("lib")
|
||||
for i in SO_SUFFIX:
|
||||
composer.addfile(f"lib/libnl-idiag-3.so{i}", f"lib/libnl-idiag-3.so{i}")
|
||||
|
||||
package("libnl-idiag")
|
||||
dep("libnl-core (same)")
|
||||
on_pack(pack_idiag)
|
||||
|
||||
def pack_route(composer):
|
||||
composer.makedir("lib")
|
||||
for i in SO_SUFFIX:
|
||||
composer.addfile(f"lib/libnl-route-3.so{i}", f"lib/libnl-route-3.so{i}")
|
||||
|
||||
package("libnl-route")
|
||||
dep("libnl-core (same)")
|
||||
on_pack(pack_route)
|
||||
|
||||
def pack_nf(composer):
|
||||
composer.makedir("lib")
|
||||
for i in SO_SUFFIX:
|
||||
composer.addfile(f"lib/libnl-nf-3.so{i}", f"lib/libnl-nf-3.so{i}")
|
||||
|
||||
package("libnl-nf")
|
||||
dep("libnl-core (same)")
|
||||
dep("libnl-route (same)")
|
||||
on_pack(pack_nf)
|
||||
|
||||
def pack_cli(composer):
|
||||
composer.makedir("lib")
|
||||
for i in SO_SUFFIX:
|
||||
composer.addfile(f"lib/libnl-cli-3.so{i}", f"lib/libnl-cli-3.so{i}")
|
||||
|
||||
package("libnl-cli")
|
||||
dep("libnl-core (same)")
|
||||
dep("libnl-nf (same)")
|
||||
dep("libnl-route (same)")
|
||||
on_pack(pack_cli)
|
||||
|
||||
def pack_libnl(composer):
|
||||
composer.makedir("lib")
|
||||
for soname in ["-3", "-nf-3", "-route-3", "-idiag-3", "-genl-3"]:
|
||||
if soname == "-3":
|
||||
pkgname = "libnl-core"
|
||||
elif "nf" in soname:
|
||||
pkgname = "libnl-nf"
|
||||
elif "route" in soname:
|
||||
pkgname = "libnl-route"
|
||||
elif "idiag" in soname:
|
||||
pkgname = "libnl-idiag"
|
||||
elif "genl" in soname:
|
||||
pkgname = "libnl-genl"
|
||||
for suffix in SO_SUFFIX:
|
||||
fullname = f"libnl{soname}.so{suffix}"
|
||||
os.symlink(
|
||||
f"/pkg/{pkgname}={upstream_version}@{arch.get_target()}/lib/{fullname}",
|
||||
f"{composer.workdir}/bundle/lib/{fullname}",
|
||||
)
|
||||
|
||||
package("libnl")
|
||||
dep("libnl-core (same)")
|
||||
dep("libnl-nf (same)")
|
||||
dep("libnl-route (same)")
|
||||
dep("libnl-idiag (same)")
|
||||
dep("libnl-genl (same)")
|
||||
on_pack(pack_libnl)
|
||||
|
||||
package("libnl-tools")
|
||||
dep("libnl (same)")
|
||||
cpp.use_auto_pack(["bin"])
|
||||
|
||||
package("libnl-dev")
|
||||
dep("libnl (same)")
|
||||
cpp.use_auto_pack(["dev"])
|
||||
@@ -0,0 +1,22 @@
|
||||
from lib.make import *
|
||||
from lib import python
|
||||
|
||||
|
||||
python.version("3.0")
|
||||
description("C parser in Python")
|
||||
maintainer("sisungo <[email protected]>")
|
||||
source_url("https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz")
|
||||
|
||||
python.builddep("$shortcut")
|
||||
|
||||
|
||||
def build():
|
||||
python.build()
|
||||
python.install()
|
||||
|
||||
on_build(build)
|
||||
|
||||
|
||||
package("pycparser.py")
|
||||
python.dep("python")
|
||||
python.use_auto_pack()
|
||||
@@ -0,0 +1,22 @@
|
||||
from lib.make import *
|
||||
from lib import python
|
||||
|
||||
|
||||
python.version("84.0.0")
|
||||
description("Most extensible Python build backend with support for C/C++ extension modules")
|
||||
maintainer("sisungo <[email protected]>")
|
||||
source_url("https://files.pythonhosted.org/packages/6d/44/f5da03a8ef95d369145c5bb53050e7877c9f3d312e128605fd9504829143/setuptools-84.0.0.tar.gz")
|
||||
|
||||
python.builddep("$shortcut")
|
||||
|
||||
|
||||
def build():
|
||||
python.build()
|
||||
python.install()
|
||||
|
||||
on_build(build)
|
||||
|
||||
|
||||
package("setuptools.py")
|
||||
python.dep("python")
|
||||
python.use_auto_pack()
|
||||
@@ -0,0 +1,43 @@
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from lib.make import *
|
||||
from lib import cpp, arch
|
||||
|
||||
|
||||
sdk_version = "1.4.357.0"
|
||||
|
||||
version(sdk_version)
|
||||
description("an API and commands for processing SPIR-V modules")
|
||||
maintainer("sisungo <[email protected]>")
|
||||
source_url("https://github.com/KhronosGroup/SPIRV-Tools/archive/refs/tags/vulkan-sdk-1.4.357.0.tar.gz")
|
||||
|
||||
builddep("shortcut/cmake")
|
||||
builddep("shortcut/c++")
|
||||
builddep(f"spirv-headers (={sdk_version}) @{arch.get_target()}")
|
||||
|
||||
|
||||
def build():
|
||||
cpp.cmake([
|
||||
f"-DSPIRV-Headers_SOURCE_DIR=/lib/{arch.get_target()}",
|
||||
"-DCMAKE_CXX_FLAGS=-Wno-error=switch",
|
||||
f"-DCMAKE_INSTALL_PREFIX={get_prefix('spirv-tools-dev')}",
|
||||
])
|
||||
cpp.ninja()
|
||||
cpp.ninja_install()
|
||||
try:
|
||||
os.rename("lib64", "lib")
|
||||
os.rename("lib32", "lib")
|
||||
except:
|
||||
pass
|
||||
|
||||
on_build(build)
|
||||
|
||||
|
||||
package("spirv-tools")
|
||||
dep("libcxx @same-arch")
|
||||
cpp.use_auto_pack(["bin"])
|
||||
|
||||
package("spirv-tools-dev")
|
||||
dep("spirv-tools (same)")
|
||||
cpp.use_auto_pack(["lib", "dev"])
|
||||
@@ -119,6 +119,7 @@ def cmd_build_package(package: str):
|
||||
"version": pkgver,
|
||||
"arch": pkgarch,
|
||||
"description": pkginfo[lib.make._key_description],
|
||||
"maintainers": pkginfo[lib.make._key_maintainers],
|
||||
"dependencies": pkginfo[lib.make._key_dependencies],
|
||||
"provides": pkginfo[lib.make._key_provides],
|
||||
"recommendations": pkginfo[lib.make._key_recommendations],
|
||||
|
||||
Reference in New Issue
Block a user