|LCG Project | LCG Applications Area|
|LCG Application Area Workbook||
$Date: 2005/03/01 10:11:00 $
This instructions provide a procedure to build a release of SEAL at CERN using SCRAM. These are instructions followed by the SEAL team to build releases.
If these instructions do not work, please update the build scripts or these instructions.
[ Note: This page mainly targets SEAL developers for building an official SEAL release. If you are looking for binary releases of SEAL you may find them at the LCG/SPI site. If you are not a SEAL developer and want to build a SEAL release from source you first have to set your CVSROOT to the read-only/anonymous account :pserver:firstname.lastname@example.org:/cvs/SEAL, the password is empty (just hit return). Be also aware that only parts of the remainder of this page apply to you in this case.]
The first step of the release build is to get prepared. This involves announcing the intention to release to the other developers, collecting the CVS tag of all the subsystems (or packages) and tagging the release.
When you plan to make a release, please send a notification to SEAL developers a few days in advance.
Collect then tags for the release and check out the code and the build procedure in your developer's area. Run the integration tests as they would be run in the release. The easiest way to do all this is to build as if in the release area
To tag the release, check out the code you want to go into the release . Normally you should take the full head of configuration and documentation and the received tags for the other subsystems.
Before tagging the release, you need first to update and tag the configuration and to update the documentation. You need to follow these steps:
- Check out the configuration directory :cvs co -d scram seal/config/scram
- Update the config directory:
- Update BootStrapFile and BootStrapFileSRC to specify the correct CVS tags and version numbers. Tags should be SEAL_X_Y_Z and version numbers X.Y.Z.
- Update RequirementsDoc to refer to the correct LCG configuration (LCG_XX). You can find about the LCG configuration and the corresponding version (CVS tags) looking at the LCG scram ToolBox.
- Add new tools if needed by seal in the RequirementsDoc.
- Update scram_version if necessary.
- Update the ChangeLog file
- Commit the changes:cvs ci -m "Configuration for SEAL_X_Y_Z"
- Tag the new configuration:cvs tag "SEAL_X_Y_Z"
- Update the src/config/cmt directory (needed for building on Windows using CMT)
- Update config.bat file with the correct LCG configuration number and eventually the CMT version number
- Update Release\cmt\requirements file if you need to add an additional package in the list of packages that constitutes the release
- Before using scram, you need to run the script provided by SPI to set the correct environment for building the release:
- Define also the architecture where you are building your release. For example, for redhat73 with the compiler gcc 3.2, do:
- Bootstrap SEAL using your new tagged configuration. You need here to use scram, if you don't have in your path run before the script provided by SPI to set the correct environment:
scram project file:scram/BootStrapFile; cd SEAL_X_Y_Z
- Check out the code you want to go in the release using the tag given you for each subsystem (or package).
cvs co -r Subsystem_X_Y_Z src/Subsystem
- Check out also the head of the Documentation
cvs co src/Documentation
Update seal/Documentation/WebSite/main/relnotes.html. The notes should include a paragraph that gives a succint summary of all the changes, and then a bullet for each changed package together with a brief summary of the change.
- Now you can tag all the seal source code:
cvs tag SEAL_X_Y_Z src
If there are post-tag commits to catch up with, move the tag with:
cvs tag -F SEAL_X_Y_Z src
If any non-trivial changes are required to the tag, that is, anything more than moving the tag for one or two files, remove the tag completely (with "cvs rtag -d SEAL_X_Y_Z seal") and retag. If there is any doubt that wrong code has been tagged, always remove the tag completely -- do not patch up!
/afs/cern.ch/sw/lcg/app/spi/tools/latest/scripts/makeRelease.py --project SEAL --version SEAL_X_Y_Z
The script does the following steps:
- bootstrap of the project and check out of the sorce code with the requested tag
- build the source (scram b release-build) including tests and copying binary, library, header files and scripts in the release export area
- run the seal tests using qmtest ( qmtest run)
- change SCRAM_ARCH to debug version ( SCRAM_ARCH_dbg) and run scram setup
- repeat the building and running of the tests
- install the release in the /afs area: /afs/cern.ch/sw/lcg/app/releases/SEAL/SEAL_X_Y_Z
The build log information and the tests output log are contained in files in the /logs directory :
$RELEASE_ARCH.log and $RELEASE_ARCH-qmtest.log.
In addition the file $RELEASE_ARCH-qmtest-results.qmr can be loaded by qmtest to show the release test results.
The current windows build is using CMT. Perform the following steps on the Terminal Server (cerntsdev01.cern.ch)
Setup the environment and mirror external packages locally in the terminal server local disk corresponding to LCG_XX toolbox version%AFS%\cern.ch\sw\lcg\app\spi\tools\latest\setup\lcgspi.bat lcg-mirror-externals -v XX -o C:\lcg\external
Checkout from CVS and build the release locallycd C:\Users\SEAL make_release SEAL_X_Y_Z
Check the log file in C:\Users\SEAL\SEAL_X_Y_Z\logs\win if the built was fine.
Install the release in AFS by copying from local diskcd C:\Users\SEAL install_release SEAL_X_Y_Z
In case of problems and when you need to apply modifications to the code you need to start over from the beginning.
scram install SEAL SEAL_X_Y_Z
Be sure to have the SCRAM_ARCH environment variable set correctly, otherwise it will not install the release correctly. If you do not have permission to install the release, you can send a request to the librarian.
scram build release-docs
ln -s /afs/cern.ch/sw/lcg/app/releases/SEAL/SEAL_X_Y_Z/doc SEAL_X_Y_Z
scram build release-docs
scram b release-freeze