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 \

Reply via email to