diff --git a/build.zsh b/build.zsh index 98e0945..c63ae14 100755 --- a/build.zsh +++ b/build.zsh @@ -29,7 +29,7 @@ arch-chroot $ROOTFS /bin/sh -c 'pacman-key --init && pacman-key --populate archl arch-chroot $ROOTFS /bin/sh -c 'pacman -Syu --noconfirm base-devel vim git zsh rust clang openssh jq nodejs npm zsh-autosuggestions zsh-syntax-highlighting zsh-history-substring-search jq' if [[ "$BUILD_MODE" == "image" ]]; then - arch-chroot $ROOTFS /bin/sh -c 'pacman -S --noconfirm linux linux-firmware mkinitcpio' + arch-chroot $ROOTFS /bin/sh -c 'pacman -S --noconfirm linux-aios linux-firmware mkinitcpio' fi arch-chroot $ROOTFS /bin/sh -c 'npm i -g @anthropic-ai/claude-code' diff --git a/cfg/repo.sh b/cfg/repo.sh index 0d70917..6d829b0 100755 --- a/cfg/repo.sh +++ b/cfg/repo.sh @@ -4,7 +4,11 @@ set -e d=${0:a:h:h} source $d/.env -echo "=== Building and publishing packages on $HOST ===" +BUILD_KERNEL=false +[[ "$1" == "--kernel" ]] && BUILD_KERNEL=true + +# --- Build packages on HOST (aiosc) --- +echo "=== Building packages on $HOST ===" ssh "$HOST" zsh -s -- "$GPG_KEY" <<'REMOTE' set -e setopt nonomatch 2>/dev/null || true @@ -49,6 +53,47 @@ for pkg in ailog aigpt aishell; do cp "$WORK"/"$pkg"/*.pkg.tar.zst.sig "$REPO_DIR/x86_64/" 2>/dev/null || true done +rm -rf "$WORK" +echo "=== Packages built ===" +REMOTE + +# --- Build kernel on HOST_KERNEL (arch) if requested --- +if [[ "$BUILD_KERNEL" == "true" ]]; then + echo "=== Building linux-aios on $HOST_KERNEL ===" + KERNEL_WORK="\${HOME}/aios-kernel" + + ssh "$HOST_KERNEL" zsh -s <<'KERNEL_REMOTE' +set -e +WORK="${HOME}/aios-kernel" +rm -rf "$WORK" +mkdir -p "$WORK" +cd "$WORK" +git clone --depth 1 https://git.syui.ai/ai/os.git +cp -r "$WORK/os/pkg/linux-aios" "$WORK/linux-aios" +cd "$WORK/linux-aios" +makepkg -sf --noconfirm --skippgpcheck +echo "=== Kernel built ===" +KERNEL_REMOTE + + # Transfer kernel packages: HOST_KERNEL -> local -> HOST + echo "=== Transferring kernel packages ===" + tmpdir=$(mktemp -d) + scp "$HOST_KERNEL":~/aios-kernel/linux-aios/linux-aios-*.pkg.tar.zst "$tmpdir/" + scp "$tmpdir"/linux-aios-*.pkg.tar.zst "$HOST":~/ai/repo/x86_64/ + rm -rf "$tmpdir" + + ssh "$HOST_KERNEL" "rm -rf ~/aios-kernel" +fi + +# --- Update repo database on HOST --- +echo "=== Updating repo database ===" +ssh "$HOST" zsh -s -- "$GPG_KEY" <<'REPO_REMOTE' +set -e +setopt nonomatch 2>/dev/null || true +GPG_KEY="$1" +REPO_NAME="aios" +REPO_DIR="${HOME}/ai/repo" + cd "$REPO_DIR/x86_64" rm -f "${REPO_NAME}".{db,files}* repo-add --sign --key "$GPG_KEY" "${REPO_NAME}.db.tar.gz" *.pkg.tar.zst @@ -68,7 +113,5 @@ git add -A git commit -m "update $(date +%Y.%m.%d)" || true git push -rm -rf "$WORK" - echo "=== Done ===" -REMOTE +REPO_REMOTE diff --git a/pkg/linux-aios/PKGBUILD b/pkg/linux-aios/PKGBUILD new file mode 100644 index 0000000..73c1cb1 --- /dev/null +++ b/pkg/linux-aios/PKGBUILD @@ -0,0 +1,249 @@ +# Maintainer: syui +# Based on: Arch Linux linux package by Jan Alexander Steffens (heftig) + +pkgbase=linux-aios +pkgver=6.19.8.arch1 +pkgrel=1 +pkgdesc='Linux (aios)' +url='https://github.com/archlinux/linux' +arch=( + x86_64 +) +license=(GPL-2.0-only) +makedepends=( + bc + cpio + gettext + libelf + pahole + perl + python + rust + rust-bindgen + rust-src + tar + xz + +) +options=( + !debug + !strip +) +_srcname=linux-${pkgver%.*} +_srctag=v${pkgver%.*}-${pkgver##*.} +source=( + https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/${_srcname}.tar.{xz,sign} + $url/releases/download/$_srctag/linux-$_srctag.patch.zst{,.sig} +) +source_x86_64=(config.x86_64) +validpgpkeys=( + ABAF11C65A2970B130ABE3C479BE3E4300411886 # Linus Torvalds + 647F28654894E3BD457199BE38DBBDC86092693E # Greg Kroah-Hartman + 83BC8889351B5DEBBB68416EB8AC08600F108CDF # Jan Alexander Steffens (heftig) +) +b2sums=('1bb4591dd0adb2472f31adbaaa5eae03743edf6e7a970173afb1ea1c659677102832d69e6ce692deee9ee757b36cba3d63b116a5eee81a7e5226462c40ae5ca0' + 'SKIP' + '7e6a8cbbb3e9c9d9544f87f490534e68f2a7a7714d857649bc4c6ec60c024e5488641fedee664f7eb8e1cb743c738834fdf665b2660477bf223ca8273c2f38a4' + 'SKIP') +b2sums_x86_64=('900786808bcfb20403ebc49d0dfa7793f5975288238258c3edeff1d1fc293a404844f26e56d7afbb3a14a504ce9fa9c939d444431de67017a612b7b99bb2fa4e') + +# https://www.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256sums=('aada4722db8bcfa0b9732851856d405082b6a4fa2e3ab067be8db17cdd115b38' + 'SKIP' + '4d02c253bc7f02101942d073b3b855c2a7f965db442ffb375c6259dddca240a4' + 'SKIP') + +export KBUILD_BUILD_HOST=archlinux +export KBUILD_BUILD_USER=$pkgbase +export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})" + +prepare() { + cd $_srcname + sed -i "s/^EXTRAVERSION = .*/EXTRAVERSION =/" Makefile + + echo "Setting version..." + echo "" > localversion.10-pkgrel + echo "-aios" > localversion.20-pkgname + + local src + for src in "${source[@]}"; do + src="${src%%::*}" + src="${src##*/}" + src="${src%.zst}" + [[ $src = *.patch ]] || continue + echo "Applying patch $src..." + patch -Np1 < "../$src" + done + + echo "Setting config..." + cp ../config.$CARCH .config + make olddefconfig + diff -u ../config.$CARCH .config || : + + make -s kernelrelease > version + echo "Prepared $pkgbase version $(