aboutsummaryrefslogtreecommitdiffstats
path: root/community/atuin/APKBUILD
blob: 10204388a243a1c8187704453458a04e9f8d11bc (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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
pkgname=atuin
pkgver=12.0.0
pkgrel=0
# Keep in sync with sqlx version in Cargo.lock.
_sqlx_ver=0.6.2
pkgdesc="Magical shell history"
url="https://github.com/ellie/atuin"
# armhf: build getting stuck on CI
# riscv64, s390x: blocked by rust/cargo
arch="all !armhf !riscv64 !s390x"
license="MIT"
makedepends="
	cargo
	clang-dev
	jq
	libsodium-dev
	openssl-dev
	sqlite-dev
	"
pkgusers="atuin"
install="
	$pkgname-server.pre-install
	$pkgname.post-install"
subpackages="
	$pkgname-sync
	$pkgname-server
	$pkgname-server-openrc
	$pkgname-zsh-plugin:_zsh_plugin:noarch
	$pkgname-bash-completion
	$pkgname-fish-completion
	$pkgname-zsh-completion
	"
source="https://github.com/ellie/atuin/archive/v$pkgver/atuin-$pkgver.tar.gz
	https://github.com/launchbadge/sqlx/archive/v$_sqlx_ver/sqlx-$_sqlx_ver.tar.gz
	zsh-dont-bind-up-arrow.patch
	use-system-tls.patch
	sqlx-use-system-libsqlite.patch
	server-log-without-ansi-style.patch
	cargo-lock.patch

	$pkgname.initd
	$pkgname.confd
	$pkgname.logrotate
	"
options="!check"  # FIXME: some tests are broken

export SODIUM_USE_PKG_CONFIG=1

prepare() {
	local sqlx_ver
	sqlx_ver=$(cargo metadata --format-version 1 \
		| jq -er '.packages[] | select(.name=="sqlx") | .version') \
		|| { error 'Unable to find sqlx version in Cargo.lock'; return 1; }
	if [ "$_sqlx_ver" != "$sqlx_ver" ]; then
		error "Bump _sqlx_ver in APKBUILD to: $sqlx_ver"
		return 1
	fi

	mkdir -p vendor
	mv "$srcdir"/sqlx-$_sqlx_ver vendor/sqlx

	# Build with sqlx which we patched to remove bundled libsqlite3.
	# See https://github.com/launchbadge/sqlx/issues/191.
	cat >> Cargo.toml <<-EOF

		[patch.crates-io]   
		sqlx = { path = "./vendor/sqlx" }
		sqlx-core = { path = "./vendor/sqlx/sqlx-core" }
	EOF

	default_prepare

	cargo fetch --locked
}

build() {
	msg2 'Building server'
	cargo build --frozen --release --no-default-features --features server
	mv target/release/atuin target/release/atuin-server

	msg2 'Building client with sync'
	cargo build --frozen --release --no-default-features --features client,sync
	mv target/release/atuin target/release/atuin-sync

	msg2 'Building client without sync'
	cargo build --frozen --release --no-default-features --features client

	mkdir -p comp
	local shell; for shell in bash fish zsh; do
		./target/release/atuin gen-completions -s $shell > comp/atuin.$shell
	done
}

check() {
	cargo test --workspace --frozen --features client,sync,server
}

package() {
	pkgdesc="$pkgdesc - offline only client"
	provider_priority=100  # highest

	install -D -m755 target/release/atuin -t "$pkgdir"/usr/bin/
	install -D -m755 target/release/atuin-server -t "$pkgdir"/usr/bin/

	install -D -m644 comp/atuin.bash "$pkgdir"/usr/share/bash-completion/completions/atuin
	install -D -m644 comp/atuin.fish "$pkgdir"/usr/share/fish/completions/atuin.fish
	install -D -m644 comp/atuin.zsh "$pkgdir"/usr/share/zsh/site-functions/_atuin

	install -d -m755 -o atuin "$pkgdir"/etc/$pkgname
	install -D -m640 -o atuin atuin-server/server.toml -t "$pkgdir"/etc/$pkgname/

	install -D -m755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
	install -D -m644 "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
	install -D -m644 "$srcdir"/$pkgname.logrotate "$pkgdir"/etc/logrotate.d/$pkgname
}

sync() {
	pkgdesc="$pkgdesc - client with history sync"
	provides="$pkgname=$pkgver-r$pkgrel"
	provider_priority=10  # lowest

	install -D -m755 "$builddir"/target/release/atuin-sync "$subpkgdir"/usr/bin/atuin
}

server() {
	pkgdesc="$pkgdesc - sync server"

	amove etc/atuin/server.toml
	amove usr/bin/atuin-server
}

openrc() {
	default_openrc
	install_if="openrc $pkgname-server=$pkgver-r$pkgrel"
}

_zsh_plugin() {
	pkgdesc="$pkgdesc (Zsh plugin)"
	depends="atuin=$pkgver-r$pkgrel"

	install -D -m644 "$builddir"/src/shell/atuin.zsh \
		"$subpkgdir"/usr/share/zsh/plugins/$pkgname/$pkgname.plugin.zsh
}

sha512sums="
dabc7ed45426af218d8bdb439e9a7a608f8f8dc7d442195fba323c5c77aa4ca1f95f8325874c2d9988ee083b03b2a6fc31aa1825819ebb3e5525564371f32c6c  atuin-12.0.0.tar.gz
d5bab0f4ab6843bd8ab3884d0bb4d4166aa0c82b97edcc6134c94fad076d50bf43d24182aa37c23e0e82ea5e78a7db4ef7b6f878e3112b7224865e0ff98d2716  sqlx-0.6.2.tar.gz
3f34e79c81d3f29df7bd0bcb06fee8c3cf325a7e96bdfb0b5080cc1078972ce2092795a6918b277483221c7d29dd99221bd32012172f87ee3bde5404315ade64  zsh-dont-bind-up-arrow.patch
cc7a04c705576c0ee8b53667c4d758752803b13cd55b6a4832351fd447923d0f8b3758eb0f6941eeda7c6bc9994cfa46ee0048a869f671f36da512e5c1eaaf95  use-system-tls.patch
56dad4a6f97a495fa85c2f9ad3bd6a1b684f9a5950079dd57d32e8bde85f7ac14d5efff736ac959c72494d3562d5249c6ef57540f902815bb822eccffc276e93  sqlx-use-system-libsqlite.patch
32ba0e7b89b9634ccb430f6fcfeb9a51d2af8c9427ec99e3d5d5abe193efa005c4456588915749cbb516a3a9925fb8f671ae197e23eb4e870c76cfc8097cb8f6  server-log-without-ansi-style.patch
3ed9b77154771450f67b87e3350fb846244e08ce5ad453af83aaf6faf465b7fffdefc9d3a3cb4c2ded7305d9069da4cfa5e71a92a43b0bf7f39b7060685cb5af  cargo-lock.patch
c3f4e82c7485030bc558821940a46899be6ba1eb0859fa6eb32e4d928f6b455ddeddcc5778a84e0eb9efc1d518f933e4a0d68df195e6a9889ec7bb99da5245c2  atuin.initd
5f1631f0b06f19733025ad3efec6b44ef13937cd8f2f9b7e3cc8c0ba53495850c06fb8c5377d1d003dda00e2d11835056d3fc1b3ba8ecefb575e61a83159f33e  atuin.confd
30946fe22ede072d76331762c862382f03a35735e5741c46367320a116ac285615ae757e20a9cf7adceb8ba24b827581992fa5b7f84e595cd862a3c2ae69dbe0  atuin.logrotate
"