diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e5977e..9e7359b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ one per merged pull request. ## 2.11.2 - 2026-10-13 +- **fix: a PC that keeps `python-hidapi` (liquidctl needs it) can use the SteamOS conversion: jupiter-hw-support, which gamescope-session-cachyos depends on, wants `python-hid`, which conflicts with it and stopped the package install. Steamify builds and installs an empty placeholder package that provides `python-hid` first (`patches/python-hid-shim.PKGBUILD`); only the Steam Deck controller firmware updater uses it** + - **feat: the patched gamescope is downloaded as the newest release of steamify-gamescope-nvidia (checked against that release's `.sha256`), a newer one than the installed package shows the SteamOS conversion as an update, and what this Steamify was tested with is the fallback: the pinned package (sha256 in Steamify), the copy the ISO leaves, a build here; the repository's workflow builds each release in CachyOS's container** - `124b424`, `f234c72` **fix: HDMI-CEC on the Steam Machine no longer needs GitHub: when downloading Valve's CEC driver fails, Steamify uses the copy it carries (`patches/cros-ec-cec.c`), checked against the same pinned sha256** diff --git a/lib/packages.sh b/lib/packages.sh index 14164d0..d16a45e 100644 --- a/lib/packages.sh +++ b/lib/packages.sh @@ -58,6 +58,30 @@ bootstrap_yay() { fi } +python_hid_shim_ensure() { + # jupiter-hw-support (a dependency of gamescope-session-cachyos) wants python-hid, which conflicts with python-hidapi, and + # a PC can need python-hidapi (liquidctl does). Only Valve's Steam Deck controller firmware updater uses python-hid, which + # a PC doesn't run: so a placeholder package that provides python-hid keeps python-hidapi and satisfies the dependency + # (also at later updates, which a one-time --assume-installed wouldn't). It stays when the conversion goes off: + # jupiter-hw-support, which stays, depends on it. + pacman -Q python-hidapi >/dev/null 2>&1 || return 0 + pacman -Q python-hid steamify-python-hid-shim >/dev/null 2>&1 && return 0 + local dir pkg cache="${XDG_CACHE_HOME:-$HOME/.cache}/steamify" + warn "python-hidapi is installed (liquidctl and others need it) and conflicts with python-hid, which Steam Deck's tools ask for: keeping python-hidapi, with a small placeholder package for python-hid." + sudo pacman -S --needed --noconfirm base-devel >/dev/null || { err "Installing the build tools failed."; return 1; } + mkdir -p "$cache" && dir="$(mktemp -d -p "$cache" hid-shim.XXXXXX)" || return 1 + patch_file python-hid-shim.PKGBUILD > "$dir/PKGBUILD" || { rm -rf "$dir"; return 1; } + if ! (cd "$dir" && makepkg -f --noconfirm >/dev/null) || + ! pkg="$(ls "$dir"/steamify-python-hid-shim-*.pkg.tar.* 2>/dev/null | head -1)" || + ! sudo pacman -U --noconfirm "$pkg"; then + rm -rf "$dir" + err "Couldn't set up the python-hid placeholder: python-hidapi and python-hid conflict, so the packages can't be installed." + return 1 + fi + rm -rf "$dir" + ok "python-hidapi kept; python-hid is covered by a placeholder." +} + install_required_packages() { # Step 2: gamescope/Steam and the desktop helpers the rest of the setup uses. local -a MISSING @@ -65,6 +89,7 @@ install_required_packages() { mapfile -t MISSING < <(pacman -T gamescope-session-cachyos steam mangohud xterm ttf-liberation wqy-zenhei plasma-keyboard) if [[ ${#MISSING[@]} -gt 0 ]]; then + python_hid_shim_ensure || return 1 info "Installing missing packages: ${MISSING[*]}" sudo pacman -S --needed --noconfirm "${MISSING[@]}" || { err "Package installation failed."; return 1; } else diff --git a/patches/README.md b/patches/README.md index cfbfd6c..e63c914 100644 --- a/patches/README.md +++ b/patches/README.md @@ -19,3 +19,4 @@ read and reviewed on their own. `lib/*.sh` reads them with `patch_file | `gamescope-gbm-scanout.patch` | `lib/gamescope-nvidia.sh` (gamescope on NVIDIA) | gamescope 3.16.31 patch: scan-out buffers allocated with GBM (opt-in, `gamescope_drm_gbm_scanout=1`), which cures the corrupted picture on NVIDIA; from farnoy/gamescope, see the header of the file | | `gamescope-nvidia.PKGBUILD` | `lib/gamescope-nvidia.sh` (gamescope on NVIDIA) | The recipe for the patched gamescope package (`steamify-gamescope-nvidia`, provides and conflicts with `gamescope`): Valve's gamescope at `pkgver` plus `gamescope-gbm-scanout.patch`; written with the patch to a temporary folder and built with `makepkg` | | `cros-ec-cec.c` | `lib/cec.sh` (HDMI-CEC) | Valve's Steam Machine CEC driver (GPL-2.0+, from evlaV/linux-integration at the pinned commit): the backup when downloading it from GitHub fails; used only if its sha256 equals `CEC_DRIVER_SHA256` (a new pin needs a new copy) | +| `python-hid-shim.PKGBUILD` | `lib/packages.sh` (required packages) | An empty package that provides `python-hid`, for PCs that keep `python-hidapi` (they conflict; jupiter-hw-support, a dependency of gamescope-session-cachyos, wants python-hid, only the Steam Deck controller updater uses it): built with `makepkg` and installed before the conversion's packages | diff --git a/patches/python-hid-shim.PKGBUILD b/patches/python-hid-shim.PKGBUILD new file mode 100644 index 0000000..aac96f8 --- /dev/null +++ b/patches/python-hid-shim.PKGBUILD @@ -0,0 +1,17 @@ +# Maintainer: theupriser +# An empty package that only tells pacman "python-hid is there". For a PC that keeps python-hidapi (liquidctl needs it): +# the real python-hid conflicts with it, and jupiter-hw-support (a dependency of gamescope-session-cachyos) wants python-hid. +# Only Valve's Steam Deck controller firmware updater in jupiter-hw-support uses it, which a PC doesn't run. +# Steamify (lib/packages.sh) builds it with makepkg and installs it before the conversion's packages. +pkgname=steamify-python-hid-shim +pkgver=1 +pkgrel=1 +pkgdesc='Placeholder: python-hid for PCs that keep python-hidapi (they conflict)' +arch=(any) +license=(MIT) +depends=(python-hidapi) +provides=('python-hid=99') + +package() { + : +}