Pivot build-flatpak workflow to manual packaging, bypassing bwrap restrictions
This commit is contained in:
@@ -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
|
|
||||||
# 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
|
- name: Build Flatpak (Manual Mode)
|
||||||
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: |
|
||||||
|
|||||||
@@ -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
|
|
||||||
Reference in New Issue
Block a user