Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Skip building cmssw in case of runtime image when testing a new image #200

Merged
merged 3 commits into from
Aug 3, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
223 changes: 135 additions & 88 deletions bin/test-cmssw.sh
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@ CMSREP="cmsrep.cern.ch"
ADD_PKGS=""
RUN_TESTS="false"
TEST_OK_MATCH="tests passed, 0 1 0 0 0 0 0 0 0 0 failed"
BUILDTIME="true"
if [ "$2" != "" ] ; then CMSREP="$2" ; fi
if [ "$3" != "" ] ; then ADD_PKGS="$3" ; fi
if [ "$4" = "true" ] ; then RUN_TESTS="true" ; fi
if [ "$5" != "" ] ; then TEST_OK_MATCH="$5" ; fi
if [ "$6" != "" ] ; then BUILDTIME="$6" ; fi
RELEASE_INST_DIR=/cvmfs/cms-ib.cern.ch
INVALID_ARCHS='slc6_amd64_gcc461 slc6_amd64_gcc810 slc7_aarch64_gcc493 slc7_aarch64_gcc530'
export CMSSW_GIT_REFERENCE=/cvmfs/cms.cern.ch/cmssw.git.daily
Expand All @@ -32,107 +34,152 @@ if [ "${ARCHS}" = "" ] ; then
rm -f cmsos archs
fi

run_the_matrix () {
echo "Architecture: $SCRAM_ARCH"
echo "CMSSW Version: $cmssw_ver"

RES="ERR"
[ -d ${WORKSPACE}/cms-bot ] || git clone --depth 1 https://github.com/cms-sw/cms-bot
${WORKSPACE}/cms-bot/das-utils/use-ibeos-sort
export PATH=${WORKSPACE}/cms-bot/das-utils:$PATH
mkdir -p $WORKSPACE/upload/${SCRAM_ARCH}/${cmssw_ver}
pushd $WORKSPACE/upload/${SCRAM_ARCH}/${cmssw_ver}
((timeout 14400 runTheMatrix.py -j $(nproc) -s --command ' -n 5') 2>&1 | tee -a matrix.log) || true
find . -name '*' -type f | grep -v '\.log$' | grep -v '\.py$' | xargs --no-run-if-empty rm -rf
if grep ' tests passed' matrix.log ; then
if [ $(grep ' tests passed' matrix.log | sed 's|.*tests passed||' | tr ' ' '\n' | grep '^[1-9]' | wc -l) -eq 0 ] ; then
RES="OK"
elif [ $(echo ${SCRAM_ARCH} | grep '_aarch64_' | wc -l) -eq 1 ] ; then
if [ $(grep "${TEST_OK_MATCH}" matrix.log | wc -l) -eq 1 ] ; then
RES="OK"
fi
fi
fi
popd
}

run_addons () {
echo "Architecture: $SCRAM_ARCH"
echo "CMSSW Version: $cmssw_ver"

RES_ADDONS="ERR"
mkdir -p $WORKSPACE/upload/${SCRAM_ARCH}/${cmssw_ver}
pushd $WORKSPACE/upload/${SCRAM_ARCH}/${cmssw_ver}
((timeout 14400 addOnTests.py -j $(nproc)) 2>&1 | tee -a addons.log) || true
if grep ' tests passed' addons.log ; then
if [ $(grep ' tests passed' addons.log | sed 's|.*tests passed||' | tr ' ' '\n' | grep '^[1-9]' | wc -l) -eq 0 ] ; then
RES_ADDONS="OK"
fi
fi
popd
}

parch=""
touch $WORKSPACE/res.txt
export CMS_PATH=/cvmfs/cms-ib.cern.ch
export SITECONFIG_PATH=/cvmfs/cms-ib.cern.ch/SITECONF/local
for arch in ${ARCHS} ; do
export SCRAM_ARCH=$arch
cd $WORKSPACE/inst
echo ${SCRAM_ARCH} >> $WORKSPACE/res.txt
if [ $(echo ${INVALID_ARCHS} | tr ' ' '\n' | grep "^${arch}$" | wc -l) -gt 0 ] ; then
echo ${SCRAM_ARCH}.SKIP >> $WORKSPACE/res.txt
continue
fi
[ "${parch}" != "" ] && rm -rf ${parch}
parch="${arch}"
rm -rf ./$SCRAM_ARCH ; mkdir -p ./$SCRAM_ARCH
cd ./$SCRAM_ARCH
touch cmssw.rel
$(source /cvmfs/cms.cern.ch/cmsset_default.sh >/dev/null 2>&1; scram -a $SCRAM_ARCH list -c CMSSW | grep -v '/cmssw-patch/' | grep ' CMSSW_' >cmssw.rel) || true
cat cmssw.rel
cmssw_ver=""
boot_repo="cms"
for v in $(grep ${RELEASE_INST_DIR}/ cmssw.rel | grep '_[0-9][0-9]*_X_' | awk '{print $3}' | tac) ; do
if [ -e $v/build-errors ] ; then continue ; fi
cmssw_ver=$(basename $v)
boot_repo=cms.$(echo $v | cut -d/ -f4)
if [ "${boot_repo}" = "cms.sw" ]; then boot_repo=cms.$(echo $v | cut -d/ -f6); fi
break
done
if [ "${cmssw_ver}" = "" ] ; then
cmssw_ver=$(grep /cvmfs/cms.cern.ch/ cmssw.rel | tail -1 | awk '{print $2}' || true)
fi
if ! sh -ex $WORKSPACE/inst/bootstrap.sh -server ${CMSREP} -r ${boot_repo} -a $SCRAM_ARCH setup ; then
echo ${SCRAM_ARCH}.BOOT.ERR >> $WORKSPACE/res.txt
continue
fi
echo ${SCRAM_ARCH}.BOOT.OK >> $WORKSPACE/res.txt
if [ "${cmssw_ver}" = "" ] ; then
echo "Warnings: No CMSSW version available for $SCRAM_ARCH"
continue
fi
echo "Found release: ${cmssw_ver}"
INST_OPTS="-a $SCRAM_ARCH --debug install --ignore-size --jobs 2 -y"
$WORKSPACE/inst/$SCRAM_ARCH/common/cmspkg $INST_OPTS cms+cmssw+${cmssw_ver}
INSTALL_PACKAGES=""
for pkg in gcc-fixincludes cms+dasgoclient ; do
pkg=$(($WORKSPACE/inst/$SCRAM_ARCH/common/cmspkg -a $SCRAM_ARCH search "$pkg" | grep 'CMS Experiment package' | tail -1 | sed 's| .*||') || true)
if [ "${pkg}" != "" ] ; then
INSTALL_PACKAGES="${INSTALL_PACKAGES} $pkg"
if $BUILDTIME ; then
cd $WORKSPACE/inst
echo ${SCRAM_ARCH} >> $WORKSPACE/res.txt
if [ $(echo ${INVALID_ARCHS} | tr ' ' '\n' | grep "^${arch}$" | wc -l) -gt 0 ] ; then
echo ${SCRAM_ARCH}.SKIP >> $WORKSPACE/res.txt
continue
fi
done
if [ "${INSTALL_PACKAGES}" != "" ] ; then
$WORKSPACE/inst/$SCRAM_ARCH/common/cmspkg $INST_OPTS ${INSTALL_PACKAGES}
fi
export cmssw_ver
(
export CMS_PATH=/cvmfs/cms-ib.cern.ch
export SITECONFIG_PATH=/cvmfs/cms-ib.cern.ch/SITECONF/local
[ "${parch}" != "" ] && rm -rf ${parch}
parch="${arch}"
rm -rf ./$SCRAM_ARCH ; mkdir -p ./$SCRAM_ARCH
cd ./$SCRAM_ARCH
touch cmssw.rel
$(source /cvmfs/cms.cern.ch/cmsset_default.sh >/dev/null 2>&1; scram -a $SCRAM_ARCH list -c CMSSW | grep -v '/cmssw-patch/' | grep ' CMSSW_' >cmssw.rel) || true
cat cmssw.rel
cmssw_ver=""
boot_repo="cms"
for v in $(grep ${RELEASE_INST_DIR}/ cmssw.rel | grep '_[0-9][0-9]*_X_' | awk '{print $3}' | tac) ; do
if [ -e $v/build-errors ] ; then continue ; fi
cmssw_ver=$(basename $v)
boot_repo=cms.$(echo $v | cut -d/ -f4)
if [ "${boot_repo}" = "cms.sw" ]; then boot_repo=cms.$(echo $v | cut -d/ -f6); fi
break
done
if [ "${cmssw_ver}" = "" ] ; then
cmssw_ver=$(grep /cvmfs/cms.cern.ch/ cmssw.rel | tail -1 | awk '{print $2}' || true)
fi
if ! sh -ex $WORKSPACE/inst/bootstrap.sh -server ${CMSREP} -r ${boot_repo} -a $SCRAM_ARCH setup ; then
echo ${SCRAM_ARCH}.BOOT.ERR >> $WORKSPACE/res.txt
continue
fi
echo ${SCRAM_ARCH}.BOOT.OK >> $WORKSPACE/res.txt
if [ "${cmssw_ver}" = "" ] ; then
echo "Warnings: No CMSSW version available for $SCRAM_ARCH"
continue
fi
echo "Found release: ${cmssw_ver}"

INST_OPTS="-a $SCRAM_ARCH --debug install --ignore-size --jobs 2 -y"
$WORKSPACE/inst/$SCRAM_ARCH/common/cmspkg $INST_OPTS cms+cmssw+${cmssw_ver}
INSTALL_PACKAGES=""
for pkg in gcc-fixincludes cms+dasgoclient ; do
pkg=$(($WORKSPACE/inst/$SCRAM_ARCH/common/cmspkg -a $SCRAM_ARCH search "$pkg" | grep 'CMS Experiment package' | tail -1 | sed 's| .*||') || true)
if [ "${pkg}" != "" ] ; then
INSTALL_PACKAGES="${INSTALL_PACKAGES} $pkg"
fi
done
if [ "${INSTALL_PACKAGES}" != "" ] ; then
$WORKSPACE/inst/$SCRAM_ARCH/common/cmspkg $INST_OPTS ${INSTALL_PACKAGES}
fi
export cmssw_ver
(
export BUILD_ARCH=$(echo ${SCRAM_ARCH} | cut -d_ -f1,2)
source $WORKSPACE/inst/$SCRAM_ARCH/cmsset_default.sh >/dev/null 2>&1
scram -a $SCRAM_ARCH project ${cmssw_ver}
cd ${cmssw_ver}
eval `scram run -sh` >/dev/null 2>&1
USE_GIT=false
if git cms-addpkg FWCore/Version >/dev/null 2>&1 ; then USE_GIT=true ; fi
for p in Calibration/EcalCalibAlgos FWCore/PrescaleService FWCore/SharedMemory FWCore/Framework DataFormats/Common DataFormats/StdDictionaries CondFormats/HIObjects ${ADD_PKGS} ; do
[ -e $CMSSW_RELEASE_BASE/src/$p ] || continue
if $USE_GIT ; then
git cms-addpkg $p
else
mkdir -p $CMSSW_BASE/src/$p
rsync -a $CMSSW_RELEASE_BASE/src/$p/ $CMSSW_BASE/src/$p/
fi
done
if scram build -j $(nproc) ; then
echo ${SCRAM_ARCH}.${cmssw_ver}.BUILD.OK >> $WORKSPACE/res.txt
else
echo ${SCRAM_ARCH}.${cmssw_ver}.BUILD.ERR >> $WORKSPACE/res.txt
RUN_TESTS=false
fi
RES="SKIP"
if $RUN_TESTS ; then
run_the_matrix
echo "RESULT: $RES"
fi
echo "${SCRAM_ARCH}.${cmssw_ver}.TEST.${RES}" >> $WORKSPACE/res.txt
)
rm -rf $SCRAM_ARCH
else
touch cmssw.rel
$(source /cvmfs/cms.cern.ch/cmsset_default.sh >/dev/null 2>&1; scram -a $SCRAM_ARCH list -c CMSSW | grep -v '/cmssw-patch/' | grep ' CMSSW_' >cmssw.rel) || true
cmssw_ver=$(grep /cvmfs/cms.cern.ch/ cmssw.rel | tail -1 | awk '{print $2}' || true)
echo "Getting CMSSW area from /cvmfs: $cmssw_ver"
export BUILD_ARCH=$(echo ${SCRAM_ARCH} | cut -d_ -f1,2)
source $WORKSPACE/inst/$SCRAM_ARCH/cmsset_default.sh >/dev/null 2>&1
source /cvmfs/cms.cern.ch/cmsset_default.sh
scram -a $SCRAM_ARCH project ${cmssw_ver}
cd ${cmssw_ver}
eval `scram run -sh` >/dev/null 2>&1
USE_GIT=false
if git cms-addpkg FWCore/Version >/dev/null 2>&1 ; then USE_GIT=true ; fi
for p in Calibration/EcalCalibAlgos FWCore/PrescaleService FWCore/SharedMemory FWCore/Framework DataFormats/Common DataFormats/StdDictionaries CondFormats/HIObjects ${ADD_PKGS} ; do
[ -e $CMSSW_RELEASE_BASE/src/$p ] || continue
if $USE_GIT ; then
git cms-addpkg $p
else
mkdir -p $CMSSW_BASE/src/$p
rsync -a $CMSSW_RELEASE_BASE/src/$p/ $CMSSW_BASE/src/$p/
fi
done
if scram build -j $(nproc) ; then
echo ${SCRAM_ARCH}.${cmssw_ver}.BUILD.OK >> $WORKSPACE/res.txt
else
echo ${SCRAM_ARCH}.${cmssw_ver}.BUILD.ERR >> $WORKSPACE/res.txt
RUN_TESTS=false
fi
RES="SKIP"
RES_ADDONS="SKIP"
if $RUN_TESTS ; then
RES="ERR"
[ -d ${WORKSPACE}/cms-bot ] || git clone --depth 1 https://github.com/cms-sw/cms-bot
${WORKSPACE}/cms-bot/das-utils/use-ibeos-sort
export PATH=${WORKSPACE}/cms-bot/das-utils:$PATH
mkdir -p $WORKSPACE/upload/${SCRAM_ARCH}/${cmssw_ver}
pushd $WORKSPACE/upload/${SCRAM_ARCH}/${cmssw_ver}
((timeout 14400 runTheMatrix.py -j $(nproc) -s --command ' -n 5') 2>&1 | tee -a matrix.log) || true
find . -name '*' -type f | grep -v '\.log$' | grep -v '\.py$' | xargs --no-run-if-empty rm -rf
if grep ' tests passed' matrix.log ; then
if [ $(grep ' tests passed' matrix.log | sed 's|.*tests passed||' | tr ' ' '\n' | grep '^[1-9]' |wc -l) -eq 0 ] ; then
RES="OK"
elif [ $(echo ${SCRAM_ARCH} | grep '_aarch64_' | wc -l) -eq 1 ] ; then
if [ $(grep "${TEST_OK_MATCH}" matrix.log | wc -l) -eq 1 ] ; then
RES="OK"
fi
fi
fi
popd
run_the_matrix
run_addons
fi
echo "${SCRAM_ARCH}.${cmssw_ver}.TEST.${RES}" >> $WORKSPACE/res.txt
)
rm -rf $SCRAM_ARCH
echo "${SCRAM_ARCH}.${cmssw_ver}.TEST_ADDONS.${RES_ADDONS}" >> $WORKSPACE/res.txt
fi
done
[ "${parch}" != "" ] && rm -rf ${parch}
cd $WORKSPACE
Expand Down