-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
PKGBUILD
80 lines (69 loc) · 3.17 KB
/
PKGBUILD
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
# Maintainer: Reto Brunner <[email protected]>
# Maintainer: Maxime Poulin <[email protected]>
pkgname=thelounge
pkgver=4.4.3
pkgsuffix="" #-rc.1
pkgrel=2
pkgdesc='Modern self-hosted web IRC client'
url='https://thelounge.chat/'
arch=('any')
license=('MIT')
depends=('nodejs')
options=('!lto')
makedepends=('yarn' 'python' 'python-setuptools' 'git')
backup=('etc/thelounge/config.js')
source=(
"https://registry.npmjs.org/$pkgname/-/$pkgname-${pkgver}${pkgsuffix}.tgz"
"https://raw.githubusercontent.com/thelounge/thelounge/v${pkgver}${pkgsuffix}/yarn.lock"
"https://raw.githubusercontent.com/thelounge/thelounge/v${pkgver}${pkgsuffix}/package.json"
'system.service'
'user.service'
'sysusers.d'
'tmpfiles.d'
)
noextract=("$pkgname-${pkgver}${pkgsuffix}.tgz")
sha256sums=('685d753ad080c35ac7c4cf2eef6437df8de47a3d352b10f06d56acc9a08f4f18'
'0bcb88814337e6dd1352dd382a14e6c277f71410767277db34c97b998e1cd0b9'
'e0cca2931e46842039fcbc78efbecae4b9893608d18959f616aa7ea559311441'
'c92210f6ac8f01c1cd01b6b26793094cd2feea583ed21fab3564d6bcafdc7a20'
'c609f3309f54bd6285e99ff29ca2464828bec7bbbca67243ee688bd2d605dbf0'
'30fab63b8a4ffcfdda4c5b8d7c66822a323c4f1de6ca62b77fe9500f4befc0a5'
'c07fc7aaa91f6d2407d9ea2d15bfa780bfc06e3487efa138a9385307dcf9f41d')
prepare() {
yarn install --prod --frozen-lockfile --non-interactive --ignore-scripts --cache-folder "$srcdir/yarn-cache"
}
build() {
mkdir _build
cp package.json yarn.lock _build
cd _build || exit 1
# Install the package itself
# we on purpose don't use yarn global add, because --ignore-scripts
# is ignored: https://github.com/yarnpkg/yarn/issues/8291 but we tried
yarn add --no-default-rc --frozen-lockfile \
--prod --non-interactive --ignore-scripts \
--cache-folder "$srcdir/yarn-cache" --offline \
file:"$srcdir/$pkgname-${pkgver}${pkgsuffix}.tgz"
# fetch sqlite3 binary blob
cd node_modules/sqlite3 || exit 1
yarn run install
}
package() {
install -dm755 "$pkgdir/usr/lib/thelounge"
cp -r "$srcdir/_build/node_modules" "$pkgdir/usr/lib/thelounge"
install -dm755 "$pkgdir/usr/bin/"
ln -s "/usr/lib/thelounge/node_modules/thelounge/index.js" "$pkgdir/usr/bin/thelounge"
# Non-deterministic race in npm gives 777 permissions to random directories.
# See https://github.com/npm/npm/issues/9359 for details.
# yarn is probably not much better
find "${pkgdir}"/usr/lib/thelounge -type d -exec chmod 755 {} +
chown -R root:root "${pkgdir}"
echo /etc/thelounge > "$pkgdir/usr/lib/thelounge/node_modules/thelounge/.thelounge_home"
# add default config
install -Dm 644 "$pkgdir/usr/lib/thelounge/node_modules/thelounge/dist/defaults/config.js" "$pkgdir/etc/thelounge/config.js"
# services
install -Dm644 "$srcdir/system.service" "$pkgdir/usr/lib/systemd/system/$pkgname.service"
install -Dm644 "$srcdir/user.service" "$pkgdir/usr/lib/systemd/user/$pkgname.service"
# setting up system user
install -Dm644 "${srcdir}/sysusers.d" "${pkgdir}/usr/lib/sysusers.d/thelounge.conf"
install -Dm644 "${srcdir}/tmpfiles.d" "${pkgdir}/usr/lib/tmpfiles.d/thelounge.conf"
}