Merge pull request #449 from scottjones/contrib/cursor-aarch64

Build cursor-bin for aarch64 using the vendor Debian package
This commit is contained in:
Marcelo Alcantara authored and GitHub committed 2026-09-23 17:34:07 +10:00
commit 3aece780f2
1 file changed
+30 -10
+30 -10
View File
@@ -2,32 +2,52 @@
pkgname=cursor-bin
pkgver=3.21.16
pkgrel=2
pkgrel=3
pkgdesc='AI-first coding environment'
arch=('x86_64')
arch=('x86_64' 'aarch64')
url="https://www.cursor.com"
license=('LicenseRef-Cursor_EULA')
# upstream uses Electron newer than internal VSCode
_electron=electron42
depends=(xdg-utils ripgrep $_electron nodejs
'gcc-libs' 'hicolor-icon-theme' 'libxkbfile')
depends=(xdg-utils gcc-libs hicolor-icon-theme libxkbfile)
depends_x86_64=(ripgrep $_electron nodejs)
# ARM retains bundled Electron because electron42 is unavailable in ALARM.
depends_aarch64=(
alsa-lib at-spi2-core ca-certificates cairo curl dbus expat glib2 glibc gtk3
libcups libsecret libx11 libxcb libxcomposite libxdamage libxext libxfixes
libxkbcommon libxrandr mesa nspr nss pango systemd-libs which
)
options=(!strip !debug) # Don't break ext of VSCode
_commit=8ae78e8eee1e63479c7e0504b664bc0a80c6800f
source=("https://downloads.cursor.com/production/${_commit}/linux/x64/deb/amd64/deb/cursor_${pkgver}_amd64.deb"
source_x86_64=("https://downloads.cursor.com/production/${_commit}/linux/x64/deb/amd64/deb/cursor_${pkgver}_amd64.deb"
"https://gitlab.archlinux.org/archlinux/packaging/packages/code/-/raw/main/code."{sh,mjs}
rg.sh)
sha512sums=('032c86a5d51f154ce36b1a0bf34aa06b2d117666b4372a787ea3117fc0b2b1686e952c721388f2eaf7787f2e0581378c98608048126f7470df2e85e9dbd75ca4' '937299c6cb6be2f8d25f7dbc95cf77423875c5f8353b8bd6cd7cc8e5603cbf8405b14dbf8bd615db2e3b36ed680fc8e1909410815f7f8587b7267a699e00ab37' '793f9ff6306e3992ac89802d98110cba288ea1181a901467333293b7d76182ef9792c2a39ff49d9347a18a174b1f42bc58862091dff583f4146c2704eea28033' 'e79fe7659f59d1ae02fc68816399bfd31587315df6cdb6ccf1d0ca76f7cdc692c2a42b30591c0091147bd97ef14b1c7745dc26bd7cb3ea6bba45698e5044fa2a')
noextract=(cursor_${pkgver}_amd64.deb) # avoid double tarball
sha512sums_x86_64=('032c86a5d51f154ce36b1a0bf34aa06b2d117666b4372a787ea3117fc0b2b1686e952c721388f2eaf7787f2e0581378c98608048126f7470df2e85e9dbd75ca4' '937299c6cb6be2f8d25f7dbc95cf77423875c5f8353b8bd6cd7cc8e5603cbf8405b14dbf8bd615db2e3b36ed680fc8e1909410815f7f8587b7267a699e00ab37' '793f9ff6306e3992ac89802d98110cba288ea1181a901467333293b7d76182ef9792c2a39ff49d9347a18a174b1f42bc58862091dff583f4146c2704eea28033' 'e79fe7659f59d1ae02fc68816399bfd31587315df6cdb6ccf1d0ca76f7cdc692c2a42b30591c0091147bd97ef14b1c7745dc26bd7cb3ea6bba45698e5044fa2a')
source_aarch64=("https://downloads.cursor.com/production/${_commit}/linux/arm64/deb/arm64/deb/cursor_${pkgver}_arm64.deb")
sha512sums_aarch64=('88a163c130e7ee8d9f29b93ccf1258e9f5eb0138d4de5d2333f5bc2992c0a4d0c3a72e8f5912b2e9ac9819a8d758de8e7249cd33bdf3ac631271001ca92700f7')
noextract=(cursor_${pkgver}_amd64.deb cursor_${pkgver}_arm64.deb) # avoid double tarball
_app=usr/share/cursor/resources/app
package() {
# Exclude electron
bsdtar -xOf ${noextract[0]} data.tar.xz | tar -xJf - -C "$pkgdir" \
--exclude 'usr/share/cursor/[^r]*' --exclude 'usr/share/cursor/*.pak'
local deb="cursor_${pkgver}_amd64.deb"
local -a excludes=(--exclude 'usr/share/cursor/[^r]*' --exclude 'usr/share/cursor/*.pak')
if [[ "$CARCH" == aarch64 ]]; then
deb="cursor_${pkgver}_arm64.deb"
# Keep bundled Electron; omit Debian's AppArmor and sysctl settings.
excludes=(--exclude './etc')
fi
bsdtar -xOf "${srcdir}/${deb}" data.tar.xz | tar -xJf - -C "$pkgdir" "${excludes[@]}"
cd "$pkgdir"
# Disable Cursor's bundled updater; Omarchy manages updates via pacman (#238).
sed -i '/^[[:space:]]*"\(backupUpdateUrl\|updateUrl\)":/d' \
"${_app}/product.json"
mv usr/share/zsh/{vendor-completions,site-functions}
if [[ "$CARCH" == aarch64 ]]; then
install -d usr/bin
ln -s /usr/share/cursor/bin/cursor usr/bin/cursor
# Use Electron's unprivileged namespace sandbox.
chmod 0755 usr/share/cursor/chrome-sandbox
return
fi
ln -sf /usr/bin/node ${_app}/resources/helpers/node
install -Dm755 "${srcdir}/rg.sh" ${_app}/node_modules/@vscode/ripgrep/bin/rg
ln -sf /usr/bin/xdg-open ${_app}/node_modules/open/xdg-open