| 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 |  | 
|---|