127 lines
3.4 KiB
Bash
127 lines
3.4 KiB
Bash
# Maintainer: kpcyrd <kpcyrd[at]archlinux[dot]org>
|
|
# Maintainer: Christian Heusel <gromit@archlinux.org>
|
|
# Contributor: Jean Lucas <jean@4ray.co>
|
|
|
|
pkgname=signal-desktop
|
|
_pkgname=Signal-Desktop
|
|
pkgver=7.77.1
|
|
pkgrel=1
|
|
pkgdesc="Signal Private Messenger for Linux"
|
|
license=('AGPL-3.0-only')
|
|
arch=('aarch64') # Only for aarch64 - already in Arch extra repo for x86_64
|
|
url="https://signal.org"
|
|
depends=(
|
|
'alsa-lib' 'libasound.so'
|
|
'at-spi2-core' 'libatk-bridge-2.0.so'
|
|
'cairo' 'libcairo.so'
|
|
'dbus' 'libdbus-1.so'
|
|
'expat' 'libexpat.so'
|
|
'gcc-libs'
|
|
'glib2' 'libgio-2.0.so'
|
|
'glibc'
|
|
'gtk3'
|
|
'hicolor-icon-theme'
|
|
'libcups'
|
|
'libdrm'
|
|
'libnotify'
|
|
'libpulse'
|
|
'libx11'
|
|
'libxcb'
|
|
'libxcomposite'
|
|
'libxdamage'
|
|
'libxext'
|
|
'libxfixes'
|
|
'libxkbcommon' 'libxkbcommon.so'
|
|
'libxrandr'
|
|
'mesa'
|
|
'nspr'
|
|
'nss'
|
|
'pango' 'libpango-1.0.so'
|
|
'systemd-libs' 'libudev.so'
|
|
)
|
|
makedepends=(
|
|
'git'
|
|
'git-lfs'
|
|
'libxcrypt-compat'
|
|
'node-gyp'
|
|
'nodejs-lts-jod'
|
|
'pnpm'
|
|
'python'
|
|
)
|
|
optdepends=('xdg-desktop-portal: Screensharing with Wayland')
|
|
source=(
|
|
"${pkgname}-${pkgver}.tar.gz::https://github.com/signalapp/${_pkgname}/archive/v${pkgver}.tar.gz"
|
|
"${pkgname}.desktop"
|
|
)
|
|
sha256sums=('5aae71e9b3ef88bb0499f96295e92d576ba8b6b6d2fe8ac90349fb589882d0dd'
|
|
'bf388df4b5bbcab5559ebbf220ed4748ed21b057f24b5ff46684e3fe6e88ccce')
|
|
b2sums=('dda49421e7d8f5f906b92a228e50c0081c73c6b6259b20959eeeb9d9f960a1ab74890c9e725c68b56d9c60537a82633af033b8e59aae52c79f2b7289601ba294'
|
|
'ffb8f7bab4fd84aacf13e7b6d2835daf449b6650b4b3fa723456792ba7fb6cae352928fea11cb030510d558ce30036ff5a1513444f067b94c7fff0158b4f2265')
|
|
|
|
prepare() {
|
|
cd "${_pkgname}-${pkgver}"
|
|
|
|
# git-lfs hook needs to be installed for one of the dependencies
|
|
git lfs install
|
|
|
|
# Allow higher Node versions
|
|
sed 's#"node": "#&>=#' -i package.json
|
|
|
|
# Disable .deb packaging to avoid fpm architecture mismatch in cross-compilation
|
|
# electron-builder will still create the unpacked directory we need for packaging
|
|
# Use node to properly modify the JSON structure
|
|
node -e "
|
|
const fs = require('fs');
|
|
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
|
|
if (pkg.build && pkg.build.linux && pkg.build.linux.target) {
|
|
pkg.build.linux.target = ['dir'];
|
|
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
|
|
console.log('Modified package.json to use dir target only');
|
|
}
|
|
"
|
|
|
|
# Install dependencies for sticker-creator
|
|
pnpm --prefix ./sticker-creator/ install
|
|
|
|
# Install dependencies for signal-desktop
|
|
pnpm install
|
|
}
|
|
|
|
build() {
|
|
cd "${_pkgname}-${pkgver}"
|
|
|
|
# Build the sticker creator
|
|
pnpm --prefix ./sticker-creator/ run build
|
|
|
|
# Build signal-desktop
|
|
pnpm run build
|
|
}
|
|
|
|
package() {
|
|
cd "${_pkgname}-${pkgver}"
|
|
|
|
# Determine the architecture-specific directory
|
|
case "${CARCH}" in
|
|
x86_64)
|
|
_releasedir="release/linux-unpacked"
|
|
;;
|
|
aarch64)
|
|
_releasedir="release/linux-arm64-unpacked"
|
|
;;
|
|
esac
|
|
|
|
install -d "${pkgdir}/usr/"{lib,bin}
|
|
cp -a "${_releasedir}" "${pkgdir}/usr/lib/${pkgname}"
|
|
ln -s "/usr/lib/${pkgname}/${pkgname}" "${pkgdir}/usr/bin/"
|
|
|
|
chmod u+s "${pkgdir}/usr/lib/signal-desktop/chrome-sandbox"
|
|
|
|
install -Dm 644 "../${pkgname}.desktop" -t "${pkgdir}/usr/share/applications"
|
|
for i in 16 24 32 48 64 128 256 512 1024; do
|
|
install -Dm 644 "build/icons/png/${i}x${i}.png" \
|
|
"${pkgdir}/usr/share/icons/hicolor/${i}x${i}/apps/${pkgname}.png"
|
|
done
|
|
}
|
|
|
|
# vim: ts=2 sw=2 et:
|