ardour-0.9_beta17 needs some GCC-3.4 tweaks: g++ -DHAVE_CONFIG_H -I. -I. -I. -D_REENTRANT -O3 -fomit-frame-pointer -ffast-math -fstrength-reduce -fmove-all-movables -Wall -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I/var/tmp/portage/ardour-0.9_beta17/work/ardour-0.9beta17.1/libs/sigc++ -I/var/tmp/portage/ardour-0.9_beta17/work/ardour-0.9beta17.1/libs/sigc++/sigc++/config -I/var/tmp/portage/ardour-0.9_beta17/work/ardour-0.9beta17.1/libs/pbd -I/var/tmp/portage/ardour-0.9_beta17/work/ardour-0.9beta17.1/libs/midi++ -I/var/tmp/portage/ardour-0.9_beta17/work/ardour-0.9beta17.1/libs/ardour -I/var/tmp/portage/ardour-0.9_beta17/work/ardour-0.9beta17.1/libs/soundtouch -I/usr/include/libxml2 -c -o pool.o `test -f 'pool.cc' || echo './'`pool.cc pathscanner.cc: In member function `std::string* PathScanner::find_first(const std::string&, const std::string&, bool, bool)': pathscanner.cc:171: error: `vector_delete' undeclared (first use this function) pathscanner.cc:171: error: (Each undeclared identifier is reported only once for each function it appears in.) pathscanner.cc: In member function `std::string* PathScanner::find_first(const std::string&, bool (*)(const std::string&, void*), void*, bool, bool)': pathscanner.cc:198: error: `vector_delete' undeclared (first use this function) make[4]: *** [pathscanner.o] Error 1 make[4]: *** Waiting for unfinished jobs.... make[4]: Leaving directory `/var/tmp/portage/ardour-0.9_beta17/work/ardour-0.9beta17.1/libs/pbd' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/var/tmp/portage/ardour-0.9_beta17/work/ardour-0.9beta17.1/libs/pbd' make[2]: *** [all] Error 2 make[2]: Leaving directory `/var/tmp/portage/ardour-0.9_beta17/work/ardour-0.9beta17.1/libs/pbd' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/ardour-0.9_beta17/work/ardour-0.9beta17.1/libs' make: *** [all-recursive] Error 1 Reproducible: Always Steps to Reproduce: 1. 2. 3. Actual Results: Expected Results:
Created attachment 34962 [details, diff] ardour-0.9_beta17-gcc34.patch I'm using gcc-3.4.1 on x86. I'm submitting what I've done so far, but it looks like this one has lots of problems. After my patch, it dies in libs/gtkmm.
Seems upstream is aware of that issue: http://www.ardour.org/mantis/bug_view_page.php?bug_id=0000534 Maybe you can help with that effort? There's already some of the gcc 3.4 patches.
Created attachment 35141 [details, diff] ardour-0.9_beta17-gcc34.patch Thanks for the link! Since the old GTK and libsigc++ code is being phased out of ardour in the near future, there honestly doesn't seem much point in working on it upstream. As paul says, "we are not really interested in patching gtkmm". In the interest of getting gcc-3.4 working for Gentoo users, I've done my best to create a short patch to make ardour compile and run with gcc-3.3 or 3.4. Most of my work is based on Simone Piunno's patches. To keep my patch small, I've simply removed a number of "protected:" keywords rather than rewriting the GTK code to use inheritance properly. Obviously this is bad C++ coding style, but as far as I know, it will not alter the functionality of the class. I'll be doing more extensive testing as soon as I can. Let me know if I've made some horrible mistake; I'm new here ;-)
Patrick, thanks for the help. Everyone started out "new here," and based on your apparent enthusiasm, I'd say it's a good beginning. ooh... and if you want to help out with more gcc-3.4 patches, that would be greatly appreciated... just search bugzilla, and take note of the gracious devs =) Eldad, can you please test this patch and commit?
Patrick, thanks for the patch! It applies cleanly against the sources. I'll do the QA (though it will take me abit, hardware limitations...) And also, it'll be great if you take it upstream - I think paul will be willing to merge this, the patch looks (beside two lines I didn't quite follow) pretty simple.
Unfortunately, ardour segfaults on startup, at least for me. It's either a problem with gcc-3.4 itself or something to do with operator* in base.h. The Gtk::wrap function doesn't exist, so I thought it would be safe to just remove that, like Simone did. Perhaps not. I'll take a closer look at this tomorrow when I have time.
Nope, ardour segfaults if I use this patch and compile with gcc-3.3.4 too. To clarify, it doesn't segfault immediately; it dies after loading my configuration files and initializing some audio stuff, which is just about when it would normally start the GUI.
Confirmed; removing the patch to operator* in base.h and leaving the rest allows ardour to compile and run correctly on gcc-3.3.4. I'll figure out how to patch this correctly ASAP.
Created attachment 35196 [details, diff] ardour-0.9_beta17-gcc34.patch Alright! This one starts and doesn't segfault. I'll submit my changes upstream after this gets more thoroughly tested.
Ok, I've just started compiling it, I'll take it for a spin, and if it looks stable, I'll commit it. Thanks, Patrick!
Looks good. Though I had a crash with beta17, but it also occured without the patch. and I think it's an open issue in ardour (scheduled next tarball) I'll be putting this in.
ok, the updated ebuild is now in portage.