2020-03-20 10:13:08 +11:00
|
|
|
# Installation
|
|
|
|
|
|
|
|
Instructions and releases are currently only available for Linux,
|
|
|
|
but compiling on Windows and macOS should be possible with the right tools.
|
|
|
|
|
2020-03-30 17:39:58 +11:00
|
|
|
- [Packages](#packages)
|
2020-03-20 10:13:08 +11:00
|
|
|
- [Linux](#linux)
|
2020-03-27 22:06:38 +11:00
|
|
|
- [AppImage](#appimage)
|
|
|
|
- [Flatpak](#flatpak)
|
2020-03-30 17:39:58 +11:00
|
|
|
- [Arch Linux](#arch-linux)
|
2020-10-03 22:08:27 +10:00
|
|
|
- [Gentoo](#gentoo)
|
2020-11-21 19:31:26 +11:00
|
|
|
- [Alpine Linux / postmarketOS](#alpine-linux--postmarketOS)
|
2020-03-20 10:13:08 +11:00
|
|
|
- [Manual installation](#manual-installation)
|
|
|
|
- [Environment variables](#environment-variables)
|
|
|
|
- [Package manager dependencies](#package-manager-dependencies)
|
|
|
|
- [Alpine Linux 3.9+ / apk](#alpine-linux-39--apk)
|
|
|
|
- [Arch Linux / pacman & AUR](#arch-linux--pacman--aur)
|
|
|
|
- [Fedora 30+ / dnf](#fedora-30--dnf)
|
2020-03-21 05:11:47 +11:00
|
|
|
- [Gentoo / emerge](#gentoo--emerge)
|
2020-03-20 10:13:08 +11:00
|
|
|
- [Ubuntu 19.04 / apt](#ubuntu-1904--apt)
|
|
|
|
- [Ubuntu 19.10+, Debian bullseye / apt](#ubuntu-1910-debian-bullseye--apt)
|
|
|
|
- [Void Linux / xbps](#void-linux--xbps)
|
|
|
|
- [Installing PyOtherSide manually](#installing-pyotherside-manually)
|
|
|
|
- [Installing libolm manually](#installing-libolm-manually)
|
2020-05-31 09:37:35 +10:00
|
|
|
- [Installing or updating Mirage](#installing-or-updating-mirage)
|
2020-03-27 22:06:38 +11:00
|
|
|
- [Common issues](#common-issues)
|
|
|
|
- [cffi version mismatch](#cffi-version-mismatch)
|
2020-09-04 02:55:56 +10:00
|
|
|
- [Type XYZ unavailable](#type-xyz-unavailable)
|
2020-03-20 10:13:08 +11:00
|
|
|
|
|
|
|
|
2020-03-30 17:39:58 +11:00
|
|
|
## Packages
|
2020-03-20 10:13:08 +11:00
|
|
|
|
|
|
|
### Linux
|
|
|
|
|
2020-03-30 17:39:58 +11:00
|
|
|
For developement, or if none of the package options are satisfying,
|
2020-03-27 22:06:38 +11:00
|
|
|
see [manual installation](#manual-installation).
|
|
|
|
|
|
|
|
#### AppImage
|
|
|
|
|
|
|
|
For **x86 64bit glibc-based systems**, Mirage is available as an AppImage
|
|
|
|
on the [release page](https://github.com/mirukana/mirage/releases).
|
2020-03-20 10:13:08 +11:00
|
|
|
|
|
|
|
AppImages are single executable files that contain the app and all
|
|
|
|
its dependencies.
|
|
|
|
Mirage images are built in Ubuntu 16.04, and should therefore run on any distro
|
2020-03-27 22:06:38 +11:00
|
|
|
released in April 2016 or later.
|
|
|
|
|
|
|
|
[How to start AppImages](https://docs.appimage.org/introduction/quickstart.html#how-to-run-an-appimage)
|
|
|
|
(TL;DR: `chmod +x Mirage-*.AppImage && ./Mirage-*.AppImage`)
|
|
|
|
|
|
|
|
#### Flatpak
|
|
|
|
|
2020-11-21 23:52:47 +11:00
|
|
|
Mirage is also available as a Flatpak.
|
2020-03-20 10:13:08 +11:00
|
|
|
|
2020-11-21 23:52:47 +11:00
|
|
|
1. Download the Mirage Flatpak from the
|
|
|
|
[release page](https://github.com/mirukana/mirage/releases).
|
|
|
|
|
|
|
|
2. If your operating system doesn't already have built-in support for Flatpaks,
|
|
|
|
follow [these instructions](https://flatpak.org/setup/) to install Flatpak
|
|
|
|
support on your system.
|
|
|
|
|
|
|
|
3. To actually install and run Mirage, it should be enough to double-click the
|
|
|
|
downloaded `.flatpak` file, which will open your software manager.
|
|
|
|
Alternatively, you can issue the following commands in a terminal:
|
2020-03-20 10:13:08 +11:00
|
|
|
|
|
|
|
```sh
|
2020-03-28 08:29:42 +11:00
|
|
|
flatpak remote-add --user --if-not-exists \
|
|
|
|
flathub https://flathub.org/repo/flathub.flatpakrepo
|
|
|
|
|
2020-07-01 14:24:39 +10:00
|
|
|
flatpak install --user flathub org.kde.Platform//5.14
|
2020-11-21 23:52:47 +11:00
|
|
|
flatpak install --user /path/to/downloaded/mirage-*.flatpak
|
2020-03-28 08:29:42 +11:00
|
|
|
|
2020-03-27 22:06:38 +11:00
|
|
|
flatpak run io.github.mirukana.mirage
|
2020-03-20 10:13:08 +11:00
|
|
|
```
|
|
|
|
|
2020-11-21 23:52:47 +11:00
|
|
|
If downloading the dependencies fail due to e.g. a connection error,
|
2020-03-28 08:29:42 +11:00
|
|
|
run `flatpak repair` before retrying.
|
2020-03-20 10:13:08 +11:00
|
|
|
|
2020-03-27 22:39:29 +11:00
|
|
|
If your architecture is not listed on the release page, clone the repository
|
|
|
|
and see [packaging/flatpak/README.md](packaging/flatpak/README.md) to build the
|
2020-03-27 22:06:38 +11:00
|
|
|
package on your machine.
|
2020-03-20 10:13:08 +11:00
|
|
|
|
2020-03-30 17:39:58 +11:00
|
|
|
#### Arch Linux
|
|
|
|
|
2020-06-06 01:35:40 +10:00
|
|
|
Available on the AUR:
|
2021-01-22 14:30:04 +11:00
|
|
|
- [release](https://aur.archlinux.org/packages/matrix-mirage/)
|
|
|
|
- [git master](https://aur.archlinux.org/packages/matrix-mirage-git/)
|
2020-03-30 17:39:58 +11:00
|
|
|
|
|
|
|
Using a AUR helper to install it,
|
2020-06-06 01:35:40 +10:00
|
|
|
in this example [yay](https://github.com/Jguer/yay) for the release version:
|
2020-03-30 17:39:58 +11:00
|
|
|
|
2020-06-06 01:35:40 +10:00
|
|
|
yay -S matrix-mirage
|
2020-03-30 17:39:58 +11:00
|
|
|
|
2020-10-03 22:08:27 +10:00
|
|
|
#### Gentoo
|
|
|
|
|
|
|
|
Available in the [src_prepare overlay](https://gitlab.com/src_prepare/src_prepare-overlay)
|
|
|
|
- [releases](https://gitlab.com/src_prepare/src_prepare-overlay/-/tree/master/net-im/mirage)
|
|
|
|
- [git dev](https://gitlab.com/src_prepare/src_prepare-overlay/-/blob/master/net-im/mirage/mirage-9999.ebuild)
|
|
|
|
|
|
|
|
Installing Mirage:
|
|
|
|
|
|
|
|
1. [Add the overlay](https://gitlab.com/src_prepare/src_prepare-overlay#adding-the-overlay)
|
|
|
|
2. [Unmask](https://wiki.gentoo.org/wiki/Knowledge_Base:Unmasking_a_package) `net-im/mirage`
|
|
|
|
3. Run `emerge net-im/mirage`
|
2020-03-30 17:39:58 +11:00
|
|
|
|
2020-11-21 19:31:26 +11:00
|
|
|
#### Alpine Linux / postmarketOS
|
|
|
|
|
|
|
|
If you are on the Edge channel of Alpine Linux or postmarketOS, Mirage can be
|
|
|
|
installed right from the testing repositry:
|
|
|
|
|
|
|
|
apk add mirage
|
|
|
|
|
|
|
|
If you are unsure about what Edge is and want to read more about it, you can do
|
|
|
|
so on the [Alpine Wiki](https://wiki.alpinelinux.org/wiki/Edge).
|
|
|
|
|
2020-03-20 10:42:49 +11:00
|
|
|
## Manual Installation
|
2020-03-20 10:13:08 +11:00
|
|
|
|
2020-03-21 05:11:47 +11:00
|
|
|
**Qt 5.12+**, **Python 3.6+** (with **pip** to install packages from the
|
|
|
|
[requirements.txt](requirements.txt)), **PyOtherSide 1.5+** and
|
|
|
|
**libolm 3+** are required.
|
|
|
|
The equivalent `-dev` or `-devel` packages are needed, if your distro
|
|
|
|
splits development headers into their own packages.
|
|
|
|
|
2020-07-17 13:03:43 +10:00
|
|
|
To enable X11-specific features on Linux,
|
|
|
|
**libX11** and **libXScrnSaver** / **libXss** are needed.
|
2020-07-17 09:26:21 +10:00
|
|
|
The requirements can be disabled by adding `CONFIG+=no-x11` to the
|
|
|
|
`qmake mirage.pro` command.
|
|
|
|
|
2020-03-21 05:11:47 +11:00
|
|
|
For the Pillow Python package, these dependencies are recommended to support
|
|
|
|
all common image formats:
|
|
|
|
|
|
|
|
- **libjpeg-turbo**
|
|
|
|
- **zlib**
|
|
|
|
- **libtiff**
|
|
|
|
- **libwebp**
|
|
|
|
- **openjpeg2**
|
|
|
|
|
|
|
|
**libmediainfo** is also required for the pymediainfo package.
|
2020-03-20 10:13:08 +11:00
|
|
|
|
2020-03-20 10:42:49 +11:00
|
|
|
### Environment Variables
|
2020-03-20 10:13:08 +11:00
|
|
|
|
|
|
|
To ensure Qt **5** will be used by default, compile using all CPU cores and
|
|
|
|
optimize the build for your machine:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
export QT_SELECT=5
|
|
|
|
export MAKEFLAGS="-j$(nproc)"
|
|
|
|
export CFLAGS="-march=native -O2 -pipe"
|
|
|
|
```
|
|
|
|
|
2020-03-20 10:42:49 +11:00
|
|
|
### Package Manager Dependencies
|
2020-03-20 10:13:08 +11:00
|
|
|
|
|
|
|
#### Alpine Linux 3.9+ / apk
|
|
|
|
|
|
|
|
[PyOtherSide](#installing-pyotherside-manually) and
|
|
|
|
[libolm](#installing-libolm-manually) must be manually installed.
|
|
|
|
|
|
|
|
```sh
|
|
|
|
sudo apk add qt5-qtquickcontrols2-dev qt5-qtsvg-dev qt5-qtimageformats \
|
2020-07-17 09:26:21 +10:00
|
|
|
libx11-dev libxscrnsaver-dev \
|
2020-03-20 10:13:08 +11:00
|
|
|
python3-dev py3-setuptools \
|
|
|
|
build-base git cmake \
|
|
|
|
libjpeg-turbo-dev zlib-dev tiff-dev libwebp-dev openjpeg-dev \
|
|
|
|
libmediainfo-dev
|
2020-03-21 05:11:47 +11:00
|
|
|
|
2020-03-20 10:13:08 +11:00
|
|
|
export PATH="/usr/lib/qt5/bin:$PATH"
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Arch Linux / pacman & AUR
|
|
|
|
|
|
|
|
**libolm** is from the AUR, this example uses
|
|
|
|
[yay](https://github.com/Jguer/yay) to install it like other packages.
|
|
|
|
Alternatively, you can just use `pacman` and
|
|
|
|
[install libolm manually](#installing-libolm-manually).
|
|
|
|
|
|
|
|
```sh
|
|
|
|
yay -Syu qt5-base qt5-declarative qt5-quickcontrols2 qt5-svg \
|
|
|
|
qt5-graphicaleffects qt5-imageformats \
|
2020-07-17 09:26:21 +10:00
|
|
|
libx11 libxss \
|
2020-03-20 10:13:08 +11:00
|
|
|
python python-pip \
|
|
|
|
python-pyotherside \
|
|
|
|
libolm \
|
|
|
|
base-devel git cmake \
|
|
|
|
libjpeg-turbo zlib libtiff libwebp openjpeg2 libmediainfo
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Fedora 30+ / dnf
|
|
|
|
|
|
|
|
```sh
|
|
|
|
sudo dnf groupinstall 'Development Tools'
|
2020-07-01 14:13:54 +10:00
|
|
|
sudo dnf install qt5-devel qt5-qtbase-devel qt5-qtdeclarative-devel \
|
|
|
|
qt5-qtquickcontrols2-devel qt5-qtsvg-devel \
|
|
|
|
qt5-qtgraphicaleffects qt5-qtimageformats \
|
|
|
|
python3-devel python3-pip pyotherside \
|
2020-07-17 09:26:21 +10:00
|
|
|
libX11-devel libXScrnSaver-devel \
|
2020-03-20 10:13:08 +11:00
|
|
|
git cmake \
|
2020-07-01 14:13:54 +10:00
|
|
|
libolm-devel \
|
|
|
|
libjpeg-turbo-devel zlib-devel libtiff-devel libwebp-devel \
|
2020-03-20 10:13:08 +11:00
|
|
|
openjpeg2-devel libmediainfo-devel
|
2020-03-21 05:11:47 +11:00
|
|
|
|
2020-03-20 10:13:08 +11:00
|
|
|
sudo ln -s /usr/bin/qmake-qt5 /usr/bin/qmake
|
|
|
|
```
|
|
|
|
|
2020-03-21 05:11:47 +11:00
|
|
|
#### Gentoo / emerge
|
|
|
|
|
|
|
|
[libolm](#installing-libolm-manually) must be manually installed.
|
|
|
|
|
|
|
|
You might need to prepend the `emerge` command with `USE=bindist`,
|
|
|
|
if `emerge` says so.
|
|
|
|
|
|
|
|
```sh
|
|
|
|
sudo emerge -av qtcore qtdeclarative qtquickcontrols2 \
|
|
|
|
qtsvg qtgraphicaleffects qtimageformats \
|
2020-07-17 09:26:21 +10:00
|
|
|
libX11 libXScrnSaver \
|
2020-03-21 05:11:47 +11:00
|
|
|
dev-python/pip pyotherside \
|
|
|
|
dev-vcs/git cmake \
|
|
|
|
libjpeg-turbo zlib tiff libwebp openjpeg libmediainfo
|
|
|
|
```
|
|
|
|
|
2020-03-20 10:13:08 +11:00
|
|
|
#### Ubuntu 19.04 / apt
|
|
|
|
|
|
|
|
[libolm](#installing-libolm-manually) must be manually installed.
|
|
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
sudo apt update
|
|
|
|
sudo apt install qt5-default qt5-qmake qt5-image-formats-plugins \
|
|
|
|
qml-module-qtquick2 qml-module-qtquick-window2 \
|
|
|
|
qml-module-qtquick-layouts qml-module-qtquick-dialogs \
|
|
|
|
qml-module-qt-labs-platform \
|
2020-05-22 10:00:20 +10:00
|
|
|
qml-module-qtquick-shapes \
|
2020-03-20 10:13:08 +11:00
|
|
|
qtdeclarative5-dev \
|
|
|
|
qtquickcontrols2-5-dev \
|
2020-07-17 09:26:21 +10:00
|
|
|
libx11-dev libxss-dev \
|
2020-03-20 10:13:08 +11:00
|
|
|
python3-dev python3-pip \
|
2021-01-25 12:20:20 +11:00
|
|
|
qml-module-io-thp-pyotherside \
|
2020-03-20 10:13:08 +11:00
|
|
|
build-essential git cmake \
|
|
|
|
libjpeg-turbo8-dev zlib1g-dev libtiff5-dev libwebp-dev \
|
|
|
|
libopenjp2-7-dev libmediainfo-dev
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Ubuntu 19.10+, Debian bullseye / apt
|
|
|
|
|
|
|
|
Follow the steps for [Ubuntu 19.04](#ubuntu-1904--apt), but instead of
|
|
|
|
installing libolm manually:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
sudo apt install libolm-dev
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Void Linux / xbps
|
|
|
|
|
|
|
|
[PyOtherSide](#installing-pyotherside-manually) must be manually installed.
|
|
|
|
|
|
|
|
```sh
|
|
|
|
sudo xbps-install -Su qt5-devel qt5-declarative-devel \
|
|
|
|
qt5-quickcontrols2-devel \
|
|
|
|
qt5-svg-devel qt5-graphicaleffects qt5-imageformats \
|
2020-07-17 09:26:21 +10:00
|
|
|
libx11-devel libXScrnSaver-devel \
|
2020-03-20 10:13:08 +11:00
|
|
|
python3-devel python3-pip \
|
|
|
|
olm-devel \
|
|
|
|
base-devel git cmake \
|
|
|
|
libjpeg-turbo-devel zlib-devel tiff-devel libwebp-devel \
|
|
|
|
libopenjpeg2-devel libmediainfo-devel
|
|
|
|
```
|
|
|
|
|
2020-03-20 10:42:49 +11:00
|
|
|
### Installing PyOtherSide Manually
|
2020-03-20 10:13:08 +11:00
|
|
|
|
|
|
|
Skip this section if you already installed it from your
|
|
|
|
distro's package manager.
|
|
|
|
|
|
|
|
```sh
|
|
|
|
git clone https://github.com/thp/pyotherside
|
|
|
|
cd pyotherside
|
|
|
|
make clean
|
|
|
|
qmake
|
|
|
|
make
|
|
|
|
sudo make install
|
|
|
|
```
|
|
|
|
|
2020-03-20 10:42:49 +11:00
|
|
|
### Installing libolm Manually
|
2020-03-20 10:13:08 +11:00
|
|
|
|
|
|
|
Skip this section if you already installed it from your
|
|
|
|
distro's package manager.
|
|
|
|
|
|
|
|
```sh
|
|
|
|
git clone https://gitlab.matrix.org/matrix-org/olm/
|
|
|
|
cd olm
|
|
|
|
cmake . -Bbuild
|
|
|
|
cmake --build build
|
|
|
|
sudo make install
|
|
|
|
```
|
|
|
|
|
|
|
|
|
2020-05-31 09:37:35 +10:00
|
|
|
### Installing or updating Mirage
|
2020-03-20 10:13:08 +11:00
|
|
|
|
2020-05-31 09:37:35 +10:00
|
|
|
After following the above sections instructions depending on your system;
|
|
|
|
clone the repository, initalize the submodules,
|
|
|
|
install the python dependencies, compile and install:
|
2020-03-20 10:13:08 +11:00
|
|
|
|
|
|
|
```sh
|
2020-05-31 09:37:35 +10:00
|
|
|
git clone https://github.com/mirukana/mirage
|
2020-03-20 10:13:08 +11:00
|
|
|
cd mirage
|
2020-05-31 09:37:35 +10:00
|
|
|
|
|
|
|
git pull
|
|
|
|
git submodule update --init submodules/*
|
2020-03-20 10:13:08 +11:00
|
|
|
pip3 install --user -Ur requirements.txt
|
|
|
|
|
|
|
|
qmake mirage.pro
|
|
|
|
make
|
|
|
|
sudo make install
|
|
|
|
```
|
|
|
|
|
2020-07-17 13:03:43 +10:00
|
|
|
To compile without the X11-specific dependencies and features on Linux,
|
2020-07-17 09:26:21 +10:00
|
|
|
run `qmake mirage.pro CONFIG+=no-x11` instead of `qmake mirage.pro`.
|
|
|
|
|
2020-03-20 10:13:08 +11:00
|
|
|
If everything went fine, run `mirage` to start.
|
|
|
|
|
|
|
|
|
2020-03-27 22:06:38 +11:00
|
|
|
### Common Issues
|
2020-03-20 10:13:08 +11:00
|
|
|
|
2020-03-27 22:06:38 +11:00
|
|
|
#### cffi version mismatch
|
2020-03-20 10:13:08 +11:00
|
|
|
|
|
|
|
When installing the python dependencies, if you get a version mismatch error
|
|
|
|
related to `cffi`, try:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
pip3 install --user --upgrade --force-reinstall cffi
|
|
|
|
```
|
|
|
|
|
2020-09-04 02:55:56 +10:00
|
|
|
#### Type XYZ unavailable
|
2020-03-20 10:13:08 +11:00
|
|
|
|
2020-09-04 02:55:56 +10:00
|
|
|
If the application exits without showing any window and you get a terminal
|
|
|
|
message like this:
|
2020-03-20 10:13:08 +11:00
|
|
|
|
2020-09-04 02:55:56 +10:00
|
|
|
file:///.../src/gui/Window.qml:83:5: Type PythonRootBridge unavailable
|
|
|
|
|
|
|
|
then a QML component/type failed to import due to either a missing
|
|
|
|
dependency or a programming error.
|
|
|
|
If the type has `Python` in its name, ensure PyOtherSide is correctly
|
|
|
|
installed. You should see a similar message:
|
2020-03-20 10:13:08 +11:00
|
|
|
|
|
|
|
Got library name: "/usr/lib/qt5/qml/io/thp/pyotherside/libpyothersideplugin.so"
|
|
|
|
|
|
|
|
To ensure the correct permissions are set for the PyOtherSide plugin files:
|
|
|
|
|
2020-09-04 02:55:56 +10:00
|
|
|
```sh
|
|
|
|
sudo chmod -R 755 /usr/lib/qt5/qml/io
|
|
|
|
sudo chmod 644 /usr/lib/qt5/qml/io/thp/pyotherside/*
|
|
|
|
sudo chmod 755 /usr/lib/qt5/qml/io/thp/pyotherside/*.so
|
|
|
|
```
|
2020-03-20 10:13:08 +11:00
|
|
|
|
|
|
|
Note that the Qt lib path might be `/usr/lib/qt/` instead of `/usr/lib/qt5/`,
|
|
|
|
depending on the distro.
|