Evaluation of the CMT and SCRAM Software Configuration, Build and Release Management Tools



Similar documents
Future of the apps area software build system

CMPT 373 Software Development Methods. Building Software. Nick Sumner Some materials from Shlomi Fish & Kitware

Code Estimation Tools Directions for a Services Engagement

Supported platforms & compilers Required software Where to download the packages Geant4 toolkit installation (release 9.6)

Source Code Management/Version Control

Large Projects & Software Engineering

Version Control with Subversion and Xcode

Magento Search Extension TECHNICAL DOCUMENTATION

Automated software packaging and installation for the ATLAS experiment

Creating a Java application using Perfect Developer and the Java Develo...

BlueJ Teamwork Tutorial

OpenGeo Suite for Linux Release 3.0

pure::variants Transformer for Software Configuration Management Manual

TREK GETTING STARTED GUIDE

IBM WebSphere Application Server V8.5 lab Basic Liberty profile administration using the job manager

Developing Platform Independent Software using the AutoTool Suite

DE4 NetFPGA Packet Generator Design User Guide

Site Configuration SETUP GUIDE. Windows Hosts Single Workstation Installation. May08. May 08

Simulation of wireless ad-hoc sensor networks with QualNet

An Embedded Wireless Mini-Server with Database Support

Report of the LHC Computing Grid Project. Software Management Process RTAG CERN

OpenMake Dynamic DevOps Suite 7.5 Road Map. Feature review for Mojo, Meister, CloudBuilder and Deploy+

pure::variants Connector for Version Control Systems Manual

MS Enterprise Library 5.0 (Logging Application Block)

Content Management System

JBoss Portal 2.4. Quickstart User Guide

Getting Started with Android Development

Oracle Database Performance Management Best Practices Workshop. AIOUG Product Management Team Database Manageability

Using and Contributing Virtual Machines to VM Depot

Continuous Integration (CI) and Testing - Configuring Bamboo, Hudson, and TestMaker

SDK Code Examples Version 2.4.2

JobScheduler Web Services Executing JobScheduler commands

Setting Up a CLucene and PostgreSQL Federation

Visualization Plugin for ParaView

TNM093 Practical Data Visualization and Virtual Reality Laboratory Platform

Creating a Guest Book Using WebObjects Builder

The "Eclipse Classic" version is recommended. Otherwise, a Java or RCP version of Eclipse is recommended.

Oracle Fusion Middleware 11gR2: Forms, and Reports ( ) Certification with SUSE Linux Enterprise Server 11 SP2 (GM) x86_64

Office 365 SharePoint Setup and Admin Guide

A Tutorial on installing and using Eclipse

Development_Setting. Step I: Create an Android Project

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science

VX Search File Search Solution. VX Search FILE SEARCH SOLUTION. User Manual. Version 8.2. Jan Flexense Ltd.

FileBench's Multi-Client feature

IMPLEMENTING DIRECTORY SERVICES INTEGRATION WITH HELIX MEDIA LIBRARY Revision Date: September 2014

WebIOPi. Installation Walk-through Macros

PLESK 7 NEW FEATURES HOW-TO RESOURCES

INTEGRAL OFF-LINE SCIENTIFIC ANALYSIS

TREK GETTING STARTED GUIDE

CA Spectrum and CA Service Desk

Interlink Networks Secure.XS and Cisco Wireless Deployment Guide

USER GUIDE. Snow Inventory Client for Unix Version Release date Document date

Streamsend Mail Integration

Using Microsoft Expression Web to Upload Your Site

Client Code Installation Guide. Client Code: Version 1.3 Date: 8 th January, 2003

EPICS IOC Software Configuration Management

Tutorial: Packaging your server build

Installing Java (Windows) and Writing your First Program

XMLVend Protocol Message Validation Suite

Active Directory Requirements and Setup

Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)

Yocto Project Eclipse plug-in and Developer Tools Hands-on Lab

Programming on the Web(CSC309F) Tutorial: Servlets && Tomcat TA:Wael Aboelsaadat

SAP Business Objects Data Services Setup Guide

Meister Going Beyond Maven

Software Delivery Integration and Source Code Management. for Suppliers

Tutorial: setting up a web application

Integrating SAP BusinessObjects with Hadoop. Using a multi-node Hadoop Cluster

Monitoring Oracle Enterprise Performance Management System Release Deployments from Oracle Enterprise Manager 12c

dotdefender v5.12 for Apache Installation Guide Applicure Web Application Firewall Applicure Technologies Ltd. 1 of 11 support@applicure.

Install guide for Websphere 7.0

KonaKart Portlet Installation for Liferay. 6 th February DS Data Systems (UK) Ltd., 9 Little Meadow Loughton, Milton Keynes Bucks MK5 8EH UK

DiskPulse DISK CHANGE MONITOR

Installing (1.8.7) 9/2/ Installing jgrasp

using version control in system administration

Web Development on the SOEN 6011 Server

ProjectPier v Getting Started Guide

Django Assess Managed Nicely Documentation

IAR Embedded Workbench

Using SVN to Manage Source RTL

Automated Process Center Installation and Configuration Guide for UNIX

Enterprise Service Bus

Set up My Sites (SharePoint Server

Version Control. Version Control

Open Source Content Management System for content development: a comparative study

BioMAJ Watcher User Guide

Database manager does something that sounds trivial. It makes it easy to setup a new database for searching with Mascot. It also makes it easy to

Transcription:

Evaluation of the CMT and SCRAM Software Configuration, Build and Release Management Tools Alex Undrus Brookhaven National Laboratory, USA (ATLAS) Ianna Osborne Northeastern University, Boston, USA (CMS) This document summarises an evaluation of two software release tools CMT and SCRAM which have been identified by the Software Process RTAG as possible candidates for a common tool supported by LCG. The evaluation of SCRAM has been carried out by a CMT expert, while CMT has been evaluated by a SCRAM expert. The main goal of the evaluation was to compare and contrast the tools behaviour in a real environment by using the tools with a real software project. As a part of the exercise several packages of the ATLAS core software (CMT-based) have been configured and released using SCRAM. Similarly, a SCRAM-based CMS software project IGUANA has been configured and released using CMT. The evaluation has been done for SCRAM version V0 19 3 and CMT version v1r12. Based on the results of the evaluation, SCRAM is proposed as a common tool for LCG project, by both authors. I. INTRODUCTION The web page with CMT/SCRAM evaluation reports is set at http://www.usatlas.bnl.gov/computing/software/cmt scram.html This document summarises the evaluation of two release tools: SCRAM (version V0 19 3) and CMT (version v1r12). The evaluation applied to core software of the ATLAS experiment and the CMS software project IGUANA. 1

CMT is an official ATLAS and LHCb software release tool. SCRAM is a CMS release tool. For comparison with CMT, some ATLAS software was built with SCRAM: the ATLAS/LHCb framework package Gaudi (version 0.9.1) and a part of ATLAS Software Release 3.2.0 sufficient to run the simple HelloWorld example. The ATLAS software built with SCRAM can be found at /afs/cern.ch/atlas/software/dist/nightlies/scram tests/gaudi 0 9 1 /afs/cern.ch/atlas/software/dist/nightlies/scram tests/athenaexamples The HelloWorld example can be run from /afs/cern.ch/atlas/software/dist/nightlies/scram tests/athenaexamples/run with source environ setting.csh athena HelloWorldOptions.txt where environ setting.csh is a script that installs few environment variables, athena is the ATLAS framework executable (built with SCRAM), and HelloWorldOptions.txt is the file with options for athena job. The same software built by CMT is located at /afs/cern.ch/atlas/offline/external/gaudi/0.9.1 /afs/cern.ch/atlas/software/dist/3.2.0 (full ATLAS release) IGUANA project released with CMT can be found at /afs/cern.ch/user/y/yana/work/cmt/iguana IGUANA project released with SCRAM /afs/cern.ch/cms/releases/iguana For more information about CMT look at http://www.cmtsite.org/ SCRAM documentation can be found at http://cmsdoc.cern.ch/releases/scram/current/doc/html/index.html 2

II. CODE MANAGEMENT A. CMT CMT software release is a set of duets: elementary packages and their versions. The sample organisation of a CMT release is shown in Fig. 1. The internal structure of a package is restricted and requires version directories that in their turn contain sources, binaries, and the cmt directory that holds the configuration information needed by CMT in the form of requirements file. These files have a complicated syntax ( 30 configuration parameters with numerous options). There is no common release areas for binaries or includes packages (such as bin, lib). The compilation of each package is performed in its own subdirectory where all resulted binaries are put. CMT uses a CVS interface that allows to perform a limited number of cvs commands. The CMT directory structure with version directories precludes a direct CVS checkout (because there are no version directories in the CVS repository). CMT uses version identifiers based on CVS symbolic tags. 3

Structure of a CMT package (software release) PACKAGE_X p_release p_release_00_00_01 cmt requirements (config. specification) run files and links for running applications p_policy p_policy_00_00_01 cmt CERNLIB CERNLIB_00_00_01 cmt Linux container_a container_a_00_00_01 cmt Linux package_a_a package_a_a_00_00_01 cmt Linux src package_a package_a_b package_a_b_00_00_01 cmt Linux package_a_00_00_01 cmt Linux src build area for an individual package src sources area (fixed location) FIG. 1. Organisation of a CMT software release. B. SCRAM SCRAM works with software projects that can include many software packages. The project (structure shown in Fig. 2) is a releasable unit (in sense that it is marked by a version name) and it consists of a set of documents which describe the structure and distribution of the project (in config directory), build configuration (in config directory), automatically generated external product descriptions (in.scram directory), and project areas (libraries, binaries, includes, sources). The project consists of subpackages that do not have individual versions (that is each time a subpackage is changed the whole project should be released to get a new version). The organisation of subpackages is not restricted. There could be container packages. The names of 4

source code directories are optional (CMT expects that software sources are in src directories). The actual compilation is performed in special tmp area and resulted binaries are moved to project areas (such as bin, lib...). SCRAM uses CVS, but it does not depend on it. The physical structure of a releasable unit source code is identical to its physical structure in CVS. SCRAM uses CVS symbolic tags for versioning. Structure of a SCRAM project PROJ_0_0_1.SCRAM config SCRAM tools database SCRAM documents and configuration bin Linux lib Linux tmp Linux binaries shared libraries compilation area include Linux include files of a project sources (structure and dir names optional) src container_a package_a package_b package_a_a package_a_b FIG. 2. Organization of a SCRAM project. 5

C. Comments The organisation of a SCRAM releasable unit is more flexible. It has more transparent access to the source code stored in a CVS repository. The CMT release has fixed organisation and lacks common areas for binaries and includes. III. BUILD SYSTEM A. CMT CMT generates makefiles out of internal make fragments. Users have a limited ability to customise makefile macros in requirements files. There is a limited opportunity to add fragments to makefiles (so called pre-defined generic templates should be used). The CMT manual provides recipes for creating makefiles fragments for handling a support of languages and specialised document generators. For other non-standard actions a user may override internal CMT make fragments, but only in the case of deep understanding of what the original CMT fragment does (according to CMT manual). CMT calculates the building order from the requirements files. B. SCRAM In SCRAM documents the makefiles are associated with packages. That is packages can be built with individual makefiles. SCRAM is flexible about tools used to build (e.g. could invoke preprocessing tools such as autoconf, moc, etc.). The packages individual makefiles are in fact treated as fragments of the final makefile generated by SCRAM, but the user has a freedom to create and build necessary targets. SCRAM compiles and links packages in the build order indicated in the project configuration file ( config/buildfile ). 6

SCRAM provides additional (though limited) opportunities to customise a build process using the BuildFile tags like appending libraries to the link line or adding include paths. A user can define a new tool or new rules for additional customisations. It appears desirable to expand BuildFile tags adding opportunities like changing the name of library from the default or prepending libraries to the link line. SCRAM mechanically adds information from the packages BuildFiles and generates long make commands with repeating compiler flags. For example, if package A uses B, and both A and B use Gaudi, then SCRAM generates make commands with two sets of Gaudi include and library paths. It seems desirable to filter out repeating flags (it has been implemented in SCRAM V0 19 4). C. Comments Both tools use make. Both tools do not reveal cyclic dependencies. Customisation of builds is much easier with SCRAM. IV. CONFIGURATION MANAGEMENT A. CMT The full set of software packages of the experiment (such as ATLAS) is naturally organised in the form of one Software Release. A special glue package describes the structure of a Software Release and other glue packages provide connections to external software. External tools are described in glue packages that contain configuration specifications in its requirements files. This substantially increases the number of packages. About 50% packages of CMT-style Gaudi are descriptions of external packages (such 7

as CERNLIB, ROOT...). CMT does not check the availability of external tools, the problems are revealed at compilation or runtime phases. Version defined in the requirement file may or may not correspond to the actual version of the tool. B. SCRAM Consistent configuration of SCRAM-based projects and external software packages is defined by an XML-like description (CMSConfiguration), where each project or package is considered as a tool and is described in a separate document. External tools are described in special documents that contain information on location of libraries, binaries, include files; library names and link ordering; dependencies; platform specifics; documentation links. The tool documents are downloaded simultaneously with the project sources. Once the tool documents are loaded with scram setup command it is possible to reload them by the second scram setup -i or to load them via a URL of the tool. An automatically generated.scram directory with tools descriptions created in the user s area is not protected from the user. SCRAM checks the existence of external tools (directories and libraries) as defined in a project configuration. A user has an opportunity to ask SCRAM to skip the settings. C. Comments SCRAM promotes the configuration of experiment s software in the form of a hierarchy of projects. Projects can be separately installed and tested. CMT recommends to organise the experiment s software in one releasable unit. The mechanism for partial installation of 8

a release (for instance when a user wants to install reconstruction related software only and does not want simulation related software) is not provided by CMT. V. RELEASE AND DISTRIBUTION A. CMT CMT installs soft links in the build area of a package to shared libraries of other packages and data files in the special run directory. Executables are supposed to be run from this run directory. When dealing with large projects, CMT can create very long LD LIBRARY PATH with paths to library files that are dispersed in the individual package areas (this creates problems for tcsh users because this shell limits the length of environmental variables to 1-4 kb). B. SCRAM SCRAM has extremely useful web interface that allows to download the project sources and configuration with single click. Download without web browser is also possible. SCRAM suggests runtime environment settings for released or developer project. Since all libraries and binaries of a project are located in common bin and lib areas the installation of a runtime environment is not a problem. C. Comments Both tools allow site specific installation (that is environment is automatically tuned for different computing facilities). Information about binaries downloads is not immediately available for both SCRAM and CMT. 9

VI. DOCUMENTATION AND EASE OF USE A. CMT Complete but complicated documentation, lacks index and quick start section. Tutorials are available. B. SCRAM SCRAM documentation is poor. Many details and some command options are not described, though available through scram help. C. Comments SCRAM is much easier to learn and use providing that a SCRAM expert is available for help (important details are missed in documentation). The complexity of SCRAM features available to a user always matches the user s experience with SCRAM. VII. CONCLUSION Both SCRAM and CMT are working release management tools. SCRAM is based on PERL scripts and, while it has poor documentation, those scripts are possible to read (and even adapt) for learning purposes while CMT is a large C++ package that can be changed only by a very experienced person. SCRAM allows to define more flexible directory structure of a project. The structure of a SCRAM-based project is defined from the top to the bottom and allows to avoid repetitive configuration information. It doesn t need to have versions directories and it can have common bin, lib, include areas. CMT maintains packages in more sophisticated way trying to handle consistently their declared relationships to each other through a version identification model. The penalty is the numerous requirements files 10

with complicated syntax and glue packages that contain no source code, but description of the package dependencies. CMT fully generates environment and makefiles for the packages from the requirements files. Both authors came to a conclusion that SCRAM is easier to learn and use, and it is more flexible than CMT in definition and configuration of a releasable unit. SCRAM has more convenient system of external tools description and it checks their availability. Though, the SCRAM build system has some limitations (for instance, one library per package), it is considerably easier to customise than the CMT one. Release management with SCRAM is more efficient. Both authors recommend SCRAM as a configuration, build, and release tool for LCG project. 11