Proposals
Proposals
Hi everyone !
After a long period of inactivty, I am back to port TA3D to OS X !
I have a few idea to discuss with you :
- CMake to replace Autotools
http://www.cmake.org/HTML/index.html
Easy to use, generate Makefiles, Visual Studio / XCode (OS X) projects
- A mailing list
Easier than a forum
- Doxygen for code documentation
http://www.stack.nl/~dimitri/doxygen/
- Trac
http://trac.edgewall.org/
For bug tracking and project management
- The Boost library
Mainly For multithreading in the case of TA3D
After a long period of inactivty, I am back to port TA3D to OS X !
I have a few idea to discuss with you :
- CMake to replace Autotools
http://www.cmake.org/HTML/index.html
Easy to use, generate Makefiles, Visual Studio / XCode (OS X) projects
- A mailing list
Easier than a forum
- Doxygen for code documentation
http://www.stack.nl/~dimitri/doxygen/
- Trac
http://trac.edgewall.org/
For bug tracking and project management
- The Boost library
Mainly For multithreading in the case of TA3D
Damien Gerard
Ta3d & Yuni Developer
Ta3d & Yuni Developer
- zuzuf
- Administrateur - Site Admin
- Posts: 3281
- Joined: Mon Oct 30, 2006 8:49 pm
- Location: Toulouse, France
- Contact:
Hi,
good to see you back !
CMake looks interesting, I'll try it this week end !
Of course a mailing list would be faster than our forums, but a forum shows things to everyone whereas a mailing list doesn't, so it might not be good to attract people unless you want to use it for things that specifically concern developers/testers.
As far as Doxygen and Trac are concerned, I think we need a more efficient way of tracking bugs than a forum and the code cruelly needs documentation.
Although boost is a good library, I don't like the idea of rewriting something that already works well, unless we can improve it that way (I don't know what boost can do, I only know it by name).
good to see you back !
CMake looks interesting, I'll try it this week end !
Of course a mailing list would be faster than our forums, but a forum shows things to everyone whereas a mailing list doesn't, so it might not be good to attract people unless you want to use it for things that specifically concern developers/testers.
As far as Doxygen and Trac are concerned, I think we need a more efficient way of tracking bugs than a forum and the code cruelly needs documentation.
Although boost is a good library, I don't like the idea of rewriting something that already works well, unless we can improve it that way (I don't know what boost can do, I only know it by name).
=>;-D Penguin Powered
Actually, boost 1.35 have a powerfull thread implementation, more efficient than Critical sections. This library has also a network implementation. However, it is only an idea, and I agree, if it works well, no need for changes.
In the same way, I have a quite complete library for logs, if you need another one :
http://svn.shikami.org/logs (it requieres pthread even under Windows but it can be improved)
In the same way, I have a quite complete library for logs, if you need another one :
http://svn.shikami.org/logs (it requieres pthread even under Windows but it can be improved)
Damien Gerard
Ta3d & Yuni Developer
Ta3d & Yuni Developer
- zuzuf
- Administrateur - Site Admin
- Posts: 3281
- Joined: Mon Oct 30, 2006 8:49 pm
- Location: Toulouse, France
- Contact:
our logging system could be improved. Currently there are 2 systems, the Console object which is thread safe, and an other one, using exception which isn't thread safe. In fact both can interfere and try to access the log file at the same time ... Also the later uses exceptions which doesn't help debugging since errors aren't caught by debuggers. I started writing a small backtrace module that print a small message telling the program has crashed and write the call stack to a file, so we can see where it crashed and try to guess why.
Also we could do much easier in C++ using constructors and destructors. Currently the Guard/... system that uses exceptions isn't very programmer friendly since you must put a EnterGuard() at the start of functions you want to monitor, and LeaveGuard() at the end (or before any return !!). Whereas a simple object could be created at the beginning of the function and be destroyed automatically when it returns ... it doesn't use exceptions and if it crashes we can still write things to the log file if we catch the signal.
When we need to output some logs we should use the Console object once it has been created because we can read the last few log lines from the game, if Console is NULL then we should write directly to the log file ... and the way we do it may change when we'll rewrite that.
PS: I like your LOG_LEVEL idea
Also we could do much easier in C++ using constructors and destructors. Currently the Guard/... system that uses exceptions isn't very programmer friendly since you must put a EnterGuard() at the start of functions you want to monitor, and LeaveGuard() at the end (or before any return !!). Whereas a simple object could be created at the beginning of the function and be destroyed automatically when it returns ... it doesn't use exceptions and if it crashes we can still write things to the log file if we catch the signal.
When we need to output some logs we should use the Console object once it has been created because we can read the last few log lines from the game, if Console is NULL then we should write directly to the log file ... and the way we do it may change when we'll rewrite that.
PS: I like your LOG_LEVEL idea
=>;-D Penguin Powered
The given lib is thread-safe, and used by a few projects and products. For information the output is not buffered and will never be.
I don't understand why you need a backtrace module since your GDB provides it. Moreover, it is not the work of the app to provide such a thing, and may not be reliable (I tried once before).
Do not forget signals and multi-thread are not good friends and you should manage signals into a separated thread.
I not often use Exceptions since my GDB is here for them
If you have proper logging, a backtrace should be nearly useless, or the bug easier to reproduce at home.
I don't see any asserts in the code (only in lua and allegro). May be it would be a good idea in the same time.
I don't understand why you need a backtrace module since your GDB provides it. Moreover, it is not the work of the app to provide such a thing, and may not be reliable (I tried once before).
Do not forget signals and multi-thread are not good friends and you should manage signals into a separated thread.
I not often use Exceptions since my GDB is here for them
If you have proper logging, a backtrace should be nearly useless, or the bug easier to reproduce at home.
I don't see any asserts in the code (only in lua and allegro). May be it would be a good idea in the same time.
Damien Gerard
Ta3d & Yuni Developer
Ta3d & Yuni Developer
For a mailing list, an web archive is possible when ezml (http://ezmlm-www.sourceforge.net/ for example), which can be consulted by every one.
Damien Gerard
Ta3d & Yuni Developer
Ta3d & Yuni Developer
- zuzuf
- Administrateur - Site Admin
- Posts: 3281
- Joined: Mon Oct 30, 2006 8:49 pm
- Location: Toulouse, France
- Contact:
the backtrace is useful when you don't run TA3D through gdb ... end users don't want to run it through gdb, testers often don't know how ... so it's useful not for developers but for others . (And also sometimes I just want to play it, and don't run gdb ... and sometimes it crashs ).
it's late, I'll see that this week end, good night
it's late, I'll see that this week end, good night
=>;-D Penguin Powered
- zuzuf
- Administrateur - Site Admin
- Posts: 3281
- Joined: Mon Oct 30, 2006 8:49 pm
- Location: Toulouse, France
- Contact:
I've made a few test projects to try CMake. It's really a powerful tool, but it won't be so easy to create the instruction files to build TA3D with it. TA3D includes several libraries that we'll have to include into the CMake build process. Also I don't know how to check for Allegro with CMake . I'll keep trying since it'll be very useful to build packages easily for every platform .
=>;-D Penguin Powered
Here is your new bible
http://www.cmake.org/HTML/cmake-2.6.html
Check for a single library (extracted from FindThreads.cmake):
Check for includes :
Here is a working example for PThread
For boost :
Here is a common code I always use :
For information, KDE now uses CMake.
Enjoy
http://www.cmake.org/HTML/cmake-2.6.html
Check for a single library (extracted from FindThreads.cmake):
Code: Select all
CHECK_INCLUDE_FILE("pthread.h" CMAKE_HAVE_PTHREAD_H)
IF(CMAKE_HAVE_PTHREAD_H)
....
ENDIF(CMAKE_HAVE_PTHREAD_H)
Check for includes :
Code: Select all
CHECK_INCLUDE_FILES("sys/types.h;sys/prctl.h" CMAKE_HAVE_SPROC_H)
Code: Select all
include_directories(${PTHREADS_INCLUDE_DIR})
IF(WIN32)
FIND_PACKAGE(PThreads)
ELSE(WIN32)
FIND_PACKAGE(Threads)
ENDIF(WIN32)
IF(CMAKE_USE_PTHREADS_INIT)
MESSAGE("The PThreads support has been enabled")
# Fixed linking under Linux
IF(UNIX)
IF(NOT APPLE)
LINK_LIBRARIES("-pthread")
ENDIF(NOT APPLE)
ENDIF(UNIX)
ELSE(CMAKE_USE_PTHREADS_INIT)
IF(!PTHREADS_FOUND)
MESSAGE("[!!] The pthread support is required")
ENDIF(!PTHREADS_FOUND)
ENDIF(CMAKE_USE_PTHREADS_INIT)
Code: Select all
FIND_PACKAGE(Boost)
IF(Boost_FOUND)
MESSAGE("The boost library has been found")
IF(WIN32)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}/..)
ELSE(WIN32)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
ENDIF(WIN32)
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
ENDIF(Boost_FOUND)
Here is a common code I always use :
Code: Select all
IF(APPLE)
# Avoid visibility issue under OS X Leopard
ADD_DEFINITIONS("-fvisibility=hidden")
ENDIF(APPLE)
IF(UNIX)
IF(APPLE)
SET(GUI "Cocoa")
ADD_DEFINITIONS("-DDARWIN")
ELSE(APPLE)
SET(GUI "Linux X11")
ADD_DEFINITIONS("-DLINUX")
ENDIF(APPLE)
ADD_DEFINITIONS("-DUNIX")
ELSE(UNIX)
IF(WIN32)
SET(GUI "Win32")
ADD_DEFINITIONS("-DWINDOWS -DWIN32")
ELSE(WIN32)
SET(GUI "Unknown")
ENDIF(WIN32)
ENDIF(UNIX)
MESSAGE("Target GUI : ${GUI}")
Enjoy
Damien Gerard
Ta3d & Yuni Developer
Ta3d & Yuni Developer
It is a hard work to change the build environment. However I think it could be a good thing. I may help you to write CMakeFiles if you decide to use CMake. Anyway I will have to make some changes to compile under OS X.
Another point, you don't use trunk/branches/tags in the svn ?
Another point, you don't use trunk/branches/tags in the svn ?
Damien Gerard
Ta3d & Yuni Developer
Ta3d & Yuni Developer
I tried looking at bug trackers for AFLobby and NTai on darkstars a while back, and came upon mainly mantis and Trac. Trac looked vastly superior if not for its suprior aesthetics so I chose Trac and attempted to install it.
Suffice to say my attempt was an utter failure.
So I installed mantis at http://mantis.darkstars.co.uk and started to use it. Its not exactly pretty, lacks theming support and is full of masses of controls and options. Ideally I'd like it if I could install Trac and Id appreciate any help figuring out how to install it.
Suffice to say my attempt was an utter failure.
So I installed mantis at http://mantis.darkstars.co.uk and started to use it. Its not exactly pretty, lacks theming support and is full of masses of controls and options. Ideally I'd like it if I could install Trac and Id appreciate any help figuring out how to install it.
I agree and Ive been testing the last few hours and finally got a trac install at http://trac.darkstars.co.uk
I may be able to setup a second site for trac.ta3d.darkstars.co.uk
If you'd prefer http://ta3d.darkstars.co.uk/trac/ then youll have to set it up as your under a different username and cant use my install.
Here are the instructions:
http://natmaster.com/articles/installing_trac_0.10.php
note that I had to go out and find an alternative download location for swig, and the step involving compiling subversion failed due to now apache portable runtime installed, however you can skip the subversion installation step.
I would also install the plugins and use them to register a new account. Then go back tot he shell and change that account to an admin account.
Once you have trac installed and a single site setup it should be easy to create a second trac site somewhere.
Im sure your username for hosting has fast cgi setup aswell.
I may be able to setup a second site for trac.ta3d.darkstars.co.uk
If you'd prefer http://ta3d.darkstars.co.uk/trac/ then youll have to set it up as your under a different username and cant use my install.
Here are the instructions:
http://natmaster.com/articles/installing_trac_0.10.php
note that I had to go out and find an alternative download location for swig, and the step involving compiling subversion failed due to now apache portable runtime installed, however you can skip the subversion installation step.
I would also install the plugins and use them to register a new account. Then go back tot he shell and change that account to an admin account.
Once you have trac installed and a single site setup it should be easy to create a second trac site somewhere.
Im sure your username for hosting has fast cgi setup aswell.
Who is online
Users browsing this forum: No registered users and 32 guests