* Chow Loong Jin <[email protected]> [2026-09-02 18:40]:
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.
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?
- 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.
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?
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)
They where all the same. The complete diff was: 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
How were you able to grab the build directory out, btw? I haven't found a way to do so with `debrebuild`.
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
signature.asc
Description: PGP signature

