package doxygen tags 338099 +patch thanks bts This bug is a problem with the unmaintained subset of Qt that is copied into Doxygen. It would be better to build against a maintained version of Qt that is already in Debian, rather than the outdated fork shipped from the Doxygen upstream. Or maybe upstream should just pull a new version of Qt.
In any case, this is a problem with references to members of packed structs (the packing is only enabled on ARM). A patch to build with gcc 3.4 is at http://home.mchsi.com/~cmisip/gcc-3.4-patch, but it doesn't work with 4.0 (tested by adding attribute((packed)) to my x86 build). If we look at the libqt3-headers package, we see that the packing checks for ARM now have the Q_NO_PACKED_REFERENCE as in the patch, but qstring.h has had the non-const versions of cell and row removed, replaced by setCell and setRow. I think this is also the correct solution for the Doxygen fork of Qt, as in the attached patch. A scan through the source code finds no call sites where a mutable reference return value is required, so we can safely drop these two methods. Patch attached. Thanks, - Jeremy
diff -urN doxygen-1.4.5/debian/changelog doxygen-1.4.5.new/debian/changelog --- doxygen-1.4.5.orig/debian/changelog 2005-12-04 20:37:17.000000000 +0000 +++ doxygen-1.4.5/debian/changelog 2005-12-04 20:19:19.000000000 +0000 @@ -1,3 +1,10 @@ +doxygen (1.4.5-1.1) unstable; urgency=low + + * Remove unused code (QChar::row, QChar::col) that does not build with + gcc 4.0 (closes: #338099). + + -- Jeremy Nimmer <[EMAIL PROTECTED]> Sun, 4 Dec 2005 15:18:45 -0500 + doxygen (1.4.5-1) unstable; urgency=low * New upstream version. diff -urN doxygen-1.4.5/debian/patches/qstring-gcc40.dpatch doxygen-1.4.5.new/debian/patches/qstring-gcc40.dpatch --- doxygen-1.4.5.orig/debian/patches/qstring-gcc40.dpatch 1970-01-01 00:00:00.000000000 +0000 +++ doxygen-1.4.5/debian/patches/qstring-gcc40.dpatch 2005-12-04 20:18:11.000000000 +0000 @@ -0,0 +1,41 @@ +#! /bin/sh -e + +# DP: Remove unused code that does not build with gcc 4.0 (#338099). + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "usage: `basename $0`: -patch|-unpatch [-d <srcdir>]" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "usage: `basename $0`: -patch|-unpatch [-d <srcdir>]" + exit 1 +esac +exit 0 + +--- qtools/qstring.h.orig 2004-12-01 19:26:16.000000000 +0000 ++++ qtools/qstring.h 2005-12-04 20:09:01.000000000 +0000 +@@ -163,8 +163,13 @@ + bool isLetterOrNumber() const; + bool isDigit() const; + ++ // the non-const ::cell and ::row cannot be compiled with gcc 4.0 on ARM, ++ // so they have been removed; the methods are not needed for doxygen ++#if 0 + uchar& cell() { return cl; } + uchar& row() { return rw; } ++#endif ++ + uchar cell() const { return cl; } + uchar row() const { return rw; } + diff -urN doxygen-1.4.5/debian/rules doxygen-1.4.5.new/debian/rules --- doxygen-1.4.5.orig/debian/rules 2005-12-04 20:37:17.000000000 +0000 +++ doxygen-1.4.5/debian/rules 2005-12-04 20:19:51.000000000 +0000 @@ -129,6 +129,7 @@ patchdir = debian/patches debian_patches = \ + qstring-gcc40 \ system-libpng \ install-docs \ manpages \