3 # pull source code in ${working_dir}/source
4 # build in ${working_dir}/build
5 # copyback directory is ${working_dir}/copyBack
10 Usage: $(basename ${0}) [-h]
11 env WORKSPACE=<workspace> LVER=<larsoftobj version> QUAL=<qualifier> BUILDTYPE=<debug|prof> $(basename ${0})
12 $(basename ${0}) <version> <qual_set> <build_type>
22 for label in "${labels[@]}"; do
23 for wanted in "$@"; do
24 [[ "${label}" == "${wanted}" ]] && return 0
31 while getopts :h OPT; do
42 shift `expr $OPTIND - 1`
45 working_dir="${WORKSPACE:-$(pwd)}"
46 version="${1:-${LVER}}"
47 qual_set="${2:-${QUAL}}"
48 oIFS=${IFS}; IFS=:; quals=(${qual_set//-/:}); IFS=$oIFS; unset oIFS
49 build_type="${3:-${BUILDTYPE}}"
52 for onequal in "${quals[@]}"; do
53 if [[ "${onequal}" =~ ^([ec])([0-9]+)$ ]]; then
55 elif [[ "${onequal}" =~ ^(s)([1-9][0-9]+)$ ]]; then
70 # create copyBack so artifact copy does not fail on early exit
71 rm -rf "${working_dir}/copyBack"
72 mkdir -p "${working_dir}/copyBack" || exit 1
74 # Find platform flavor.
76 if [ "${OS}" = "Linux" ]
79 if [ "${id}" = "Ubuntu" ]
81 flvr=u`lsb_release -r | sed -e 's/[[:space:]]//g' | cut -f2 -d":" | cut -f1 -d"."`
83 flvr=slf`lsb_release -r | sed -e 's/[[:space:]]//g' | cut -f2 -d":" | cut -f1 -d"."`
85 elif [ "${OS}" = "Darwin" ]
87 flvr=d`uname -r | cut -f1 -d"."`
97 echo "ERROR: unrecognized operating system ${OS}"
101 # Check supported builds.
102 if [[ `uname -s` == Darwin ]]; then
103 OSnum=`uname -r | cut -f1 -d"."`
104 xver=`xcodebuild -version | grep Xcode | cut -f2 -d" " | cut -f1 -d"."`
105 xcver=`xcodebuild -version | grep Xcode`
106 if { [[ ${basequal} =~ ^e(9$|[1-9][0-9]) ]] && \
107 [[ ${xver} < 7 ]] && \
108 [[ ${OSnum} > 13 ]]; }; then
109 # XCode too old on this platform.
110 echo "${basequal} build not supported on `uname -s`${OSnum} with ${xcver}"
111 echo "${basequal} build not supported on `uname -s`${OSnum} with ${xcver}" > \
112 "${working_dir}/copyBack/skipping_build"
114 elif { [[ "$basequal" == e* ]] || \
115 { [[ "$basequal" == c* ]] && (( $OSnum < 15 )); }; }; then
116 if want_unsupported; then
117 echo "Building unsupported ${basequal} on `uname -s`${OSnum} due to \$CET_BUILD_UNSUPPORTED=${CET_BUILD_UNSUPPORTED}"
119 # Don't normally support GCC builds on MacOS.
120 msg="${basequal} build not supported on `uname -s`${OSnum} -- export CET_BUILD_UNSUPPORTED=1 to override."
122 echo "$msg" > "${working_dir}/copyBack/skipping_build"
126 if have_label py2; then
127 msg="We are not building for Python2 on Darwin."
129 echo "${msg}" > "${working_dir}/copyBack/skipping_build"
132 elif [[ "${flvr}" == slf6 ]]; then
133 if have_label py2; then
134 echo "Building for supported Python2 on SLF6"
136 msg="Python3 builds not supported on SLF6."
138 echo "${msg}" > "${working_dir}/copyBack/skipping_build"
143 dotver=`echo ${version} | sed -e 's/_/./g' | sed -e 's/^v//'`
145 echo "building the larsoftobj distribution for ${version} ${dotver} ${qual_set} ${build_type}"
146 echo "build flavor is ${flvr}"
149 qualdir=`echo ${qual_set} | sed -e 's%:%-%'`
153 blddir=${working_dir}/build
154 srcdir=${working_dir}/source
155 # start with clean directories
158 # now make the dfirectories
159 mkdir -p ${srcdir} || exit 1
160 mkdir -p ${blddir} || exit 1
162 cd ${blddir} || exit 1
163 curl --fail --silent --location --insecure -O http://scisoft.fnal.gov/scisoft/bundles/tools/buildFW || exit 1
166 cd ${blddir} || exit 1
170 (( ${#labels[@]} > 0 )) && lopt=-l
171 ./buildFW -t -b ${basequal} \
172 ${lopt} $(IFS=:; printf '%s' "${labels[*]}") \
173 ${blddir} ${build_type} larsoftobj-${version} || \
174 { mv ${blddir}/*.log "${working_dir}/copyBack/"
181 # get these out of the way
182 mv ${blddir}/*source* ${srcdir}/
184 mv ${blddir}/*.bz2 $WORKSPACE/copyBack/
185 mv ${blddir}/*.txt $WORKSPACE/copyBack/