DIRACOS is a project aimed to provide a stable base layer of dependencies, on top of which the DIRAC middleware is running. The goal was to produce a coherent environment for grid interaction and streamline the operational overhead. Historically the DIRAC dependencies were grouped in two bundles; Externals containing Python and standard binary libraries, and the LCGBundle which contained all grid-related libraries (gfal, arc, etc). Such a setup proved difficult to test and hindered agile development. DIRACOS solves the binary incompatibility that was caused by using a python version newer than the native system one (SLC6). It is spawned form a single list of required packages from where we use SRPMs to pull all dependencies down to the level of glibc. With such an approach we can provide the same packages for our clients, servers, and several platforms. It is an extendible setup with an DevOps development cycle in mind. The core build functionality of DIRACOS is based on Fedora Mock. DIRACOS also introduces its own grammar, to handle specific cases and it also allows patching (some SRPM require tweeking, which the user can do by providing a diff) as well as routines for pre/post/instead actions of compilation. With this approach DIRAC was able to provide a single bundle for clients and servers, that is reliable, flexible, easy to test and relatively small (250 MB). It allows for a smooth transition from SLC6 to CC7 and provides a clear roadmap for possible extension of DIRAC to a wide variety of platforms.
|Consider for promotion||No|