diff --git a/.github/workflows/build_flatpak.yml b/.github/workflows/build_flatpak.yml index bcefd772..1a70031b 100644 --- a/.github/workflows/build_flatpak.yml +++ b/.github/workflows/build_flatpak.yml @@ -17,7 +17,7 @@ jobs: bundle: bottles.flatpak manifest-path: build-aux/com.usebottles.bottles.Devel.json cache-key: flatpak-builder-${{ github.sha }} - - name: Test 32-bit media codecs + - name: Test multiarch runtime run: | curl -fL https://deb.debian.org/debian/pool/main/g/gstreamer1.0/gstreamer1.0-tools_1.26.2-2_i386.deb -o /tmp/gstreamer-tools-i386.deb echo 'cca853f66856ec889891e3d509786c3fd7169469a5c92c7751851e53b2b9fa3c /tmp/gstreamer-tools-i386.deb' | sha256sum -c - @@ -25,7 +25,44 @@ jobs: cd /tmp/gstreamer-tools-i386 ar x /tmp/gstreamer-tools-i386.deb data.tar.xz tar -xf data.tar.xz + curl -fL https://github.com/bottlesdevs/wine/releases/download/soda-11.0-8/soda-11.0-8-x86_64.tar.xz -o /tmp/soda.tar.xz + echo 'd764aa6697f06fffb4f883930d265f45546381dfc10da17e419ac3ea0b0b8041 /tmp/soda.tar.xz' | sha256sum -c - + mkdir /tmp/soda + tar -xJf /tmp/soda.tar.xz -C /tmp/soda + flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo + install_ref() { + attempts=0 + until flatpak install --user --noninteractive flathub "$1"; do + attempts=$((attempts + 1)) + test "$attempts" -lt 5 || return 1 + sleep $((attempts * 5)) + done + } + install_ref org.freedesktop.Platform.Compat.i386//26.08 + install_ref org.freedesktop.Platform.codecs_extra.i386//26.08-extra flatpak install --user --noninteractive "$GITHUB_WORKSPACE/bottles.flatpak" + flatpak run --user --command=sh com.usebottles.bottles.Devel -ec ' + grep -Fx /app/lib32 /app/etc/ld.so.conf + grep -Fx /app/lib/i386-linux-gnu/codecs-extra/lib /app/etc/ld.so.conf + grep -Fx /app/lib/i386-linux-gnu /app/etc/ld.so.conf + test -r /app/lib/i386-linux-gnu/libc.so.6 + test -d /app/lib/i386-linux-gnu/dri/intel-vaapi-driver + test -d /app/i386/nvidia-vaapi-driver + gst-inspect-1.0 avdec_wmv3 + ' + flatpak run --user \ + --filesystem=/tmp/soda:ro \ + --command=sh \ + com.usebottles.bottles.Devel -ec ' + export WINEDEBUG=-all + export WINEPREFIX=/tmp/soda-prefix + runner=/tmp/soda/soda-11.0-8-x86_64/bin/wine + wineserver=/tmp/soda/soda-11.0-8-x86_64/bin/wineserver + timeout 120 "$runner" wineboot -u + timeout 30 "$runner" "$WINEPREFIX/drive_c/windows/system32/cmd.exe" /c exit + timeout 30 "$runner" "$WINEPREFIX/drive_c/windows/syswow64/cmd.exe" /c exit + "$wineserver" -k + ' flatpak run --user \ --filesystem=/tmp/gstreamer-tools-i386:ro \ --command=/tmp/gstreamer-tools-i386/usr/bin/gst-inspect-1.0 \ diff --git a/build-aux/com.usebottles.bottles.Devel.json b/build-aux/com.usebottles.bottles.Devel.json index 10c19b9f..5aec63d9 100644 --- a/build-aux/com.usebottles.bottles.Devel.json +++ b/build-aux/com.usebottles.bottles.Devel.json @@ -3,8 +3,11 @@ "sdk": "org.gnome.Sdk", "runtime": "org.gnome.Platform", "base": "org.winehq.Wine", - "base-version": "stable-25.08", - "runtime-version": "49", + "base-version": "stable-26.08", + "runtime-version": "50", + "x-gl-version": "1.4", + "x-gl-versions": "26.08;26.08-extra;1.4", + "x-gl-merge-dirs": "vulkan/icd.d;glvnd/egl_vendor.d;egl/egl_external_platform.d;OpenCL/vendors;lib/dri;lib/d3d;lib/gbm;vulkan/explicit_layer.d;vulkan/implicit_layer.d;vdpau", "command": "bottles", "finish-args": [ "--allow=devel", @@ -24,27 +27,69 @@ "--system-talk-name=org.freedesktop.UDisks2", "--env=LD_LIBRARY_PATH=/usr/lib/extensions/vulkan/gamescope/lib:/app/lib/i386-linux-gnu/codecs-extra/lib:/app/lib:/app/lib/i386-linux-gnu", "--env=PATH=/app/bin:/app/utils/bin:/usr/bin:/usr/lib/extensions/vulkan/MangoHud/bin/:/usr/bin:/usr/lib/extensions/vulkan/OBSVkCapture/bin/:/usr/lib/extensions/vulkan/gamescope/bin/", - "--env=GST_PLUGIN_SYSTEM_PATH=/app/lib/gstreamer-1.0:/app/lib/i386-linux-gnu/gstreamer-1.0:/usr/lib/x86_64-linux-gnu/gstreamer-1.0:/usr/lib/i386-linux-gnu/gstreamer-1.0", + "--env=GST_PLUGIN_SYSTEM_PATH=/app/lib/gstreamer-1.0:/app/lib32/gstreamer-1.0:/app/lib/i386-linux-gnu/codecs-extra/lib/gstreamer-1.0:/app/lib/i386-linux-gnu/gstreamer-1.0:/usr/lib/extensions/gstreamer-1.0:/usr/lib/x86_64-linux-gnu/codecs-extra/lib/gstreamer-1.0:/usr/lib/i386-linux-gnu/codecs-extra/lib/gstreamer-1.0:/usr/lib/x86_64-linux-gnu/gstreamer-1.0:/usr/lib/i386-linux-gnu/gstreamer-1.0", "--require-version=1.1.2" ], "inherit-extensions": [ - "org.freedesktop.Platform.GL32", "org.winehq.Wine.gecko", "org.winehq.Wine.mono" ], "add-extensions": { "org.freedesktop.Platform.Compat.i386": { "directory": "lib/i386-linux-gnu", - "version": "25.08" + "version": "26.08" }, "org.freedesktop.Platform.Compat.i386.Debug": { "directory": "lib/debug/lib/i386-linux-gnu", - "version": "25.08", + "version": "26.08", "no-autodownload": true }, + "org.freedesktop.Platform.GL32": { + "directory": "lib/i386-linux-gnu/GL", + "version": "1.4", + "versions": "26.08;26.08-extra;1.4", + "subdirectories": true, + "no-autodownload": true, + "autodelete": false, + "add-ld-path": "lib", + "merge-dirs": "vulkan/icd.d;glvnd/egl_vendor.d;egl/egl_external_platform.d;OpenCL/vendors;lib/dri;lib/d3d;lib/gbm;vulkan/explicit_layer.d;vulkan/implicit_layer.d;vdpau", + "download-if": "active-gl-driver", + "enable-if": "active-gl-driver", + "autoprune-unless": "active-gl-driver" + }, + "org.freedesktop.Platform.GL32.Debug": { + "directory": "lib/debug/lib/i386-linux-gnu/GL", + "version": "1.4", + "versions": "26.08;26.08-extra;1.4", + "subdirectories": true, + "no-autodownload": true, + "merge-dirs": "vulkan/icd.d;glvnd/egl_vendor.d;egl/egl_external_platform.d;OpenCL/vendors;lib/dri;lib/d3d;lib/gbm;vulkan/explicit_layer.d;vulkan/implicit_layer.d;vdpau", + "enable-if": "active-gl-driver", + "autoprune-unless": "active-gl-driver" + }, + "org.freedesktop.Platform.VAAPI.Intel.i386": { + "directory": "lib/i386-linux-gnu/dri/intel-vaapi-driver", + "version": "26.08", + "versions": "26.08", + "autodelete": false, + "no-autodownload": true, + "add-ld-path": "lib", + "download-if": "have-intel-gpu", + "autoprune-unless": "have-intel-gpu" + }, + "org.freedesktop.Platform.VAAPI.nvidia.i386": { + "directory": "i386/nvidia-vaapi-driver", + "version": "26.08", + "versions": "26.08", + "autodelete": false, + "no-autodownload": true, + "add-ld-path": "lib", + "download-if": "have-kernel-module-nvidia", + "autoprune-unless": "have-kernel-module-nvidia" + }, "org.freedesktop.Platform.codecs_extra.i386": { "directory": "lib/i386-linux-gnu/codecs-extra", - "version": "25.08-extra", + "version": "26.08-extra", "autodelete": false, "add-ld-path": "lib" }, @@ -344,6 +389,26 @@ } ] }, + { + "name": "bundle-setup", + "buildsystem": "simple", + "build-commands": [ + "install -Dm644 ld.so.conf -t /app/etc", + "mkdir -p /app/lib/i386-linux-gnu", + "mkdir -p /app/lib/debug/lib/i386-linux-gnu", + "mkdir -p /app/lib/i386-linux-gnu/GL", + "mkdir -p /app/lib/debug/lib/i386-linux-gnu/GL", + "mkdir -p /app/lib/i386-linux-gnu/dri/intel-vaapi-driver", + "mkdir -p /app/i386/nvidia-vaapi-driver", + "mkdir -p /app/lib/i386-linux-gnu/codecs-extra" + ], + "sources": [ + { + "type": "file", + "path": "ld.so.conf" + } + ] + }, { "name": "bottles", "builddir": true, diff --git a/build-aux/ld.so.conf b/build-aux/ld.so.conf new file mode 100644 index 00000000..9cb24dcf --- /dev/null +++ b/build-aux/ld.so.conf @@ -0,0 +1,3 @@ +/app/lib32 +/app/lib/i386-linux-gnu/codecs-extra/lib +/app/lib/i386-linux-gnu