AppImage improvements and fixes
- No need to build manually the olm python 3 bindings, pip does it - make clean in mirage dir if possible, since having build/ files from a compiling that happened from another distro can make the process fail - Save linuxdeployqt and appimagetools outside of the mirage repo - Lint the AppDir with the script from pkg2appimage - From python, restore LD_LIBRARY_PATH, PYTHONHOME and PYTHONUSERBASE to their original values. The AppRun laucher overwrites them to properly launch the program, but it affects external programs too launched e.g. when user clicks a link.
This commit is contained in:
parent
2f46656827
commit
4ab25ada43
13
TODO.md
13
TODO.md
|
@ -2,7 +2,10 @@
|
||||||
|
|
||||||
## Before release
|
## Before release
|
||||||
|
|
||||||
- Write a real README.md
|
- readline
|
||||||
|
- Add Gentoo instructions
|
||||||
|
- Finish the README.md
|
||||||
|
- Build final AppImage and test media opening
|
||||||
|
|
||||||
## Refactoring
|
## Refactoring
|
||||||
|
|
||||||
|
@ -51,6 +54,9 @@
|
||||||
|
|
||||||
## Interface
|
## Interface
|
||||||
|
|
||||||
|
- Labeled text area component, use it for room creation/settings topic
|
||||||
|
- Linkify URLs in topic text areas
|
||||||
|
|
||||||
- Expand the room pane if it's currently too small to show room settings
|
- Expand the room pane if it's currently too small to show room settings
|
||||||
- Use a loader for items not in view for the `HTabContainer`'s `SwipeView`
|
- Use a loader for items not in view for the `HTabContainer`'s `SwipeView`
|
||||||
|
|
||||||
|
@ -66,8 +72,6 @@
|
||||||
- Improve when HDrawer should collapse when the ui is zoomed
|
- Improve when HDrawer should collapse when the ui is zoomed
|
||||||
- Way to open context menus without a right mouse button
|
- Way to open context menus without a right mouse button
|
||||||
- Make room invite/left banner buttons look better
|
- Make room invite/left banner buttons look better
|
||||||
- When window is reduced enough for main pane to be invisible, transition
|
|
||||||
between pane and page with Alt+S is laggy when the page is a chat
|
|
||||||
|
|
||||||
- Choose a better easing types for animations
|
- Choose a better easing types for animations
|
||||||
- Make HListView scrollbars more visible
|
- Make HListView scrollbars more visible
|
||||||
|
@ -99,8 +103,6 @@
|
||||||
|
|
||||||
- `MainPane`:
|
- `MainPane`:
|
||||||
- Animate when logging out last account and sidepane turns invisible
|
- Animate when logging out last account and sidepane turns invisible
|
||||||
- Header back button when reduced
|
|
||||||
- Better look when reduced to minimum size
|
|
||||||
|
|
||||||
- Server selection
|
- Server selection
|
||||||
- Implement Register/Reset pages
|
- Implement Register/Reset pages
|
||||||
|
@ -147,6 +149,7 @@
|
||||||
## Backend
|
## Backend
|
||||||
|
|
||||||
- Saving the room settings
|
- Saving the room settings
|
||||||
|
- Optimize Model item replacement
|
||||||
- Refetch profile after manual profile change, don't wait for a room event
|
- Refetch profile after manual profile change, don't wait for a room event
|
||||||
|
|
||||||
- Better config file format
|
- Better config file format
|
||||||
|
|
|
@ -89,14 +89,16 @@ install_apt_packages() {
|
||||||
add-apt-repository -y ppa:beineri/opt-qt-5.12.7-xenial
|
add-apt-repository -y ppa:beineri/opt-qt-5.12.7-xenial
|
||||||
apt update -y
|
apt update -y
|
||||||
|
|
||||||
apt install -y qt512base qt512declarative qt512graphicaleffects \
|
apt install -y \
|
||||||
|
qt512base qt512declarative qt512graphicaleffects \
|
||||||
qt512imageformats qt512quickcontrols2 qt512svg \
|
qt512imageformats qt512quickcontrols2 qt512svg \
|
||||||
zip git wget cmake ccache \
|
zip git wget cmake ccache \
|
||||||
build-essential mesa-common-dev libglu1-mesa-dev freeglut3-dev \
|
build-essential mesa-common-dev libglu1-mesa-dev freeglut3-dev \
|
||||||
libglfw3-dev libgles2-mesa-dev libjpeg-turbo8-dev zlib1g-dev \
|
libglfw3-dev libgles2-mesa-dev libjpeg-turbo8-dev zlib1g-dev \
|
||||||
libtiff5-dev liblcms2-dev libwebp-dev libopenjp2-7-dev libssl-dev \
|
libtiff5-dev liblcms2-dev libwebp-dev libopenjp2-7-dev libssl-dev \
|
||||||
python3-dev python3-setuptools python3-pip libgdbm-dev libc6-dev \
|
python3-dev python3-setuptools python3-pip libgdbm-dev libc6-dev \
|
||||||
zlib1g-dev libsqlite3-dev libffi-dev openssl
|
zlib1g-dev libsqlite3-dev libffi-dev openssl \
|
||||||
|
desktop-file-utils # for appimage-lint.sh
|
||||||
|
|
||||||
/usr/sbin/update-ccache-symlinks
|
/usr/sbin/update-ccache-symlinks
|
||||||
}
|
}
|
||||||
|
@ -153,10 +155,6 @@ install_olm() {
|
||||||
cd olm-master
|
cd olm-master
|
||||||
cmake . -Bbuild
|
cmake . -Bbuild
|
||||||
cmake --build build
|
cmake --build build
|
||||||
|
|
||||||
cd python
|
|
||||||
make olm-python3
|
|
||||||
cd ..
|
|
||||||
make install
|
make install
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,6 +189,7 @@ get_app_and_pip_dependencies() {
|
||||||
|
|
||||||
initialize_appdir() {
|
initialize_appdir() {
|
||||||
cd ~/mirage
|
cd ~/mirage
|
||||||
|
if [ -f Makefile ]; then make clean; fi
|
||||||
qmake mirage.pro
|
qmake mirage.pro
|
||||||
make install INSTALL_ROOT=build/appdir
|
make install INSTALL_ROOT=build/appdir
|
||||||
}
|
}
|
||||||
|
@ -203,15 +202,14 @@ complete_appdir() {
|
||||||
cp -r ~/.local/lib/python3.8/site-packages/* \
|
cp -r ~/.local/lib/python3.8/site-packages/* \
|
||||||
appdir/usr/lib/python3.8/site-packages
|
appdir/usr/lib/python3.8/site-packages
|
||||||
|
|
||||||
if ! [ -f linuxdeployqt-continuous-x86_64.AppImage ]; then
|
if ! [ -f ~/linuxdeployqt.AppImage ]; then
|
||||||
wget 'https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage'
|
wget 'https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage' \
|
||||||
|
-O ~/linuxdeployqt.AppImage
|
||||||
fi
|
fi
|
||||||
chmod +x linuxdeployqt-continuous-x86_64.AppImage
|
chmod +x ~/linuxdeployqt.AppImage
|
||||||
|
|
||||||
./linuxdeployqt-continuous-x86_64.AppImage \
|
~/linuxdeployqt.AppImage appdir/usr/share/applications/mirage.desktop \
|
||||||
appdir/usr/share/applications/mirage.desktop \
|
-bundle-non-qt-libs -qmldir=../src/gui
|
||||||
-bundle-non-qt-libs \
|
|
||||||
-qmldir=../src/gui
|
|
||||||
|
|
||||||
cp /opt/qt512/qml/io/thp/pyotherside/qmldir appdir/usr/qml/io/thp/pyotherside
|
cp /opt/qt512/qml/io/thp/pyotherside/qmldir appdir/usr/qml/io/thp/pyotherside
|
||||||
|
|
||||||
|
@ -231,11 +229,18 @@ fix_apprun_launcher() {
|
||||||
cat << 'EOF' > AppRun
|
cat << 'EOF' > AppRun
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
here="$(dirname "$(readlink -f "$0")")"
|
here="$(dirname "$(readlink -f "$0")")"
|
||||||
|
|
||||||
|
export RESTORE_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
|
||||||
|
export RESTORE_PYTHONHOME="$PYTHONHOME"
|
||||||
|
export RESTORE_PYTHONUSERBASE="$PYTHONUSERBASE"
|
||||||
|
|
||||||
export SSL_CERT_FILE="$here/usr/lib/python3.8/site-packages/certifi/cacert.pem"
|
export SSL_CERT_FILE="$here/usr/lib/python3.8/site-packages/certifi/cacert.pem"
|
||||||
export LD_LIBRARY_PATH="$here/usr/lib:$LD_LIBRARY_PATH"
|
export LD_LIBRARY_PATH="$here/usr/lib:$LD_LIBRARY_PATH"
|
||||||
export PYTHONHOME=$here/usr
|
export PYTHONHOME="$here/usr"
|
||||||
export PYTHONUSERBASE=$here/usr
|
export PYTHONUSERBASE="$here/usr"
|
||||||
|
|
||||||
cd "$here"
|
cd "$here"
|
||||||
exec "$here/usr/bin/mirage" "$@"
|
exec "$here/usr/bin/mirage" "$@"
|
||||||
EOF
|
EOF
|
||||||
|
@ -247,12 +252,33 @@ EOF
|
||||||
generate_appimage() {
|
generate_appimage() {
|
||||||
cd ~/mirage/build
|
cd ~/mirage/build
|
||||||
|
|
||||||
if ! [ -f appimagetool-x86_64.AppImage ]; then
|
if ! [ -f ~/appimagetool.AppImage ]; then
|
||||||
wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
|
wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" \
|
||||||
|
-O ~/appimagetool.AppImage
|
||||||
fi
|
fi
|
||||||
|
|
||||||
chmod +x appimagetool-x86_64.AppImage
|
chmod +x ~/appimagetool.AppImage
|
||||||
./appimagetool-x86_64.AppImage appdir
|
~/appimagetool.AppImage appdir
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
lint_appdir() {
|
||||||
|
cd ~
|
||||||
|
|
||||||
|
cat << 'EOF' > /usr/local/bin/mimetype
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
file --mime-type "$@" | tr -d ';'
|
||||||
|
EOF
|
||||||
|
chmod +x /usr/local/bin/mimetype
|
||||||
|
|
||||||
|
if ! [ -d pkg2appimage ]; then
|
||||||
|
git clone https://github.com/AppImage/pkg2appimage
|
||||||
|
fi
|
||||||
|
chmod +x pkg2appimage/appdir-lint.sh
|
||||||
|
|
||||||
|
cd ~/mirage/build
|
||||||
|
echo -e "\e[34m\nAppDir linting result:\n\e[0m"
|
||||||
|
~/pkg2appimage/appdir-lint.sh appdir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -275,3 +301,4 @@ initialize_appdir
|
||||||
complete_appdir
|
complete_appdir
|
||||||
fix_apprun_launcher
|
fix_apprun_launcher
|
||||||
generate_appimage
|
generate_appimage
|
||||||
|
lint_appdir
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import logging as log
|
import logging as log
|
||||||
|
import os
|
||||||
import signal
|
import signal
|
||||||
import traceback
|
import traceback
|
||||||
from concurrent.futures import Future
|
from concurrent.futures import Future
|
||||||
|
@ -126,6 +127,16 @@ class QMLBridge:
|
||||||
remote_pdb.RemotePdb("127.0.0.1", 4444).set_trace()
|
remote_pdb.RemotePdb("127.0.0.1", 4444).set_trace()
|
||||||
|
|
||||||
|
|
||||||
|
# The AppImage AppRun script overwrites some environment path variables to
|
||||||
|
# correctly work, and sets RESTORE_<name> equivalents with the original values.
|
||||||
|
# If the app is launched from an AppImage, now restore the original values
|
||||||
|
# to prevent problems like QML Qt.openUrlExternally() failing because
|
||||||
|
# the external launched program is affected by our AppImage-specific variables.
|
||||||
|
for var in ("LD_LIBRARY_PATH", "PYTHONHOME", "PYTHONUSERBASE"):
|
||||||
|
if f"RESTORE_{var}" in os.environ:
|
||||||
|
os.environ[var] = os.environ[f"RESTORE_{var}"]
|
||||||
|
|
||||||
|
|
||||||
# Make CTRL-C work again
|
# Make CTRL-C work again
|
||||||
try:
|
try:
|
||||||
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user