Skip to content
Snippets Groups Projects

Create separate jobs for each OS/arch

Merged Alex Iribarren requested to merge modules into master
8 files
+ 229
53
Compare changes
  • Side-by-side
  • Inline

Files

#!/bin/bash
TOP="/advisories"
DISTS="cc7X c8X CS9 ALMA8 ALMA9"
REPOS="repos"
ARCHS="x86_64 aarch64"
ROOT="/data"
UPDINFOPY="/root/updateinfo.py"
mkdir -p $TOP/$DIST/$ARCH/
# Keep a backup db file to be used in case another script needs to read it at the same time this cronjob runs
# Delete it when done
echo "copy temporarily a backup to avoid any deadlocks, delete when done"
cp -f $TOP/$DIST/$ARCH/updateinfo.db $TOP/$DIST/$ARCH/updateinfo.db.bak
echo "removing old updateinfo.db"
mv -f $TOP/$DIST/$ARCH/updateinfo.db $TOP/$DIST/$ARCH/updateinfo.db.old
function runAdvisories() {
local DIST=$1
local ARCH=$2
# Keep a backup db file to be used in case another script needs to read it at the same time this cronjob runs
# Delete it when done
echo "$DIST/$ARCH: copy temporarily a backup to avoid any deadlocks, delete when done"
cp -f $TOP/$DIST/$ARCH/updateinfo.db $TOP/$DIST/$ARCH/updateinfo.db.bak
echo "$DIST/$ARCH: removing old updateinfo.db"
mv -f $TOP/$DIST/$ARCH/updateinfo.db $TOP/$DIST/$ARCH/updateinfo.db.old
if [ ! -f $TOP/$DIST/$ARCH/$REPOS ]; then
for REPO in $REPOS; do
if [ ! -d ${ROOT}/${REPO} ]; then
echo "repo ${ROOT}/${REPO} does not exist"
continue
fi
for REPO in $(cat $TOP/$DIST/$ARCH/$REPOS); do
echo "$DIST/$ARCH: processing: $REPO"
UPXMLFILE=$(sed '/updateinfo.xml.gz/!d; s/.*\/\(.*\)".*/\1/' ${REPO}/repodata/repomd.xml)
echo "$DIST/$ARCH: ${REPO}/repodata/$UPXMLFILE"
if [ -f ${REPO}/repodata/$UPXMLFILE ]; then
echo "$DIST/$ARCH: $UPDINFOPY --arch $ARCH --file ${REPO}/repodata/$UPXMLFILE --database $TOP/$DIST/$ARCH/updateinfo.db --updatedb"
$UPDINFOPY --arch $ARCH --file ${REPO}/repodata/$UPXMLFILE --database $TOP/$DIST/$ARCH/updateinfo.db --updatedb
elif [ -f $REPO/updateinfo.xml ]; then
echo "$DIST/$ARCH: $UPDINFOPY --arch $ARCH --file $REPO/updateinfo.xml --database $TOP/$DIST/$ARCH/updateinfo.db --updatedb"
$UPDINFOPY --arch $ARCH --file $REPO/updateinfo.xml --database $TOP/$DIST/$ARCH/updateinfo.db --updatedb
else
echo "$DIST/$ARCH: no xml file in $REPO"
fi
done
echo "$DIST/$ARCH: $UPDINFOPY --file $TOP/$DIST/$ARCH/updateinfo.xml --database $TOP/$DIST/$ARCH/updateinfo.db --updatexml"
$UPDINFOPY --file $TOP/$DIST/$ARCH/updateinfo.xml --database $TOP/$DIST/$ARCH/updateinfo.db --updatexml
# Remove db backup when done
rm -f $TOP/$DIST/$ARCH/updateinfo.db.bak
echo "$DIST/$ARCH: done."
}
for DIST in ${DISTS}; do
for ARCH in $ARCHS; do
if [ $DIST == "cc7X" -a $ARCH == "aarch64" ]; then
continue
fi
echo "processing: ${ROOT}/$REPO"
UPXMLFILE=$(sed '/updateinfo.xml.gz/!d; s/.*\/\(.*\)".*/\1/' ${ROOT}/${REPO}/repodata/repomd.xml)
if [ -f ${ROOT}/${REPO}/repodata/$UPXMLFILE ]; then
XMLFILE="${ROOT}/${REPO}/repodata/$UPXMLFILE"
elif [ -f ${ROOT}/$REPO/updateinfo.xml ]; then
XMLFILE="${ROOT}/$REPO/updateinfo.xml"
else
echo "no xml file in ${ROOT}/$REPO"
continue
fi
# Run each DIST/ARCH in parallel
runAdvisories $DIST $ARCH &
done
echo "found: ${XMLFILE}"
$UPDINFOPY --arch $ARCH --file ${XMLFILE} --database $TOP/$DIST/$ARCH/updateinfo.db --updatedb
done
wait
echo "$UPDINFOPY --file $TOP/$DIST/$ARCH/updateinfo.xml --database $TOP/$DIST/$ARCH/updateinfo.db --updatexml"
$UPDINFOPY --file $TOP/$DIST/$ARCH/updateinfo.xml --database $TOP/$DIST/$ARCH/updateinfo.db --updatexml
# Remove db backup when done
rm -f $TOP/$DIST/$ARCH/updateinfo.db.bak
echo "done."
Loading