Compare commits

...
105 Commits
Author SHA1 Message Date
sisungo 75f756bd09 feat: add general documents
Signed-off-by: sisungo <[email protected]>
2026-08-18 14:00:25 +08:00
sisungo c1e3a8dc05 Merge pull request 'feat: add package rust' (#153) from sisungo/semios-packages:rust into master
Reviewed-on: semios/semios-packages#153
2026-08-15 21:52:09 +08:00
sisungo 79014b6738 Merge pull request 'feat: add package cargo' (#156) from sisungo/semios-packages:cargo into master
Reviewed-on: semios/semios-packages#156
2026-08-15 21:51:48 +08:00
sisungo 92377baf1a Merge pull request 'fix: bad dependencies for git' (#155) from sisungo/semios-packages:git-fixdep into master
Reviewed-on: semios/semios-packages#155
2026-08-15 21:51:22 +08:00
sisungo 63bba02bb4 Merge pull request 'feat: add package packaging-py' (#158) from sisungo/semios-packages:packaging-py into master
Reviewed-on: semios/semios-packages#158
2026-08-15 21:50:59 +08:00
sisungo f699f26f3b Merge pull request 'feat: add package installer-py' (#161) from sisungo/semios-packages:installer-py into master
Reviewed-on: semios/semios-packages#161
2026-08-15 21:50:37 +08:00
sisungo 32f128e5fb Merge pull request 'feat: add package build-py' (#160) from sisungo/semios-packages:build-py into master
Reviewed-on: semios/semios-packages#160
2026-08-15 21:49:58 +08:00
sisungo 64c313003f Merge pull request 'feat: add python packaging lib' (#159) from sisungo/semios-packages:python-pkg into master
Reviewed-on: semios/semios-packages#159
2026-08-15 21:36:27 +08:00
sisungo 633bf71cb1 feat: add package installer-py
Signed-off-by: sisungo <[email protected]>
2026-08-15 21:08:10 +08:00
sisungo 8a1a62599d feat: add package build-py
Signed-off-by: sisungo <[email protected]>
2026-08-15 21:02:38 +08:00
sisungo b368f771d2 feat: add package packaging-py
Signed-off-by: sisungo <[email protected]>
2026-08-15 20:53:42 +08:00
sisungo d05fce73dc feat: add python packaging lib
Signed-off-by: sisungo <[email protected]>
2026-08-15 20:49:02 +08:00
sisungo ed596468e4 Merge pull request 'fix: autostrip breaks hard links' (#157) from sisungo/semios-packages:fix-inode into master
Reviewed-on: semios/semios-packages#157
2026-08-15 12:49:38 +08:00
sisungo a405253451 fix: autostrip breaks hard links
Signed-off-by: sisungo <[email protected]>
2026-08-15 12:47:13 +08:00
sisungo ad3a7e8372 fix: git build dependencies are invalid
Signed-off-by: sisungo <[email protected]>
2026-08-14 21:24:28 +08:00
sisungo 21dedb3568 feat: add package cargo
Signed-off-by: sisungo <[email protected]>
2026-08-14 19:11:44 +08:00
sisungo 9c432fcabb fix: bad dependencies for git
Signed-off-by: sisungo <[email protected]>
2026-08-14 17:10:36 +08:00
sisungo fd5cde82bb feat: add package rust
Signed-off-by: sisungo <[email protected]>
2026-08-14 16:55:50 +08:00
sisungo e2094c34d7 Merge pull request 'feat: change llvm triple to unknown- vendor' (#154) from sisungo/semios-packages:llvm-fix into master
Reviewed-on: semios/semios-packages#154
2026-08-14 10:09:12 +08:00
sisungo b09d172ff9 feat: change llvm triple to unknown- vendor
Signed-off-by: sisungo <[email protected]>
2026-08-14 10:08:12 +08:00
sisungo 89744adb38 Merge pull request 'feat: add package htop' (#143) from sisungo/semios-packages:htop into master
Reviewed-on: semios/semios-packages#143
2026-08-10 11:38:10 +08:00
sisungo fc753703c4 feat: add package htop
Signed-off-by: sisungo <[email protected]>
2026-08-10 11:18:38 +08:00
sisungo 132ed2d8b3 Merge pull request 'feat: add package maintainers' (#142) from sisungo/semios-packages:maintainers into master
Reviewed-on: semios/semios-packages#142
2026-08-10 09:54:41 +08:00
sisungo 41d0b79083 feat: add package maintainers
Signed-off-by: sisungo <[email protected]>
2026-08-10 09:53:45 +08:00
sisungo 232aa0b690 Merge pull request 'feat: add package packie' (#54) from sisungo/semios-packages:packie into master
Reviewed-on: semios/semios-packages#54
2026-08-09 22:32:19 +08:00
sisungo 65dd900ea4 feat: add package packie
Signed-off-by: sisungo <[email protected]>
2026-08-09 21:23:01 +08:00
sisungo ea440a2465 Merge pull request 'fix: llvm build configuration has invalid fields' (#141) from sisungo/semios-packages:llvmfix into master
Reviewed-on: semios/semios-packages#141
2026-08-09 14:22:52 +08:00
sisungo e7d77b63b3 fix: llvm build configuration has invalid fields
Signed-off-by: sisungo <[email protected]>
2026-08-09 13:01:40 +08:00
sisungo 2f7053488b Merge pull request 'feat: add package bash' (#135) from sisungo/semios-packages:bash into master
Reviewed-on: semios/semios-packages#135
2026-08-08 10:26:41 +08:00
sisungo cb9842b371 Merge pull request 'feat: add description to packages' (#140) from sisungo/semios-packages:description into master
Reviewed-on: semios/semios-packages#140
2026-08-08 10:20:03 +08:00
sisungo 25525068bd Merge pull request 'fix: atombuild delayed copying resolv.conf' (#139) from sisungo/semios-packages:atomfix into master
Reviewed-on: semios/semios-packages#139
2026-08-08 10:19:48 +08:00
sisungo 2a7def094d feat: add package bash
Signed-off-by: sisungo <[email protected]>
2026-08-08 01:45:44 +08:00
sisungo 91b153d21b feat: add description to packages
Signed-off-by: sisungo <[email protected]>
2026-08-08 01:37:30 +08:00
sisungo fb5f90e0bb fix: atombuild delayed copying resolv.conf
Signed-off-by: sisungo <[email protected]>
2026-08-04 21:26:10 +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 65a884ddd4 Merge pull request 'feat (lib): add meson/cmake shortcuts' (#130) from sisungo/semios-packages:shortcut_meson into master
Reviewed-on: semios/semios-packages#130
2026-07-15 16:27:49 +08:00
sisungo 8c41ed811f Merge pull request 'feat: add package meson' (#129) from sisungo/semios-packages:meson into master
Reviewed-on: semios/semios-packages#129
2026-07-15 16:24:09 +08:00
sisungo e421add41d feat (lib): add meson/cmake shortcuts
Signed-off-by: sisungo <[email protected]>
2026-07-14 15:58:55 +08:00
sisungo 1b2f8a2295 feat: add package meson
Signed-off-by: sisungo <[email protected]>
2026-07-14 15:48:08 +08:00
sisungo 2b3204cb9a feat: add package alsa-utils
Signed-off-by: sisungo <[email protected]>
2026-07-12 15:05:03 +08:00
sisungo 02cf225a7e Merge pull request 'feat: add package cmake' (#72) from sisungo/semios-packages:cmake into master
Reviewed-on: semios/semios-packages#72
2026-07-11 22:31:12 +08:00
sisungo 8d99e1d12a feat: add package cmake
Signed-off-by: sisungo <[email protected]>
2026-07-11 16:17:17 +08:00
sisungo 89f0038e99 Merge pull request 'feat: add package curl' (#77) from sisungo/semios-packages:curl into master
Reviewed-on: semios/semios-packages#77
2026-07-11 09:20:49 +08:00
sisungo 0743d92327 feat: add package curl
Signed-off-by: sisungo <[email protected]>
2026-07-11 09:14:55 +08:00
sisungo 7e66f0669d Merge pull request 'feat: add package libpsl' (#78) from sisungo/semios-packages:libpsl into master
Reviewed-on: semios/semios-packages#78
2026-07-11 08:45:25 +08:00
sisungo 557aae6cb5 Merge pull request 'feat: add package bison' (#109) from sisungo/semios-packages:bison into master
Reviewed-on: semios/semios-packages#109
2026-07-11 08:36:12 +08:00
sisungo 178f5820e7 Merge pull request 'feat: add package gnu-m4' (#110) from sisungo/semios-packages:gnu-m4 into master
Reviewed-on: semios/semios-packages#110
2026-07-11 08:33:02 +08:00
sisungo aded8393fe Merge pull request 'feat: update libgcc-compat to 0.2.0' (#117) from sisungo/semios-packages:libgcc-compat-2 into master
Reviewed-on: semios/semios-packages#117
2026-07-11 08:32:46 +08:00
sisungo ea6c4592e9 Merge pull request 'feat: add xz and bz2 to atom basedep' (#118) from sisungo/semios-packages:add_xz_bz into master
Reviewed-on: semios/semios-packages#118
2026-07-11 08:32:31 +08:00
sisungo 6abf94ba6c feat: add package libpsl
Signed-off-by: sisungo <[email protected]>
2026-07-11 05:59:50 +08:00
sisungo a903430180 feat: add xz and bz2 to atom basedep
Signed-off-by: sisungo <[email protected]>
2026-07-11 05:46:14 +08:00
sisungo b3d71e0a3a feat: add package gnu-m4
Signed-off-by: sisungo <[email protected]>
2026-07-11 05:45:21 +08:00
sisungo 6dd8c911a1 feat: update libgcc-compat to 0.2.0
Signed-off-by: sisungo <[email protected]>
2026-07-10 16:30:31 +08:00
sisungo 5c22c479bd Merge pull request 'fix: aws-lc pkg-config is invalid' (#116) from sisungo/semios-packages:aws-lc-a into master
Reviewed-on: semios/semios-packages#116
2026-07-10 16:05:55 +08:00
sisungo 6704ec11ea fix: aws-lc pkg-config is invalid
Signed-off-by: sisungo <[email protected]>
2026-07-10 16:00:19 +08:00
sisungo 8c58073118 Merge pull request 'feat: update multiple packages' (#115) from sisungo/semios-packages:update-pkgs into master
Reviewed-on: semios/semios-packages#115
2026-07-10 09:12:51 +08:00
sisungo eea8869aa5 feat: add package bison
Signed-off-by: sisungo <[email protected]>
2026-07-10 03:05:02 +08:00
sisungo 7e888b8408 feat: update multiple packages
Signed-off-by: sisungo <[email protected]>
2026-07-10 00:59:02 +08:00
sisungo 5729463e2e Merge pull request 'feat: add package less' (#113) from sisungo/semios-packages:less into master
Reviewed-on: semios/semios-packages#113
2026-07-08 20:19:36 +08:00
sisungo 9dc11ca666 Merge pull request 'feat: support cleaning without removing artifacts' (#114) from sisungo/semios-packages:clean-no-artifacts into master
Reviewed-on: semios/semios-packages#114
2026-07-08 20:19:26 +08:00
sisungo e567c27db8 feat: support cleaning without removing artifacts
Signed-off-by: sisungo <[email protected]>
2026-07-08 18:57:44 +08:00
sisungo 4f4ec0468a Merge pull request 'feat: add pkgmanifest recommendations support' (#111) from sisungo/semios-packages:recommends into master
Reviewed-on: semios/semios-packages#111
2026-07-08 17:19:54 +08:00
sisungo ab71a8ae75 Merge pull request 'feat: support adding package to repository' (#112) from sisungo/semios-packages:repo_manage into master
Reviewed-on: semios/semios-packages#112
2026-07-08 17:19:39 +08:00
sisungo 07c93dac59 feat: add package less
Signed-off-by: sisungo <[email protected]>
2026-07-08 17:15:21 +08:00
sisungo 5dece05466 feat: support adding package to repository
Signed-off-by: sisungo <[email protected]>
2026-07-08 16:42:22 +08:00
sisungo c47d1390bc Merge pull request 'feat: add support of atom builds' (#55) from sisungo/semios-packages:atom-build into master
Reviewed-on: semios/semios-packages#55
2026-07-08 13:00:12 +08:00
sisungo b0185d379b feat: add pkgmanifest recommendations support
Signed-off-by: sisungo <[email protected]>
2026-07-08 01:00:53 +08:00
sisungo bd16d6d218 feat: add support of atom builds
Signed-off-by: sisungo <[email protected]>
2026-07-08 00:48:59 +08:00
sisungo d06120bdeb Merge pull request 'fix: pkg-config link is not defined' (#108) from sisungo/semios-packages:pkgconf-fix into master
Reviewed-on: semios/semios-packages#108
2026-07-07 16:12:48 +08:00
sisungo 490c81a6d9 Merge pull request 'fix: bzip2 soname is invalid' (#107) from sisungo/semios-packages:bz2-fix into master
Reviewed-on: semios/semios-packages#107
2026-07-07 16:12:29 +08:00
sisungo b9533a5c6e fix: pkg-config link is not defined
Signed-off-by: sisungo <[email protected]>
2026-07-07 16:12:17 +08:00
sisungo 37da18439b fix: bzip2 soname is invalid
Signed-off-by: sisungo <[email protected]>
2026-07-07 16:10:33 +08:00
sisungo aaab087b4d Merge pull request 'feat: add package git' (#83) from sisungo/semios-packages:git into master
Reviewed-on: semios/semios-packages#83
2026-07-07 12:29:28 +08:00
sisungo e6fb25c31b Merge pull request 'feat: support hard links when packaging' (#106) from sisungo/semios-packages:hardlinks into master
Reviewed-on: semios/semios-packages#106
2026-07-07 12:29:15 +08:00
sisungo 4f06471aa2 feat: support hard links when packaging
Signed-off-by: sisungo <[email protected]>
2026-07-07 12:06:00 +08:00
sisungo f6efa6fd66 Merge pull request 'feat: add package c-ares' (#79) from sisungo/semios-packages:c-ares into master
Reviewed-on: semios/semios-packages#79
2026-07-07 12:00:02 +08:00
sisungo e92240a211 Merge pull request 'feat: add package byacc' (#103) from sisungo/semios-packages:byacc into master
Reviewed-on: semios/semios-packages#103
2026-07-07 11:58:20 +08:00
sisungo c530c16fbf Merge pull request 'feat: add package bc' (#105) from sisungo/semios-packages:bc into master
Reviewed-on: semios/semios-packages#105
2026-07-07 11:58:11 +08:00
sisungo e24723a940 Merge pull request 'feat: add package patch' (#104) from sisungo/semios-packages:patch into master
Reviewed-on: semios/semios-packages#104
2026-07-07 11:57:59 +08:00
sisungo cf9d57202b Merge pull request 'feat: add package flex' (#100) from sisungo/semios-packages:flex into master
Reviewed-on: semios/semios-packages#100
2026-07-07 11:57:43 +08:00
sisungo c0e9573a41 feat: add package bc
Signed-off-by: sisungo <[email protected]>
2026-07-07 11:16:49 +08:00
sisungo 23394f785e feat: add package patch
Signed-off-by: sisungo <[email protected]>
2026-07-07 10:53:07 +08:00
sisungo 3994b0d9a3 feat: add package flex
Signed-off-by: sisungo <[email protected]>
2026-07-07 08:04:26 +08:00
sisungo 3b78c450c5 feat: add package byacc
Signed-off-by: sisungo <[email protected]>
2026-07-07 08:03:32 +08:00
sisungo 0075495c78 Merge pull request 'feat: add package gnu-sed' (#96) from sisungo/semios-packages:gnu-sed into master
Reviewed-on: semios/semios-packages#96
2026-07-06 21:34:13 +08:00
sisungo f0147fafac Merge pull request 'feat: add package sed' (#98) from sisungo/semios-packages:sed2 into master
Reviewed-on: semios/semios-packages#98
2026-07-06 21:34:00 +08:00
sisungo a34f41f1fe Merge pull request 'feat: add package grep' (#99) from sisungo/semios-packages:grep into master
Reviewed-on: semios/semios-packages#99
2026-07-06 21:32:55 +08:00
sisungo db6f7fa8ad Merge pull request 'feat: add package pcre2' (#97) from sisungo/semios-packages:pcre2 into master
Reviewed-on: semios/semios-packages#97
2026-07-06 21:30:21 +08:00
sisungo 0178b36988 feat: add package sed
Signed-off-by: sisungo <[email protected]>
2026-07-06 20:05:16 +08:00
sisungo 57578dcb05 feat: add package pcre2
Signed-off-by: sisungo <[email protected]>
2026-07-06 19:01:54 +08:00
sisungo 9f623be2e5 feat: add package gnu-sed
Signed-off-by: sisungo <[email protected]>
2026-07-06 15:07:21 +08:00
sisungo b0b40ef774 feat: add package git
Signed-off-by: sisungo <[email protected]>
2026-07-04 11:27:01 +08:00
sisungo 3a4307f811 feat: add package c-ares
Signed-off-by: sisungo <[email protected]>
2026-07-03 12:32:14 +08:00
95 changed files with 3516 additions and 519 deletions
+24
View File
@@ -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/>
+47
View File
@@ -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.
+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
+37 -4
View File
@@ -1,6 +1,8 @@
import os
import stat
import subprocess
import tempfile
import shutil
from lib import common
@@ -13,6 +15,8 @@ def _is_elf(filepath):
def autostrip(composer):
processed_inodes = {}
for ent in common.treedir(composer.workdir):
if not ent.is_file(follow_symlinks=False):
continue
@@ -20,7 +24,36 @@ def autostrip(composer):
continue
if not _is_elf(ent.path):
continue
oldperm = stat.S_IMODE(os.stat(ent.path).st_mode)
os.chmod(ent.path, 0o777)
subprocess.run([strip, ent.path], check=True)
os.chmod(ent.path, oldperm)
stat_info = os.stat(ent.path)
inode_key = (stat_info.st_dev, stat_info.st_ino)
if inode_key in processed_inodes:
continue
processed_inodes[inode_key] = True
oldperm = stat.S_IMODE(stat_info.st_mode)
try:
with tempfile.NamedTemporaryFile(mode='wb', delete=False) as tmp_file:
tmp_path = tmp_file.name
shutil.copy2(ent.path, tmp_path)
os.chmod(tmp_path, 0o777)
subprocess.run([strip, tmp_path], check=True)
with open(tmp_path, 'rb') as tmp_file:
stripped_data = tmp_file.read()
with open(ent.path, 'r+b') as original_file:
original_file.truncate(0)
original_file.write(stripped_data)
original_file.flush()
os.fsync(original_file.fileno())
os.chmod(ent.path, oldperm)
os.unlink(tmp_path)
except Exception as e:
if 'tmp_path' in locals() and os.path.exists(tmp_path):
os.unlink(tmp_path)
raise RuntimeError(f"Failed to strip {ent.path}: {e}") from e
+6 -6
View File
@@ -4,16 +4,16 @@ from . import packie
all: dict[str, dict[str, str]] = {
"aarch64-semios-linux": {
"CC": "clang -target aarch64-semios-linux-musl",
"CXX": "clang++ -target aarch64-semios-linux-musl",
"CC": "clang -target aarch64-unknown-linux-musl",
"CXX": "clang++ -target aarch64-unknown-linux-musl",
},
"x86_64-semios-linux": {
"CC": "clang -target x86_64-semios-linux-musl",
"CXX": "clang++ -target x86_64-semios-linux-musl",
"CC": "clang -target x86_64-unknown-linux-musl",
"CXX": "clang++ -target x86_64-unknown-linux-musl",
},
"riscv64-semios-linux": {
"CC": "clang -target riscv64-semios-linux-musl",
"CXX": "clang++ -target riscv64-semios-linux-musl",
"CC": "clang -target riscv64-unknown-linux-musl",
"CXX": "clang++ -target riscv64-unknown-linux-musl",
},
}
_target: str = packie.host_arch()
+138
View File
@@ -0,0 +1,138 @@
import os
import shutil
import subprocess
from . import packie
BASE_REQUIREMENTS = [
# Basic packages for running shell scripts
"mksh",
"coreutils",
"findutils",
"diffutils",
# Packages for running `semios-packages` scripts
"python",
"packie",
"zstd",
"libarchive-tools",
# Packages for building packages that require patching
"patch",
# Packages for downloading various formats of tarballs
"libz-ng",
"liblzma",
"libbzip2",
# Basic libraries
"sqlite",
"libgcc-compat",
"libcxx",
"semi-libc",
# Networking
"ca-certificates",
"certutil",
"aws-lc-libssl",
"aws-lc-tools",
]
def _prepare_build_env_base_files(root: str):
# Create root directory
os.makedirs(root, exist_ok=True)
# Create var, run and tmp
os.mkdir(f"{root}/var")
os.mkdir(f"{root}/var/tmp")
os.mkdir(f"{root}/var/run")
os.mkdir(f"{root}/tmp")
os.mkdir(f"{root}/run")
# Copy repository config files
os.makedirs(f"{root}/var/db/packie")
shutil.copytree("/var/config/packie/repos.d", f"{root}/var/config/packie/repos.d")
# Create directories for kernel pseudo filesystems
os.mkdir(f"{root}/dev")
os.mkdir(f"{root}/sys")
os.mkdir(f"{root}/proc")
# Create home directory of root (some scripts may require it)
os.makedirs(f"{root}/home/root")
# Copy DNS config
os.makedirs(f"{root}/etc", exist_ok=True)
shutil.copy2("/etc/resolv.conf", f"{root}/etc/resolv.conf")
def prepare_build_env(root: str, extreq: list[str] = []):
# Skip if the environment is already initialized
if os.path.exists(f"{root}/.INIT"):
return
try:
shutil.rmtree(root)
except:
pass
# Prepare basic filesystem hierarchy
_prepare_build_env_base_files(root)
# Install packages
packie.chroot_update(root)
packie.chroot_install(root, BASE_REQUIREMENTS + extreq)
# Refresh certificates
enter_build_env(root, ["certutil", "refresh"])
# Create initialized tag
with open(f"{root}/.INIT", "wt+") as file:
file.write("OK")
def enter_build_env(root: str, cmd: list[str], chdir: str = "/"):
reserve_env = ["https_proxy", "http_proxy", "all_proxy"]
reserve_env_args = []
for i in reserve_env:
if os.environ.get(i):
reserve_env_args += ["--setenv", i, os.environ[i]]
subprocess.run(
[
"bwrap",
"--bind", root, "/",
"--unshare-pid",
"--unshare-user",
"--uid", "0",
"--gid", "0",
"--dev", "/dev",
"--bind", "/sys", "/sys",
"--proc", "/proc",
"--clearenv",
"--setenv", "HOME", "/home/root",
"--setenv", "PATH", "/bin",
"--setenv", "SEMIOS_PKGBUILD_IN_ATOMIC", "1",
"--setenv", "USER", "root",
"--setenv", "LOGNAME", "root",
"--chdir",
chdir,
]
+ reserve_env_args
+ cmd
)
def copy_pkgbuild_tree(repo_root: str, pkgname: str, build_env_root: str):
build_dir = f"{build_env_root}/Atom"
if os.path.exists(build_dir):
return
os.mkdir(build_dir)
shutil.copytree(f"{repo_root}/hooks", f"{build_dir}/hooks")
shutil.copytree(f"{repo_root}/lib", f"{build_dir}/lib")
shutil.copy2(f"{repo_root}/x", f"{build_dir}/x")
shutil.copy2(f"{repo_root}/x.py", f"{build_dir}/x.py")
os.makedirs(f"{build_dir}/packages/{pkgname}")
for i in os.listdir(f"{repo_root}/packages/{pkgname}"):
srcpath = f"{repo_root}/packages/{pkgname}/{i}"
dstpath = f"{build_dir}/packages/{pkgname}/{i}"
if i in ["target", "__pycache__"]:
continue
if os.path.isdir(srcpath):
shutil.copytree(srcpath, dstpath)
elif os.path.isfile(srcpath):
shutil.copy2(srcpath, dstpath)
+16 -10
View File
@@ -29,6 +29,15 @@ def cmake(rem: list[str] = []):
)
def _move_install():
subprocess.run(["sh", "-c", "cp -r ./pkg/*@*/* . 2>/dev/null || true"], check=False)
subprocess.run(
["sh", "-c", "cp -r ./usr/local/* . 2>/dev/null || true"], check=False
)
subprocess.run(["sh", "-c", "cp -r ./usr/* . 2>/dev/null || true"], check=False)
subprocess.run(["rm", "-rf", "./pkg", "./usr"], check=False)
def make(rem: list[str] = []):
subprocess.run(["make", f"-j{os.cpu_count()}"] + rem, check=True)
@@ -44,26 +53,21 @@ def make_install(rem: list[str] | None = None, chdir: bool = True, move: bool =
if rem is None and chdir:
os.chdir("../cpp_install")
if chdir and move:
subprocess.run(
["sh", "-c", "cp -r ./pkg/*@*/* . 2>/dev/null || true"], check=False
)
subprocess.run(
["sh", "-c", "cp -r ./usr/local/* . 2>/dev/null || true"], check=False
)
subprocess.run(["sh", "-c", "cp -r ./usr/* . 2>/dev/null || true"], check=False)
subprocess.run(["rm", "-rf", "./pkg", "./usr"], check=False)
_move_install()
def ninja(rem: list[str] = []):
subprocess.run(["ninja"] + rem, check=True)
def ninja_install(rem: list[str] = [], chdir: bool = True):
def ninja_install(rem: list[str] = [], chdir: bool = True, move: 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"])
if chdir and move:
_move_install()
def meson_setup(rem: list[str] = []):
@@ -74,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)
@@ -83,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):
+46 -5
View File
@@ -7,10 +7,12 @@ from . import pkgcomposer, sources
_key_global = "@global"
_key_version = "version"
_key_description = "description"
_key_maintainers = "maintainers"
_key_on_pack = "on_pack"
_key_arch_any = "arch_any"
_key_links = "links"
_key_dependencies = "dependencies"
_key_recommendations = "recommendations"
_key_provides = "provides"
_current_pkgname: str = _key_global
@@ -18,15 +20,40 @@ _pkginfo: dict[str, dict[str, typing.Any]] = {
_key_global: {
_key_links: [],
_key_dependencies: [],
_key_maintainers: [],
_key_provides: [],
_key_recommendations: [],
},
}
_supported_arch: typing.Callable[[str], bool] = lambda x: True
_on_build: typing.Callable[[], None] | None = None
_in_atombuild = False
_builddep: list[str] = []
_blocked_hooks: list[str] = []
def builddep(s: str):
global _builddep
if s == "shortcut/c":
_builddep += ["semi-libc-dev", "clang", "llvm", "lld"]
elif s == "shortcut/c++":
builddep("shortcut/c")
_builddep += ["libcxx-dev"]
elif s == "shortcut/autotools":
_builddep += ["gnu-make", "gnu-sed", "awk", "grep"]
elif s == "shortcut/rust":
builddep("shortcut/c")
_builddep += ["cargo", "rustc"]
elif s == "shortcut/cmake":
_builddep += ["cmake", "ninja"]
elif s == "shortcut/meson":
_builddep += ["meson", "ninja"]
else:
_builddep += [s]
def package(s: str):
global _current_pkgname
_current_pkgname = s
@@ -44,6 +71,10 @@ def description(s: str):
_pkginfo[_current_pkgname][_key_description] = s
def maintainer(s: str):
_pkginfo[_current_pkgname][_key_maintainers] += [s]
def arch_any():
_pkginfo[_current_pkgname][_key_arch_any] = True
@@ -54,12 +85,20 @@ def provide(s: str):
]
def dep(s: str):
_pkginfo[_current_pkgname][_key_dependencies] += [
def _translate_dep_spec(s: str) -> str:
return (
s.replace("(same)", "(same-version) @same-arch")
.replace("(same-version)", f"(={_pkginfo[_current_pkgname][_key_version]})")
.replace("@same-arch", f"@{arch.get_target()}")
]
)
def dep(s: str):
_pkginfo[_current_pkgname][_key_dependencies] += [_translate_dep_spec(s)]
def recommend(s: str):
_pkginfo[_current_pkgname][_key_recommendations] += [_translate_dep_spec(s)]
def link(src: str, dst: str, default: bool = True):
@@ -103,8 +142,10 @@ def block_hook(hook: str):
def source_url(url: str):
sources.source_url(url)
if not _in_atombuild:
sources.source_url(url)
def source_git(url: str, branch: str | None = None):
sources.source_git(url, branch)
if not _in_atombuild:
sources.source_git(url, branch)
+28 -2
View File
@@ -1,11 +1,37 @@
import subprocess
import os
import subprocess
PACKIE_EXEC = os.getenv("PACKIE", "packie")
def host_arch() -> str:
result = subprocess.run(
[PACKIE_EXEC, "print", "profile.host_arch"],
check=True, capture_output=True,
check=True,
capture_output=True,
)
return result.stdout.decode().strip()
def chroot_update(root: str):
subprocess.run([PACKIE_EXEC, "--chroot", root, "update"], check=True)
def chroot_install(root: str, requirements: list[str]):
subprocess.run(
[PACKIE_EXEC, "--chroot", root, "install", "--yes"] + requirements, check=True
)
def update():
subprocess.run([PACKIE_EXEC, "update"], check=True)
def install(requirements: list[str]):
subprocess.run([PACKIE_EXEC, "install", "--yes"] + requirements, check=True)
def repo_add(repo: str, pkgfile: str):
subprocess.run(
[PACKIE_EXEC, "repo-admin", repo, "--add-package", pkgfile], check=True
)
+23 -11
View File
@@ -1,19 +1,13 @@
import json
import os
import shutil
import subprocess
import sys
if sys.version_info >= (3, 14):
_archive_format = "zstdtar"
_archive_suffix = ".tar.zst"
else:
_archive_format = "gztar"
_archive_suffix = ".tar.gz"
class PkgComposer:
def __init__(self, pkgfile: str):
self.pkgfile = pkgfile
self.pkgfile = os.path.abspath(pkgfile)
def setworkdir(self, workdir: str):
self.workdir = workdir
@@ -32,8 +26,16 @@ class PkgComposer:
f.write("\n")
def compose(self):
shutil.make_archive(self.pkgfile, _archive_format, self.workdir)
shutil.move(self.pkgfile + _archive_suffix, self.pkgfile)
subprocess.run(
[
"tar", "cpf", f"{self.pkgfile}.tar",
"-C", self.workdir,
"--numeric-owner",
".",
],
check=True,
)
subprocess.run(["zstd", "--rm", "-f", f"{self.pkgfile}.tar", "-o", self.pkgfile], check=True)
def makedir(self, name: str):
os.mkdir(f"{self.workdir}/bundle/{name}")
@@ -45,4 +47,14 @@ class PkgComposer:
shutil.copy2(src, f"{self.workdir}/bundle/{dst}", follow_symlinks=False)
def add_dir(self, src: str, dst: str, merge: bool = False):
shutil.copytree(src, f"{self.workdir}/bundle/{dst}", dirs_exist_ok=merge)
target = f"{self.workdir}/bundle/{dst}"
if not os.path.exists(src):
raise FileNotFoundError(f"Source directory not found: {src}")
os.makedirs(os.path.dirname(target), exist_ok=True)
if merge and os.path.exists(target) and os.path.isdir(target):
cmd = ["cp", "-a", f"{src}/.", target]
else:
cmd = ["cp", "-a", src, target]
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode != 0:
raise RuntimeError(f"cp command failed: {result.stderr}")
+62
View File
@@ -0,0 +1,62 @@
import os
import shutil
import subprocess
from . import make, arch
PY3_VERSION = "3.14"
def build():
subprocess.run(["python3", "-m", "build", "."], check=True)
def install():
if os.path.exists("../pyinstall"):
shutil.rmtree("../pyinstall")
for i in os.listdir("dist"):
if not i.endswith(".whl"):
continue
subprocess.run(["python3", "-m", "installer", f"--destdir=../pyinstall", f"dist/{i}"], check=True)
os.chdir("../pyinstall")
while len(os.listdir(".")) == 1:
os.chdir(os.listdir(".")[0])
def version(s: str):
make.version(f"{s}+python{PY3_VERSION}")
def _depcommon(s: str):
if s == "python":
return f"python (~{PY3_VERSION}.0) @{arch.get_target()}"
elif ".py" in s:
if ")" in s:
return s.replace(")", f", +python{PY3_VERSION})")
else:
return s.replace(".py", f" (+python{PY3_VERSION})")
else:
return None
def builddep(s: str):
if s == "$shortcut":
builddep("python")
builddep("build.py")
builddep("installer.py")
elif _depcommon(s):
make.builddep(_depcommon(s))
else:
raise RuntimeError("unrecognized python dep")
def dep(s: str):
if _depcommon(s):
make.dep(_depcommon(s))
else:
raise RuntimeError("unrecognized python dep")
def _auto_pack(composer):
base = f"lib/python{PY3_VERSION}/site-packages"
composer.makedirs(base)
for i in os.listdir("."):
composer.add_dir(i, f"{base}/{i}")
def use_auto_pack():
make.on_pack(_auto_pack)
+4
View File
@@ -5,8 +5,12 @@ from lib import rust
from lib.make import *
version("0.10.9")
description("Modern, portable and fast implementation of service supervisor and the init daemon.")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/sisungo/airup/archive/refs/tags/v0.10.9.tar.gz")
builddep("shortcut/rust")
def build():
shutil.copy2("../../build_manifest.json", "build_manifest.json")
+6
View File
@@ -4,8 +4,14 @@ from lib.make import *
upstream_version = "1.2.16.1"
version(upstream_version)
description("audio and MIDI functionality for the Linux operating system")
maintainer("sisungo <[email protected]>")
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():
cpp.configure(
+37
View File
@@ -0,0 +1,37 @@
from lib.make import *
from lib import cpp
version("1.2.16")
description("audio and MIDI functionality for the Linux operating system")
maintainer("sisungo <[email protected]>")
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)
+6
View File
@@ -4,8 +4,14 @@ from lib import cpp
from lib.make import *
version("2026.4.26")
description("The One True Awk programming language")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/onetrueawk/awk/archive/refs/tags/20260426.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep("bison")
def build():
cpp.make()
+21 -3
View File
@@ -4,15 +4,32 @@ import lib.cpp as cpp
from lib.make import *
version("5.1.0")
description("a general-purpose cryptographic library maintained by the AWS Cryptography team")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/aws/aws-lc/archive/refs/tags/v5.1.0.tar.gz")
builddep("shortcut/c")
def _fix_pc(name, prefix):
filepath = f"lib/pkgconfig/{name}.pc"
with open(filepath, "r") as f:
content = f.read()
new_content = content.replace("prefix=/", f"prefix={prefix}").replace("libdir=${prefix}/usr/lib", "libdir=${prefix}/lib")
with open(filepath, "w") as f:
f.write(new_content)
def build():
cpp.cmake(["-DBUILD_SHARED_LIBS=1"])
cpp.cmake(
[
"-DBUILD_SHARED_LIBS=1",
"-DCMAKE_INSTALL_PREFIX=/",
f"-DCMAKE_INSTALL_INCLUDEDIR={get_prefix('aws-lc-dev')}/include",
]
)
cpp.ninja()
cpp.ninja_install()
os.chdir("usr")
_fix_pc("libssl", get_prefix("aws-lc-libssl"))
_fix_pc("libcrypto", get_prefix("aws-lc-libcrypto"))
on_build(build)
@@ -41,6 +58,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"])
+85
View File
@@ -0,0 +1,85 @@
import os
from lib.make import *
from lib import cpp
version("5.3")
description("the Bourne Again SHell")
maintainer("sisungo <[email protected]>")
source_url("https://ftp.gnu.org/gnu/bash/bash-5.3.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"libncurses-dev @{arch.get_target()}")
def build():
cpp.configure([
f"--prefix={get_prefix('bash')}",
f"--datarootdir={get_prefix('bash-doc')}/share",
f"--localedir={get_prefix('bash')}/share/locale",
"--enable-alias",
"--enable-alt-array-implementation",
"--enable-arith-for-command",
"--enable-array-variables",
"--enable-bang-history",
"--enable-brace-expansion",
"--enable-casemod-attributes",
"--enable-casemod-expansions",
"--enable-command-timing",
"--enable-cond-command",
"--enable-cond-regexp",
"--enable-coprocesses",
"--enable-directory-stack",
"--enable-dparen-arithmetic",
"--enable-extended-glob",
"--enable-function-import",
"--enable-glob-asciiranges-default",
"--enable-help-builtin",
"--enable-history",
"--enable-job-control",
"--enable-multibyte",
"--enable-net-redirections",
"--enable-process-substitution",
"--enable-progcomp",
"--enable-prompt-string-decoding",
"--enable-readline",
"--enable-restricted",
"--enable-select",
"--enable-separate-helpfiles",
"--enable-single-help-strings",
"--enable-translatable-strings",
"--without-bash-malloc",
])
cpp.make()
cpp.make_install()
on_build(build)
def pack_bash(composer):
composer.add_dir("bin", "bin")
composer.makedir("lib")
composer.add_dir("lib/bash", "lib/bash")
os.remove(f"{composer.workdir}/bundle/lib/bash/loadables.h")
os.remove(f"{composer.workdir}/bundle/lib/bash/Makefile.inc")
os.remove(f"{composer.workdir}/bundle/lib/bash/Makefile.sample")
composer.makedir("share")
composer.add_dir("share/locale", "share/locale")
def pack_doc(composer):
composer.makedir("share")
composer.add_dir("share/bash", "share/bash")
composer.add_dir("share/doc", "share/doc")
composer.add_dir("share/info", "share/info")
composer.add_dir("share/man", "share/man")
package("bash")
dep("semi-libc @same-arch")
dep("libncurses @same-arch")
on_pack(pack_bash)
package("bash-dev")
dep("bash (same)")
cpp.use_auto_pack(["dev"])
package("bash-doc")
on_pack(pack_doc)
+34
View File
@@ -0,0 +1,34 @@
from lib import arch, cpp
from lib.make import *
version("7.0.3")
description("An implementation of the POSIX bc calculator with GNU extensions and dc")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/gavinhoward/bc/releases/download/7.0.3/bc-7.0.3.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
predefined_build_type = "GDH"
if "-linux" in arch.get_target():
predefined_build_type = "GNU"
cpp.configure(
[
"--disable-nls",
"--opt=3",
f"--predefined-build-type={predefined_build_type}",
f"--prefix={get_prefix('bc')}",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("bc")
dep("semi-libc @same-arch")
provide("dc")
cpp.use_auto_pack(["bin"])
+38
View File
@@ -0,0 +1,38 @@
from lib import cpp
from lib.make import *
version("3.7.91")
description("a general-purpose parser generator that converts an annotated context-free grammar into a deterministic LR or generalized LR (GLR) parser employing LALR(1) parser tables")
maintainer("sisungo <[email protected]>")
source_url("https://alpha.gnu.org/gnu/bison/bison-3.7.91.tar.xz")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep("gnu-m4")
block_hook("autolink")
def build():
cpp.configure(["--enable-relocatable"])
cpp.make()
cpp.make_install()
on_build(build)
def pack_bison(composer):
composer.add_dir("bin", "bin")
composer.add_dir("lib", "lib")
composer.makedir("share")
composer.add_dir("share/aclocal", "share/aclocal")
composer.add_dir("share/bison", "share/bison")
package("bison")
dep("semi-libc @same-arch")
dep("gnu-m4")
on_pack(pack_bison)
link("bin/bison", "/bin/bison")
link("bin/yacc", "/bin/yacc", default=False)
+6
View File
@@ -6,8 +6,14 @@ from lib.make import *
VERSION = "2026.6.19"
version(VERSION)
description("The BSD make utility ported to non-BSD systems")
maintainer("sisungo <[email protected]>")
source_url("https://www.crufty.net/ftp/pub/sjg/bmake-20260619.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep("bc")
def build():
cpp.configure(
+2 -1
View File
@@ -4,6 +4,8 @@ from lib import cpp
from lib.make import *
version("1.2.0")
description("Brotli compression format")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/google/brotli/archive/refs/tags/v1.2.0.tar.gz")
@@ -11,7 +13,6 @@ def build():
cpp.cmake()
cpp.ninja()
cpp.ninja_install()
os.chdir("usr")
on_build(build)
+24
View File
@@ -0,0 +1,24 @@
from lib.make import *
from lib import python
python.version("1.5.0")
description("A simple, correct Python build frontend")
maintainer("sisungo <[email protected]>")
source_url("https://files.pythonhosted.org/packages/78/e0/df5e171f685f82f37b12e1f208064e24244911079d7b767447d1af7e0d70/build-1.5.0.tar.gz")
python.builddep("$shortcut")
python.builddep("packaging.py (>=25.0)")
def build():
python.build()
python.install()
on_build(build)
package("build.py")
python.dep("python")
python.dep("packaging.py (>=25.0)")
python.use_auto_pack()
+27
View File
@@ -0,0 +1,27 @@
import os
from lib import cpp
from lib.make import *
version("2.0")
description("Berkeley yacc")
maintainer("sisungo <[email protected]>")
source_url("https://www.invisible-island.net/archives/byacc/byacc-2.0.tgz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.configure([f"--prefix={get_prefix('byacc')}", "--enable-btyacc"])
cpp.make()
cpp.make_install()
os.rename("bin/yacc", "bin/byacc")
on_build(build)
package("byacc")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["bin", "lib", "dev"])
link("bin/byacc", "/bin/yacc")
+19 -3
View File
@@ -6,14 +6,30 @@ from lib.make import *
upstream_version = "1.0.8"
builddep("shortcut/c")
builddep("shortcut/autotools")
version(f"{upstream_version}")
description("a freely available, patent free, high-quality data compressor")
maintainer("sisungo <[email protected]>")
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")
makevars = [f"CC={os.environ.get('CC', 'cc')}"]
cpp.make(["-f", "Makefile-libbz2_so"] + makevars)
try:
shutil.rmtree("../cpp_install")
except Exception:
pass
cpp.make_install(["PREFIX=../cpp_install"] + makevars, chdir=False)
shutil.copy2(
f"libbz2.so.{upstream_version}",
f"../cpp_install/lib/libbz2.so.{upstream_version}",
)
os.symlink(f"libbz2.so.{upstream_version}", "../cpp_install/lib/libbz2.so.1.0")
os.symlink(f"libbz2.so.{upstream_version}", "../cpp_install/lib/libbz2.so.1")
os.symlink(f"libbz2.so.{upstream_version}", "../cpp_install/lib/libbz2.so")
os.chdir("../cpp_install")
+35
View File
@@ -0,0 +1,35 @@
from lib import cpp
from lib.make import *
version("1.34.6")
description("A C library for asynchronous DNS requests")
maintainer("sisungo <[email protected]>")
source_url(
"https://github.com/c-ares/c-ares/releases/download/v1.34.6/c-ares-1.34.6.tar.gz"
)
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.configure(
[
"--prefix=/",
f"--libdir={get_prefix('libcares')}/lib",
f"--includedir={get_prefix('libcares-dev')}/include",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("libcares")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["lib"])
package("libcares-dev")
dep("libcares (same)")
cpp.use_auto_pack(["dev"])
+2
View File
@@ -3,6 +3,8 @@ import os
from lib.make import *
version("2026.7.4")
description("SemiOS system-level trusted CA database")
maintainer("sisungo <[email protected]>")
source_url(
"https://gitea.semilabs.org/semios/ca-certificates/releases/download/v2026.07.04/ca-certificates-2026.07.04.tar"
)
+33
View File
@@ -0,0 +1,33 @@
from lib.make import *
from lib import rust
version("0.98.0")
description("The Rust package manager")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/rust-lang/cargo/archive/refs/tags/0.98.0.tar.gz")
builddep("shortcut/c")
builddep("cargo")
builddep("rust")
builddep(f"aws-lc-dev @{arch.get_target()}")
builddep(f"pkgconf @{arch.get_target()}")
builddep(f"libz-ng-dev @{arch.get_target()}")
builddep(f"libcurl-dev @{arch.get_target()}")
builddep(f"libgit2-dev @{arch.get_target()}")
builddep(f"libssh2-dev @{arch.get_target()}")
def build():
rust.build()
on_build(build)
package("cargo")
dep("libssl @same-arch")
dep("libcrypto @same-arch")
dep("libz @same-arch")
dep("semi-libc @same-arch")
recommend("rust")
rust.use_auto_pack(["bin"])
+4
View File
@@ -2,8 +2,12 @@ from lib import rust
from lib.make import *
version("0.1.0")
description("SemiOS certification utility")
maintainer("sisungo <[email protected]>")
source_url("https://gitea.semilabs.org/semios/certutil/archive/v0.1.0.tar.gz")
builddep("shortcut/rust")
def build():
rust.build()
+69
View File
@@ -0,0 +1,69 @@
import subprocess
import os
from lib import cpp, arch
from lib.make import *
upstream_version = "4.3.4"
[upstream_major, upstream_minor, upstream_rev] = upstream_version.split(".")
version(upstream_version)
description("a cross-platform, open-source build system generator")
maintainer("sisungo <[email protected]>")
source_url(
"https://github.com/Kitware/CMake/releases/download/v4.3.4/cmake-4.3.4.tar.gz"
)
builddep("shortcut/c++")
builddep("shortcut/autotools")
builddep("shortcut/cmake")
builddep(f"libcurl-dev @{arch.get_target()}")
builddep(f"aws-lc-dev @{arch.get_target()}")
builddep(f"libcurl-dev @{arch.get_target()}")
builddep(f"libexpat-dev @{arch.get_target()}")
builddep(f"libz-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"libnghttp2-dev @{arch.get_target()}")
builddep(f"librhash-dev @{arch.get_target()}")
builddep(f"libarchive-dev @{arch.get_target()}")
builddep(f"linux-dev @{arch.get_target()}")
def build():
os.environ["CMAKE_PREFIX_PATH"] = f"/lib/{arch.get_target()}"
cpp.cmake([
f"-DCMAKE_INSTALL_PREFIX={get_prefix('cmake')}",
"-DCMAKE_USE_SYSTEM_CURL=ON",
"-DCMAKE_USE_SYSTEM_ZLIB=ON",
"-DCMAKE_USE_SYSTEM_ZSTD=ON",
"-DCMAKE_USE_SYSTEM_LIBRHASH=ON",
"-DCMAKE_USE_SYSTEM_LIBARCHIVE=ON",
"-DCMAKE_USE_SYSTEM_LIBLZMA=ON",
"-DCMAKE_USE_SYSTEM_EXPAT=ON",
"-DCMAKE_USE_SYSTEM_BZIP2=ON",
])
cpp.ninja()
cpp.ninja_install()
on_build(build)
def pack_cmake(composer):
composer.add_dir("bin", "bin")
composer.makedir("share")
composer.add_dir(
f"share/cmake-{upstream_major}.{upstream_minor}",
f"share/cmake-{upstream_major}.{upstream_minor}",
)
package("cmake")
dep("semi-libc @same-arch")
dep("libcxx @same-arch")
dep("libcurl @same-arch")
dep("librhash @same-arch")
dep("libz @same-arch")
dep("libarchive @same-arch")
dep("libexpat @same-arch")
on_pack(pack_cmake)
+6 -2
View File
@@ -1,10 +1,14 @@
import lib.rust as rust
from lib.make import *
version("0.9.0")
source_url("https://github.com/uutils/coreutils/archive/refs/tags/0.9.0.tar.gz")
version("0.10.0")
description("system core utilities")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/uutils/coreutils/archive/refs/tags/0.10.0.tar.gz")
block_hook("autolink")
builddep("shortcut/rust")
def build():
rust.build(["--features", "unix"])
+104
View File
@@ -0,0 +1,104 @@
from lib import cpp, arch
from lib.make import *
version("8.21.0")
description("command line tool and library for transferring data with URLs")
maintainer("sisungo <[email protected]>")
source_url("https://curl.se/download/curl-8.21.0.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"libnghttp2-dev @{arch.get_target()}")
builddep(f"libcares-dev @{arch.get_target()}")
builddep(f"aws-lc-dev @{arch.get_target()}")
builddep(f"libbrotli-dev @{arch.get_target()}")
builddep(f"libz-dev @{arch.get_target()}")
builddep(f"libzstd-dev @{arch.get_target()}")
builddep(f"libpsl-dev @{arch.get_target()}")
def build():
cpp.configure(
[
"--prefix=/",
f"--bindir={get_prefix('curl')}/bin",
f"--libdir={get_prefix('libcurl')}/lib",
f"--includedir={get_prefix('libcurl-dev')}/include",
"--enable-optimize",
"--disable-debug",
"--enable-warnings",
"--enable-symbol-hiding",
"--enable-ares",
"--enable-http",
"--enable-ftp",
"--enable-file",
"--enable-ipfs",
"--disable-ldap",
"--disable-ldaps",
"--enable-rtsp",
"--enable-proxy",
"--enable-dict",
"--enable-telnet",
"--enable-tftp",
"--enable-pop3",
"--enable-imap",
"--enable-smb",
"--enable-smtp",
"--enable-gopher",
"--enable-mqtt",
"--disable-init-mem-debug",
"--enable-manual",
"--enable-docs",
"--enable-libcurl-option",
"--enable-ipv6",
"--enable-openssl-auto-load-config",
"--enable-ca-native",
"--enable-versioned-symbols",
"--enable-typecheck",
"--enable-verbose",
"--disable-tls-srp",
"--enable-unix-sockets",
"--enable-cookies",
"--enable-socketpair",
"--enable-http-auth",
"--enable-doh",
"--enable-mime",
"--enable-bindlocal",
"--enable-form-api",
"--enable-dateparse",
"--enable-netrc",
"--enable-progress-meter",
"--enable-get-easy-options",
"--enable-alt-svc",
"--enable-headers-api",
"--enable-hsts",
"--enable-websockets",
"--with-openssl",
"--with-nghttp2",
"--without-libidn2",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("libcurl")
dep("semi-libc @same-arch")
dep("libpsl @same-arch")
dep("libz @same-arch")
dep("libcares @same-arch")
dep("libnghttp2 @same-arch")
dep("libssl @same-arch")
dep("libcrypto @same-arch")
dep("libzstd @same-arch")
dep("libbrotli @same-arch")
cpp.use_auto_pack(["lib"])
package("curl")
dep("libcurl (same)")
cpp.use_auto_pack(["bin"])
package("libcurl-dev")
dep("libcurl (same)")
cpp.use_auto_pack(["dev"])
+55
View File
@@ -0,0 +1,55 @@
import os
from lib.make import *
from lib import cpp
version("1.16.2")
description("a message bus system, a simple way for applications to talk to one another")
maintainer("sisungo <[email protected]>")
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"])
+4
View File
@@ -2,8 +2,12 @@ import lib.rust as rust
from lib.make import *
version("0.5.0")
description("utility to compute difference between text files")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/uutils/diffutils/archive/refs/tags/v0.5.0.tar.gz")
builddep("shortcut/rust")
block_hook("autolink")
+2 -1
View File
@@ -4,6 +4,8 @@ import lib.cpp as cpp
from lib.make import *
version("2.8.1")
description("Fast streaming XML parser written in C99")
maintainer("sisungo <[email protected]>")
source_url(
"https://github.com/libexpat/libexpat/releases/download/R_2_8_1/expat-2.8.1.tar.gz"
)
@@ -13,7 +15,6 @@ def build():
cpp.cmake()
cpp.ninja()
cpp.ninja_install()
os.chdir("usr")
on_build(build)
+14 -1
View File
@@ -1,13 +1,22 @@
import subprocess
from lib import cpp
from lib import arch, cpp
from lib.make import *
VERSION = "5.48"
version(VERSION)
description("utility to infer file type and information")
maintainer("sisungo <[email protected]>")
source_git("https://github.com/file/file.git", "FILE5_48")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"libz-dev @{arch.get_target()}")
builddep(f"libzstd-dev @{arch.get_target()}")
builddep(f"liblzma-dev @{arch.get_target()}")
builddep(f"libbzip2-dev @{arch.get_target()}")
def build():
subprocess.run(["autoreconf", "-fiv"], check=True)
@@ -32,6 +41,10 @@ on_pack(pack_magic_db)
package("libmagic")
dep("semi-libc @same-arch")
dep("file-magic-db (same-version) @any")
dep("libz @same-arch")
dep("libzstd @same-arch")
dep("liblzma @same-arch")
dep("libbzip2 @same-arch")
cpp.use_auto_pack(["lib"])
package("libmagic-dev")
+6 -2
View File
@@ -1,8 +1,12 @@
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")
version("0.10.0")
description("implementation of the UNIX findutils")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/uutils/findutils/archive/refs/tags/0.10.0.tar.gz")
builddep("shortcut/rust")
def build():
+29
View File
@@ -0,0 +1,29 @@
from lib import cpp
from lib.make import *
version("2.6.4")
description("The Fast Lexical Analyzer - scanner generator for lexing in C and C++")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep("m4")
def build():
cpp.configure(
[
f"--prefix={get_prefix('flex')}",
"--disable-nls",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("flex")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["bin", "lib", "dev"])
+5
View File
@@ -4,10 +4,15 @@ from lib import cpp
from lib.make import *
version("0.3.3")
description("small implementation of gettext and libintl")
maintainer("sisungo <[email protected]>")
source_url(
"https://github.com/sabotage-linux/gettext-tiny/releases/download/v0.3.3/gettext-tiny-0.3.3.tar.xz"
)
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.make(["LIBINTL=musl"])
+48
View File
@@ -0,0 +1,48 @@
from lib import arch, cpp
from lib.make import *
version("2.55.0")
description("a free and open source distributed version control system")
maintainer("sisungo <[email protected]>")
source_url("https://www.kernel.org/pub/software/scm/git/git-2.55.0.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep("rust")
builddep("cargo")
builddep(f"libintl-dev @{arch.get_target()}")
builddep(f"libz-dev @{arch.get_target()}")
builddep(f"aws-lc-dev @{arch.get_target()}")
builddep(f"linux-dev @{arch.get_target()}")
builddep("gettext")
builddep("libarchive-tools")
def build():
cpp.configure(
[
"--prefix=",
"--with-gitconfig=/var/config/git/config.ini",
"--with-gitattributes=/var/config/git/attributes.txt",
]
)
cpp.make(["RUNTIME_PREFIX=YesPlease"])
cpp.make_install()
on_build(build)
def pack_git(composer):
composer.add_dir("bin", "bin")
composer.add_dir("libexec", "libexec")
composer.makedir("share")
composer.add_dir("share/git-core", "share/git-core")
composer.add_dir("share/gitweb", "share/gitweb")
composer.add_dir("share/perl5", "share/perl5")
package("git")
dep("semi-libc @same-arch")
dep("libz @same-arch")
on_pack(pack_git)
+124
View File
@@ -0,0 +1,124 @@
import shutil
import os
from lib.make import *
from lib import cpp
upstream_version = "2.89.2"
version(upstream_version)
description("a general-purpose, portable utility library")
maintainer("sisungo <[email protected]>")
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"])
+31
View File
@@ -0,0 +1,31 @@
import os
from lib import cpp, arch
from lib.make import *
version("1.4.21")
description("an implementation of the traditional Unix macro processor")
maintainer("sisungo <[email protected]>")
source_url("https://ftp.gnu.org/gnu/m4/m4-1.4.21.tar.xz")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"linux-dev @{arch.get_target()}")
def build():
cpp.configure(
[f"--prefix={get_prefix('gnu-m4')}", "--enable-changeword", "--disable-nls"]
)
cpp.make()
cpp.make_install()
os.rename("bin/m4", "bin/gnu-m4")
on_build(build)
package("gnu-m4")
provide("m4")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["bin"])
link("bin/gnu-m4", "/bin/m4")
+5
View File
@@ -2,8 +2,13 @@ import lib.cpp as cpp
from lib.make import *
version("4.4.1")
description("a tool which controls the generation of executables and other non-source files of a program from the program's source files")
maintainer("sisungo <[email protected]>")
source_url("https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.configure([f"--prefix={get_prefix('gnu-make')}"])
+38
View File
@@ -0,0 +1,38 @@
import os
from lib import cpp
from lib.make import *
version("4.10")
description("a non-interactive command-line text editor")
maintainer("sisungo <[email protected]>")
source_url("https://ftp.gnu.org/gnu/sed/sed-4.10.tar.gz")
block_hook("autolink")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.configure(
[
"--prefix=/",
f"--bindir={get_prefix('gnu-sed')}/bin",
"--disable-i18n",
"--disable-nls",
]
)
cpp.make()
cpp.make_install()
os.rename("bin/sed", "bin/gsed")
on_build(build)
package("gnu-sed")
provide("sed")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["bin"])
link("bin/gsed", "/bin/gsed")
link("bin/gsed", "/bin/sed")
+8
View File
@@ -3,8 +3,16 @@ import subprocess
from lib.make import *
version("15.1.2")
description("SemiOS file pattern searcher")
maintainer("sisungo <[email protected]>")
source_url("https://gitea.semilabs.org/semios/grep/archive/v15.1.2.tar.gz")
builddep("shortcut/c")
builddep(f"libpcre2-dev @{arch.get_target()}")
builddep("pcre2-tools")
builddep(f"libbzip2-dev @{arch.get_target()}")
builddep(f"libz-ng-dev @{arch.get_target()}")
def build():
subprocess.run(["./build.sh"], check=True)
+30
View File
@@ -0,0 +1,30 @@
from lib.make import *
from lib import cpp
version("3.5.2")
description("an interactive process viewer")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/htop-dev/htop/releases/download/3.5.2/htop-3.5.2.tar.xz")
builddep("shortcut/autotools")
builddep("shortcut/c")
builddep(f"libncurses-dev @{arch.get_target()}")
builddep(f"linux-dev @{arch.get_target()}")
def build():
cpp.configure([
f"--prefix={get_prefix('htop')}",
"--enable-unicode",
])
cpp.make()
cpp.make_install()
on_build(build)
package("htop")
dep("libncurses @same-arch")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["bin"])
+5
View File
@@ -4,8 +4,13 @@ from lib import cpp
from lib.make import *
version("2026.4.22")
description("code and data that represent the history of local time for many representative locations worldwide")
maintainer("sisungo <[email protected]>")
source_url("https://data.iana.org/time-zones/releases/tzdb-2026b.tar.lz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.make()
+5
View File
@@ -4,10 +4,15 @@ from lib import cpp
from lib.make import *
version("78.3")
description("a mature, widely used set of C/C++ libraries providing Unicode and Globalization support for software applications")
maintainer("sisungo <[email protected]>")
source_url(
"https://github.com/unicode-org/icu/releases/download/release-78.3/icu4c-78.3-sources.tgz"
)
builddep("shortcut/c++")
builddep("shortcut/autotools")
def build():
os.chdir("source")
+22
View File
@@ -0,0 +1,22 @@
from lib.make import *
from lib import python
python.version("1.0.1")
description("A library for installing Python wheels.")
maintainer("sisungo <[email protected]>")
source_url("https://files.pythonhosted.org/packages/06/fe/b9f481cf0cc867958a21338baa900357b7b7d86cac9b025948049d77923c/installer-1.0.1.tar.gz")
python.builddep("$shortcut")
def build():
python.build()
python.install()
on_build(build)
package("installer.py")
python.dep("python")
python.use_auto_pack()
+6
View File
@@ -5,8 +5,14 @@ from lib import cpp
from lib.make import *
version("7.1.0")
description("a collection of userspace utilities for controlling and monitoring various aspects of networking in the Linux kernel")
maintainer("sisungo <[email protected]>")
source_git("https://git.kernel.org/pub/scm/network/iproute2/iproute2.git", "v7.1.0")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep("git")
def build():
cpp.configure()
+29 -6
View File
@@ -1,17 +1,32 @@
import os
import lib.cpp as cpp
from lib import cpp, arch
from lib.make import *
version("1.34")
description("a set of tools to handle common tasks with Linux kernel modules like insert, remove, list, check properties, resolve dependencies and aliases")
maintainer("sisungo <[email protected]>")
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 +34,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"])
+25
View File
@@ -0,0 +1,25 @@
from lib import arch, cpp
from lib.make import *
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"libncurses-dev @{arch.get_target()}")
version("704")
description("a free, open-source file pager")
maintainer("sisungo <[email protected]>")
source_url("https://www.greenwoodsoftware.com/less/less-704.tar.gz")
def build():
cpp.configure([f"--prefix={get_prefix('less')}", "--with-regex=posix"])
cpp.make()
cpp.make_install()
on_build(build)
package("less")
dep("semi-libc @same-arch")
dep("libncurses @same-arch")
cpp.use_auto_pack(["bin"])
+12 -2
View File
@@ -1,11 +1,21 @@
import lib.cpp as cpp
from lib.make import *
version("3.8.7")
version("3.8.9")
description("Multi-format archive and compression library")
maintainer("sisungo <[email protected]>")
source_url(
"https://github.com/libarchive/libarchive/releases/download/v3.8.7/libarchive-3.8.7.tar.gz"
"https://github.com/libarchive/libarchive/releases/download/v3.8.9/libarchive-3.8.9.tar.gz"
)
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"aws-lc-dev @{arch.get_target()}")
builddep(f"libz-ng-dev @{arch.get_target()}")
builddep(f"libzstd-dev @{arch.get_target()}")
builddep(f"libbzip2-dev @{arch.get_target()}")
builddep(f"liblzma-dev @{arch.get_target()}")
def build():
cpp.configure(
+9 -3
View File
@@ -1,11 +1,17 @@
from lib import cpp
from lib import arch, cpp
from lib.make import *
version("3.6.0")
version("3.7.1")
description("A portable foreign-function interface library")
maintainer("sisungo <[email protected]>")
source_url(
"https://github.com/libffi/libffi/releases/download/v3.6.0/libffi-3.6.0.tar.gz"
"https://github.com/libffi/libffi/releases/download/v3.7.1/libffi-3.7.1.tar.gz"
)
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"linux-dev @{arch.get_target()}")
def build():
cpp.configure(
Binary file not shown.
+11 -15
View File
@@ -1,26 +1,21 @@
import os
import subprocess
from lib import arch
from lib.make import *
version("0.1.0")
source_url(f"file://{os.getcwd()}/empty.tar")
version("0.2.0")
description("provides compatibility objects to gcc runtime libraries")
maintainer("sisungo <[email protected]>")
source_url("https://gitea.semilabs.org/semios/libgcc-compat/archive/v0.2.0.tar.gz")
builddep("shortcut/c")
builddep(f"libunwind-dev @{arch.get_target()}")
builddep(f"linux-dev @{arch.get_target()}")
def build():
subprocess.run(
os.environ.get("CC", "cc").split(" ")
+ [
"-shared",
"-o",
"libgcc_s.so.1",
"-Wl,--no-as-needed",
"-lunwind",
"-Wl,--no-undefined",
"-Wl,-soname,libgcc_s.so.1",
],
check=True,
)
subprocess.run(["./build.sh"], check=True)
on_build(build)
@@ -29,6 +24,7 @@ on_build(build)
def pack(composer):
composer.makedir("lib")
composer.addfile("libgcc_s.so.1", "lib/libgcc_s.so.1")
composer.addfile("libatomic.so.1", "lib/libatomic.so.1")
package("libgcc-compat")
+5
View File
@@ -2,8 +2,13 @@ from lib import cpp
from lib.make import *
version("1.6.1")
description("a totally open, royalty-free, highly versatile audio codec")
maintainer("sisungo <[email protected]>")
source_url("https://downloads.xiph.org/releases/opus/opus-1.6.1.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.configure(
+43
View File
@@ -0,0 +1,43 @@
from lib import cpp, arch
from lib.make import *
version("0.23.1")
description("C library for the Public Suffix List")
maintainer("sisungo <[email protected]>")
source_url(
"https://github.com/rockdaboot/libpsl/releases/download/0.23.1/libpsl-0.23.1.tar.gz"
)
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"libicu4c-dev @{arch.get_target()}")
builddep("pkgconf")
def build():
cpp.configure(
[
"--prefix=/",
f"--libdir={get_prefix('libpsl')}/lib",
f"--includedir={get_prefix('libpsl-dev')}/include",
"--disable-nls",
"--enable-runtime=libicu",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("libpsl")
dep("semi-libc @same-arch")
dep("libicu4c @same-arch")
cpp.use_auto_pack(["lib"])
package("libpsl-tools")
dep("libpsl (same)")
cpp.use_auto_pack(["bin"])
package("libpsl-dev")
dep("libpsl (same)")
cpp.use_auto_pack(["dev"])
+2
View File
@@ -1,6 +1,8 @@
from lib.make import *
version("2.0")
description("A small self-contained alternative to readline and libedit")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/antirez/linenoise/archive/refs/tags/2.0.tar.gz")
on_build(lambda: None)
+9 -1
View File
@@ -5,13 +5,21 @@ import lib.arch as arch
import lib.cpp as cpp
from lib.make import *
upstream_version = "6.18.35"
upstream_version = "6.18.43"
version(f"{upstream_version}")
description("the Linux operating system kernel")
maintainer("sisungo <[email protected]>")
source_url(
f"https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-{upstream_version}.tar.xz"
)
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep("libncurses-dev")
builddep("aws-lc-dev")
builddep("aws-lc-tools")
def get_arch():
return arch.get_target().split("-")[0].replace("aarch64", "arm64")
+293 -354
View File
@@ -1,394 +1,333 @@
import glob
import os
import subprocess
import shutil
import glob
upstream_version = "22.1.7"
[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("22.1.7")
source_url(
"https://github.com/llvm/llvm-project/releases/download/llvmorg-22.1.7/llvm-project-22.1.7.src.tar.xz"
)
pkgver = "22.1.8"
[pkgver_major, pkgver_minor, pkgver_rev] = pkgver.split(".")
version(pkgver)
description("a collection of modular and reusable compiler and toolchain technologies")
maintainer("sisungo <[email protected]>")
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")
return arch.get_target().replace("-semios-linux", "-unknown-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(f"lib/{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:{get_prefix('clang')}/lib/clang/{pkgver_major}/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():
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()
)
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("lib/clang/22/lib")
composer.add_dir(
f"lib/clang/22/lib/{llvm_host_triple()}",
f"lib/clang/22/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 symlink to system directories, which is required for finding libc++
os.symlink(f"/lib/{arch.get_target()}/include", f"{composer.workdir}/bundle/include")
# 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)
link("bin/clang", "/bin/cc")
link("bin/clang++", "/bin/c++")
# 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,13 +0,0 @@
#!/bin/sh
LLVM_VERSION=
ARCHITECTURE=
CLANG=$(packie print package.prefix."clang (=${LLVM_VERSION}) @${ARCHITECTURE}")/bin/llvm-clang
exec ${CLANG} -x c++ \
-isystem /lib/${ARCHITECTURE}/include \
-stdlib=libc++ \
-rtlib=compiler-rt \
-B /lib/${ARCHITECTURE} \
"$@"
@@ -1,12 +0,0 @@
#!/bin/sh
LLVM_VERSION=
ARCHITECTURE=
CLANG=$(packie print package.prefix."clang (=${LLVM_VERSION}) @${ARCHITECTURE}")/bin/llvm-clang
exec ${CLANG} \
-isystem /lib/${ARCHITECTURE}/include \
-rtlib=compiler-rt \
-B /lib/${ARCHITECTURE} \
"$@"
@@ -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} "$@"
+8 -1
View File
@@ -1,12 +1,18 @@
import os
import subprocess
from lib import cpp
from lib import arch, cpp
from lib.make import *
version("1.14.6")
description("a suite of tools compiling mdoc, the roff macro language, and man")
maintainer("sisungo <[email protected]>")
source_url("https://mandoc.bsd.lv/snapshots/mandoc-1.14.6.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"libz-ng-dev @{arch.get_target()}")
def build():
cpp.configure()
@@ -17,4 +23,5 @@ def build():
on_build(build)
package("mandoc")
dep("libz @same-arch")
cpp.use_auto_pack(["bin"])
+32
View File
@@ -0,0 +1,32 @@
import subprocess
from lib.make import *
version("1.11.2")
description("The Meson Build System")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/mesonbuild/meson/releases/download/1.11.2/meson-1.11.2.tar.gz")
builddep("python")
def build():
subprocess.run([
"python3",
"./packaging/create_zipapp.py",
"--outfile",
"meson",
"--interpreter",
"/bin/python3"
])
on_build(build)
def pack_meson(composer):
composer.makedir("bin")
composer.addfile("meson", "bin/meson")
package("meson")
dep("python @same-arch")
recommend("ninja")
on_pack(pack_meson)
+10 -3
View File
@@ -1,13 +1,20 @@
import os
import subprocess
from lib.make import *
version("1.59.2")
source_git("https://github.com/mirabilos/mksh-cvs2git.git", "mksh-R59c")
description("the MirBSD Korn Shell, a minimal and useful implementation of the POSIX shell with extensions")
maintainer("sisungo <[email protected]>")
source_url(
"https://github.com/mirabilos/mksh-cvs2git/archive/refs/tags/mksh-R59c.tar.gz"
)
builddep("shortcut/c")
builddep("gnu-sed")
def build():
os.system("sh ./Build.sh")
subprocess.run(["sh", "./Build.sh"], check=True)
on_build(build)
+5
View File
@@ -4,8 +4,13 @@ from lib import cpp
from lib.make import *
version("6.6")
description("the ncurses terminal library")
maintainer("sisungo <[email protected]>")
source_url("https://invisible-island.net/archives/ncurses/ncurses-6.6.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.configure(
+5
View File
@@ -4,8 +4,13 @@ from lib import cpp
from lib.make import *
version("19")
description("A vi/ex editor for editing UTF-8 text")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/aligrudi/neatvi/archive/refs/tags/19.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.make([f"CC={os.environ['CC']}"])
+5
View File
@@ -5,8 +5,13 @@ from lib import cpp
from lib.make import *
version("5.3")
description("A small vi/ex terminal text editor (neatvi rewrite)")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/kyx0r/nextvi/archive/refs/tags/5.3.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
os.environ["PREFIX"] = "/"
+4 -5
View File
@@ -1,11 +1,11 @@
import os
from lib import cpp
from lib.make import *
version("1.69.0")
version("1.70.0")
description("nghttp2 - HTTP/2 C Library and tools")
maintainer("sisungo <[email protected]>")
source_url(
"https://github.com/nghttp2/nghttp2/releases/download/v1.69.0/nghttp2-1.69.0.tar.gz"
"https://github.com/nghttp2/nghttp2/releases/download/v1.70.0/nghttp2-1.70.0.tar.gz"
)
@@ -13,7 +13,6 @@ def build():
cpp.cmake()
cpp.ninja()
cpp.ninja_install()
os.chdir("usr")
on_build(build)
+6 -1
View File
@@ -3,11 +3,16 @@ import os
from lib.make import *
version("1.13.2")
description("a small build system with a focus on speed")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/ninja-build/ninja/archive/refs/tags/v1.13.2.tar.gz")
builddep("shortcut/c++")
builddep("sed")
def build():
os.system("./configure.py --bootstrap")
os.system("python3 ./configure.py --bootstrap")
on_build(build)
+7
View File
@@ -2,8 +2,15 @@ from lib import cpp
from lib.make import *
version("10.3.1")
description("the premier connectivity tool for remote login with the SSH protocol")
maintainer("sisungo <[email protected]>")
source_url("https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.3p1.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"libz-ng-dev @{arch.get_target()}")
builddep(f"aws-lc-dev @{arch.get_target()}")
def build():
cpp.configure(
+22
View File
@@ -0,0 +1,22 @@
from lib.make import *
from lib import python
python.version("26.3")
description("Core utilities for Python packages")
maintainer("sisungo <[email protected]>")
source_url("https://files.pythonhosted.org/packages/7d/fa/3944b40b07da9ce895c0e6303a5ab7d53da063554f534556b134a54d6093/packaging-26.3.tar.gz")
python.builddep("$shortcut")
def build():
python.build()
python.install()
on_build(build)
package("packaging.py")
python.dep("python")
python.use_auto_pack()
+18
View File
@@ -0,0 +1,18 @@
from lib import rust
from lib.make import *
version("0.0.1-alpha.1")
description("SemiOS package manager")
maintainer("sisungo <[email protected]>")
source_url("https://gitea.semilabs.org/semios/packie/archive/0.1.0.alpha-1.tar.gz")
def build():
rust.build(["--package", "packie-cli"])
on_build(build)
package("packie")
dep("semi-libc @same-arch")
rust.use_auto_pack(["bin"])
+28
View File
@@ -0,0 +1,28 @@
import shutil
import subprocess
from lib.make import *
version("15.1.1")
description("the SemiOS fork of the UNIX patch utility")
maintainer("sisungo <[email protected]>")
source_url("https://gitea.semilabs.org/semios/patch/archive/v15.1.1.tar.gz")
builddep("shortcut/c")
def build():
subprocess.run(["./build.sh"], check=True)
on_build(build)
def pack_patch(composer):
composer.makedir("bin")
composer.addfile("patch", "bin/patch")
package("patch")
dep("semi-libc @same-arch")
on_pack(pack_patch)
+40
View File
@@ -0,0 +1,40 @@
from lib import cpp
from lib.make import *
version("10.47")
description("a set of C functions that implement regular expression pattern matching")
maintainer("sisungo <[email protected]>")
source_url(
"https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.47/pcre2-10.47.tar.gz"
)
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.configure(
[
"--prefix=/",
f"--libdir={get_prefix('libpcre2')}/lib",
f"--bindir={get_prefix('pcre2-tools')}/bin",
"--enable-jit",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("libpcre2")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["lib"])
package("pcre2-tools")
dep("libpcre2 (same)")
cpp.use_auto_pack(["bin"])
package("libpcre2-dev")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["dev"])
+5
View File
@@ -7,8 +7,13 @@ from lib.make import *
upstream_version = "5.42.2"
version(upstream_version)
description("Perl is a highly capable, feature-rich programming language with over 37 years of development")
maintainer("sisungo <[email protected]>")
source_url("https://www.cpan.org/src/5.0/perl-5.42.2.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
block_hook("autolink")
+5
View File
@@ -3,8 +3,12 @@ from lib import arch
from lib.make import *
version("2.5.1")
description("package compiler and linker metadata toolkit")
source_url("https://distfiles.ariadne.space/pkgconf/pkgconf-2.5.1.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.configure(
@@ -31,6 +35,7 @@ dep("semi-libc @same-arch")
package("pkgconf")
cpp.use_auto_pack(["bin"])
dep("libpkgconf (same)")
link("bin/pkgconf", "/bin/pkg-config")
package("libpkgconf-dev")
cpp.use_auto_pack(["dev"])
+16 -2
View File
@@ -1,20 +1,34 @@
import os
import shutil
import subprocess
from lib import arch, cpp
from lib.make import *
VERSION_BASE = "3.14"
VERSION_APPEND = "6"
VERSION_APPEND = "7"
VERSION_FULL = f"{VERSION_BASE}.{VERSION_APPEND}"
version(VERSION_FULL)
description("the Python programming language")
maintainer("sisungo <[email protected]>")
source_url(
f"https://www.python.org/ftp/python/{VERSION_FULL}/Python-{VERSION_FULL}.tar.xz"
)
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"liblzma-dev @{arch.get_target()}")
builddep(f"libzstd-dev @{arch.get_target()}")
builddep(f"libz-ng-dev @{arch.get_target()}")
builddep(f"aws-lc-dev @{arch.get_target()}")
builddep(f"libexpat-dev @{arch.get_target()}")
builddep(f"libsqlite-dev @{arch.get_target()}")
builddep(f"libncurses-dev @{arch.get_target()}")
builddep(f"libbzip2-dev @{arch.get_target()}")
builddep(f"libffi-dev @{arch.get_target()}")
builddep("pkgconf")
def build():
cpp.configure(
+11
View File
@@ -0,0 +1,11 @@
prefix=/
exec_prefix=${prefix}
libdir=
includedir=
Name: librhash
Description: LibRHash shared library
Version:
Cflags: -I${includedir}
Libs: -L${libdir} -lrhash
Libs.private:
+24 -1
View File
@@ -1,22 +1,45 @@
from lib import cpp
from lib.make import *
version("1.4.6")
import os
upstream_version = "1.4.6"
version(upstream_version)
description("Great utility for computing hash sums")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/rhash/RHash/archive/refs/tags/v1.4.6.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
with open("files/librhash.pc") as f:
librhash_pc = f.read()
def build():
global librhash_pc
cpp.configure(
[
"--prefix=/",
f"--bindir={get_prefix('rhash-tools')}/bin",
f"--libdir={get_prefix('librhash')}/lib",
"--disable-gettext",
"--enable-lib-static",
]
)
cpp.make()
cpp.make_install()
os.symlink("librhash.so.1", "./lib/librhash.so")
os.makedirs("./lib/pkgconfig", exist_ok=True)
with open("./lib/pkgconfig/librhash.pc", "w+") as file:
librhash_pc = (librhash_pc
.replace("libdir=", f"libdir={get_prefix('librhash')}/lib")
.replace("includedir=", f"includedir={get_prefix('librhash-dev')}/include")
.replace("Version:", f"Version: {upstream_version}")
)
file.write(librhash_pc)
on_build(build)
+6 -2
View File
@@ -1,8 +1,12 @@
from lib import rust
from lib.make import *
version("15.1.0")
source_url("https://github.com/BurntSushi/ripgrep/archive/refs/tags/15.1.0.tar.gz")
version("15.2.0")
description("ripgrep recursively searches directories for a regex pattern while respecting your gitignore")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/BurntSushi/ripgrep/archive/refs/tags/15.2.0.tar.gz")
builddep("shortcut/rust")
def build():
+740
View File
@@ -0,0 +1,740 @@
# bootstrap.toml.in: Bootstrap Config Template
#
# Replacing Stubs:
# - %RUSTVERSION%: Version of rust
# - %CARGOPATH%: Absolute path of cargo
# - %RUSTCPATH%: Absolute path of rustc
# - %INSTALLPREFIX%: Install prefix
# =============================================================================
# Global Settings
# =============================================================================
# Use different pre-set defaults than the global defaults.
#
# See `src/bootstrap/defaults` for more information.
# Note that this has no default value (x.py uses the defaults in `bootstrap.example.toml`).
profile = "dist"
# =============================================================================
# Tweaking how LLVM is compiled
# =============================================================================
# Don't download Rust CI LLVM, instead, we compile it by our own.
llvm.download-ci-llvm = false
# Indicates whether the LLVM build is a Release or Debug build
llvm.optimize = true
# Indicates whether LLVM should be built with ThinLTO. Note that this will
# only succeed if you use clang, lld, llvm-ar, and llvm-ranlib in your C/C++
# toolchain (see the `cc`, `cxx`, `linker`, `ar`, and `ranlib` options below).
# More info at: https://clang.llvm.org/docs/ThinLTO.html#clang-bootstrap
llvm.thin-lto = true
# Indicates whether an LLVM Release build should include debug info
llvm.release-debuginfo = false
# Indicates whether the LLVM assertions are enabled or not
# NOTE: When assertions are disabled, bugs in the integration between rustc and LLVM can lead to
# unsoundness (segfaults, etc.) in the rustc process itself, not just in the generated code.
llvm.assertions = false
# Indicates whether the LLVM testsuite is enabled in the build or not. Does
# not execute the tests as part of the build as part of x.py build et al,
# just makes it possible to do `ninja check-llvm` in the staged LLVM build
# directory when doing LLVM development as part of Rust development.
llvm.tests = false
# Indicates whether the LLVM plugin is enabled or not
llvm.plugins = false
# Whether to build Enzyme as AutoDiff backend.
llvm.enzyme = false
# Whether to build LLVM with support for it's gpu offload runtime.
llvm.offload = false
# Absolute path to the directory containing ClangConfig.cmake
llvm.offload-clang-dir = ""
# When true, link libstdc++ statically into the rustc_llvm.
# This is useful if you don't want to use the dynamic version of that
# library provided by LLVM.
llvm.static-libstdcpp = false
# Enable LLVM to use zstd for compression.
llvm.libzstd = false
# Whether to use Ninja to build LLVM. This runs much faster than make.
llvm.ninja = true
# LLVM targets to build support for.
#llvm.targets = <default value>
# LLVM experimental targets to build support for.
#llvm.experimental-targets = <default value>
# Cap the number of parallel linker invocations when compiling LLVM.
#llvm.link-jobs = <default value>
# Whether to build LLVM as a dynamically linked library (as opposed to statically linked).
# Under the hood, this passes `--shared` to llvm-config.
# NOTE: To avoid performing LTO multiple times, we suggest setting this to `true` when `thin-lto` is enabled.
llvm.link-shared = true
# When building llvm, this configures what is being appended to the version.
llvm.version-suffix = "-rust-%RUSTVERSION%"
# Use libc++ when building LLVM instead of libstdc++. This is the default on
# platforms already use libc++ as the default C++ library, but this option
# allows you to use libc++ even on platforms when it's not. You need to ensure
# that your host compiler ships with libc++.
llvm.use-libcxx = true
# The value specified here will be passed as `-DLLVM_USE_LINKER` to CMake.
#llvm.use-linker = <none> (path)
# Whether or not to specify `-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=YES`
#llvm.allow-old-toolchain = false
# Whether to include the Polly optimizer.
llvm.polly = false
# Whether to build the clang compiler.
llvm.clang = false
# Whether to enable llvm compilation warnings.
llvm.enable-warnings = false
# Custom CMake defines to set when building LLVM.
llvm.build-config = {"LLVM_ENABLE_LIBCXX" = "ON"}
# =============================================================================
# General build configuration options
# =============================================================================
# The default stage to use for the `check` subcommand
#build.check-stage = 0
# The default stage to use for the `doc` subcommand
#build.doc-stage = 0
# The default stage to use for the `build` subcommand
#build.build-stage = 1
# The default stage to use for the `test` subcommand
#build.test-stage = 1
# The default stage to use for the `dist` subcommand
#build.dist-stage = 2
# The default stage to use for the `install` subcommand
#build.install-stage = 2
# The default stage to use for the `bench` subcommand
#build.bench-stage = 2
# A descriptive string to be appended to version output (e.g., `rustc --version`),
# which is also used in places like debuginfo `DW_AT_producer`. This may be useful for
# supplementary build information, like distro-specific package versions.
#
# IMPORTANT: Changing this value changes crate IDs and symbol name mangling, making
# compiled artifacts incompatible. PGO profiles cannot be reused across different
# descriptions, and incremental compilation caches are invalidated. Keep this value
# consistent when reusing build artifacts.
#
# The Rust compiler will differentiate between versions of itself, including
# based on this string, which means that if you wish to be compatible with
# upstream Rust you need to set this to "". However, note that if you set this to "" but
# are not actually compatible -- for example if you've backported patches that change
# behavior -- this may lead to miscompilations or other bugs.
#build.description = ""
# Build triple for the pre-compiled snapshot compiler. If `rustc` is set, this must match its host
# triple (see `rustc --version --verbose`; cross-compiling the rust build system itself is NOT
# supported). If `rustc` is unset, this must be a platform with pre-compiled host tools
# (https://doc.rust-lang.org/nightly/rustc/platform-support.html). The current platform must be
# able to run binaries of this build triple.
#
# If `rustc` is present in path, this defaults to the host it was compiled for.
# Otherwise, `x.py` will try to infer it from the output of `uname`.
# If `uname` is not found in PATH, we assume this is `x86_64-pc-windows-msvc`.
# This may be changed in the future.
#build.build = "x86_64-unknown-linux-gnu" (as an example)
# Which triples to produce a compiler toolchain for. Each of these triples will be bootstrapped from
# the build triple themselves. In other words, this is the list of triples for which to build a
# compiler that can RUN on that triple.
#
# Defaults to just the `build` triple.
#build.host = [build.build] (list of triples)
# Which triples to build libraries (core/alloc/std/test/proc_macro) for. Each of these triples will
# be bootstrapped from the build triple themselves. In other words, this is the list of triples for
# which to build a library that can CROSS-COMPILE to that triple.
#
# Defaults to `host`. If you set this explicitly, you likely want to add all
# host triples to this list as well in order for those host toolchains to be
# able to compile programs for their native target.
#build.target = build.host (list of triples)
# Use this directory to store build artifacts. Paths are relative to the current directory, not to
# the root of the repository.
#build.build-dir = "build"
# Instead of downloading the src/stage0 version of Cargo specified, use
# this Cargo binary instead to build all Rust code
# If you set this, you likely want to set `rustc` as well.
build.cargo = "%CARGOPATH%"
# Instead of downloading the src/stage0 version of the compiler
# specified, use this rustc binary instead as the stage0 snapshot compiler.
# If you set this, you likely want to set `cargo` as well.
build.rustc = "%RUSTCPATH%"
# Use this rustdoc binary as the stage0 snapshot rustdoc.
# If unspecified, then the binary "rustdoc" (with platform-specific extension, e.g. ".exe")
# in the same directory as "rustc" will be used.
#build.rustdoc = "/path/to/rustdoc"
# Instead of downloading the src/stage0 version of rustfmt specified,
# use this rustfmt binary instead as the stage0 snapshot rustfmt.
#build.rustfmt = "/path/to/rustfmt"
# Instead of downloading the src/stage0 version of cargo-clippy specified,
# use this cargo-clippy binary instead as the stage0 snapshot cargo-clippy.
#
# Note that this option should be used with the same toolchain as the `rustc` option above.
# Otherwise, clippy is likely to fail due to a toolchain conflict.
#build.cargo-clippy = "/path/to/cargo-clippy"
# Whether to build documentation by default. If false, rustdoc and
# friends will still be compiled but they will not be used to generate any
# documentation.
#
# You can still build documentation when this is disabled by explicitly passing paths,
# e.g. `x doc library`.
build.docs = true
# Flag to specify whether CSS, JavaScript, and HTML are minified when
# docs are generated. JSON is always minified, because it's enormous,
# and generated in already-minified form from the beginning.
build.docs-minification = true
# Flag to specify whether private items should be included in the library docs.
build.library-docs-private-items = false
# Indicate whether to build compiler documentation by default.
# You can still build documentation when this is disabled by explicitly passing a path: `x doc compiler`.
build.compiler-docs = false
# Indicate whether git submodules are managed and updated automatically.
build.submodules = false
# The path to (or name of) the GDB executable to use. This is only used for
# executing the debuginfo test suite.
#build.gdb = <not required>
# The path to (or name of) the LLDB executable to use. This is only used for
# executing the debuginfo test suite.
#build.lldb = <not required>
# The node.js executable to use. Note that this is only used for the emscripten
# target when running tests, otherwise this can be omitted.
#build.nodejs = <not required>
# The yarn executable to use. Note that this is used for rustdoc-gui tests and
# tidy js extra-checks, otherwise this can be omitted.
#
# Under Windows this should be `yarn.cmd` or path to it (verified on nodejs v18.06), or
# error will be emitted.
#build.yarn = <not required>
# Python interpreter to use for various tasks throughout the build, notably
# rustdoc tests, and some dist bits and pieces.
#
# Defaults to the Python interpreter used to execute x.py.
#build.python = <default>
# The path to the REUSE executable to use. Note that REUSE is not required in
# most cases, as our tooling relies on a cached (and shrunk) copy of the
# REUSE output present in the git repository and in our source tarballs.
#
# REUSE is only needed if your changes caused the overall licensing of the
# repository to change, and the cached copy has to be regenerated.
#
# Defaults to the "reuse" command in the system path.
#build.reuse = <not required>
# Force Cargo to check that Cargo.lock describes the precise dependency
# set that all the Cargo.toml files create, instead of updating it.
build.locked-deps = false
# Indicate whether the vendored sources are used for Rust dependencies or not.
#
# Vendoring requires additional setup. We recommend using the pre-generated source tarballs if you
# want to use vendoring. See https://forge.rust-lang.org/infra/other-installation-methods.html#source-code.
#build.vendor = <default>
# If you build the compiler more than twice (stage3+) or the standard library more than once
# (stage 2+), the third compiler and second library will get uplifted from stage2 and stage1,
# respectively. If you would like to disable this uplifting, and rather perform a full bootstrap,
# then you can set this option to true.
#
# This is only useful for verifying that rustc generates reproducible builds.
build.full-bootstrap = false
# Set the bootstrap/download cache path. It is useful when building rust
# repeatedly in a CI environment.
#build.bootstrap-cache-path = /path/to/shared/cache
# Enable a build of the extended Rust tool set which is not only the compiler
# but also tools such as Cargo. This will also produce "combined installers"
# which are used to install Rust and Cargo together.
# The `tools` (check `bootstrap.example.toml` to see its default value) option specifies
# which tools should be built if `extended = true`.
#
# This is disabled by default.
build.extended = false
# Set of tools to be included in the installation.
#
# If `extended = false`, the only one of these built by default is rustdoc.
#
# If `extended = true`, they are all included.
#
# If any enabled tool fails to build, the installation fails.
#build.tools = <default>
# Specify build configuration specific for some tool, such as enabled features.
# This option has no effect on which tools are enabled: refer to the `tools` option for that.
#
# For example, to build Miri with tracing support, use `tool.miri.features = ["tracing"]`
#
# The default value for the `features` array is `[]`. However, please note that other flags in
# `bootstrap.toml` might influence the features enabled for some tools. Also, enabling features
# in tools which are not part of the internal "extra-features" preset might not always work.
#build.tool.TOOL_NAME.features = [FEATURE1, FEATURE2]
# Verbosity level: 0 == not verbose, 1 == verbose, 2 == very verbose, 3 == print environment variables on each rustc invocation
#build.verbose = <default>
# Build the sanitizer runtimes
build.sanitizers = false
# Build the profiler runtime (required when compiling with options that depend
# on this runtime, such as `-C profile-generate` or `-C instrument-coverage`).
build.profiler = false
# Use the optimized LLVM C intrinsics for `compiler_builtins`, rather than Rust intrinsics.
# Choosing true requires the LLVM submodule to be managed by bootstrap (i.e. not external)
# so that `compiler-rt` sources are available.
#
# Setting this to a path removes the requirement for a C toolchain, but requires setting the
# path to an existing library containing the builtins library from LLVM's compiler-rt.
#
# Setting this to `false` generates slower code, but removes the requirement for a C toolchain in
# order to run `x check`.
build.optimized-compiler-builtins = true
# Indicates whether the native libraries linked into Cargo will be statically
# linked or not.
build.cargo-native-static = false
# Number of parallel jobs to be used for building and testing. If set to `0` or
# omitted, it will be automatically determined. This is the `-j`/`--jobs` flag
# passed to cargo invocations.
#build.jobs = <default>
# Default value for the `--extra-checks` flag of tidy.
#
# See `./x test tidy --help` for details.
#
# Note that if any value is manually given to bootstrap such as
# `./x test tidy --extra-checks=js`, this value is ignored.
# Use `--extra-checks=''` to temporarily disable all extra checks.
#
# Automatically enabled in the "tools" profile.
# Set to the empty string to force disable (recommended for hdd systems).
#build.tidy-extra-checks = ""
# Indicates whether ccache is used when building certain artifacts (e.g. LLVM).
# Set to `true` to use the first `ccache` in PATH, or set an absolute path to use
# a specific version.
build.ccache = false
# List of paths to exclude from the build and test processes.
# For example, exclude = ["tests/ui", "src/tools/tidy"].
#build.exclude = []
# =============================================================================
# General install configuration options
# =============================================================================
# Where to install the generated toolchain. Must be an absolute path.
install.prefix = "%INSTALLPREFIX%"
# Where to install system configuration files.
# If this is a relative path, it will get installed in `prefix` above
install.sysconfdir = "/var/config"
# Where to install documentation in `prefix` above
install.docdir = "share/doc/rust"
# Where to install binaries in `prefix` above
install.bindir = "bin"
# Where to install libraries in `prefix` above
install.libdir = "lib"
# Where to install man pages in `prefix` above
install.mandir = "share/man"
# Where to install data in `prefix` above
install.datadir = "share"
# =============================================================================
# Options for compiling Rust code itself
# =============================================================================
# Whether or not to optimize when compiling the compiler and standard library,
# and what level of optimization to use.
# WARNING: Building with optimize = false is NOT SUPPORTED. Due to bootstrapping,
# building without optimizations takes much longer than optimizing. Further, some platforms
# fail to build without this optimization (c.f. #65352).
# The valid options are:
# true - Enable optimizations (same as 3).
# false - Disable optimizations.
# 0 - Disable optimizations.
# 1 - Basic optimizations.
# 2 - Some optimizations.
# 3 - All optimizations.
# "s" - Optimize for binary size.
# "z" - Optimize for binary size, but also turn off loop vectorization.
#rust.optimize = true
# Indicates that the build should be configured for debugging Rust. A
# `debug`-enabled compiler and standard library will be somewhat
# slower (due to e.g. checking of debug assertions) but should remain
# usable.
#
# Note: If this value is set to `true`, it will affect a number of
# configuration options below as well, if they have been left
# unconfigured in this file.
#
# Note: changes to the `debug` setting do *not* affect `optimize`
# above. In theory, a "maximally debuggable" environment would
# set `optimize` to `false` above to assist the introspection
# facilities of debuggers like lldb and gdb. To recreate such an
# environment, explicitly set `optimize` to `false` and `debug`
# to `true`. In practice, everyone leaves `optimize` set to
# `true`, because an unoptimized rustc with debugging
# enabled becomes *unusably slow* (e.g. rust-lang/rust#24840
# reported a 25x slowdown) and bootstrapping the supposed
# "maximally debuggable" environment (notably libstd) takes
# hours to build.
#
rust.debug = false
# Whether to download the stage 1 and 2 compilers from CI. This is useful if you
# are working on tools, doc-comments, or library (you will be able to build the
# standard library without needing to build the compiler).
#
# Set this to "if-unchanged" if you are working on `src/tools`, `tests` or
# `library` (on CI, `library` changes triggers in-tree compiler build) to speed
# up the build process if you don't need to build a compiler from the latest
# commit from `master`.
#
# Set this to `true` to always download or `false` to always use the in-tree
# compiler.
rust.download-rustc = false
# Number of codegen units to use for each compiler invocation. A value of 0
# means "the number of cores on this machine", and 1+ is passed through to the
# compiler.
#
# Uses the rustc defaults: https://doc.rust-lang.org/rustc/codegen-options/index.html#codegen-units
rust.codegen-units = 1
# Sets the number of codegen units to build the standard library with,
# regardless of what the codegen-unit setting for the rest of the compiler is.
# NOTE: building with anything other than 1 is known to occasionally have bugs.
rust.codegen-units-std = 1
# Whether or not debug assertions are enabled for the compiler and standard library.
# These can help find bugs at the cost of a small runtime slowdown.
#
# Defaults to rust.debug value
rust.debug-assertions = false
# Whether or not debug assertions are enabled for the standard library.
# Overrides the `debug-assertions` option, if defined.
#
# Defaults to rust.debug-assertions value
rust.debug-assertions-std = false
# Whether or not debug assertions are enabled for the tools built by bootstrap.
# Overrides the `debug-assertions` option, if defined.
#
# Defaults to rust.debug-assertions value
rust.debug-assertions-tools = false
# Whether or not to leave debug! and trace! calls in the rust binary.
#
# Defaults to rust.debug-assertions value
#
# If you see a message from `tracing` saying "some trace filter directives would enable traces that
# are disabled statically" because `max_level_info` is enabled, set this value to `true`.
rust.debug-logging = false
# Whether or not to build rustc, tools and the libraries with randomized type layout
rust.randomize-layout = false
# Whether or not overflow checks are enabled for the compiler and standard
# library.
#
# Defaults to rust.debug value
rust.overflow-checks = false
# Whether or not overflow checks are enabled for the standard library.
# Overrides the `overflow-checks` option, if defined.
#
# Defaults to rust.overflow-checks value
rust.overflow-checks-std = false
# Debuginfo level for most of Rust code, corresponds to the `-C debuginfo=N` option of `rustc`.
# See https://doc.rust-lang.org/rustc/codegen-options/index.html#debuginfo for available options.
#
# Can be overridden for specific subsets of Rust code (rustc, std or tools).
# Debuginfo for tests run with compiletest is not controlled by this option
# and needs to be enabled separately with `debuginfo-level-tests`.
#
# Note that debuginfo-level = 2 generates several gigabytes of debuginfo
# and will slow down the linking process significantly.
rust.debuginfo-level = 0
# Debuginfo level for the compiler.
rust.debuginfo-level-rustc = 0
# Debuginfo level for the standard library.
rust.debuginfo-level-std = 0
# Debuginfo level for the tools.
rust.debuginfo-level-tools = 0
# Debuginfo level for the test suites run with compiletest.
# FIXME(#61117): Some tests fail when this option is enabled.
#rust.debuginfo-level-tests = 0 <omitted>
# Whether or not `panic!`s generate backtraces (RUST_BACKTRACE)
rust.backtrace = true
# Whether to always use incremental compilation when building rustc
rust.incremental = false
# The default linker that will be hard-coded into the generated
# compiler for targets that don't specify a default linker explicitly
# in their target specifications. Note that this is not the linker
# used to link said compiler. It can also be set per-target (via the
# `[target.<triple>]` block), which may be useful in a cross-compilation
# setting.
#
# See https://doc.rust-lang.org/rustc/codegen-options/index.html#linker for more information.
#rust.default-linker = <default>
# The "channel" for the Rust build to produce. The stable/beta channels only
# allow using stable features, whereas the nightly and dev channels allow using
# nightly features.
#
# You can set the channel to "auto-detect" to load the channel name from `src/ci/channel`.
#
# If using tarball sources, default value is "auto-detect", otherwise, it's "dev".
rust.channel = "auto-detect"
# The root location of the musl installation directory. The library directory
# will also need to contain libunwind.a for an unwinding implementation. Note
# that this option only makes sense for musl targets that produce statically
# linked binaries.
#
# Defaults to /usr on musl hosts. Has no default otherwise.
#rust.musl-root = <not required>
# By default the `rustc` executable is built with `-Wl,-rpath` flags on Unix
# platforms to ensure that the compiler is usable by default from the build
# directory (as it links to a number of dynamic libraries). This may not be
# desired in distributions, for example.
rust.rpath = true
# Additional flags to pass to `rustc`.
# Takes precedence over bootstrap's own flags but not over per target rustflags nor env. vars. like RUSTFLAGS.
# Applies to all stages and targets.
#
#rust.rustflags = []
# Indicates whether symbols should be stripped using `-Cstrip=symbols`.
rust.strip = true
# Forces frame pointers to be used with `-Cforce-frame-pointers`.
# This can be helpful for profiling at a small performance cost.
rust.frame-pointers = false
# Indicates whether stack protectors should be used
# via the unstable option `-Zstack-protector`.
#
# Valid options are : `none`(default),`basic`,`strong`, or `all`.
# `strong` and `basic` options may be buggy and are not recommended, see rust-lang/rust#114903.
rust.stack-protector = "none"
# Prints each test name as it is executed, to help debug issues in the test harness itself.
rust.verbose-tests = false
# Flag indicating whether tests are compiled with optimizations (the -O flag).
rust.optimize-tests = true
# Flag indicating whether codegen tests will be run or not. If you get an error
# saying that the FileCheck executable is missing, you may want to disable this.
# Also see the target's llvm-filecheck option.
rust.codegen-tests = false
# Flag indicating whether git info will be retrieved from .git automatically.
# Having the git information can cause a lot of rebuilds during development.
rust.omit-git-hash = false
# Whether to create a source tarball by default when running `x dist`.
#
# You can still build a source tarball when this is disabled by explicitly passing `x dist rustc-src`.
rust.dist-src = false
# After building or testing an optional component (e.g. the nomicon or reference), append the
# result (broken, compiling, testing) into this JSON file.
#rust.save-toolstates = <none> (path)
# This array serves three distinct purposes:
# - Backends in this list will be automatically compiled and included in the sysroot of each
# rustc compiled by bootstrap.
# - The first backend in this list will be configured as the **default codegen backend** by each
# rustc compiled by bootstrap. In other words, if the first backend is e.g. cranelift, then when
# we build a stage 1 rustc, it will by default compile Rust programs using the Cranelift backend.
# This also means that stage 2 rustc would get built by the Cranelift backend.
# - Running `x dist` (without additional arguments, or with `--include-default-paths`) will produce
# a dist component/tarball for the Cranelift backend if it is included in this array.
#
# Note that the LLVM codegen backend is special and will always be built and distributed.
#
# Currently, the only standard options supported here are `"llvm"`, `"cranelift"` and `"gcc"`.
rust.codegen-backends = ["llvm"]
# Indicates whether LLD will be compiled and made available in the sysroot for rustc to execute,
rust.lld = false
# Indicates if we should override the linker used to link Rust crates during bootstrap to be LLD.
# If set to `true` or `"external"`, a global `lld` binary that has to be in $PATH
# will be used.
# If set to `"self-contained"`, rust-lld from the snapshot compiler will be used.
#
# On MSVC, LLD will not be used if we're cross linking.
#
# Explicitly setting the linker for a target will override this option when targeting MSVC.
rust.bootstrap-override-lld = false
# Indicates whether some LLVM tools, like llvm-objdump, will be made available in the
# sysroot.
rust.llvm-tools = false
# Indicates whether the `self-contained` llvm-bitcode-linker, will be made available
# in the sysroot. It is required for running nvptx tests.
rust.llvm-bitcode-linker = false
# Whether to deny warnings in crates. Set to `false` to avoid
# error: warnings are denied by `build.warnings` configuration
rust.deny-warnings = false
# Print backtrace on internal compiler errors during bootstrap
rust.backtrace-on-ice = false
# Whether to verify generated LLVM IR
rust.verify-llvm-ir = false
# Compile the compiler with a non-default ThinLTO import limit. This import
# limit controls the maximum size of functions imported by ThinLTO. Decreasing
# will make code compile faster at the expense of lower runtime performance.
#rust.thin-lto-import-instr-limit = <default>
# Map debuginfo paths to `/rust/$sha/...`.
# Useful for reproducible builds. Generally only set for releases
rust.remap-debuginfo = true
# Link the compiler and LLVM against `jemalloc` instead of the default libc allocator.
# This option is only tested on Linux and OSX. It can also be configured per-target in the
# [target.<tuple>] section.
rust.jemalloc = false
# Run tests in various test suites with the "nll compare mode" in addition to
# running the tests in normal mode. Largely only used on CI and during local
# development of NLL
rust.test-compare-mode = false
# Global default for llvm-libunwind for all targets. See the target-specific
# documentation for llvm-libunwind below. Note that the target-specific
# option will override this if set.
rust.llvm-libunwind = 'system'
# Enable symbol-mangling-version v0. This can be helpful when profiling rustc,
# as generics will be preserved in symbols (rather than erased into opaque T).
# When no setting is given, the new scheme will be used when compiling the
# compiler and its tools and the legacy scheme will be used when compiling the
# standard library.
# If an explicit setting is given, it will be used for all parts of the codebase.
rust.new-symbol-mangling = true
# Size limit in bytes for move/copy annotations (-Zannotate-moves). Only types
# at or above this size will be annotated. If not specified, uses the default
# limit (65 bytes).
#rust.annotate-moves-size-limit = <default>
# Select LTO mode that will be used for compiling rustc. By default, thin local LTO
# (LTO within a single crate) is used (like for any Rust crate). You can also select
# "thin" or "fat" to apply Thin/Fat LTO to the `rustc_driver` dylib, or "off" to disable
# LTO entirely.
rust.lto = "thin-local"
# Build compiler with the optimization enabled and -Zvalidate-mir, currently only for `std`
#rust.validate-mir-opts = 3
# Configure `std` features used during bootstrap.
#
# Default features will be expanded in the following cases:
# - If `rust.llvm-libunwind` or `target.llvm-libunwind` is enabled:
# - "llvm-libunwind" will be added for in-tree LLVM builds.
# - "system-llvm-libunwind" will be added for system LLVM builds.
# - If `rust.backtrace` is enabled, "backtrace" will be added.
# - If `rust.profiler` or `target.profiler` is enabled, "profiler" will be added.
# - If building for a zkvm target, "compiler-builtins-mem" will be added.
#
# Since libstd also builds libcore and liballoc as dependencies and all their features are mirrored
# as libstd features, this option can also be used to configure features such as optimize_for_size.
#rust.std-features = <default>
# Set the number of threads for the compiler frontend used during compilation of Rust code (passed to `-Zthreads`).
# The valid options are:
# 0 - Set the number of threads according to the detected number of threads of the host system
# 1 - Use a single thread for compilation of Rust code (the default)
# N - Number of threads used for compilation of Rust code
#
rust.parallel-frontend-threads = 1
[target.x86_64-unknown-linux-musl]
llvm-libunwind = "system"
crt-static = false
musl-libdir = "/lib/x86_64-semios-linux"
[target.aarch64-unknown-linux-musl]
llvm-libunwind = "system"
crt-static = false
musl-libdir = "/lib/aarch64-semios-linux"
[target.riscv64-unknown-linux-musl]
llvm-libunwind = "system"
crt-static = false
musl-libdir = "/lib/riscv64-semios-linux"
+77
View File
@@ -0,0 +1,77 @@
import os
import shutil
import subprocess
from lib.make import *
from lib import arch
upstream_version = "1.97.1"
version(upstream_version)
description("A language empowering everyone to build reliable and efficient software")
maintainer("sisungo <[email protected]>")
source_url(f"https://static.rust-lang.org/dist/rustc-{upstream_version}-src.tar.xz")
builddep("shortcut/cmake")
builddep("shortcut/c++")
builddep("python")
builddep(f"libz-ng-dev @{arch.get_target()}")
builddep(f"linux-dev @{arch.get_target()}")
builddep(f"libunwind-dev @{arch.get_target()}")
builddep("curl")
builddep("grep")
builddep("sed")
def setup_musl_root():
os.makedirs("../musl_root/lib", exist_ok=True)
for i in ["libc.a", "crt1.o", "Scrt1.o", "rcrt1.o", "crti.o", "crtn.o", "libunwind.a"]:
shutil.copy2(f"/lib/{arch.get_target()}/{i}", f"../musl_root/lib/{i}")
def configure():
with open("../../bootstrap.toml.in") as file:
content = file.read()
content = content.replace("%RUSTVERSION%", upstream_version)
content = content.replace("%CARGOPATH%", shutil.which("cargo") or "cargo")
content = content.replace("%RUSTCPATH%", shutil.which("rustc") or "rustc")
content = content.replace("%INSTALLPREFIX%", get_prefix("rust"))
content = content.replace("%MUSLROOT%", os.getcwd() + "/../musl_root")
with open("bootstrap.toml", "wt+") as file:
file.write(content)
def run_build():
subprocess.run(["python3", "x.py", "build"], check=True)
def run_install():
os.environ["DESTDIR"] = os.getcwd() + "/../install_destdir"
subprocess.run(["python3", "x.py", "install"], check=True)
os.chdir(os.environ["DESTDIR"])
# FIXME: Rust seemed not to process our directory name correctly, it is installed to pkg/rust.
os.chdir("pkg/rust")
def build():
setup_musl_root()
configure()
run_build()
run_install()
on_build(build)
def pack_rust(composer):
composer.makedir("lib")
composer.makedir("bin")
for i in os.listdir("."):
if ".so" in i:
composer.addfile(i, f"lib/{i}")
elif i in ["rustc", "rust-gdb", "rust-gdbgui", "rust-lldb", "rustdoc"]:
composer.addfile(i, f"bin/{i}")
composer.add_dir("rustlib", "lib/rustlib")
package("rust")
dep("semi-libc @same-arch")
dep("libz @same-arch")
dep("libcxx @same-arch")
on_pack(pack_rust)
+19 -5
View File
@@ -1,16 +1,30 @@
from lib import rust
import subprocess
from lib.make import *
version("0.1.1")
source_url("https://github.com/uutils/sed/releases/download/0.1.1/source.tar.gz")
version("15.1.1")
description("SemiOS fork of the UNIX sed utility")
maintainer("sisungo <[email protected]>")
source_url("https://gitea.semilabs.org/semios/sed/archive/v15.1.1.tar.gz")
builddep("shortcut/c")
builddep(f"libpcre2-dev @{arch.get_target()}")
builddep("pcre2-tools")
def build():
rust.build()
subprocess.run(["./build.sh"])
on_build(build)
def pack_sed(composer):
composer.makedir("bin")
composer.addfile("sed", "bin/sed")
package("sed")
dep("semi-libc @same-arch")
rust.use_auto_pack(["bin"])
dep("libpcre2 @same-arch")
on_pack(pack_sed)
+6
View File
@@ -2,9 +2,15 @@ from lib import arch, cpp
from lib.make import *
version("1.2.6+1")
description("the SemiOS fork of musl-libc, providing POSIX C standard library and system runtime")
maintainer("sisungo <[email protected]>")
source_url("https://gitea.semilabs.org/semios/semi-libc/archive/v1.2.6-1.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.configure(["--prefix=/"])
cpp.make()
Binary file not shown.
+46
View File
@@ -0,0 +1,46 @@
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")
maintainer("sisungo <[email protected]>")
source_url(f"file://{os.getcwd()}/empty.tar")
on_build(lambda: print("Building virtual package `semios-assembly`..."))
package("SemiOS.Assembly.CoreRuntime")
description("Assembly of the core SemiOS runtime")
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")
description("Assembly of core SemiOS command-line experience")
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")
description("Assembly of SemiOS core networking experience")
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`..."))
+10 -2
View File
@@ -1,8 +1,16 @@
import os
import lib.cpp as cpp
from lib.make import *
version("3.53.2")
source_url("https://sqlite.org/2026/sqlite-autoconf-3530200.tar.gz")
version("3.53.4")
description("a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine")
maintainer("sisungo <[email protected]>")
source_url("https://sqlite.org/2026/sqlite-autoconf-3530400.tar.gz")
builddep("shortcut/autotools")
builddep("shortcut/c")
builddep("linenoise-dev")
def build():
+325
View File
@@ -0,0 +1,325 @@
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")
description("a random collection of Linux utilities")
maintainer("sisungo <[email protected]>")
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)
+7
View File
@@ -4,8 +4,14 @@ from lib.make import *
upstream_version = "9.2.782"
version(upstream_version)
description("vim, a greatly improved version of the good old UNIX editor Vi")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/vim/vim/archive/refs/tags/v9.2.0782.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"libncurses-dev @{arch.get_target()}")
def build():
cpp.configure(
@@ -41,3 +47,4 @@ dep("semi-libc @same-arch")
dep("libncurses @same-arch")
dep(f"vim-data (={upstream_version}) @any")
cpp.use_auto_pack(["bin"])
link("bin/vim", "/bin/vi")
+8
View File
@@ -1,13 +1,21 @@
import os
from lib import cpp
from lib.make import *
version("5.8.3")
description("a general-purpose LZMA data-compression library plus command-line tools")
maintainer("sisungo <[email protected]>")
source_url(
"https://github.com/tukaani-project/xz/releases/download/v5.8.3/xz-5.8.3.tar.gz"
)
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
os.environ["FGREP"] = "grep -F"
cpp.configure(
[
"--prefix=/",
+4
View File
@@ -4,8 +4,12 @@ import lib.cpp as cpp
from lib.make import *
version("2.3.3")
description("zlib replacement with optimizations for next generation systems")
maintainer("sisungo <[email protected]>")
source_url("https://github.com/zlib-ng/zlib-ng/archive/refs/tags/2.3.3.tar.gz")
builddep("shortcut/c++")
def build():
cpp.cmake(["-DZLIB_COMPAT=ON", "-DINSTALL_UTILS=ON"])
+5 -2
View File
@@ -1,13 +1,16 @@
import os
import lib.cpp as cpp
from lib.make import *
version("1.5.7")
description("Zstandard - Fast real-time compression algorithm")
maintainer("sisungo <[email protected]>")
source_url(
"https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz"
)
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.make(["HAVE_ZLIB=0", "HAVE_LZMA=0", "HAVE_LZ4=0"])
+110 -15
View File
@@ -7,7 +7,9 @@ import typing
import hooks
import lib.arch
import lib.atombuild
import lib.make
import lib.packie
import lib.pkgcomposer
import lib.sources
@@ -20,13 +22,19 @@ argparser = argparse.ArgumentParser(
argparser.add_argument(
"--target", type=str, help="Target architecture to build the package for"
)
argparser.add_argument("--atombuild", action="store_true", help="Enable Atom Build")
subparsers = argparser.add_subparsers(dest="subcommand")
parser_build = subparsers.add_parser("build")
parser_build.add_argument("BUILD_PKGNAME")
parser_clean = subparsers.add_parser("clean")
parser_clean.add_argument("CLEAN_PKGNAME")
parser_clean.add_argument("CLEAN_PKGNAME", nargs="*")
parser_clean.add_argument("--all", action="store_true")
parser_clean.add_argument("--no-artifacts", action="store_true")
parser_list = subparsers.add_parser("list")
parser_list.add_argument("ITEM", choices=("all", "built", "new"))
parser_repo_push = subparsers.add_parser("repo-push")
parser_repo_push.add_argument("REPO_DIR")
parser_repo_push.add_argument("REPO_PUSH_PKGNAME", nargs="*")
args = argparser.parse_args()
if args.target:
@@ -47,7 +55,7 @@ def run_hooks(map, arg: typing.Any = None):
os.chdir(current_dir)
def run_build_package(package: str):
def cmd_build_package(package: str):
try:
os.chdir(f"packages/{package}")
os.makedirs("target", exist_ok=True)
@@ -64,6 +72,9 @@ def run_build_package(package: str):
print(f"Architecture {lib.arch.get_target()} is not supported for this package")
exit(1)
if os.environ.get("SEMIOS_PKGBUILD_IN_ATOMIC", "0") == "1":
lib.packie.install(lib.make._builddep)
# Run `pre_build` hooks
run_hooks(hooks.pre_build)
@@ -107,8 +118,10 @@ def run_build_package(package: str):
"name": pkgname,
"version": pkgver,
"arch": pkgarch,
"description": pkginfo[lib.make._key_description],
"dependencies": pkginfo[lib.make._key_dependencies],
"provides": pkginfo[lib.make._key_provides],
"recommendations": pkginfo[lib.make._key_recommendations],
}
composer.write_manifest(manifest)
composer.write_links(pkginfo[lib.make._key_links])
@@ -119,25 +132,37 @@ def run_build_package(package: str):
file.write("OK")
def run_clean_package(package: str):
try:
shutil.rmtree(f"packages/{package}/target")
except Exception:
pass
def cmd_clean_package(package: list[str]):
for i in package:
targetdir = f"packages/{i}/target"
if not os.path.exists(targetdir):
continue
if args.no_artifacts:
for file in os.listdir(targetdir):
path = f"{targetdir}/{file}"
if file.endswith(".pkg") or file == "build-ok.tag":
continue
if os.path.isfile(path) or os.path.islink(path):
os.remove(path)
else:
shutil.rmtree(path)
else:
shutil.rmtree(targetdir)
def run_list(item):
def do_list(item: str):
if item == "all":
for i in os.listdir("packages"):
if i.startswith("."):
continue
print(i)
yield i
elif item == "built":
for i in os.listdir("packages"):
if i.startswith("."):
continue
if os.path.exists(f"packages/{i}/target/build-ok.tag"):
print(i)
yield i
elif item == "new":
for i in os.listdir("packages"):
if i.startswith("."):
@@ -146,17 +171,87 @@ def run_list(item):
pkgbuild_mtime = os.path.getmtime(f"packages/{i}/pkgbuild.py")
target_mtime = os.path.getmtime(f"packages/{i}/target/build-ok.tag")
if target_mtime < pkgbuild_mtime:
print(i)
yield i
except Exception:
print(i)
yield i
def cmd_list(item):
for i in do_list(item):
print(i)
def cmd_build_atom(pkgname: str):
# Declare necessary paths
repo_root = os.getcwd()
package_dir = f"{repo_root}/packages/{pkgname}"
target_dir = f"{package_dir}/target"
build_env_root = f"{target_dir}/atombuild_root"
# Read `pkgbuild.py` of that package
lib.make._in_atombuild = True
try:
os.chdir(package_dir)
os.makedirs(target_dir, exist_ok=True)
except Exception:
print(f"No such package {pkgname}")
exit(1)
importlib.import_module(f"packages.{pkgname}.pkgbuild")
os.chdir(repo_root)
# Initialize build environment
lib.atombuild.prepare_build_env(build_env_root, lib.make._builddep)
lib.atombuild.copy_pkgbuild_tree(repo_root, pkgname, build_env_root)
lib.atombuild.enter_build_env(
build_env_root,
["./x", "--target", lib.arch.get_target(), "build", pkgname],
chdir="/Atom",
)
# Copy artifacts
atom_target_dir = f"{build_env_root}/Atom/packages/{pkgname}/target"
try:
for i in os.listdir(atom_target_dir):
if i.endswith(".pkg"):
shutil.copy2(f"{atom_target_dir}/{i}", f"{target_dir}/{i}")
except Exception:
pass
# Build success
with open(f"{target_dir}/build-ok.tag", "wt+") as file:
file.write("OK")
def cmd_repo_push(repo_dir: str, pkgname: list[str]):
for pkg in pkgname:
targetdir = f"packages/{pkg}/target"
if not os.path.exists(targetdir):
print(f"error: failed to add '{pkg}': package is not built")
continue
for target_file in os.listdir(targetdir):
if not target_file.endswith(".pkg"):
continue
try:
lib.packie.repo_add(repo_dir, f"{targetdir}/{target_file}")
except:
print(f"error: failed to add '{pkg}': see the output above")
if args.subcommand == "build":
run_build_package(args.BUILD_PKGNAME)
if args.atombuild:
cmd_build_atom(args.BUILD_PKGNAME)
else:
cmd_build_package(args.BUILD_PKGNAME)
elif args.subcommand == "clean":
run_clean_package(args.CLEAN_PKGNAME)
if args.all:
pkgs = os.listdir("packages")
else:
pkgs = args.CLEAN_PKGNAME
cmd_clean_package(pkgs)
elif args.subcommand == "list":
run_list(args.ITEM)
cmd_list(args.ITEM)
elif args.subcommand == "repo-push":
cmd_repo_push(args.REPO_DIR, args.REPO_PUSH_PKGNAME)
else:
print("error: no action specified", file=sys.stderr)
exit(1)