Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 126 additions & 0 deletions .github/workflows/linux-packages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
name: Linux packages

on:
push:
pull_request:
workflow_dispatch:

jobs:
appimage:
# Built on the oldest supported Ubuntu so the AppImage runs on newer systems too.
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6

- uses: jurplel/install-qt-action@v4
with:
version: '6.8.3'
modules: 'qtmultimedia'

- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgl1-mesa-dev libxcb-cursor0 libxkbcommon-x11-0 xvfb

- name: Build
run: |
qmake PREFIX=/usr mapmap.pro
make -j$(nproc)
make install INSTALL_ROOT=AppDir

- name: Make AppImage
env:
APPIMAGE_EXTRACT_AND_RUN: 1
EXTRA_QT_MODULES: multimedia
run: |
export LINUXDEPLOY_OUTPUT_VERSION=$(sed -n 's/^MAPMAP_VERSION = //p' mapmap.pro)
wget -q https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
wget -q https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
chmod +x linuxdeploy*.AppImage
./linuxdeploy-x86_64.AppImage --appdir AppDir --plugin qt --output appimage

- name: Check the AppImage
run: |
find AppDir -name 'libffmpegmediaplugin.so' | grep -q . || { echo "video plugin missing"; exit 1; }
# The app should still be running when timeout stops it (exit 124).
xvfb-run -a timeout 10 ./MapMap-*-x86_64.AppImage --appimage-extract-and-run || test $? -eq 124

- uses: actions/upload-artifact@v7
with:
name: MapMap-AppImage
path: MapMap-*-x86_64.AppImage

deb:
# Each distribution names its Qt packages differently, so each gets its own .deb.
strategy:
matrix:
distro: ['ubuntu:24.04', 'ubuntu:26.04', 'debian:13']
runs-on: ubuntu-24.04
container: ${{ matrix.distro }}
env:
DEBIAN_FRONTEND: noninteractive
steps:
- uses: actions/checkout@v6

- name: Install build dependencies
run: |
apt-get update
apt-get install -y build-essential debhelper qmake6 qt6-base-dev libqt6opengl6-dev qt6-multimedia-dev qt6-tools-dev xvfb xauth

- id: name
run: echo "suffix=$(echo '${{ matrix.distro }}' | tr ':' '-')" >> "$GITHUB_OUTPUT"

- name: Build
run: |
dpkg-buildpackage -b -us -uc
for f in ../mapmap_*_amd64.deb; do mv "$f" "$(basename "$f" _amd64.deb)_${{ steps.name.outputs.suffix }}_amd64.deb"; done

- name: Check the package
run: |
apt-get install -y ./mapmap_*.deb
xvfb-run -a timeout 10 mapmap || test $? -eq 124

- uses: actions/upload-artifact@v7
with:
name: MapMap-deb-${{ steps.name.outputs.suffix }}
path: mapmap_*.deb

flatpak:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6

- name: Install Flatpak tools
run: |
sudo apt-get update
sudo apt-get install -y flatpak flatpak-builder
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

- name: Build
run: |
flatpak-builder --user --install-deps-from=flathub --repo=repo build packaging/flatpak/info.mapmap.MapMap.yml
flatpak build-bundle repo MapMap.flatpak info.mapmap.MapMap --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo

- uses: actions/upload-artifact@v7
with:
name: MapMap-flatpak
path: MapMap.flatpak

release:
# Attaches the three packages to the GitHub release when a version tag is pushed.
if: startsWith(github.ref, 'refs/tags/')
needs: [appimage, deb, flatpak]
runs-on: ubuntu-24.04
permissions:
contents: write
steps:
- uses: actions/download-artifact@v7
with:
merge-multiple: true

- uses: softprops/action-gh-release@v2
with:
files: |
MapMap-*-x86_64.AppImage
mapmap_*.deb
MapMap.flatpak
14 changes: 14 additions & 0 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,20 @@ Install basic development tools for Qt 6 projects:
sudo pacman -S qt6-tools qt6-multimedia qt6-base
```

### Linux packages

The "Linux packages" workflow builds an AppImage, a Flatpak bundle and a .deb each for Ubuntu 24.04, Ubuntu 26.04 and Debian 13 on every push, and attaches them to the GitHub release when a version tag is pushed. To build them locally:

```
# .deb, for the distribution you build it on
dpkg-buildpackage -b -us -uc

# Flatpak
flatpak-builder --user --install-deps-from=flathub --install build packaging/flatpak/info.mapmap.MapMap.yml
```

The AppImage steps are in `.github/workflows/linux-packages.yml`.

Build on macOS
--------------

Expand Down
5 changes: 5 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
mapmap (1.0.0~alpha.1) unstable; urgency=medium

* Package for Debian and Ubuntu.

-- MapMap team <mapmap@artpluscode.com> Fri, 18 Sep 2026 11:34:54 -0400
21 changes: 21 additions & 0 deletions debian/control
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
Source: mapmap
Section: video
Priority: optional
Maintainer: MapMap team <mapmap@artpluscode.com>
Build-Depends: debhelper-compat (= 13),
qmake6,
qt6-base-dev,
libqt6opengl6-dev,
qt6-multimedia-dev,
qt6-tools-dev
Standards-Version: 4.7.0
Homepage: https://mapmapteam.github.io/
Vcs-Browser: https://github.com/mapmapteam/mapmap

Package: mapmap
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: video projection mapping editor
MapMap is a free video mapping software for artists and small teams.
Draw quads, triangles, meshes and ellipses over the surfaces you project
on, then fill them with video, images, colours or a camera feed.
9 changes: 9 additions & 0 deletions debian/copyright
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: MapMap
Source: https://github.com/mapmapteam/mapmap

Files: *
Copyright: 2013-2026 Sofian Audry, Alexandre Quessy, Dame Diongue and MapMap contributors
License: GPL-3.0+
On Debian systems, the full text of the GNU General Public License
version 3 can be found in /usr/share/common-licenses/GPL-3.
10 changes: 10 additions & 0 deletions debian/rules
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/usr/bin/make -f

%:
dh $@

override_dh_auto_configure:
qmake6 PREFIX=/usr mapmap.pro

override_dh_auto_install:
$(MAKE) install INSTALL_ROOT=$(CURDIR)/debian/mapmap
1 change: 1 addition & 0 deletions debian/source/format
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.0 (native)
11 changes: 11 additions & 0 deletions mapmap.pro
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,17 @@ system($$QMAKE_LRELEASE mapmap.pro) # Run lrelease
# Linux-specific:
unix:!macx {
QMAKE_CXXFLAGS += -Wno-expansion-to-defined

# "make install" layout shared by the AppImage, Flatpak and .deb builds.
isEmpty(PREFIX): PREFIX = /usr
target.path = $$PREFIX/bin
desktop.files = resources/texts/info.mapmap.MapMap.desktop
desktop.path = $$PREFIX/share/applications
metainfo.files = resources/texts/info.mapmap.MapMap.metainfo.xml
metainfo.path = $$PREFIX/share/metainfo
icon.path = $$PREFIX/share/icons/hicolor/scalable/apps
icon.extra = install -Dm644 $$PWD/resources/images/logo/mapmap.svg $(INSTALL_ROOT)$$PREFIX/share/icons/hicolor/scalable/apps/info.mapmap.MapMap.svg
INSTALLS += target desktop metainfo icon
}

CONFIG -= qtquickcompiler
Expand Down
26 changes: 26 additions & 0 deletions packaging/flatpak/info.mapmap.MapMap.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
app-id: info.mapmap.MapMap
runtime: org.kde.Platform
runtime-version: '6.11'
sdk: org.kde.Sdk
command: mapmap
finish-args:
- --share=ipc
- --share=network
- --socket=fallback-x11
- --socket=wayland
- --device=all
- --filesystem=home
modules:
- name: mapmap
buildsystem: simple
build-commands:
- qmake PREFIX=/app mapmap.pro
- make -j$FLATPAK_BUILDER_N_JOBS
- make install
sources:
- type: dir
path: ../..
skip:
- .flatpak-builder
- build
- repo
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ Terminal=false
StartupNotify=true
Type=Application
Categories=Qt;AudioVideo;Video;
Icon=/usr/share/icons/hicolor/scalable/apps/mapmap.svg
Icon=info.mapmap.MapMap
29 changes: 29 additions & 0 deletions resources/texts/info.mapmap.MapMap.metainfo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>info.mapmap.MapMap</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0-or-later</project_license>
<name>MapMap</name>
<summary>Video projection mapping editor</summary>
<description>
<p>MapMap is a free video mapping software for artists and small teams. Draw quads, triangles, meshes and ellipses over the surfaces you project on, then fill them with video, images, colours or a camera feed.</p>
</description>
<launchable type="desktop-id">info.mapmap.MapMap.desktop</launchable>
<provides>
<binary>mapmap</binary>
</provides>
<url type="homepage">https://mapmapteam.github.io/</url>
<url type="bugtracker">https://github.com/mapmapteam/mapmap/issues</url>
<url type="vcs-browser">https://github.com/mapmapteam/mapmap</url>
<developer id="info.mapmap">
<name>The MapMap team</name>
</developer>
<categories>
<category>AudioVideo</category>
<category>Video</category>
</categories>
<content_rating type="oars-1.1"/>
<releases>
<release version="1.0.0~alpha.1" date="2026-09-18" type="development"/>
</releases>
</component>