* 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

Attachment: signature.asc
Description: PGP signature

Reply via email to