Buzz (https://github.com/block/buzz, Apache-2.0) is a Tauri desktop app on a Nostr relay. Upstream ships Linux builds for x86_64 only, so this builds the desktop-v0.5.28 tag from source for x86_64 and aarch64, following upstream's release-linux job: the six sidecar binaries from the root workspace, then the app with --features mesh-llm. The updater stays compiled out (its key and endpoint are unset), so pacman owns updates. On the fast ring; the watch follows desktop-v* releases. On aarch64, -march gains +crypto so sha2-asm can assemble its SHA instructions; sha2 still detects them at runtime. Built natively for aarch64 with bin/build and launched with isolated HOME/XDG dirs: the window opens and renders the bundled frontend.
93 lines
3.1 KiB
Bash
93 lines
3.1 KiB
Bash
pkgname=buzz
|
|
pkgver=0.5.28
|
|
pkgrel=1
|
|
pkgdesc='Workspace where humans and AI agents build together, on a Nostr relay you own'
|
|
arch=('x86_64' 'aarch64')
|
|
url='https://github.com/block/buzz'
|
|
license=('Apache-2.0')
|
|
|
|
depends=(
|
|
'alsa-lib'
|
|
'cairo'
|
|
'gcc-libs'
|
|
'gdk-pixbuf2'
|
|
'glib2'
|
|
'glibc'
|
|
'gst-plugins-good'
|
|
'gtk3'
|
|
'hicolor-icon-theme'
|
|
'libayatana-appindicator'
|
|
'libsoup3'
|
|
'opus'
|
|
'webkit2gtk-4.1'
|
|
)
|
|
makedepends=('cargo' 'cmake' 'nodejs' 'pnpm' 'pkgconf')
|
|
conflicts=('buzz-appimage' 'buzz-bin' 'buzz-desktop-git')
|
|
# Arch's GCC LTO objects cannot be consumed when crates compile bundled C
|
|
# libraries (secp256k1-sys among them).
|
|
options=('!lto')
|
|
|
|
_srcdir="$pkgname-desktop-v$pkgver"
|
|
source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/desktop-v$pkgver.tar.gz"
|
|
'buzz.desktop')
|
|
sha256sums=('4ba8c250d6ebb075ba60e6c4d217b77ea605b183161715b77629bd8660b81a43'
|
|
'3c152420e67c64f5046cc0e10a9d948e1c7d3efa512582ad279f073b0900526a')
|
|
|
|
# The sidecars the desktop app spawns from its own directory, from upstream's
|
|
# scripts/bundle-sidecars.sh.
|
|
_sidecars=(buzz-acp buzz-agent buzz-backend-kubernetes buzz-dev-mcp git-credential-nostr buzz)
|
|
|
|
prepare() {
|
|
cd "$_srcdir"
|
|
|
|
export npm_config_store_dir="$srcdir/pnpm-store"
|
|
pnpm install --frozen-lockfile
|
|
|
|
# The sidecars build in the root workspace; the app has its own lockfile.
|
|
cargo fetch --locked --target "$CARCH-unknown-linux-gnu"
|
|
cargo fetch --locked --target "$CARCH-unknown-linux-gnu" \
|
|
--manifest-path desktop/src-tauri/Cargo.toml
|
|
}
|
|
|
|
build() {
|
|
cd "$_srcdir"
|
|
|
|
export npm_config_store_dir="$srcdir/pnpm-store"
|
|
# audiopus_sys's vendored opus fallback declares an old CMake minimum.
|
|
export CMAKE_POLICY_VERSION_MINIMUM=3.5
|
|
# sha2-asm assembles ARMv8 SHA instructions, which Arch Linux ARM's
|
|
# -march=armv8-a leaves out. sha2 still checks for them at runtime.
|
|
[[ $CARCH == aarch64 ]] && CFLAGS=${CFLAGS/-march=armv8-a/-march=armv8-a+crypto}
|
|
|
|
cargo build --frozen --release -p buzz-acp -p buzz-agent -p buzz-backend-kubernetes \
|
|
-p buzz-dev-mcp -p git-credential-nostr -p buzz-cli
|
|
./scripts/bundle-sidecars.sh
|
|
|
|
# Upstream's Linux release build, without its bundles. Leaving
|
|
# BUZZ_UPDATER_PUBLIC_KEY and BUZZ_UPDATER_ENDPOINT unset compiles the
|
|
# self-updater out: pacman owns updates.
|
|
cd desktop
|
|
pnpm tauri build --ci --no-bundle --features mesh-llm -- --frozen
|
|
}
|
|
|
|
package() {
|
|
cd "$_srcdir"
|
|
|
|
install -Dm755 desktop/src-tauri/target/release/buzz-desktop "$pkgdir/usr/bin/buzz-desktop"
|
|
local bin
|
|
for bin in "${_sidecars[@]}"; do
|
|
install -Dm755 "target/release/$bin" "$pkgdir/usr/bin/$bin"
|
|
done
|
|
|
|
install -Dm644 "$srcdir/buzz.desktop" "$pkgdir/usr/share/applications/buzz-desktop.desktop"
|
|
local icons=desktop/src-tauri/icons size
|
|
for size in 32 64 128; do
|
|
install -Dm644 "$icons/${size}x$size.png" \
|
|
"$pkgdir/usr/share/icons/hicolor/${size}x$size/apps/buzz-desktop.png"
|
|
done
|
|
install -Dm644 "$icons/128x128@2x.png" "$pkgdir/usr/share/icons/hicolor/256x256/apps/buzz-desktop.png"
|
|
install -Dm644 "$icons/icon.png" "$pkgdir/usr/share/icons/hicolor/512x512/apps/buzz-desktop.png"
|
|
|
|
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
|
}
|