This document covers the full process for building and installing PureMaps and its dependencies from source. It applies to common Linux distributions and has been tested on Debian 12 and Ubuntu 24.04.
In addition to general QML development packages, the following specific dependencies are required:
- PyOtherSide
- PyXDG
- MapLibre Native Qt
- Mapbox GL QML
- GPXPy (available as submodule)
- S2 Geometry Library
- Nemo DBus (needed for Kirigami platform)
When building with flatpak-builder, dependencies will be handled via Flatpak manifest.
sudo apt update
sudo apt install -y git build-essential cmake ninja-build pkg-config \
qt5-qmake libqt5core5a libqt5dbus5 qtbase5-dev qtdeclarative5-dev \
python3 python3-pip python3-setuptools python3-xdg \
libpcre2-dev libasound2-dev libssl-dev \
libtool automake autoconf libxml2-dev libxslt1-dev \
libgeoip-dev libgl1-mesa-dev libgles2-mesa-dev \
libicu-dev libpopt-dev libqt5svg5-dev qtpositioning5-dev \
qttools5-dev gettext qtquickcontrols2-5-dev \
qml-module-qtpositioning qml-module-qtmultimedia \
qml-module-qtsensors libqt5location5-pluginsgit clone https://github.com/abseil/abseil-cpp.git -b lts_2024_07_22
cd abseil-cpp
mkdir build && cd build
cmake -DBUILD_SHARED_LIBS=ON -G Ninja ..
ninja -j$(nproc)
sudo ninja install
cd ../..git clone --depth 1 https://github.com/google/s2geometry.git -b v0.12.0
cd s2geometry
mkdir build && cd build
cmake -DBUILD_SHARED_LIBS=ON -DBUILD_PYTHON=OFF -DBUILD_TESTS=OFF -G Ninja ..
ninja -j$(nproc)
sudo ninja install
cd ../..wget https://github.com/sailfishos/nemo-qml-plugin-dbus/archive/refs/tags/2.1.27.tar.gz
tar -xzvf 2.1.27.tar.gz
cd nemo-qml-plugin-dbus-2.1.27
qmake
make -j$(nproc)
sudo make install
cd ..wget https://github.com/thp/pyotherside/archive/1.5.9.tar.gz
tar -xzvf 1.5.9.tar.gz
cd pyotherside-1.5.9
qmake
make -j$(nproc)
sudo make install
cd ..git clone --depth 1 --shallow-submodules --recurse-submodules --jobs 8 -b v3.0.0 https://github.com/maplibre/maplibre-native-qt.git
cd maplibre-native-qt
mkdir build && cd build
cmake -DMLN_QT_WITH_WIDGETS=OFF -DMLN_QT_WITH_LOCATION=OFF \
-DMLN_QT_WITH_INTERNAL_ICU=ON -DMLN_WITH_WERROR=OFF -G Ninja ..
ninja -j$(nproc)
sudo ninja install
cd ../..git clone --depth 1 https://github.com/rinigus/mapbox-gl-qml.git -b 3.0.0
cd mapbox-gl-qml
mkdir build && cd build
cmake -DQT_INSTALL_QML=$(qmake -query QT_INSTALL_QML) -G Ninja ..
ninja -j$(nproc)
sudo ninja install
cd ../..git clone --depth 1 https://github.com/MycroftAI/mimic1.git
cd mimic1
./autogen.sh
./configure --with-audio=none
make -j$(nproc)
sudo make install
cd ..git clone --depth 1 https://github.com/ihuguet/picotts.git
cd picotts
cd pico
./autogen.sh
./configure --prefix=/usr
make -j$(nproc)
sudo make install
cd ../../git clone --recursive https://github.com/rinigus/pure-maps.git
cd pure-maps
# to get current flatpak version: git checkout 3.4.2
cp poor/apikeys.py tools/apikeys.py
mkdir build && cd build
cmake -DFLAVOR=kirigami -DAPP_NAME=pure-maps \
-DUSE_BUNDLED_GPXPY=ON -DMAPMATCHING_CHECK_RUNTIME=OFF \
-DMAPMATCHING_AVAILABLE=ON -DUSE_BUNDLED_GEOCLUE2=ON -G Ninja ..
ninja -j$(nproc)
sudo ninja install-
To run without installing, add
-DRUN_FROM_SOURCE=ONand avoid usingmake install. -
GUI Platform can be specified using
-DFLAVOR=:silica– Recommended for Sailfish OSkirigami– Use on KDE Plasma systems or other environments where a responsive Qt/KDE-style UI is desiredqtcontrols– Use on generic Qt platformsuuitk– Use when targeting Ubuntu Touch / Lomiri–based systems
-
Recommended: use an out-of-source build with a separate
build/directory.
To configure default services for packaging:
cmake -DDEFAULT_PROFILE=online \
-DDEFAULT_BASEMAP=osm \
-DDEFAULT_GEOCODER=photon \
-DDEFAULT_GUIDE=guideservice \
-DDEFAULT_ROUTER=graphhopper ..Each provider refers to its corresponding JSON or Python configuration file in PureMaps.
pure-maps