owl
owl
eases the docker-based development of Athena
.
owl
provides a simple (but opinionated) set of commands to setup a local workarea to develop Athena
components.
Installation
If you have a Go compiler installed, installing owl
is as simple as:
$> go install -v gitlab.cern.ch/binet/owl
go: downloading gitlab.cern.ch/binet/owl v0.0.0-20211014165214-8a6fc7c6457d
github.com/gonuts/flag
github.com/gonuts/commander
gitlab.cern.ch/binet/owl
$> owl
owl - toolbox to manage a workarea
Commands:
co clone a repository to the source area
config configure a local build area for development
init initialize a workarea suitable for development
make build a local area
pkg-add add a package to the list of packages to build
pkg-ls list all packages matching an optional regexp
pkg-rm remove a set of packages
pkg-show display the list of packages to build
run run a command inside the dev-containter
shell start an interactive shell inside the dev-containter
Use "owl help <command>" for more information about a command.
Example
$> cd /some/where
$> owl init Athena,latest,master
owl: building image "owl-env"... (with="Athena,latest,master")
owl: pulling base image "atlas/centos7-atlasos-dev"...
owl: building image "owl-dev"...
$> owl co ssh://git@gitlab.cern.ch:7999/binet/athena.git
Cloning into 'athena'...
warning: unable to find all commit-graph files
remote: warning: unable to find all commit-graph files
remote: Enumerating objects: 1271500, done.
remote: Counting objects: 100% (32365/32365), done.
remote: Compressing objects: 100% (1729/1729), done.
remote: Total 1271500 (delta 31668), reused 30636 (delta 30636), pack-reused 1239135
Receiving objects: 100% (1271500/1271500), 423.28 MiB | 15.38 MiB/s, done.
Resolving deltas: 100% (951095/951095), done.
Updating files: 100% (58900/58900), done.
$> owl pkg-ls | wc -l
1986
$> owl pkg-ls StoreGate
Control/AthenaExamples/AthExStoreGateExample
Control/StoreGate
Control/StoreGateBindings
Control/StoreGateTests
$> owl pkg-add StoreGate
owl: adding "Control/StoreGate"...
$> owl pkg-add AthenaKernel StoreGateTests
owl: adding "Control/AthenaKernel"...
owl: adding "Control/StoreGateTests"...
$> owl pkg-show
Control/AthenaKernel
Control/StoreGate
Control/StoreGateTests
$> owl pkg-rm StoreGateTests
$> owl pkg-show
Control/AthenaKernel
Control/StoreGate
$> owl config
-- The C compiler identification is GNU 8.3.0
-- The CXX compiler identification is GNU 8.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /opt/lcg/gcc/8.3.0-cebb0/x86_64-centos7/bin/gcc - skipped
[...]
-- Configuring done
-- Generating done
-- Build files have been written to: /owl/workarea/build
$> owl make
[ 1%] Building CXX object Control/StoreGate/CMakeFiles/StoreGateLib.dir/src/ActiveStoreSvc.cxx.o
[ 2%] Building CXX object Control/StoreGate/CMakeFiles/StoreGateLib.dir/src/ReadCondHandle.cxx.o
[...]
[ 98%] Built target atlas_tests
[100%] Linking CXX shared library ../../x86_64-centos7-gcc8-opt/lib/libSGtests.so
Detaching debug info of libSGtests.so into libSGtests.so.dbg
[100%] Built target SGtests
[100%] Built target Package_StoreGate
$> owl run athena GaudiSequencer/test_athsequencer.py
Fri Oct 15 18:20:39 CEST 2021
Preloading tcmalloc_minimal.so
Py:Athena INFO including file "AthenaCommon/Preparation.py"
Py:Athena INFO using release [Athena-22.0.46] [x86_64-centos7-gcc8-opt] [master/daa4c166ef2] -- built on [2021-10-14T2101]
Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py"
Py:Athena INFO executing ROOT6Setup
Py:Athena INFO including file "AthenaCommon/Execution.py"
Py:Athena INFO including file "GaudiSequencer/test_athsequencer.py"
Py:ConfigurableDb INFO Read module info for 5082 configurables from 2 genConfDb files
Py:ConfigurableDb INFO No duplicates have been found: that's good !
Py:Athena INFO including file "AthenaCommon/runbatch.py"
[...]
Py:PerfMonSvc INFO Writing out collected data... [athsequencer.pmon.gz] => 5.429 kb
ApplicationMgr INFO Application Manager Finalized successfully
ApplicationMgr INFO Application Manager Terminated successfully
Py:Athena INFO leaving with code 0: "successful run"
$> owl shell
[bash][atlas]:workdir > which athena
/cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-10-14T2101/Athena/22.0.46/InstallArea/x86_64-centos7-gcc8-opt/bin/athena
[bash][atlas]:workdir > ^D
$>