blob: aa46bebdab54eb0e328a76e72602c235b410e5e5 (
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
|
# Maintainer:
# Contributor: Xuanwo <xuanwo@archlinuxcn.org>
# Contributor: Bader <Bad3r@pm.me>
# Contributor: @pychuang (logseq-desktop-git)
# avoid cluttering user home, while allowing data to be cached
export HOME="$SRCDEST/node-home"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HoME/.local/share"
# basic info
_pkgname="logseq-desktop"
pkgname="$_pkgname"
pkgver=0.10.9
pkgrel=1
pkgdesc="Privacy-first, open-source platform for knowledge sharing and management"
url="https://github.com/logseq/logseq"
license=('AGPL-3.0-or-later')
arch=('x86_64')
depends=(
dbus
expat
glib2
nspr
nss
)
makedepends=(
clojure
git
nodejs
npm
python-setuptools
yarn
)
install="$pkgname.install"
_pkgsrc="logseq-${pkgver}"
_pkgext="tar.gz"
source=(
"$_pkgsrc.$_pkgext"::"$url/archive/refs/tags/${pkgver}.$_pkgext"
)
sha256sums=(
'9fe98bbeb4355c1ad3ea5b3776f02455ee86b8157f74dd53bb9b3367df31403a'
)
prepare() {
cd "$_pkgsrc"
# download required js modules
yarn install
# create and sync files to folder `static`
yarn gulp:build
# go to folder `static` and download required js modules in static
cd "static"
yarn install
# go back to the top-level folder and download clojure dependencies
cd "${srcdir}/$_pkgsrc"
clojure -P -M:cljs
}
build() {
cd "$_pkgsrc"
# build
yarn cljs:release
# packaging javescript files to an executable
cd "static"
yarn electron-forge package
}
package() {
# copy files
install -dm755 "$pkgdir/opt/$_pkgname"
cp --reflink=auto -a -r -u "$_pkgsrc/static/out/Logseq-linux-x64"/* "$pkgdir/opt/$_pkgname"
# executable
install -Dm755 /dev/stdin "$pkgdir/usr/bin/logseq" << 'EOF'
#!/usr/bin/env sh
set -e
APPDIR="/opt/logseq-desktop"
_ELECTRON="${APPDIR}/Logseq"
_FLAGS_FILE="${XDG_CONFIG_HOME:-$HOME/.config}/logseq-flags.conf"
if [ -r "$_FLAGS_FILE" ]; then
_USER_FLAGS="$(cat "$_FLAGS_FILE")"
fi
if [[ $EUID -ne 0 ]] || [[ $ELECTRON_RUN_AS_NODE ]]; then
exec ${_ELECTRON} $_USER_FLAGS "$@"
else
exec ${_ELECTRON} --no-sandbox $_USER_FLAGS "$@"
fi
EOF
# copy xdg desktop files
install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/$_pkgname.desktop" << END
[Desktop Entry]
Type=Application
Name=Logseq
Comment=Privacy-first, open-source platform for knowledge sharing and management
Exec=logseq %u
Icon=logseq
Terminal=false
StartupNotify=true
Categories=Office;
MimeType=x-scheme-handler/logseq;
StartupWMClass=Logseq
END
# permissions
chmod -R u+rwX,go+rX,go-w "$pkgdir/"
}
|