#! /bin/bash
set -e
+set -o pipefail
set -u
export SCRIPTVARS=/srv/security-master.debian.org/dak/config/debian-security/vars
timestamp=$(date "+%Y-%m-%d %H:%M")
doanything=false
dopolicy=false
+LOCKFILE="$lockdir/unchecked.lock"
# So first we should go and see if any process-policy action is done
dak process-policy embargoed | mail -a "X-Debian: DAK" -e -s "Automatically accepted from embargoed" team@security.debian.org -- -F "Debian FTP Masters" -f ftpmaster@ftp-master.debian.org
# in newstage mean they are (late) accepts of security stuff, need
# to sync to ftp-master
-cd $newstage
-changes=$(find . -maxdepth 1 -mindepth 1 -type f -name \*.changes | sed -e "s,./,," | xargs)
-if [ -n "$changes" ]; then
- dopolicy=true
- echo "$timestamp": ${changes:-"Nothing to do in newstage"} >> $report
- rsync -a -q $newstage/. /srv/queued/ftpmaster/.
- dak process-upload -a -d "$newstage" >> $report
+cleanup() {
+ rm -f "$LOCKFILE"
+}
+
+if ! lockfile -r8 "$LOCKFILE"; then
+ echo "aborting cron.unchecked because $LOCKFILE has already been locked"
+ exit 0
fi
+trap cleanup EXIT
+
+for queue in embargoed; do
+ echo "$timestamp: processing ${queue}" >> ${report}
+ dak process-policy ${queue} >> ${report}
+ accepted=$(find ${queuedir}/accepted -type f -name "*.changes")
+ if [ -n "${accepted}" ]; then
+ dopolicy=true
+ fi
+done
cd $unchecked
changes=$(find . -maxdepth 1 -mindepth 1 -type f -name \*.changes | sed -e "s,./,," | xargs)
dak process-upload -a -d "$disembargo" >> $reportdis
fi
-if ! $doanything; then
- echo "$timestamp": Nothing to do >> $report
- exit 0
+# sync accepted files to ftpmaster
+cd ${base}
+find ${queuedir}/accepted -type f -exec mv -t /srv/queued/ftpmaster '{}' +
+
+# export policy queues
+for queue in embargoed; do
+ cd ${queuedir}/${queue}
+ rm -rf export.new
+ mkdir export.new
+ dak export -q ${queue} -d export.new --all
+ rsync -a --delete export.new/. export/.
+ rm -rf export.new
+ cd ${base}
+done
+
+if [ "${doanything}" = "false" ] && [ "${dopolicy}" = "false" ]; then
+ echo "$timestamp": Nothing to do >> $report
+ exit 0
fi
+# manage build queues
dak manage-build-queues -a
+dak generate-packages-sources2 -a build-queues
+dak generate-releases -a build-queues >/dev/null
+
+# export build queues in old format
+# XXX: This should be removed later.
+for suite in stable testing; do
+ overridecodename=$(dak admin suite show ${suite} | awk '$1 == "OverrideCodename:" { print $2 }')
+ rm -rf ${incoming}/${suite}.new
+ mkdir ${incoming}/${suite}.new
+ dak export-suite -s buildd-${suite} -d ${incoming}/${suite}.new
+
+ cd ${incoming}/${suite}.new
+ apt-ftparchive packages . ${overridedir}/override.${overridecodename}.all3 >Packages
+ gzip -9c --rsyncable <Packages >Packages.gz
+ apt-ftparchive sources . ${overridedir}/override.${overridecodename}.all3 >Sources
+ gzip -9c --rsyncable <Sources >Sources.gz
+ rm -f Release
+
+ cd ${incoming}
+ apt-ftparchive -qq -o APT::FTPArchive::Release::Origin="Debian" -o APT::FTPArchive::Release::Label="Debian" -o APT::FTPArchive::Release::Description="buildd $suite security" -o APT::FTPArchive::Release::Architectures="$archs" release ${suite}.new >${suite}.Release
+
+ gpg --secret-keyring /srv/security-master.debian.org/s3kr1t/dot-gnupg/secring.gpg --keyring /srv/security-master.debian.org/s3kr1t/dot-gnupg/pubring.gpg --no-options --batch --no-tty --armour --default-key 473041FA --detach-sign -o ${suite}.Release.gpg ${suite}.Release
+
+ mv ${suite}.Release ${suite}.new/Release
+ mv ${suite}.Release.gpg ${suite}.new/Release.gpg
+
+ if [ -d ${suite} ]; then
+ mv ${suite} ${suite}.old
+ fi
+ mv ${suite}.new ${suite}
+ rm -rf ${suite}.old
+done
if [ "x${dopolicy}x" = "xtruex" ]; then
# We had something approved from a policy queue, push out new archive
cd $configdir
$configdir/map.sh
#apt-ftparchive generate apt.conf
- dak generate-packages-sources2
- dak generate-releases
+ dak generate-packages-sources2 -a security
+ dak generate-releases -a security
/srv/security-master.debian.org/dak/config/debian-security/make-mirror.sh
sudo -u archvsync -H /home/archvsync/signal_security
fi
+cleanup
+trap - EXIT
+
$configdir/cron.buildd