]> git.t-rg.ws Git - slackbuilds.git/commitdiff
element-desktop: optimized vendoring and finalizing touches
authorfsLeg <fsleg@t-rg.ws>
Mon, 11 Aug 2025 21:49:54 +0000 (00:49 +0300)
committerfsLeg <fsleg@t-rg.ws>
Mon, 11 Aug 2025 21:49:54 +0000 (00:49 +0300)
element-desktop/element-desktop.SlackBuild
element-desktop/element-desktop.info
element-desktop/element-desktop.sh [deleted file]
element-desktop/mkvendor.sh

index 7499af3dc921f9de4c4124f1efda7c61844bba3f..d121130a52e27f61de69c1b1fb06c28cdf2239dc 100644 (file)
@@ -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
index ed4c34585b1b92555b9df97423c40c881504be38..395ccf66a9251e68f1c6d8c8761723d67d1744cc 100644 (file)
@@ -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 (file)
index 56b2d7d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-exec /usr/lib@LIBDIRSUFFIX@/element-desktop/element-desktop "$@"
index e9f44d4343aaa4e6ae153cea1c1edf841acf7f2e..97423de7b7ff2e7ce4a5da161045f953ad4690f7 100755 (executable)
@@ -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