ref: 046ce1b894347660cbcd90cf77c9054d9cd7db88
parent: b379f65e60ac3a6a21ac97a8e3a8d667a8c1dbc8
author: Jonne Kokkonen <jonne.kokkonen@gmail.com>
date: Tue Mar 4 03:55:03 EST 2025
additional appimage generation for linux build (#184)
--- a/.github/workflows/build-ubuntu.yml
+++ b/.github/workflows/build-ubuntu.yml
@@ -1,5 +1,9 @@
name: m8c linux x64 build
+env:
+ SDL_VERSION: 3.2.6
+ SDL_SHA256: "096a0b843dd1124afda41c24bd05034af75af37e9a1b9d205cc0a70193b27e1a SDL3-3.2.6.tar.gz"
+
on:
push:
pull_request:
@@ -8,27 +12,33 @@
jobs:
build-linux:
- env:
- SDL_VERSION: 3.2.4
- runs-on: ubuntu-latest
+ runs-on: ubuntu-22.04
name: linux-x86_64
steps:
- name: 'Install dependencies'
run: |
sudo apt-get update
- sudo apt-get install --fix-missing build-essential libserialport-dev zip git make pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev libaudio-dev libjack-dev libsndio-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev
+ sudo apt-get install --fix-missing build-essential libserialport-dev zip git make pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev libaudio-dev libjack-dev libsndio-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev libpipewire-0.3-dev libwayland-dev libdecor-0-dev
+ - name: 'Checkout'
+ uses: actions/checkout@v4
+
+ - name: Set current date as env variable
+ run: echo "NOW=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
+
- name: 'Cache SDL3 files'
id: cache-x86_64-sdl3-files
uses: actions/cache@v4
with:
- path: 'SDL3-3.2.4'
+ path: 'SDL3-${{ env.SDL_VERSION }}'key: linux-x86_64-sdl3-files
- name: 'Download SDL3 sources'
if: steps.cache-x86_64-sdl3-files.outputs.cache-hit != 'true'
run: |
- (curl https://www.libsdl.org/release/SDL3-$SDL_VERSION.tar.gz || curl -L https://github.com/libsdl-org/SDL/releases/download/release-$SDL_VERSION/SDL3-$SDL_VERSION.tar.gz) | tar zxvf -
+ (curl -O https://www.libsdl.org/release/SDL3-$SDL_VERSION.tar.gz || curl -O -L https://github.com/libsdl-org/SDL/releases/download/release-$SDL_VERSION/SDL3-$SDL_VERSION.tar.gz)
+ if ! echo $SDL_SHA256 | sha256sum -c --status -; then echo "SDL archive checksum failed"; exit 1; fi
+ tar zxvf SDL3-$SDL_VERSION.tar.gz
- name: 'Build SDL3'
if: steps.cache-x86_64-sdl3-files.outputs.cache-hit != 'true'
@@ -40,16 +50,10 @@
sudo cmake --install build_x86_64
popd
-
- - name: 'Checkout'
- uses: actions/checkout@v4
-
- - name: Set current date as env variable
- run: echo "NOW=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
-
- - name: 'Build package'
+ - name: 'Build binary'
run: |
make
+
- name: 'Upload artifact'
uses: actions/upload-artifact@v4
with:
@@ -59,4 +63,15 @@
README.md
AUDIOGUIDE.md
m8c
- gamecontrollerdb.txt
\ No newline at end of file
+ gamecontrollerdb.txt
+
+ - name: 'Build AppImage'
+ run: |
+ bash package/appimage/package.sh
+
+ - name: 'Upload artifact'
+ uses: actions/upload-artifact@v4
+ with:
+ name: m8c-${{ env.NOW }}-linux-x86_64.AppImage+ path: |
+ m8c*.AppImage
--- /dev/null
+++ b/package/appimage/icon.svg
@@ -1,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 18v-6a9 9 0 0 1 18 0v6"></path><path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path></svg>
\ No newline at end of file
--- /dev/null
+++ b/package/appimage/m8c.appdata.xml
@@ -1,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component type="desktop-application">
+ <id>m8c</id>
+ <metadata_license>MIT</metadata_license>
+ <project_license>MIT</project_license>
+ <name>m8c</name>
+ <summary>A Dirtywave M8 remote client</summary>
+ <description>
+ <p>m8c is a client for Dirtywave M8 tracker's remote (headless) mode and can mirror the display and route audio.</p>
+ </description>
+ <launchable type="desktop-id">m8c.desktop</launchable>
+ <url type="homepage">https://m8c.laamaa.fi</url>
+ <screenshots>
+ <screenshot type="default">
+ <image></image>
+ </screenshot>
+ </screenshots>
+ <provides>
+ <id>m8c.desktop</id>
+ </provides>
+</component>
\ No newline at end of file
--- /dev/null
+++ b/package/appimage/m8c.desktop
@@ -1,0 +1,9 @@
+[Desktop Entry]
+Type=Application
+Name=m8c
+Comment=
+Exec=m8c
+Icon=icon
+Terminal=false
+Categories=Audio
+X-AppImage-Version=1.0
--- /dev/null
+++ b/package/appimage/package.sh
@@ -1,0 +1,62 @@
+#!/bin/bash
+set -xe
+
+# Ubuntu 20.04
+
+APP=m8c
+VERSION=2.0.0
+
+if [ "$1" == "build-sdl" ]; then
+
+ ## Build SDL
+ SDL_VERSION=3.2.6
+ SDL_SHA256="096a0b843dd1124afda41c24bd05034af75af37e9a1b9d205cc0a70193b27e1a SDL3-3.2.6.tar.gz"
+
+ sudo apt-get install build-essential git make \
+ pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev \
+ libaudio-dev libjack-dev libsndio-dev libx11-dev libxext-dev \
+ libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev \
+ libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \
+ libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev libserialport-dev python2
+
+ if [ ! -d SDL3-$SDL_VERSION ]; then
+
+ curl -O https://www.libsdl.org/release/SDL3-$SDL_VERSION.tar.gz
+
+ if ! echo $SDL_SHA256 | sha256sum -c --status -; then
+ echo "SDL archive checksum failed" >&2
+ exit 1
+ fi
+
+ tar zxvf SDL3-$SDL_VERSION.tar.gz
+ pushd SDL3-$SDL_VERSION
+ mkdir build_x86_64
+ cmake -S . -B build_x86_64
+ cmake --build build_x86_64
+ sudo cmake --install build_x86_64
+ popd
+
+ fi
+
+fi
+
+if [ "$2" == "build-m8c" ]; then
+make
+fi
+
+mkdir -p $APP.AppDir/usr/bin
+cp m8c $APP.AppDir/usr/bin/
+cp gamecontrollerdb.txt $APP.AppDir
+
+mkdir -p $APP.AppDir/usr/share/applications/ $APP.AppDir/usr/share/metainfo/
+cp package/appimage/m8c.desktop $APP.AppDir/usr/share/applications/
+#appstreamcli seems to crash
+#cp package/appimage/m8c.appdata.xml $APP.AppDir/usr/share/metainfo/
+cp package/appimage/icon.svg $APP.AppDir
+
+wget -c https://github.com/$(wget -q https://github.com/probonopd/go-appimage/releases/expanded_assets/continuous -O - | grep "appimagetool-.*-x86_64.AppImage" | head -n 1 | cut -d '"' -f 2)
+chmod +x ./appimagetool-*.AppImage
+./appimagetool-*.AppImage deploy ./$APP.AppDir/usr/share/applications/m8c.desktop
+./appimagetool-*.AppImage ./$APP.AppDir
+
+
--
⑨