diff --git a/.gitea/workflows/build-flatpak.yml b/.gitea/workflows/build-flatpak.yml index 6d004275..8595c0af 100644 --- a/.gitea/workflows/build-flatpak.yml +++ b/.gitea/workflows/build-flatpak.yml @@ -39,35 +39,79 @@ jobs: echo "Gefundene Version: $VERSION" echo "URL: $DOWNLOAD_URL" - - name: Calculate SHA256 of the .deb + - name: Download O3DE .deb run: | echo "Lade $DOWNLOAD_URL herunter..." curl -L -o o3de.deb "$DOWNLOAD_URL" - SHA256=$(sha256sum o3de.deb | awk '{print $1}') - echo "SHA256=$SHA256" >> $GITHUB_ENV - echo "Checksumme: $SHA256" - - # Die Datei lokal lassen, damit flatpak-builder sie direkt verwenden kann - # 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 + echo "Berechne Checksumme..." + sha256sum 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 + - name: Build Flatpak (Manual Mode) run: | # Flathub hinzufügen, um Runtimes herunterladen zu können 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 bauen und direkt in das lokale OSTree-Repository "repo" exportieren - # --disable-rofiles-fuse ist essentiell für CI-Umgebungen (Docker), in denen /dev/fuse nicht verfügbar ist - flatpak-builder --repo=repo --force-clean --disable-rofiles-fuse build-dir org.o3de.O3DE.yml + # 1. Initialisiere den Erstellungsordner + flatpak build-init --user build-dir org.o3de.O3DE org.freedesktop.Sdk org.freedesktop.Platform 23.08 + + # 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 run: | diff --git a/org.o3de.O3DE.yml.template b/org.o3de.O3DE.yml.template deleted file mode 100644 index e4f0ca2b..00000000 --- a/org.o3de.O3DE.yml.template +++ /dev/null @@ -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