diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index fa07944..1a9c514 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -388,6 +388,23 @@ jobs: tar -C "$GITHUB_WORKSPACE/src/upower/dest-aarch64" \ -cf "$GITHUB_WORKSPACE/src/Souveraine/upower-tree-aarch64.tar" . + - name: Stage the shell surface for packaging + run: | + set -euo pipefail + cd "$GITHUB_WORKSPACE/src/Souveraine" + # deploy.sh composes ~/.config/quickshell/souveraine from repo files + # (symlinks) plus ii dirs borrowed from the ii-base pin. Run it in a + # scratch HOME and tar the result dereferenced, so the package is + # self-contained real files and never ships dangling links. + SHELL_STAGE="$GITHUB_WORKSPACE/shell-stage" + SHELL_TAR="$GITHUB_WORKSPACE/pacman-package/shell" + rm -rf "$SHELL_STAGE" "$SHELL_TAR" + mkdir -p "$SHELL_STAGE" "$SHELL_TAR" + HOME="$SHELL_STAGE" ./surfaces/quickshell/deploy.sh + test -L "$SHELL_STAGE/.config/quickshell/souveraine/shell.qml" + tar -h -C "$SHELL_STAGE/.config/quickshell" -cJf "$SHELL_TAR/souveraine-shell-config.tar.zst" souveraine + tar -tf "$SHELL_TAR/souveraine-shell-config.tar.zst" | grep -qx 'souveraine/shell.qml' + - name: Package and sign pacman repository run: | set -euo pipefail @@ -494,6 +511,26 @@ jobs: gpg --batch --yes --local-user "$ARCHIVE_KEY" \ --detach-sign "$ARCH_REPO/$(basename "$UPKG")" + # Shell package — the composed quickshell config, arch=any, from + # the staged tar. Same per-arch database as the binaries above. + SHELL_WORK="$WORK/shell-$ARCH" + mkdir -p "$SHELL_WORK" + cp "$WORK/shell/souveraine-shell-config.tar.zst" "$SHELL_WORK/" + cp packaging/arch/PKGBUILD.shell.prebuilt "$SHELL_WORK/PKGBUILD" + cp LICENSE "$SHELL_WORK/" + ( + cd "$SHELL_WORK" + export SOUVERAINE_PKGVER="$PKGVER" + CARCH="$ARCH" makepkg --nodeps --noconfirm --cleanbuild + ) + SPKG=$(find "$SHELL_WORK" -maxdepth 1 -name 'souveraine-shell-*.pkg.tar.zst' -print -quit) + test -n "$SPKG" + bsdtar -tf "$SPKG" | grep -qx 'etc/xdg/quickshell/souveraine/shell.qml' + bsdtar -tf "$SPKG" | grep -qx 'usr/share/licenses/souveraine-shell/LICENSE' + cp "$SPKG" "$ARCH_REPO/" + gpg --batch --yes --local-user "$ARCHIVE_KEY" \ + --detach-sign "$ARCH_REPO/$(basename "$SPKG")" + # The per-arch database is NOT built here. `edge` is a shared archive # with more than one producer in it, so the database has to be # read-modify-written against the live copy rather than generated diff --git a/packaging/arch/PKGBUILD.shell.prebuilt b/packaging/arch/PKGBUILD.shell.prebuilt new file mode 100644 index 0000000..1a344fb --- /dev/null +++ b/packaging/arch/PKGBUILD.shell.prebuilt @@ -0,0 +1,25 @@ +# CI package recipe for the Souveraine quickshell config. +# +# surfaces/quickshell/deploy.sh composes the shell into a scratch HOME +# (repo files symlinked in, ii dirs borrowed from the ii-base pin), and CI +# tars that tree dereferenced. This package ships the composed result to +# /etc/xdg/quickshell/souveraine, so a device gets the shell through pacman +# instead of hand-copied files. A writable copy in ~/.config/quickshell +# shadows it (the live overlay stays deploy.sh's). +pkgname=souveraine-shell +pkgver="${SOUVERAINE_PKGVER:?CI must set SOUVERAINE_PKGVER}" +pkgrel=1 +pkgdesc="The Souveraine quickshell config, composed and package-owned" +arch=('any') +url='https://gitea.wiuf.net/Fimeg/souveraine' +license=('GPL-3.0-or-later') +depends=('quickshell') +options=('!debug') +source=('souveraine-shell-config.tar.zst' 'LICENSE') +b2sums=('SKIP' 'SKIP') +package() { + install -d "$pkgdir/etc/xdg/quickshell/souveraine" + tar -xzf "$srcdir/souveraine-shell-config.tar.zst" \ + -C "$pkgdir/etc/xdg/quickshell/souveraine" + install -Dm644 "$srcdir/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} \ No newline at end of file