Fermilab


MINOS Offline Documentation
[home] [installing MINOS software] [supported platforms] [package links] [mailing list] [HyperNews] [FAQ] [computing help] [MINOS glossary] [archives]

FNAL Code Librarian notes



FNAL Code Librarian notes

This document is meant as a place to record procedures for managing and building shared base releases (and auxillary packages) at FNAL.

Contents:

Overview:

Code management should be done on the minos27 machine for consistency. Some utility functions are available via: [login to minsoft@minos27.fnal.gov] source ~/setup_code.sh

location  
/grid/fermiapp/minos/minossoft top of the MINOS SRT (base releases) area $SRT_DIST
/grid/fermiapp/minos/products top of the MINOS UPS (including external products) area
/grid/fermiapp/minos/products/db UPS tree for .table and .version files $MINOS_UPS_DB
/grid/fermiapp/minos/products/prd UPS tree for actual libraries and executables
/afs/fnal.gov/files/code/e875/general/bin utility scripts (see below) $MINOS_HOME/general/bin

Development (Nightly) Release:

# # crontab for minsoft@minos27 # SHELL=/bin/bash MAILTO=<realname>@fnal.gov HOME=/home/mindata PATH=/sbin:/bin/:/usr/sbin:/usr/bin/:/usr/krb5/bin:$HOME:$HOME/bin # # nightly minossoft development build # 0 22 * * * sg e875 " /afs/fnal.gov/files/code/e875/general/bin/base_release_update.sh " #

Nightly WebDocs Release:

The WebDocs area is served by a machine that normally can only access AFS (though that is subject to change in the future). This means that to be able to make info available on the web the job must be able to write to AFS ... and thus must be a real user and not a group shared account. The following lines appear in rhatcher's personal minos27.fnal.gov crontab. # # copy nightly build logs and doxygen update to AFS areas # 15 * * * * /usr/bin/pagsh /usr/krb5/bin/kcron /afs/fnal.gov/files/code/e875/general/bin/copy_nightly_output.sh # # keep AFS source copy up-to-date so the WebDocs is web visible # 45 21 * * * /usr/bin/pagsh /usr/krb5/bin/kcron /afs/fnal.gov/files/code/e875/general/bin/base_release_update.sh afs webdocs

New Snapshot/Branch/Frozen Releases:

To checkout, build and make available via the normal setup script (and UPS) a tagged MINOS release use: cd /afs/fnal.gov/files/code/e875/general/bin emacs fnal_snapshot.sh [ add new release info to bottom of the list; colon separated triplet of: ] [ release name : root version : optional build-optimized ] nohup ./fnal_snapshot.sh

Checking summary of build warnings/errors:

setup_minos -r <release-name> # e.g. R2.0.4 $SRT_DIST/setup/count_buildlog_warnings -d <dayofweek> # e.g. Thu yields: Release: R2.0.4 Linux2.6-GCC_3_4 Thu warnings in: cgen incl lib(unused) bin(unused) ---------------------------------------------------------- CDFMonitoringFwk 0 0 2( 0) 0( 0) G3PTSim 0 0 2( 0) 0( 0) LISummary 0 0 1( 1) 0( 0) NuMuBar 0 0 4( 2) 0( 0) NumericalMethods 0 0 1( 1) 0( 0) TriD ** 0 0 0( 0) 0( 0) Error [ bin=2 ] Util 0 0 1( 1) 0( 0) ---------------------------------------------------------- TOTAL ** 0 0 11( 5) 0( 0) ----------------------------------------------------------

Checkout (+Build) New ROOT into UPS:

There is a script that will fetch copies of a tagged version of root from the CERN SVN server and build it. A small hack is applied to the -opt version so that it is built with the gcc flags -O2 -g rather than simply -O2. cd /afs/fnal.gov/files/code/e875/general/bin emacs build_ups_minos_root.sh [ add new root version to bottom of the list ] nohup ./build_ups_minos_root.sh

Beyond checking a copy out from SVN, this script utilizes the following:

Build ROOT:

Configuring and building ROOT can be a bit intimidating. The following script tries to incorporate a number of options for use in the MINOS environment including some packages (or interfaces to external packages) that aren't necessarily the default. cd $ROOTSYS /afs/fnal.gov/files/code/e875/general/bin/config_build_root.sh By default this script tries to do everything necessary to get that release running, including starting from a clean slate by doing a make distclean. Users can supply flags to disable particular phases: configure and build minos root Usage: config_build_root.sh [-c] [-C] [-X] [-d] [-m] -c: no clean -C: no rerun config -X: no general make -d: no cintdlls -m: no map

Writeable vs. pserver:

Sometimes when making small changes to an existing checked-out base release it is easier to make the change in-situ, test it, and commit it back to the repository. The copy of the code at $SRT_DIST is normally fetched from the pserver (i.e. read-only) so that it doesn't need kerberos credentials to update. That means that changes can't be committed back without a bit of trickery. source ~/setup_code.sh cd $SRT_PUBLIC_CONTEXT/<MyPackage> [ edit file ; test change ] [ ... ] cd $SRT_PUBLIC_CONTEXT/<MyPackage> minos_cvs_migrate ssh cvs commit <MyFile> [ supply meaningful log message ] minos_cvs_migrate pserver It is vitally important that the source get reverted back to pserver (especially for the nightly development release) so that future updates can be done by crontab jobs.


Last Modified: $Date: 2011/10/24 19:57:44 $
Contact: rhatcher@fnal.gov
Page viewed from http://www-numi.fnal.gov/offline_software/srt_public_context/WebDocs/fnal_librarian.html
Fermilab
Security, Privacy, Legal Fermi National Accelerator Laboratory