diff options
author | Daniel Peukert | 2023-08-07 02:28:06 +0200 |
---|---|---|
committer | Daniel Peukert | 2023-08-07 02:28:06 +0200 |
commit | 7b979e05528cccec5e9c3f38e31e23670d1012a1 (patch) | |
tree | feb65558878ee3e4b900d0c09e2b2b0df4e790b3 | |
parent | 106e6c1cb0e6b9a3823a833b9c10b95d8b7c9639 (diff) | |
download | aur-7b979e05528cccec5e9c3f38e31e23670d1012a1.tar.gz |
Add expresslrs-configurator
-rw-r--r-- | .SRCINFO | 24 | ||||
-rw-r--r-- | .editorconfig | 8 | ||||
-rw-r--r-- | .gitignore | 18 | ||||
-rw-r--r-- | PKGBUILD | 118 | ||||
-rw-r--r-- | electron-builder-config.diff | 103 | ||||
-rw-r--r-- | electron-launcher.sh | 19 | ||||
-rw-r--r-- | fix-i18n-location.diff | 13 |
7 files changed, 253 insertions, 50 deletions
@@ -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 + +*/ @@ -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 }); + |