- Package:
- src:hyprland
- Source:
- src:hyprland
- Submitter:
- Jochen Sprickerhof
- Date:
- 2026-09-02 11:33:02 UTC
- Severity:
- normal
Hi, src:hyprland in unstable can't migrate to testing because the QA infrastructure couldn't reproduce some binary packages in unstable while it could reproduce the version in testing [1, 2]. From the diff it looks like some randomness is compiled in, maybe due to some auto generated source code? Based on the diff to -1 it could also be in one of the build dependencies. Feel free to reach out if you need help debugging the problem but I assume it will not be easy. Alternatively you can ask the release team for an exception [3]. Cheers Jochen [1] https://qa.debian.org/excuses.php?package=hyprland [2] https://lists.debian.org/debian-devel-announce/2026/05/msg00001.html [3] https://lists.debian.org/debian-devel/2026/05/msg00383.html
Heya, Yeah it's been happening a while. I've inspected the diffoscope but can't tell what's going on because the diff is so huge. From my testing it looks like there are just two variants of hyprland binaries that gets produced, rather than randomness that does not resolve -- clicking rebuild once or twice makes it succeed. We could really use help debugging this issue, because a bunch of us in the team have tried to take a look at it and not figured out what's going on.
Heya, Yeah it's been happening a while. I've inspected the diffoscope but can't tell what's going on because the diff is so huge. From my testing it looks like there are just two variants of hyprland binaries that gets produced, rather than randomness that does not resolve -- clicking rebuild once or twice makes it succeed. We could really use help debugging this issue, because a bunch of us in the team have tried to take a look at it and not figured out what's going on.
Hi, * Chow Loong Jin <hyperair@debian.org> [2026-08-25 10:40]: I did two test builds locally and got different results in: build/CMakeFiles/hyprland_lib.dir/src/managers/fullscreen/FullscreenController.cpp.o build/CMakeFiles/hyprland_lib.dir/src/plugins/PluginAPI.cpp.o build/CMakeFiles/hyprland_lib.dir/src/protocols/XDGShell.cpp.o For all of them the start of section headers, as reported by readelf -a was different, as well as all addresses based on that. I tried rerunning the gcc commands for those but all produced the same result and building the package again also produced the same result. I also did not find anything relevant that could explain the different offset so currently I am stuck here. Do you have any idea how to trigger different results or why the offset would be different? Cheers Jochen
Thanks for the help! I hadn't gotten as far as examining the individual object files, but I did do some testing locally, here are my findings: - sbuild multiple times from the git packaging seems to generate the same binaries (including dbgsym) - debrebuild seems to generate a different NT_GNU_BUILD_ID value every time, but no other changes in the Hyprland binary itself. - diffing the output of `readelf --all usr/bin/Hyprland` and `objdump --disassemble usr/bin/Hyprland` of each variant shows that only the build ID changes, nothing else - diffing the output of `readelf --all --debug-dump` on the debug shows a lot of different offsets, but the diff output is 3.2GB and I haven't managed to figure out what's different apart from offsets. Since you've managed to get to different variants of the build directory, are you able to checksum all the files there and see what other files are different? There should be some autogenerated sources in - src/protocols (generated by protocolnew calls in CMakeLists.txt) - src/config/lua/DefaultConfigBytes.hpp (generated by xxd from hyprland.lua) - src/render/shaders/Shaders.hpp (generated by scripts/generateShaderIncludes.sh, also see Fix-shader-inclusion-order.patch) How were you able to grab the build directory out, btw? I haven't found a way to do so with `debrebuild`.
* Chow Loong Jin <hyperair@debian.org> [2026-09-02 18:40]:
That sounds strange as debrebuild is only calling sbuild. Do you call
debrebuild with the buildinfo from your sbuild run?
How exactly do you call sbuild and debrebuild?
That seems consistent with my findings. The question is why the offsets
are different. My next step would be to safe all input files to the gcc
call and check if we can reproduce the different offsets by calling gcc
alone. Could you try this?
Files hyprland-0.56.2+ds.1/build/CMakeFiles/4.3.4/CMakeDetermineCompilerABI_C.bin and hyprland-0.56.2+ds/build/CMakeFiles/4.3.4/CMakeDetermineCompilerABI_C.bin differ
Files hyprland-0.56.2+ds.1/build/CMakeFiles/4.3.4/CMakeDetermineCompilerABI_CXX.bin and hyprland-0.56.2+ds/build/CMakeFiles/4.3.4/CMakeDetermineCompilerABI_CXX.bin differ
Files hyprland-0.56.2+ds.1/build/CMakeFiles/CMakeConfigureLog.yaml and hyprland-0.56.2+ds/build/CMakeFiles/CMakeConfigureLog.yaml differ
Files hyprland-0.56.2+ds.1/build/CMakeFiles/hyprland_lib.dir/cmake_pch.hxx.gch and hyprland-0.56.2+ds/build/CMakeFiles/hyprland_lib.dir/cmake_pch.hxx.gch differ
Files hyprland-0.56.2+ds.1/build/CMakeFiles/hyprland_lib.dir/src/managers/fullscreen/FullscreenController.cpp.o and hyprland-0.56.2+ds/build/CMakeFiles/hyprland_lib.dir/src/managers/fullscreen/FullscreenController.cpp.o differ
Files hyprland-0.56.2+ds.1/build/CMakeFiles/hyprland_lib.dir/src/plugins/PluginAPI.cpp.o and hyprland-0.56.2+ds/build/CMakeFiles/hyprland_lib.dir/src/plugins/PluginAPI.cpp.o differ
Files hyprland-0.56.2+ds.1/build/CMakeFiles/hyprland_lib.dir/src/protocols/XDGShell.cpp.o and hyprland-0.56.2+ds/build/CMakeFiles/hyprland_lib.dir/src/protocols/XDGShell.cpp.o differ
Files hyprland-0.56.2+ds.1/build/dumpabiver and hyprland-0.56.2+ds/build/dumpabiver differ
Files hyprland-0.56.2+ds.1/build/Hyprland and hyprland-0.56.2+ds/build/Hyprland differ
Files hyprland-0.56.2+ds.1/build/libhyprland_lib.a and hyprland-0.56.2+ds/build/libhyprland_lib.a differ
Files hyprland-0.56.2+ds.1/debian/.debhelper/hyprland/dbgsym-build-ids and hyprland-0.56.2+ds/debian/.debhelper/hyprland/dbgsym-build-ids differ
Files hyprland-0.56.2+ds.1/debian/.debhelper/hyprland/dbgsym-root/DEBIAN/control and hyprland-0.56.2+ds/debian/.debhelper/hyprland/dbgsym-root/DEBIAN/control differ
Files hyprland-0.56.2+ds.1/debian/.debhelper/hyprland/dbgsym-root/DEBIAN/md5sums and hyprland-0.56.2+ds/debian/.debhelper/hyprland/dbgsym-root/DEBIAN/md5sums differ
Only in hyprland-0.56.2+ds/debian/.debhelper/hyprland/dbgsym-root/usr/lib/debug/.build-id: 39
Only in hyprland-0.56.2+ds.1/debian/.debhelper/hyprland/dbgsym-root/usr/lib/debug/.build-id: f8
Files hyprland-0.56.2+ds.1/debian/hyprland/DEBIAN/md5sums and hyprland-0.56.2+ds/debian/hyprland/DEBIAN/md5sums differ
Files hyprland-0.56.2+ds.1/debian/hyprland/usr/bin/hyprland and hyprland-0.56.2+ds/debian/hyprland/usr/bin/hyprland differ
Files hyprland-0.56.2+ds.1/debian/hyprland/usr/bin/Hyprland and hyprland-0.56.2+ds/debian/hyprland/usr/bin/Hyprland differ
Files hyprland-0.56.2+ds.1/debian/tmp/usr/bin/Hyprland and hyprland-0.56.2+ds/debian/tmp/usr/bin/Hyprland differ
I actually just compile on my normal system but you can do it in sbuild
and debrebuild with this in your sbuild.conf:
$external_commands = {"post-build-commands" => [ [ '%e tar c %p > snapshot.tar' ] ]};
Cheers Jochen