summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 9fc5bbeabf057f827f53ae4a4c14867cddaddf83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# Maintainer: Levi Zim <rsworktech@outlook.com>

_pkgname=ttyrecall
pkgname=$_pkgname-git
pkgver=0.0.1.r70.g75e100e
pkgrel=1
pkgdesc="Recall, but for terminals"
arch=('x86_64' 'aarch64' 'riscv64')
url="https://github.com/kxxt/ttyrecall"
license=('AGPL-3.0-or-later AND GPL-2.0-or-later AND MIT-0')
depends=('gcc-libs' 'libbpf' 'libelf' 'pam' 'zlib' 'zstd')
makedepends=('bpf' 'cargo' 'clang' 'git' 'npm' 'pkgconf' 'ripgrep')
optdepends=('ripgrep: full-text search in the web UI and TUI')
source=("$_pkgname::git+https://github.com/kxxt/ttyrecall.git"
        "ttyrecalld.service"
        "ttyrecall-web.service"
        "ttyrecall.sysusers"
        "ttyrecall.tmpfiles")
b2sums=('SKIP'
        '557f4a71f91d45c78a710c75d7806db751a0a15125966c8f51a0b901ef0d1f8988df5c15a0d74b6ade381bf5744c42cbdfb44c93e5ed2d5117fa835d54e4bf23'
        '0f2c8ad53b7f4f6a8f15ad97bcf37a4ca6d796b043c7f8cefe2a073dc4f809ed3d6b279d9876f625b46ab4b2b79a4ab712d8bb69d2ad36bbfbffb0aa1134b415'
        '669c8b9c38f078cd0fcac52f5a2beee7a70878a591faef2904fac8b2ff505374bedd7e6dcd80cc8509b7ce63e4879ea718b9a67c2e803d4c846be7e02b87d7a8'
        'c76f2629694f7d9ad4d1fb07615f7e30032227dceb7e26522a1805702fc6cb6a4d12dc3561a172b1930d6f74ab8725733635c1e9ae2992a2d2a2b36a7402410d')
provides=($_pkgname)
conflicts=($_pkgname $_pkgname-bin)
backup=('etc/ttyrecall/config.toml')

pkgver() {
  cd "$_pkgname"
  git describe --long --abbrev=7 | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
}

prepare() {
  cd "$_pkgname"
  export RUSTUP_TOOLCHAIN=stable
  cargo fetch --locked --target host-tuple
  npm ci --prefix frontend
}

build() {
  cd "$_pkgname"
  export RUSTUP_TOOLCHAIN=stable # Only the eBPF build need nightly toolchain
  export ZSTD_SYS_USE_PKG_CONFIG=1
  cargo xtask build --release --no-default-features --skip-frontend-deps
  local compgen="target/release/$_pkgname generate-completion"
  mkdir -p completions
  $compgen bash >"completions/$_pkgname"
  $compgen elvish >"completions/$_pkgname.elv"
  $compgen fish >"completions/$_pkgname.fish"
  $compgen zsh >"completions/_$_pkgname"
}

check() {
  cd "$_pkgname"
  export RUSTUP_TOOLCHAIN=stable
  export ZSTD_SYS_USE_PKG_CONFIG=1
  cargo test --frozen --release
}

package() {
  cd "$_pkgname"
  # Binary
  install -Dm755 -t "$pkgdir/usr/bin/" "target/release/$_pkgname"
  # Service
  install -vDm644 "$srcdir/ttyrecalld.service" "$pkgdir/usr/lib/systemd/system/ttyrecalld.service"
  install -vDm644 "$srcdir/ttyrecall-web.service" "$pkgdir/usr/lib/systemd/system/ttyrecall-web.service"
  install -vDm644 "$srcdir/ttyrecall.sysusers" "$pkgdir/usr/lib/sysusers.d/ttyrecall.conf"
  install -vDm644 "$srcdir/ttyrecall.tmpfiles" "$pkgdir/usr/lib/tmpfiles.d/ttyrecall.conf"
  # Web frontend
  install -dm755 "$pkgdir/usr/share/ttyrecall/web"
  cp -a frontend/dist/. "$pkgdir/usr/share/ttyrecall/web/"
  # Storage dir
  install -dm755 "$pkgdir/var/lib/ttyrecall"
  # Config
  install -dm755 "$pkgdir/etc/ttyrecall"
  install -Dm644 etc/config.toml "$pkgdir/etc/ttyrecall/config.toml"
  # Shell completions
  install -Dm644 "completions/$_pkgname" -t "$pkgdir/usr/share/bash-completion/completions/"
  install -Dm644 "completions/$_pkgname.elv" -t "$pkgdir/usr/share/elvish/lib/"
  install -Dm644 "completions/$_pkgname.fish" -t "$pkgdir/usr/share/fish/vendor_completions.d/"
  install -Dm644 "completions/_$_pkgname" -t "$pkgdir/usr/share/zsh/site-functions/"
  # Docs
  install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md"
  # License
  install -Dm644 ttyrecall/LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE.AGPL3"
  install -Dm644 ttyrecall-ebpf/LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE.GPL2"
  install -Dm644 ttyrecall-common/LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE.MIT0"
}

# vim:set ts=2 sw=2 et: