# vim:set et ts=4 sw=4 ft=bash ai: set -eE LANG=C PATH="/bin:/usr/bin:/org/wanna-build/bin:/org/buildd.debian.org/bin:/org/wanna-build/triggers" ARCHIVE_MAIN="/org/wanna-build/tmp/archive/debian" ARCHIVE_BASE="/org/wanna-build/tmp/archive/${ARCHIVE}" PAS_BASE="/org/buildd.debian.org/web/quinn-diff" PAS_FILE="$PAS_BASE/$SUITE/Packages-arch-specific" LOCKFILE="${ARCHIVE_BASE}/lock" ARCHS_lenny="alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc" ARCHS_squeeze="amd64 armel i386 ia64 mips mipsel powerpc s390 sparc kfreebsd-amd64 kfreebsd-i386" ARCHS_wheezy="amd64 armel i386 ia64 mips mipsel powerpc s390 sparc kfreebsd-amd64 kfreebsd-i386" ARCHS_sid="$ARCHS_squeeze hurd-i386" # Creates a working environment within the corresponding archive # directory and jumps there. ensure_workdir() { mkdir -p "${ARCHIVE_BASE}/workdir" cd "${ARCHIVE_BASE}/workdir" } # Puts the list of architectures for a given suite onto stdout. get_architectures() { SUITE="$1" if [ "$SUITE" = "lenny" -o "$SUITE" = "oldstable" ]; then echo $ARCHS_lenny elif [ "$SUITE" = "squeeze" -o "$SUITE" = "stable" ]; then echo $ARCHS_squeeze elif [ "$SUITE" = "wheezy" -o "$SUITE" = "testing" ]; then echo $ARCHS_wheezy elif [ "$SUITE" = "unstable" -o "$SUITE" = "sid" ]; then echo $ARCHS_sid elif [ "$SUITE" = "experimental" ]; then echo $ARCHS_sid else echo "Unknown suite encountered, aborting." >&2 exit 1 fi } cleanup() { rm -rf "$LOCKFILE" } ensure_lock() { if lockfile -! -r 10 -l 6000 "$LOCKFILE" then echo "Cannot lock $LOCKFILE, aborting." exit 1 fi } trigger_wb_update() { SUITE="$1" ARCHS="$2" SOURCES="$3" PACKAGES="$4" WB_SUITE="$5" if [ -z "$WB_SUITE" ] then WB_SUITE="${SUITE}" fi echo "`date`: Processing ${ARCHIVE}/${SUITE} ..." keep-latest source $(eval echo ${SOURCES}) > Sources.${SUITE} for ARCH in ${ARCHS}; do keep-latest ${ARCH} $(eval echo $(echo ${PACKAGES} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH} : > Packages.${SUITE}.${ARCH}.build-essential for pkg in perl ; do grep-dctrl -S -s Package,Version,Priority,Section,Architecture -X $pkg < Packages.${SUITE}.${ARCH} | sed -e '/^Version/ s,$,+build-essential,' >> Packages.${SUITE}.${ARCH}.build-essential done for pkg in make binutils dpkg-dev; do grep-dctrl -S -s Package,Version,Priority,Section,Architecture -X $pkg < Packages.${SUITE}.${ARCH} | sed -e '/^Version/ s,$,+build-essential,' >> Packages.${SUITE}.${ARCH}.build-essential done grep-dctrl -F Priority required -s Package,Version,Priority,Section,Architecture < Packages.${SUITE}.${ARCH} | sed -e '/^Version/ s,$,+build-essential,' >> Packages.${SUITE}.${ARCH}.build-essential grep-dctrl -F Essential -i yes -s Package,Version,Priority,Section,Architecture < Packages.${SUITE}.${ARCH} | sed -e '/^Version/ s,$,+build-essential,' >> Packages.${SUITE}.${ARCH}.build-essential done [ -f Packages.${SUITE}.i386.non-free ] && PNF="Packages.${SUITE}.%ARCH%.non-free" || PNF="" [ -f Sources.${SUITE}.non-free ] && SNF="Sources.${SUITE}.non-free" || SNF="" parallel -l 5 -i wanna-build -v --Pas ${PAS_FILE} --merge-v3 -A "{}" --dist=$WB_SUITE Packages.${SUITE}.%ARCH% $PNF . Sources.${SUITE} $SNF . Packages.${SUITE}.%ARCH% Packages.${SUITE}.%ARCH%.build-essential -- ${ARCHS} || true echo "`date`: ${ARCHIVE}/${SUITE} done" } trigger_wb_update_for_overlay() { SUITE="$1" ARCHS="$2" SOURCES_BASE="$3" PACKAGES_BASE="$4" SOURCES="$5" PACKAGES="$6" WB_SUITE="$7" WHITELIST_FILE="$8" if [ -z "$WB_SUITE" ] then WB_SUITE="${SUITE}" fi echo "`date`: Processing ${ARCHIVE}/${SUITE} ..." keep-latest source $(eval echo ${SOURCES}) > Sources.${SUITE} keep-latest source $(eval echo Sources.${SUITE} ${SOURCES_BASE}) > Sources.${SUITE}-all for ARCH in ${ARCHS}; do keep-latest ${ARCH} $(eval echo $(echo ${PACKAGES} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH} keep-latest ${ARCH} Packages.${SUITE}.${ARCH} $(eval echo $(echo ${PACKAGES_BASE} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}-all done [ -f Packages.${SUITE}.i386.non-free ] && PNF="Packages.${SUITE}.%ARCH%.non-free" || PNF="" [ -f Sources.${SUITE}.non-free ] && SNF="Sources.${SUITE}.non-free" || SNF="" echo parallel -l 5 -i wanna-build -v --Pas ${PAS_FILE} --merge-v3 -A "{}" --dist=$WB_SUITE Packages.${SUITE}.%ARCH% $PNF . Sources.${SUITE} $SNF . \ Packages.${SUITE}.%ARCH%-all . Sources.${SUITE}-all $SNF -- ${ARCHS} parallel -l 5 -i wanna-build -v --Pas ${PAS_FILE} --merge-v3 -A "{}" --dist=$WB_SUITE Packages.${SUITE}.%ARCH% $PNF . Sources.${SUITE} $SNF . \ Packages.${SUITE}.%ARCH%-all . Sources.${SUITE}-all $SNF -- ${ARCHS} || true echo "`date`: ${ARCHIVE}/${SUITE} done" } # This is for the case where you get also get packages from # a secondary unrelated suite, the buildd's chroot also has # those packages files in it. # Examples are *-{volatile,backports,edu} and experimental # This is not for something like stable and proposed-updates trigger_wb_update_with_secondary() { SUITE="$1" ARCHS="$2" PACKAGES_BASE="$3" SOURCES="$4" PACKAGES="$5" WB_SUITE="$6" WHITELIST_FILE="$7" if [ -z "$WB_SUITE" ] then WB_SUITE="${SUITE}" fi echo "`date`: Processing ${ARCHIVE}/${SUITE} ..." keep-latest source $(eval echo ${SOURCES}) > Sources.${SUITE} for ARCH in ${ARCHS}; do keep-latest ${ARCH} $(eval echo $(echo ${PACKAGES} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH} ucat Packages.${SUITE}.${ARCH} $(eval echo $(echo ${PACKAGES_BASE} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}-all done [ -f Packages.${SUITE}.i386.non-free ] && PNF="Packages.${SUITE}.%ARCH%.non-free" || PNF="" [ -f Sources.${SUITE}.non-free ] && SNF="Sources.${SUITE}.non-free" || SNF="" parallel -l 5 -i wanna-build -v --Pas ${PAS_FILE} --merge-v3 -A "{}" --dist=$WB_SUITE Packages.${SUITE}.%ARCH% $PNF . Sources.${SUITE} $SNF . \ Packages.${SUITE}.%ARCH%-all -- ${ARCHS} || true echo "`date`: ${ARCHIVE}/${SUITE} done" } ucat() { for FILE in $*; do if [ -f ${FILE} ]; then case $FILE in *.gz) zcat $FILE ;; *.bz2) bzcat $FILE ;; *) cat $FILE ;; esac fi done } filter_out_nonfree() { INPUT="$1" OUTPUT="$2" gunzip -c "$INPUT" | grep-dctrl -v -r -F Section 'non-free/.*' | gzip -c > "$OUTPUT" }