summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Peukert2023-08-07 02:28:06 +0200
committerDaniel Peukert2023-08-07 02:28:06 +0200
commit7b979e05528cccec5e9c3f38e31e23670d1012a1 (patch)
treefeb65558878ee3e4b900d0c09e2b2b0df4e790b3
parent106e6c1cb0e6b9a3823a833b9c10b95d8b7c9639 (diff)
downloadaur-7b979e05528cccec5e9c3f38e31e23670d1012a1.tar.gz
Add expresslrs-configurator
-rw-r--r--.SRCINFO24
-rw-r--r--.editorconfig8
-rw-r--r--.gitignore18
-rw-r--r--PKGBUILD118
-rw-r--r--electron-builder-config.diff103
-rw-r--r--electron-launcher.sh19
-rw-r--r--fix-i18n-location.diff13
7 files changed, 253 insertions, 50 deletions
diff --git a/.SRCINFO b/.SRCINFO
index f743d6f28148..f5ddf83729f6 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,12 +1,26 @@
pkgbase = expresslrs-configurator
pkgdesc = Cross platform configuration & build tool for the ExpressLRS radio link
- pkgver = 1.5.5
+ pkgver = 1.6.0
pkgrel = 1
url = https://github.com/ExpressLRS/ExpressLRS-Configurator
arch = x86_64
- license = GPL
- depends = electron
- source = https://github.com/ExpressLRS/ExpressLRS-Configurator/releases/download/v1.5.5/expresslrs-configurator-1.5.5.pacman
- md5sums = a9f2b3291ce9c0ab6345140c22955297
+ arch = armv7h
+ arch = aarch64
+ license = GPL3
+ makedepends = nodejs>=16.0.0
+ makedepends = npm>=6.0.0
+ makedepends = libxcrypt-compat
+ makedepends = yarn>=1.21.3
+ depends = electron20
+ depends = platformio-udev-rules
+ depends = python>=3.0.0
+ source = expresslrs-configurator-1.6.0.tar.gz::https://github.com/ExpressLRS/ExpressLRS-Configurator/archive/v1.6.0.tar.gz
+ source = electron-launcher.sh
+ source = fix-i18n-location.diff
+ source = electron-builder-config.diff
+ sha512sums = e28cceaa833aea8dbd8fe9bcc3a79b65a65ed5b3df73fe939ef573d8ed9b2fe2cc161efed79e0655f631b8b6d0ae9c09d1fee5708eba407ecc7a8a9e6f334309
+ sha512sums = c00d5973f4d9bb949edc498bd0a4577a394f6003b3337e12783a1febbb95579cfbda9fe53dc13a9ce5d029871b0c2bf95f30b0b95ae3116c684fa31f8779bfd1
+ sha512sums = b234a14ed809004165dbecec399521eea9ede8186a46f9565dfae2b37e429c2e6f23ce208443896f02eb4ce81ba09cbfd4ce943298300a336bda4cd134d2aded
+ sha512sums = 30576c2cc5e7c78e25090e6a00fa9a2d3fb91fc19b476f97104f6f7be3dc1851520e2596c4fb04d7eb284dc3866b373c83bf5715a8e0074453ed3ae270998513
pkgname = expresslrs-configurator
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 000000000000..a467ee9a97a6
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,8 @@
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+indent_style = tab
+tab_width = 4
diff --git a/.gitignore b/.gitignore
index e0f0c8cfe68d..82b3c183d5d4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,14 @@
-*.pkg.tar
-*.pacman
-*.zst
+# from https://github.com/github/gitignore/blob/master/ArchLinuxPackages.gitignore
+*.tar
+*.tar.*
+*.rpm
+*.jar
+*.exe
+*.msi
+*.zip
+*.tgz
*.log
-src/
-pkg/
+*.log.*
+*.sig
+
+*/
diff --git a/PKGBUILD b/PKGBUILD
index 929ab30117e9..736564ed15c5 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,45 +1,83 @@
-# Maintainer: Erik Moldtmann <erik@moldtmann.de>
-pkgname=expresslrs-configurator
-pkgver=1.5.5
-pkgrel=1
-epoch=
-pkgdesc="Cross platform configuration & build tool for the ExpressLRS radio link"
-arch=('x86_64')
-url="https://github.com/ExpressLRS/ExpressLRS-Configurator"
-license=('GPL')
-groups=()
-depends=('electron')
-makedepends=()
-checkdepends=()
-optdepends=()
-provides=()
-conflicts=()
-replaces=()
-backup=()
-options=()
-install=
-changelog=
+# Maintainer: Daniel Peukert <daniel@peukert.cc>
+# Contributor: Erik Moldtmann <erik@moldtmann.de>
+_projectname='ExpressLRS-Configurator'
+pkgname="${_projectname,,}"
+pkgver='1.6.0'
+pkgrel='1'
+pkgdesc='Cross platform configuration & build tool for the ExpressLRS radio link'
+# If you're running on armv7h or aarch64, use the electron20-bin package from the AUR for the electron20 dependency
+# If you're running on armv7h, you have to add it to the arch and source arrays of the electron20-bin AUR dependency
+arch=('x86_64' 'armv7h' 'aarch64')
+url="https://github.com/ExpressLRS/$_projectname"
+license=('GPL3')
+_electronpkg='electron20'
+depends=("$_electronpkg" 'platformio-udev-rules' 'python>=3.0.0')
+makedepends=('nodejs>=16.0.0' 'npm>=6.0.0' 'libxcrypt-compat' 'yarn>=1.21.3')
source=(
- "https://github.com/ExpressLRS/ExpressLRS-Configurator/releases/download/v$pkgver/expresslrs-configurator-$pkgver.pacman"
+ "$pkgname-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz"
+ 'electron-launcher.sh'
+ 'fix-i18n-location.diff'
+ 'electron-builder-config.diff'
)
-md5sums=('a9f2b3291ce9c0ab6345140c22955297')
-noextract=()
+sha512sums=('e28cceaa833aea8dbd8fe9bcc3a79b65a65ed5b3df73fe939ef573d8ed9b2fe2cc161efed79e0655f631b8b6d0ae9c09d1fee5708eba407ecc7a8a9e6f334309'
+ 'c00d5973f4d9bb949edc498bd0a4577a394f6003b3337e12783a1febbb95579cfbda9fe53dc13a9ce5d029871b0c2bf95f30b0b95ae3116c684fa31f8779bfd1'
+ 'b234a14ed809004165dbecec399521eea9ede8186a46f9565dfae2b37e429c2e6f23ce208443896f02eb4ce81ba09cbfd4ce943298300a336bda4cd134d2aded'
+ '30576c2cc5e7c78e25090e6a00fa9a2d3fb91fc19b476f97104f6f7be3dc1851520e2596c4fb04d7eb284dc3866b373c83bf5715a8e0074453ed3ae270998513')
+
+_sourcedirectory="$_projectname-$pkgver"
+
+prepare() {
+ cd "$srcdir/$_sourcedirectory/"
+
+ # Replace package name and electron version in launcher script
+ sed -i -e "s/%%PKGNAME%%/$pkgname/g" -e "s/%%ELECTRON%%/$_electronpkg/g" "$srcdir/electron-launcher.sh"
+
+ # Disable husky, as it only works with a cloned repo
+ sed -i '/husky install/d' 'package.json'
+
+ # Fix i18n directory location
+ patch --forward -p1 < "$srcdir/fix-i18n-location.diff"
+
+ # Set system Electron version for ABI compatibility
+ sed -E -i 's|("electron": ").*"|\1'"$(cat "/usr/lib/$_electronpkg/version")"'"|' 'package.json'
+
+ # Update electron-builder config
+ patch --forward -p1 < "$srcdir/electron-builder-config.diff"
+ sed -i "s|%%ELECTRON_DIST%%|/usr/lib/$_electronpkg|g" 'package.json'
+ sed -i "s|%%ELECTRON_VERSION%%|$(cat "/usr/lib/$_electronpkg/version")|g" 'package.json'
+
+ # Install dependencies
+ NODE_OPTIONS='--openssl-legacy-provider' yarn install
+}
+
+build() {
+ cd "$srcdir/$_sourcedirectory/"
+ NODE_OPTIONS='--openssl-legacy-provider' yarn build
+ yarn electron-builder
+}
package() {
- # Install the application files in /opt
- install -d "${pkgdir}/opt"
- cp -R "${srcdir}/opt/ExpressLRS Configurator" "${pkgdir}/opt/"
- # Install the .desktop file
- install -D -m644 "${srcdir}/usr/share/applications/${pkgname}.desktop" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
- # Install the icons
- for icon_size in 16 24 32 48 64 96 128 256 512; do
- icons_dir="/usr/share/icons/hicolor/${icon_size}x${icon_size}/apps"
- install -d "${pkgdir}/${icons_dir}"
- install -m644 "${srcdir}${icons_dir}/${pkgname}.png" \
- "${pkgdir}${icons_dir}/${pkgname}.png"
- done
-
- # Make symlink in /usr/bin
- install -d "${pkgdir}/usr/bin"
- ln -s "/opt/ExpressLRS Configurator/${pkgname}" "${pkgdir}/usr/bin/${pkgname}"
+ # Electron resources
+ cd "$srcdir/$_sourcedirectory/release/"
+ install -Dm644 'linux-unpacked/resources/app.asar' "$pkgdir/usr/lib/$pkgname/app.asar"
+ cp -r --no-preserve=ownership --preserve=mode 'linux-unpacked/dependencies/' "$pkgdir/usr/lib/$pkgname/dependencies/"
+ cp -r --no-preserve=ownership --preserve=mode 'linux-unpacked/resources/app.asar.unpacked/' "$pkgdir/usr/lib/$pkgname/app.asar.unpacked/"
+ cp -r --no-preserve=ownership --preserve=mode 'linux-unpacked/resources/assets/' "$pkgdir/usr/lib/$pkgname/assets/"
+ cp -r --no-preserve=ownership --preserve=mode 'linux-unpacked/resources/devices/' "$pkgdir/usr/lib/$pkgname/devices/"
+ cp -r --no-preserve=ownership --preserve=mode 'linux-unpacked/resources/i18n/' "$pkgdir/usr/lib/$pkgname/i18n/"
+
+ # Binary
+ install -Dm755 "$srcdir/electron-launcher.sh" "$pkgdir/usr/bin/$pkgname"
+
+ # Extract pacman archive and copy files
+ mkdir -p "$srcdir/$pkgname-$pkgver-pacman/"
+ tar -xf "$pkgname-$pkgver.pacman" --directory "$srcdir/$pkgname-$pkgver-pacman/"
+ cd "$srcdir/$pkgname-$pkgver-pacman/"
+
+ install -dm755 "$pkgdir/usr/share/"
+ cp -r --no-preserve=ownership --preserve=mode 'usr/share/applications' "$pkgdir/usr/share/applications/"
+ cp -r --no-preserve=ownership --preserve=mode 'usr/share/icons' "$pkgdir/usr/share/icons/"
+
+ # Get rid of binary path in desktop file
+ sed "s|^Exec=\"/opt/ExpressLRS Configurator/$pkgname\"|Exec=$pkgname|" -i "$pkgdir/usr/share/applications/$pkgname.desktop"
}
diff --git a/electron-builder-config.diff b/electron-builder-config.diff
new file mode 100644
index 000000000000..c05353eb44ea
--- /dev/null
+++ b/electron-builder-config.diff
@@ -0,0 +1,103 @@
+diff --git a/package.json b/package.json
+index 488a3136..f835ffe4 100644
+--- a/package.json
++++ b/package.json
+@@ -52,91 +52,27 @@
+ "devices/"
+ ],
+ "afterSign": ".erb/scripts/Notarize.js",
+- "mac": {
+- "target": [
+- "dmg"
+- ],
+- "type": "distribution",
+- "hardenedRuntime": true,
+- "entitlements": "assets/entitlements.mac.plist",
+- "entitlementsInherit": "assets/entitlements.mac.plist",
+- "gatekeeperAssess": false,
+- "category": "public.app-category.developer-tools",
+- "extraFiles": [
+- "dependencies/darwin_amd64",
+- "dependencies/get-platformio.py"
+- ]
+- },
+- "dmg": {
+- "contents": [
+- {
+- "x": 130,
+- "y": 220
+- },
+- {
+- "x": 410,
+- "y": 220,
+- "type": "link",
+- "path": "/Applications"
+- }
+- ]
+- },
+- "win": {
+- "target": [
+- "nsis"
+- ],
+- "extraFiles": [
+- "dependencies/windows_amd64",
+- "dependencies/get-platformio.py"
+- ]
+- },
+- "nsis": {
+- "oneClick": false,
+- "allowToChangeInstallationDirectory": true
+- },
++ "electronDist": "%%ELECTRON_DIST%%",
++ "electronVersion": "%%ELECTRON_VERSION%%",
+ "linux": {
+ "target": [
+- "zip",
+- "deb",
+- "pacman",
+- "rpm"
++ "dir",
++ "pacman"
+ ],
+ "category": "Development",
+ "extraFiles": [
+ "dependencies/get-platformio.py"
+ ]
+ },
+- "rpm": {
+- "depends": [
+- "git",
+- "python3"
+- ]
+- },
+ "pacman": {
++ "fpm": [
++ "--pacman-compression=none"
++ ],
+ "depends": [
+ "git",
+ "python3"
+ ]
+ },
+- "snap": {
+- "stagePackages": [
+- "default",
+- "git",
+- "python3"
+- ]
+- },
+- "deb": {
+- "depends": [
+- "git",
+- "python3",
+- "python3-distutils",
+- "gconf2",
+- "gconf-service",
+- "libnotify4",
+- "libxtst6",
+- "libnss3"
+- ]
+- },
+ "directories": {
+ "app": "src",
+ "buildResources": "assets",
diff --git a/electron-launcher.sh b/electron-launcher.sh
new file mode 100644
index 000000000000..e4dfc4e88458
--- /dev/null
+++ b/electron-launcher.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/bash
+
+set -euo pipefail
+
+flags_file="${XDG_CONFIG_HOME:-$HOME/.config}/%%PKGNAME%%-flags.conf"
+
+declare -a flags
+
+if [[ -f "${flags_file}" ]]; then
+ mapfile -t < "${flags_file}"
+fi
+
+for line in "${MAPFILE[@]}"; do
+ if [[ ! "${line}" =~ ^[[:space:]]*#.* ]] && [[ -n "${line}" ]]; then
+ flags+=("${line}")
+ fi
+done
+
+exec %%ELECTRON%% "${flags[@]}" /usr/lib/%%PKGNAME%%/app.asar "$@"
diff --git a/fix-i18n-location.diff b/fix-i18n-location.diff
new file mode 100644
index 000000000000..4a30a27ce53a
--- /dev/null
+++ b/fix-i18n-location.diff
@@ -0,0 +1,13 @@
+diff --git a/src/main.dev.ts b/src/main.dev.ts
+index a39fc2b5..0fedde7c 100644
+--- a/src/main.dev.ts
++++ b/src/main.dev.ts
+@@ -310,7 +310,7 @@ const createWindow = async () => {
+
+ const localesPath = app.isPackaged
+ ? path.join(process.resourcesPath, 'i18n', 'locales')
+- : path.join(__dirname, 'i18n', 'locales');
++ : path.join(__dirname, '../i18n', 'locales');
+
+ logger.log('localesPath', { localesPath });
+