Friday, January 12, 2007

Gexslt: using the CVS version

This entry is a short comment describing how to download, set up and compile Gexslt from the CVS repository. Gexslt is an XSLT 2.0 processor written in Eiffel by Colin Adams, and is part of the Gobo project.

This entry is not a comprehensive documentation. On contrary, it is a short explanation for non-Eiffel programmers that want to use the last version of Gexslt. The fewer steps are described here, the better. I also describe my own setup; it is on Windows, with EiffelStudio.

So you first need an Eiffel compiler. Then you need the Gobo source code. A few environment variables have to be setup. Then you can compile Gexslt. I'll describe at the end how to update your copy of Gexslt to include the last fixes.

Initial setup

Gobo comes with its own Eiffel compiler: gec. I don't use it because I had troubles to install it the first time I compiled Gexslt. So I describe the use of EiffelStudio (the compiler I use). Feel free to see the Gobo documentation to use gec instead.

Download EiffelStudio from http://www.eiffel.com/products/studio/. Just follow the instructions there to install the software. Basically, you can download the installer, run it, then push on "Next", "Next"... Say you installed it in C:\Eiffel57. Install the Borland C++ compiler shipped with EiffelStudio: just say "Yes" when the installer ask you for (if you already have MSC compiler, you can avoid installing the Borland one, and try to use MSC instead; see the Gobo documentation).

Warning: It is strongly recommended to install EiffelStudio in a path without any space (for example, try to avoid C:\Program Files), as it may result in an error in the Gobo build process! If you want to save time to yourself, install it for example in C:\Eiffel57.

To get the source code for Gobo (including Gexslt) from its CVS repository, you need to use your favorite CVS client. With the command-line client from http://cvshome.org/, you can use the following to check out the sources (but you can put these information in your graphical client if you prefer, as the one for Eclipse):

cvs -d :pserver:anonymous@gobo-eiffel.cvs.sf.net:/cvsroot/gobo-eiffel     co gobo

That will create a gobo directory in the current directory. Say you are in C:\, so that will create C:\gobo.

Now the environment variables. You need to create a variable to say where is the Gobo directory, as well as updating your %PATH% in order to the build system will find the Eiffel and C compilers. So create the %GOBO% variable with the value C:\gobo (or whatever you actually used), and add both C:\Eiffel57\BCC55\Bin and C:\Eiffel57\studio\spec\windows\bin to your %PATH%.

Now you can compile Gobo. Just go to Gobo directory and run:

.\work\bootstrap\bootstrap.bat bcc ise

Now go to make a coffe, or even go to lunch, that step will take a long time. After the compilation complete, you can use C:\gobo\bin\gexslt.exe from the command line to run XSLT 2.0 transformations.

But that is not the end of the story. If you are ready to do all this work to can use Gexslt from its CVS, you will probably be interested in two additional steps: compiling Gexslt with debug output enabled, and updating your copy with the last CVS state.

To enable the debug output, just go the the C:\gobo\src\gexslt and run geant compile_debug_ise. That will create the executable C:\gobo\src\gexslt\gexslt.exe. My advice is to not move it to C:\gobo\bin, so you keep both versions, with and without debug info. It is usefull, because the debug enabled version takes a lot of time more than the normal version.

So to resume all the steps for the initial setup:

rem Install EiffelStudio

rem Create %GOBO% = C:\gobo

rem Add both C:\Eiffel57\BCC55\Bin and
rem C:\Eiffel57\studio\spec\windows\bin
rem to your %PATH%

rem Go to C:\ in a command prompt
C:

rem Get Gobo sources
cvs -d :pserver:anonymous@gobo-eiffel.cvs.sf.net:/cvsroot/gobo-eiffel co gobo

rem Compile Gobo the first time
work\bootstrap\bootstrap.bat bcc ise

rem Compile Gexslt with debug support
cd src\gexslt
geant compile_debug_ise

rem Now you can use C:\gobo\bin\gexslt.exe and
rem C:\gobo\src\gexslt\gexslt.exe (with debug support)

Updates

To update your Gexslt, just update your local copy of the Gobo repository with your prefered CVs client. For example with the command-line CVS client, just go to C:\gobo, then run cvs update -dP. To recompile, run first geant install within C:\gobo and then both geant compile_ise and geant compile_debug_ise within C:\gobo\src\gexslt, to recompile both the normal and the debug-enabled versions (don't forget to copy gexslt.exe between the two compilation phases!):

cd C:\gobo
cvs update -dp
geant install
cd src\gexslt
geant compile_ise
copy gexslt.exe C:\gobo\bin
geant compile_debug_ise

I think there is all that is needed by an XSLT developer working on Windows to can use Gexslt from the CVS.

If you think you find a bug in Gexslt, you can use the following mailing list to report it.

Thanks Colin for your work!

Labels: ,

4 Comments:

Anonymous Anonymous said...

Just a few thoughts:

1) It is better to use the MSC compiler if it is installed on your system. Support for BCC looks as if it is dropping away in ISE's plans.
But evidentally it still works for gexslt.

2) It's not absolutely necessary to install an Eiffel compiler, as Gobo comes with it's own (gec). Gexslt compiled with gec is VERY fast, but you lack two things - one is a good debugging environment (but it should be sufficient for reporting gexslt bugs), and the other is a garbage collector (so you can't run VERY long transformations with it).

3) Are you sure geant install rebuilds the production version of gexslt? You may well be right, but if so, I didn't realise it.

Colin Adams

16:03  
Blogger Florent Georges said...

Hi Colin

Thanks for your comments. I modified the text of the entry accordingly.

Regards,

--drkm

18:04  
Anonymous Anonymous said...

Note that this procedure is now out-of-date as Gobo has moved to using subversion.

Colin Adams

09:13  
Blogger Florent Georges said...

Hi Colin

I am aware of this. I will change the text accordingly (or post a new entry), but I didn't have the time yet.

Thanks for your comment. Regards,

--
Florent Georges

10:58  

Post a Comment

<< Home