blob: cb2f8e00d8d1e75f3ff22afd1ae870170209e46c (
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
|
# Maintainer: DeepChirp <deepchirp@archlinuxcn.org>
# Contributor: bbaa <bbaa@bbaa.moe>
# Contributor: cap153 <1536989047@qq.com>
_pkgname=EasyTier
pkgbase=easytier
pkgname=(${pkgbase} ${pkgbase}-core ${pkgbase}-cli ${pkgbase}-web)
pkgver=2.6.4
pkgrel=5
pkgdesc="A simple, decentralized mesh VPN with WireGuard support"
arch=('x86_64' 'aarch64' 'armv7h' 'loongarch64' 'riscv64' 'mipsel' 'mips64el')
url="https://easytier.cn/"
license=('LGPL-3.0-only')
depends=('glibc' 'libgcc' 'zstd')
makedepends=('cargo' 'protobuf' 'rust-bindgen' 'sqlite'
'nodejs' 'pnpm') # for embeded web
options=("!lto") # https://gitlab.archlinux.org/archlinux/packaging/packages/pacman/-/issues/20
source=(
"${_pkgname}-${pkgver}.tar.gz::https://github.com/EasyTier/EasyTier/archive/refs/tags/v${pkgver}.tar.gz"
"0001-build-update-pnpm-config-for-v11-compatibility.patch"
"easytier.service"
"config.toml")
sha256sums=('352c0866da709415a837405a6ce4f51b8dfae27e5d5c1da1fb4d8f7338e46795'
'70049779ad48f5257ecf36a5c92ed92c86e1f5f9e6a74650fe716ffb98a09803'
'dd9e71f35055e2442187b630a6ff0c519d6f0bb5d0e206d0cb43e36759ab47fc'
'05518beea8b047d5e9b9adb14f26f85a91e4eea81ead7eeb4743f8978e1fd842')
prepare() {
cd "${_pkgname}-${pkgver}"
# Fix `ERR_PNPM_LOCKFILE_CONFIG_MISMATCH` and `ERR_PNPM_IGNORED_BUILDS` on pnpm v11.0.0+.
# https://github.com/EasyTier/EasyTier/pull/2322
patch -Np1 -i "${srcdir}/0001-build-update-pnpm-config-for-v11-compatibility.patch"
export PNPM_HOME="$srcdir/.pnpm-home"
export npm_config_store_dir="$srcdir/.pnpm-store"
pnpm -r install --frozen-lockfile
export RUSTUP_TOOLCHAIN=stable
cargo fetch --locked --target host-tuple
}
build() {
cd "${_pkgname}-${pkgver}"
export PNPM_HOME="$srcdir/.pnpm-home"
export npm_config_store_dir="$srcdir/.pnpm-store"
pnpm -r --filter "./easytier-web/*" build
# Used for dynamic linking
export LIBSQLITE3_SYS_USE_PKG_CONFIG=1
export ZSTD_SYS_USE_PKG_CONFIG=1
export RUSTUP_TOOLCHAIN=stable
export CARGO_TARGET_DIR=target
cargo build --frozen --release --features=embed
install -d completions
for shell in bash fish zsh nu elvish
do
./target/release/easytier-core --gen-autocomplete "${shell}" > completions/core-"${shell}"
./target/release/easytier-cli gen-autocomplete "${shell}" > completions/cli-"${shell}"
done
}
package_easytier() {
depends=('easytier-core' 'easytier-cli' 'easytier-web')
}
package_easytier-core() {
pkgdesc+=" - Core daemon"
backup=('etc/easytier/config.toml')
install -dm755 "${pkgdir}/var/lib/easytier"
install -Dm644 "easytier.service" -t "${pkgdir}/usr/lib/systemd/system"
install -Dm644 "config.toml" -t "${pkgdir}/etc/easytier"
cd "${_pkgname}-${pkgver}"
install -Dm755 "target/release/easytier-core" -t "${pkgdir}/usr/bin"
install -Dm644 completions/core-bash "${pkgdir}/usr/share/bash-completion/completions/${pkgname}"
install -Dm644 completions/core-fish "${pkgdir}/usr/share/fish/vendor_completions.d/$pkgname.fish"
install -Dm644 completions/core-zsh "${pkgdir}/usr/share/zsh/site-functions/_${pkgname}"
install -Dm644 completions/core-nu "${pkgdir}/usr/share/nushell/vendor/autoload/${pkgname}.nu"
install -Dm644 completions/core-elvish "${pkgdir}/usr/share/elvish/lib/${pkgname}.elv"
}
package_easytier-cli() {
pkgdesc+=" - Command-line interface"
cd "${_pkgname}-${pkgver}"
install -Dm755 "target/release/easytier-cli" -t "${pkgdir}/usr/bin"
install -Dm644 completions/cli-bash "${pkgdir}/usr/share/bash-completion/completions/${pkgname}"
install -Dm644 completions/cli-fish "${pkgdir}/usr/share/fish/vendor_completions.d/${pkgname}.fish"
install -Dm644 completions/cli-zsh "${pkgdir}/usr/share/zsh/site-functions/_${pkgname}"
install -Dm644 completions/cli-nu "${pkgdir}/usr/share/nushell/vendor/autoload/${pkgname}.nu"
install -Dm644 completions/cli-elvish "${pkgdir}/usr/share/elvish/lib/${pkgname}.elv"
}
package_easytier-web() {
pkgdesc+=" - Web management interface"
depends+=('sqlite')
cd "${_pkgname}-${pkgver}"
install -Dm755 "target/release/easytier-web" -t "${pkgdir}/usr/bin"
}
|