| 1 | #! /bin/bash
 | 
|---|
| 2 | 
 | 
|---|
| 3 | function help ()
 | 
|---|
| 4 | {
 | 
|---|
| 5 |   echo "Usage: `basename $0` [OPTION]... [PACKAGE]..."
 | 
|---|
| 6 |   echo -e "Create a distribution kit of the PACKAGEs (all by default) reachable from the \"main\" package (TestRelease by default) in a user's devarea (defaults to either the environment variable, macro devarea in \${HOME}/cmthome/requirements, first entry in CMTPATH, or \${HOME}/MyTest).\n"
 | 
|---|
| 7 |   echo "  -a <dev_area> : select development area <dev_area>"
 | 
|---|
| 8 |   echo "  -m <main_pkg> : select \"main\" package <main_pkg> in development area"
 | 
|---|
| 9 |   echo "  -r <release>  : select Atlas release <release>"
 | 
|---|
| 10 |   echo "  -d <kit_dir>  : create kit in directory <kit_dir>"
 | 
|---|
| 11 |   echo "  -O            : package optimized build (debug otherwise)"
 | 
|---|
| 12 |   echo "  -S            : skip CMT setup"
 | 
|---|
| 13 |   echo -e "  -h            : display this help and exit\n"
 | 
|---|
| 14 |   echo "Report bugs to <Grigori.Rybkine@rhul.ac.uk>."
 | 
|---|
| 15 | }
 | 
|---|
| 16 | 
 | 
|---|
| 17 | #
 | 
|---|
| 18 | # Process the options and arguments
 | 
|---|
| 19 | #
 | 
|---|
| 20 | release=${ATLAS_RELEASE}
 | 
|---|
| 21 | mode=
 | 
|---|
| 22 | packages=
 | 
|---|
| 23 | devarea=${devarea}
 | 
|---|
| 24 | mainpkg=TestRelease
 | 
|---|
| 25 | skip=
 | 
|---|
| 26 | 
 | 
|---|
| 27 | while getopts ":a:m:r:d:OSh" opt; do
 | 
|---|
| 28 |   case $opt in
 | 
|---|
| 29 |     a ) devarea=${OPTARG} ;;
 | 
|---|
| 30 |     m ) mainpkg=${OPTARG} ;;
 | 
|---|
| 31 |     r ) release=${OPTARG} ;;
 | 
|---|
| 32 |     d ) PACMAN_CACHE=${OPTARG} ;;
 | 
|---|
| 33 |     O ) mode=opt ;;
 | 
|---|
| 34 |     S ) skip=true ;;
 | 
|---|
| 35 |     h ) help ; exit 0 ;;
 | 
|---|
| 36 |     \?|: ) help ; exit 1 ;;
 | 
|---|
| 37 |   esac
 | 
|---|
| 38 | done
 | 
|---|
| 39 | 
 | 
|---|
| 40 | shift $(($OPTIND - 1))
 | 
|---|
| 41 | 
 | 
|---|
| 42 | for pkg ; do
 | 
|---|
| 43 |   package=`echo ${pkg} | sed -e 's#^[^/]#/&#' -e 's#[^/]$#&/#'`
 | 
|---|
| 44 |   packages="${packages} ${package}"
 | 
|---|
| 45 | done
 | 
|---|
| 46 | 
 | 
|---|
| 47 | shift $#
 | 
|---|
| 48 | 
 | 
|---|
| 49 | #
 | 
|---|
| 50 | # Locate the Deployment package
 | 
|---|
| 51 | #
 | 
|---|
| 52 | curdir=$PWD
 | 
|---|
| 53 | cd `dirname $0`
 | 
|---|
| 54 | dep=$PWD
 | 
|---|
| 55 | 
 | 
|---|
| 56 | #
 | 
|---|
| 57 | # Connect to the release
 | 
|---|
| 58 | #
 | 
|---|
| 59 | if [ -z ${skip} ] ; then
 | 
|---|
| 60 | 
 | 
|---|
| 61 | cd ${HOME}/cmthome || exit
 | 
|---|
| 62 | if [ "${release}" ] && [ "${mode}" ] ; then
 | 
|---|
| 63 |   source setup.sh -tag=${release},${mode}
 | 
|---|
| 64 |   if [ -z "${devarea}" ] ; then
 | 
|---|
| 65 |     devarea=`cmt show macro_value devarea -tag=${release},${mode}`
 | 
|---|
| 66 |   fi
 | 
|---|
| 67 | elif [ "${release}" ] && [ -z "${mode}" ] ; then
 | 
|---|
| 68 |   source setup.sh -tag=${release}
 | 
|---|
| 69 | #  mode=`cmt system | sed 's/.*\-//g'`
 | 
|---|
| 70 |   [ "${devarea}" ] || devarea=`cmt show macro_value devarea -tag=${release}`
 | 
|---|
| 71 | elif [ -z "${release}" ] && [ "${mode}" ] ; then
 | 
|---|
| 72 |   source setup.sh -tag=${mode}
 | 
|---|
| 73 |   release=`cmt show macro_value ATLAS_RELEASE -tag=${mode}`
 | 
|---|
| 74 |   [ "${devarea}" ] || devarea=`cmt show macro_value devarea -tag=${mode}`
 | 
|---|
| 75 | else
 | 
|---|
| 76 |   source setup.sh
 | 
|---|
| 77 |   release=`cmt show macro_value ATLAS_RELEASE`
 | 
|---|
| 78 | #  mode=`cmt system | sed 's/.*\-//g'`
 | 
|---|
| 79 |   [ "${devarea}" ] || devarea=`cmt show macro_value devarea`
 | 
|---|
| 80 | fi
 | 
|---|
| 81 | 
 | 
|---|
| 82 | else
 | 
|---|
| 83 |   which cmt > /dev/null 2>&1 || { echo "CMT not setup" ; exit 1; }
 | 
|---|
| 84 | fi
 | 
|---|
| 85 | 
 | 
|---|
| 86 | [ "${release}" ] || { echo "Select Atlas release, please" ; exit 1; }
 | 
|---|
| 87 | 
 | 
|---|
| 88 | cmt_path_purge=`echo $CMTPATH | sed s/^:*//`
 | 
|---|
| 89 | cmt_path_0=`echo ${cmt_path_purge} | cut -d: -f1`
 | 
|---|
| 90 | 
 | 
|---|
| 91 | if [ "${devarea}" ] ; then
 | 
|---|
| 92 |   if echo ${devarea} | grep -vq ^/ ; then
 | 
|---|
| 93 |     devarea=${curdir}/${devarea}
 | 
|---|
| 94 |   fi
 | 
|---|
| 95 |   devarea=`echo ${devarea} | sed 's#/*$##'`
 | 
|---|
| 96 |   [ "${devarea}" != "${cmt_path_0}" ] && export CMTPATH=${devarea}:${CMTPATH}
 | 
|---|
| 97 | else
 | 
|---|
| 98 | # devarea specified through neither the option, environment nor macro
 | 
|---|
| 99 |   devarea=${cmt_path_0}
 | 
|---|
| 100 |   if [ -z "${devarea}" ] ; then
 | 
|---|
| 101 |     devarea=${HOME}/MyTest ; export CMTPATH=${devarea}:${CMTPATH}
 | 
|---|
| 102 |   fi
 | 
|---|
| 103 |   echo "Using ${devarea} as devarea" 
 | 
|---|
| 104 | fi
 | 
|---|
| 105 | 
 | 
|---|
| 106 | if [ "${mode}" ]; then
 | 
|---|
| 107 |   mode_opt="-platform ${mode}"
 | 
|---|
| 108 | else
 | 
|---|
| 109 |   mode_opt=
 | 
|---|
| 110 | fi
 | 
|---|
| 111 | 
 | 
|---|
| 112 | if [ "${PACMAN_CACHE}" ]; then 
 | 
|---|
| 113 |   if echo ${PACMAN_CACHE} | grep -vq ^/ ; then
 | 
|---|
| 114 |     PACMAN_CACHE=${curdir}/${PACMAN_CACHE}
 | 
|---|
| 115 |   fi
 | 
|---|
| 116 | else
 | 
|---|
| 117 |   PACMAN_CACHE=/tmp/${LOGNAME}/${release}
 | 
|---|
| 118 |   echo "Creating kit in ${PACMAN_CACHE}" 
 | 
|---|
| 119 | fi
 | 
|---|
| 120 | 
 | 
|---|
| 121 | export PACMAN_CACHE
 | 
|---|
| 122 | mkdir -p ${PACMAN_CACHE}
 | 
|---|
| 123 | 
 | 
|---|
| 124 | #
 | 
|---|
| 125 | # Select the top location from which the construction kit will be broadcast
 | 
|---|
| 126 | #
 | 
|---|
| 127 | cd ${devarea}/${mainpkg}/${mainpkg}*/cmt || exit
 | 
|---|
| 128 | 
 | 
|---|
| 129 | #
 | 
|---|
| 130 | # Set up the release context
 | 
|---|
| 131 | #
 | 
|---|
| 132 | source setup.sh -no_cleanup
 | 
|---|
| 133 | 
 | 
|---|
| 134 | #
 | 
|---|
| 135 | # Connect to the patch directory
 | 
|---|
| 136 | #
 | 
|---|
| 137 | patches=/afs/cern.ch/user/a/alibrari/Kit/patches
 | 
|---|
| 138 | patches_opt="-patches ${patches}"
 | 
|---|
| 139 | 
 | 
|---|
| 140 | #
 | 
|---|
| 141 | # May need to construct the cycles file
 | 
|---|
| 142 | #
 | 
|---|
| 143 | if [ -r ${patches}/cycles_${release}.txt ] ; then
 | 
|---|
| 144 |   cycles_opt="-cycles ${patches}/cycles_${release}.txt"
 | 
|---|
| 145 | else
 | 
|---|
| 146 |   cmt -quiet show cycles >| ${PACMAN_CACHE}/cycles_${release}.txt
 | 
|---|
| 147 |   cycles_opt="-cycles ${PACMAN_CACHE}/cycles_${release}.txt"
 | 
|---|
| 148 | fi
 | 
|---|
| 149 | 
 | 
|---|
| 150 | #
 | 
|---|
| 151 | # Run the construction kit
 | 
|---|
| 152 | #
 | 
|---|
| 153 | if [ -z "${packages}" ] ; then
 | 
|---|
| 154 |   ${dep}/create_project_kits.sh ${mode_opt}
 | 
|---|
| 155 |   cmt broadcast -local ${dep}/create_kit.sh ${patches_opt} ${cycles_opt} ${mode_opt} ${PACMAN_CACHE}
 | 
|---|
| 156 | else
 | 
|---|
| 157 |   cmt broadcast -local -select="${packages}" ${dep}/create_kit.sh ${patches_opt} ${cycles_opt} ${mode_opt} ${PACMAN_CACHE}
 | 
|---|
| 158 |   #cmt -quiet broadcast -local -select="${packages}" ${dep}/create_kit.sh ${patches_opt} ${cycles_opt} ${mode_opt} ${PACMAN_CACHE}
 | 
|---|
| 159 | fi
 | 
|---|
| 160 | 
 | 
|---|
| 161 | cd $curdir
 | 
|---|
| 162 | 
 | 
|---|