Fw: Bug#565049: therion: ftbfs with gcc-4.5
Guys - someone is testing if debian packages build with gcc 4.5, and therion doesn't. Anyone got any ideas how to fix this, or do we contend that it is actually a compiler bug? ----- Forwarded message from Matthias Klose <doko@debian.org> ----- From: Matthias Klose <doko@debian.org> Date: Wed, 13 Jan 2010 01:06:03 +0000 To: maintonly@bugs.debian.org Subject: Bug#565049: therion: ftbfs with gcc-4.5 Reply-To: Matthias Klose <doko@debian.org>, 565049-maintonly@bugs.debian.org X-Spam-Status: No, score=-3.6 required=4.5 tests=BAYES_00,RCVD_IN_DNSWL_LOW autolearn=ham version=3.2.5 Package: therion Version: 5.2.8-1 Severity: normal Tags: sid User: debian-gcc@lists.debian.org Usertags: ftbfs-gcc-4.5 The package fails to build in a test rebuild on at least amd64 with gcc-4.5/g++-4.5, but succeeds to build with gcc-4.4/g++-4.4. For the compiler version used, see: http://lists.debian.org/debian-devel/2010/01/msg00230.html The full build log can be found at: http://people.debian.org/~lucas/logs/2010/01/08b/therion_5.2.8-1_lsid64b.bui... The last lines of the build log are cwat the end of this report. The reason of the build failure is likely in the package (compiler or linker message found in the build log), if this turns out as a gcc bug, please reassign to the gcc-4.5 package. If the build ends with a message "confused by earlier errors, bailing out", please ignore it for now; these compiler errors are filed separately. [...] c++ -c -Wall -DTHLINUX -O2 -o thscraplp.o thscraplp.cxx c++ -c -Wall -DTHLINUX -O2 -o thscrapen.o thscrapen.cxx c++ -c -Wall -DTHLINUX -O2 -o thpoint.o thpoint.cxx c++ -c -Wall -DTHLINUX -O2 -o thline.o thline.cxx c++ -c -Wall -DTHLINUX -O2 -o tharea.o tharea.cxx c++ -c -Wall -DTHLINUX -O2 -o thlegenddata.o thlegenddata.cxx make -C ./mpost make[2]: Entering directory `/build/user-therion_5.2.8-1-amd64-g4N5cQ/therion-5.2.8/build-tree/therion/mpost' perl genmpost.pl reading therion.mp reading thPoint reading thLine reading thArea reading thText reading thSpecial reading thTrans done make[2]: Leaving directory `/build/user-therion_5.2.8-1-amd64-g4N5cQ/therion-5.2.8/build-tree/therion/mpost' c++ -c -Wall -DTHLINUX -O2 -o thmpost.o thmpost.cxx c++ -c -Wall -DTHLINUX -O2 -o thsymbolsets.o thsymbolsets.cxx c++ -c -Wall -DTHLINUX -O2 -o thjoin.o thjoin.cxx c++ -c -Wall -DTHLINUX -O2 -o thmap.o thmap.cxx c++ -c -Wall -DTHLINUX -O2 -o thexpmap.o thexpmap.cxx In file included from thexpmap.cxx:75:0: thsvg.h:26:79: error: cannot call constructor 'legenddata::legenddata' directly thsvg.h:26:79: note: for a function-style cast, remove the redundant '::legenddata' make[1]: *** [thexpmap.o] Error 1 make: *** [build-stamp] Error 2 make[1]: Leaving directory `/build/user-therion_5.2.8-1-amd64-g4N5cQ/therion-5.2.8/build-tree/therion' dpkg-buildpackage: error: debian/rules build gave error exit status 2 ----- End forwarded message ----- Wookey -- Principal hats: iEndian - Balloonboard - Toby Churchill - Emdebian http://wookware.org/
Wookey wrote:
Guys - someone is testing if debian packages build with gcc 4.5, and therion doesn't. Anyone got any ideas how to fix this, or do we contend that it is actually a compiler bug?
I have many debian and ubuntu machines. I could (most likely) get 4.5 on one of them. Could you give me a hint at how best to help? I have not actually used Therion yet, but wanted to start, since I really wanted LINUX based software. Is there a place I should go to get a snapshot from revision control (svn? git?) instead of the debian package? aaron
----- Forwarded message from Matthias Klose <doko@debian.org> -----
From: Matthias Klose <doko@debian.org> Date: Wed, 13 Jan 2010 01:06:03 +0000 To: maintonly@bugs.debian.org Subject: Bug#565049: therion: ftbfs with gcc-4.5 Reply-To: Matthias Klose <doko@debian.org>, 565049-maintonly@bugs.debian.org X-Spam-Status: No, score=-3.6 required=4.5 tests=BAYES_00,RCVD_IN_DNSWL_LOW autolearn=ham version=3.2.5
Package: therion Version: 5.2.8-1 Severity: normal Tags: sid User: debian-gcc@lists.debian.org Usertags: ftbfs-gcc-4.5
The package fails to build in a test rebuild on at least amd64 with gcc-4.5/g++-4.5, but succeeds to build with gcc-4.4/g++-4.4. For the compiler version used, see: http://lists.debian.org/debian-devel/2010/01/msg00230.html
The full build log can be found at: http://people.debian.org/~lucas/logs/2010/01/08b/therion_5.2.8-1_lsid64b.bui... The last lines of the build log are cwat the end of this report.
The reason of the build failure is likely in the package (compiler or linker message found in the build log), if this turns out as a gcc bug, please reassign to the gcc-4.5 package. If the build ends with a message "confused by earlier errors, bailing out", please ignore it for now; these compiler errors are filed separately.
[...] c++ -c -Wall -DTHLINUX -O2 -o thscraplp.o thscraplp.cxx c++ -c -Wall -DTHLINUX -O2 -o thscrapen.o thscrapen.cxx c++ -c -Wall -DTHLINUX -O2 -o thpoint.o thpoint.cxx c++ -c -Wall -DTHLINUX -O2 -o thline.o thline.cxx c++ -c -Wall -DTHLINUX -O2 -o tharea.o tharea.cxx c++ -c -Wall -DTHLINUX -O2 -o thlegenddata.o thlegenddata.cxx make -C ./mpost make[2]: Entering directory `/build/user-therion_5.2.8-1-amd64-g4N5cQ/therion-5.2.8/build-tree/therion/mpost' perl genmpost.pl reading therion.mp reading thPoint reading thLine reading thArea reading thText reading thSpecial reading thTrans done make[2]: Leaving directory `/build/user-therion_5.2.8-1-amd64-g4N5cQ/therion-5.2.8/build-tree/therion/mpost' c++ -c -Wall -DTHLINUX -O2 -o thmpost.o thmpost.cxx c++ -c -Wall -DTHLINUX -O2 -o thsymbolsets.o thsymbolsets.cxx c++ -c -Wall -DTHLINUX -O2 -o thjoin.o thjoin.cxx c++ -c -Wall -DTHLINUX -O2 -o thmap.o thmap.cxx c++ -c -Wall -DTHLINUX -O2 -o thexpmap.o thexpmap.cxx In file included from thexpmap.cxx:75:0: thsvg.h:26:79: error: cannot call constructor 'legenddata::legenddata' directly thsvg.h:26:79: note: for a function-style cast, remove the redundant '::legenddata' make[1]: *** [thexpmap.o] Error 1 make: *** [build-stamp] Error 2 make[1]: Leaving directory `/build/user-therion_5.2.8-1-amd64-g4N5cQ/therion-5.2.8/build-tree/therion' dpkg-buildpackage: error: debian/rules build gave error exit status 2
----- End forwarded message ----- Wookey
+++ Aaron Birenboim [2010-01-15 07:44 -0700]:
Wookey wrote:
Guys - someone is testing if debian packages build with gcc 4.5, and therion doesn't. Anyone got any ideas how to fix this, or do we contend that it is actually a compiler bug?
I have many debian and ubuntu machines. I could (most likely) get 4.5 on one of them.
That's easy: add experimental to your sources.list and aptitude update; aptitude install gcc-4.5 (http://packages.debian.org/experimental/gcc-4.5)
Could you give me a hint at how best to help?
Examinging the buildlog failure linked in the message may be sufficient to make the problem obvious to a C++-competent person. http://people.debian.org/~lucas/logs/2010/01/08b/therion_5.2.8-1_lsid64b.bui...
I have not actually used Therion yet, but wanted to start, since I really wanted LINUX based software.
Is there a place I should go to get a snapshot from revision control (svn? git?) instead of the debian package?
For this particualr problem checking against the Debian source first would be best. Once a patch that fixes it has been found we can apply that to 'latest'. Therion does not have a publically-accessible svn/git repo for the offical code (SFAIK). I have an svn repo for my own Debian development purposes, but it's currently out of date. To get the debian sources just do apt-get source therion The tarballs on the therion site remain definitive for upstream. Thanks for taking an interest - I hope someone can fix this. Wookey -- Principal hats: iEndian - Balloonboard - Toby Churchill - Emdebian http://wookware.org/
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Wookey wrote:
+++ Aaron Birenboim [2010-01-15 07:44 -0700]:
Wookey wrote:
Guys - someone is testing if debian packages build with gcc 4.5, and therion doesn't. Anyone got any ideas how to fix this, or do we contend that it is actually a compiler bug? I have many debian and ubuntu machines. I could (most likely) get 4.5 on one of them.
That's easy: add experimental to your sources.list and aptitude update; aptitude install gcc-4.5 (http://packages.debian.org/experimental/gcc-4.5)
Could you give me a hint at how best to help?
Examinging the buildlog failure linked in the message may be sufficient to make the problem obvious to a C++-competent person. http://people.debian.org/~lucas/logs/2010/01/08b/therion_5.2.8-1_lsid64b.bui...
c++ -c -Wall -DTHLINUX -O2 -o thexpmap.o thexpmap.cxx In file included from thexpmap.cxx:75:0: thsvg.h:26:79: error: cannot call constructor 'legenddata::legenddata' directly thsvg.h:26:79: note: for a function-style cast, remove the redundant '::legenddata' make[1]: *** [thexpmap.o] Error 1 make[1]: Leaving directory `/build/user-therion_5.2.8-1-amd64-9Je2GG/therion-5.2.8/build-tree/therion' make: *** [build-stamp] Error 2 dpkg-buildpackage: error: debian/rules build gave error exit status 2 This is an odd line of code, that I've never seen before. I'm not up-to-date on the latest versions of therion, or the compiler, but I have never seen such a declaration before: void thsvg(char * fname, int, legenddata ldata = legenddata::legenddata()); AFAIK, you can only define defaults (in ANSI C++) to constant parameters. Also, it should invoke the default constructor when creating a temporary object, so the explicit call should not be necessary. (And it seems incorrect to me, but it seems that several compilers took it ok) Hence, I would think that the call declaration: void thsvg(char * fname, int, const legenddata ldata = legenddata::legenddata()); might be more correct, although void thsvg(char * fname, int, const legenddata ldata = legenddata()); might work. To be safe, I might just switch over to overloading this function. I'm pretty sure every compiler will like: - ------------------------------------------------------- void thsvg(char * fname, int, legenddata ldata); inline void thsvg(char * fname, int i) { legenddata ldata; thsvg(fname,i,ldata); } - ----------------------------------------------------- in thsvg.h If you don't like the inline, you could just overload another function, without the optional parameter, and implement the 2 parameter version in thsvg.cxx. I am also shocked to see the default parameter definition in the .cxx implementation. Again, I can see where it could work, but I am surprised. The typical way to do this is to #include "thsvg.h" in thsg.cxx, and NOT declare the default parameter in the implementation. This way, you get the compiler to double-check that your declarations match. Let me know if you can/wish to give these suggestions a try. If that does not solve the problem, I can go back to trying to create a full, latest version build environment. But... that will take a while. There are many dependencies to BUILD therion that I do not have on my machines, by default. Was there some sort of apt-get command that would install all the build-dependencies for a source package? aaron To summarize: I recommend overloading that function with a 2 and 3 parameter version. Just do an inline declaration for the 2 parameter version that supplies the default parameter. Remove references to the default parameter constructor in the 3 parameter declaration (.h), and in the implementation (.cxx). This might not be as "slick" as what you have now, but it might be more universal. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAktQ2HcACgkQY9pzGJrjUYC+pwCgttfkTr7vRbEccWeEUNXceclW ES0An2buDaxRfKMknl1+bpabRFQVLvoF =94TG -----END PGP SIGNATURE-----
On Fri, Jan 15, 2010 at 10:04 PM, Aaron Birenboim <aaron@boim.com> wrote:
To be safe, I might just switch over to overloading this function. I'm pretty sure every compiler will like: - ------------------------------------------------------- void thsvg(char * fname, int, legenddata ldata); inline void thsvg(char * fname, int i) { legenddata ldata; thsvg(fname,i,ldata); } - ----------------------------------------------------- in thsvg.h
Hi, the default parameter value is actually not necessary (it is a remnant of some weird testing, I guess -- this function is never called with 2 parameters), so simple void thsvg(const char * fname, int, legenddata ldata); is enough for header (similarly for cxx implementation). Will be fixed in the sources. Martin
+++ Aaron Birenboim [2010-01-15 14:04 -0700]:
This is an odd line of code, that I've never seen before. I'm not up-to-date on the latest versions of therion, or the compiler, but I have never seen such a declaration before:
void thsvg(char * fname, int, legenddata ldata = legenddata::legenddata());
<helpful suggestions>
Let me know if you can/wish to give these suggestions a try.
I will indeed see how those go.
If that does not solve the problem, I can go back to trying to create a full, latest version build environment. But... that will take a while. There are many dependencies to BUILD therion that I do not have on my machines, by default. Was there some sort of apt-get command that would install all the build-dependencies for a source package?
yes: apt-get build-dep therion (isn't Debian lovely :-) (you should also have the 'build-essential' package installed) If that doesn't work complain at me - it should. Wookey -- Principal hats: iEndian - Balloonboard - Toby Churchill - Emdebian http://wookware.org/
participants (3)
-
Aaron Birenboim -
Martin Budaj -
Wookey