diff --git a/srcpkgs/element-desktop/files/element-desktop b/srcpkgs/element-desktop/files/element-desktop index 3b35b133244b5f..be2cd22fec6700 100644 --- a/srcpkgs/element-desktop/files/element-desktop +++ b/srcpkgs/element-desktop/files/element-desktop @@ -1,2 +1,2 @@ #!/bin/sh -exec electron35 /usr/lib/element-desktop/resources/app.asar "$@" +exec electron35 /usr/lib/element-desktop/app.asar "$@" diff --git a/srcpkgs/element-desktop/files/io.element.desktop b/srcpkgs/element-desktop/files/io.element.desktop new file mode 100644 index 00000000000000..be615def46dade --- /dev/null +++ b/srcpkgs/element-desktop/files/io.element.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Element +Comment=Feature-rich client for Matrix +Exec=/usr/bin/element-desktop %u +Terminal=false +Type=Application +Icon=io.element.Element +StartupWMClass=Element +Categories=Network;InstantMessaging;Chat;IRCClient +MimeType=x-scheme-handler/element;x-scheme-handler/io.element.desktop; diff --git a/srcpkgs/element-desktop/patches/disable-deb-packaging.patch b/srcpkgs/element-desktop/patches/disable-deb-packaging.patch new file mode 100644 index 00000000000000..44bc511d9aded6 --- /dev/null +++ b/srcpkgs/element-desktop/patches/disable-deb-packaging.patch @@ -0,0 +1,11 @@ +--- a/element-web/apps/desktop/electron-builder.ts ++++ b/element-web/apps/desktop/electron-builder.ts +@@ -128,7 +128,7 @@ + electron_protocol: variant.protocols[0], + }, + linux: { +- target: ["tar.gz", "deb"], ++ target: ["dir"], + category: "Network;InstantMessaging;Chat", + icon: "icon.png", + executableName: variant.name, // element-desktop or element-desktop-nightly diff --git a/srcpkgs/element-desktop/patches/remove-pnpm-version-check.patch b/srcpkgs/element-desktop/patches/remove-pnpm-version-check.patch new file mode 100644 index 00000000000000..3642f35300093e --- /dev/null +++ b/srcpkgs/element-desktop/patches/remove-pnpm-version-check.patch @@ -0,0 +1,15 @@ +--- /element-web/package.json ++++ /element-web/package.json +@@ -49,12 +49,5 @@ + "engines": { + "node": ">=22.18" + }, +- "devEngines": { +- "packageManager": { +- "name": "pnpm", +- "version": "11.2.2+sha512.36e6621fad506178936455e70247b8808ef4ec25797a9f437a93281a020484e2607f6a469a22e982987c3dbb8866e3071514ab10a4a1749e06edcd1ec118436f", +- "onFail": "error" +- } +- }, + "private": true + } diff --git a/srcpkgs/element-desktop/patches/tasje-one-hak.patch b/srcpkgs/element-desktop/patches/tasje-one-hak.patch deleted file mode 100644 index a09fb7fdbe2011..00000000000000 --- a/srcpkgs/element-desktop/patches/tasje-one-hak.patch +++ /dev/null @@ -1,21 +0,0 @@ -Source: https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/testing/element-desktop/tasje-one-hak.patch -directories in .hak/hakModules are already symlinked inside node_modules, -and as such are already being copied by default. this makes tasje fail with: -``` -thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: -FileAlreadyWritten("/node_modules/keytar/package.json")', src/main.rs:200:18 -``` - ---- a/element-desktop/electron-builder.ts.orig -+++ b/element-desktop/electron-builder.ts -@@ -74,10 +74,6 @@ - }, - files: [ - "package.json", -- { -- from: ".hak/hakModules", -- to: "node_modules", -- }, - "lib/**", - ], - extraResources: [ diff --git a/srcpkgs/element-desktop/template b/srcpkgs/element-desktop/template index 945f7ff78cbff5..89da1f94b9c484 100644 --- a/srcpkgs/element-desktop/template +++ b/srcpkgs/element-desktop/template @@ -1,14 +1,15 @@ # Template file for 'element-desktop' pkgname=element-desktop -version=1.12.10 -revision=2 +version=1.12.21 +revision=1 _electronver=35 create_wrksrc=yes build_helper="rust" conf_files="/etc/element-desktop/config.json" -hostmakedepends="git yarn nodejs rust cargo python3 curl - sqlcipher-devel libnotify-devel pkg-config electron-tasje" -makedepends="libsecret-devel electron${_electronver}-devel" +hostmakedepends="git nodejs rust cargo python3 curl + pnpm sqlcipher-devel libnotify-devel pkg-config + electron-tasje yarn app-builder" +makedepends="libsecret-devel electron${_electronver}-devel openssl-devel" depends="c-ares http-parser libevent libxslt minizip nss snappy sqlcipher electron${_electronver}" short_desc="Glossy Matrix collaboration client, desktop version" @@ -16,116 +17,51 @@ maintainer="Orphaned " license="Apache-2.0" homepage="https://element.io" changelog="https://raw.githubusercontent.com/element-hq/element-desktop/develop/CHANGELOG.md" -distfiles="https://github.com/element-hq/element-desktop/archive/v${version}.tar.gz>element-desktop-v${version}.tar.gz - https://github.com/element-hq/element-web/archive/v${version}.tar.gz>element-web-v${version}.tar.gz" -checksum="2aa491d4601b0af20c36fff0133ea19a3585b16d9217d3ec9df9fe256d6167dd - 17f6253497879f70f9c23729a25d77f0259ec7a9a43a33eeaebc45686922912b" +distfiles="https://github.com/element-hq/element-web/archive/v${version}.tar.gz>element-web-v${version}.tar.gz" +checksum="bbf87817f7f60ee034e58acba1f937954137f0fbc4527885ae38851f3757512c" replaces="riot-desktop>=0" export USE_SYSTEM_APP_BUILDER=true post_extract() { - mv "element-desktop-${version}" element-desktop mv "element-web-${version}" element-web } -post_patch() { - # Disable auto-updating - vsed -e 's|"https://packages.element.io/desktop/update/"|null|' -i element-desktop/element.io/release/config.json -} - pre_build() { - # since element 1.8.x it's necessary to force the npm arch - # to x86, otherwise it will fail in electron js stuff on - # platforms officially unsupported by electron (ppc64le...) - local carch=x64 - case "$XBPS_TARGET_MACHINE" in - i686*) carch=ia32 ;; - esac - cd element-web - yarn install --no-fund --frozen-lockfile + pnpm install - cd ../element-desktop - yarn install --no-fund --frozen-lockfile + cd apps/desktop + pnpm install } do_build() { - cd element-web - NODE_ENV=production VERSION=${version} yarn build - - cd ../element-desktop - - yarn asar-webapp - - # add "optional" native dependencies - # hak stands for hack - yarn run hak - - yarn build:ts - - yarn build:res - - cat <<-EOF >tsconfig.electron-builder.json - { - "compilerOptions": { - "module": "node16", - "moduleResolution": "node16", - "esModuleInterop": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "strict": true, - "target": "es2019", - "sourceMap": false, - "noImplicitAny": false, - "noEmitOnError": true, - }, - "files": ["electron-builder.ts"] - } - EOF - yarn tsc -p tsconfig.electron-builder.json - ELECTRON_RUN_AS_NODE=1 IS_TASJE=1 node -e 'console.log(JSON.stringify(require("./electron-builder.js").default))' | awk '/^{/{x=1} x' >electron-builder.json + cd element-web/apps/web + VERSION=${version} pnpm run build - yarn install --frozen-lockfile --ignore-scripts --production - npm rebuild keytar-forked --nodedir=/usr/include/electron35/node_headers --build-from-source - - # stripping in build because it gets into asar - /usr/bin/$STRIP .hak/hakModules/matrix-seshat/index.node - - tasje -c ./electron-builder.json pack + cd ../desktop + pnpm run build:native + pnpm run build --publish never } do_install() { - vmkdir usr/lib/element-desktop/resources - - cd element-web - - vcopy webapp usr/lib/element-desktop/resources - - vinstall webapp/themes/element/img/logos/element-logo.svg 644 /usr/share/icons/hicolor/scalable/apps/ element-desktop.svg - - vinstall config.sample.json 644 etc/element-desktop config.json - ln -s /etc/element-desktop/config.json $DESTDIR/usr/lib/element-desktop/resources/webapp/config.json - - cd ../element-desktop - vinstall webapp.asar 644 usr/lib/element-desktop - vinstall dist/resources/app.asar 644 usr/lib/element-desktop/resources - - vcopy build usr/lib/element-desktop/resources - vinstall dist/element-desktop.desktop 644 usr/share/applications - echo '' >> dist/icons/size-list - while read -r size; do - if [ -n "$size" ]; then - vinstall dist/icons/$size.png 644 "usr/share/icons/hicolor/$size/apps" element-desktop.png - fi - done element-desktop - #!/bin/sh - exec electron${_electronver} /usr/lib/element-desktop/resources/app.asar "\$@" - EOF - vbin element-desktop - ln -s element-desktop "${DESTDIR}/usr/bin/riot-desktop" } riot-desktop_package() {