130 likes | 286 Views
Software development. Brief introduction for developers of Run II software. Targeted to development on UNIX platform ( e.g. d0mino). Concentration on CTEST interface using CTBUILD implementation. CTEST. An interface for building software.
E N D
Software development • Brief introduction for developers of Run II software. • Targeted to development on UNIX platform (e.g. d0mino). • Concentration on CTEST interface using CTBUILD implementation. P. Demine (ISN Grenoble)
CTEST • An interface for building software. • Builds and tests libraries made up of components which are tested individually. • Allows integrated testing and creation of executables. • www-d0.fnal.gov/software/cmgt/ctest/ctest P. Demine (ISN Grenoble)
CTBUILD • A framework for building software packages which conform to the CTEST interface. • Can be run standalone or within the DØ CVS/SRT environment. P. Demine (ISN Grenoble)
Creating a new package • ctnewpkg –h (for help on syntax) • ctnewpkg -lib <packagename> • cd <packagename> P. Demine (ISN Grenoble)
Package structure package LIBDEPS bin BINARIES LIBRARIES package *.hpp src COMPONENTS *.cpp test ITESTS LIBRARIES P. Demine (ISN Grenoble)
Component development • Normally there is 1 class per component. • A package component consists of 3 parts: • the public interface in component.hpp. • the implementation in component.cpp. • the component test in component_t.cpp. • The component test is intended to fully exercise the public interface. P. Demine (ISN Grenoble)
COMPONENTS • Each package has a file which contains a dependency-ordered list of components named COMPONENTS. • The *.cpp files will be compiled and inserted into the package library. • The *_t.cpp files will be compiled, linked and then executed to test the component. P. Demine (ISN Grenoble)
LIBDEPS • Contains a list of only the explicit package library dependencies. • Deeper dependencies will be resolved by the LIBDEPS file in the lower package. • Requires every package to provide a correct LIBDEPS file. P. Demine (ISN Grenoble)
ITESTS • Complex packages often require more extensive testing, called integrated tests. • The file ITESTS contains a list of files which conduct these tests. • Normally resides intest subdirectory along with expanded LIBRARIES file. P. Demine (ISN Grenoble)
BINARIES • Executables which are created as part of the release are specified by the list of components in the file BINARIES. • This file, the accompanying code and LIBRARIES file should reside in the bin subdirectory. P. Demine (ISN Grenoble)
LIBRARIES • Contains a list of the external libraries on which that package depends, in the dependency order. • No circular dependencies are allowed. P. Demine (ISN Grenoble)
Documentation • Several tutorials and much documentation available on the web. For example: • www-d0.fnal.gov/~hur/L3mainpage.html • www-d0.fnal.gov/software/cmgt/cmgt.html • www-d0.fnal.gov/~schellma/d0cpp/ • d0-france.in2p3.fr/afs/in2p3.fr/home/ throng/d0/www/software/talks/ P. Demine (ISN Grenoble)