From 77c5c4e80a96ee77acdf06ba1cebcfd301f6b5d7 Mon Sep 17 00:00:00 2001 From: fsLeg Date: Tue, 12 Aug 2025 00:49:54 +0300 Subject: [PATCH] element-desktop: optimized vendoring and finalizing touches --- element-desktop/element-desktop.SlackBuild | 45 ++++++------ element-desktop/element-desktop.info | 6 +- element-desktop/element-desktop.sh | 3 - element-desktop/mkvendor.sh | 79 +++++++++++++++------- 4 files changed, 83 insertions(+), 50 deletions(-) delete mode 100644 element-desktop/element-desktop.sh diff --git a/element-desktop/element-desktop.SlackBuild b/element-desktop/element-desktop.SlackBuild index 7499af3..d121130 100644 --- a/element-desktop/element-desktop.SlackBuild +++ b/element-desktop/element-desktop.SlackBuild @@ -67,17 +67,22 @@ fi set -e -RUST_PLATFORM=$(rustc -Vv | awk '/host/ {print $2}') - export PATH="/opt/rust/bin:$PATH" if [ -z "$LD_LIBRARY_PATH" ]; then export LD_LIBRARY_PATH="/opt/rust/lib$LIBDIRSUFFIX" else export LD_LIBRARY_PATH="/opt/rust/lib$LIBDIRSUFFIX:$LD_LIBRARY_PATH" fi + +BASE_TMP_DIR=$TMP/$PRGNAM-$VERSION +export YARN_YARN_OFFLINE_MIRROR=$BASE_TMP_DIR/vendor +export YARN_CACHE_FOLDER=$BASE_TMP_DIR/cache +export npm_config_cache=$YARN_CACHE_FOLDER +export npm_config_nodedir=/usr +export XDG_CACHE_HOME=$BASE_TMP_DIR/electron-cache +export CARGO_HOME=$BASE_TMP_DIR/cargo export CFLAGS="$SLKCFLAGS" export CXXFLAGS="$SLKCFLAGS" -export npm_config_nodedir="/usr" rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT @@ -85,7 +90,7 @@ cd $TMP rm -rf $PRGNAM-$VERSION $WEBNAM-$VERSION tar xvf $CWD/$PRGNAM-$VERSION.tar.gz tar xvf $CWD/$WEBNAM-$VERSION.tar.gz -tar xvf $CWD/$PRGNAM-$VERSION-vendored-sources.tar +tar xvf $CWD/$PRGNAM-$VERSION-vendored-sources.tar.xz cd $WEBNAM-$VERSION chown -R root:root . @@ -95,14 +100,15 @@ find -L . \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; -YARN_CACHE_FOLDER="$(pwd)/cache" \ -YARN_YARN_OFFLINE_MIRROR="$(pwd)/vendor" \ -yarn install --frozen-lockfile --ignore-engines --no-fund --update-checksums --offline +yarn install --frozen-lockfile \ + --ignore-engines \ + --no-fund \ + --update-checksums \ + --offline sed -i 's|yarn |yarn --offline |g' package.json VERSION=$VERSION \ -YARN_CACHE_FOLDER="$(pwd)/cache" \ -npm_config_cache="$(pwd)/cache" yarn --offline build +yarn --offline cache clean cd ../$PRGNAM-$VERSION chown -R root:root . @@ -112,24 +118,24 @@ find -L . \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; -export YARN_CACHE_FOLDER="$(pwd)/cache" -export YARN_YARN_OFFLINE_MIRROR="$(pwd)/vendor" -export npm_config_cache="$(pwd)/cache" -export XDG_CACHE_HOME=$YARN_CACHE_FOLDER +# fix autolaunch # https://gitlab.archlinux.org/archlinux/packaging/packages/element.io/-/blob/main/autolaunch.patch patch -p1 < $CWD/autolaunch.patch +# use vendored hak patch -p1 < $CWD/no-fetching-hak.patch -sed -i 's|"target": "deb"|"target": "dir"|' package.json +# disable autoupdate sed -i 's|"https://packages.element.io/desktop/update/"|null|' element.io/release/config.json + mkdir -p deploys mv ../$WEBNAM-$VERSION/webapp deploys/element-v$VERSION -yarn install --frozen-lockfile --ignore-engines --no-fund --update-checksums --offline +yarn install --frozen-lockfile \ + --ignore-engines \ + --no-fund \ + --update-checksums \ + --offline sed -i 's|yarn |yarn --offline |g' package.json -#sed -i 's|yarn \-\-offline run hak|yarn run hak|' package.json yarn --offline run fetch --noverify --cfgdir "" RUSTFLAGS="-C target-cpu=native" \ -CARGO_HOME="$TMP/$PRGNAM-$VERSION/.hak/matrix-seshat/$RUST_PLATFORM/build/.cargo" \ -YARN_YARN_OFFLINE_MIRROR="$TMP/$PRGNAM-$VERSION/.hak/matrix-seshat/$RUST_PLATFORM/build/yarn-vendor" \ yarn --offline run build:native # electron-builder fails if it can't upload the artifact to GitHub for which it requires a GitHub Token # all building is done by that point, so we just continue with packaging @@ -142,8 +148,7 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true install -Dm644 $CWD/element-desktop.desktop $PKG/usr/share/applications/io.element.Element.desktop -install -Dm755 $CWD/element-desktop.sh $PKG/usr/bin/element-desktop -sed -i "s|@LIBDIRSUFFIX@|$LIBDIRSUFFIX|" $PKG/usr/bin/element-desktop +ln -s /usr/lib$LIBDIRSUFFIX/element-desktop/element-desktop $PKG/usr/bin/ # 32x32 icon is missing for some reason magick build/icons/512x512.png -resize 32x32 build/icons/32x32.png diff --git a/element-desktop/element-desktop.info b/element-desktop/element-desktop.info index ed4c345..395ccf6 100644 --- a/element-desktop/element-desktop.info +++ b/element-desktop/element-desktop.info @@ -4,9 +4,11 @@ HOMEPAGE="https://element.io/" DOWNLOAD="UNSUPPORTED" MD5SUM="" DOWNLOAD_x86_64="https://github.com/element-hq/element-desktop/archive/v1.11.108/element-desktop-1.11.108.tar.gz \ - https://github.com/element-hq/element-web/archive/v1.11.108/element-web-1.11.108.tar.gz" + https://github.com/element-hq/element-web/archive/v1.11.108/element-web-1.11.108.tar.gz \ + https://sbo.t-rg.ws/element-desktop-1.11.108-vendored-sources.tar.xz" MD5SUM_x86_64="c9f703e2983abf98cdc9172dd046da85 \ - 72560cdea08e8ab4fd1745ac8d96e1d8" + 72560cdea08e8ab4fd1745ac8d96e1d8 \ + b1a814f738a211bda321159bb75514d1" REQUIRES="sqlcipher yarn rust-opt" MAINTAINER="Vladislav 'fsLeg' Borisov" EMAIL="fsleg@t-rg.ws" diff --git a/element-desktop/element-desktop.sh b/element-desktop/element-desktop.sh deleted file mode 100644 index 56b2d7d..0000000 --- a/element-desktop/element-desktop.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -exec /usr/lib@LIBDIRSUFFIX@/element-desktop/element-desktop "$@" diff --git a/element-desktop/mkvendor.sh b/element-desktop/mkvendor.sh index e9f44d4..97423de 100755 --- a/element-desktop/mkvendor.sh +++ b/element-desktop/mkvendor.sh @@ -1,67 +1,97 @@ #!/bin/bash +set -e + +if [ ! -x "$(which jq)" -o ! -x "$(which 7z)" ]; then + echo Please install jq and p7zip. + exit 1 +fi + source element-desktop.info CWD=$(pwd) TMP=$(mktemp -d) -RUST_PLATFORM=$(rustc -Vv | awk '/host/ {print $2}') -export npm_config_nodedir="/usr" + +export PATH="/opt/rust/bin:$PATH" +if [ -z "$LD_LIBRARY_PATH" ]; then + export LD_LIBRARY_PATH="/opt/rust/lib64" +else + export LD_LIBRARY_PATH="/opt/rust/lib64:$LD_LIBRARY_PATH" +fi cd $TMP tar xf $CWD/element-desktop-$VERSION.tar.gz tar xf $CWD/element-web-$VERSION.tar.gz +BASE_TMP_DIR=$TMP/element-desktop-$VERSION +export YARN_YARN_OFFLINE_MIRROR=$BASE_TMP_DIR/vendor +export YARN_CACHE_FOLDER=$BASE_TMP_DIR/cache +export npm_config_cache=$YARN_CACHE_FOLDER +export npm_config_nodedir=/usr +export XDG_CACHE_HOME=$BASE_TMP_DIR/electron-cache +export CARGO_HOME=$BASE_TMP_DIR/cargo + +mkdir -p $YARN_YARN_OFFLINE_MIRROR + # element-web cd element-web-$VERSION -mkdir -p vendor -YARN_YARN_OFFLINE_MIRROR=$(pwd)/vendor \ -YARN_CACHE_FOLDER=$(pwd)/cache \ yarn install --frozen-lockfile \ --ignore-engines \ --no-fund \ --update-checksums +yarn cache clean # element-desktop cd ../element-desktop-$VERSION ## pre-built electron EVERSION=$(jq --raw-output '.devDependencies.electron' < package.json) -mkdir -p cache/electron{,-builder/fpm@2.0.1/fpm@2.0.1-fpm-1.16.0-ruby-3.4.3-linux-amd64} -wget -P cache/electron https://github.com/electron/electron/releases/download/v$EVERSION/electron-v$EVERSION-linux-x64.zip +mkdir -p $XDG_CACHE_HOME/electron{,-builder/fpm@2.0.1/fpm@2.0.1-fpm-1.16.0-ruby-3.4.3-linux-amd64} +if [ -e $CWD/electron-v$EVERSION-linux-x64.zip ]; then + cp $CWD/electron-v$EVERSION-linux-x64.zip $XDG_CACHE_HOME/electron/ +else + wget --directory-prefix=$XDG_CACHE_HOME/electron --tries=0 --retry-on-http-error=503 https://github.com/electron/electron/releases/download/v$EVERSION/electron-v$EVERSION-linux-x64.zip +fi ## pre-built ruby for electron-builder -wget -P cache/electron-builder https://github.com/electron-userland/electron-builder-binaries/releases/download/fpm@2.0.1/fpm-1.16.0-ruby-3.4.3-linux-amd64.7z -7z x -ocache/electron-builder/fpm@2.0.1/fpm@2.0.1-fpm-1.16.0-ruby-3.4.3-linux-amd64 cache/electron-builder/fpm-1.16.0-ruby-3.4.3-linux-amd64.7z -rm cache/electron-builder/fpm-1.16.0-ruby-3.4.3-linux-amd64.7z +if [ -e $CWD/fpm-1.16.0-ruby-3.4.3-linux-amd64.7z ]; then + cp $CWD/fpm-1.16.0-ruby-3.4.3-linux-amd64.7z $XDG_CACHE_HOME/electron-builder/ +else + wget --directory-prefix=$XDG_CACHE_HOME/electron-builder --tries=0 --retry-on-http-error=503 https://github.com/electron-userland/electron-builder-binaries/releases/download/fpm@2.0.1/fpm-1.16.0-ruby-3.4.3-linux-amd64.7z +fi +7z x -o$XDG_CACHE_HOME/electron-builder/fpm@2.0.1/fpm@2.0.1-fpm-1.16.0-ruby-3.4.3-linux-amd64 $XDG_CACHE_HOME/electron-builder/fpm-1.16.0-ruby-3.4.3-linux-amd64.7z +rm $XDG_CACHE_HOME/electron-builder/fpm-1.16.0-ruby-3.4.3-linux-amd64.7z ## element-desktop itself -mkdir -p vendor -YARN_YARN_OFFLINE_MIRROR=$(pwd)/vendor \ -YARN_CACHE_FOLDER=$(pwd)/cache \ -npm_config_cache="$(pwd)/cache" \ -XDG_CACHE_HOME=$YARN_CACHE_FOLDER \ yarn install --frozen-lockfile \ --ignore-engines \ --no-fund \ --update-checksums +yarn cache clean +EDIR=$(find $XDG_CACHE_HOME/electron -type d -mindepth 1 -maxdepth 1) +rm $EDIR/electron-v$EVERSION-linux-x64.zip +ln -s ../electron-v$EVERSION-linux-x64.zip $EDIR/ ## matrix-seshat +RUST_PLATFORM=$(rustc -Vv | awk '/host/ {print $2}') SESHATVERSION=$(jq --raw-output '.hakDependencies."matrix-seshat"' < package.json | tr -d '^') -wget -P .hak https://github.com/matrix-org/seshat/archive/$SESHATVERSION/seshat-$SESHATVERSION.tar.gz -tar xf .hak/seshat-$SESHATVERSION.tar.gz -C .hak seshat-$SESHATVERSION/seshat-node mkdir -p .hak/hakModules .hak/matrix-seshat/$RUST_PLATFORM +if [ -e $CWD/seshat-$SESHATVERSION.tar.gz ]; then + cp $CWD/seshat-$SESHATVERSION.tar.gz .hak/ +else + wget --directory-prefix=.hak --tries=0 --retry-on-http-error=503 https://github.com/matrix-org/seshat/archive/$SESHATVERSION/seshat-$SESHATVERSION.tar.gz +fi +tar xf .hak/seshat-$SESHATVERSION.tar.gz -C .hak seshat-$SESHATVERSION/seshat-node mv .hak/seshat-$SESHATVERSION/seshat-node .hak/matrix-seshat/$RUST_PLATFORM/build cp -R .hak/matrix-seshat/$RUST_PLATFORM/build .hak/hakModules/matrix-seshat rm .hak/seshat-$SESHATVERSION.tar.gz + cd .hak/matrix-seshat/$RUST_PLATFORM/build -mkdir -p yarn-vendor -YARN_YARN_OFFLINE_MIRROR=$(pwd)/yarn-vendor \ -YARN_CACHE_FOLDER=$(pwd)/cache \ -CARGO_HOME=$(pwd)/cargo \ yarn install --frozen-lockfile \ --ignore-engines \ --no-fund \ --update-checksums +yarn cache clean ## native extensions cat << EOF >> Cargo.toml @@ -81,15 +111,14 @@ replace-with = 'vendored-sources' [source.vendored-sources] directory = 'vendor' EOF -rm -rf cache cargo cd ../../../.. # vendor everything cd .. -tar cf $CWD/element-desktop-$VERSION-vendored-sources.tar \ - element-{desktop,web}-$VERSION/vendor \ +tar cfJ $CWD/element-desktop-$VERSION-vendored-sources.tar.xz \ + element-desktop-$VERSION/vendor \ element-desktop-$VERSION/.hak/hakModules \ element-desktop-$VERSION/.hak/matrix-seshat/$RUST_PLATFORM/build \ - element-desktop-$VERSION/cache/electron{,-builder} + element-desktop-$VERSION/electron-cache/electron{,-builder} rm -rf $TMP cd $CWD -- 2.46.4