Linux Collaboration
by Ben Garney · in Torque Game Engine · 11/24/2005 (1:18 am) · 490 replies
Hey guys,
Based on the discussion happening at Jeff's .plan, I'm starting a thread here in the private forums so that Linux Torque developers who are interested in seeing stronger Linux support can get more involved in the development process.
This is also a chance to help get more Torque projects onto Linux. There's a bit of a shortage of reliable Linux-enabled developers that are willing to do builds, help port, etc.
So if you want to see across-the-board Linux support happen, you're a good dev, and you're willing to donate a little time to the cause, consider volunteering. :)
(And don't think this is a thankless job, either - of the four Linux guys I've worked with, one now works at GG doing XBox 360 development, one does builds for many games, one is able to make money doing contract work, and another is working on a kick ass RTS with a now-GG-employee... This is a great opportunity to get more involved in professional game dev, get some nice perks, or just earn the respect & adulation of your peers.)
Having a list of people who are interested in this sort of thing will be a big boost to anyone trying to get their product on Linux, including things like GG getting future Torque releases out. :) Instead of scouring the web, people can just check here. Fast, quick, easy.
Thanks for taking the time to get involved!
Ben
Based on the discussion happening at Jeff's .plan, I'm starting a thread here in the private forums so that Linux Torque developers who are interested in seeing stronger Linux support can get more involved in the development process.
This is also a chance to help get more Torque projects onto Linux. There's a bit of a shortage of reliable Linux-enabled developers that are willing to do builds, help port, etc.
So if you want to see across-the-board Linux support happen, you're a good dev, and you're willing to donate a little time to the cause, consider volunteering. :)
(And don't think this is a thankless job, either - of the four Linux guys I've worked with, one now works at GG doing XBox 360 development, one does builds for many games, one is able to make money doing contract work, and another is working on a kick ass RTS with a now-GG-employee... This is a great opportunity to get more involved in professional game dev, get some nice perks, or just earn the respect & adulation of your peers.)
Having a list of people who are interested in this sort of thing will be a big boost to anyone trying to get their product on Linux, including things like GG getting future Torque releases out. :) Instead of scouring the web, people can just check here. Fast, quick, easy.
Thanks for taking the time to get involved!
Ben
#202
12/15/2005 (3:11 pm)
CVS and SVN are synced.
#203
12/15/2005 (3:22 pm)
Woot! Time to fry the server!
#204
to:
The normal client and tools build in both DEBUG and RELEASE mode as long as you build the client before the tools. Both clients appear to run fine and the one run I did of map2difPlus.bin worked also.
I was unable to build a dedicated server though. A "make clean; make dedicated" configured for release fails on:
I didn't look very far to see why. I think this is a known problem, i.e. something someone else pointed out above, but I've run out of time to play with this for now.
12/15/2005 (3:30 pm)
Partial success under SuSE 9.3 w/ gcc (GCC) 3.3.5 20050117 (prerelease) (SUSE Linux) and the change below from CVS current this afternoon:ifeq "$(OS)" "WIN32" SOURCE.ENGINE += $(SOURCE.PLATFORM$(OS)) else SOURCE.ENGINE += $(SOURCE.PLATFORM$(OS)DEDICATED) endif
to:
SOURCE.ENGINE += $(SOURCE.PLATFORM$(OS))
The normal client and tools build in both DEBUG and RELEASE mode as long as you build the client before the tools. Both clients appear to run fine and the one run I did of map2difPlus.bin worked also.
I was unable to build a dedicated server though. A "make clean; make dedicated" configured for release fails on:
--> Compiling platformX86UNIX/x86UNIXSemaphore.cc platformX86UNIX/x86UNIXSemaphore.cc: In static member function 'static void* Semaphore::createSemaphore(unsigned int)': platformX86UNIX/x86UNIXSemaphore.cc:20: error: 'SDL_sem' undeclared (first use this function) platformX86UNIX/x86UNIXSemaphore.cc:20: error: (Each undeclared identifier is reported only once for each function it appears in.) platformX86UNIX/x86UNIXSemaphore.cc:20: error: 'semaphore' undeclared (first use this function) platformX86UNIX/x86UNIXSemaphore.cc:21: error: 'SDL_CreateSemaphore' undeclared (first use this function) platformX86UNIX/x86UNIXSemaphore.cc: In static member function 'static void Semaphore::destroySemaphore(void*)': platformX86UNIX/x86UNIXSemaphore.cc:29: error: syntax error before ')' token platformX86UNIX/x86UNIXSemaphore.cc: In static member function 'static bool Semaphore::acquireSemaphore(void*, bool)': platformX86UNIX/x86UNIXSemaphore.cc:37: error: syntax error before ')' token platformX86UNIX/x86UNIXSemaphore.cc: At global scope: platformX86UNIX/x86UNIXSemaphore.cc:41: error: syntax error before 'else' platformX86UNIX/x86UNIXSemaphore.cc: In static member function 'static void Semaphore::releaseSemaphore(void*)': platformX86UNIX/x86UNIXSemaphore.cc:53: error: syntax error before ')' token make[1]: *** [out.GCC3.RELEASE/platformX86UNIX/x86UNIXSemaphore.obj] Error 1 make: *** [dedicated] Error 2
I didn't look very far to see why. I think this is a known problem, i.e. something someone else pointed out above, but I've run out of time to play with this for now.
#205
Now though dedicated seems to always fail with the following message even with the changes you suggested above.
Loading compiled script creator/ui/InspectDlg.gui.
Warning: (gui/core/guiTypes.cc @ 347) GuiControlProfile: requested gui profile (GuiDialogProfile) does not exist.
Fatal: (gui/core/guiTypes.cc @ 351) GuiControlProfile: unable to find specified profile (GuiDialogProfile) and GuiDefaultProfile does not exist!
Alert: Fatal: (gui/core/guiTypes.cc @ 351) GuiControlProfile: unable to find specified profile (GuiDialogProfile) and GuiDefaultProfile does not exist!
Nonzero exit code: 1, triggering SIGSEGV for core dump
% Segmentation fault
I tried again the version i was testing this morning and it gives the same result, so i guess i did see things that weren't :(
I've run out of time for time today will try again tomorrow morning.
12/15/2005 (4:01 pm)
Ron@ Just recompiled all of it from a clean checkout, only issue is i had to add -L/usr/X11R6/lib to LINK.LIBS.SERVER in mk/conf.UNIX.mk to get dedicated to compile. Now though dedicated seems to always fail with the following message even with the changes you suggested above.
Loading compiled script creator/ui/InspectDlg.gui.
Warning: (gui/core/guiTypes.cc @ 347) GuiControlProfile: requested gui profile (GuiDialogProfile) does not exist.
Fatal: (gui/core/guiTypes.cc @ 351) GuiControlProfile: unable to find specified profile (GuiDialogProfile) and GuiDefaultProfile does not exist!
Alert: Fatal: (gui/core/guiTypes.cc @ 351) GuiControlProfile: unable to find specified profile (GuiDialogProfile) and GuiDefaultProfile does not exist!
Nonzero exit code: 1, triggering SIGSEGV for core dump
% Segmentation fault
I tried again the version i was testing this morning and it gives the same result, so i guess i did see things that weren't :(
I've run out of time for time today will try again tomorrow morning.
#206
Thanks for the update! I am at home now and will begin digging into a few issues that were reported today.
@MattF:
Thanks for sync'ing up CVS with SVN
-Ron
12/15/2005 (4:12 pm)
@Benoit:Thanks for the update! I am at home now and will begin digging into a few issues that were reported today.
@MattF:
Thanks for sync'ing up CVS with SVN
-Ron
#207
Wonder if there is a distro issue we are seeing... I can compiler a clean dedicated without that change to the conf.UNIX.mk
I'll make the change to the mk file and see if it breaks anything on my end
-Ron
12/15/2005 (4:16 pm)
@Benoit:Wonder if there is a distro issue we are seeing... I can compiler a clean dedicated without that change to the conf.UNIX.mk
dgl/gTexManager.h:428:26: warning: no newline at end of file
--> Compiling ts/tsTransform.cc
--> Compiling platform/platformNetAsync.cc
--> Compiling platformX86UNIX/x86UNIXCPUInfo.cc
--> Compiling platformX86UNIX/x86UNIXConsole.cc
--> Compiling platformX86UNIX/x86UNIXDedicatedStub.cc
--> Compiling platformX86UNIX/x86UNIXFileio.cc
--> Compiling platformX86UNIX/x86UNIXIO.cc
--> Compiling platformX86UNIX/x86UNIXMath.cc
--> Compiling platformX86UNIX/x86UNIXMath_ASM.cc
--> Compiling platformX86UNIX/x86UNIXMemory.cc
--> Compiling platformX86UNIX/x86UNIXMutex.cc
--> Compiling platformX86UNIX/x86UNIXNet.cc
--> Compiling platformX86UNIX/x86UNIXProcessControl.cc
--> Compiling platformX86UNIX/x86UNIXSemaphore.cc
--> Compiling platformX86UNIX/x86UNIXStrings.cc
--> Compiling platformX86UNIX/x86UNIXThread.cc
--> Compiling platformX86UNIX/x86UNIXTime.cc
--> Compiling platformX86UNIX/x86UNIXWindow.cc
--> Compiling platformX86UNIX/x86UNIXUtils.cc
--> Linking out.GCC3.RELEASE/torqueDemod.bin
ryacketta@striker:~/clean_tge_1.4RC2$ gcc -v
Reading specs from /usr/lib/gcc-lib/i486-linux/3.3.5/specs
Configured with: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --enable-__cxa_atexit --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc i486-linux
Thread model: posix
gcc version 3.3.5 (Debian 1:3.3.5-8ubuntu2)
ryacketta@striker:~/clean_tge_1.4RC2$ make 0f mk/configure.mk
make: *** No rule to make target '0f'. Stop.
ryacketta@striker:~/clean_tge_1.4RC2$ make -f mk/configure.mk
Current Configuration: this config is VALID
OS: LINUX
COMPILER: GCC3
BUILD: RELEASE
DIR.OBJ: out
To change the current configuration type:
make -f mk/configure.mk {arguments, ...}
required arguments:
OS={WIN32 BEOS LINUX OpenBSD FreeBSD Solaris}
COMPILER={CW6 VC6 GCC2 GCC3 GCC3.4}
BUILD={DEBUG RELEASE}
optional arguments:
DIR.OBJ={path to store intermediate obj files}
Note: all arguments are case sensitive.I'll make the change to the mk file and see if it breaks anything on my end
-Ron
#208
12/15/2005 (4:33 pm)
Ron@ Most likely it is. I won't have access to my other machine (has ubuntu 5.10 on it) till monday, man do i hate moving. This one is getting packed up tomorrow afternoon. Thanks for the effort so far.
#209
Could we get tools/blender/
updated to the newest blender plugin version since the version in cvs is still 0.1
http://www.garagegames.com/index.php?sec=mg&mod=resource&page=view&qid=4662
12/15/2005 (5:20 pm)
If it's not too much effort...Could we get tools/blender/
updated to the newest blender plugin version since the version in cvs is still 0.1
http://www.garagegames.com/index.php?sec=mg&mod=resource&page=view&qid=4662
#210
If someone knows the path the dedicated server takes do tell, I only see one place that the creator mod is being used (unless it is a hard exec) and that is in example/main*.cs
-Ron
12/15/2005 (6:02 pm)
Dedicated builds are still hosed even with the suggested change, I need to dig around and figure out the path the dedicated builds are taking. I have made several changes to example/main.cs (added numerous error() type calls), but none of them show in a dedicated build.If someone knows the path the dedicated server takes do tell, I only see one place that the creator mod is being used (unless it is a hard exec) and that is in example/main*.cs
-Ron
#211
Kubuntu 5.10 - GCC 3.45
The OpeanAL problem I mentioned previously is also corrected with the updated lib (running the demo with runtorque.sh to use it.)
12/15/2005 (6:10 pm)
Hi, Ron. I have not tested the dedicated build, but I can confirm that a fresh CVS checkout builds the demo correctly without any tweaking Kubuntu 5.10 - GCC 3.45
The OpeanAL problem I mentioned previously is also corrected with the updated lib (running the demo with runtorque.sh to use it.)
#212
I suspect the removal of the old lib files in xiph/linux will take a few seeing that CVS is such a brain dead SCM tool
-Ron
12/15/2005 (7:06 pm)
Here is my commit logs from this evenings push to SVN, I have sent an email to MattF asking to have CVS sync'ed againryacketta@striker:~/clean_tge_1.4RC2$ svn log -r 1196:1200 -v
------------------------------------------------------------------------
r1196 | ryacketta | 2005-12-15 22:08:23 -0500 (Thu, 15 Dec 2005) | 3 lines
Changed paths:
M /trunk/example/main.cs
M /trunk/example/main.demo.cs
M /trunk/example/main.sdk.cs
RJY:
removed the loading of creator mod for dedicated builds
------------------------------------------------------------------------
r1198 | ryacketta | 2005-12-15 22:13:07 -0500 (Thu, 15 Dec 2005) | 3 lines
Changed paths:
M /trunk/example/runtorque.sh
RJY
Updated the lib paths for vorbis
------------------------------------------------------------------------
r1199 | ryacketta | 2005-12-15 22:14:37 -0500 (Thu, 15 Dec 2005) | 3 lines
Changed paths:
A /trunk/lib/xiph/linux/libogg.so
D /trunk/lib/xiph/linux/libogg.so.0
A /trunk/lib/xiph/linux/libtheora.so
D /trunk/lib/xiph/linux/libtheora.so.0
A /trunk/lib/xiph/linux/libvorbis.so
D /trunk/lib/xiph/linux/libvorbis.so.0
RJY
renamed lib files to there standard usage format
------------------------------------------------------------------------
r1200 | ryacketta | 2005-12-15 22:16:26 -0500 (Thu, 15 Dec 2005) | 3 lines
Changed paths:
M /trunk/mk/conf.UNIX.mk
RJY
updated conf.UNIX.mk to use the new ogg, vorbis and theora lib names
------------------------------------------------------------------------I suspect the removal of the old lib files in xiph/linux will take a few seeing that CVS is such a brain dead SCM tool
-Ron
#213
future releases will be tested with the above compilers before being sync'ed to CVS
-Ron
12/15/2005 (7:34 pm)
I just installed the following compilers to ensure we support all the compilers we say we do ;)gcc/g++ version 2.95.4 20011002 (Debian prerelease) gcc/g++ version 3.3.5 (Debian 1:3.3.5-8ubuntu2) gcc version 3.4.4 20050209 (prerelease) (Debian 3.4.3-9ubuntu4) gcc version 4.0.0 20050301 (prerelease) (Debian 4.0-0pre6ubuntu7)
future releases will be tested with the above compilers before being sync'ed to CVS
-Ron
#214
12/15/2005 (8:51 pm)
Wow does ANYONE still use GCC2?
#215
-Ron
12/15/2005 (8:55 pm)
I have no clue, but it is supported (at least I have conf files for it ;) ) oh and it does do a clean compile and runs from CVS along with 3.3 and 3.4, going to leave 4.0 for Friday evening. I am going to bed, fried from playing with compilers for the past few hours ....-Ron
#216
Good and Bad news regarding the offsetof warnings
The good:
gcc version >= 3.4 has an option to turn those warnings off (-Wno-invalid-offsetof)
The Bad:
gcc version <= 3.3 does not support such an option (well there is a gcc 3.3.5 version that supports it for Apple only...)
Did some quick research, and like most of the other warnings we have it can be ignored. You can turn off all warnings if you would like (add the -w compiler option)
-Ron
12/15/2005 (9:09 pm)
@Dreamer:Good and Bad news regarding the offsetof warnings
The good:
gcc version >= 3.4 has an option to turn those warnings off (-Wno-invalid-offsetof)
Quote:
-Wno-invalid-offsetof (C++ only)
Suppress warnings from applying the offsetof macro to a non-POD type. According to the 1998 ISO C++ standard, applying offsetof to a
non-POD type is undefined. In existing C++ implementations, however, offsetof typically gives meaningful results even when applied to
certain kinds of non-POD types. (Such as a simple struct that fails to be a POD type only by virtue of having a constructor.) This
flag is for users who are aware that they are writing nonportable code and who have deliberately chosen to ignore the warning about
it.
The restrictions on offsetof may be relaxed in a future version of the C++ standard.
The Bad:
gcc version <= 3.3 does not support such an option (well there is a gcc 3.3.5 version that supports it for Apple only...)
Did some quick research, and like most of the other warnings we have it can be ignored. You can turn off all warnings if you would like (add the -w compiler option)
-Ron
#217
I figured it was reffering to a memory offset somewhere that could return either a null pointer or worse.
However since it just means that gcc4 comes with +whine-as-much-as-you-can turned on by default, I'll have to remember that, and turn the thing off ;)
12/15/2005 (9:18 pm)
Ok now I understand the warning then that makes sense.I figured it was reffering to a memory offset somewhere that could return either a null pointer or worse.
However since it just means that gcc4 comes with +whine-as-much-as-you-can turned on by default, I'll have to remember that, and turn the thing off ;)
#218
if yah give me a day or two you just might find new GCC4 option added to mk/configure that has the nifty little 'turn off the offsetof' warning setting.
just pushed an updated conf.GCC3.4.mk file, should be synced with the other stuff
Now I am truely heading to bed!!!
-Ron
12/15/2005 (9:23 pm)
@Dreamer:if yah give me a day or two you just might find new GCC4 option added to mk/configure that has the nifty little 'turn off the offsetof' warning setting.
just pushed an updated conf.GCC3.4.mk file, should be synced with the other stuff
Now I am truely heading to bed!!!
-Ron
#219
I can build a working dedicated server with and without -L/usr/X11R6/lib, seeing that there is no ill effects with it in I added it and pushed it to SVN.
-Ron
12/15/2005 (9:25 pm)
@Benoit:I can build a working dedicated server with and without -L/usr/X11R6/lib, seeing that there is no ill effects with it in I added it and pushed it to SVN.
-Ron
#220
I was about to download the iso for slackware 8 and install it to see if 295 gcc works.
I thought that people said in other forums - to make a game easier to distribute, install the earliest version of linux that you can find and compile it there and the binary will work on the later versions/distros.
12/15/2005 (9:36 pm)
@Dreamer:I was about to download the iso for slackware 8 and install it to see if 295 gcc works.
I thought that people said in other forums - to make a game easier to distribute, install the earliest version of linux that you can find and compile it there and the binary will work on the later versions/distros.
Associate Ron Yacketta
Not at home, but the following conf.UNIX.mk setting builds the tools and dedicated for me
I'll build another dedicated this evening and test my main.cs changes to see if the build still crashes.
-Ron