mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-10-15 19:50:30 +00:00
* tests: close the walk stream in withTempDir * desktop: receive app links from args and macOS * desktop: forward an app link to the running app * desktop: initialize the desktop platform lazily * tests: share the temp directory helper * desktop: register simplexchat scheme in packages * desktop: register simplexchat scheme at runtime * ui: end the badge page with a link on desktop * desktop: raise the window over other apps * docs: describe desktop deep links in the spec * docs: plan desktop deep links * docs: report on desktop deep links * desktop: open simplex connection links * docs: describe simplex links on desktop * desktop: keep a link from opening twice * desktop: retry taking a signal held open * desktop: keep the user's AppImage link handler * desktop: register Windows links through Capabilities * desktop: add %u to the deb entry only once * docs: describe the review fixes * ui: open the badge link screen on the left * ui: import moko accessors in the badge screens --------- Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
60 lines
2.4 KiB
Bash
Executable File
60 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
|
|
ARCH="$(uname -m)"
|
|
|
|
scripts/desktop/build-lib-linux.sh
|
|
cd apps/multiplatform
|
|
if [ -n "${ASSETS_DIR:-}" ]; then
|
|
set -- -Psimplex.assets.dir="$ASSETS_DIR"
|
|
else
|
|
set --
|
|
fi
|
|
./gradlew "$@" packageDeb
|
|
|
|
# Workaround for skiko library
|
|
#
|
|
# Compose Multiplatform depends on skiko library, that
|
|
# handles all of the window managment and graphics drawing.
|
|
#
|
|
# This skiko library comes with two jar's:
|
|
# - platform-agnostic "skiko-awt"
|
|
# - and platform-specific "skiko-awt-runtime"
|
|
#
|
|
# In case of Linux, second jar is called "skiko-awt-runtime-linux-x64".
|
|
# Essentially, this jar has the Linux .so library called "libskiko-linux-x64.so"
|
|
# that is being unpacked to runtime libs.
|
|
#
|
|
# Since the jar is nothing more than a zip archive, extracting library
|
|
# from "skiko-awt-runtime-linux-x64" modifies it's timestamps
|
|
# with current time, which in changes it's hash, which in turn
|
|
# makes the whole build unreproducible.
|
|
#
|
|
# It seems to be there is no way to handle this extraction in our code and
|
|
# https://docs.gradle.org/current/userguide/working_with_files.html#sec:reproducible_archives
|
|
# unfortunately doesn't solve the issue.
|
|
#
|
|
# Instead, just modify the deb, removing the redundant skiko library.
|
|
#
|
|
# Also, it seems this is related to:
|
|
# https://youtrack.jetbrains.com/issue/CMP-1971/createDistributable-produces-duplicated-skiko-awt.jar-and-skiko-awt-runtime-windows-x64.jar
|
|
|
|
export SOURCE_DATE_EPOCH=1704067200
|
|
|
|
dpkg-deb -R ./release/main/deb/simplex*.deb ./extracted
|
|
|
|
# Source the distribution variables (VERSION_CODENAME)
|
|
. /etc/os-release
|
|
|
|
rm -f ./extracted/opt/*imple*/lib/app/*skiko-awt-runtime-linux*
|
|
sed -i -e '/skiko-awt-runtime-linux/d' ./extracted/opt/*imple*/lib/app/simplex.cfg
|
|
sed -i "/Version/ s/\$/~$VERSION_CODENAME/" ./extracted/DEBIAN/control
|
|
# jpackage's desktop entry passes no URL and handles no MIME type; this registers the simplexchat: and simplex: schemes
|
|
SCHEME_MIME_TYPE_LINE='MimeType=x-scheme-handler/simplexchat;x-scheme-handler/simplex;'
|
|
sed -i -e '/%[uU]/!s|^Exec=.*|& %u|' -e "s|^MimeType=.*|$SCHEME_MIME_TYPE_LINE|" ./extracted/opt/*imple*/lib/*.desktop
|
|
grep -qxF "$SCHEME_MIME_TYPE_LINE" ./extracted/opt/*imple*/lib/*.desktop || { echo "desktop entry does not register simplexchat: and simplex:" >&2; exit 1; }
|
|
find ./extracted/ -exec touch -d "@$SOURCE_DATE_EPOCH" {} +
|
|
|
|
dpkg-deb --build --root-owner-group --uniform-compression ./extracted ./release/main/deb/simplex_${ARCH}.deb
|
|
|
|
strip-nondeterminism ./release/main/deb/simplex_${ARCH}.deb
|