From 286b106baaf1923673c24a3b83b66a8934a0729c Mon Sep 17 00:00:00 2001 From: Christoph Brandau Date: Sat, 11 Jul 2026 17:34:48 +0200 Subject: [PATCH] feat(build): add PKGBUILD for package distribution This introduces the necessary PKGBUILD file to define how Gitty should be built and packaged for system installation. It sets up the build process using npm and Tauri CLI, ensuring all dependencies are met before compiling the application binary. The script also handles installing required assets like icons, desktop entries, and documentation into the package structure. - Defines build steps using tauri/npm - Installs binaries, icons, and desktop entry files - Sets up standard package metadata (pkgname, depends) --- PKGBUILD | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 PKGBUILD diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..e225738 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,63 @@ +# Maintainer: Christoph Brandau +# +# Local/in-tree PKGBUILD: builds straight from this working directory (no +# source download, no tauri-bundler/AppImage step) and installs the raw +# binary + desktop entry. Run `makepkg -si` from the repo root. +# +# Bump pkgver whenever package.json / tauri.conf.json's version changes +# (the release CI keeps those two in sync already). + +pkgname=gitty +pkgver=2026.7.18 +pkgrel=1 +pkgdesc="A lightweight, modern Git client built with Tauri" +arch=('x86_64') +url="https://git.cbsk-tech.de/Christoph/GitLite" +license=('MIT') +depends=('webkit2gtk-4.1' 'gtk3' 'git' 'hicolor-icon-theme') +makedepends=('rust' 'nodejs' 'npm') +options=('!lto') + +source=() +sha256sums=() + +build() { + cd "$startdir" + npm ci + # Build through the Tauri CLI (not a raw `cargo build --release`): it enables + # the `custom-protocol` cargo feature that makes the binary load the embedded + # `dist/` assets instead of the Vite dev server URL (127.0.0.1:1420), and runs + # `beforeBuildCommand` (`npm run build`) for us. `--no-bundle` skips deb/rpm/ + # appimage packaging (and with it linuxdeploy/FUSE) since pacman owns that here. + npm run tauri -- build --no-bundle +} + +package() { + cd "$startdir" + + install -Dm755 "src-tauri/target/release/gitty" "$pkgdir/usr/bin/gitty" + + install -Dm644 "src-tauri/icons/32x32.png" \ + "$pkgdir/usr/share/icons/hicolor/32x32/apps/gitty.png" + install -Dm644 "src-tauri/icons/128x128.png" \ + "$pkgdir/usr/share/icons/hicolor/128x128/apps/gitty.png" + install -Dm644 "src-tauri/icons/128x128@2x.png" \ + "$pkgdir/usr/share/icons/hicolor/256x256@2/apps/gitty.png" + install -Dm644 "src-tauri/icons/icon.png" \ + "$pkgdir/usr/share/icons/hicolor/512x512/apps/gitty.png" + + install -d "$pkgdir/usr/share/applications" + cat > "$pkgdir/usr/share/applications/gitty.desktop" <<-EOF + [Desktop Entry] + Type=Application + Name=Gitty + Comment=$pkgdesc + Exec=gitty + Icon=gitty + Terminal=false + Categories=Development;RevisionControl; + StartupWMClass=gitty + EOF + + install -Dm644 "README.md" "$pkgdir/usr/share/doc/$pkgname/README.md" +}