[Pkg-kde-extras] Debian: quassel build fails with DWZ errors when using LLVM-19 and DWARF-5
Sedat Dilek
sedat.dilek at gmail.com
Fri Nov 1 10:34:56 GMT 2024
OK.
Using dh_strip instead of dh_strip_nondeterminism (default) ...
root at iniza:/usr/bin# ll dh_strip*
-rwxr-xr-x 1 root root 15K 23. Aug 10:06 dh_strip
-rwxr-xr-x 1 root root 15K 23. Aug 10:06 dh_strip.debian
lrwxrwxrwx 1 root root 8 1. Nov 11:04 dh_strip_nondeterminism -> dh_strip
-rwxr-xr-x 1 root root 3,2K 24. Mai 09:55 dh_strip_nondeterminism.debian
... let me build with DWARF-5.
The file-sizes of DEBUG packages are a bit bigger:
$ du -k LATEST.MR12*/*dbgsym*.deb | sort -n
3376 LATEST.MR12/quassel-core-dbgsym_0.14.0-4~dileks_amd64.deb
3620 LATEST.MR12.dwarf5-strip-dh_strip/quassel-core-dbgsym_0.14.0-6~dileks_amd64.deb
5100 LATEST.MR12/quassel-client-dbgsym_0.14.0-4~dileks_amd64.deb
5516 LATEST.MR12.dwarf5-strip-dh_strip/quassel-client-dbgsym_0.14.0-6~dileks_amd64.deb
7184 LATEST.MR12/quassel-dbgsym_0.14.0-4~dileks_amd64.deb
7788 LATEST.MR12.dwarf5-strip-dh_strip/quassel-dbgsym_0.14.0-6~dileks_amd64.deb
Binary packages:
$ du -k LATEST.MR12*/quassel_*.deb | sort -n
1688 LATEST.MR12.dwarf5-strip-dh_strip/quassel_0.14.0-6~dileks_amd64.deb
1692 LATEST.MR12/quassel_0.14.0-4~dileks_amd64.deb
6816 LATEST.MR12.dwarf5-nostrip/quassel_0.14.0-5~dileks_amd64.deb
-Sedat-
On Fri, Nov 1, 2024 at 10:54 AM Sedat Dilek <sedat.dilek at gmail.com> wrote:
>
> Hi,
>
> today is a public holiday in Germany and I have time to play.
>
> [ INTRO - Let me introduce myself ]
>
> By heart and with love - I build my Linux-kernel with LLVM/Clang and
> LLVM tools (LLVM "binutils").
>
> 10+ years ago I provided quassel-nightly Debian packages for AMD64 for
> interested people.
> Quassel is an IRC-client based on QT-v5 and written in C++ and most
> people using KDE/desktop love it.
>
> [ MR12 ]
>
> By accident I fell over Merge-Request "MR12" in Debian's salsa GITLAB
> quassel repository.
> "RFC: Build with LLVM 16 and CFI enabled"
>
> Link: https://salsa.debian.org/qt-kde-team/extras/quassel/-/merge_requests/12/diffs?commit_id=b97aeec74b443679c958798ab55e21ea0dbe23fe
>
> [ THE EXPERIMENT ]
>
> After the transition to QT version 5.15.15 finished I was thinking of
> testing the MR12 patch.
>
> Link: https://release.debian.org/transitions/html/qtbase-abi-5-15-15.html
>
> [ TRYOUT-1 - Simple Rebuild ]
>
> First, I did a simple rebuild with NO changes (uses GCC toolchain +
> GNU/binutils).
>
> [ TRYOUT-2 - MR12 and LLVM-19 ]
>
> Second, I applied MR12 and built successfully with Debian's LLVM/Clang
> v19.1.2 (v19.1.3 is on the way).
>
> [ NUMBERS ]
>
> "Numbers talk, bullshit walks." (Linus Torvalds)
>
> $ du -m LATEST*/*dbgsym*.deb | sort -n
> 4 LATEST.MR12/quassel-core-dbgsym_0.14.0-4~dileks_amd64.deb
> 5 LATEST.MR12/quassel-client-dbgsym_0.14.0-4~dileks_amd64.deb
> 8 LATEST.MR12/quassel-dbgsym_0.14.0-4~dileks_amd64.deb
> 16 LATEST/quassel-core-dbgsym_0.14.0-3~dileks_amd64.deb
> 33 LATEST/quassel-client-dbgsym_0.14.0-3~dileks_amd64.deb
> 42 LATEST/quassel-dbgsym_0.14.0-3~dileks_amd64.deb
>
> $ du -k LATEST*/quassel_*amd64.deb | sort -n
> 1692 LATEST.MR12/quassel_0.14.0-4~dileks_amd64.deb
> 1868 LATEST/quassel_0.14.0-3~dileks_amd64.deb
> 6816 LATEST.MR12.dwarf5-nostrip/quassel_0.14.0-5~dileks_amd64.deb
>
> WOW, great numbers!
>
> [ DWARF VERSION 5 ]
>
> Oh, I forgot I am a DWARF-v5 lover (@Nick How it is going with the baby :-))!
>
> From Christian's MR12 patch:
>
> [ debian/rules ]
>
> export CC=clang
> export CXX=clang++
> export RANLIB=llvm-ranlib
> export AR=llvm-ar
> export DEB_CFLAGS_MAINT_APPEND=-gdwarf-4 -flto -fvisibility=hidden
> -fsanitize=cfi
> export DEB_CXXFLAGS_MAINT_APPEND=-gdwarf-4 -flto -fvisibility=hidden
> -fsanitize=cfi
> export DEB_LDFLAGS_MAINT_APPEND=-flto -fvisibility=hidden -fsanitize=cfi
>
> ^^ Uses DWARF-v4 + Clang-LTO + Clang-CFI
>
> [ TRYOUT-3 - DWARFv5 + nostrip ]
>
> INFO: Substitute -gdwarf-4 with -gdwarf-5
>
> $ LC_ALL=C DEB_BUILD_OPTIONS=nostrip debuild
>
> ^^ Work(s) Around - NOSTRIP
>
> [ TRYOUT-4 - DWARFv5 + strip ]
>
> $ LC_ALL=C DEB_BUILD_OPTIONS=strip debuild
> ...
> make[1]: Leaving directory '/home/dileks/src/quassel/quassel-0.14.0'
> dh_installlogrotate
> dh_icons
> dh_perl
> dh_link
> dh_strip_nondeterminism
> dh_compress
> dh_fixperms
> dh_missing
> dh_dwz -a
> dwz: debian/quassel-client/usr/bin/quasselclient: Unknown debugging
> section .debug_addr
> dwz: debian/quassel-core/usr/bin/quasselcore: Unknown debugging
> section .debug_addr
> dwz: debian/quassel/usr/bin/quassel: Unknown debugging section .debug_addr
> dh_dwz: error: dwz -- debian/quassel/usr/bin/quassel returned exit code 1
> dh_dwz: error: dwz -- debian/quassel-core/usr/bin/quasselcore returned
> exit code 1
> dh_dwz: error: dwz -- debian/quassel-client/usr/bin/quasselclient
> returned exit code 1
> dh_dwz: error: Aborting due to earlier error
> make: *** [debian/rules:23: binary] Error 25
> dpkg-buildpackage: error: fakeroot debian/rules binary subprocess
> returned exit status 2
> debuild: fatal error at line 1184:
> dpkg-buildpackage -us -uc -ui failed
>
> ^^ DWZ ERRORS
>
> Unsure how to solve this.
>
> [ TRYOUT-5 - DWZ + dwarf-5 ]
>
> dwz lists this option:
>
> -5, --dwarf-5 Emit DWARF 5 standardized supplementary object
> files instead of GNU extension .debug_altlink.
>
> I tried a dwz-wrapper:
>
> # cd /usr/bin/
> # mv dwz dwz.bin
> # ln -sf mydwz dwz
>
> [ mydwz ]
> #!/bin/bash
>
> dwz.bin --dwarf-5 "$@"
> -EOF-
>
> ^^ NO SUCCESS - the dwz-wrapper is used!
> ...
> dh_dwz -a
> dwz.bin: debian/quassel/usr/bin/quassel: Unknown debugging section .debug_addr
> dwz.bin: debian/quassel-client/usr/bin/quasselclient: Unknown
> debugging section .debug_addr
> dh_dwz: error: dwz -- debian/quassel/usr/bin/quassel returned exit code 1
> dh_dwz: error: dwz -- debian/quassel-client/usr/bin/quasselclient
> returned exit code 1
> dwz.bin: debian/quassel-core/usr/bin/quasselcore: Unknown debugging
> section .debug_addr
> dh_dwz: error: dwz -- debian/quassel-core/usr/bin/quasselcore returned
> exit code 1
> dh_dwz: error: Aborting due to earlier error
>
> My Debian system is based on unstable AMD64.
>
> CC LLVM Linux-kernel folks + some Debian folks LLVM, dwz, debhelper,
> quassel, QT/KDE and Christian.
>
> Any help appreciated.
>
> Best thanks.
>
> Best regards,
> -Sedat-
>
> P.S.: I want to use the FULL LLVM ECO system to build quassel/unstable
> AMD64 on Debian.
> Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Makefile#n473
More information about the pkg-kde-extras
mailing list