Fix AppImage: Grammar-Dateien und Abhängigkeiten korrekt bündeln

Das AppImage crashte beim Start mit SIGABRT weil die SIP-Grammar-Dateien
(.belr) fehlten und keine System-Libraries gebündelt waren. Jetzt werden
alle Abhängigkeiten (Qt6, Audio, Crypto, Codecs) und Grammar-Dateien
vollständig eingepackt. README mit AppImage-Build-Anleitung ergänzt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Eduard Wisch 2026-02-18 07:38:52 +01:00
parent 3b3bb966d4
commit 063fc6fc08
2 changed files with 65 additions and 0 deletions

View file

@ -10,6 +10,19 @@ Group changes to describe their impact on the project, as follows:
Fixed for any bug fixes.
Security to invite users to upgrade in case of vulnerabilities.
## [6.2.1-pre.8] - 2026-02-18
### Fixed
- AppImage: Fehlende Grammar-Dateien (sip_grammar.belr, sdp_grammar.belr, cpim_grammar.belr, ics_grammar.belr, identity_grammar.belr, mwi_grammar.belr) werden jetzt korrekt gebündelt. Der SIP-Parser (belle-sip) konnte ohne diese Dateien nicht initialisieren → SIGABRT beim Start.
- AppImage: Alle Abhängigkeiten (Qt6, Audio, Crypto, Codecs, etc.) werden jetzt vollständig im AppImage gebündelt. Vorher war das AppImage auf System-Libraries angewiesen und konnte nach System-Updates brechen.
### Changed
- AppImage-Größe: 78 MB → 135 MB (weil jetzt alle Libs korrekt gebündelt sind)
- AppRun-Script: Setzt LD_LIBRARY_PATH, QT_PLUGIN_PATH und QML2_IMPORT_PATH korrekt auf gebündelte Pfade
- Qt-Plugins (Wayland, XCB, Multimedia, TLS, Imageformats) werden mitgeliefert
- QML-Module (QtQuick, QtCore, QtQml, QtMultimedia) werden mitgeliefert
## [6.1.0] - Unreleased
6.1.0 release is the complete version of the new Linphone Desktop with all features including chat

View file

@ -308,6 +308,58 @@ The default build is very long. It is prefered to use the Ninja generator `-G "N
5. The project folder will be in the build directory and binaries should be in the OUTPUT folder.
## AppImage erstellen (Linux)
Das AppImage muss **alle Abhängigkeiten vollständig bündeln** keine System-Libraries voraussetzen.
### Voraussetzungen
- Erfolgreicher Build im `build/OUTPUT/` Verzeichnis
- `linuxdeploy` und `linuxdeploy-plugin-qt` (werden automatisch heruntergeladen)
- `appimagetool` (falls linuxdeploy das AppImage nicht direkt erstellen kann)
### Build-Schritte
```bash
cd build
bash ../cmake/install/create_appimage.sh linphone Linphone-x86_64 /usr
```
### Wichtige Hinweise
**Grammar-Dateien prüfen:** Das AppImage MUSS folgende `.belr`-Dateien unter `usr/share/belr/grammars/` enthalten:
- `sip_grammar.belr` (SIP-Parser **ohne diese crasht die App beim Start!**)
- `sdp_grammar.belr` (SDP-Parser)
- `cpim_grammar.belr`, `ics_grammar.belr`, `identity_grammar.belr`, `mwi_grammar.belr`
- `vcard_grammar.belr`, `vcard3_grammar.belr`
Diese Dateien kommen aus dem linphone-sdk Build (`OUTPUT/share/belr/grammars/`).
**Gebündelte Abhängigkeiten prüfen:** Nach dem Build sicherstellen, dass folgende Libs im AppImage enthalten sind:
- Qt6 (Core, Quick, Widgets, Gui, Network, DBus, Svg, Qml, etc.)
- Qt-Plugins (platforms/wayland, xcb; imageformats; tls; multimedia)
- QML-Module (QtQuick, QtCore, QtQml, QtMultimedia)
- Linphone-Libs (liblinphone, libbelle-sip, libbctoolbox, libbelr, libmediastreamer2, etc.)
- Audio (libopus, libspeex, libgsm)
- Crypto (libmbedtls, libmbedcrypto, libdecaf, libbzrtp)
**Verifizierung:**
```bash
# AppImage extrahieren und Abhängigkeiten prüfen
./Linphone-x86_64.AppImage --appimage-extract
LD_LIBRARY_PATH=squashfs-root/usr/lib ldd squashfs-root/usr/bin/linphone | grep "not found"
# Sollte NICHTS ausgeben alle Libs müssen aufgelöst werden
```
### Fehlerbehebung
| Symptom | Ursache | Lösung |
|:---|:---|:---|
| SIGABRT beim Start, `bctbx_logv → abort` | Fehlende Grammar-Dateien | `.belr`-Dateien in `usr/share/belr/grammars/` prüfen |
| `strip: unknown type [0x13] section .relr.dyn` | Alte strip-Version in linuxdeploy | Harmlose Warnung, ignorieren |
| Kein AppImage generiert | Desktop-File/Icon fehlt im AppDir | `.desktop` + Icon vor linuxdeploy-Aufruf bereitstellen |
| App startet, aber kein Fenster | QML-Module fehlen | Qt-QML-Module in `usr/qml/` prüfen |
## Specific instructions for Linux
```bash