Good Morning! f Tuesday, 28 January 2003. FPCLTF and CLHEP Walter E. Brown f Fermi National Accelerator Laboratory Z O O M.

Slides:



Advertisements
Similar presentations
Configuration management
Advertisements

Software change management
Configuration management
Case Tools Trisha Cummings. Our Definition of CASE  CASE is the use of computer-based support in the software development process.  A CASE tool is a.
Chapter 9 Chapter 9: Managing Groups, Folders, Files, and Object Security.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 29 Slide 1 Configuration management.
Russell Taylor Lecturer in Computing & Business Studies.
Supplement 02CASE Tools1 Supplement 02 - Case Tools And Franchise Colleges By MANSHA NAWAZ.
Chapter 1 Understanding the Web Design Environment
Automated Tests in NICOS Nightly Control System Alexander Undrus Brookhaven National Laboratory, Upton, NY Software testing is a difficult, time-consuming.
Concordia University Department of Computer Science and Software Engineering Click to edit Master title style ADVANCED PROGRAMING PRACTICES API documentation.
Building with MPC Charles Calkins Principal Software Engineer Object Computing, Inc.
Introduction to The Linaro Toolchain Embedded Processors Training Multicore Software Applications Literature Number: SPRPXXX 1.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
Introduction to ant Guy Rixon AstroGrid Consortium Meeting
This chapter is extracted from Sommerville’s slides. Text book chapter
Debugging, Build and Version Control Rudra Dutta CSC Spring 2007, Section 001.
Trilinos Coding and Documentation Guidelines Roscoe A. Bartlett Trilinos Software Engineering Technologies and Integration Lead Computer Science and Mathematics.
Database System Development Lifecycle © Pearson Education Limited 1995, 2005.
Recent and Proposed Changes to ZOOM Recent entries Intended future additions Possibilities –D0 and CDF users can affect which new “possible” additions.
Framework for Automated Builds Natalia Ratnikova CHEP’03.
Understanding Code Compilation and Deployment Lesson 4.
CCA Port, Component & Application Build Skeleton Templates “A new script toolkit for generating CCA build skeletons” Torsten Wilde and James Kohl Oak Ridge.
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 29Slide 1 Configuration management l Managing the products of system change.
 To explain the importance of software configuration management (CM)  To describe key CM activities namely CM planning, change management, version management.
Eric Keller, Evan Green Princeton University PRESTO /22/08 Virtualizing the Data Plane Through Source Code Merging.
Usability Issues Documentation J. Apostolakis for Geant4 16 January 2009.
Configuration Management (CM)
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 29 Slide 1 Configuration management.
EGEE is a project funded by the European Union under contract IST Testing processes Leanne Guy Testing activity manager JRA1 All hands meeting,
Tutorial build Main ideas –Reuse as much previously obtained configuration information as possible: from Babel, cca-spec-babel, etc. –Extract all irrelevant.
SE: CHAPTER 7 Writing The Program
Component Technology. Challenges Facing the Software Industry Today’s applications are large & complex – time consuming to develop, difficult and costly.
1 Software Configuration Management (SCM) and Software Reuse Presented By: Edmund Leng (HT052446J) Choo Zhi Min (HT052430X)
Structural Design Patterns
20/09/2006LCG AA 2006 Review1 Committee feedback to SPI.
Feedback from the POOL Project User Feedback from the POOL Project Dirk Düllmann, LCG-POOL LCG Application Area Internal Review October 2003.
Presentation Name / 1 Visual C++ Builds and External Dependencies NAME.
National Center for Supercomputing ApplicationsNational Computational Science Grid Packaging Technology Technical Talk University of Wisconsin Condor/GPT.
Introduction to c++ programming - object oriented programming concepts - Structured Vs OOP. Classes and objects - class definition - Objects - class scope.
14th Oct 2005CERN AB Controls Development Process of Accelerator Controls Software G.Kruk L.Mestre, V.Paris, S.Oglaza, V. Baggiolini, E.Roux and Application.
Configuration Management CSCI 5801: Software Engineering.
Feedback from LHC Experiments on using CLHEP Lorenzo Moneta CLHEP workshop 28 January 2003.
CERN IT Department t LHCb Software Distribution Roberto Santinelli CERN IT/GS.
G.Govi CERN/IT-DB 1 September 26, 2003 POOL Integration, Testing and Release Procedure Integration  Packages structure  External dependencies  Configuration.
1 Chapter 12 Configuration management This chapter is extracted from Sommerville’s slides. Text book chapter 29 1.
Milan, 15 June 2001WP1 Meeting - F. Donno1 GRID Packaging and Code Management for WP1 F. Donno INFN - Pisa.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
Build Tools 1. Building a program for a large project is usually managed by a build tool that controls the various steps involved. These steps may include:
Wed Mar Michael Imamura / The GNU Autotools Your very own./configure.
Combined Metamodel for UCM Contributed by Anthony B. Coates, Londata 17 February, 2008.
Comments on SPI. General remarks Essentially all goals set out in the RTAG report have been achieved. However, the roles defined (Section 9) have not.
CLHEP Infrastructure Improvements CHEP 2004 Lynn Garren, FNAL and Andreas Pfeiffer, CERN.
Use of CMT in LHCb CMT Workshop, LAL (Orsay) 28 th February - 1 st March 2002 P. Mato / CERN.
Chapter 25 – Configuration Management 1Chapter 25 Configuration management.
Developing Portable Applications ● Introduction GNU autotools – GNU toolchain ● Goals - cross-platform ● Supported platforms (POSIX compliant) ● GNU autotools.
*DT Project Model Leo Treggiari Intel Corp. Dec, 2005.
Installing Windows 7 Lesson 2.
Advanced Programing practices
Chapter 18 Maintaining Information Systems
SPI external software build tool and distribution mechanism
What, Where and Why Swift
ATLAS Software Distribution
Introduction to Events
Instructor: Prasun Dewan (FB 150,
Overview Unit testing Building Version control.
Configuration management
Carthage ios 8 onwards Dependency manager that streamlines the process of integrating the libraries into the project.
The Lua Chunk Vault, an enhancement to epics base
Presentation transcript:

Good Morning! f Tuesday, 28 January 2003

FPCLTF and CLHEP Walter E. Brown f Fermi National Accelerator Laboratory Z O O M

f Zoom and CLHEP3 Plan of the talk Review Zoom's contents Why has it been hard to contribute Zoom packages to CLHEP? A proposal that will make it easier for Zoom and for others A small case study

f Zoom and CLHEP4 What has Zoom developed? Allocator CovMatrices ErrorLogger Exceptions HepPDT HepTuple ISOcxx IteratorFilter LinearAlgebra Minimization PhysicsVectors SpecialFunctions ValuePtr ZMtimer ZMtools

f Zoom and CLHEP5 Our public documentation

f Zoom and CLHEP6 Zoom has contributed to CLHEP … Zoom merged its PhysicsVectors package into CLHEP's Vectors :  A rather painful and time-consuming process  "If it hurts when you do that, don't do that" HepPDT was integrated with CLHEP from nearly its inception:  A less painful process  But idiosyncracies needed special attention

f Zoom and CLHEP7 … and Zoom has more to contribute Several packages seem of particular interest:  ErrorLogger  Exceptions  SpecialFunctions  CovMatrices But it is not a simple task to adapt Zoom code and CLHEP code to fit with each other:  Smooth interoperation is clearly a requirement  But idiosyncracies work both ways

f Zoom and CLHEP8 We have distinct approaches Distinct coding philosophies Distinct coping strategies/styles Distinct build practices Distinct usage styles by users

f Zoom and CLHEP9 Distinct coding philosophies For historical reasons, CLHEP often codes to lowest common denominator of supported compilers/platforms Zoom generally codes to C++ standard, and explicitly encourages its users to do the same

f Zoom and CLHEP10 Distinct coping strategies/styles In Zoom:  Compiler defects are handled by package ISOcxx, a central repository of tests, documents, and cures  Encourages standard C++ coding in most cases: #include In CLHEP:  Compiler defects are handled in various places, including config subdirectory  Source code sometimes reflects cures intrusively: #include "CLHEP/config/iostream.h"

f Zoom and CLHEP11 Distinct build practices CLHEP uses common autotools approach:  CLHEP packager uses autoconf to prepare a configure script  Client runs configure to produce makefiles tailored to platform and compiler, then runs make  Compiler options passed via command line Zoom must use SoftRelTools build system:  Predefines combinations of platform, compiler, and compiler options  Client runs srt_setup to specify which is wanted  No makefiles need tailoring

f Zoom and CLHEP12 Distinct usage styles by users Zoom users write: #include "pkgname/filename.h" CLHEP users write: #include "CLHEP/pkgname/filename.h"

f Zoom and CLHEP13 Further concerns Building:  CLHEP builds only in its source tree  Zoom is not permitted to build in its source tree Supporting duplicate source trees:  One CLHEP-oriented, one Zoom-oriented  Is certainly not feasible for Zoom  And likely not feasible for CLHEP, either

f Zoom and CLHEP14 How can we move forward together? We propose compromises, on all sides, for the common and greater good We strongly support proposals to evolve CLHEP by splitting into constituent packages:  Move away from a monolithic library  Give each package its own configure, …  Create one überconfigure, …, to build all Zoom, too, would move to such a context:  Move away from SoftRelTools  Leave a forwarding skeleton for current users

f Zoom and CLHEP15 Other benefits to a "poly-lithic" CLHEP Simplifies adding packages from future developers Increases flexibility for developers Increases flexibility for users Allows optional external dependencies:  Example: Zoom's SpecialFunctions uses gsl …  … but not everyone may want this

f Zoom and CLHEP16 Several details to be worked out Common conventions make life easier:  Easier learning curve for new users  Easier for developers to borrow from each other  Facilitates tool-building, tool-using by all Some of the issues:  Which C++ dialect?  Which autotools?  What package structure?  What names to use?  How to address legacy concerns?

f Zoom and CLHEP17 Which programming language? Catering to compiler defects is idiosyncratic, time-consuming, and error-prone:  Zoom's ISOcxx will be retired!  Its intended purpose has been fulfilled  Little or no reason to avoid standard features Strongly recommend we all adhere to C++ language per international standard:  Compilers have dramatically improved since C++ was standardized in 1997  It's time to drop egcs support for new releases; drop gcc and MSVC6 soon

f Zoom and CLHEP18 Which autotools? CLHEP today uses only autoconf Recommend automake, libtool, …, too:  Gives broader platform coverage  Automates building shared libraries, now ad hoc  Automates creating tarball variants (e.g.,.tgz )  Allows users to have multiple installations Only developers need these autotools:  Clients run configure and make, just as now  These tools are under active development; we should probably select a common version

f Zoom and CLHEP19 What package structure? Keep most of current organization Separate each library's public header sources:  Keep distinct from its other, private, source files  Everyone: #include "libname/filename.h"  Autotools can ensure build uses: - I libname

f Zoom and CLHEP20 What names to use? Keep current package names: e.g., Vector Name libraries libPkgName: e.g., libVector Put current packages in namespace CLHEP::  Except for those already using namespaces …  … which should keep their current names  Must avoid using and using namespace declarations at global scope in header sources

f Zoom and CLHEP21 Legacy issues Backwards compatibility is likely important for some current users:  Accessibility to header sources, namespaces  Accessibility to link libraries Structure a CLHEP library alongside others:  On same footing as all other libraries  Its header sources merely forward  User can use configure to create a monolithic library instead of individual libraries  Can contain common autotools utilities and cache, perhaps reducing build time

f Zoom and CLHEP22 An additional utility Useful to determine how a library was built:  Which compiler? Which compiler options?  Of use to both developers and users Other libraries have this capability:  Contemporary example: gsl ( has gsl-config)  Older example: KERNLIB Implemented by building + installing a script (via configure ) or a binary (via configure + make ) with this information embedded in it

f Zoom and CLHEP23 A case study: ErrorLogger Started with Zoom's code base:  After a few days to read autotools book + docs …  ~ 0.5 day to edit source (+ nmsp, - ISOcxx, … )  ~ 1.5 days to create and test configure and Makefile prototype files for this library + its tests  Now builds, installs, checks, makes tarballs, … Still to do:  Update documentation to reflect the changes  Improve tests to take advantage of new context  Look at portability of package's threading support  Move into polylithic CLHEP environment

FPCLTF and CLHEP Walter E. Brown fnal.gov f Fermi National Accelerator Laboratory Z O O M