hyprwm / Hyprland

Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
https://hyprland.org
BSD 3-Clause "New" or "Revised" License
21.68k stars 900 forks source link

Hyprland: undefined symbol: wlr_backend_is_drm #2748

Closed soanvig closed 1 year ago

soanvig commented 1 year ago

Hyprland Version

0.27.1

Bug or Regression?

Bug

Description

Hey! I'm working on making Hyprland launch on Nvidia (proprietary) on Void Linux.

We have Hyprland working on other cards (see: https://github.com/Makrennel/hyprland-void) in Void Linux, however for Nvidia it fails on start with:

Hyprland: undefined symbol: wlr_backend_is_drm

I've followed: https://wiki.hyprland.org/Nvidia/ thoroughly. Triple checked if all kernel modules are properly enabled and configured.

As I said, it works on other cards properly.

I know, Nvidia is not support officialy. But I cannot track where this bug comes from. Most of the people (on other distros presumably) don't have that problem.

So maybe somebody knows a solution, or at least a suggestion where to start looking.

How to reproduce

Nvidia card, properietary driver, Void Linux, follow https://github.com/Makrennel/hyprland-void but use hyprland-nvidia instead of hyprland

Crash reports, logs, images, videos

No response

vaxerski commented 1 year ago

improperly compiled wlroots

Makrennel commented 1 year ago

As far as I can tell wlroots (and pretty much everything else) is compiled in the same way as it is done in the AUR build script

vaxerski commented 1 year ago

as far as I can tell hyprland complains about a symbol missing that should be in libwlroots.so.

jbeich commented 1 year ago

compiled in the same way as it is done in the AUR build script

Can you show the build log? wlr_backend_is_drm is built only if DRM backend in wlroots is enabled. By default DRM backend is only enabled if all dependencies are present and up-to-date.

Maybe try to build wlroots standalone while aborting if autodetection failed e.g.,

$ meson setup --auto-features=enabled -Dexamples=false /tmp/wlroots_build subprojects/wlroots
$ meson compile -C /tmp/wlroots_build
soanvig commented 1 year ago

@jbeich this is complete non-filtered build log (stdout and stdout+stderr, they look similar on first glance). It includes some details from Void build tool, but all of the logs from compilation steps should be there. hyprland-nvidia-log.txt hyprland-nvidia-log-stdout-stderr.txt

@Makrennel FYI I tried adding wlroots-devel and wlroots to makedepends to ensure that all deps are in place, but this may not help, because we may have different dependencies for these projects due to Void no-DRM by default philosophy.

BTW, what if our patching doesn't work like it should? Theoretically this patch is applied telling from the logs, but yeah. Even if patch wasn't applied it doesn't look like it would cause such error. As Vaxerski said this is missing symbol, and the patch doesn't define any symbols.

jbeich commented 1 year ago

drm-backend : YES [...] Installing libwlroots.so.12032 to /builddir/hyprland-nvidia-0.27.1/tmpwlr/lib

Looks fine so far.

Unfortunately, the build logs are non-verbose thus don't document the actual compiler flags and install commands. For example, maybe Hyprland uses headers from an old system wlroots or what is installed is a stale copy built incorrectly (${wrksrc} vs. current directory).

Makrennel commented 1 year ago

Alright so I went and borrowed a friend's GPU - an RTX 2060 - to see if I could figure this out myself. Not had a problem getting it running so....... I really don't know

Makrennel commented 1 year ago

BTW, what if our patching doesn't work like it should? Theoretically this patch is applied telling from the logs, but yeah. Even if patch wasn't applied it doesn't look like it would cause such error.

You can check if the patch applies correctly by running ./xbps-src patch hyprland-nvidia and it'll only run the script until it completes the patching and you can go into the masterdir to check the code has been modified correctly.

soanvig commented 1 year ago

@Makrennel Thanks for confirmation, you are really dedicated. Well, if it is really something wrong on my side, my weird setup or whatsoever, I think we can close it. I will reopen it when I find the issue.

@vaxerski @Makrennel @jbeich Thanks for the assistance. I won't take up your time anymore.