From: fsLeg Date: Mon, 11 Aug 2025 18:26:19 +0000 (+0300) Subject: element-desktop: added a script to vendor dependencies X-Git-Url: https://git.t-rg.ws/?a=commitdiff_plain;h=21b902159cf9925128e65fd8e37001b9f5fd19e0;p=slackbuilds.git element-desktop: added a script to vendor dependencies --- diff --git a/element-desktop/mkvendor.sh b/element-desktop/mkvendor.sh new file mode 100755 index 0000000..e9f44d4 --- /dev/null +++ b/element-desktop/mkvendor.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +source element-desktop.info + +CWD=$(pwd) +TMP=$(mktemp -d) +RUST_PLATFORM=$(rustc -Vv | awk '/host/ {print $2}') +export npm_config_nodedir="/usr" + +cd $TMP +tar xf $CWD/element-desktop-$VERSION.tar.gz +tar xf $CWD/element-web-$VERSION.tar.gz + +# 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 + +# 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 + +## 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 + +## 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 + +## matrix-seshat +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 +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 + +## native extensions +cat << EOF >> Cargo.toml +[package.metadata.vendor-filter] +platforms = ["x86_64-unknown-linux-gnu", "aarch64-unknown-linux-gnu"] +all-features = true +exclude-crate-paths = [ + { name = "openssl-src", exclude = "openssl" }, +] +EOF +cargo-vendor-filterer || cargo vendor --locked +mkdir -p .cargo +cat << EOF > .cargo/config.toml +[source.crates-io] +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 \ + element-desktop-$VERSION/.hak/hakModules \ + element-desktop-$VERSION/.hak/matrix-seshat/$RUST_PLATFORM/build \ + element-desktop-$VERSION/cache/electron{,-builder} +rm -rf $TMP +cd $CWD