common 3.4 KB
Newer Older
J
Joerg Jaspert 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
# log something (basically echo it together with a timestamp)
#
# Set $PROGRAM to a string to have it added to the output.
function log () {
        if [ -z "${PROGRAM}" ]; then
                echo "$(date +"%b %d %H:%M:%S") $(hostname -s) [$$] $@"
        else
                echo "$(date +"%b %d %H:%M:%S") $(hostname -s) ${PROGRAM}[$$]: $@"
        fi
}

# log the message using log() but then also send a mail
# to the address configured in MAILTO (if non-empty)
function log_error () {
        log "$@"
        if [ -z "${MAILTO}" ]; then
                echo "$@" | mail -e -s "[$PROGRAM@$(hostname -s)] ERROR [$$]" ${MAILTO}
        fi
}

# debug log, only output when DEBUG=1
function debug () {
    if [ $DEBUG -eq 1 ]; then
        log "$*"
    fi
}
J
Joerg Jaspert 已提交
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44

# used by cron.dinstall *and* cron.unchecked.
function make_buildd_dir () {
	cd $configdir
	apt-ftparchive -qq -o APT::FTPArchive::Contents=off generate apt.conf.buildd

	cd  ${incoming}
	rm -f buildd/Release*
	apt-ftparchive -qq -o APT::FTPArchive::Release::Origin="Debian" -o APT::FTPArchive::Release::Label="Debian" -o APT::FTPArchive::Release::Description="buildd incoming" -o APT::FTPArchive::Release::Architectures="${archs}" release buildd > Release
	gpg --secret-keyring /srv/ftp.debian.org/s3kr1t/dot-gnupg/secring.gpg --keyring /srv/ftp.debian.org/s3kr1t/dot-gnupg/pubring.gpg --no-options --batch --no-tty --armour --default-key 6070D3A1 --detach-sign -o Release.gpg Release
	mv Release* buildd/.

	cd ${incoming}
	mkdir -p tree/${STAMP}
	cp -al ${incoming}/buildd/. tree/${STAMP}/
	ln -sfT tree/${STAMP} ${incoming}/builddweb
	find ./tree -mindepth 1 -maxdepth 1 -not -name "${STAMP}" -type d -print0 | xargs --no-run-if-empty -0 rm -rf
}
J
Joerg Jaspert 已提交
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74

# move accepted NEW packages from stagedir into queue/accepted
function acceptnew () {
    cd $newstage
    for file in $(find . -maxdepth 1 -mindepth 1 -type f -name \*.changes | sed -e "s,./,," | xargs); do
        sed '1,/Files:/d' "${file}" | sed '/BEGIN PGP SIGNATURE/,$d' \
            | while read notused1 notused2 notused3 notused4 NAME; do
            if [ -z "${NAME}" ]; then
                # Sometimes there is a newline after the Files:, ignore it
                continue
            fi
            if [ -f "${NAME}" ]; then
                mv --target-directory="${accepted}" "${NAME}"
            else
                log_error "Error, couldn't find file ${NAME} to move to ${accepted}"
                exit 2
            fi
        done
        mv --target-directory="${accepted}"  "${file}" "${file%%.changes}.dak"
    done
}

# Do the unchecked processing, in case we have files.
function do_unchecked () {
    cd $unchecked

    changes=$(find . -maxdepth 1 -mindepth 1 -type f -name \*.changes | sed -e "s,./,," | xargs)
    report=$queuedir/REPORT
    timestamp=$(date "+%Y-%m-%d %H:%M")

75
    echo "$timestamp": ${changes:-"Nothing to do"}  >> $report
J
Joerg Jaspert 已提交
76 77 78 79 80
    dak process-unchecked -a -d "$unchecked" >> $report
}

function sync_debbugs () {
    # sync with debbugs
81
    echo "--" >> $report
J
Joerg Jaspert 已提交
82 83 84 85 86 87 88 89
    rsync -aq -e "ssh -o Batchmode=yes -o ConnectTimeout=30 -o SetupTimeout=30" --remove-source-files  $queuedir/bts_version_track/ bugs-sync:/org/bugs.debian.org/versions/queue/ftp-master/ 2>/dev/null && touch $lockdir/synced_bts_version || true
    NOW=$(date +%s)
    TSTAMP=$(stat -c %Y $lockdir/synced_bts_version)
    DIFF=$(( NOW - TSTAMP ))
    if [ $DIFF -ge 259200 ]; then
        log "Kids, you tried your best and you failed miserably. The lesson is, never try. (Homer Simpson)"
    fi
}