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 "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"
|
||||
echo "Berechne Checksumme..."
|
||||
sha256sum o3de.deb
|
||||
|
||||
# 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
|
||||
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: |
|
||||
|
||||
@@ -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