Hall C Software Development From the perspective of a user.

Slides:



Advertisements
Similar presentations
Software Configuration Management Donna Albino LIS489, December 3, 2014.
Advertisements

O. Stézowski IPN Lyon AGATA Week September 2003 Legnaro Data Analysis – Team #3 ROOT as a framework for AGATA.
Juan Carlos Flores 10/20/2011. Outline Introduction Centralized Revision Control Systems Subversion Overview Distributed Revision Control Systems Network.
Version Control Systems Phil Pratt-Szeliga Fall 2010.
CS 501 : An Introduction to SCM & GForge An Introduction to SCM & GForge Lin Guo
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
PART A Emac Lisp   Emac Lisp is a programming language  Emacs Lisp is a dialect.
Version Control with git. Version Control Version control is a system that records changes to a file or set of files over time so that you can recall.
JDF Toolkits for JDF and JMF
1 CSE 390 “Lecture 11” Version control with Git slides created by Ruth Anderson, images from
Introduction to Git and Github Joshua imtraum.com.
Distributed Version Control. Image stolen from which is really good, go read it.  Old-school version control.
Git for Version Control These slides are heavily based on slides created by Ruth Anderson for CSE 390a. Thanks, Ruth! images taken from
Version control Using Git 1Version control, using Git.
Chapter - 2 What is “GIT” VERSION CONTROL AND GIT BASICS.
RMG Study Group Session I: Git, Sphinx, webRMG Connie Gao 9/20/
Introduction to Version Control with SVN & Git CSC/ECE 517, Fall 2012 Titus Barik & Ed Gehringer, with help from Gaurav.
علیرضا فراهانی استاد درس: جعفری نژاد مهر Version Control ▪Version control is a system that records changes to a file or set of files over time so.
Business Unit or Product Name © 2007 IBM Corporation Introduction of Autotest Qing Lin.
Status of Hall C 6 GeV Analysis Software Robust Fortran/CERNLIB code, “ENGINE”, for analysis of HMS/SOS coincidence and single arm experiments that has.
GIT An introduction to GIT Source Control. What is GIT (1 of 2) ▪ “Git is a free and open source distributed version control system designed to handle.
Git A distributed version control system Powerpoint credited to University of PA And modified by Pepper 8-Oct-15.
Version control Using Git Version control, using Git1.
Old Chapter 10: Programming Tools A Developer’s Candy Store.
RMG Study Group Basics of Git Nathan Yee 2/23/
Version Control Systems academy.zariba.com 1. Lecture Content 1.What is Software Configuration Management? 2.Version Control Systems (VCS) 3.Basic Git.
…using Git/Tortoise Git
Git workflow and basic commands By: Anuj Sharma. Why git? Git is a distributed revision control system with an emphasis on speed, data integrity, and.
Information Systems and Network Engineering Laboratory II DR. KEN COSH WEEK 1.
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
Productivity Tools Ken Nguyen Department of Information Technology Clayton State University.
Git Fundamentals Rochelle Terman 13 January 2014.
Introduction to Version Control with Git CSC/ECE 517, Fall 2014 A joint project of the CSC/ECE 517 staff, including Titus Barik, Gaurav Tungatkar, Govind.
Introduction to GitHub Alex Bigazzi Dec. 4, 2013 ITS Lab GitHub Introduction1.
1 GIT NOUN \’GIT\ A DISTRIBUTED REVISION CONTROL AND SOURCE CODE MANAGEMENT (SCM) SYSTEM WITH AN EMPHASIS ON SPEED. INITIALLY DESIGNED AND DEVELOPED BY.
Version Control Systems. Version Control Manage changes to software code – Preserve history – Facilitate multiple users / versions.
Version Control System Lisa Palathingal 03/04/2015.
GIT.
GitHub and the MPI Forum: The Short Version December 9, 2015 San Jose, CA.
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:
CS 160 and CMPE/SE 131 Software Engineering February 16 Class Meeting Department of Computer Science Department of Computer Engineering San José State.
Status of Hall C 6 GeV Analysis Software Robust Fortran/CERNLIB code, “ENGINE”, for analysis of HMS/SOS coincidence and single arm experiments that has.
It’s not just an insult from Harry Potter!. What is Git? Distributed Version Control System (DVCS) – Compared to a Centralized Version Control System.
Information Systems and Network Engineering Laboratory I DR. KEN COSH WEEK 1.
Technical Presentation by: David Spano. About Git (VCS) Simple Git Commands Branching Github Git GUI Summary.
Virtual Lab Overview 5/21/2015 xxxxxxxxxx NWS/MDL/CIRA.
Using Git with collaboration, code review, and code management for open source and private projects. & Using Terminal to create, and push commits to repositories.
1. A new git is initialized as a remote repository JohnRemote repositoryPeter master C0 CodingWhileBlack.com PROPEL CODING
Software development tools
KIT – University of the State of Baden-Wuerttemberg and National Research Center of the Helmholtz Association STEINBUCH CENTRE FOR COMPUTING - SCC
Version Control Systems
Build and Test system for FairRoot
Information Systems and Network Engineering Laboratory II
Source Control Systems
Open Source Software Development Environment
Git and GitHub primer.
Integration Methodology and Procedures
Version Control overview
Version control, using Git
Version Control System using Git
Version Control with Git and GitHub
Version Control Systems
The Big Picture
Computer Systems Programming
Version control with Git
GitHub and Git.
Presentation transcript:

Hall C Software Development From the perspective of a user

Outline Version management with Git o Overview of git in practice o Examples of pushing/pulling updates o Issue tracking Development of a new build system – SCons o Overview of SCons o Current status of build/configure system

Git Free and open source distributed version control system Created by the Linux development community (primarily for version control of the Linux kernel), with a focus on: o Speed o Simple design o Strong support for non-linear development (1000’s of branches) o Fully distributed o Able to handle large projects efficiently

Git Philosophy CVS, Subversion, etc. o Based on “changes” to files o Difficult to “back out” once changes are committed Git o Based on “snapshots” of filesystems o Trivial to back out changes o This is hugely important for large parallel development, as well as for newbie users!

Github.com Online project hosting using git Developers use their own account on github.com to create “forks” of JeffersonLab repositories Changes are committed to a developer’s forked repository, and at some point may be merged with the main JeffersonLab repository, via a pull request. The “gatekeeper” for the Jefferson Lab repository governs this process.

Current JLab Git Projects Hall A C++ Analyzer Hall C C++ Analyzer Hall C Fortran engine Hall C Replay x 2 (for comparisons) Hall C Geant simulation of Compton Polarimeter SIMC (Monte Carlo for Halls A and C) MC_SHMS_SINGLE TreeSearch (Hall A TreeSearch track reconstruction

Development under Git Easy to install and update code on JLab systems as well as on local (Mac and Linux) machines o git clone o git branch –a Master remotes/origin/HEAD -> origin/master remotes/origin/Release-070 remotes/origin/Release-100 remotes/origin/Release-110 remotes/origin/Release-120 remotes/origin/Release-130 remotes/origin/Release-140 remotes/origin/Release-150 remotes/origin/master remotes/origin/scons_final_change remotes/origin/scons_link_develop remotes/origin/scons_link_develop_150 o git pull origin

Example Network Graph $ git checkout –b scons_final_change (make changes) $ git commit –a $ git push origin scons_final_change Analyzer Network

Pull Requests Users/developers who are “watching” development of the JeffersonLab/analyzer repository are notified by of pull requests. Typically, other developers, as well as the gatekeeper, can make comments on the proposed pull request prior to it being accepted (or rejected).

Details of Pull Request

Keeping forks up-to-date $ git remote add upstream $ git fetch upstream $ git merge upstream/develop

Issue Tracking in Git -Issues to be solved can be created at any time, and assigned to a particular developer -When pull requests are made, can be associated with one or more issues, and issue can be closed (if appropriate) X

A new build system - SCons Traditionally, Hall A/C software has been built with “make” o Platform/system/compiler dependent configuration handled within Makefiles (coupled with #ifdef statements within the code itself) o Dependency checking not included by default, and is based on timestamp. o Having an “autoconf”-like configuration is desirable, but GNU Autoconf is highly complex o Makefiles are platform-dependent, and incredibly cryptic – basically unreadable to non-experts – making changes and updates difficult o Libtool (management of libraries) not available for all platforms Is there something better out there?

A new build system - SCons SCons is an open-source software construction tool o Written entirely in Python – power of a real programming language in configuration and build scripts … plus, our students know and love Python! o Scripts are much more readable than Makefiles o Integrated functionality similar to Autoconf o Built-in support for C/C++, and easily extensible for other builders (ROOTCINT) o Built-in dependency-checking – based on MD5 signatures, and not timestamps – important for git. o Designed from the ground up for cross-platform builds o Currently used by the JLab DAQ group for EVIO

Major Projects using SCons ASCEND - A system modeling package for engineering Cantera – A toolkit for chemical kinetics and thermodynamics CLAM – A framework to develop sophisticated audio analysis FreeNOS – A microkernel operating system written in C++ IntensityEngine – A platform for 3D games and virtual worlds Lumiera – A professional video editor Madagascar – Geophysical data processing Nsound – C++ audio synthesis framework openEHR – Electronic Health Record standard V8 – Google’s open source Javascript engine YafaRay – An open source raytracing engine

SCons – Current status Build and configuration scripts have been written, tested, and committed for both PODD and HCANA Configuration checks for: o ROOT installation o gcc/g++ compiler installation and functionality o Platform-dependent compiler/linking flags (64/32 bit, Linux/MacOSX) Currently, we are maintaining the traditional Make system and SCons in parallel (for both PODD and HCANA)