diff --git a/pkgbuilds/slack-desktop/PKGBUILD b/pkgbuilds/slack-desktop/PKGBUILD index 2d8a089..27fbc28 100644 --- a/pkgbuilds/slack-desktop/PKGBUILD +++ b/pkgbuilds/slack-desktop/PKGBUILD @@ -2,13 +2,14 @@ pkgname=slack-desktop pkgver=4.52.171 -pkgrel=1 -# Slack publishes Linux builds for x86_64 only. Its application code runs -# unchanged on the AArch64 build of the Electron release it ships with; see -# README.md for the native modules that are replaced or dropped. +pkgrel=2 +# Slack publishes Linux builds for x86_64 only, which this package installs +# unchanged. On AArch64 the same application code runs on the AArch64 build +# of the Electron release Slack ships with; see README.md for the native +# modules that are replaced or dropped there. _electronver=44.4.5 -pkgdesc='Slack Desktop for Linux on a native AArch64 Electron runtime' -arch=('aarch64') +pkgdesc='Slack Desktop for Linux' +arch=('x86_64' 'aarch64') url='https://slack.com/downloads' license=('custom') depends=( @@ -44,12 +45,14 @@ optdepends=( 'libappindicator-gtk3: Systray indicator support' 'org.freedesktop.secrets: Keyring password store support' ) -makedepends=('asar') +makedepends_aarch64=('asar') options=('!debug' '!strip') source=( "slack-desktop-${pkgver}-amd64.deb::https://downloads.slack-edge.com/desktop-releases/linux/x64/${pkgver}/slack-desktop-${pkgver}-amd64.deb" - "electron-v${_electronver}-linux-arm64.zip::https://github.com/electron/electron/releases/download/v${_electronver}/electron-v${_electronver}-linux-arm64.zip" 'slack.desktop' +) +source_aarch64=( + "electron-v${_electronver}-linux-arm64.zip::https://github.com/electron/electron/releases/download/v${_electronver}/electron-v${_electronver}-linux-arm64.zip" 'slack-desktop-utils.js' 'file-handler-info.js' 'electron-native-auth.js' @@ -59,11 +62,11 @@ noextract=( "electron-v${_electronver}-linux-arm64.zip" ) sha256sums=('c6199816e6d842289869a9e84a05042af6e0de68959df7a15e7273873b86dc36' - '3bf0acab49c4ea3c9283cdb86bf3dd7204bd52a6fba6c8ae51101bdba2adae0e' - 'e438e78265f3e566990300946afb4ea5d09bcd8c426738ab8f486ae9ddb86c0f' - '6de40409af5a04605c3287cb3c661132eb55a4f636f7cd9bbfd456f4adf41971' - 'a2a8fd45daa4f493ad4487da9f01477233feecfef360ed366bfb0a58f804890a' - '9cd53c84fdc407c83f2ca6e9485916296f3712b2742dcc0acf22fda5195ead50') + 'e438e78265f3e566990300946afb4ea5d09bcd8c426738ab8f486ae9ddb86c0f') +sha256sums_aarch64=('3bf0acab49c4ea3c9283cdb86bf3dd7204bd52a6fba6c8ae51101bdba2adae0e' + '6de40409af5a04605c3287cb3c661132eb55a4f636f7cd9bbfd456f4adf41971' + 'a2a8fd45daa4f493ad4487da9f01477233feecfef360ed366bfb0a58f804890a' + '9cd53c84fdc407c83f2ca6e9485916296f3712b2742dcc0acf22fda5195ead50') # x86_64 addons in Slack's app that can never load on AArch64. The three that # Slack requires on Linux are replaced by the JavaScript files above; the rest @@ -82,9 +85,10 @@ _x86_addons=( prepare() { rm -rf slack electron app - mkdir slack electron + mkdir slack bsdtar -O -xf "slack-desktop-${pkgver}-amd64.deb" 'data.tar.*' | bsdtar -C slack -xf - - bsdtar -C electron -xf "electron-v${_electronver}-linux-arm64.zip" + + [[ $CARCH == aarch64 ]] || return 0 local slack_electron slack_electron=$(/dev/null | sed -n 's/^[[:space:]]*Machine:[[:space:]]*//p') - case "$machine" in - '' | AArch64) ;; - *) error "Unexpected ${machine} binary: ${file#"$pkgdir"}"; return 1 ;; - esac + if [[ -n $machine && $machine != "$expected_machine" ]]; then + error "Unexpected ${machine} binary: ${file#"$pkgdir"}" + return 1 + fi done < <(find "$lib" -type f -print0) find "$lib" -type d -exec chmod 755 {} + @@ -155,6 +179,11 @@ package() { install -Dm644 slack/usr/lib/slack/LICENSE "$licenses/LICENSE" install -Dm644 slack/usr/share/doc/slack-desktop/OPEN_SOURCE_LICENSE_ATTRIBUTIONS \ "$licenses/OPEN_SOURCE_LICENSE_ATTRIBUTIONS" - install -Dm644 electron/LICENSE "$licenses/LICENSE.electron.txt" - install -Dm644 electron/LICENSES.chromium.html "$licenses/LICENSES.chromium.html" + if [[ $CARCH == aarch64 ]]; then + install -Dm644 electron/LICENSE "$licenses/LICENSE.electron.txt" + install -Dm644 electron/LICENSES.chromium.html "$licenses/LICENSES.chromium.html" + else + install -Dm644 slack/usr/lib/slack/resources/LICENSES.chromium.html \ + "$licenses/LICENSES.chromium.html" + fi } diff --git a/pkgbuilds/slack-desktop/README.md b/pkgbuilds/slack-desktop/README.md index b186dbe..7dec6b1 100644 --- a/pkgbuilds/slack-desktop/README.md +++ b/pkgbuilds/slack-desktop/README.md @@ -1,6 +1,6 @@ -# Slack on ARM +# Slack Desktop -Slack publishes Linux builds for x86_64 only, and the AUR `slack-desktop` recipe repackages that `.deb`. This package runs the same application code on the AArch64 build of the Electron release Slack ships with, so `yay -S slack-desktop` on an ARM Omarchy install resolves to a working package. +Slack publishes Linux builds for x86_64 only. On x86_64 this package installs that `.deb` unchanged, replacing the AUR `slack-desktop` recipe with one Omarchy controls. On AArch64 it runs the same application code on the AArch64 build of the Electron release Slack ships with, so `slack-desktop` resolves to a working package on ARM Omarchy installs too. Everything below applies to the AArch64 build only. ## Electron version