ALIBUILD / PANDADIST. The New Build System for Panda

Similar documents
cget Documentation Release Paul Fultz II

MySQL Connector/C Developer Guide

swiftenv Documentation

COSC345 Software Engineering. Make

MySQL Connector/C Developer Guide

CMake refactoring. P. Hristov 19/03/2014

Vaango Installation Guide

Lab Objective. Lab Assignment. Downloads and Installation

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

manifold Documentation

How to install and build an application

HEP Software Installation

Containers. Pablo F. Ordóñez. October 18, 2018

Build and Test. The COIN-OR Way Ted Ralphs. COIN forgery: Developing Open Source Tools for OR

CS 261 Recitation 1 Compiling C on UNIX

Apple Llvm 5.1 Error Exit Code 1.0

Generic TriBITS Project, Build, Test, and Install Reference Guide

Andrej Filipčič

CS314 Software Engineering Configuration Management

Git Tutorial. André Sailer. ILD Technical Meeting April 24, 2017 CERN-EP-LCD. ILD Technical Meeting, Apr 24, 2017 A. Sailer: Git Tutorial 1/36

Belle II - Git migration

Introducing LCG Views. Pere Mato LIM Meeting, 16th January 2016

Introduction to Supercomputing

These steps may include:

SoLID Software Framework

1. Which of these Git client commands creates a copy of the repository and a working directory in the client s workspace. (Choose one.

Offline Tutorial I. Małgorzata Janik Łukasz Graczykowski. Warsaw University of Technology

How to install and build an application. Giuliana Milluzzo INFN-LNS

Introduction to Git and Github Repositories

How to install and build an application

How to install and build an application

Git Command Line Tool Is Not Installed

Revision Control and GIT

Getting the files for the first time...2. Making Changes, Commiting them and Pull Requests:...5. Update your repository from the upstream master...

Git. Charles J. Geyer School of Statistics University of Minnesota. Stat 8054 Lecture Notes

Make was originally a Unix tool from 1976, but it has been re-implemented several times, notably as GNU Make.

Chris Calloway for Triangle Python Users Group at Caktus Group December 14, 2017

Git for Subversion users

TrinityCore Documentation

Having Fun with Social Coding. Sean Handley. February 25, 2010

Data and Analysis preservation in LHCb

SFO17-315: OpenDataPlane Testing in Travis. Dmitry Eremin-Solenikov, Cavium Maxim Uvarov, Linaro

An Introduction to Subversion

R3BRoot Framework. D. Kresan GSI, Darmstadt. First R3BRoot Development Workshop July 28 30, 2015 GSI, Darmstadt

The make utility automatically determines which pieces of a large program need to be recompiled, and issues commands to recompile them.

OpenMP Example. $ ssh # You might have to type yes if this is the first time you log on

Is code in your project sane enough?

Automatic Creation of a Virtual Network with VBoxManage [1]

withenv Documentation

Flatpak workshop. flatpak.org

TangeloHub Documentation

CONCOCT Documentation. Release 1.0.0

Git tutorial. Katie Osterried C2SM. October 22, 2015

Aldryn Installer Documentation

MariaDB ColumnStore C++ API Building Documentation

Intermediate Programming, Spring Misha Kazhdan

Git. SSE2034: System Software Experiment 3, Fall 2018, Jinkyu Jeong

Section 1: Tools. Kaifei Chen, Luca Zuccarini. January 23, Make Motivation How... 2

Optimizing Docker Images

Implementing the Twelve-Factor App Methodology for Developing Cloud- Native Applications

a handful of Git workflows for the agilist steven harman twitter: stevenharman

February 2 nd Jean Parpaillon

docker & HEP: containerization of applications for development, distribution and preservation

Tips on how to set up a GitHub account:

Git. Presenter: Haotao (Eric) Lai Contact:

Python Project Example Documentation

Die Brummbeere Documentation

CS11 Intro C++ Spring 2018 Lecture 4

[Software Development] Development Tools. Davide Balzarotti. Eurecom Sophia Antipolis, France

Pulp Python Support Documentation

DEAD-SIMPLE VERSION CONTROL FOR YOUR TEAM GIT WITH MATTHEW REIDSMA GRAND VALLEY STATE UNIVERSITY

A BASIC UNDERSTANDING OF VERSION CONTROL

Moodle Destroyer Tools Documentation

Managing a WordPress 2.6 installation with Subversion. Sam Bauers - Automattic

What is git? Distributed Version Control System (VCS); Created by Linus Torvalds, to help with Linux development;

Git Guide. Meher Krishna Patel. Created on : Octorber, 2017 Last updated : October, More documents are freely available at PythonDSP

Django MFA Documentation

96Boards UART Adapter User Guide

KNIME Python Integration Installation Guide. KNIME AG, Zurich, Switzerland Version 3.7 (last updated on )

Monitoring the software quality in FairRoot. Gesellschaft für Schwerionenforschung, Plankstrasse 1, Darmstadt, Germany

CP215 Application Design

Site presentation: CSCS

Github/Git Primer. Tyler Hague

Exercise 1: Basic Tools

Working with GIT. Florido Paganelli Lund University MNXB Florido Paganelli MNXB Working with git 1/47

Robot Raconteur using C++ Version 0.8 Beta

BMS: Build Management System

Open CASCADE Technology. Building OCCT with WOK CONTENTS

Scientific Software Development with Eclipse

Docker & why we should use it

MRCP. Installation Manual. Developer Guide. Powered by Universal Speech Solutions LLC

Release Nicholas A. Del Grosso

TPS Documentation. Release Thomas Roten

CSC 2700: Scientific Computing

chatterbot-weather Documentation

XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics Alghero (ITALY) June Geant4 Installation.

BUILDING AND LEVERAGING A CROSS PLATFORM VFX/ ANIMATION DEVELOPMENT ENVIRONMENT. by Colin Doncaster ( )

Revision Control. An Introduction Using Git 1/15

2/8/18. Overview. Project Management. The First Law. What is Project Management? What Are These Changes? Software Configuration Management (SCM)

Stephan Hochdörfer //

Transcription:

ALIBUILD / PANDADIST The New Build System for Panda

Reason for a new Build Tool! FairSoft only weakly defines dependencies between packages Package order hard coded in the scripts Recompilation of updated package not possible Different versions of the same package not possible due to installation scheme F. Uhlig / FairRoot Group

AliBuild Build tool from ALICE! Get it from GitHub https://github.com/alisw/alibuild! Documentation at https://alisw.github.io/alibuild/! Set of tools to install HEP software from source alibuild " Main tool alideps " Create dependency graphs alidoctor " Test the system and shows warnings/errors alienv " Setup runtime environment " alienv enter pandaroot/latest-fairsoft F. Uhlig / FairRoot Group

alibuild What is it?! Written in Python! Multi-Platform! Recipes define how to build a software (e.g. root) from source! Calculate correct dependencies! Recompile only needed packages on recipe changes! alibuild/alibuild -a <platform> -j<ncpu> -w <workdir> -- defaults <defaults> <command> <pckage>

Get Started for PandaRoot git clone https://github.com/alisw/alibuild.git git clone https://pandaatfair.githost.io/pandarootgroup/ pandadist.git./alibuild/alibuild --config-dir=pandadist --defaults fairsoft build pandaroot./alibuild/alibuild enter pandaroot/latest-fairsoft # enters new shell

Source and Build Location Sources Build

Dependency graphs: alideps! alibuild/alideps --dist <recipe_dir> <package>! alibuild/alideps --dist pandadist pandaroot pandaroot FairRoot generators nanomsg protobuf simulation pythia pythia6 GEANT3 GEANT4_VMC lhapdf DDS HepMC vgm Python-modules yaml-cpp ROOT GEANT4 Python boost opengl Xdevel MySQL libpng sqlite FreeType ZeroMQ AliEn-Runtime GSL Xcode GCC-Toolchain

Recipes! Each recipe consist of two parts YAML Header " contains metadata about the package " Name " Version " URL of the sources (GIT) " Build script " Describes the steps to come from the sources to the installed software " Standard shell script F. Uhlig / FairRoot Group

PandaRoot recipe Header package: pandaroot version: trunk requires: - FairRoot - boost - GEANT4 - ROOT - pythia6 - pythia - HepMC - GEANT3 - GEANT4_VMC - vgm - "GCC-Toolchain:(?!osx)" env: VMCWORKDIR: "$PANDAROOT_ROOT/macro GIT integration would be here in the future

PandaRoot recipe Script #!/bin/bash unset SIMPATH SVN hack by Radek svn checkout https://subversion.gsi.de/fairroot/pandaroot/trunk $SOURCEDIR mkdir -p $INSTALLROOT cd $INSTALLROOT cmake $SOURCEDIR \ -DMACOSX_RPATH=OFF \ [ ] make -j ${JOBS} &> ~/build_pandaroot.txt [ ]

Default recipes! Special recipe! Dependence for all other packages! Only Header part of recipe used to Define global variables Disable specific packages Override package defaults like " tag " version "! Different default files for different use cases in the repository Fairsoft O2 O2-DAQ

Fairsoft Defaults package: defaults-fairsoft version: v1 env: CXX: "g++" CC: "gcc FC: "gfortran" CXXFLAGS: -fpic -g -O2 -std=c++11 CFLAGS: -fpic -g -O2" CMAKE_BUILD_TYPE: "RELWITHDEBINFO" FAIRROOT: "1" disable: - AliEn-Runtime - AliRoot - lhapdf - DDS For MAC: CXX: clang++ CC: clang CXXFLAGS: -fpic -g -O2 -std=c++11 -stdlib=libc++ overrides: boost: tag: "v1.61.0" source: "https://github.com/fairrootgroup/boost.git" geant3: source: "https://github.com/fairrootgroup/geant3.git" tag: "v2.1" pythia6: tag: "alice/416" ROOT: version: "%(tag_basename)s" tag: "v6-06-04" CMake: tag: "v3.6.2" prefer_system_check: which cmake && case `cmake --version sed -e' s/.* //' \ cut -d. -f1,2,3 head -n1` in [0-2]* 3.[0-3].* \ 3.4.[0-2]) exit 1 ;; esac

AliRoot/O2/FairRoot versions! Software releases are defined via branches (e.g. IB/v5-08/prod)! No Tags are used! A production branch doesn t change after creation! Development is done in next branch! Special branch for O2! We would need a branch for FairRoot! What about Cbm/Panda/R3B??? F. Uhlig / FairRoot Group

AliRoot/O2/FairRoot versions! Software releases are defined via branches (e.g. IB/v5-08/prod)! No Tags are used! A production branch doesn t change after creation We may or may not adopt that scheme! Development is done in next branch! Special branch for O2! We would need a branch for FairRoot! What about Cbm/Panda/R3B???

Open Issues! We fork from alfadist (maintained by FairRoot Group) -- They fork from alidist! Do we want to stay downstream?! Scrutinize the package versions/defaults

Get Started for PandaRoot git clone https://github.com/alisw/alibuild.git git clone https://pandaatfair.githost.io/pandarootgroup/ pandadist.git./alibuild/alibuild --config-dir=pandadist --defaults fairsoft build pandaroot./alibuild/alibuild enter pandaroot/latest-fairsoft # enters new shell