blob: 866457832b804941ed334d01c7d4b01375437205 (
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
|
# Maintainer: Daniel Peukert <daniel@peukert.cc>
# Contributor: Christoph Mohr <christoph.mohr@gmail.com>
# Contributor: Giovanni 'ItachiSan' Santini <giovannisantini93@yahoo.it>
# Contributor: Filipe LaĆns (FFY00) <lains@archlinux.org>
# Contributor: Pieter Goetschalckx <3.14.e.ter <at> gmail <dot> com>
_pkgname='ferdi'
pkgname="$_pkgname-git"
pkgver='5.7.0.r0.g094d3762'
pkgrel='1'
pkgdesc='A messaging browser that allows you to combine your favorite messaging services into one application - git version'
arch=('x86_64' 'i686' 'armv7h' 'aarch64')
url="https://get$_pkgname.com"
license=('Apache')
_electronpkg='electron15'
depends=("$_electronpkg" 'libxkbfile')
# We're depending on node v16 until https://github.com/nodejs/node-gyp/issues/2534 is fixed
makedepends=('git' 'nodejs-lts-gallium' 'npm>=8.1.0' 'pnpm' 'python')
provides=("$_pkgname")
conflicts=("$_pkgname")
source=(
"$pkgname::git+https://github.com/get$_pkgname/$_pkgname"
"$pkgname-recipes::git+https://github.com/get$_pkgname/recipes"
'fix-autostart-path.diff'
)
sha512sums=('SKIP'
'SKIP'
'5263a9e1f4f9e4435f857181e67eb6b3ed254a18371ab5430bdf614821831aea2474f385b3860e783119fed5eb0c5f0cc94c74b1510e2ae29da524cd0d77fee3')
_sourcedirectory="$pkgname"
case "$CARCH" in
i686)
_electronbuilderarch='ia32'
;;
armv7h)
_electronbuilderarch='armv7l'
;;
aarch64)
_electronbuilderarch='arm64'
;;
*)
_electronbuilderarch='x64'
;;
esac
prepare() {
cd "$srcdir/$_sourcedirectory/"
# Provide git submodules
git submodule init
git config submodule.recipes.url "$srcdir/$pkgname-recipes"
git submodule update --init --recursive
# Set system Electron version for ABI compatibility
sed -E -i 's|("electron": ").*"|\1'"$(cat "/usr/lib/$_electronpkg/version")"'"|' 'package.json'
# Loosen node version restriction
sed -E -i 's|("node": ").*"|\1'"$(node --version | sed 's/^v//')"'"|' 'package.json'
# Specify path for autostart file
patch --forward -p1 < '../fix-autostart-path.diff'
# Prepare recipes
cd "$srcdir/$_sourcedirectory/recipes/"
# Disable the prepare script for recipes as we don't want husky to run
sed -E -i 's|"prepare": ".*"|"prepare": ""|' 'package.json'
# Build recipe archives
pnpm install
pnpm run package
# Prepare ferdi dependencies
cd "$srcdir/$_sourcedirectory/"
# Disable the prepare script for ferdi itself as we don't want husky to run
sed -E -i 's|"prepare": ".*"|"prepare": ""|' 'package.json'
# Install ferdi dependencies
npm install
}
pkgver() {
cd "$srcdir/$_sourcedirectory/"
git describe --long --tags | sed -e 's/^v//' -e 's/-\([^-]*-g[^-]*\)$/-r\1/' -e 's/-/./g'
}
build() {
cd "$srcdir/$_sourcedirectory/"
# Run pre-build tasks: prepare build info, run gulp
npm run prebuild
# Use npmrc from the root folder for npm>=6 compatibility
cp '.npmrc' 'build/.npmrc'
# Build the actual application
NODE_ENV='production' ./node_modules/.bin/electron-builder --linux dir "--$_electronbuilderarch" -c.electronDist="/usr/lib/$_electronpkg" -c.electronVersion="$(cat "/usr/lib/$_electronpkg/version")"
}
package() {
cd "$srcdir/$_sourcedirectory/"
local _outpath='out/linux'
if [ "$_electronbuilderarch" != 'x64' ]; then
_outpath="$_outpath-$_electronbuilderarch"
fi
_outpath="$_outpath-unpacked"
install -Dm644 "$_outpath/resources/app.asar" "$pkgdir/usr/lib/$_pkgname/app.asar"
cp -r --no-preserve=ownership --preserve=mode "$_outpath/resources/app.asar.unpacked/" "$pkgdir/usr/lib/$_pkgname/app.asar.unpacked/"
install -dm755 "$pkgdir/usr/bin/"
cat << EOF > "$pkgdir/usr/bin/$_pkgname"
#!/bin/sh
NODE_ENV=production ELECTRON_IS_DEV=0 exec $_electronpkg '/usr/lib/$_pkgname/app.asar' "\$@"
EOF
chmod +x "$pkgdir/usr/bin/$_pkgname"
install -dm755 "$pkgdir/usr/share/applications/"
cat << EOF > "$pkgdir/usr/share/applications/$_pkgname.desktop"
[Desktop Entry]
Name=${_pkgname^}
Exec=/usr/bin/$_pkgname %U
Terminal=false
Type=Application
Icon=$_pkgname
StartupWMClass=${_pkgname^}
Comment=Ferdi is your messaging app / former Emperor of Austria and combines chat & messaging services into one application. Ferdi currently supports Slack, WhatsApp, WeChat, HipChat, Facebook Messenger, Telegram, Google Hangouts, GroupMe, Skype and many more. You can download Ferdi for free for Mac & Windows.
MimeType=x-scheme-handler/ferdi;
Categories=Network;InstantMessaging;
EOF
for _size in 16 24 32 48 64 96 128 256 512 1024; do
install -Dm644 "build-helpers/images/icons/${_size}x${_size}.png" "$pkgdir/usr/share/icons/hicolor/${_size}x${_size}/apps/$_pkgname.png"
done
}
|