summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO33
-rw-r--r--.gitignore29
-rw-r--r--PKGBUILD126
-rw-r--r--fix-argv.diff75
-rw-r--r--hadron-build-ffmpeg.diff20
-rw-r--r--launch.sh2
-rw-r--r--mongodb-compass.conf2
7 files changed, 239 insertions, 48 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 16d84daf2a29..1417234953bd 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,17 +1,30 @@
pkgbase = mongodb-compass-isolated-beta
- pkgdesc = The official GUI for MongoDB - Isolated Edition (beta version)
- pkgver = 1.19.0beta.2
+ pkgdesc = The official GUI for MongoDB - Isolated Edition - beta version
+ pkgver = 1.42.6.beta.5
pkgrel = 1
url = https://www.mongodb.com/products/compass
arch = x86_64
- license = custom
- depends = electron3
+ arch = armv7h
+ arch = aarch64
+ license = SSPL-1.0
+ makedepends = git
+ makedepends = npm>=8.19.4
+ makedepends = python
+ makedepends = unzip
+ depends = electron29
+ depends = krb5
depends = libsecret
- optdepends = gnome-keyring
- source = https://downloads.mongodb.com/compass/beta/mongodb-compass-isolated-beta-1.19.0-beta.2.x86_64.rpm
- source = launch.sh
- sha256sums = e7c15baa232320e61a997fd5b90c2a54f682b2a93018ca28035ac3c4ee8ca087
- sha256sums = c2c2797f4442fde3545d13f296a7307f46d0175cfef59f6848f1660a8a554851
+ depends = lsb-release
+ depends = nodejs>=16.15.1
+ optdepends = org.freedesktop.secrets
+ backup = etc/mongodb-compass.conf
+ source = mongodb-compass-isolated-beta-1.42.6.beta.5.tar.gz::https://github.com/mongodb-js/compass/archive/v1.42.6-beta.5.tar.gz
+ source = hadron-build-ffmpeg.diff
+ source = fix-argv.diff
+ source = mongodb-compass.conf
+ sha512sums = d188402fd7acd66b03dd488b6ca32873528473132a30be2ae8aabfef81e2c772fcf162f9452133576a67500831292d2361be51c522ca3aaa8a054d721c76aaa4
+ sha512sums = 8672c4c3d5ee5638166c4dfcf998c43dabab8e109aced465028c3da8e06e9b67d43ad6d52bb2ae0d44e732a015c9bec5008e5bbd01e38be8c231bfdce9619061
+ sha512sums = d9122abe1d31f4781138eefaf103998740b2bf16fb4cf4f94f42f048fd562f53d5ab2f4e806d14f5d6b3563ac7e37d3db64935e90a29c5fb0b2c65db5e6fafaf
+ sha512sums = f09a6026e8b963f4821454fa8c2da8c750c765f26010fbf54dfbecfd7451dda5466464bb15fada1252545366c94bf448dc0529c8bd8114f6f3834ae00176d3f1
pkgname = mongodb-compass-isolated-beta
-
diff --git a/.gitignore b/.gitignore
index c1a5245d7cfa..076d904dd4ac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,14 @@
-# from https://github.com/github/gitignore/blob/master/ArchLinuxPackages.gitignore
-*.tar
-*.tar.*
-*.rpm
-*.jar
-*.exe
-*.msi
-*.zip
-*.tgz
-*.log
-*.log.*
-*.sig
-
-pkg/
-src/
+# Only exclude files from the root of the package repo, as some AUR helpers download sources into the directory of the repo,
+# which causes the gitignore file to apply to them too, which breaks some builds
+# Based on https://github.com/github/gitignore/blob/main/ArchLinuxPackages.gitignore
+/*.tar
+/*.tar.*
+/*.rpm
+/*.jar
+/*.exe
+/*.msi
+/*.zip
+/*.tgz
+/*.log
+/*.log.*
+/*.sig
diff --git a/PKGBUILD b/PKGBUILD
index 66307808b33b..41f8073c405e 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,28 +1,112 @@
-# Maintainer: Daniel Peukert <dan.peukert@gmail.com>
-pkgname='mongodb-compass-isolated-beta'
-pkgver='1.19.0beta.2'
+# Maintainer: Daniel Peukert <daniel@peukert.cc>
+_target='compass-isolated-beta'
+_edition=' Isolated Edition Beta'
+pkgname="mongodb-$_target"
+_pkgver='1.42.6-beta.5'
+pkgver="$(printf '%s' "$_pkgver" | tr '-' '.')"
pkgrel='1'
-pkgdesc='The official GUI for MongoDB - Isolated Edition (beta version)'
-arch=('x86_64')
+pkgdesc='The official GUI for MongoDB - Isolated Edition - beta version'
+# If you're running on armv7h or aarch64, use the electron28-bin package from the AUR for the electron28 dependency
+# If you're running on armv7h, you have to add it to the arch and source arrays of the electron28-bin AUR dependency
+arch=('x86_64' 'armv7h' 'aarch64')
url='https://www.mongodb.com/products/compass'
-license=('custom')
-depends=('electron3' 'libsecret')
-optdepends=('gnome-keyring')
+license=('SSPL-1.0')
+_electronpkg='electron29'
+depends=("$_electronpkg" 'krb5' 'libsecret' 'lsb-release' 'nodejs>=16.15.1')
+makedepends=('git' 'npm>=8.19.4' 'python' 'unzip')
+optdepends=('org.freedesktop.secrets')
+backup=('etc/mongodb-compass.conf')
source=(
- 'https://downloads.mongodb.com/compass/beta/mongodb-compass-isolated-beta-1.19.0-beta.2.x86_64.rpm'
- 'launch.sh'
-)
-sha256sums=(
- 'e7c15baa232320e61a997fd5b90c2a54f682b2a93018ca28035ac3c4ee8ca087'
- 'c2c2797f4442fde3545d13f296a7307f46d0175cfef59f6848f1660a8a554851'
+ "$pkgname-$pkgver.tar.gz::https://github.com/mongodb-js/compass/archive/v$_pkgver.tar.gz"
+ 'hadron-build-ffmpeg.diff'
+ 'fix-argv.diff'
+ 'mongodb-compass.conf'
)
+sha512sums=('d188402fd7acd66b03dd488b6ca32873528473132a30be2ae8aabfef81e2c772fcf162f9452133576a67500831292d2361be51c522ca3aaa8a054d721c76aaa4'
+ '8672c4c3d5ee5638166c4dfcf998c43dabab8e109aced465028c3da8e06e9b67d43ad6d52bb2ae0d44e732a015c9bec5008e5bbd01e38be8c231bfdce9619061'
+ 'd9122abe1d31f4781138eefaf103998740b2bf16fb4cf4f94f42f048fd562f53d5ab2f4e806d14f5d6b3563ac7e37d3db64935e90a29c5fb0b2c65db5e6fafaf'
+ 'f09a6026e8b963f4821454fa8c2da8c750c765f26010fbf54dfbecfd7451dda5466464bb15fada1252545366c94bf448dc0529c8bd8114f6f3834ae00176d3f1')
+
+_sourcedirectory="compass-$_pkgver"
+
+prepare() {
+ cd "$srcdir/$_sourcedirectory/"
+
+ # Disable husky command
+ sed -i '/husky install/d' 'package.json'
+
+ # Set system Electron version for ABI compatibility
+ sed -E -i 's|("electron": ").*"|\1'"$(cat "/usr/lib/$_electronpkg/version")"'"|' {'configs','packages'}'/'*'/package.json'
+
+ # Force the newest version of electron-to-chromium
+ sed -E -i 's|(.*)("electron": ")|\1"electron-to-chromium": "'"$(npm view 'electron-to-chromium@latest' version)"'",\n\1\2|' 'packages/compass/package.json'
+
+ # Don't use the bundled ffmpeg
+ patch --forward -p1 < "$srcdir/hadron-build-ffmpeg.diff"
+
+ # Apply argv fixes
+ patch --forward -p1 < "$srcdir/fix-argv.diff"
+
+ # Run the first part of npm run bootstrap
+ npm install
+
+ # Run the second part of npm run bootstrap
+ NODE_OPTIONS='--openssl-legacy-provider' npx lerna run bootstrap --stream
+}
+
+build() {
+ cd "$srcdir/$_sourcedirectory/"
+
+ # electron-packager does not support building against a local electron binary,
+ # the best we can do for now is to just set the electron version in package.json
+ # and let electron-packager use it for building
+ # https://github.com/electron/electron-packager/issues/187
+
+ HADRON_DISTRIBUTION="${_target%-beta}" HADRON_SKIP_INSTALLER='true' NODE_OPTIONS='--openssl-legacy-provider' npm run package-compass
+}
package() {
- install -Dm644 "$srcdir/usr/share/mongodb-compass-isolated-beta/resources/app.asar" "$pkgdir/usr/lib/mongodb-compass-isolated-beta/app.asar"
- cp -r "$srcdir/usr/share/mongodb-compass-isolated-beta/resources/app.asar.unpacked/" "$pkgdir/usr/lib/mongodb-compass-isolated-beta/app.asar.unpacked/"
- install -Dm755 "$srcdir/launch.sh" "$pkgdir/usr/bin/mongodb-compass-isolated-beta"
- install -Dm644 "$srcdir/usr/share/mongodb-compass-isolated-beta/LICENSE" "$pkgdir/usr/share/licenses/mongodb-compass-isolated-beta/LICENSE"
- install -Dm644 "$srcdir/usr/share/mongodb-compass-isolated-beta/LICENSES.chromium.html" "$pkgdir/usr/share/licenses/mongodb-compass-isolated-beta/LICENSES.chromium.html"
- install -Dm644 "$srcdir/usr/share/applications/mongodb-compass-isolated-beta.desktop" "$pkgdir/usr/share/applications/mongodb-compass-isolated-beta.desktop"
- install -Dm644 "$srcdir/usr/share/pixmaps/mongodb-compass-isolated-beta.png" "$pkgdir/usr/share/pixmaps/mongodb-compass-isolated-beta.png"
+ local _distFolder="$srcdir/$_sourcedirectory/packages/compass/dist/MongoDB Compass$_edition-linux"
+ case "$CARCH" in
+ armv7h)
+ _distFolder="$_distFolder-armv7l"
+ ;;
+ aarch64)
+ _distFolder="$_distFolder-arm64"
+ ;;
+ *)
+ _distFolder="$_distFolder-x64"
+ ;;
+ esac
+ cd "$_distFolder/"
+
+ install -Dm644 'resources/app.asar' "$pkgdir/usr/lib/$pkgname/app.asar"
+ cp -r --no-preserve=ownership --preserve=mode '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 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=MongoDB Compass$_edition
+Comment=The official GUI for MongoDB
+Exec=$pkgname %U
+Icon=$pkgname
+Type=Application
+StartupNotify=true
+Categories=Office;Database;Building;Debugger;IDE;GUIDesigner;Profiling;
+EOF
+
+ install -Dm644 "$srcdir/mongodb-compass.conf" "$pkgdir/etc/mongodb-compass.conf"
+
+ install -Dm644 "$srcdir/$_sourcedirectory/packages/compass/app-icons/linux/mongodb-compass.png" "$pkgdir/usr/share/pixmaps/$pkgname.png"
+
+ install -dm755 "$pkgdir/usr/share/licenses/$pkgname/"
+ install -Dm644 'LICENSE' "$pkgdir/usr/share/licenses/$pkgname/SSPL-1.0"
+ install -Dm644 'LICENSES.chromium.html' "$pkgdir/usr/share/licenses/$pkgname/LICENSES.chromium.html"
}
diff --git a/fix-argv.diff b/fix-argv.diff
new file mode 100644
index 000000000000..5a4a5f1e4b8f
--- /dev/null
+++ b/fix-argv.diff
@@ -0,0 +1,75 @@
+diff --git a/packages/compass-preferences-model/src/global-config.ts b/packages/compass-preferences-model/src/global-config.ts
+index 94362d8a6..611a9b05f 100644
+--- a/packages/compass-preferences-model/src/global-config.ts
++++ b/packages/compass-preferences-model/src/global-config.ts
+@@ -195,8 +195,6 @@ export interface ParsedGlobalPreferencesResult {
+ preferenceParseErrors: string[];
+ }
+
+-// See https://github.com/electron/electron/issues/4690
+-const argvStartIndex = process.versions.electron && !process.defaultApp ? 1 : 2;
+ export async function parseAndValidateGlobalPreferences(
+ sources: GlobalPreferenceSources = {}
+ ): Promise<ParsedGlobalPreferencesResult> {
+@@ -205,6 +203,16 @@ export async function parseAndValidateGlobalPreferences(
+ );
+ let argv = sources.argv;
+ if (!argv) {
++ let argvStartIndex = 0;
++
++ for (const arg of process.argv) {
++ argvStartIndex++;
++
++ if (arg.includes('app.asar') === true) {
++ break;
++ }
++ }
++
+ argv = process.argv.slice(argvStartIndex);
+ }
+ const cliPreferences = parseCliArgs(argv);
+@@ -294,11 +302,17 @@ export function getHelpText(): string {
+ text += ` ${path}\n`;
+ }
+ if (globalConfigPaths.length > 0) {
++ let binaryName = '';
++
++ for (const arg of process.argv) {
++ if (arg.includes('app.asar') === true) {
++ binaryName = arg.replace('/usr/lib/', '').replace('/app.asar', '');
++ break;
++ }
++ }
++
+ text += '\nIf no global configuration file exists, running Compass as\n';
+- text += ` ${escapeShell(process.execPath)}${
+- argvStartIndex >= 2 ? ' ' + escapeShell(process.argv[1]) : ''
+- } `;
+- text += `--show-example-config > ${escapeShell(globalConfigPaths[0])}\n`;
++ text += ` ${binaryName} --show-example-config > ${escapeShell(globalConfigPaths[0])}\n`;
+ text += 'can be used to install one.\n';
+ }
+ text += '\nSee the MongoDB Compass documentation for more details.\n';
+diff --git a/packages/compass/src/main/protocol-handling.ts b/packages/compass/src/main/protocol-handling.ts
+index 812261c22..3df06fc8f 100644
+--- a/packages/compass/src/main/protocol-handling.ts
++++ b/packages/compass/src/main/protocol-handling.ts
+@@ -13,9 +13,15 @@ async function appProtocolsConfig(): Promise<ProtocolsList> {
+ return (await import('../../package.json')).config.hadron.protocols;
+ }
+
+-const commandArgv = process.defaultApp
+- ? [process.execPath, path.resolve(process.argv[1]), '--']
+- : [process.execPath, '--'];
++let commandArgv = [];
++
++for (const arg of process.argv) {
++ if (arg.includes('app.asar') === true) {
++ commandArgv[0] = arg.replace('/usr/lib/', '').replace('/app.asar', '');
++ commandArgv[1] = '--';
++ break;
++ }
++}
+
+ export async function setupProtocolHandlers(
+ action: 'install' | 'uninstall',
diff --git a/hadron-build-ffmpeg.diff b/hadron-build-ffmpeg.diff
new file mode 100644
index 000000000000..b14efd6e5688
--- /dev/null
+++ b/hadron-build-ffmpeg.diff
@@ -0,0 +1,20 @@
+diff --git a/packages/hadron-build/lib/target.js b/packages/hadron-build/lib/target.js
+index c04862963..f15ddf60a 100644
+--- a/packages/hadron-build/lib/target.js
++++ b/packages/hadron-build/lib/target.js
+@@ -7,7 +7,6 @@ const semver = require('semver');
+ const path = require('path');
+ const normalizePkg = require('normalize-package-data');
+ const parseGitHubRepoURL = require('parse-github-repo-url');
+-const ffmpegAfterExtract = require('electron-packager-plugin-non-proprietary-codecs-ffmpeg').default;
+ const windowsInstallerVersion = require('./windows-installer-version');
+ const debug = require('debug')('hadron-build:target');
+ const which = require('which');
+@@ -197,7 +196,6 @@ class Target {
+ arch: this.arch,
+ electronVersion: this.electronVersion,
+ sign: null,
+- afterExtract: [ffmpegAfterExtract]
+ };
+
+ if (this.platform === 'win32') {
diff --git a/launch.sh b/launch.sh
deleted file mode 100644
index 51aa362f381e..000000000000
--- a/launch.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-exec electron3 '/usr/lib/mongodb-compass-isolated-beta/app.asar' "$@"
diff --git a/mongodb-compass.conf b/mongodb-compass.conf
new file mode 100644
index 000000000000..f0619b52f3a8
--- /dev/null
+++ b/mongodb-compass.conf
@@ -0,0 +1,2 @@
+# Disable automatic updates
+autoUpdates: false