Closed RedNekoderr closed 1 year ago
About 5 days ago, after hyprland update, I and another person had the same error in the final stages of the build:
Interesting, I've just tried rerunning the build script from another fresh void-packages clone and it fails for the same reason. The last clone I did when testing 0.29.1 still works. I'm not sure what's changed yet or if I can fix it, but I'll look into it.
For anyone stumbling upon this, the problem is that wlroots
does not have some required dependencies and therefore compiles without a couple of functions and thus the linker complains.
the solution is to add
libdisplay-info-devel
into the makedepends
and
libdisplay-info
into the depends
@Makrennel I can open a pull request if you want me to.
I also managed to get it to build under musl so I can open a PR for that as well.
@Makrennel I can open a pull request if you want me to.
I also managed to get it to build under musl so I can open a PR for that as well.
That would be a great help, please do open PRs.
@22h49 I am trying to update to v0.30.0 so I went ahead and fixed the libdisplay-info issue (it was added to upstream void-packages). I'd be happy to accept a musl PR.
I am trying to update to v0.30.0
... Actually, this may not be updating to 0.30.0 any time soon. It requires C++ 20 features and void's still uses gcc 12.2.0, and knowing void, who knows how long it'll take to get gcc 13 - it took the entirety of 2022 to go from 10 to 12....
I'd be happy to accept a musl PR.
Yeah sorry for the delay I had a busy week, will try to do it today.
It requires C++ 20 features and void's still uses gcc 12.2.0, and knowing void, who knows how long it'll take to get gcc 13
Would it be possible to use clang for the time being? I wasn't thinking and uninstalled Hyprland when I was initially trying to get it to build, and now I don't think I'll be able to get it back :cry:
I tried a little bit today, but I haven't been able to get CMake to do the right thing/pass the right flags (I'm stuck with error: invalid value 'gnu++23' in '-std=gnu++23'
now, it needs to be gnu++2b
)
Would it be possible to use clang for the time being? I wasn't thinking and uninstalled Hyprland when I was initially trying to get it to build, and now I don't think I'll be able to get it back :cry:
I tried a little bit today, but I haven't been able to get CMake to do the right thing/pass the right flags (I'm stuck with
error: invalid value 'gnu++23' in '-std=gnu++23'
now, it needs to begnu++2b
)
@ccptr I've attempted to use clang by modifying the common/xbps-src/shutils/common.sh
file, but it was unsuccessful. I'm not sure if clang 15 supports c++ 20, but if it does you would probably have to somehow add an argument like -std=c++20
. I haven't had the chance to figure this out though.
If you just want to reinstall Hyprland, can you not install the older version stored in hostdir/binpkgs
? Or rebuild it with a fresh clone if you've removed that?
I should probably mention that I was trying to build v0.31.0 :sweat_smile:
I'm not sure if clang 15 supports c++ 20, but if it does you would probably have to somehow add an argument like -std=c++20.
According to the Hyprland wiki, it is now using C++ 23:
Hyprland uses the C++23 standard, so both your compiler and your C++ library has to support that (
gcc>=13.0.0
orclang>=15
). On Clang-based systems libc++ may be used by default, so until libc++ supports C++23 you have to pass-stdlib=libstdc++
or switch to GCC.
So according to that it should be possible. When I was attempting to build it said to use c++2b for C++ 23.
If you just want to reinstall Hyprland, can you not install the older version stored in hostdir/binpkgs? Or rebuild it with a fresh clone if you've removed that?
Thank you!!! I didn't realize that the built packages didn't get deleted. And no, I cannot build the old version:
I wonder if it has to do with the fact that libdisplay-info is in the official repos now? I should see if re-cloning the repos would help.
I should probably mention that I was trying to build v0.31.0 😅
According to the Hyprland wiki, it is now using C++ 23:
Hyprland uses the C++23 standard, so both your compiler and your C++ library has to support that (
gcc>=13.0.0
orclang>=15
). On Clang-based systems libc++ may be used by default, so until libc++ supports C++23 you have to pass-stdlib=libstdc++
or switch to GCC.So according to that it should be possible. When I was attempting to build it said to use c++2b for C++ 23.
Yep, it should be possible, it's just a little annoying to make xbps-src use Clang - at least doing it the technically "correct" way of modifying common/xbps-src/shutils/common.sh
- but I suppose you can just modify the variables in do_build
just before compiling Hyprland.
Anyways, this is a conversation for issue #12
./xbps-src pkg hyprland
after following instructions in README I wonder if it has to do with the fact that libdisplay-info is in the official repos now? I should see if re-cloning the repos would help.
Yes, they split libdisplay-info
with a separate -devel
subpackage which is what's causing problems. The same will likely happen if libliftoff
gets added.
About 5 days ago, after hyprland update, I and another person had the same error in the final stages of the build:
/usr/bin/ld: CMakeFiles/Hyprland.dir/src/Compositor.cpp.o: in function
CCompositor::initServer()': Compositor.cpp:(.text+0x116ca): undefined reference towlr_drm_lease_v1_manager_create' /usr/bin/ld: CMakeFiles/Hyprland.dir/src/events/Misc.cpp.o: in function
Events::listener_leaseRequest(wl_listener, void)': Misc.cpp:(.text+0x578): undefined reference towlr_drm_lease_request_v1_grant' /usr/bin/ld: Misc.cpp:(.text+0x59e): undefined reference to
wlr_drm_lease_request_v1_reject' /usr/bin/ld: CMakeFiles/Hyprland.dir/src/helpers/Monitor.cpp.o: in functionCMonitor::onConnect(bool)': Monitor.cpp:(.text+0x2485): undefined reference to
wlr_backend_is_drm' /usr/bin/ld: Monitor.cpp:(.text+0x2dcc): undefined reference towlr_drm_lease_v1_manager_offer_output' /usr/bin/ld: CMakeFiles/Hyprland.dir/src/render/Renderer.cpp.o: in function
CHyprRenderer::applyMonitorRule(CMonitor, SMonitorRule, bool)': Renderer.cpp:(.text+0xc369): undefined reference towlr_output_is_drm' /usr/bin/ld: Renderer.cpp:(.text+0xc82c): undefined reference to
wlr_drm_connector_add_mode' collect2: error: ld returned 1 exit status ninja: build stopped: subcommand failed. => ERROR: hyprland-0.29.1_1: do_build: 'cmake --build ./build --config Release --target all -j${XBPS_MAKEJOBS}' exited with 1 => ERROR: in do_build() at srcpkgs/hyprland/template:78 `