]> git.donarmstrong.com Git - wannabuild.git/blobdiff - triggers/common
Rewrite triggers
[wannabuild.git] / triggers / common
diff --git a/triggers/common b/triggers/common
new file mode 100644 (file)
index 0000000..d48cbfc
--- /dev/null
@@ -0,0 +1,136 @@
+# 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"
+LOCKFILE="${ARCHIVE_BASE}/lock"
+ARCHS_etch="alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc"
+ARCHS_lenny="alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc"
+ARCHS_squeeze="amd64 armel hppa i386 ia64 mips mipsel powerpc s390 sparc kfreebsd-amd64 kfreebsd-i386"
+ARCHS_unstable="$ARCHS_squeeze alpha 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" = "etch" -o "$SUITE" = "oldstable" ]; then echo $ARCHS_etch
+    elif [ "$SUITE" = "lenny" -o "$SUITE" = "stable" ]; then echo $ARCHS_lenny
+    elif [ "$SUITE" = "squeeze" -o "$SUITE" = "testing" ]; then echo $ARCHS_squeeze
+    elif [ "$SUITE" = "unstable" -o "$SUITE" = "sid" ]; then echo $ARCHS_unstable
+    elif [ "$SUITE" = "experimental" ]; then echo $ARCHS_unstable
+    else
+        echo "Unknown suite encountered, aborting." >2
+        exit 1
+    fi
+}
+
+# Runs quinn-diff with the right arguments.
+do_quinn() {
+    SUITE="$1"
+    ARCH="$2"
+    WHITELIST_FILE="$3"
+    quinn-diff \
+        -A $ARCH \
+        -a "$PAS_BASE/$SUITE/Packages-arch-specific" \
+        -s Sources.$SUITE \
+        -p Packages.$SUITE.$ARCH \
+        | filter-q-d "${WHITELIST_FILE}" > quinn-$SUITE.$ARCH 2>/dev/null
+}
+
+# Call wanna-build's importing function.  WB_SUITE might differ from SUITE
+# for other archives than the main one.
+do_wb_merge_all() {
+    SUITE="$1"
+    ARCH="$2"
+    WB_SUITE="$3"
+    OPTIONS="$4"
+
+    if [ -z "$WB_SUITE" ]
+    then
+        WB_SUITE="$SUITE"
+    fi
+
+    if [ "$4" != "overlay" ]
+    then
+        wanna-build -v --merge-all --arch=$ARCH --dist=$WB_SUITE \
+            Packages.$SUITE.$ARCH quinn-$SUITE.$ARCH Sources.$SUITE
+    else
+        wanna-build -v --merge-all --arch=$ARCH --dist=$WB_SUITE \
+            Packages.$SUITE.$ARCH-all quinn-$SUITE.$ARCH Sources.$SUITE-all
+    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} ..."
+
+    new-keep-latest source $(eval echo ${SOURCES}) > Sources.${SUITE}
+    parallel -l 5 -i trigger_wb_update_arch_loop "${SUITE}" "{}" "${SOURCES}" "${PACKAGES}" "${WB_SUITE}" -- ${ARCHS}
+    #for ARCH in ${ARCHS}; do
+    #trigger_wb_update_arch_loop "${SUITE}" "${ARCH}" "${SOURCES}" "${PACKAGES}" "${WB_SUITE}"
+    #done
+
+    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} ..."
+
+    new-keep-latest source $(eval echo ${SOURCES}) > Sources.${SUITE}
+    new-keep-latest source $(eval echo Sources.${SUITE} ${SOURCES_BASE}) > Sources.${SUITE}-all
+
+    parallel -l 5 -i trigger_wb_update_for_overlay_arch_loop "${SUITE}" "{}" "${SOURCES_BASE}" "${PACKAGES_BASE}" "${SOURCES}" "${PACKAGES}" "${WB_SUITE}" "${WHITELIST_FILE}" -- ${ARCHS}
+    #for ARCH in ${ARCHS}; do
+    #trigger_wb_update_for_overlay_arch_loop "${SUITE}" "${ARCH}" "${SOURCES_BASE}" "${PACKAGES_BASE}" "${SOURCES}" "${PACKAGES}" "${WB_SUITE}" "${WHITELIST_FILE}"
+    #done
+
+    echo "`date`: ${ARCHIVE}/${SUITE} done"
+}
+