Fountain Development Notes
General Stuff
Fountain is written as a C++ application. It has been extensively tested on Debian Linux, Mac OS 10.3.9, and Mac OS 10.4.x.
Comment from mekstran 2006-03-24 18:56
Is it possible to support gcc 3.3? Debian Stable ships 3.3, as does Mac OS X 10.3.9. It seems to me that, by not supporting that GCC version, we are eliminating fountain from running well on some still-active platforms.
Comment from samm 2006-03-24 19:20
The loki test suite does not build using gcc 3.3, I don't remember what fails, something in the small object allocator. It's been discussed on the loki mailing list, I'll try to dig up a link. Is gcc 3.4 in the debian stable branch?
Comment from samm 2006-03-24 21:54
Ok, I just tried to compile Fountain using gcc 3.3 on my laptop. I had to change my uses of -iquote to -I in the makefile, but it does compile. There some linking errors with some symbols in the Loki sources:
g++-3.3 -Wno-system-headers -pedantic -Wall -W -Wundef -g -Woverloaded-virtual -Wparentheses -Wshadow -Wcomment -Wconversion -fno-inline -std=c++98 -o fountainServer ../source/server/NodeData.o ../source/server/ServerData.o ../source/server/server.o ../source/server/FountainServer.o ../source/server/ServerMessage.o ../source/common/Hostname.o ../source/common/FountainErrors.o ../source/common/FountainMessage.o ../source/common/FountainWireProt.o ../source/common/FountainSocketHandlers.o ../source/common/NodeID.o ../source/common/Timer.o ../source/common/Asserter.o ../source/common/Loki/Singleton.o ../source/common/Loki/SmallObj.o -lpcre -lz -lcrypto -lssl -lxerces-c -lbamboo ld: Undefined symbols: __ZNSt24__default_alloc_templateILb1ELi0EE10deallocateEPvm __ZNSt24__default_alloc_templateILb1ELi0EE8allocateEm
I'll look into this and see if there's a way to support gcc 3.3.
Comment from samm 2006-03-24 23:05
I just built Fountain without any issues using gcc 3.4 on 4pack, so unless there's a specific reason to support gcc 3.3 I think it's too much work to do so. I looked into the changelog for gcc 3.4, they fixed a whole slew of template issues to be more in compliance with the C++ standard. After a quick glance, the addition of "you must use the typename and template keywords to disambiguate dependent names" is probably what Loki requires, and apparantly was not supported in gcc 3.3.
I could not find any mention of why gcc 3.3 is not supported on the Loki mailing list. I know they supported it at one time, since the book this library is based on was published in 2001 which is 3 years before gcc 3.4 was released!
http://gcc.gnu.org/gcc-3.4/changes.html#cplusplus
Comment from mekstran 2006-03-25 09:27
I just did some poking around, and gcc 3.4 is available in Stable as the gcc-3.4 package. The default GCC is 3.3.x; I don't know what (if any) difference this makes. We'll just have to tell people to use gcc-3.4 (and any stable debian packages we build will need to build-depend on gcc-3.4).
Comment by samm on Wed Apr 5 14:06:53 2006
I just tried to compile Fountain on 4pack using gcc 3.3.5, it works just fine. Aside from the xerces-c library being linked against libstdc++.so.6 and gcc 3.3.5 linking Fountain against libstc++.so.5, it should run without issues.
I altered the wiki:Fountain/Installation page to say gcc 3.3 has not been extensively tested, so your mileage may vary.
