Instructions for creating a new CMT package

Choose a name and location for your package

Your package should have a unique name (unique to the LHCb software), so choose a name that is both descriptive and specialized: Components is a bad name, FredComponents is good. You should also choose an LHCb subsystem ("Hat") among existing ones, e.g. Phys if your components are for doing a physics analysis. Please note that the core name (without the hat) of the package has to be unique among the LHCb package list. You can find the full LHCb package list with the command
svn pg packages svn+ssh://

Finally, you must choose a "Project" among existing ones within which your package should be released, e.g. Analysis

In what follows, let us assume you want to write a components package called FredComponents for subsystem Phys, in Analysis project

Work in the appropriate project directory

SetupProject --build-env Analysis
You will be prompted for a version number, choose the most recent one. This puts you in the directory $User_release_area/Analysis_<version>

Make the package

Option 1: using CMT

cmt create FredComponents v1r0 Phys/
cd  Phys/FredComponents

Option 2: personally

mkdir -p Phys/FredComponents
cd  Phys/FredComponents

For a components package, just cmt, doc, src are needed (no public includes)

mkdir cmt
mkdir doc
mkdir src

Edit requirements (or copy them from a similar package...) and configure the package

cd doc
emacs release.notes
Add some meaningful release notes to explain the purpose of the package, the author etc...
cd ../cmt
emacs requirements
Edit the requirements file, make sure the directories src cmt and doc are specified for your components package
cmt config
Configure the package

Write some code and build a library

cd ../src
Add ∗.cpp files
cd ../cmt
cmt make
component library is built

Import the new package to Subversion

Important: Please make sure that the import command is run from inside the directory you want to import:
cd $User_release_area/Analysis_<version>/Phys/FredComponents
Remove first all files you do not wish to import: binary directories, backup copies (∗~∗), generated files in cmt directory (only requirements is needed)
rm -r genConf
rm ∗/∗~∗
rm cmt/∗.∗
rm cmt/∗Make∗
And now import to Subversion
svn import -m "first import of FredComponents under Phys" svn+ssh://
svn mkdir -m "create tags and branches directories for Phys/FredComponents" \
  svn+ssh:// \
Note: if the mkdir command fails, you may need to create the intermediate directories (e.g. the hat "Phys") one by one. A version of the command line client more recent than the one on lxplus5 has the option "--parents" to simplify the process.

Add your new package in the list of known packages in the repository

cd $User_release_area
svn co -N svn+ssh:// lhcb_repos
svn pe packages lhcb_repos
ALERT! It's mandatory to check out a fresh copy of lhcb_repos or update the working copy with svn update before editing the property.
Add your package in the list:
Phys/FredComponents Analysis
and commit the changes
svn ci -m "add Phys/FredComponents in the list of packages" lhcb_repos
rm -r lhcb_repos

Check that everything is OK

First rename the original package
cd $User_release_area/Analysis_<version>/Phys
mv FredComponents _FredComponents
Then check out your package from the repository
cd $User_release_area/Analysis_<version>
getpack Phys/FredComponents head
cd Phys/FredComponents/cmt
cmt show uses
cmt make
If everything looks fine you can remove the original version
cd ../..
rm -r _FredComponents

Finally, add the new package to the project

cd $User_release_area/Analysis_<version>
getpack AnalysisSys head
cd AnalysisSys
emacs cmt/requirements
Add the new package:
use FredComponents v∗ Phys
Update the release notes
emacs doc/release.notes
Commit and tag the changes
svn commit -m "added package Phys/FredComponents"
Then tag and add to the tag collector

-- MarcoClemencic - 16-Dec-2009

Edit | Attach | Watch | Print version | History: r28 | r9 < r8 < r7 < r6 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r7 - 2011-04-19 - HubertDegaudenzi
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    LHCb All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback