Name: wayvr Version: 26.8.0 Release: 4%{?dist} Summary: Lightweight OpenXR/OpenVR desktop overlay for Linux License: GPL-3.0-only URL: https://github.com/wayvr-org/wayvr Source0: %{url}/archive/refs/tags/v%{version}.tar.gz Source1: %{url}/releases/download/v%{version}/vendor.tar.xz # Upstream currently publishes and tests Linux VR release artifacts primarily on x86_64. ExclusiveArch: x86_64 # WayVR's ovr_overlay dependency links against its pinned vendored OpenVR # library. Keep that exact runtime library private to WayVR instead of # replacing it with Fedora's newer system OpenVR ABI. Provides: bundled(openvr) BuildRequires: alsa-lib-devel BuildRequires: cargo BuildRequires: clang BuildRequires: cmake BuildRequires: dbus-devel BuildRequires: desktop-file-utils BuildRequires: fontconfig-devel BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: binutils BuildRequires: glslc BuildRequires: libdav1d-devel BuildRequires: libinput-devel BuildRequires: libshaderc-devel BuildRequires: libX11-devel BuildRequires: libXext-devel BuildRequires: libXrandr-devel BuildRequires: libxcb-devel BuildRequires: libxkbcommon-devel BuildRequires: libxkbcommon-x11-devel BuildRequires: make BuildRequires: mesa-libEGL-devel BuildRequires: openxr-devel BuildRequires: openssl-devel BuildRequires: pipewire-devel BuildRequires: pkgconf-pkg-config BuildRequires: python3 BuildRequires: rust BuildRequires: systemd-devel BuildRequires: vulkan-headers BuildRequires: vulkan-loader-devel BuildRequires: wayland-devel Requires: xwayland-satellite %description WayVR is a lightweight OpenXR/OpenVR overlay that provides access to Wayland and X11 desktops from Monado, WiVRn, or SteamVR. It also includes wayvrctl for controlling a running WayVR instance from the command line. %prep %autosetup -n wayvr-%{version} -a 1 # The release asset is generated by upstream with `cargo vendor` and includes # the Cargo source replacement configuration as vendor/vendor-config.toml. mkdir -p .cargo install -pm 0644 vendor/vendor-config.toml .cargo/config.toml %build export CARGO_HOME="%{_builddir}/cargo-home" export CARGO_NET_OFFLINE=true # Embed the private OpenVR search path while linking. Using patchelf here # corrupts this large PIE's program header table on Fedora, leaving it with no # PT_LOAD segments and making it segfault immediately at its entry point. cargo rustc \ --release \ --frozen \ --offline \ -p wayvr \ --bin wayvr \ -- \ -C link-arg=-Wl,-rpath,%{_libdir}/wayvr cargo build \ --release \ --frozen \ --offline \ -p wayvrctl %install install -Dm 0755 target/release/wayvr \ %{buildroot}%{_bindir}/wayvr install -Dm 0755 target/release/wayvrctl \ %{buildroot}%{_bindir}/wayvrctl # ovr_overlay links WayVR against the OpenVR library bundled with its pinned # OpenVR source. The same library must therefore be used at runtime. openvr_library="$(find vendor \ -type f \ -path '*/openvr/bin/linux64/libopenvr_api.so' \ -print -quit)" if [ -z "$openvr_library" ]; then echo "Bundled libopenvr_api.so was not found in vendor sources" >&2 exit 1 fi install -Dm 0755 "$openvr_library" \ %{buildroot}%{_libdir}/wayvr/libopenvr_api.so desktop-file-install \ --dir=%{buildroot}%{_datadir}/applications \ wayvr/wayvr.desktop install -Dm 0644 wayvr/wayvr.png \ %{buildroot}%{_datadir}/pixmaps/wayvr.png %check desktop-file-validate wayvr/wayvr.desktop # A missing PT_LOAD is the signature of the executable corruption that caused # an immediate SIGSEGV in release 3. Also verify the dynamic dependency and # link-time RUNPATH without modifying the finished ELF. LC_ALL=C readelf -lW %{buildroot}%{_bindir}/wayvr | \ grep -q '^[[:space:]]*LOAD[[:space:]]' LC_ALL=C readelf -dW %{buildroot}%{_bindir}/wayvr | \ grep -Fq '(NEEDED) Shared library: [libopenvr_api.so]' LC_ALL=C readelf -dW %{buildroot}%{_bindir}/wayvr | \ grep -Fq '(RUNPATH) Library runpath: [%{_libdir}/wayvr]' test -f %{buildroot}%{_libdir}/wayvr/libopenvr_api.so # Exercise the loader as well as the ELF structure. The final RUNPATH points # at the installed location, so direct it to the staged private library here. LD_LIBRARY_PATH=%{buildroot}%{_libdir}/wayvr \ %{buildroot}%{_bindir}/wayvr --help >/dev/null %files %license LICENSE %doc README.md %{_bindir}/wayvr %{_bindir}/wayvrctl %{_libdir}/wayvr/libopenvr_api.so %{_datadir}/applications/wayvr.desktop %{_datadir}/pixmaps/wayvr.png %changelog * Sat Oct 03 2026 nexryai - 26.8.0-1 - Upgrade WayVR to v26.8.0 * Fri Aug 14 2026 nexryai - 26.7.1-4 - Embed the private OpenVR RUNPATH at link time instead of using patchelf - Reject executables without loadable segments and smoke-test the staged binary * Tue Aug 11 2026 nexryai - 26.7.1-3 - Bundle the OpenVR runtime used by upstream instead of replacing it with system OpenVR - Make xwayland-satellite a required runtime dependency * Sat Aug 1 2026 nexryai - 26.7.1-2 - Fix OpenVR runtime dependency on Fedora * Fri Jul 31 2026 nexryai - 26.7.1-1 - Initial COPR package