Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
32b484bede | ||
|
|
651a7a82a1 | ||
|
|
08eaf337e8 | ||
|
|
39869031be |
@@ -344,10 +344,31 @@ jobs:
|
|||||||
apt-get update
|
apt-get update
|
||||||
apt-get install -y --no-install-recommends meson ninja-build glslc git || true
|
apt-get install -y --no-install-recommends meson ninja-build glslc git || true
|
||||||
apt-get build-dep -y gamescope || true
|
apt-get build-dep -y gamescope || true
|
||||||
|
# NOT best-effort. `build-dep gamescope` resolves the distro's much older packaged
|
||||||
|
# gamescope — where noble has one at all — so it misses what the master tree needs, and
|
||||||
|
# wayland-protocols is the gap that actually stops the build: meson dies in
|
||||||
|
# protocol/meson.build with "Neither a subproject directory nor a wayland-protocols.wrap
|
||||||
|
# file was found", because the tree has no wrap fallback for it. That is what happened on
|
||||||
|
# the v0.26.0 tag: the step warned and skipped, the job stayed green, and the release
|
||||||
|
# shipped with no gamescope .deb while the notes said it had one.
|
||||||
|
apt-get install -y --no-install-recommends wayland-protocols
|
||||||
|
# The remaining Arch makedepends the older packaged gamescope does not necessarily pull.
|
||||||
|
# Best-effort: meson falls back or does without, and a name that moves between Ubuntu
|
||||||
|
# releases should not fail the job. (No libstdc++ static package is needed here — g++
|
||||||
|
# ships libstdc++.a, which is why only Fedora tripped the sanity check.)
|
||||||
|
apt-get install -y --no-install-recommends libglm-dev cmake libxcursor-dev || true
|
||||||
if bash packaging/gamescope/build-punktfunk-gamescope.sh \
|
if bash packaging/gamescope/build-punktfunk-gamescope.sh \
|
||||||
--destdir "$PWD/gs-stage" --prefix /usr --jobs "$(nproc)"; then
|
--destdir "$PWD/gs-stage" --prefix /usr --jobs "$(nproc)"; then
|
||||||
install -Dm0755 gs-stage/usr/bin/punktfunk-gamescope gs-cache/punktfunk-gamescope
|
install -Dm0755 gs-stage/usr/bin/punktfunk-gamescope gs-cache/punktfunk-gamescope
|
||||||
else
|
else
|
||||||
|
# Best-effort on canary, HARD on a stable tag — same reasoning as rpm.yml. A warning
|
||||||
|
# here is what let v0.26.0 promise an apt-installable gamescope that was never built.
|
||||||
|
case "$GITHUB_REF" in
|
||||||
|
refs/tags/v*)
|
||||||
|
echo "::error::punktfunk-gamescope failed to build on noble — a stable tag must not ship without it (the release notes and docs-site say it is installable)"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
echo "::warning::punktfunk-gamescope failed to build on noble — no .deb this run (gamescope sessions stay SDR)"
|
echo "::warning::punktfunk-gamescope failed to build on noble — no .deb this run (gamescope sessions stay SDR)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -357,6 +378,13 @@ jobs:
|
|||||||
if [ -x gs-cache/punktfunk-gamescope ] && gs-cache/punktfunk-gamescope --version >/dev/null 2>&1; then
|
if [ -x gs-cache/punktfunk-gamescope ] && gs-cache/punktfunk-gamescope --version >/dev/null 2>&1; then
|
||||||
bash packaging/debian/build-gamescope-deb.sh --binary gs-cache/punktfunk-gamescope
|
bash packaging/debian/build-gamescope-deb.sh --binary gs-cache/punktfunk-gamescope
|
||||||
else
|
else
|
||||||
|
# Authoritative, and covers the cache path the build step skips — same as rpm.yml.
|
||||||
|
case "$GITHUB_REF" in
|
||||||
|
refs/tags/v*)
|
||||||
|
echo "::error::no usable punktfunk-gamescope — a stable tag must not ship without its .deb"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
echo "::warning::no usable punktfunk-gamescope — skipping its .deb"
|
echo "::warning::no usable punktfunk-gamescope — skipping its .deb"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -206,10 +206,33 @@ jobs:
|
|||||||
dnf -y install dnf-plugins-core meson ninja-build glslc || true
|
dnf -y install dnf-plugins-core meson ninja-build glslc || true
|
||||||
dnf builddep -y gamescope || true
|
dnf builddep -y gamescope || true
|
||||||
dnf -y install xorg-x11-server-Xwayland-devel || true
|
dnf -y install xorg-x11-server-Xwayland-devel || true
|
||||||
|
# NOT best-effort: build-punktfunk-gamescope.sh appends `-static-libstdc++` to LDFLAGS
|
||||||
|
# (so the binary still starts on SteamOS's older libstdc++ — see its comment), and
|
||||||
|
# without the static library meson's very FIRST sanity check dies with
|
||||||
|
# "cannot find -lstdc++ / have you installed the static version", so nothing builds at
|
||||||
|
# all. That is what happened on the v0.26.0 tag: both Fedora bases warned and skipped,
|
||||||
|
# the job stayed green, and the release shipped with no gamescope RPM while the notes
|
||||||
|
# said it had one. A rename here must be LOUD, hence no `|| true`.
|
||||||
|
dnf -y install libstdc++-static
|
||||||
|
# The rest of the Arch package's makedepends that Fedora's older packaged gamescope does
|
||||||
|
# not necessarily pull. Best-effort: unlike the static runtime, meson finds fallbacks or
|
||||||
|
# does without, and a name that moves between Fedora releases should not fail the job.
|
||||||
|
dnf -y install wayland-protocols-devel glm-devel cmake libXcursor-devel || true
|
||||||
if bash packaging/gamescope/build-punktfunk-gamescope.sh \
|
if bash packaging/gamescope/build-punktfunk-gamescope.sh \
|
||||||
--destdir "$PWD/gs-stage" --prefix /usr --jobs "$(nproc)"; then
|
--destdir "$PWD/gs-stage" --prefix /usr --jobs "$(nproc)"; then
|
||||||
install -Dm0755 gs-stage/usr/bin/punktfunk-gamescope gs-cache/punktfunk-gamescope
|
install -Dm0755 gs-stage/usr/bin/punktfunk-gamescope gs-cache/punktfunk-gamescope
|
||||||
else
|
else
|
||||||
|
# Best-effort on canary, HARD on a stable tag. A `::warning::` here is what let
|
||||||
|
# v0.26.0 publish release notes promising a Fedora gamescope package that did not
|
||||||
|
# exist: the step "succeeded", the job was green, and the only evidence was a warning
|
||||||
|
# nobody reads. A release must not be able to make a claim its own CI silently
|
||||||
|
# dropped, so on `refs/tags/v*` this is an error.
|
||||||
|
case "$GITHUB_REF" in
|
||||||
|
refs/tags/v*)
|
||||||
|
echo "::error::punktfunk-gamescope failed to build for f${{ matrix.fedver }} — a stable tag must not ship without it (the release notes and docs-site say it is installable)"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
echo "::warning::punktfunk-gamescope failed to build for f${{ matrix.fedver }} — the sysext ships without it (gamescope sessions stay SDR)"
|
echo "::warning::punktfunk-gamescope failed to build for f${{ matrix.fedver }} — the sysext ships without it (gamescope sessions stay SDR)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -227,6 +250,15 @@ jobs:
|
|||||||
--binary gs-cache/punktfunk-gamescope \
|
--binary gs-cache/punktfunk-gamescope \
|
||||||
--release "$PF_RELEASE"
|
--release "$PF_RELEASE"
|
||||||
else
|
else
|
||||||
|
# The authoritative "does this package exist" decision, and the one that also covers
|
||||||
|
# the cache path — the build step above is skipped entirely on a cache hit, so a stale
|
||||||
|
# or empty cache would otherwise reach here and skip in silence on a release.
|
||||||
|
case "$GITHUB_REF" in
|
||||||
|
refs/tags/v*)
|
||||||
|
echo "::error::no usable punktfunk-gamescope for f${{ matrix.fedver }} — a stable tag must not ship without its RPM"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
echo "::warning::no usable punktfunk-gamescope for f${{ matrix.fedver }} — skipping its RPM"
|
echo "::warning::no usable punktfunk-gamescope for f${{ matrix.fedver }} — skipping its RPM"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -195,6 +195,16 @@ bash /usr/share/punktfunk/bazzite/kde-desktop-setup.sh
|
|||||||
|
|
||||||
Gaming Mode needs none of this — it auto-attaches.
|
Gaming Mode needs none of this — it auto-attaches.
|
||||||
|
|
||||||
|
> **Version 0.26.0-1 cannot stream the Desktop, and nothing on this page fixes it.** Every session
|
||||||
|
> ends with `KWin does not expose zkde_screencast_unstable_v1 to this client`. That image gave the
|
||||||
|
> host binary the `CAP_SYS_NICE` capability, and Linux will not let KWin read the `/proc/<pid>/exe`
|
||||||
|
> it uses to work out which program is asking — so the grant above can never match, however
|
||||||
|
> correctly it is installed. Reinstalling does not help: it looks like a missing `.desktop` file and
|
||||||
|
> is not one. The image's `/usr` is read-only, so it cannot be repaired on the box — take the next
|
||||||
|
> image with `sudo punktfunk-sysext update`, then
|
||||||
|
> `systemctl --user restart punktfunk-host`. Gaming Mode is unaffected; gamescope has no such
|
||||||
|
> identity check.
|
||||||
|
|
||||||
## Run as an always-on host
|
## Run as an always-on host
|
||||||
|
|
||||||
Bazzite hosts are typically headless. Enable the host service and linger so it starts at boot — see
|
Bazzite hosts are typically headless. Enable the host service and linger so it starts at boot — see
|
||||||
|
|||||||
Reference in New Issue
Block a user