Compare commits

...
174 Commits
Author SHA1 Message Date
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 e9f52ee363 feat: add package grep
Signed-off-by: sisungo <[email protected]>
2026-07-06 20:30:57 +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 f76006e595 Merge pull request 'feat: add package vim' (#92) from sisungo/semios-packages:vim into master
Reviewed-on: semios/semios-packages#92
2026-07-05 10:51:04 +08:00
sisungo fea89673ed feat: add package vim
Signed-off-by: sisungo <[email protected]>
2026-07-05 10:47:55 +08:00
sisungo 487ac4a679 Merge pull request 'feat: improve llvm packaging' (#51) from sisungo/semios-packages:llvm-maintain into master
Reviewed-on: semios/semios-packages#51
2026-07-04 22:33:55 +08:00
sisungo e55d5e74db Merge pull request 'fix: invalid semi-libc version format' (#90) from sisungo/semios-packages:libc-ver into master
Reviewed-on: semios/semios-packages#90
2026-07-04 22:31:17 +08:00
sisungo 868a631c93 fix: invalid semi-libc version format
Signed-off-by: sisungo <[email protected]>
2026-07-04 22:30:05 +08:00
sisungo 92192d5fba Merge pull request 'feat: update semi-libc to v1.2.6-1' (#89) from sisungo/semios-packages:libc-ver into master
Reviewed-on: semios/semios-packages#89
2026-07-04 22:26:55 +08:00
sisungo bbe4604406 feat: update semi-libc to v1.2.6-1
Signed-off-by: sisungo <[email protected]>
2026-07-04 22:26:20 +08:00
sisungo c471a18585 Merge pull request 'feat: add package libopus' (#69) from sisungo/semios-packages:libopus into master
Reviewed-on: semios/semios-packages#69
2026-07-04 20:51:57 +08:00
sisungo c4e694cd42 Merge pull request 'feat: add package alsa-lib' (#68) from sisungo/semios-packages:alsa-lib into master
Reviewed-on: semios/semios-packages#68
2026-07-04 20:50:24 +08:00
sisungo 7300eb7d00 Merge pull request 'feat: add package iproute2' (#67) from sisungo/semios-packages:iproute2 into master
Reviewed-on: semios/semios-packages#67
2026-07-04 20:48:11 +08:00
sisungo aba5fba2e3 Merge pull request 'feat: add package rhash' (#73) from sisungo/semios-packages:rhash into master
Reviewed-on: semios/semios-packages#73
2026-07-04 20:46:53 +08:00
sisungo 3ced6357dc Merge pull request 'feat: add package certutil' (#86) from sisungo/semios-packages:certutil into master
Reviewed-on: semios/semios-packages#86
2026-07-04 19:19:05 +08:00
sisungo b026069a61 Merge pull request 'feat: add package libgcc-compat' (#87) from sisungo/semios-packages:libgcc-compat into master
Reviewed-on: semios/semios-packages#87
2026-07-04 19:18:45 +08:00
sisungo bafd4098a8 Merge pull request 'fix: source_url does not support file://' (#88) from sisungo/semios-packages:sources-file into master
Reviewed-on: semios/semios-packages#88
2026-07-04 19:18:34 +08:00
sisungo ed7d0b5680 fix: source_url does not support file://
Signed-off-by: sisungo <[email protected]>
2026-07-04 19:17:40 +08:00
sisungo 66626cf702 feat: add package libgcc-compat
Signed-off-by: sisungo <[email protected]>
2026-07-04 19:16:36 +08:00
sisungo bfd4548869 feat: add package certutil
Signed-off-by: sisungo <[email protected]>
2026-07-04 19:01:53 +08:00
sisungo e3d032623f feat: improve llvm packaging
Signed-off-by: sisungo <[email protected]>
2026-07-04 18:35:57 +08:00
sisungo abfe30c539 Merge pull request 'feat: add package gettext-tiny' (#84) from sisungo/semios-packages:gettext-tiny into master
Reviewed-on: semios/semios-packages#84
2026-07-04 14:00:09 +08:00
sisungo b0ae1f4bf4 Merge pull request 'feat: add package ca-certificates' (#85) from sisungo/semios-packages:ca-certificates into master
Reviewed-on: semios/semios-packages#85
2026-07-04 13:59:56 +08:00
sisungo 2938e9e969 feat: add package ca-certificates
Signed-off-by: sisungo <[email protected]>
2026-07-04 12:35:05 +08:00
sisungo 50e41c4c36 feat: add package gettext-tiny
Signed-off-by: sisungo <[email protected]>
2026-07-04 11:40:00 +08:00
sisungo b0b40ef774 feat: add package git
Signed-off-by: sisungo <[email protected]>
2026-07-04 11:27:01 +08:00
sisungo df1accfb3e Merge pull request 'feat: add package brotli' (#80) from sisungo/semios-packages:brotli into master
Reviewed-on: semios/semios-packages#80
2026-07-04 10:49:08 +08:00
sisungo 2fa379760a Merge pull request 'feat: add package perl' (#81) from sisungo/semios-packages:perl into master
Reviewed-on: semios/semios-packages#81
2026-07-04 10:48:54 +08:00
sisungo f541a95e49 Merge pull request 'fix: autostrip fails on read-only permissions' (#82) from sisungo/semios-packages:autostrip-perm into master
Reviewed-on: semios/semios-packages#82
2026-07-03 22:45:01 +08:00
sisungo 764a7355f0 fix: autostrip fails on read-only permissions
Signed-off-by: sisungo <[email protected]>
2026-07-03 22:44:19 +08:00
sisungo b7d9d9b7d6 feat: add package perl
Signed-off-by: sisungo <[email protected]>
2026-07-03 22:30:54 +08:00
sisungo f55398575a feat: add package brotli
Signed-off-by: sisungo <[email protected]>
2026-07-03 12:36:35 +08:00
sisungo 3a4307f811 feat: add package c-ares
Signed-off-by: sisungo <[email protected]>
2026-07-03 12:32:14 +08:00
sisungo 2b73f626a1 feat: add package rhash
Signed-off-by: sisungo <[email protected]>
2026-07-03 11:09:53 +08:00
sisungo aef0d22091 Merge pull request 'feat: add links to libarchive-tools' (#71) from sisungo/semios-packages:link-bsdtar-bsdcpio into master
Reviewed-on: semios/semios-packages#71
2026-07-03 09:55:46 +08:00
sisungo 424ff5f6e4 feat: add links to libarchive-tools
Signed-off-by: sisungo <[email protected]>
2026-07-03 09:54:29 +08:00
sisungo 3022b06b20 feat: add package libopus
Signed-off-by: sisungo <[email protected]>
2026-07-02 22:46:48 +08:00
sisungo dac07d40bb feat: add package iproute2
Signed-off-by: sisungo <[email protected]>
2026-07-02 22:44:17 +08:00
sisungo f947e27187 feat: add package alsa-lib
Signed-off-by: sisungo <[email protected]>
2026-07-02 22:40:43 +08:00
sisungo e0cbdf7a1b Merge pull request 'feat: add package bmake' (#65) from sisungo/semios-packages:bmake into master
Reviewed-on: semios/semios-packages#65
2026-07-02 22:36:32 +08:00
sisungo 19659a6b43 Merge pull request 'feat: add prefix support' (#70) from sisungo/semios-packages:prefix into master
Reviewed-on: semios/semios-packages#70
2026-07-02 22:35:46 +08:00
sisungo f7ff9d9742 feat: add prefix support
Signed-off-by: sisungo <[email protected]>
2026-07-02 22:35:03 +08:00
sisungo c9627305c2 Merge pull request 'feat: add package libffi' (#61) from sisungo/semios-packages:libffi into master
Reviewed-on: semios/semios-packages#61
2026-06-29 16:37:04 +08:00
sisungo 69adb4a599 Merge pull request 'feat: add package neatvi' (#60) from sisungo/semios-packages:neatvi into master
Reviewed-on: semios/semios-packages#60
2026-06-29 16:36:49 +08:00
sisungo 7076f76481 Merge pull request 'feat: add package awk' (#64) from sisungo/semios-packages:awk into master
Reviewed-on: semios/semios-packages#64
2026-06-29 16:36:33 +08:00
sisungo 83e967f858 feat: add package bmake
Signed-off-by: sisungo <[email protected]>
2026-06-29 16:23:56 +08:00
sisungo bc23a14b1a feat: add package awk
Signed-off-by: sisungo <[email protected]>
2026-06-29 15:43:38 +08:00
sisungo 5b78c48d8e feat: add package libffi
Signed-off-by: sisungo <[email protected]>
2026-06-29 14:13:56 +08:00
sisungo 36ceb91590 feat: add package neatvi
Signed-off-by: sisungo <[email protected]>
2026-06-29 13:56:33 +08:00
sisungo f24ea2d4bf Merge pull request 'feat: use packie new links format' (#59) from sisungo/semios-packages:new-links-format into master
Reviewed-on: semios/semios-packages#59
2026-06-28 17:12:16 +08:00
sisungo b4aa642b52 feat: use packie new links format
Signed-off-by: sisungo <[email protected]>
2026-06-28 16:31:35 +08:00
sisungo 9eb4453f3a Merge pull request 'feat: update aws-lc OPENSSLDIR' (#58) from sisungo/semios-packages:aws-lc-patch into master
Reviewed-on: semios/semios-packages#58
2026-06-28 11:32:43 +08:00
sisungo 132c47e419 Merge pull request 'feat: add aws-lc support for python' (#57) from sisungo/semios-packages:python into master
Reviewed-on: semios/semios-packages#57
2026-06-28 10:25:56 +08:00
sisungo 596b055467 feat: update aws-lc OPENSSLDIR
Signed-off-by: sisungo <[email protected]>
2026-06-28 03:35:34 +08:00
sisungo cc0a73feff feat: add aws-lc support for python
Signed-off-by: sisungo <[email protected]>
2026-06-28 02:46:31 +08:00
sisungo 4b842d43be Merge pull request 'feat: add package file' (#52) from sisungo/semios-packages:file into master
Reviewed-on: semios/semios-packages#52
2026-06-27 22:00:27 +08:00
sisungo 7f1ee4b598 Merge pull request 'feat: update aws-lc to 5.1.0' (#56) from sisungo/semios-packages:aws-lc-update into master
Reviewed-on: semios/semios-packages#56
2026-06-27 22:00:09 +08:00
sisungo 15eb054209 feat: update aws-lc to 5.1.0
Signed-off-by: sisungo <[email protected]>
2026-06-27 21:31:22 +08:00
sisungo 16a1087785 feat: add package file
Signed-off-by: sisungo <[email protected]>
2026-06-27 18:28:20 +08:00
sisungo d0186dacb5 Merge pull request 'feat: add package python' (#49) from sisungo/semios-packages:python into master
Reviewed-on: semios/semios-packages#49
2026-06-27 13:45:30 +08:00
sisungo 574f8a5996 Merge pull request 'feat: update semi-libc to v1.2.6' (#50) from sisungo/semios-packages:semi-libc-new into master
Reviewed-on: semios/semios-packages#50
2026-06-27 13:44:27 +08:00
sisungo bb3c5b2741 feat: update semi-libc to v1.2.6
Signed-off-by: sisungo <[email protected]>
2026-06-27 13:43:36 +08:00
sisungo e749a4f1f9 feat: add package python
Signed-off-by: sisungo <[email protected]>
2026-06-27 10:46:20 +08:00
sisungo 10ca4e4931 Merge pull request 'feat: add package openssh' (#47) from sisungo/semios-packages:openssh into master
Reviewed-on: semios/semios-packages#47
2026-06-26 19:58:49 +08:00
sisungo e65eee4bf1 Merge pull request 'feat: add package iana-timezone' (#46) from sisungo/semios-packages:iana-timezone into master
Reviewed-on: semios/semios-packages#46
2026-06-26 19:58:39 +08:00
sisungo 7797e7674c Merge pull request 'feat: add package mandoc' (#45) from sisungo/semios-packages:mandoc into master
Reviewed-on: semios/semios-packages#45
2026-06-26 19:58:24 +08:00
sisungo d9b7a01d01 Merge pull request 'feat: add package ncurses' (#48) from sisungo/semios-packages:ncurses into master
Reviewed-on: semios/semios-packages#48
2026-06-26 19:58:08 +08:00
sisungo 232d8c51d6 feat: add package ncurses
Signed-off-by: sisungo <[email protected]>
2026-06-26 18:11:33 +08:00
sisungo 56998f9787 feat: add package openssh
Signed-off-by: sisungo <[email protected]>
2026-06-26 17:07:35 +08:00
sisungo 510eca1ab6 feat: add package iana-timezone
Signed-off-by: sisungo <[email protected]>
2026-06-26 16:43:12 +08:00
sisungo 057330e43f feat: add package mandoc
Signed-off-by: sisungo <[email protected]>
2026-06-26 14:30:24 +08:00
sisungo 0ba3f9a31c Merge pull request 'feat: add package ripgrep' (#41) from sisungo/semios-packages:ripgrep into master
Reviewed-on: semios/semios-packages#41
2026-06-26 14:12:41 +08:00
sisungo 63c3485f5e Merge pull request 'feat: add package sed' (#42) from sisungo/semios-packages:sed into master
Reviewed-on: semios/semios-packages#42
2026-06-26 14:12:26 +08:00
sisungo 9835791b4c Merge pull request 'feat: add package nextvi' (#40) from sisungo/semios-packages:nextvi into master
Reviewed-on: semios/semios-packages#40
2026-06-26 14:12:15 +08:00
sisungo 204f650c63 Merge pull request 'fix: some dependencies are invalid' (#44) from sisungo/semios-packages:fix-deps into master
Reviewed-on: semios/semios-packages#44
2026-06-26 14:12:01 +08:00
sisungo e9fe74358f Merge pull request 'feat: add link to /bin/sh in mksh' (#39) from sisungo/semios-packages:mksh-link into master
Reviewed-on: semios/semios-packages#39
2026-06-26 14:11:48 +08:00
sisungo 962c916ae1 fix: some dependencies are invalid
Signed-off-by: sisungo <[email protected]>
2026-06-26 13:37:12 +08:00
sisungo 248c0bbc66 Merge pull request 'feat: add unix functions to coreutils' (#38) from sisungo/semios-packages:coreutils-unix into master
Reviewed-on: semios/semios-packages#38
2026-06-25 21:52:24 +08:00
sisungo 33d3df6dfc feat: add package nextvi
Signed-off-by: sisungo <[email protected]>
2026-06-25 06:46:24 +08:00
sisungo bffd8e3cdc feat: add link to /bin/sh in mksh
Signed-off-by: sisungo <[email protected]>
2026-06-25 06:19:26 +08:00
sisungo 51368da8ff feat: add package ripgrep
Signed-off-by: sisungo <[email protected]>
2026-06-25 06:14:38 +08:00
sisungo f8f18ce917 feat: add package sed
Signed-off-by: sisungo <[email protected]>
2026-06-25 06:10:15 +08:00
sisungo f7242af3a9 feat: add unix functions to coreutils
Signed-off-by: sisungo <[email protected]>
2026-06-25 05:57:11 +08:00
sisungo a3dbac2b67 Merge pull request 'feat: add dependencies and provisions' (#37) from sisungo/semios-packages:deps into master
Reviewed-on: semios/semios-packages#37
2026-06-23 15:29:18 +08:00
sisungo 383433a365 feat: add dependencies and provisions
Signed-off-by: sisungo <[email protected]>
2026-06-23 15:27:46 +08:00
sisungo 844b40daaa Merge pull request 'fix: architecture environments overrides inherited' (#36) from sisungo/semios-packages:arches into master
Reviewed-on: semios/semios-packages#36
2026-06-22 19:14:50 +08:00
sisungo e568b3f8ee fix: architecture environments overrides inherited
Signed-off-by: sisungo <[email protected]>
2026-06-22 18:32:41 +08:00
sisungo a1ae78330c Merge pull request 'feat: refactor ./x script' (#35) from sisungo/semios-packages:master into master
Reviewed-on: semios/semios-packages#35
2026-06-22 17:41:40 +08:00
sisungo 9ca10cb556 feat: refactor ./x script
Signed-off-by: sisungo <[email protected]>
2026-06-22 17:38:23 +08:00
sisungo 95a92ddae2 Merge pull request 'feat: add package llvm-project' (#25) from sisungo/semios-packages:llvm-project into master
Reviewed-on: semios/semios-packages#25
2026-06-21 20:36:38 +08:00
sisungo e6dd47ca7f feat: add package llvm-project
Signed-off-by: sisungo <[email protected]>
2026-06-21 20:35:56 +08:00
sisungo 2d9586117e Merge pull request 'feat: add package icu4c' (#33) from sisungo/semios-packages:icu4c into master
Reviewed-on: semios/semios-packages#33
2026-06-18 18:59:24 +08:00
sisungo 4df9ac681f Merge pull request 'feat (lib): fix cpp auto-pack symlink error' (#34) from sisungo/semios-packages:cpp_fixup into master
Reviewed-on: semios/semios-packages#34
2026-06-18 18:59:11 +08:00
sisungo a47f241569 Merge pull request 'feat: add package airup' (#32) from sisungo/semios-packages:airup into master
Reviewed-on: semios/semios-packages#32
2026-06-18 18:58:32 +08:00
sisungo df21a97eb1 Merge pull request 'feat (lib): add artifacts_dir to rust' (#31) from sisungo/semios-packages:rust-artifacts into master
Reviewed-on: semios/semios-packages#31
2026-06-18 18:55:08 +08:00
sisungo adea3cc896 feat: add package airup
Signed-off-by: sisungo <[email protected]>
2026-06-18 01:25:39 +08:00
sisungo 8fe867991c feat (lib): fix cpp auto-pack symlink error
Signed-off-by: sisungo <[email protected]>
2026-06-18 01:20:14 +08:00
sisungo 5a36fc628c feat: add package icu4c
Signed-off-by: sisungo <[email protected]>
2026-06-18 01:19:16 +08:00
sisungo 18f624e3c9 feat (lib): add artifacts_dir to rust
Signed-off-by: sisungo <[email protected]>
2026-06-17 20:27:37 +08:00
sisungo 0cc9a5c843 Merge pull request 'feat: add package nghttp2' (#30) from sisungo/semios-packages:nghttp2 into master
Reviewed-on: semios/semios-packages#30
2026-06-13 22:58:44 +08:00
sisungo 187e56dfef feat: add package nghttp2
Signed-off-by: sisungo <[email protected]>
2026-06-13 18:16:40 +08:00
sisungo a24cf0b528 Merge pull request 'fix: coreutils links are invalid' (#29) from sisungo/semios-packages:coreutils-links into master
Reviewed-on: semios/semios-packages#29
2026-06-13 12:46:29 +08:00
sisungo 73b1fcd745 fix: coreutils links are invalid
Signed-off-by: sisungo <[email protected]>
2026-06-13 12:45:37 +08:00
sisungo 878a501804 Merge pull request 'feat: add links to coreutils' (#28) from sisungo/semios-packages:coreutils-links into master
Reviewed-on: semios/semios-packages#28
2026-06-13 12:22:36 +08:00
sisungo eee111823d feat: add links to coreutils
Signed-off-by: sisungo <[email protected]>
2026-06-13 12:21:58 +08:00
sisungo 2dfaea6426 Merge pull request 'fix: autostrip caught wrong binaries' (#27) from sisungo/semios-packages:master into master
Reviewed-on: semios/semios-packages#27
2026-06-13 12:14:31 +08:00
sisungo d61c4ab118 fix: autostrip caught wrong binaries
Signed-off-by: sisungo <[email protected]>
2026-06-13 12:13:59 +08:00
sisungo a3690e710c Merge pull request 'feat: add package kmod' (#24) from sisungo/semios-packages:kmod into master
Reviewed-on: semios/semios-packages#24
2026-06-13 12:03:04 +08:00
sisungo a1f00f3b4f Merge pull request 'feat (lib): add autolink and autostrip' (#26) from sisungo/semios-packages:master into master
Reviewed-on: semios/semios-packages#26
2026-06-13 12:02:48 +08:00
sisungo d4a8040a9c feat (lib): add autolink and autostrip
Signed-off-by: sisungo <[email protected]>
2026-06-13 12:01:43 +08:00
sisungo ddd14ddfda feat: add package kmod
Signed-off-by: sisungo <[email protected]>
2026-06-12 17:40:41 +08:00
sisungo e8234fc32a Merge pull request 'feat: add package bzip2' (#20) from sisungo/semios-packages:bzip2 into master
Reviewed-on: semios/semios-packages#20
2026-06-12 13:16:06 +08:00
sisungo 1c1b8c0a5f Merge pull request 'feat: add package xz' (#21) from sisungo/semios-packages:xz into master
Reviewed-on: semios/semios-packages#21
2026-06-12 13:15:54 +08:00
sisungo 35d6dda90a Merge pull request 'feat (lib): add cpp.meson build' (#22) from sisungo/semios-packages:mesonbuild into master
Reviewed-on: semios/semios-packages#22
2026-06-12 13:15:39 +08:00
sisungo 3b4bd8274b Merge pull request 'feat: add package pkgconf' (#23) from sisungo/semios-packages:pkgconf into master
Reviewed-on: semios/semios-packages#23
2026-06-12 13:15:26 +08:00
sisungo 52237e92c3 Merge pull request 'feat: add package expat' (#19) from sisungo/semios-packages:expat into master
Reviewed-on: semios/semios-packages#19
2026-06-12 13:15:15 +08:00
sisungo 1a88d3cc3f feat: add package pkgconf
Signed-off-by: sisungo <[email protected]>
2026-06-12 12:34:33 +08:00
sisungo cdfa61524c feat (lib): add cpp.meson build
Signed-off-by: sisungo <[email protected]>
2026-06-12 12:33:56 +08:00
sisungo 5c7754c852 feat: add package xz
Signed-off-by: sisungo <[email protected]>
2026-06-12 11:42:33 +08:00
sisungo d415dd8ea5 feat: add package bzip2
Signed-off-by: sisungo <[email protected]>
2026-06-12 11:32:42 +08:00
sisungo 44ac99e6b9 feat: add package expat
Signed-off-by: sisungo <[email protected]>
2026-06-12 11:20:39 +08:00
sisungo 6fba906736 Merge pull request 'feat: add package findutils' (#16) from sisungo/semios-packages:findutils into master
Reviewed-on: semios/semios-packages#16
2026-06-12 11:08:35 +08:00
sisungo 1092471a91 Merge pull request 'feat: add package diffutils' (#17) from sisungo/semios-packages:diffutils into master
Reviewed-on: semios/semios-packages#17
2026-06-12 11:07:52 +08:00
sisungo 64e961c02b Merge pull request 'feat: add package linux' (#18) from sisungo/semios-packages:linux into master
Reviewed-on: semios/semios-packages#18
2026-06-12 11:07:05 +08:00
sisungo 675af1b352 feat: add package linux
Signed-off-by: sisungo <[email protected]>
2026-06-12 11:05:29 +08:00
sisungo 909f4b009b feat: add package findutils
Signed-off-by: sisungo <[email protected]>
2026-06-11 19:13:11 +08:00
82 changed files with 12232 additions and 64 deletions
+8 -2
View File
@@ -1,14 +1,20 @@
from typing import Callable, TypeAlias from typing import Callable, TypeAlias
from . import autopatch, autostrip from lib import pkgcomposer
from . import autolink, autopatch, autostrip
PreBuild: TypeAlias = Callable[[], None] PreBuild: TypeAlias = Callable[[], None]
PostBuild: TypeAlias = Callable[[], None] PostBuild: TypeAlias = Callable[[], None]
PostPack: TypeAlias = Callable[[pkgcomposer.PkgComposer], None]
pre_build: dict[str, PreBuild] = { pre_build: dict[str, PreBuild] = {
"autopatch": autopatch.autopatch, "autopatch": autopatch.autopatch,
} }
post_build: dict[str, PostBuild] = { post_build: dict[str, PostBuild] = {}
post_pack: dict[str, PostPack] = {
"autolink": autolink.autolink,
"autostrip": autostrip.autostrip, "autostrip": autostrip.autostrip,
} }
+31
View File
@@ -0,0 +1,31 @@
import os
from lib import arch, common, make, pkgcomposer
def autolink(composer: pkgcomposer.PkgComposer):
os.chdir(composer.workdir + "/bundle/")
try:
for i in common.treedir("bin"):
if i.is_file():
make.link(f"bin/{i.name}", "/bin/" + i.name)
except Exception:
pass
try:
for i in common.treedir("lib"):
if i.is_file():
make.link(f"lib/{i.name}", "/lib/" + arch.get_target() + "/" + i.name)
except Exception:
pass
try:
for i in common.treedir("include"):
if i.is_file():
make.link(
f"include/{i.name}",
"/lib/" + arch.get_target() + "/include/" + i.name,
)
except Exception:
pass
+26 -2
View File
@@ -1,2 +1,26 @@
def autostrip(): import os
pass import stat
import subprocess
from lib import common
strip = os.environ.get("STRIP", "strip")
def _is_elf(filepath):
with open(filepath, "rb") as f:
return f.read(4) == b"\x7fELF"
def autostrip(composer):
for ent in common.treedir(composer.workdir):
if not ent.is_file(follow_symlinks=False):
continue
if not (os.access(ent.path, os.X_OK) or ".so" in ent.name):
continue
if not _is_elf(ent.path):
continue
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)
+15 -3
View File
@@ -3,7 +3,18 @@ import os
from . import packie from . import packie
all: dict[str, dict[str, str]] = { all: dict[str, dict[str, str]] = {
"aarch64-semios-linux": {}, "aarch64-semios-linux": {
"CC": "clang -target aarch64-semios-linux-musl",
"CXX": "clang++ -target aarch64-semios-linux-musl",
},
"x86_64-semios-linux": {
"CC": "clang -target x86_64-semios-linux-musl",
"CXX": "clang++ -target x86_64-semios-linux-musl",
},
"riscv64-semios-linux": {
"CC": "clang -target riscv64-semios-linux-musl",
"CXX": "clang++ -target riscv64-semios-linux-musl",
},
} }
_target: str = packie.host_arch() _target: str = packie.host_arch()
@@ -15,5 +26,6 @@ def get_target():
def set_target(arch: str): def set_target(arch: str):
global _target global _target
_target = arch _target = arch
for key, val in all[_target]: for key in all[_target].keys():
os.environ[key] = val if not os.environ.get(key):
os.environ[key] = all[_target][key]
+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",
"patch",
"zstd",
"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):
os.makedirs(root, exist_ok=True)
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")
os.makedirs(f"{root}/var/db/packie")
shutil.copytree("/var/config/packie/repos.d", f"{root}/var/config/packie/repos.d")
os.mkdir(f"{root}/dev")
os.mkdir(f"{root}/sys")
os.mkdir(f"{root}/proc")
os.makedirs(f"{root}/home/root")
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"])
# Copy DNS config
os.makedirs(f"{root}/etc", exist_ok=True)
shutil.copy2("/etc/resolv.conf", f"{root}/etc/resolv.conf")
# 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",
"--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)
+46 -3
View File
@@ -1,4 +1,5 @@
import os import os
import shutil
import subprocess import subprocess
from lib.common import treedir from lib.common import treedir
@@ -28,27 +29,64 @@ 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] = []): def make(rem: list[str] = []):
subprocess.run(["make", f"-j{os.cpu_count()}"] + rem, check=True) subprocess.run(["make", f"-j{os.cpu_count()}"] + rem, check=True)
def make_install(rem: list[str] | None = None, chdir: bool = True): def make_install(rem: list[str] | None = None, chdir: bool = True, move: bool = True):
default_rem = ["DESTDIR=" + os.getcwd() + "/../cpp_install"] default_rem = ["DESTDIR=" + os.getcwd() + "/../cpp_install"]
if rem is None:
try:
shutil.rmtree("../cpp_install")
except:
pass
subprocess.run(["make", "install"] + (rem or default_rem), check=True) subprocess.run(["make", "install"] + (rem or default_rem), check=True)
if rem is None and chdir: if rem is None and chdir:
os.chdir("../cpp_install") os.chdir("../cpp_install")
if chdir and move:
_move_install()
def ninja(rem: list[str] = []): def ninja(rem: list[str] = []):
subprocess.run(["ninja"] + rem, check=True) 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: if chdir:
os.environ["DESTDIR"] = os.getcwd() + "/../cpp_install" os.environ["DESTDIR"] = os.getcwd() + "/../cpp_install"
subprocess.run(["ninja", "install"] + rem, check=True) subprocess.run(["ninja", "install"] + rem, check=True)
if chdir: if chdir:
os.chdir(os.environ["DESTDIR"]) os.chdir(os.environ["DESTDIR"])
if chdir and move:
_move_install()
def meson_setup(rem: list[str] = []):
subprocess.run(["meson", "setup", "_meson_build"] + rem, check=True)
def meson_compile(rem: list[str] = []):
subprocess.run(["meson", "compile", "-C", "_meson_build"] + rem, check=True)
def meson_install(rem: list[str] | None = None, chdir: bool = True):
default_rem = ["--destdir", f"{os.getcwd()}/../cpp_install"]
if not rem:
os.makedirs("../cpp_install", exist_ok=True)
subprocess.run(
["meson", "install", "-C", "_meson_build"] + (rem or default_rem), check=True
)
if chdir:
os.chdir("../cpp_install")
def _do_auto_pack(pc: pkgcomposer.PkgComposer, srcdir: str, dstdir: str, filter): def _do_auto_pack(pc: pkgcomposer.PkgComposer, srcdir: str, dstdir: str, filter):
@@ -64,7 +102,10 @@ def _do_auto_pack(pc: pkgcomposer.PkgComposer, srcdir: str, dstdir: str, filter)
pc.makedirs(os.path.dirname(f"{dstdir}/{ent.name}")) pc.makedirs(os.path.dirname(f"{dstdir}/{ent.name}"))
pc.addfile(ent.path, f"{dstdir}/{ent.name}") pc.addfile(ent.path, f"{dstdir}/{ent.name}")
elif ent.is_symlink() and not os.path.isabs(os.readlink(ent.path)): elif ent.is_symlink() and not os.path.isabs(os.readlink(ent.path)):
pc.addfile(ent.path, f"{dstdir}/{ent.name}") try:
pc.addfile(ent.path, f"{dstdir}/{ent.name}")
except Exception:
pass
def _is_dev_file(ent) -> bool: def _is_dev_file(ent) -> bool:
@@ -75,6 +116,8 @@ def _is_dev_file(ent) -> bool:
or ent.name.endswith(".pc") or ent.name.endswith(".pc")
or ent.name.endswith(".h") or ent.name.endswith(".h")
or ent.name.endswith(".cmake") or ent.name.endswith(".cmake")
or ent.name.endswith(".inc")
or ("Makefile" in ent.name)
) )
+81 -3
View File
@@ -1,5 +1,7 @@
import typing import typing
from lib import arch
from . import pkgcomposer, sources from . import pkgcomposer, sources
_key_global = "@global" _key_global = "@global"
@@ -7,21 +9,54 @@ _key_version = "version"
_key_description = "description" _key_description = "description"
_key_on_pack = "on_pack" _key_on_pack = "on_pack"
_key_arch_any = "arch_any" _key_arch_any = "arch_any"
_key_links = "links"
_key_dependencies = "dependencies"
_key_recommendations = "recommendations"
_key_provides = "provides"
_current_pkgname: str = _key_global _current_pkgname: str = _key_global
_pkginfo: dict[str, dict[str, typing.Any]] = { _pkginfo: dict[str, dict[str, typing.Any]] = {
_key_global: {}, _key_global: {
_key_links: [],
_key_dependencies: [],
_key_provides: [],
_key_recommendations: [],
},
} }
_supported_arch: typing.Callable[[str], bool] = lambda x: True _supported_arch: typing.Callable[[str], bool] = lambda x: True
_on_build: typing.Callable[[], None] | None = None _on_build: typing.Callable[[], None] | None = None
_in_atombuild = False
_builddep: list[str] = []
_blocked_hooks: 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"]
else:
_builddep += [s]
def package(s: str): def package(s: str):
global _current_pkgname global _current_pkgname
_current_pkgname = s _current_pkgname = s
_pkginfo[s] = _pkginfo[_key_global].copy() _pkginfo[s] = _pkginfo[_key_global].copy()
_pkginfo[s][_key_links] = _pkginfo[s][_key_links].copy()
_pkginfo[s][_key_dependencies] = _pkginfo[s][_key_dependencies].copy()
_pkginfo[s][_key_provides] = _pkginfo[s][_key_provides].copy()
def version(s: str): def version(s: str):
@@ -36,6 +71,47 @@ def arch_any():
_pkginfo[_current_pkgname][_key_arch_any] = True _pkginfo[_current_pkgname][_key_arch_any] = True
def provide(s: str):
_pkginfo[_current_pkgname][_key_provides] += [
s.replace("@same-arch", f"@{arch.get_target()}")
]
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):
_pkginfo[_current_pkgname][_key_links] += [
{
"from": src,
"to": dst,
"default": default,
}
]
def get_prefix(pkgname: str) -> str:
pkginfo = _pkginfo[pkgname]
if pkginfo.get(_key_arch_any):
pkgarch = "any"
else:
pkgarch = arch.get_target()
return f"/pkg/{pkgname}={pkginfo[_key_version]}@{pkgarch}"
def supported_arch(s: list[str] | typing.Callable[[str], bool]): def supported_arch(s: list[str] | typing.Callable[[str], bool]):
global _supported_arch global _supported_arch
if isinstance(s, list): if isinstance(s, list):
@@ -58,8 +134,10 @@ def block_hook(hook: str):
def source_url(url: 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): 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 os
import subprocess
PACKIE_EXEC = os.getenv("PACKIE", "packie") PACKIE_EXEC = os.getenv("PACKIE", "packie")
def host_arch() -> str: def host_arch() -> str:
result = subprocess.run( result = subprocess.run(
[PACKIE_EXEC, "print", "profile.host_arch"], [PACKIE_EXEC, "print", "profile.host_arch"],
check=True, capture_output=True, check=True,
capture_output=True,
) )
return result.stdout.decode().strip() 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
)
+19 -2
View File
@@ -1,6 +1,7 @@
import json import json
import os import os
import shutil import shutil
import subprocess
import sys import sys
if sys.version_info >= (3, 14): if sys.version_info >= (3, 14):
@@ -23,7 +24,13 @@ class PkgComposer:
def write_manifest(self, manifest: dict): def write_manifest(self, manifest: dict):
with open(self.workdir + "/PkgManifest.json", "w") as f: with open(self.workdir + "/PkgManifest.json", "w") as f:
json.dump(manifest, f, indent=4) json.dump(manifest, f)
def write_links(self, links: list[dict]):
with open(self.workdir + "/_links", "w") as f:
for link in links:
json.dump(link, f)
f.write("\n")
def compose(self): def compose(self):
shutil.make_archive(self.pkgfile, _archive_format, self.workdir) shutil.make_archive(self.pkgfile, _archive_format, self.workdir)
@@ -39,4 +46,14 @@ class PkgComposer:
shutil.copy2(src, f"{self.workdir}/bundle/{dst}", follow_symlinks=False) shutil.copy2(src, f"{self.workdir}/bundle/{dst}", follow_symlinks=False)
def add_dir(self, src: str, dst: str, merge: bool = 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}")
+6 -3
View File
@@ -22,6 +22,10 @@ def build(rem: list[str] = []):
subprocess.run(cmdline) subprocess.run(cmdline)
def artifacts_dir():
return f"target/{_rust_triple(arch.get_target())}/release"
def _do_auto_pack(pc: pkgcomposer.PkgComposer, srcdir: str, dstdir: str, filter): def _do_auto_pack(pc: pkgcomposer.PkgComposer, srcdir: str, dstdir: str, filter):
pc.makedir(dstdir) pc.makedir(dstdir)
with os.scandir(srcdir) as entries: with os.scandir(srcdir) as entries:
@@ -49,11 +53,10 @@ def _autopack_filter_bin(ent) -> bool:
def _auto_pack(profiles: list[str], pc: pkgcomposer.PkgComposer): def _auto_pack(profiles: list[str], pc: pkgcomposer.PkgComposer):
target_dir = f"target/{_rust_triple(arch.get_target())}/release"
if "lib" in profiles: if "lib" in profiles:
_do_auto_pack(pc, target_dir, "lib", _autopack_filter_lib) _do_auto_pack(pc, artifacts_dir(), "lib", _autopack_filter_lib)
if "bin" in profiles: if "bin" in profiles:
_do_auto_pack(pc, target_dir, "bin", _autopack_filter_bin) _do_auto_pack(pc, artifacts_dir(), "bin", _autopack_filter_bin)
def use_auto_pack(profiles: list[str]): def use_auto_pack(profiles: list[str]):
+39
View File
@@ -30,6 +30,45 @@ def download(url, output):
last_percent = percent last_percent = percent
try: try:
if url.startswith("file://"):
file_path = url[7:]
if not os.path.exists(file_path):
raise Exception("File not found: " + file_path)
total_size = os.path.getsize(file_path)
if total_size <= 0:
print("Copying...")
with open(file_path, "rb") as src, open(output, "wb") as dst:
while True:
chunk = src.read(8192)
if not chunk:
break
dst.write(chunk)
print("Download completed: " + output)
return output
sys.stdout.write("downloading... 0%")
sys.stdout.flush()
with open(file_path, "rb") as src, open(output, "wb") as dst:
downloaded = 0
block_size = 8192
while True:
chunk = src.read(block_size)
if not chunk:
break
dst.write(chunk)
downloaded += len(chunk)
percent = int(downloaded * 100 / total_size)
report_progress(percent)
if last_percent != 100:
report_progress(100)
sys.stdout.write("\n")
print("Download completed: " + output)
return output
req = urllib.request.Request(url, method="GET") req = urllib.request.Request(url, method="GET")
req.add_header( req.add_header(
"User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
+9
View File
@@ -0,0 +1,9 @@
{
"os_name": "\u001b[36;4mSemiOS\u001b[0m",
"config_dir": "/var/config/airup",
"service_dir": "/share/airup/services",
"milestone_dir": "/share/airup/milestones",
"runtime_dir": "/run/airup",
"env_vars": {},
"early_cmds": []
}
+32
View File
@@ -0,0 +1,32 @@
import os
import shutil
from lib import rust
from lib.make import *
version("0.10.9")
source_url("https://github.com/sisungo/airup/archive/refs/tags/v0.10.9.tar.gz")
builddep("shortcut/rust")
def build():
shutil.copy2("../../build_manifest.json", "build_manifest.json")
rust.build()
on_build(build)
def pack_airup(composer):
os.chdir(rust.artifacts_dir())
composer.makedir("bin")
composer.makedir("libexec")
composer.addfile("airup", "bin/airup")
composer.addfile("airupd", "bin/airupd")
composer.addfile("airup-fallback-logger", "libexec/airup-fallback-logger")
package("airup")
on_pack(pack_airup)
dep("semi-libc @same-arch")
+52
View File
@@ -0,0 +1,52 @@
from lib import arch, cpp
from lib.make import *
upstream_version = "1.2.16.1"
version(upstream_version)
source_url("https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.16.1.tar.bz2")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.configure(
[
"--prefix=/",
f"--libdir={get_prefix('alsa-lib')}/lib",
f"--includedir={get_prefix('alsa-lib-dev')}/include",
"--enable-symbolic-functions",
f"--with-configdir={get_prefix('alsa-lib')}/share/alsa",
f"--with-plugindir=/lib/{arch.get_target()}/alsa/plugins",
]
)
cpp.make()
cpp.make_install()
on_build(build)
def pack_alsa_lib(composer):
composer.makedir("lib")
for i in [
"libasound.so",
"libasound.so.2",
"libasound.so.2.0.0",
"libatopology.so",
"libatopology.so.2",
"libatopology.so.2.0.0",
]:
composer.addfile(f"lib/{i}", f"lib/{i}")
composer.makedir("share")
composer.add_dir("share/alsa", "share/alsa")
package("alsa-lib")
dep("semi-libc @same-arch")
on_pack(pack_alsa_lib)
package("alsa-lib-dev")
dep("alsa-lib (same)")
cpp.use_auto_pack(["dev"])
+28
View File
@@ -0,0 +1,28 @@
import os
from lib import cpp
from lib.make import *
version("2026.4.26")
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()
on_build(build)
def pack(composer):
composer.makedir("bin")
composer.addfile("a.out", "bin/awk")
package("awk")
dep("semi-libc @same-arch")
on_pack(pack)
@@ -0,0 +1,11 @@
--- a/crypto/x509/x509_def.c
+++ b/crypto/x509/x509_def.c
@@ -5,7 +5,7 @@
// TODO(fork): cleanup
-#define OPENSSLDIR "/etc/ssl"
+#define OPENSSLDIR "/var/config/ssl"
#define X509_CERT_AREA OPENSSLDIR
#define X509_CERT_DIR OPENSSLDIR "/certs"
+30 -5
View File
@@ -3,16 +3,31 @@ import os
import lib.cpp as cpp import lib.cpp as cpp
from lib.make import * from lib.make import *
version("5.0.0") version("5.1.0")
source_url("https://github.com/aws/aws-lc/archive/refs/tags/v5.0.0.tar.gz") 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(): 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()
cpp.ninja_install() 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) on_build(build)
@@ -29,12 +44,22 @@ def pack_libssl(composer):
package("aws-lc-libcrypto") package("aws-lc-libcrypto")
on_pack(pack_libcrypto) on_pack(pack_libcrypto)
dep("semi-libc @same-arch")
provide("libcrypto@same-arch")
package("aws-lc-libssl") package("aws-lc-libssl")
on_pack(pack_libssl) on_pack(pack_libssl)
dep("aws-lc-libcrypto (same)")
provide("libssl@same-arch")
package("aws-lc-tools") package("aws-lc-tools")
cpp.use_auto_pack(["bin"]) cpp.use_auto_pack(["bin"])
dep("aws-lc-libcrypto (same)")
dep("aws-lc-libssl (same)")
package("aws-lc-dev") package("aws-lc-dev")
cpp.use_auto_pack(["dev"]) cpp.use_auto_pack(["dev"])
dep("aws-lc-libcrypto (same)")
dep("aws-lc-libssl (same)")
provide("libcrypto-dev@same-arch")
provide("libssl-dev@same-arch")
+32
View File
@@ -0,0 +1,32 @@
from lib import arch, cpp
from lib.make import *
version("7.0.3")
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"])
+36
View File
@@ -0,0 +1,36 @@
from lib import cpp
from lib.make import *
version("3.7.91")
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)
@@ -0,0 +1,44 @@
--- a/unit-tests/Makefile
+++ b/unit-tests/Makefile
@@ -62,7 +62,6 @@
TESTS+= cmd-errors
TESTS+= cmd-errors-jobs
TESTS+= cmd-errors-lint
-TESTS+= cmd-interrupt
TESTS+= cmdline
TESTS+= cmdline-redirect-stdin
TESTS+= cmdline-undefined
@@ -139,7 +138,6 @@
TESTS+= deptgt-begin-fail
TESTS+= deptgt-begin-fail-indirect
TESTS+= deptgt-default
-TESTS+= deptgt-delete_on_error
TESTS+= deptgt-end
TESTS+= deptgt-end-fail
TESTS+= deptgt-end-fail-all
@@ -147,7 +145,6 @@
TESTS+= deptgt-end-jobs
TESTS+= deptgt-error
TESTS+= deptgt-ignore
-TESTS+= deptgt-interrupt
TESTS+= deptgt-main
TESTS+= deptgt-makeflags
TESTS+= deptgt-no_parallel
@@ -511,8 +508,6 @@
.if ${.MAKE.OS:NIRIX*} == ""
BROKEN_TESTS+= \
- cmd-interrupt \
- deptgt-interrupt \
job-output-null \
opt-chdir \
opt-debug-x-trace \
@@ -538,7 +533,6 @@
BROKEN_TESTS+= job-output-null
.else
BROKEN_TESTS+= \
- cmd-interrupt \
job-flags \
.endif
+39
View File
@@ -0,0 +1,39 @@
import os
from lib import cpp
from lib.make import *
VERSION = "2026.6.19"
version(VERSION)
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(
[
"--prefix=/",
f"--with-default-sys-path=/pkg/bmake={VERSION}@{arch.get_target()}/share/mk",
]
)
cpp.make()
cpp.make_install()
on_build(build)
def pack_bmake(composer):
composer.makedir("bin")
composer.addfile("bin/bmake", "bin/bmake")
composer.makedir("share")
composer.add_dir("share/mk", "share/mk")
package("bmake")
dep("semi-libc @same-arch")
on_pack(pack_bmake)
+28
View File
@@ -0,0 +1,28 @@
import os
from lib import cpp
from lib.make import *
version("1.2.0")
source_url("https://github.com/google/brotli/archive/refs/tags/v1.2.0.tar.gz")
def build():
cpp.cmake()
cpp.ninja()
cpp.ninja_install()
on_build(build)
package("libbrotli")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["lib"])
package("brotli")
dep("libbrotli (same)")
cpp.use_auto_pack(["bin"])
package("libbrotli-dev")
dep("libbrotli (same)")
cpp.use_auto_pack(["dev"])
+25
View File
@@ -0,0 +1,25 @@
import os
from lib import cpp
from lib.make import *
version("2.0")
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")
+48
View File
@@ -0,0 +1,48 @@
import os
import shutil
import lib.cpp as cpp
from lib.make import *
upstream_version = "1.0.8"
builddep("shortcut/c")
builddep("shortcut/autotools")
version(f"{upstream_version}")
source_url(f"https://sourceware.org/pub/bzip2/bzip2-{upstream_version}.tar.gz")
def build():
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")
on_build(build)
package("libbzip2")
cpp.use_auto_pack(["lib"])
dep("semi-libc @same-arch")
package("bzip2")
cpp.use_auto_pack(["bin"])
dep("libbzip2 (same)")
dep("sh")
dep("coreutils")
package("libbzip2-dev")
cpp.use_auto_pack(["dev"])
dep("libbzip2 (same)")
+33
View File
@@ -0,0 +1,33 @@
from lib import cpp
from lib.make import *
version("1.34.6")
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"])
+28
View File
@@ -0,0 +1,28 @@
import os
from lib.make import *
version("2026.7.4")
source_url(
"https://gitea.semilabs.org/semios/ca-certificates/releases/download/v2026.07.04/ca-certificates-2026.07.04.tar"
)
block_hook("autolink")
def build():
for i in os.listdir("."):
link(f"share/ca-certificates/{i}", f"/share/ca-certificates/{i}")
on_build(build)
def pack(composer):
composer.makedir("share")
composer.add_dir(".", "share/ca-certificates")
package("ca-certificates")
arch_any()
on_pack(pack)
+18
View File
@@ -0,0 +1,18 @@
from lib import rust
from lib.make import *
version("0.1.0")
source_url("https://gitea.semilabs.org/semios/certutil/archive/v0.1.0.tar.gz")
builddep("shortcut/rust")
def build():
rust.build()
on_build(build)
package("certutil")
dep("semi-libc @same-arch")
rust.use_auto_pack(["bin"])
+63
View File
@@ -0,0 +1,63 @@
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)
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")
on_pack(pack_cmake)
+116 -1
View File
@@ -3,14 +3,129 @@ from lib.make import *
version("0.9.0") version("0.9.0")
source_url("https://github.com/uutils/coreutils/archive/refs/tags/0.9.0.tar.gz") source_url("https://github.com/uutils/coreutils/archive/refs/tags/0.9.0.tar.gz")
block_hook("autolink")
builddep("shortcut/rust")
def build(): def build():
rust.build() rust.build(["--features", "unix"])
on_build(build) on_build(build)
functions = [
"[",
"arch",
"b2sum",
"base32",
"base64",
"basename",
"basenc",
"cat",
"chgrp",
"chmod",
"chown",
"chroot",
"cksum",
"comm",
"cp",
"csplit",
"cut",
"date",
"dd",
"df",
"dir",
"dircolors",
"dirname",
"du",
"echo",
"env",
"expand",
"expr",
"factor",
"false",
"fmt",
"fold",
"groups",
"head",
"hostid",
"hostname",
"id",
"install",
"join",
"kill",
"link",
"ln",
"logname",
"ls",
"md5sum",
"mkdir",
"mkfifo",
"mknod",
"mktemp",
"more",
"mv",
"nice",
"nl",
"nohup",
"nproc",
"numfmt",
"od",
"paste",
"pathchk",
"pinky",
"pr",
"printenv",
"printf",
"ptx",
"pwd",
"readlink",
"realpath",
"rm",
"rmdir",
"seq",
"sha1sum",
"sha224sum",
"sha256sum",
"sha384sum",
"sha512sum",
"shred",
"shuf",
"sleep",
"sort",
"split",
"stat",
"stdbuf",
"stty",
"sum",
"sync",
"tac",
"tail",
"tee",
"test",
"timeout",
"touch",
"tr",
"true",
"truncate",
"tsort",
"tty",
"uname",
"unexpand",
"uniq",
"unlink",
"uptime",
"users",
"vdir",
"wc",
"who",
"whoami",
"yes",
]
package("coreutils") package("coreutils")
for func in functions:
link(f"bin/coreutils", f"/bin/{func}")
rust.use_auto_pack(["bin"]) rust.use_auto_pack(["bin"])
dep("semi-libc @same-arch")
+102
View File
@@ -0,0 +1,102 @@
from lib import cpp, arch
from lib.make import *
version("8.21.0")
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"])
+7
View File
@@ -4,6 +4,10 @@ from lib.make import *
version("0.5.0") version("0.5.0")
source_url("https://github.com/uutils/diffutils/archive/refs/tags/v0.5.0.tar.gz") source_url("https://github.com/uutils/diffutils/archive/refs/tags/v0.5.0.tar.gz")
builddep("shortcut/rust")
block_hook("autolink")
def build(): def build():
rust.build() rust.build()
@@ -13,3 +17,6 @@ on_build(build)
package("diffutils") package("diffutils")
rust.use_auto_pack(["bin"]) rust.use_auto_pack(["bin"])
link("bin/diffutils", "/bin/cmp")
link("bin/diffutils", "/bin/diff")
dep("semi-libc @same-arch")
+30
View File
@@ -0,0 +1,30 @@
import os
import lib.cpp as cpp
from lib.make import *
version("2.8.1")
source_url(
"https://github.com/libexpat/libexpat/releases/download/R_2_8_1/expat-2.8.1.tar.gz"
)
def build():
cpp.cmake()
cpp.ninja()
cpp.ninja_install()
on_build(build)
package("libexpat")
cpp.use_auto_pack(["lib"])
dep("semi-libc @same-arch")
package("libexpat-tools")
cpp.use_auto_pack(["bin"])
dep("libexpat (same)")
package("libexpat-dev")
cpp.use_auto_pack(["dev"])
dep("libexpat (same)")
+54
View File
@@ -0,0 +1,54 @@
import subprocess
from lib import arch, cpp
from lib.make import *
VERSION = "5.48"
version(VERSION)
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)
cpp.configure(["--prefix=/", f"--datadir=/share/file"])
cpp.make()
cpp.make_install()
on_build(build)
def pack_magic_db(composer):
composer.add_dir(f"share/file", "share")
package("file-magic-db")
arch_any()
link("share/misc/magic.mgc", "/share/file/misc/magic.mgc")
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")
dep("libmagic (same)")
cpp.use_auto_pack(["dev"])
package("file")
dep("libmagic (same)")
cpp.use_auto_pack(["bin"])
+19
View File
@@ -0,0 +1,19 @@
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")
builddep("shortcut/rust")
def build():
rust.build()
on_build(build)
package("findutils")
rust.use_auto_pack(["bin"])
dep("semi-libc @same-arch")
+27
View File
@@ -0,0 +1,27 @@
from lib import cpp
from lib.make import *
version("2.6.4")
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"])
+31
View File
@@ -0,0 +1,31 @@
import os
from lib import cpp
from lib.make import *
version("0.3.3")
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"])
cpp.make_install(
["LIBINTL=musl", "DESTDIR=../cpp_install", "prefix=/"], chdir=False, move=False
)
os.chdir("../cpp_install")
on_build(build)
package("libintl-dev")
dep("semi-libc-dev @same-arch")
cpp.use_auto_pack(["dev"])
package("gettext")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["bin"])
+42
View File
@@ -0,0 +1,42 @@
import subprocess
from lib import arch, cpp
from lib.make import *
version("2.55.0")
source_url("https://www.kernel.org/pub/software/scm/git/git-2.55.0.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"libintl-dev @{arch.get_target()}")
builddep(f"libz-dev @{arch.get_target()}")
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)
+29
View File
@@ -0,0 +1,29 @@
import os
from lib import cpp, arch
from lib.make import *
version("1.4.21")
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 -1
View File
@@ -4,9 +4,12 @@ from lib.make import *
version("4.4.1") version("4.4.1")
source_url("https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz") source_url("https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build(): def build():
cpp.configure(["--prefix=/"]) cpp.configure([f"--prefix={get_prefix('gnu-make')}"])
cpp.make() cpp.make()
cpp.make_install() cpp.make_install()
@@ -15,3 +18,4 @@ on_build(build)
package("gnu-make") package("gnu-make")
cpp.use_auto_pack(["bin"]) cpp.use_auto_pack(["bin"])
dep("semi-libc @same-arch")
+36
View File
@@ -0,0 +1,36 @@
import os
from lib import cpp
from lib.make import *
version("4.10")
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")
+32
View File
@@ -0,0 +1,32 @@
import subprocess
from lib.make import *
version("15.1.2")
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)
on_build(build)
def pack_grep(composer):
composer.makedir("bin")
composer.addfile("grep", "bin/grep")
package("grep")
dep("semi-libc @same-arch")
dep("libpcre2 @same-arch")
on_pack(pack_grep)
link("bin/grep", "/bin/egrep")
link("bin/grep", "/bin/fgrep")
+35
View File
@@ -0,0 +1,35 @@
import os
from lib import cpp
from lib.make import *
version("2026.4.22")
source_url("https://data.iana.org/time-zones/releases/tzdb-2026b.tar.lz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.make()
cpp.make_install()
on_build(build)
def pack_db(composer):
composer.makedir("share")
composer.add_dir("share/zoneinfo", "share/zoneinfo")
package("iana-timezone-db")
arch_any()
on_pack(pack_db)
package("iana-timezone-tools")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["bin"])
package("iana-timezone-dev")
cpp.use_auto_pack(["dev"])
+43
View File
@@ -0,0 +1,43 @@
import os
from lib import cpp
from lib.make import *
version("78.3")
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")
cpp.configure(
[
"--enable-plugins",
"--prefix=/",
f"--bindir={get_prefix('icu4c')}/bin",
f"--sbindir={get_prefix('icu4c')}/sbin",
f"--libdir={get_prefix('libicu4c')}/lib",
f"--includedir={get_prefix('libicu4c-dev')}/include",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("libicu4c")
cpp.use_auto_pack(["lib"])
dep("semi-libc @same-arch")
package("icu4c")
cpp.use_auto_pack(["bin"])
dep("libicu4c (same)")
package("libicu4c-dev")
cpp.use_auto_pack(["dev"])
dep("libicu4c (same)")
+38
View File
@@ -0,0 +1,38 @@
import os
import shutil
from lib import cpp
from lib.make import *
version("7.1.0")
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()
cpp.make()
cpp.make_install()
on_build(build)
def pack_iproute2(composer):
composer.makedirs("lib/iproute2")
composer.makedir("share")
composer.add_dir("sbin", "bin")
composer.add_dir("share/iproute2", "share/iproute2")
composer.add_dir("lib/tc", "lib/iproute2/tc")
package("iproute2")
dep("semi-libc @same-arch")
on_pack(pack_iproute2)
package("iproute2-dev")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["dev"])
+31
View File
@@ -0,0 +1,31 @@
import os
import lib.cpp as cpp
from lib.make import *
version("1.34")
source_url("https://github.com/kmod-project/kmod/archive/refs/tags/v34.tar.gz")
def build():
cpp.meson_setup()
cpp.meson_compile()
cpp.meson_install()
os.chdir("usr")
on_build(build)
package("libkmod")
cpp.use_auto_pack(["lib"])
dep("semi-libc @same-arch")
dep("libzstd @same-arch")
dep("libcrypto @same-arch")
package("kmod")
cpp.use_auto_pack(["bin"])
dep("libkmod (same)")
package("libkmod-dev")
cpp.use_auto_pack(["dev"])
dep("libkmod (same)")
+23
View File
@@ -0,0 +1,23 @@
from lib import arch, cpp
from lib.make import *
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"libncurses-dev @{arch.get_target()}")
version("704")
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"])
+30 -1
View File
@@ -6,9 +6,24 @@ 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.7/libarchive-3.8.7.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(): def build():
cpp.configure(["--prefix=/"]) cpp.configure(
[
"--prefix=/",
f"--bindir={get_prefix('libarchive-tools')}/bin",
f"--libdir={get_prefix('libarchive')}/lib",
f"--includedir={get_prefix('libarchive-dev')}/include",
]
)
cpp.make() cpp.make()
cpp.make_install() cpp.make_install()
@@ -17,9 +32,23 @@ on_build(build)
package("libarchive") package("libarchive")
cpp.use_auto_pack(["lib"]) cpp.use_auto_pack(["lib"])
dep("libcrypto@same-arch")
dep("libzstd @same-arch")
dep("libz @same-arch")
dep("liblzma @same-arch")
dep("semi-libc @same-arch")
dep("libzstd @same-arch")
package("libarchive-tools") package("libarchive-tools")
cpp.use_auto_pack(["bin"]) cpp.use_auto_pack(["bin"])
dep("libarchive (same)")
provide("tar")
provide("cpio")
provide("unzip")
link("bin/bsdtar", "/bin/tar")
link("bin/bsdcpio", "/bin/cpio")
link("bin/bsdunzip", "/bin/unzip")
package("libarchive-dev") package("libarchive-dev")
cpp.use_auto_pack(["dev"]) cpp.use_auto_pack(["dev"])
dep("libarchive (same)")
+36
View File
@@ -0,0 +1,36 @@
from lib import arch, cpp
from lib.make import *
version("3.6.0")
source_url(
"https://github.com/libffi/libffi/releases/download/v3.6.0/libffi-3.6.0.tar.gz"
)
builddep("shortcut/c")
builddep("shortcut/autotools")
builddep(f"linux-dev @{arch.get_target()}")
def build():
cpp.configure(
[
"--prefix=/",
f"--libdir={get_prefix('libffi')}/lib",
f"--includedir={get_prefix('libffi-dev')}/include",
"--enable-portable-binary",
"--disable-multi-os-directory",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("libffi")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["lib"])
package("libffi-dev")
dep("libffi (same)")
cpp.use_auto_pack(["dev"])
+31
View File
@@ -0,0 +1,31 @@
import os
import subprocess
from lib import arch
from lib.make import *
version("0.2.0")
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(["./build.sh"], check=True)
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")
dep("semi-libc @same-arch")
dep("libunwind @same-arch")
on_pack(pack)
+31
View File
@@ -0,0 +1,31 @@
from lib import cpp
from lib.make import *
version("1.6.1")
source_url("https://downloads.xiph.org/releases/opus/opus-1.6.1.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.configure(
[
"--prefix=/",
f"--libdir={get_prefix('libopus')}/lib",
f"--includedir={get_prefix('libopus-dev')}/include",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("libopus")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["lib"])
package("libopus-dev")
dep("libopus (same)")
cpp.use_auto_pack(["dev"])
+41
View File
@@ -0,0 +1,41 @@
from lib import cpp, arch
from lib.make import *
version("0.22.0")
source_url(
"https://github.com/rockdaboot/libpsl/releases/download/0.22.0/libpsl-0.22.0.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"])
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+82
View File
@@ -0,0 +1,82 @@
import os
import shutil
import lib.arch as arch
import lib.cpp as cpp
from lib.make import *
upstream_version = "6.18.38"
version(f"{upstream_version}")
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")
def build():
makeopts = [f"ARCH={get_arch()}", "LLVM=1"]
config_name = get_arch()
if os.environ.get("LINUX_VARIANT"):
config_name += "-" + os.environ["LINUX_VARIANT"]
config_file = "../../configs/config." + config_name
shutil.copy2(config_file, ".config")
cpp.make(makeopts + ["olddefconfig"])
cpp.make(makeopts)
cpp.make(["headers_install", "INSTALL_HDR_PATH=../kheaders_install"])
cpp.make(["install", "INSTALL_PATH=../kimage_install"])
cpp.make(
["modules_install", "INSTALL_MOD_STRIP=1", "INSTALL_MOD_PATH=../kmod_install"]
)
os.remove(f"../kmod_install/lib/modules/{upstream_version}/build")
on_build(build)
base_name = "linux"
if os.environ.get("LINUX_VARIANT"):
base_name += "-" + os.environ["LINUX_VARIANT"]
def pack_linux_dev(composer):
composer.add_dir(
"../kheaders_install/include",
"include",
)
package(f"{base_name}-dev")
on_pack(pack_linux_dev)
def pack_linux(composer):
try:
composer.addfile(f"../kimage_install/vmlinux-{upstream_version}", "vmlinux")
except Exception:
pass
try:
composer.addfile(f"../kimage_install/vmlinuz-{upstream_version}", "vmlinuz")
except Exception:
pass
try:
composer.addfile(
f"../kimage_install/System.map-{upstream_version}", "System.map"
)
except Exception:
pass
composer.add_dir(f"../kmod_install/lib/modules/{upstream_version}", "modules")
package(f"{base_name}")
on_pack(pack_linux)
+395
View File
@@ -0,0 +1,395 @@
import glob
import os
import subprocess
upstream_version = "22.1.8"
[upstream_major, upstream_minor, upstream_rev] = upstream_version.split(".")
# Begin of file lists
LLVM_TOOLS = [
"bugpoint",
"dsymutil",
"llc",
"lli",
"llvm-addr2line",
"llvm-ar",
"llvm-as",
"llvm-bcanalyzer",
"llvm-bitcode-strip",
"llvm-bolt",
"llvm-bolt-binary-analysis",
"llvm-bolt-heatmap",
"llvm-boltdiff",
"llvm-c-test",
"llvm-cas",
"llvm-cat",
"llvm-cfi-verify",
"llvm-cgdata",
"llvm-config",
"llvm-cov",
"llvm-ctxprof-util",
"llvm-cvtres",
"llvm-cxxdump",
"llvm-cxxfilt",
"llvm-cxxmap",
"llvm-debuginfo-analyzer",
"llvm-debuginfod",
"llvm-debuginfod-find",
"llvm-diff",
"llvm-dis",
"llvm-dlltool",
"llvm-dwarfdump",
"llvm-dwarfutil",
"llvm-dwp",
"llvm-exegesis",
"llvm-extract",
"llvm-gsymutil",
"llvm-ifs",
"llvm-install-name-tool",
"llvm-ir2vec",
"llvm-jitlink",
"llvm-lib",
"llvm-libtool-darwin",
"llvm-link",
"llvm-lipo",
"llvm-lto",
"llvm-lto2",
"llvm-mc",
"llvm-mca",
"llvm-ml",
"llvm-ml64",
"llvm-modextract",
"llvm-nm",
"llvm-objcopy",
"llvm-objdump",
"llvm-offload-binary",
"llvm-offload-wrapper",
"llvm-opt-report",
"llvm-otool",
"llvm-pdbutil",
"llvm-profdata",
"llvm-profgen",
"llvm-ranlib",
"llvm-rc",
"llvm-readelf",
"llvm-readobj",
"llvm-readtapi",
"llvm-reduce",
"llvm-remarkutil",
"llvm-rtdyld",
"llvm-sim",
"llvm-size",
"llvm-split",
"llvm-stress",
"llvm-strings",
"llvm-strip",
"llvm-symbolizer",
"llvm-tblgen",
"llvm-tli-checker",
"llvm-undname",
"llvm-windres",
"llvm-xray",
"merge-fdata",
"opt",
"perf2bolt",
"reduce-chunk-list",
"sancov",
"sanstats",
"verify-uselistorder",
]
LLDB_BINARIES = [
"lldb",
"lldb-argdumper",
"lldb-dap",
"lldb-instr",
"lldb-mcp",
"lldb-server",
"yaml2macho-core",
]
LLD_BINARIES = ["lld", "lld-link", "ld64.lld", "wasm-ld", "wrapper://ld.lld~ld.lld"]
CLANG_BINARIES = [
f"clang-{upstream_major}~llvm-clang",
"wrapper://clang~clang",
"wrapper://clang++~clang++",
f"wrapper://clang~clang-{upstream_major}",
"clang-check",
"clang-cl",
"clang-cpp",
"clang-extdef-mapping",
"clang-format",
"clang-installapi",
"clang-linker-wrapper",
"clang-nvlink-wrapper",
"clang-offload-bundler",
"clang-offload-packager",
"clang-refactor",
"clang-repl",
"clang-scan-deps",
"clang-sycl-linker",
"clang-tblgen",
"diagtool",
"git-clang-format",
"hmaptool",
"intercept-build",
"amdgpu-arch",
"c-index-test",
"analyze-build",
"nvptx-arch",
"offload-arch",
"scan-build",
"scan-build-py",
"scan-view",
"libexec/analyze-c++",
"libexec/analyze-cc",
"libexec/c++-analyzer",
"libexec/ccc-analyzer",
"libexec/intercept-c++",
"libexec/intercept-cc",
]
# End of file lists
import lib.cpp as cpp
from lib import arch
from lib.make import *
version(upstream_version)
source_url(
f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{upstream_version}/llvm-project-{upstream_version}.src.tar.xz"
)
def llvm_host_triple():
return arch.get_target().replace("-semios-linux", "-semios-linux-musl")
def build():
os.environ["CXXFLAGS"] = os.environ.get("CXXFLAGS", "") + " --rtlib=compiler-rt"
subprocess.run(
[
"cmake",
"-G",
"Ninja",
"-S",
"llvm",
"-B",
"build",
"-DCMAKE_BUILD_TYPE=Release",
f"-DLLVM_DEFAULT_TARGET_TRIPLE={llvm_host_triple()}",
f"-DLLVM_HOST_TRIPLE={llvm_host_triple()}",
"-DLLVM_ENABLE_PROJECTS=clang;lldb;lld;bolt",
"-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi;libunwind;compiler-rt",
"-DLLVM_ENABLE_EH=ON",
"-DLLVM_ENABLE_RTTI=ON",
"-DCMAKE_INSTALL_PREFIX=/",
"-DLLVM_ENABLE_ASSERTIONS=OFF",
"-DLLVM_BUILD_LLVM_DYLIB=ON",
"-DLLVM_ENABLE_LIBCXX=ON",
"-DLLVM_ENABLE_LIBEDIT=ON",
"-DLLVM_ENABLE_LLD=ON",
"-DLLVM_LINK_LLVM_DYLIB=ON",
"-DLIBCXX_HAS_MUSL_LIBC=ON",
"-DCOMPILER_RT_BUILD_GWP_ASAN=OFF",
],
check=True,
)
subprocess.run(["cmake", "--build", "build"], check=True)
os.environ["DESTDIR"] = os.getcwd() + "/cpp_install"
subprocess.run(["cmake", "--install", "build"], check=True)
os.chdir("cpp_install")
on_build(build)
# Begin of helper functions
package_dir = os.getcwd()
def install_wrapper(composer, name: str, dst: str):
composer.addfile(f"{package_dir}/wrapper/{name}.wrapper", dst)
with open(f"{composer.workdir}/bundle/{dst}", "r") as f:
s = f.read()
s = s.replace("LLVM_VERSION=", f"LLVM_VERSION={upstream_version}").replace(
"ARCHITECTURE=", "ARCHITECTURE=" + arch.get_target()
).replace("LLVM_ARCH=", "LLVM_ARCH=" + llvm_host_triple())
with open(f"{composer.workdir}/bundle/{dst}", "w") as f:
f.write(s)
os.chmod(f"{composer.workdir}/bundle/{dst}", 0o755)
def auto_pack_llvm_runtime(composer, prefix, dev):
composer.makedirs("lib")
parent_dir = f"./lib/{llvm_host_triple()}"
for i in os.listdir(parent_dir):
fullpath = f"{parent_dir}/{i}"
if i.split(".")[0] != prefix:
continue
if dev:
if ".so" in i:
continue
else:
if not ".so" in i:
continue
composer.addfile(fullpath, f"lib/{i}")
if not dev:
return
def auto_pack_llvm_runtime_dev(composer, condition):
composer.makedir("include")
parent_include = f"./usr/include"
for i in condition:
if i.startswith("lib:"):
auto_pack_llvm_runtime(composer, i.replace("lib:", ""), True)
continue
i = i.replace("include:", "")
for file in glob.glob(f"{parent_include}/{i}"):
name = file.replace(f"{parent_include}/", "")
if "/" in name:
composer.makedirs(f"include/{os.path.dirname(name)}")
if os.path.isdir(file):
composer.add_dir(file, f"include/{name}")
else:
composer.addfile(file, f"include/{name}")
def use_llvm_runtime_auto_pack(prefix: str):
on_pack(lambda composer: auto_pack_llvm_runtime(composer, prefix, False))
def use_llvm_runtime_dev_auto_pack(des: list[str]):
on_pack(lambda composer: auto_pack_llvm_runtime_dev(composer, des))
def auto_pack_llvm_libs(composer, prefixes: list[str]):
composer.makedirs("lib")
parent_dir = f"./lib/"
for i in os.listdir(parent_dir):
fullpath = f"{parent_dir}/{i}"
if not i.split(".")[0] in prefixes:
continue
if not ".so" in i:
continue
composer.addfile(fullpath, f"lib/{i}")
def use_llvm_libs_auto_pack(prefixes: list[str]):
on_pack(lambda composer: auto_pack_llvm_libs(composer, prefixes))
def auto_pack_bin(composer, conditions: list[str]):
for i in conditions:
prefix = "bin"
if i.startswith("libexec/"):
i = i.replace("libexec/", "")
prefix = "libexec"
composer.makedirs(prefix)
src = i
dst = f"{prefix}/{i}"
if len(i.split("~")) == 2:
src = i.split("~")[0]
dst = f"bin/{i.split('~')[1]}"
if src.startswith("wrapper://"):
src = src.replace("wrapper://", "")
if len(i.split("~")) == 1:
dst = f"bin/{src}.wrapper"
install_wrapper(composer, src, dst)
continue
if os.path.exists(f"{prefix}/{src}"):
src = f"{prefix}/{src}"
elif os.path.exists(f"usr/{prefix}/{src}"):
src = f"usr/{prefix}/{src}"
composer.addfile(src, dst)
def use_bin_auto_pack(conditions: list[str]):
on_pack(lambda composer: auto_pack_bin(composer, conditions))
# End of helper functions
# Begin of packages
package("libunwind")
dep("semi-libc @same-arch")
use_llvm_runtime_auto_pack("libunwind")
package("libunwind-dev")
dep("libunwind (same)")
use_llvm_runtime_dev_auto_pack(
["lib:libunwind", "include:mach-o", "include:*unwind*.h"]
)
package("libcxxabi")
dep("libunwind (same)")
use_llvm_runtime_auto_pack("libc++abi")
package("libcxxabi-dev")
dep("libcxxabi (same)")
use_llvm_runtime_dev_auto_pack(["lib:libc++abi"])
package("libcxx")
dep("libcxxabi (same)")
use_llvm_runtime_auto_pack("libc++")
package("libcxx-dev")
dep("libcxx (same)")
use_llvm_runtime_dev_auto_pack(
[
"lib:libc++",
"lib:libc++experimental",
f"include:{llvm_host_triple()}/c++/v1/__config_site",
"include:c++/v1",
]
)
package("libllvm")
dep("libcxx @same-arch")
use_llvm_libs_auto_pack(["libLLVM", "libLTO", "libRemarks"])
package("llvm")
dep("libllvm (same)")
use_bin_auto_pack(LLVM_TOOLS)
for i in ["strip", "ar", "ranlib", "readelf", "objcopy", "objdump", "strings", "nm"]:
link(f"bin/llvm-{i}", f"/bin/{i}")
package("lld")
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"])
package("lldb")
dep("libcxx @same-arch")
dep("liblldb (same)")
use_bin_auto_pack(LLDB_BINARIES)
package("libclang")
dep("libcxx @same-arch")
dep("libllvm (same)")
use_llvm_libs_auto_pack(["libclang", "libclang-cpp"])
def pack_clang(composer):
auto_pack_bin(composer, CLANG_BINARIES)
composer.makedirs(f"lib/clang/{upstream_major}/lib")
composer.add_dir(
f"lib/clang/{upstream_major}/lib/{llvm_host_triple()}",
f"lib/clang/{upstream_major}/lib/{llvm_host_triple()}",
)
package("clang")
dep("libclang (same)")
on_pack(pack_clang)
# End of packages
@@ -0,0 +1,19 @@
#!/bin/sh
LLVM_VERSION=
ARCHITECTURE=
LLVM_ARCH=
CLANG=$(packie print package.prefix."clang (=${LLVM_VERSION}) @${ARCHITECTURE}")/bin/llvm-clang
exec ${CLANG} \
-Wno-unused-command-line-argument \
-isystem /lib/${ARCHITECTURE}/include/c++/v1 \
-isystem /lib/${ARCHITECTURE}/include/${LLVM_ARCH}/c++/v1 \
-isystem /lib/${ARCHITECTURE}/include \
-stdlib=libc++ \
-rtlib=compiler-rt \
-B /lib/${ARCHITECTURE} \
-lc++ \
-Wunused-command-line-argument \
"$@"
@@ -0,0 +1,14 @@
#!/bin/sh
LLVM_VERSION=
ARCHITECTURE=
CLANG=$(packie print package.prefix."clang (=${LLVM_VERSION}) @${ARCHITECTURE}")/bin/llvm-clang
exec ${CLANG} \
-Wno-unused-command-line-argument \
-isystem /lib/${ARCHITECTURE}/include \
-rtlib=compiler-rt \
-B /lib/${ARCHITECTURE} \
-Wunused-command-line-argument \
"$@"
@@ -0,0 +1,8 @@
#!/bin/sh
LLVM_VERSION=
ARCHITECTURE=
LLD=$(packie print package.prefix."lld (=${LLVM_VERSION}) @${ARCHITECTURE}")/bin/lld
exec ${LLD} -flavor gnu -L/lib/${ARCHITECTURE} "$@"
+24
View File
@@ -0,0 +1,24 @@
import os
import subprocess
from lib import arch, cpp
from lib.make import *
version("1.14.6")
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()
cpp.make([f"CC={os.environ['CC']}"])
cpp.make_install()
on_build(build)
package("mandoc")
cpp.use_auto_pack(["bin"])
+11 -3
View File
@@ -1,13 +1,18 @@
import os import subprocess
from lib.make import * from lib.make import *
version("1.59.2") version("1.59.2")
source_git("https://github.com/mirabilos/mksh-cvs2git.git", "mksh-R59c") source_url(
"https://github.com/mirabilos/mksh-cvs2git/archive/refs/tags/mksh-R59c.tar.gz"
)
builddep("shortcut/c")
builddep("gnu-sed")
def build(): def build():
os.system("sh ./Build.sh") subprocess.run(["sh", "./Build.sh"], check=True)
on_build(build) on_build(build)
@@ -20,3 +25,6 @@ def pack_mksh(composer):
package("mksh") package("mksh")
on_pack(pack_mksh) on_pack(pack_mksh)
dep("semi-libc @same-arch")
provide("sh")
link("bin/mksh", "/bin/sh")
+68
View File
@@ -0,0 +1,68 @@
import os
from lib import cpp
from lib.make import *
version("6.6")
source_url("https://invisible-island.net/archives/ncurses/ncurses-6.6.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.configure(
[
"--prefix=/",
f"--bindir={get_prefix('ncurses-tools')}/bin",
f"--sbindir={get_prefix('ncurses-tools')}/sbin",
f"--libdir={get_prefix('libncurses')}/lib",
f"--includedir={get_prefix('libncurses')}/include",
"--enable-pc-files",
"--with-shared",
"--with-terminfo-dirs=/share/terminfo",
"--enable-symlinks",
"--enable-sp-funcs",
"--enable-ext-colors",
"--enable-rgb-color",
"--enable-ext-mouse",
"--enable-ext-putwin",
"--enable-no-padding",
"--enable-sigwinch",
"--enable-tcap-names",
"--with-pthread",
"--enable-pthreads-eintr",
"--enable-weak-symbols",
"--enable-reentrant",
"--without-develop",
]
)
cpp.make()
cpp.make_install()
os.unlink("lib/terminfo")
on_build(build)
package("libncurses")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["lib"])
package("ncurses-tools")
dep("libncurses (same)")
cpp.use_auto_pack(["bin"])
package("libncurses-dev")
dep("libncurses (same)")
cpp.use_auto_pack(["dev"])
def pack_terminfo(composer):
composer.makedir("share")
composer.add_dir("share/tabset", "share/tabset")
composer.add_dir("share/terminfo", "share/terminfo")
package("ncurses-terminfo")
arch_any()
on_pack(pack_terminfo)
+28
View File
@@ -0,0 +1,28 @@
import os
from lib import cpp
from lib.make import *
version("19")
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']}"])
on_build(build)
def pack(composer):
composer.makedir("bin")
composer.addfile("vi", "bin/vi")
package("neatvi")
provide("vi")
dep("semi-libc @same-arch")
on_pack(pack)
+30
View File
@@ -0,0 +1,30 @@
import os
import subprocess
from lib import cpp
from lib.make import *
version("5.3")
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"] = "/"
subprocess.run(["./cbuild.sh"])
on_build(build)
def pack(composer):
composer.makedir("bin")
composer.addfile("vi", "bin/vi")
package("nextvi")
on_pack(pack)
dep("semi-libc @same-arch")
provide("vi")
+26
View File
@@ -0,0 +1,26 @@
import os
from lib import cpp
from lib.make import *
version("1.69.0")
source_url(
"https://github.com/nghttp2/nghttp2/releases/download/v1.69.0/nghttp2-1.69.0.tar.gz"
)
def build():
cpp.cmake()
cpp.ninja()
cpp.ninja_install()
on_build(build)
package("libnghttp2")
cpp.use_auto_pack(["lib"])
dep("semi-libc @same-arch")
package("libnghttp2-dev")
cpp.use_auto_pack(["dev"])
dep("libnghttp2 (same)")
+6 -2
View File
@@ -1,14 +1,16 @@
import os import os
import lib.cpp as cpp
from lib.make import * from lib.make import *
version("1.13.2") version("1.13.2")
source_url("https://github.com/ninja-build/ninja/archive/refs/tags/v1.13.2.tar.gz") source_url("https://github.com/ninja-build/ninja/archive/refs/tags/v1.13.2.tar.gz")
builddep("shortcut/c++")
builddep("sed")
def build(): def build():
os.system("./configure.py --bootstrap") os.system("python3 ./configure.py --bootstrap")
on_build(build) on_build(build)
@@ -21,3 +23,5 @@ def pack_ninja(composer):
package("ninja") package("ninja")
on_pack(pack_ninja) on_pack(pack_ninja)
dep("semi-libc @same-arch")
dep("libcxx @same-arch")
+60
View File
@@ -0,0 +1,60 @@
from lib import cpp
from lib.make import *
version("10.3.1")
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(
[
"--prefix=/",
"--sysconfdir=/var/config",
"--disable-etc-default-login",
"--with-linux-memlock-onfault",
"--without-shadow",
"--with-pam",
"--with-pie",
]
)
cpp.make()
cpp.make_install()
on_build(build)
def pack_client(composer):
composer.add_dir("bin", "bin")
composer.makedir("libexec")
composer.addfile("libexec/ssh-sk-helper", "libexec/ssh-sk-helper")
composer.addfile("libexec/ssh-pkcs11-helper", "libexec/ssh-pkcs11-helper")
package("openssh-client")
dep("semi-libc @same-arch")
dep("libcrypto @same-arch")
dep("libz @same-arch")
on_pack(pack_client)
provide("ssh")
def pack_server(composer):
composer.makedir("bin")
composer.addfile("sbin/sshd", "bin/sshd")
composer.makedir("libexec")
composer.addfile("libexec/sftp-server", "libexec/sftp-server")
composer.addfile("libexec/ssh-keysign", "libexec/ssh-keysign")
composer.addfile("libexec/sshd-auth", "libexec/sshd-auth")
composer.addfile("libexec/sshd-session", "libexec/sshd-session")
package("openssh-server")
dep("openssh-client (same)")
dep("libpam @same-arch")
on_pack(pack_server)
+26
View File
@@ -0,0 +1,26 @@
import shutil
import subprocess
from lib.make import *
version("15.1.1")
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)
+38
View File
@@ -0,0 +1,38 @@
from lib import cpp
from lib.make import *
version("10.47")
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"])
+75
View File
@@ -0,0 +1,75 @@
import os
import subprocess
from lib import arch, cpp
from lib.make import *
upstream_version = "5.42.2"
version(upstream_version)
source_url("https://www.cpan.org/src/5.0/perl-5.42.2.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
block_hook("autolink")
def build():
subprocess.run(
[
"./Configure",
"-de",
f"-Dcc={os.environ.get('CC', 'cc')}",
f"-Doptimize={os.environ.get('CFLAGS', '')}",
"-Dusethreads",
"-Duseshrplib",
"-Dprefix=/",
"-Dvendorprefix=/",
f"-Dprivlib={get_prefix('libperl')}/share/core_perl",
f"-Darchlib={get_prefix('libperl')}/lib/core_perl",
f"-Dsitelib=/lib/{arch.get_target()}/perl5/site_perl",
f"-Dsitearch=/lib/{arch.get_target()}/perl5/site_arch",
f"-Dvendorlib=/lib/{arch.get_target()}/perl5/vendor_perl",
f"-Dvendorarch=/lib/{arch.get_target()}/perl5/vendor_arch",
f"-Dscriptdir={get_prefix('perl')}/bin/core_perl",
"-Dsitescript=/bin/site_perl",
"-Dvendorscript=/bin/vendor_perl",
"-Dinc_version_list=none",
"-Dman1dir=/share/man/man1",
"-Dman3dir=/share/man/man3",
"-Dman1ext=1perl",
"-Dman3ext=3perl",
f"-Dlddlflags=-shared {os.environ.get('LDFLAGS', '')}",
f"-Dldflags={os.environ.get('LDFLAGS', '')}",
],
check=True,
)
cpp.make()
cpp.make_install()
on_build(build)
def pack_libperl(composer):
composer.makedir("lib")
composer.makedir("share")
composer.add_dir("lib/core_perl", "lib/core_perl")
composer.add_dir("share/core_perl", "share/core_perl")
package("libperl")
dep("semi-libc @same-arch")
on_pack(pack_libperl)
def pack_perl(composer):
composer.add_dir("bin", "bin")
package("perl")
dep("libperl (same)")
cpp.use_auto_pack(["bin"])
link("bin/perl", "/bin/perl")
link(f"bin/perl{upstream_version}", f"/bin/perl{upstream_version}")
+41
View File
@@ -0,0 +1,41 @@
import lib.cpp as cpp
from lib import arch
from lib.make import *
version("2.5.1")
source_url("https://distfiles.ariadne.space/pkgconf/pkgconf-2.5.1.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
cpp.configure(
[
"--prefix=/",
f"--bindir={get_prefix('pkgconf')}/bin",
f"--libdir={get_prefix('libpkgconf')}/lib",
f"--includedir={get_prefix('libpkgconf-dev')}/include",
f"--with-system-libdir=/lib:/lib/{arch.get_target()}",
f"--with-system-includedir=/lib/{arch.get_target()}/include",
f"--with-pkg-config-dir=/lib/{arch.get_target()}/pkgconfig",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("libpkgconf")
cpp.use_auto_pack(["lib"])
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"])
dep("libpkgconf (same)")
+109
View File
@@ -0,0 +1,109 @@
import os
import shutil
from lib import arch, cpp
from lib.make import *
VERSION_BASE = "3.14"
VERSION_APPEND = "6"
VERSION_FULL = f"{VERSION_BASE}.{VERSION_APPEND}"
version(VERSION_FULL)
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(
[
"--prefix=/",
f"--with-platlibdir=lib/{arch.get_target()}",
"--enable-shared",
"--enable-safety",
"--enable-optimizations",
"--enable-loadable-sqlite-extensions",
"--enable-ipv6",
"--with-lto=thin",
"--with-tzpath=/share/zoneinfo",
"--with-system-expat",
"--with-system-libmpdec",
"--with-readline=editline",
"--with-tail-call-interp",
"--without-ensurepip",
"--with-ssl-default-suites=openssl",
]
)
cpp.make()
cpp.make_install()
os.rename(
f"lib/{arch.get_target()}/python{VERSION_BASE}", f"lib/python{VERSION_BASE}"
)
os.rmdir(f"lib/{arch.get_target()}")
on_build(build)
def python_config_target():
return arch.get_target().replace("-semios-linux", "-linux-musl")
def pack_libpython(composer):
# Pack the standard library
pystdpath = f"{composer.workdir}/bundle/lib/python{VERSION_BASE}"
composer.makedir("lib")
composer.add_dir(f"lib/python{VERSION_BASE}", f"lib/python{VERSION_BASE}")
shutil.rmtree(f"{pystdpath}/test")
os.remove(
f"{pystdpath}/config-{VERSION_BASE}-{python_config_target()}/libpython{VERSION_BASE}.a"
)
os.remove(f"{pystdpath}/config-{VERSION_BASE}-{python_config_target()}/python.o")
# Pack native libraries
composer.addfile(
f"lib/libpython{VERSION_BASE}.so", f"lib/libpython{VERSION_BASE}.so"
)
composer.addfile(
f"lib/libpython{VERSION_BASE}.so.1.0", f"lib/libpython{VERSION_BASE}.so.1.0"
)
composer.addfile("lib/libpython3.so", "lib/libpython3.so")
package("libpython")
dep("semi-libc @same-arch")
on_pack(pack_libpython)
package("python")
dep("libpython (same)")
cpp.use_auto_pack(["bin"])
link(f"bin/python{VERSION_BASE}", "/bin/python3")
link(f"bin/python{VERSION_BASE}", "/bin/python")
package("libpython-dev")
dep("libpython (same)")
cpp.use_auto_pack(["dev"])
def pack_test(composer):
composer.makedirs(f"lib/python{VERSION_BASE}")
composer.add_dir(f"lib/python{VERSION_BASE}/test", f"lib/python{VERSION_BASE}/test")
package("python-test")
dep("libpython (same)")
on_pack(pack_test)
+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:
+54
View File
@@ -0,0 +1,54 @@
from lib import cpp
from lib.make import *
import os
upstream_version = "1.4.6"
version(upstream_version)
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)
package("librhash")
dep("semi-libc @same-arch")
cpp.use_auto_pack(["lib"])
package("rhash-tools")
dep("librhash (same)")
cpp.use_auto_pack(["bin"])
package("librhash-dev")
dep("librhash (same)")
cpp.use_auto_pack(["dev"])
+18
View File
@@ -0,0 +1,18 @@
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")
builddep("shortcut/rust")
def build():
rust.build()
on_build(build)
package("ripgrep")
dep("semi-libc @same-arch")
rust.use_auto_pack(["bin"])
+28
View File
@@ -0,0 +1,28 @@
import subprocess
from lib.make import *
version("15.1.1")
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():
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")
dep("libpcre2 @same-arch")
on_pack(pack_sed)
+19 -8
View File
@@ -1,21 +1,32 @@
from lib.cpp import * from lib import arch, cpp
from lib.make import * from lib.make import *
source_url("https://gitea.semilabs.org/semios/semi-libc/archive/v1.2.5.tar.gz") version("1.2.6+1")
version("1.2.5") source_url("https://gitea.semilabs.org/semios/semi-libc/archive/v1.2.6-1.tar.gz")
builddep("shortcut/c")
builddep("shortcut/autotools")
def build(): def build():
configure(["--prefix=/"]) cpp.configure(["--prefix=/"])
make() cpp.make()
make_install() cpp.make_install()
on_build(build) on_build(build)
def musl_target():
return arch.get_target().split("-")[0]
package("semi-libc") package("semi-libc")
use_auto_pack(["lib"]) cpp.use_auto_pack(["lib"])
link("lib/libc.so", f"/lib/ld-musl-{musl_target()}.so.1")
link("lib/libc.so", "/bin/ldd")
package("semi-libc-dev") package("semi-libc-dev")
use_auto_pack(["dev"]) cpp.use_auto_pack(["dev"])
dep("semi-libc (same)")
+12
View File
@@ -1,14 +1,23 @@
import os
import lib.cpp as cpp import lib.cpp as cpp
from lib.make import * from lib.make import *
version("3.53.2") version("3.53.2")
source_url("https://sqlite.org/2026/sqlite-autoconf-3530200.tar.gz") source_url("https://sqlite.org/2026/sqlite-autoconf-3530200.tar.gz")
builddep("shortcut/autotools")
builddep("shortcut/c")
builddep("linenoise-dev")
def build(): def build():
cpp.configure( cpp.configure(
[ [
"--prefix=/", "--prefix=/",
f"--libdir={get_prefix('libsqlite')}/lib",
f"--bindir={get_prefix('sqlite')}/bin",
f"--includedir={get_prefix('libsqlite-dev')}/include",
"--all", "--all",
"--with-linenoise=/pkg/linenoise-dev=2.0@any", "--with-linenoise=/pkg/linenoise-dev=2.0@any",
"--icu-collations", "--icu-collations",
@@ -22,9 +31,12 @@ on_build(build)
package("libsqlite") package("libsqlite")
cpp.use_auto_pack(["lib"]) cpp.use_auto_pack(["lib"])
dep("semi-libc @same-arch")
package("sqlite") package("sqlite")
cpp.use_auto_pack(["bin"]) cpp.use_auto_pack(["bin"])
dep("libsqlite (same)")
package("libsqlite-dev") package("libsqlite-dev")
cpp.use_auto_pack(["dev"]) cpp.use_auto_pack(["dev"])
dep("libsqlite (same)")
+47
View File
@@ -0,0 +1,47 @@
from lib import cpp
from lib.make import *
upstream_version = "9.2.782"
version(upstream_version)
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(
[
"--prefix=/",
f"--bindir={get_prefix('vim')}/bin",
"--datarootdir=/share",
f"--datadir={get_prefix('vim-data')}/share",
"--enable-terminal",
"--enable-autoservername",
"--enable-multibyte",
"--disable-nls",
]
)
cpp.make()
cpp.make_install()
on_build(build)
def pack_data(composer):
composer.makedirs("share/vim")
composer.add_dir("share/vim/vim92", "share/vim/vim92")
package("vim-data")
arch_any()
on_pack(pack_data)
package("vim")
dep("semi-libc @same-arch")
dep("libncurses @same-arch")
dep(f"vim-data (={upstream_version}) @any")
cpp.use_auto_pack(["bin"])
+41
View File
@@ -0,0 +1,41 @@
import os
from lib import cpp
from lib.make import *
version("5.8.3")
source_url(
"https://github.com/tukaani-project/xz/releases/download/v5.8.3/xz-5.8.3.tar.gz"
)
builddep("shortcut/c")
builddep("shortcut/autotools")
def build():
os.environ["FGREP"] = "grep -F"
cpp.configure(
[
"--prefix=/",
f"--libdir={get_prefix('liblzma')}/lib",
f"--bindir={get_prefix('xz')}/bin",
f"--includedir={get_prefix('liblzma-dev')}/include",
]
)
cpp.make()
cpp.make_install()
on_build(build)
package("liblzma")
cpp.use_auto_pack(["lib"])
dep("semi-libc @same-arch")
package("xz")
cpp.use_auto_pack(["bin"])
dep("liblzma (same)")
package("liblzma-dev")
cpp.use_auto_pack(["dev"])
dep("liblzma (same)")
+7 -1
View File
@@ -6,21 +6,27 @@ from lib.make import *
version("2.3.3") version("2.3.3")
source_url("https://github.com/zlib-ng/zlib-ng/archive/refs/tags/2.3.3.tar.gz") source_url("https://github.com/zlib-ng/zlib-ng/archive/refs/tags/2.3.3.tar.gz")
builddep("shortcut/c++")
def build(): def build():
cpp.cmake(["-DZLIB_COMPAT=ON", "-DINSTALL_UTILS=ON"]) cpp.cmake(["-DZLIB_COMPAT=ON", "-DINSTALL_UTILS=ON"])
cpp.ninja() cpp.ninja()
cpp.ninja_install() cpp.ninja_install()
os.chdir("usr")
on_build(build) on_build(build)
package("libz-ng") package("libz-ng")
cpp.use_auto_pack(["lib"]) cpp.use_auto_pack(["lib"])
provide("libz@same-arch")
dep("semi-libc @same-arch")
package("zlib-ng-tools") package("zlib-ng-tools")
cpp.use_auto_pack(["bin"]) cpp.use_auto_pack(["bin"])
dep("libz-ng (same)")
package("libz-ng-dev") package("libz-ng-dev")
cpp.use_auto_pack(["dev"]) cpp.use_auto_pack(["dev"])
dep("libz-ng (same)")
provide("libz-dev@same-arch")
+7 -2
View File
@@ -8,20 +8,25 @@ source_url(
"https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz" "https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz"
) )
builddep("shortcut/c")
builddep("shortcut/autotools")
def build(): def build():
cpp.make() cpp.make(["HAVE_ZLIB=0", "HAVE_LZMA=0", "HAVE_LZ4=0"])
cpp.make_install() cpp.make_install()
os.chdir("usr/local")
on_build(build) on_build(build)
package("libzstd") package("libzstd")
cpp.use_auto_pack(["lib"]) cpp.use_auto_pack(["lib"])
dep("semi-libc @same-arch")
package("zstd") package("zstd")
cpp.use_auto_pack(["bin"]) cpp.use_auto_pack(["bin"])
dep("libzstd (same)")
package("libzstd-dev") package("libzstd-dev")
cpp.use_auto_pack(["dev"]) cpp.use_auto_pack(["dev"])
dep("libzstd (same)")
+165 -20
View File
@@ -3,10 +3,13 @@ import importlib
import os import os
import shutil import shutil
import sys import sys
import typing
import hooks import hooks
import lib.arch import lib.arch
import lib.atombuild
import lib.make import lib.make
import lib.packie
import lib.pkgcomposer import lib.pkgcomposer
import lib.sources import lib.sources
@@ -19,8 +22,19 @@ argparser = argparse.ArgumentParser(
argparser.add_argument( argparser.add_argument(
"--target", type=str, help="Target architecture to build the package for" "--target", type=str, help="Target architecture to build the package for"
) )
argparser.add_argument("--build", type=str, help="Package to build") argparser.add_argument("--atombuild", action="store_true", help="Enable Atom Build")
argparser.add_argument("--clean", type=str, help="Package to clean") 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", 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() args = argparser.parse_args()
if args.target: if args.target:
@@ -29,7 +43,19 @@ else:
lib.arch.set_target(lib.arch.get_target()) lib.arch.set_target(lib.arch.get_target())
def run_build_package(package: str): def run_hooks(map, arg: typing.Any = None):
current_dir = os.getcwd()
for n in map.keys():
if n in lib.make._blocked_hooks:
continue
if arg:
map[n](arg)
else:
map[n]()
os.chdir(current_dir)
def cmd_build_package(package: str):
try: try:
os.chdir(f"packages/{package}") os.chdir(f"packages/{package}")
os.makedirs("target", exist_ok=True) os.makedirs("target", exist_ok=True)
@@ -46,12 +72,11 @@ def run_build_package(package: str):
print(f"Architecture {lib.arch.get_target()} is not supported for this package") print(f"Architecture {lib.arch.get_target()} is not supported for this package")
exit(1) exit(1)
if os.environ.get("SEMIOS_PKGBUILD_IN_ATOMIC", "0") == "1":
lib.packie.install(lib.make._builddep)
# Run `pre_build` hooks # Run `pre_build` hooks
for n in hooks.pre_build.keys(): run_hooks(hooks.pre_build)
if n in lib.make._blocked_hooks:
continue
hooks.pre_build[n]()
os.chdir(package_dir)
# Build the package # Build the package
if lib.make._on_build: if lib.make._on_build:
@@ -61,15 +86,12 @@ def run_build_package(package: str):
print("on_build(): Not defined") print("on_build(): Not defined")
# Run `post_build` hooks # Run `post_build` hooks
post_build_dir = os.getcwd() run_hooks(hooks.post_build)
for n in hooks.post_build.keys():
if n in lib.make._blocked_hooks:
continue
hooks.post_build[n]()
os.chdir(post_build_dir)
# Pack packages # Pack packages
for pkgname in lib.make._pkginfo.keys(): for pkgname in lib.make._pkginfo.keys():
lib.make._current_pkgname = pkgname
if pkgname == lib.make._key_global: if pkgname == lib.make._key_global:
continue continue
@@ -89,23 +111,146 @@ def run_build_package(package: str):
pkginfo[lib.make._key_on_pack](composer) pkginfo[lib.make._key_on_pack](composer)
# Run post_pack hooks
run_hooks(hooks.post_pack, composer)
manifest = { manifest = {
"name": pkgname, "name": pkgname,
"version": pkgver, "version": pkgver,
"arch": pkgarch, "arch": pkgarch,
"dependencies": pkginfo[lib.make._key_dependencies],
"provides": pkginfo[lib.make._key_provides],
"recommendations": pkginfo[lib.make._key_recommendations],
} }
composer.write_manifest(manifest) composer.write_manifest(manifest)
composer.write_links(pkginfo[lib.make._key_links])
composer.compose() composer.compose()
# Build success
with open(f"{package_dir}/target/build-ok.tag", "wt+") as file:
file.write("OK")
def run_clean_package(package: str):
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 do_list(item: str):
if item == "all":
for i in os.listdir("packages"):
if i.startswith("."):
continue
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"):
yield i
elif item == "new":
for i in os.listdir("packages"):
if i.startswith("."):
continue
try:
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:
yield i
except Exception:
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: try:
shutil.rmtree(f"packages/{package}/target") 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: except Exception:
pass pass
# Build success
with open(f"{target_dir}/build-ok.tag", "wt+") as file:
file.write("OK")
if args.build:
run_build_package(args.build) def cmd_repo_push(repo_dir: str, pkgname: list[str]):
if args.clean: for pkg in pkgname:
run_clean_package(args.clean) 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":
if args.atombuild:
cmd_build_atom(args.BUILD_PKGNAME)
else:
cmd_build_package(args.BUILD_PKGNAME)
elif args.subcommand == "clean":
if args.all:
pkgs = os.listdir("packages")
else:
pkgs = args.CLEAN_PKGNAME
cmd_clean_package(pkgs)
elif args.subcommand == "list":
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)