aboutsummaryrefslogtreecommitdiff
path: root/net-im/deltachat-desktop/scripts/make_node_tarball.sh
diff options
context:
space:
mode:
Diffstat (limited to 'net-im/deltachat-desktop/scripts/make_node_tarball.sh')
-rwxr-xr-xnet-im/deltachat-desktop/scripts/make_node_tarball.sh76
1 files changed, 76 insertions, 0 deletions
diff --git a/net-im/deltachat-desktop/scripts/make_node_tarball.sh b/net-im/deltachat-desktop/scripts/make_node_tarball.sh
new file mode 100755
index 000000000000..fc63cc4fb389
--- /dev/null
+++ b/net-im/deltachat-desktop/scripts/make_node_tarball.sh
@@ -0,0 +1,76 @@
+#!/bin/sh
+# Script for assembling the node dependencies required for FreeBSD packaging
+#
+# This is what I run to get the node_modules dirs needed to build the port
+#
+# Clone the https://github.com/deltachat/deltachat-desktop repo
+# Then start with something like the following:
+# git checkout -b v2.22.0 tags/v2.22.0
+#
+# Finally you can run this script.
+#
+# Requirements: electron37, node, npm, deltachat-rpc-server
+
+set -eu
+
+VERSION=$(git branch --show-current)
+
+export ELECTRON_OVERRIDE_DIST_PATH=/usr/local/share/electron37
+export ELECTRON_SKIP_BINARY_DOWNLOAD=1
+
+# Cleanup
+rm -rf node_modules pnpm packages/target-electron/node_modules deltachat-desktop-2.15.0-node-deps.tgz
+git reset --hard
+
+# Install pnpm in temp dir to avoid package.json parsing issues
+# It would throw an error on the "catalog:"
+CWD=$(pwd)
+TMP=$(mktemp -d)
+cd $TMP
+npm i pnpm
+mv node_modules $CWD
+cd $CWD
+rm -r $TMP
+
+# Install all dependencies
+echo "Installing dependencies..."
+pnpm install
+
+# Build workspace packages that have build steps
+echo "Building workspace packages..."
+# shared and runtime are just TypeScript source, no build needed
+pnpm --filter @deltachat-desktop/frontend build
+
+# Test the main build to ensure everything works
+echo "Testing main build..."
+cd packages/target-electron
+pnpm build
+cd ../..
+
+echo "Build test successful! All dependencies are working."
+
+# Remove platform-specific modules/binaries we don't need for FreeBSD
+# TODO: there are possibly more that could be excluded
+echo "Cleaning platform-specific binaries..."
+rm -rf node_modules/.pnpm/*linux*
+rm -rf node_modules/.pnpm/*darwin*
+rm -rf node_modules/.pnpm/*win32*
+rm -rf node_modules/.pnpm/*android*
+rm -rf node_modules/.pnpm/@tauri-apps*
+rm -rf node_modules/.pnpm/app-builder*
+
+# Remove duplicates which will make it harder to select the right path by
+# globbing in Makefile during packaging
+find node_modules/.pnpm -name "@deltachat+stdio-rpc-server@*" -type d | tail -n+2 | xargs rm -r
+
+echo "Creating tarball..."
+tar -czvpf deltachat-desktop-${VERSION}-node-deps.tgz \
+ node_modules \
+ packages/target-electron/node_modules \
+ packages/frontend/node_modules \
+ packages/runtime/node_modules \
+ packages/shared/node_modules
+
+echo ""
+echo "Tarball created successfully!"
+echo "You can now upload this distfile"