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 \