News
Current status
Posting date: 2nd January 2005
First of all, happy new year! But now, to the real news: a month ago, I posted a message in my journal detailing the current Buildtool status. I should have posted it here too, which is the most reasonable place if I expect people to read it. So here goes a copy/paste of it. BTW, since commenting is not supported here, feel free to post any replies in the original message in my blog:
Hmm, Buildtool... one of my pet projects, probably the one on which I've spent the most time working... and it was even starting to get some (few) popularity lately
But I must admit it. The code is, in its actual form, dead :-( It's unmanageable (shell scripting doesn't scale, you know) and breaks in many, many places. Just consider the following facts:
- Detection of C++ features from bt_config fails in many cases.
- bt_logic's behavior is less than acceptable, and adding functionality to it is a PITA.
- Several modules haven't been modified across versions, so they don't work properly. For example, bt_lint is almost useless.
- Shared library handling is broken in many systems, and fixing it could be very difficult.
- The code exposes internals too much, specially in environmental variables and C/C++ defines. But cleaning that up is also complex due to the nature of shell scripts.
- I was suggested recently to make bt_dist only include in tarballs what was really needed, and not everything (just like GNU Automake's make dist does. I like the suggestion, but implementing correctly is impossible due to the current code.
... plus a large etcetera. All in all, too many problems that can't be solved without doing very gross hacks or restarting the project from scratch. This is why I haven't touched the code since the beginning of the summer.
But... you know what? For some reason, I'm willing to rewrite it from scratch. Of course, using a real programming language. The choices I have in mind are ("obviously" ;-):
- C++: I really like C++, together with the STL. Yes, believe me! It simplifies programming a lot, and OOP is wonderful. But I'm a bit afraid of portability. If I use this, it must follow the ANSI standard (not doing so could be silly), which means that users will need a compiler that follows the standard, such as GNU GCC. This is not a big problem, since GCC compiles almost anywhere, but may add problems to end users. However, by the time the program is usable, the situation may have improved a lot, hehe.
- C: Very portable, assuming you know where the portability problems arise (not a big problem for me). But what really bothers me is that it slows down development a lot: I'd have to create my own classes to handle containers (hash tables, linked lists, etc.) and handle dynamic memory even for trivial tasks. I'd also loose polymorphism, inheritance, exceptions... Ok, ok, GNOME emulates OOP in C, but I'm not too keen on that.
If I can't find any strong reason not to use C++, I'll stick to it. In fact, I've already written a bit of code (program detection) and it has been easy :-)
Oh, I listen, "How could build scripts be?". Well, I have XML in mind - something similar to Apache Ant. Otherwise I'll have to invent and write a parser for a custom language (ew, not funny). But that's something yet to decide.
Not in original post: I've been looking at Lua lately, a programming language used to "extend" Monotone. Looks like it could be a possible choice for scripting (though it doesn't fit very well my current idea of how scripts could look like).
Test Driven Development meets Buildtool
Posting date: 11th July 2004
Test Driven Development (TDD, for short) is a technique in which you write a test before adding a new feature. The test fails until the feature is properly implemented. Furthermore you end up with a complete regression suite for your application, so that you can easily check that new features don't break old ones.
As this sounds very interesting and is known to be a good development model, I'm rewritting the Testsuite (included in the Buildtool distribution file), to follow TDD principles. So far I've written twelve tests that check multiple parts of the program, and already fixed some bugs, thanks to them.
I think that the next version, 0.17, will be just a polished 0.16, with all bugs found by the tests fixed. Some features may come too, but not many (probably). Note that this is what I think now, and that my mind can change until it's published... ;-)
Buildtool 0.16 released
Posting date: 4th July 2004
Buildtool 0.16 released. This version includes lots of changes since the previous one. The major ones include preliminar support for work directories and a rewrite of bt_logic's core. There are also several small new features as well as many bug fixes.
Debian packages available
Posting date: 28th March 2004
Debian packages are now available, thanks to Bartosz Fenski. Check the downloads section for more information.
Web site redesign
Posting date: 18th February 2004
The web site look has been completely redesigned. The old style was designed more than a year ago, and it was too dark and boring. Hope you like it!
Buildtool 0.15 released
Posting date: 4th February 2004
Buildtool 0.15 released. This release completely drops the deprecated bt_make and bt_wrap modules in favour of bt_logic. It also includes multiple new features and bug fixes, and has been tested on more systems.
Happy new year
Posting date: 3rd January 2004
Happy new year! (this is delayed, but better late than never ;-). I would like to let you know that Buildtool is by no means abandoned. I've been very busy with university tasks since 0.14 was released, and will probably be for two or three more weeks. Anyway, what is actually in CVS is close to what 0.15 will be; it needs a careful review, some more changes (specially in bt_logic and the documentation) and it will be ready for release. So... stay tunned!
Buildtool 0.14 released
Posting date: 5th September 2003
Buildtool 0.14 released. This release includes some new features but also fixes many bugs. Should be completely compatible with the previous one.
Buildtool 0.13 released
Posting date: 31st August 2003
Buildtool 0.13 released. Major highlights in this version include the new bt_sh module and the new make-like program bt_logic, which supersedes bt_make. It may seem a bit premature (as there are still many things to do), but it is here to let developers adapt their packages to the new unified file framework and to start testing bt_logic. As soon as actual developers can safely use the new framework, bt_make will be dropped. Feedback will be really appreciated. Enjoy!
Addition of bt_logic: new make-like module
Posting date: 27th August 2003
Some days ago, I posted a message to the buildtool-devel mailing list announcing the creation of a new make-like program. As it is still in early stages of development, it could be very good if you checked that message and posted your ideas or wishes about this new program, which will eventually become a replacement for the actual bt_make module. For now, you can check out the CVS version of Buildtool and start playing with the code already commited.
Addition of bt_sh: portable shell interpreter
Posting date: 26th August 2003
A new module has been added to Buildtool, called bt_sh. As the name suggests, this is a shell interpreter which is extremely fast and small. With this addition, Buildtool shell code can be written without taking care of ancient or non-standard shell interpreters, and gives us the freedom to add new functionality to it if needed. To developers, this means that they do not need to care any more about shell incompatibilities. You can find this out in the CVS version of Buildtool (but remember that it's unstable).
RPM packages available for RedHat Linux
Posting date: 25th July 2003
RPM packages for RedHat Linux 9 are now available, thanks to Doug Henry. Check the downloads section for more information.
First birthday
Posting date: 24th July 2003
Today is 1st Buildtool's birthday! It has passed a year since the project was registered at SourceForge.net. After this period of time, we have got through twelve different versions, and the project is becoming quite mature in my oppinion. The twelfth version has been delayed a lot more than I wanted but, at last, Buildtool 0.12 is released! See the downloads section for more details. Note that the documentation has been replaced with the new manual, too; check out the documentation section. Thanks for supporting this project!
Manual converted to Docbook/XML
Posting date: 22nd July 2003
After some weeks of work, the Buildtool manual has been converted to Docbook/XML and splitted into its own CVS module, aside from source code. From now on, it will be distributed in its own package, starting from the shortcoming 0.12 release. It will be uploaded here when this version is out, too.
New buildtool-cvs mailing list
Posting date: 11th June 2003
The buildtool-cvs mailing list has been configured. All commits done in the CVS repository will generate a mail in this mailing list. See the mailing lists section for more information.
CVS repository is now public
Posting date: 10th June 2003
The CVS repository used during the development of Buildtool has been made publicly available through Sourceforge project services. The Anonymous CVS section contains more details.
RPM packages available for SuSE Linux
Posting date: 13th April 2003
RPM packages for SuSE Linux are now available, thanks to Pascal Bleser. Check the downloads section for more information.
Buildtool 0.11 released
Posting date: 12th April 2003
Buildtool 0.11 released.
Buildtool 0.10 released
Posting date: 5th February 2003
Buildtool 0.10 released. Lots of new features.
Buildtool 0.9 released
Posting date: 23rd January 2003
Buildtool 0.9 released. Please update, as this release implements some important features like version checking (BT_REQUIRE).
Buildtool 0.8 released
Posting date: 15th December 2002
Buildtool 0.8 released.
Buildtool 0.7 released
Posting date: 30th November 2002
Buildtool 0.7 released.
Web site redesigned
Posting date: 24th November 2002
Web site look redesign. You may find it very similar to bochs' site... I took the idea from there (it is so beautiful ;-).
Buildtool 0.6 released
Posting date: 29th September 2002
Buildtool 0.6 released.
Buildtool 0.5 released
Posting date: 14th September 2002
Buildtool 0.5 released. Do not use this version; it is quite broken due to bt_make's Makefile cleanup.
Buildtool 0.4 released
Posting date: 1st September 2002
Buildtool 0.4 released.
Buildtool 0.3 released
Posting date: 30th August 2002
Buildtool 0.3 released.
Buildtool 0.2 released
Posting date: 24th August 2002
Buildtool 0.2 released.
Buildtool 0.1 released
Posting date: 22nd August 2002
Buildtool 0.1 released.
Buildtool started
Posting date: 24th July 2002
Buildtool project started at Sourceforce.