Pivot build-flatpak workflow to manual packaging, bypassing bwrap restrictions

This commit is contained in:
2026-05-29 01:17:17 +02:00
parent f93f2b2f56
commit 586b42a97b
2 changed files with 64 additions and 53 deletions
+64 -20
View File
@@ -39,35 +39,79 @@ jobs:
echo "Gefundene Version: $VERSION" echo "Gefundene Version: $VERSION"
echo "URL: $DOWNLOAD_URL" echo "URL: $DOWNLOAD_URL"
- name: Calculate SHA256 of the .deb - name: Download O3DE .deb
run: | run: |
echo "Lade $DOWNLOAD_URL herunter..." echo "Lade $DOWNLOAD_URL herunter..."
curl -L -o o3de.deb "$DOWNLOAD_URL" curl -L -o o3de.deb "$DOWNLOAD_URL"
SHA256=$(sha256sum o3de.deb | awk '{print $1}') echo "Berechne Checksumme..."
echo "SHA256=$SHA256" >> $GITHUB_ENV sha256sum o3de.deb
echo "Checksumme: $SHA256"
# Die Datei lokal lassen, damit flatpak-builder sie direkt verwenden kann - name: Build Flatpak (Manual Mode)
# wenn wir in der Template auf file:// verweisen. Da flatpak-builder URLs cached,
# verwenden wir jedoch URL und löschen die lokale Datei um Platz zu sparen.
rm o3de.deb
- name: Prepare Flatpak Manifest
run: |
sed -e "s|URL_PLACEHOLDER|$DOWNLOAD_URL|g" \
-e "s|SHA256_PLACEHOLDER|$SHA256|g" \
org.o3de.O3DE.yml.template > org.o3de.O3DE.yml
cat org.o3de.O3DE.yml
- name: Build Flatpak
run: | run: |
# Flathub hinzufügen, um Runtimes herunterladen zu können # Flathub hinzufügen, um Runtimes herunterladen zu können
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user -y flathub org.freedesktop.Platform//23.08 org.freedesktop.Sdk//23.08 flatpak install --user -y flathub org.freedesktop.Platform//23.08 org.freedesktop.Sdk//23.08
# Flatpak bauen und direkt in das lokale OSTree-Repository "repo" exportieren # 1. Initialisiere den Erstellungsordner
# --disable-rofiles-fuse ist essentiell für CI-Umgebungen (Docker), in denen /dev/fuse nicht verfügbar ist flatpak build-init --user build-dir org.o3de.O3DE org.freedesktop.Sdk org.freedesktop.Platform 23.08
flatpak-builder --repo=repo --force-clean --disable-rofiles-fuse build-dir org.o3de.O3DE.yml
# 2. Entpacke das .deb Paket
mkdir deb-extract
cd deb-extract
ar x ../o3de.deb
tar -xf data.tar.*
# 3. Kopiere die Dateien in den build-dir/files/ Ordner (entspricht /app im Flatpak)
mkdir -p ../build-dir/files/opt
if [ -d opt ]; then
cp -a opt/* ../build-dir/files/opt/
fi
if [ -d usr ]; then
cp -a usr/* ../build-dir/files/
fi
# 4. Desktop-Datei umbenennen und anpassen (für Menü-Integration)
if [ -d ../build-dir/files/share/applications ]; then
cd ../build-dir/files/share/applications
DESKTOP_FILE=$(find . -name "*.desktop" | head -n 1)
if [ -n "$DESKTOP_FILE" ]; then
mv "$DESKTOP_FILE" org.o3de.O3DE.desktop
sed -i 's/^Icon=.*/Icon=org.o3de.O3DE/' org.o3de.O3DE.desktop
fi
cd -
fi
# 5. Icons umbenennen, damit sie zur App-ID passen
if [ -d ../build-dir/files/share/icons ]; then
find ../build-dir/files/share/icons -name "*o3de*" | while read icon; do
dir=$(dirname "$icon")
ext="${icon##*.}"
mv "$icon" "$dir/org.o3de.O3DE.$ext"
done
fi
cd ..
# Wrapper Skript kopieren und ausführbar machen
mkdir -p build-dir/files/bin
cp o3de-wrapper.sh build-dir/files/bin/o3de-wrapper.sh
chmod +x build-dir/files/bin/o3de-wrapper.sh
# 6. Abschließen des Erstellungsordners
flatpak build-finish build-dir \
--command=o3de-wrapper.sh \
--share=network \
--share=ipc \
--socket=x11 \
--socket=wayland \
--device=dri \
--filesystem=host
# 7. Exportiere in das lokale OSTree-Repository "repo"
flatpak build-export repo build-dir
# Aufräumen, um Platz zu sparen
rm -rf o3de.deb deb-extract build-dir
- name: Generate Static OSTree Summary - name: Generate Static OSTree Summary
run: | run: |
-33
View File
@@ -1,33 +0,0 @@
app-id: org.o3de.O3DE
runtime: org.freedesktop.Platform
runtime-version: '23.08'
sdk: org.freedesktop.Sdk
command: o3de-wrapper.sh
finish-args:
- --share=network
- --share=ipc
- --socket=x11
- --socket=wayland
- --device=dri
- --filesystem=host
modules:
- name: o3de
buildsystem: simple
build-commands:
# Die .deb Datei entpacken (enthält meist control.tar.* und data.tar.*)
- ar x o3de.deb
# Den eigentlichen Inhalt entpacken
- tar xf data.tar.*
# Die Dateien nach /app/opt verschieben (da .deb typischerweise in /opt oder /usr installiert)
- mkdir -p /app/opt
- mv opt/* /app/opt/ || true
- mv usr/* /app/ || true
# Wrapper Skript installieren
- install -D -m 755 o3de-wrapper.sh /app/bin/o3de-wrapper.sh
sources:
- type: file
url: URL_PLACEHOLDER
sha256: SHA256_PLACEHOLDER
dest-filename: o3de.deb
- type: file
path: o3de-wrapper.sh