Skip to content

Latest commit

 

History

History
194 lines (151 loc) · 4.84 KB

File metadata and controls

194 lines (151 loc) · 4.84 KB

Building PureMaps (Tested on Debian 12 and Ubuntu 24.04)

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.


Dependencies

In addition to general QML development packages, the following specific dependencies are required:

When building with flatpak-builder, dependencies will be handled via Flatpak manifest.


Install System Packages

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-plugins

Build Third-Party Dependencies

Abseil

git 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 ../..

S2Geometry

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 ../..

Nemo DBus (for Kirigami)

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 ..

PyOtherSide

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 ..

MapLibre GL Native Qt

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 ../..

Mapbox GL QML

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 ../..

Mimic1 (TTS Engine)

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 ..

PicoTTS

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 ../../

Build PureMaps

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

Notes on Build Options

  • To run without installing, add -DRUN_FROM_SOURCE=ON and avoid using make install.

  • GUI Platform can be specified using -DFLAVOR=:

    • silica – Recommended for Sailfish OS
    • kirigami – Use on KDE Plasma systems or other environments where a responsive Qt/KDE-style UI is desired
    • qtcontrols – Use on generic Qt platforms
    • uuitk – Use when targeting Ubuntu Touch / Lomiri–based systems
  • Recommended: use an out-of-source build with a separate build/ directory.


Packaging and Defaults

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.


Run PureMaps

pure-maps