Modyfing an Athena Package
Overview
Teaching: 20 min
Exercises: 20 minQuestions
How do I modify a package inside the athena repository?
Objectives
Learn about sparse git checkouts.
Learn about
package_filters.txt.
In this section, we will learn how to modify a package in the athena repository. Part of making changes is compiling them for testing.
Start by pointing your web browser to the official; athena repository and making a fork. As we learned yesterday, you should always make a fork if you want to modify other people’s code. One you made your fork, made a clone of it. The last line tells git to checkout the 21.2 branch. This is the base for the release that we are working with.
# Run from source/ directory
git clone ssh://git@gitlab.cern.ch:7999/${USER}/athena.git
cd athena
git checkout 21.2
Do not try to compile your project now. The athena repository contains many packages. Compiling it will take forever. Instead we will look at two ways to copmile only specific packages:
package_filters.txt, which is an ATLAS CMake addition to take a list of packages you want to compile,- sparce checkouts, which is a git feature to only checkout specific files.
 
The package_filters.txt Method
The ATLAS_PROJECT command, that finds all of your packages, can be tune by the use of a package_filters.txt file. This file can contain specific instructions for what packages to ignore and which ones to compile. Create a sources/package_filters.txt file with the following contents.
+ athena/Reconstruction/Jet/JetCalibTools
- athena/.*
+ .*
Then clone your fork into the source/ directory. Make sure to change kkrizka to your lxplus username.
The first column is whether to compile a package (+) or to ignore it (-). You can use regular expressions to select multiple packages. In this example, the first line says we want to compile JetCalibTools package, the second line says ignore all athena packages not already listed and the third line says compile all other packages.
Now you need to re-run CMake, telling it explicitely where your package filter file is located.
# Run from build/ directory
cmake -DATLAS_PACKAGE_FILTER_FILE=../source/package_filters.txt ../source
Now run make. It should finish quickly!
The Sparse Checkout Method
The sparse checkout is a git feature that allows you to only “checkout” files that you want to the file system. In our case, we will only checkout the JetCalibTools package. As you will see, it is a more hidden feature of git and requires some manual work.
The first step is to enable sparse checkout functionality inside your athena clone.
# Run from source/athena directory
git config core.sparsecheckout true
Then define the list of directories or files that you want to be explicitely checked out. This list is stored inside the .git/info/sparse-checkout file. The .git/ folder is inside the root of your git repository and contains all of your settings and repository history.
# Run from source/athena directory
echo Reconstruction/Jet/JetCalibTools/ > .git/info/sparse-checkout
Finally tell git to redo the checkout of your branch. You should now only have the Reconstruction/Jet/JetCalibTools/ package leftover.
# Run from source/athena directory
git checkout 21.2
ls
Reconstruction
Finally you need to re-run CMake to register the new package and compile using make.
# Run from build/ directory
cmake ../source
make
Key Points
Don’t compile the entire athena repository. Use either sparse checkouts or
package_filters.txtto specify what packages you want to compile.