Meumeu / WiVRn

An OpenXR streaming application to a standalone headset
GNU General Public License v3.0
134 stars 22 forks source link

CMAKE_INSTALL_LIBDIR may not be a relative path #47

Closed SomeoneSerge closed 2 months ago

SomeoneSerge commented 3 months ago

Hi! We encounter issues with the following line, e.g. when installing different components into separate prefixes: https://github.com/Meumeu/WiVRn/blob/46d6d2181b62ecb976616a3b2396b9bd0ce345b4/server/CMakeLists.txt#L157

Broader context: https://github.com/jtojnar/cmake-snips?tab=readme-ov-file#assuming-cmake_install_dir-is-relative-path. Discussion regarding the ../../../ issue specifically: https://github.com/NixOS/nixpkgs/pull/293058#discussion_r1518463345

What would you think about switching to CMAKE_INSTALL_FULL_LIBDIR? I must admit I lack the context and don't know if it's important for you to have relative paths in the manifests

Thanks

xytovl commented 3 months ago

This was done to match the default introduced by https://gitlab.freedesktop.org/monado/monado/-/merge_requests/1240

I have to check if this is needed for compatibility with Steam: the host filesystem is mounted on /run/host (see https://gitlab.com/znixian/OpenOVR/-/tree/openxr#linux-specific-info) and I am not sure it is smart enough to remap path read from the manifest if it is in a mapped directory.

xytovl commented 3 months ago

I have tested an absolute path in the manifest: /etc/openxr/1/active_runtime.json, symlink to /run/host/usr/share/openxr/1/openxr_wivrn.json

{
    "file_format_version": "1.0.0",
    "runtime": {
        "name": "Monado",
        "library_path": "/usr/lib64/libopenxr_wivrn.so"
    }
}

When launching a game in steam, I have to manually set XR_RUNTIME_JSON to /run/host/etc/openxr/1/active_runtime.json (or the equivalent /run/host/usr/share/openxr/1/openxr_wivrn.json as the etc file is a symlink). Loading the library then fails with

Error [GENERAL |  | OpenXR-Loader] : /run/host/usr/share/openxr/1/openxr_wivrn.json library /usr/lib64/libopenxr_wivrn.so does not appear to exist
xytovl commented 2 months ago

55 adds WIVRN_OPENXR_INSTALL_ABSOLUTE_RUNTIME_PATH CMake option to force an absolute path.