forked from pool/element-desktop
- Version 1.11.77
## Licensing matrix-react-sdk is being forked by Element at https://github.com/element-hq/matrix-react-sdk. Contributions are licensed to Element under a CLA and made available under an AGPLv3.0 or GPLv3.0 license at your choice. You can read more about this here: https://matrix.org/blog/2024/08/heart-of-matrix/ https://element.io/blog/sustainable-licensing-at-element-with-agpl/ The Matrix.org Foundation copy of the project will be archived. We don't expect any changes are needed by system administrators. Any updates will be communicated via our usual announcements channels and we are striving to make this as seamless as possible. ## ✨ Features * Add docs for widget container height option (https://github.com/element-hq/element-web/pull/27922). Contributed by @dbkr. * Allow user to set timezone (https://github.com/matrix-org/matrix-react-sdk/pull/12775). Contributed by @Timshel. * Implement download\_file in widget driver (https://github.com/matrix-org/matrix-react-sdk/pull/12931). Contributed by @weeman1337. * Sort the pinning message list in the same order than the banner. By timeline order. (https://github.com/matrix-org/matrix-react-sdk/pull/12937). Contributed by @florianduros. * Display pinned messages on a banner at the top of a room (https://github.com/matrix-org/matrix-react-sdk/pull/12917). Contributed by @florianduros. * Add a config option to control the default widget container height (https://github.com/matrix-org/matrix-react-sdk/pull/12893). Contributed by @dbkr. * RTE drafts (https://github.com/matrix-org/matrix-react-sdk/pull/12674). Contributed by @langleyd. * Add thread information in pinned message list (https://github.com/matrix-org/matrix-react-sdk/pull/12902). Contributed by @florianduros. * Add Pin/Unpin action in quick access of the message action bar (https://github.com/matrix-org/matrix-react-sdk/pull/12897). Contributed by @florianduros. ## 🐛 Bug Fixes * Fix read receipt animation (https://github.com/matrix-org/matrix-react-sdk/pull/12923). Contributed by @dbkr. * Display the indicator even with one message in pinned message banner (https://github.com/matrix-org/matrix-react-sdk/pull/12946). Contributed by @florianduros. * Always display last pinned message on the banner (https://github.com/matrix-org/matrix-react-sdk/pull/12945). Contributed by @florianduros. * The pinned message banner or list are triggering 🎉 effect. (https://github.com/matrix-org/matrix-react-sdk/pull/12944). Contributed by @florianduros. * Fix reply message truncation on 2 lines (https://github.com/matrix-org/matrix-react-sdk/pull/12929). Contributed by @florianduros. OBS-URL: https://build.opensuse.org/package/show/devel:languages:nodejs/element-desktop?expand=0&rev=75
This commit is contained in:
commit
e861ac9399
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
14
7za-path.patch
Normal file
14
7za-path.patch
Normal file
@ -0,0 +1,14 @@
|
||||
7-zip is not actually used during build
|
||||
|
||||
--- vendor/node_modules/builder-util/out/7za.js.orig 2024-05-15 21:11:29.747999000 +0200
|
||||
+++ vendor/node_modules/builder-util/out/7za.js 2024-05-15 23:22:09.712045854 +0200
|
||||
@@ -4,8 +4,7 @@ exports.getPath7x = exports.getPath7za =
|
||||
const _7zip_bin_1 = require("7zip-bin");
|
||||
const fs_extra_1 = require("fs-extra");
|
||||
async function getPath7za() {
|
||||
- await (0, fs_extra_1.chmod)(_7zip_bin_1.path7za, 0o755);
|
||||
- return _7zip_bin_1.path7za;
|
||||
+ return '/bin/false'
|
||||
}
|
||||
exports.getPath7za = getPath7za;
|
||||
async function getPath7x() {
|
18
cc-link-lib-no-static.patch
Normal file
18
cc-link-lib-no-static.patch
Normal file
@ -0,0 +1,18 @@
|
||||
Do not make cc emit "static" to cargo, that option is broken (rustc tries to repact LTO objects and corrupts them in the process leading to missing symbols).
|
||||
Make rustc believe everything foreign is a “dylib”. (It's not, but that makes it pass them to intact to GCC to do the linking)
|
||||
|
||||
--- vendor/.hak/hakModules/matrix-seshat/vendor/cc/src/lib.rs.orig 2024-05-16 18:44:16.828468243 +0200
|
||||
+++ vendor/.hak/hakModules/matrix-seshat/vendor/cc/src/lib.rs 2024-05-16 19:04:27.036595422 +0200
|
||||
@@ -1100,10 +1100,10 @@ impl Build {
|
||||
}
|
||||
|
||||
if self.link_lib_modifiers.is_empty() {
|
||||
- self.print(&format!("cargo:rustc-link-lib=static={}", lib_name));
|
||||
+ self.print(&format!("cargo:rustc-link-lib={}", lib_name));
|
||||
} else {
|
||||
let m = self.link_lib_modifiers.join(",");
|
||||
- self.print(&format!("cargo:rustc-link-lib=static:{}={}", m, lib_name));
|
||||
+ self.print(&format!("cargo:rustc-link-lib:{}={}", m, lib_name));
|
||||
}
|
||||
self.print(&format!("cargo:rustc-link-search=native={}", dst.display()));
|
||||
|
3
element-desktop-1.11.71.tar.gz
Normal file
3
element-desktop-1.11.71.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3b196f6f02a122a08046920ec51944c954aaf91f5f931624a99b042558781ac6
|
||||
size 3213199
|
3
element-desktop-1.11.75.tar.gz
Normal file
3
element-desktop-1.11.75.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:37d5a0b4a5ff87fc06385352348601abdd9d3a0bbf31a91e3a47754bf08778a8
|
||||
size 3209951
|
3
element-desktop-1.11.76.tar.gz
Normal file
3
element-desktop-1.11.76.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:95877c1907ffc50d41ed4721b4ef27a67a3bde41c0c0def16e85d0a1e2ed525a
|
||||
size 3210451
|
3
element-desktop-1.11.77.tar.gz
Normal file
3
element-desktop-1.11.77.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:dda715fd1dc5ed289673908109804e8796a9e43131b120d400920f7e12b21a0d
|
||||
size 3210592
|
1959
element-desktop.changes
Normal file
1959
element-desktop.changes
Normal file
File diff suppressed because it is too large
Load Diff
3
element-desktop.sh
Normal file
3
element-desktop.sh
Normal file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
exec electron /usr/share/element/app "$@"
|
238
element-desktop.spec
Normal file
238
element-desktop.spec
Normal file
@ -0,0 +1,238 @@
|
||||
#
|
||||
# spec file for package element-desktop
|
||||
#
|
||||
# Copyright (c) 2023 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
Name: element-desktop
|
||||
Version: 1.11.77
|
||||
Release: 0
|
||||
Summary: A glossy Matrix collaboration client - desktop
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/vector-im/element-desktop
|
||||
Source0: https://github.com/vector-im/element-desktop/archive/v%{version}.tar.gz#/element-desktop-%{version}.tar.gz
|
||||
Source2: vendor.tar.zst
|
||||
Source3: io.element.Element.desktop
|
||||
Source4: element-desktop.sh
|
||||
Source5: prepare.sh
|
||||
Patch0: hak-remove-devdependencies.patch
|
||||
Patch1: 7za-path.patch
|
||||
Patch2: cc-link-lib-no-static.patch
|
||||
Patch3: remove-fuses.patch
|
||||
BuildRequires: element-web = %{version}
|
||||
BuildRequires: app-builder
|
||||
BuildRequires: cargo
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: hicolor-icon-theme
|
||||
BuildRequires: jq
|
||||
BuildRequires: nodejs-electron-devel
|
||||
BuildRequires: pkgconfig(openssl)
|
||||
BuildRequires: zstd
|
||||
%if 0%{?fedora}
|
||||
BuildRequires: rust-srpm-macros
|
||||
%else
|
||||
BuildRequires: cargo-packaging >= 1.2.0+3
|
||||
BuildRequires: cargo-auditable
|
||||
%endif
|
||||
|
||||
BuildRequires: libsecret-devel
|
||||
BuildRequires: gcc-c++
|
||||
Requires: element-web = %{version}
|
||||
Requires: nodejs-electron%{_isa}
|
||||
|
||||
#x86 electron requires SSE2
|
||||
%ifarch %ix86
|
||||
ExclusiveArch: i586 i686
|
||||
BuildArch: i686
|
||||
%{expand:%%global optflags %(echo "%optflags") -march=pentium4 -mtune=generic}
|
||||
%{expand:%%global build_rustflags %(echo "%build_rustflags") -C target-cpu=pentium4 -Z tune-cpu=generic}
|
||||
%endif
|
||||
|
||||
|
||||
%description
|
||||
A glossy Matrix collaboration client - desktop
|
||||
|
||||
%prep
|
||||
%setup -q -a2
|
||||
%autopatch -p1
|
||||
|
||||
# https://blogs.gnome.org/mcatanzaro/2020/05/18/patching-vendored-rust-dependencies/
|
||||
for i in cc libloading libsqlite3-sys openssl-src rustix seshat vcpkg; do
|
||||
pushd .hak/hakModules/matrix-seshat/vendor/$i
|
||||
jq -cj '.files={}' .cargo-checksum.json >tmp && mv tmp .cargo-checksum.json && popd
|
||||
done
|
||||
|
||||
|
||||
jq -cj '.piwik=false | .update_base_url=null' < element.io/release/config.json > tmp && mv -v tmp element.io/release/config.json
|
||||
|
||||
|
||||
%build
|
||||
export CFLAGS="%{optflags} -fpic -fno-semantic-interposition -fno-fat-lto-objects -fvisibility=hidden"
|
||||
export CXXFLAGS="%{optflags} -fpic -fno-semantic-interposition -fno-fat-lto-objects -fvisibility=hidden"
|
||||
export LDFLAGS="%{?build_ldflags}"
|
||||
export MAKEFLAGS="%{_smp_mflags}"
|
||||
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
|
||||
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
|
||||
export USE_SYSTEM_APP_BUILDER=true
|
||||
export OPENSSL_NO_VENDOR=1
|
||||
# The `cc` crate tries to be too clever and passes some default cflags when building sqlcipher.
|
||||
# Disable these and use only the ones from CFLAGS env. variable
|
||||
export CRATE_CC_NO_DEFAULTS=1
|
||||
|
||||
|
||||
%ifarch %ix86
|
||||
export RUSTC_BOOTSTRAP=1
|
||||
%endif
|
||||
#I want to actually see the build logs for Cargo. Especially the gcc command line for dependent modules.
|
||||
export RUSTC_LOG='rustc_codegen_ssa::back::link=info'
|
||||
export RUSTFLAGS="%{build_rustflags} --verbose -Cstrip=none"
|
||||
export CARGO_TERM_VERBOSE=true
|
||||
|
||||
%electron_rebuild
|
||||
|
||||
|
||||
#We do manually the rough equivalent of `hak build` to inject correct optflags
|
||||
pushd .hak/hakModules/keytar
|
||||
%electron_rebuild
|
||||
popd
|
||||
|
||||
pushd .hak/hakModules/matrix-seshat
|
||||
%if 0%{?suse_version}
|
||||
auditable='auditable -vv'
|
||||
%endif
|
||||
cargo -vv $auditable rustc --offline --release --features=bundled-sqlcipher --lib --crate-type cdylib
|
||||
ln -Tv target/release/*.so index.node
|
||||
popd
|
||||
|
||||
|
||||
#Compare definition of `build:universal` in package.json
|
||||
npm run build:ts
|
||||
npm run build:res
|
||||
npx --no-install electron-builder --linux dir --universal -c.electronDist=%{_libdir}/electron -c.asar=false -c.nodeGypRebuild=false -c.npmRebuild=false
|
||||
|
||||
|
||||
|
||||
|
||||
%install
|
||||
#Remove sources an other files that should not be shipped
|
||||
pushd dist/linux-universal-unpacked/resources/app
|
||||
rm -rf node_modules/matrix-seshat/{.cargo,false,src,target,test,vendor,Cargo.lock,Cargo.toml}
|
||||
find -name '*.c' -type f -print -delete
|
||||
find -name '*.cc' -type f -print -delete
|
||||
find -name '*.cpp' -type f -print -delete
|
||||
find -name '*.h' -type f -print -delete
|
||||
find -name '*.m' -type f -print -delete
|
||||
find -name '*.map' -type f -print -delete
|
||||
find -name '*.ts' -type f -print -delete
|
||||
find -name '*.tsx' -type f -print -delete
|
||||
find -name '*.gyp' -type f -print -delete
|
||||
find -name '*.gypi' -type f -print -delete
|
||||
find -name '*.mk' -type f -print -delete
|
||||
find -name '*.Makefile' -type f -print -delete
|
||||
find -name '.eslint*' -type f -print -delete
|
||||
find -name .editorconfig -type f -print -delete
|
||||
find -name .nvmrc -type f -print -delete
|
||||
find -name .nycrc -type f -print -delete
|
||||
find -name Makefile -type f -print -delete
|
||||
find -name '.jscs*' -type f -print -delete
|
||||
find -name obj.target -print0 |xargs -r0 -- rm -rvf --
|
||||
find -name '*.d' -type f -print -delete
|
||||
|
||||
#Documentation
|
||||
find -name '*.md' -type f -print -delete
|
||||
find -name '*.markdown' -type f -print -delete
|
||||
find -name '*.bnf' -type f -print -delete
|
||||
find -name '*.mli' -type f -print -delete
|
||||
find -name CHANGES -type f -print -delete
|
||||
find -name TODO -type f -print -delete
|
||||
find -name usage.txt -type f -print -delete
|
||||
|
||||
# Remove empty directories
|
||||
find . -type d -empty -print -delete
|
||||
|
||||
# fix file mode
|
||||
find . -type f -exec chmod 0644 {} \;
|
||||
find . -name '*.node' -exec chmod 0755 {} \;
|
||||
popd
|
||||
|
||||
|
||||
|
||||
# Install the app content, replace the webapp with a symlink to the system package
|
||||
install -vd -m 0755 "%{buildroot}%{_datadir}/element/"
|
||||
cp -lrv dist/linux-universal-unpacked/resources/* -t "%{buildroot}%{_datadir}/element/"
|
||||
ln -vs %{_datadir}/webapps/element "%{buildroot}%{_datadir}/element/webapp"
|
||||
|
||||
# Install binaries to /usr/lib
|
||||
install -vd -m 0755 "%{buildroot}%{_prefix}/lib/element/"
|
||||
install -pvm0755 dist/linux-universal-unpacked/resources/app/node_modules/keytar/build/Release/keytar.node "%{buildroot}%{_prefix}/lib/element/keytar.node"
|
||||
install -pvm0755 dist/linux-universal-unpacked/resources/app/node_modules/matrix-seshat/index.node "%{buildroot}%{_prefix}/lib/element/matrix-seshat.node"
|
||||
ln -sfv "%{_prefix}/lib/element/keytar.node" "%{buildroot}%{_datadir}/element/app/node_modules/keytar/build/Release/keytar.node"
|
||||
ln -sfv "%{_prefix}/lib/element/matrix-seshat.node" "%{buildroot}%{_datadir}/element/app/node_modules/matrix-seshat/index.node"
|
||||
|
||||
# Config file
|
||||
install -vm 0755 -d %{buildroot}%{_sysconfdir}/element
|
||||
install -pvm 0644 element.io/release/config.json "%{buildroot}%{_sysconfdir}/element/config.json"
|
||||
|
||||
install -pvm 0755 -d %{buildroot}%{_sysconfdir}/webapps/element
|
||||
ln -vs %{_sysconfdir}/element/config.json "%{buildroot}%{_sysconfdir}/webapps/element/config.json"
|
||||
|
||||
install -vd -m 0755 "%{buildroot}%{_datadir}/webapps/element/"
|
||||
ln -vs %{_sysconfdir}/element/config.json "%{buildroot}%{_datadir}/webapps/element/config.json" # moved here from element-web to make symlink check happy
|
||||
|
||||
# Required extras
|
||||
install -vd -m 0755 "%{buildroot}%{_datadir}/applications/"
|
||||
install -pvm 0644 %{SOURCE3} "%{buildroot}%{_datadir}/applications/io.element.Element.desktop"
|
||||
install -vd -m 0755 "%{buildroot}%{_bindir}/"
|
||||
install -pvm 0755 %{SOURCE4} "%{buildroot}%{_bindir}/%{name}"
|
||||
|
||||
# Icons
|
||||
install -vd -m 0755 "%{buildroot}%{_datadir}/icons/hicolor/scalable/apps/"
|
||||
for i in 16 24 48 64 96 128 256 512; do
|
||||
install -vd -m 0755 "%{buildroot}%{_datadir}/icons/hicolor/${i}x${i}/apps/"
|
||||
install -pvm 0644 build/icons/${i}x${i}.png "%{buildroot}%{_datadir}/icons/hicolor/${i}x${i}/apps/io.element.Element.png"
|
||||
done
|
||||
|
||||
# Prevent error msg on element start
|
||||
ln -vs de_DE.json "%{buildroot}%{_datadir}/element/app/lib/i18n/strings/de.json"
|
||||
|
||||
%fdupes %{buildroot}%{_datadir}
|
||||
|
||||
%check
|
||||
%electron_check_native
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%{_bindir}/%{name}
|
||||
|
||||
%dir %{_datadir}/element/
|
||||
%{_datadir}/element/webapp
|
||||
%{_datadir}/element/app-update.yml
|
||||
%dir %{_datadir}/element/app
|
||||
%{_datadir}/element/app/lib
|
||||
%{_datadir}/element/app/node_modules
|
||||
%{_datadir}/element/app/package.json
|
||||
%dir %{_datadir}/element/img
|
||||
%{_datadir}/element/img/element.ico
|
||||
%{_datadir}/element/img/element.png
|
||||
|
||||
%{_prefix}/lib/element/
|
||||
%config(noreplace) %{_sysconfdir}/element/config.json
|
||||
%{_sysconfdir}/webapps/element/config.json
|
||||
%{_datadir}/webapps/element/config.json
|
||||
%dir %{_sysconfdir}/element/
|
||||
%{_datadir}/applications/io.element.Element.desktop
|
||||
%{_datadir}/icons/hicolor/*/apps/io.element.Element.png
|
||||
|
||||
%changelog
|
29
hak-remove-devdependencies.patch
Normal file
29
hak-remove-devdependencies.patch
Normal file
@ -0,0 +1,29 @@
|
||||
hak fetch tries to download devDependencies for two modules. Unfortunately it does so in a very non-deterministic manner (no shrinkwrap file)
|
||||
Remove that step since the devDependencies are not actually needed for any of these two modules.
|
||||
|
||||
--- element-desktop-1.11.65/scripts/hak/fetch.ts.orig 2024-04-23 15:14:00.000000000 +0200
|
||||
+++ element-desktop-1.11.65/scripts/hak/fetch.ts 2024-05-15 19:40:21.779432272 +0200
|
||||
@@ -35,23 +35,6 @@ export default async function fetch(hakE
|
||||
console.log("Fetching " + moduleInfo.name + "@" + moduleInfo.version);
|
||||
|
||||
const packumentCache = new Map();
|
||||
- await pacote.extract(`${moduleInfo.name}@${moduleInfo.version}`, moduleInfo.moduleBuildDir, {
|
||||
- packumentCache,
|
||||
- });
|
||||
-
|
||||
- console.log("Running yarn install in " + moduleInfo.moduleBuildDir);
|
||||
- await new Promise<void>((resolve, reject) => {
|
||||
- const proc = childProcess.spawn(hakEnv.isWin() ? "yarn.cmd" : "yarn", ["install", "--ignore-scripts"], {
|
||||
- stdio: "inherit",
|
||||
- cwd: moduleInfo.moduleBuildDir,
|
||||
- // We need shell mode on Windows to be able to launch `.cmd` executables
|
||||
- // See https://nodejs.org/en/blog/vulnerability/april-2024-security-releases-2
|
||||
- shell: hakEnv.isWin(),
|
||||
- });
|
||||
- proc.on("exit", (code) => {
|
||||
- code ? reject(code) : resolve();
|
||||
- });
|
||||
- });
|
||||
|
||||
// also extract another copy to the output directory at this point
|
||||
// nb. we do not yarn install in the output copy: we could install in
|
20
io.element.Element.desktop
Normal file
20
io.element.Element.desktop
Normal file
@ -0,0 +1,20 @@
|
||||
[Desktop Entry]
|
||||
Name=Element
|
||||
GenericName=Matrix Client
|
||||
GenericName[x-test]=xxMatrix Clientxx
|
||||
GenericName[zh_CN]=Matrix 客户端
|
||||
GenericName[zh_TW]=Matrix 用戶端程式
|
||||
Comment=Feature-rich client for Matrix
|
||||
Comment[zh_CN]=功能丰富的 Matrix 客户端
|
||||
Comment[zh_TW]=功能豐富的的 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/io.element.desktop;x-scheme-handler/element;
|
||||
Keywords=chat;gitter;irc;messaging;messenger;riot;voice;
|
||||
Keywords[zh_CN]=聊天;沟通;消息;通信;语音;gitter;irc;riot;
|
||||
Keywords[zh_TW]=聊天;溝通;消息;通信;語音;gitter;irc;riot;
|
||||
X-GNOME-SingleWindow=true
|
101
prepare.sh
Normal file
101
prepare.sh
Normal file
@ -0,0 +1,101 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
|
||||
|
||||
|
||||
version=$1
|
||||
last_packaged_version=$(cat "element-desktop.spec" | grep "^Version:" | awk '{print $NF}')
|
||||
sed -i -e "s/^\(Version: *\)[^ ]*$/\1${version}/" element-desktop.spec
|
||||
|
||||
oldwd="$(pwd)"
|
||||
tmpdir="$(mktemp -d)"
|
||||
|
||||
|
||||
#zypper install findutils file yarn cargo cargo-vendor-filterer moreutils jq
|
||||
|
||||
version=$(grep "Version:" element-desktop.spec | awk '{print $2}')
|
||||
osc rm -f element-web-*.tar.gz ||:
|
||||
osc rm -f element-desktop-*.tar.gz ||:
|
||||
wget -c https://github.com/vector-im/element-desktop/archive/v${version}.tar.gz -O element-desktop-${version}.tar.gz
|
||||
osc add -f element-desktop-*.tar.gz
|
||||
cp element-desktop.spec "$tmpdir/"
|
||||
cd "$tmpdir"
|
||||
|
||||
#dziobian: yarn has completely broken caching policy which first compiles the module and then caches the result.
|
||||
#additionally, --ignore-scripts seems to be evaluated during caching, and not during install to node_modules.
|
||||
#Mitigate this by resetting ~ to an empty directory
|
||||
mkdir -pv "$tmpdir/home"
|
||||
export HOME="$tmpdir/home"
|
||||
|
||||
tar -xzvvf "${oldwd}/element-desktop-${version}.tar.gz"
|
||||
cd element-desktop-${version}
|
||||
|
||||
#These patches change results of things we want to execute below
|
||||
patch -p1 --verbose < "${oldwd}/hak-remove-devdependencies.patch"
|
||||
|
||||
changes=$(grep "^Changes in \[$last_packaged_version\]" -B10000 CHANGELOG.md | head -n -2 | sed -e '/^==*$/d' -e 's/Changes in \[\([^\[]*\)\].*/Version \1/' -e 's/^\([^-].*\)$/ \1/' -e 's/\[.*\](\(.*\))/\1/g' -e 's/^ *Version /Version /g')
|
||||
|
||||
# This will vendor the packages but not execute any build scripts (but see caveat about caching above)
|
||||
yarn install --frozen-lockfile --ignore-engines --ignore-platform --ignore-scripts --link-duplicates
|
||||
|
||||
export PATH="$PATH:node_modules/.bin"
|
||||
|
||||
#hak does not have version pinning, which is terrible.
|
||||
#Therefore we manually pin the minimum versions specified in package.json
|
||||
jq '.hakDependencies[]|= sub("^\\^";"";"i")' <package.json > package.json.new
|
||||
diff --color=always -bup package.json{,.new} || true
|
||||
mv package.json{.new,}
|
||||
|
||||
|
||||
|
||||
yarn run hak fetch
|
||||
|
||||
# prefetch cargo crates
|
||||
pushd .hak/hakModules/matrix-seshat
|
||||
mkdir -pv .cargo
|
||||
cargo vendor-filterer --platform='*-unknown-linux-gnu' --platform='*-unknown-linux-gnueabihf' --all-features > .cargo/config
|
||||
#remove vendored libraries
|
||||
rm -rvf vendor/openssl-src/openssl
|
||||
popd
|
||||
|
||||
#fetch node-addon-api for keytar. Unfortunately there is no package lock, therefore we use lowest supported version (for reproducility)
|
||||
#we need to install it manuall in a separate directory wiithout a package.json. good that node-addon-api has no dependencies.
|
||||
pushd .hak/hakModules/keytar
|
||||
naa_version=$(jq -cj '.dependencies["node-addon-api"]' <package.json | sed 's/^\^//')
|
||||
mkdir -pv "$tmpdir/naa"
|
||||
pushd "$tmpdir/naa"
|
||||
npm install --verbose --ignore-scripts --no-save node-addon-api@"${naa_version}"
|
||||
popd
|
||||
mv -v "$tmpdir/naa/node_modules" -t .
|
||||
popd
|
||||
|
||||
#Remove non-free binaries, starting with a few common file extensions
|
||||
find . -name '*.node' -print -delete
|
||||
find . -name '*.jar' -print -delete
|
||||
find . -name '*.dll' -print -delete
|
||||
find . -name '*.exe' -print -delete
|
||||
find . -name '*.dylib' -print -delete
|
||||
find . -name '*.so' -print -delete
|
||||
find . -name '*.o' -print -delete
|
||||
find . -name '*.a' -print -delete
|
||||
find . -name '*.wasm' -print -delete
|
||||
|
||||
#now detect the rest. This should catch all ELFs that may be executed. We use sponge to avoid a race condition between find and rm
|
||||
find . -type f| sponge |\
|
||||
xargs -P"$(nproc)" -- sh -c 'file -S "$@" | grep -v '\'': .*script'\'' | grep '\'': .*executable'\'' | tee /dev/stderr | sed '\''s/: .*//'\'' | xargs rm -fv'
|
||||
|
||||
|
||||
rm -f "${oldwd}/vendor.tar.zst"
|
||||
ZSTD_CLEVEL=19 ZSTD_NBTHREADS=$(nproc) tar --zstd --sort=name -vvScf "${oldwd}/vendor.tar.zst" .hak node_modules
|
||||
|
||||
|
||||
cd "$oldwd"
|
||||
echo rm -rf "$tmpdir"
|
||||
echo -e "\n\nDONE creating npm offline dependencies archive 'vendor.tar.zst'"
|
||||
|
||||
|
||||
read -p "Write changes?"
|
||||
osc vc -m "${changes}" element-desktop.changes
|
||||
dos2unix element-desktop.changes
|
35
remove-fuses.patch
Normal file
35
remove-fuses.patch
Normal file
@ -0,0 +1,35 @@
|
||||
It is impossible to monkeypatch a shared copy of Electron, and in current versions of the nodejs-electron package
|
||||
we intentionally fail the build of any app which tries to do this to alert the packager.
|
||||
|
||||
One problematic fuse which may break user data compatibility with upstream binaries is cookie encryption.
|
||||
If a user runs an app with fused electron and then with unfused one, their cookies will get deleted.
|
||||
|
||||
OBSERVATION(dziobian):
|
||||
Element creates a cookies sqlite database on startup but seems to never write anything to it.
|
||||
Deleting the database manually seemed to have no effect.
|
||||
|
||||
--- element-desktop-1.11.65/electron-builder.ts.orig 2024-04-23 15:14:00.000000000 +0200
|
||||
+++ element-desktop-1.11.65/electron-builder.ts 2024-05-16 18:51:14.513871208 +0200
|
||||
@@ -75,22 +75,6 @@ const config: Writable<Configuration> =
|
||||
const electronBinaryPath = path.join(context.appOutDir, `${executableName}${ext}`);
|
||||
console.log(`Flipping fuses for: ${electronBinaryPath}`);
|
||||
|
||||
- await flipFuses(electronBinaryPath, {
|
||||
- version: FuseVersion.V1,
|
||||
- resetAdHocDarwinSignature: context.electronPlatformName === "darwin" && context.arch === Arch.universal,
|
||||
-
|
||||
- [FuseV1Options.EnableCookieEncryption]: true,
|
||||
- [FuseV1Options.OnlyLoadAppFromAsar]: true,
|
||||
-
|
||||
- [FuseV1Options.RunAsNode]: false,
|
||||
- [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
|
||||
- [FuseV1Options.EnableNodeCliInspectArguments]: false,
|
||||
-
|
||||
- // Mac app crashes on arm for us when `LoadBrowserProcessSpecificV8Snapshot` is enabled
|
||||
- [FuseV1Options.LoadBrowserProcessSpecificV8Snapshot]: false,
|
||||
- // https://github.com/electron/fuses/issues/7
|
||||
- [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: false,
|
||||
- });
|
||||
}
|
||||
},
|
||||
files: [
|
3
vendor.tar.zst
Normal file
3
vendor.tar.zst
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8684cd66a6b588ea80d79ca93e436465411ec6d9a3011ba766c27a35f4f87fab
|
||||
size 60213924
|
Loading…
x
Reference in New Issue
Block a user