Further setup-dchroot tweaks
[mirror/dsa-puppet.git] / modules / porterbox / files / setup-all-dchroots
index 23867bb..652d08b 100755 (executable)
 DPKGARCH=$(dpkg --print-architecture)
 UNAMEARCH=$(uname -m)
 
+if [ "${1:-}" = "buildd" ]; then
+    MODE=buildd
+    if ! [ -d /srv/buildd/ ]; then
+        echo >&2 "Error: /srv/buildd does not exist or is not a directory."
+        exit 1
+    fi
+else
+    MODE=porterbox
+fi
+
 get_suites() {
     case "$1" in
       armhf|s390x)
         echo "sid jessie wheezy"
         ;;
-      s390)
-        echo "wheezy squeeze"
+      ia64|s390)
+        echo "wheezy"
         ;;
-      *)
+      sparc)
+        echo "sid wheezy"
+        ;;
+      arm64|ppc64el)
+        echo "sid jessie"
+        ;;
+      amd64|i386)
         echo "sid jessie wheezy squeeze"
         ;;
+      *)
+        echo "sid jessie wheezy"
+        ;;
     esac
 }
 
@@ -51,6 +70,9 @@ case "$DPKGARCH" in
         archs="$archs i386"
         ;;
     armhf)
+        if [ "$(uname -m)" = "aarch64" ] ; then
+            archs="$archs arm64"
+        fi
         archs="$archs armel"
         ;;
     armel)
@@ -65,9 +87,40 @@ esac
 
 err=0
 
+do_one() {
+    local a="$1"; shift
+    local s="$1"; shift
+
+    case "$MODE" in
+        buildd)
+            mkdir -p /srv/buildd/unpack
+            if ! chronic setup-dchroot -f -a "$a" -D -d '/srv/buildd/unpack' -K "$s"
+            then
+                return 1
+            fi
+            ;;
+        porterbox)
+            if ! chronic setup-dchroot -f -a "$a" "$s"
+            then
+                return 1
+            fi
+            ;;
+        *)
+            echo >&2 "Invalid mode $MODE"
+            exit 1
+    esac
+    return 0
+}
+
 for a in $archs; do
     for s in `get_suites "$a"`; do
-        setup-dchroot -f -a "$a" "$s" || err=1
+        if ! do_one "$a" "$s"; then
+            err=1
+            echo >&2
+            echo >&2 "Error: setting up $s:$a dchroot failed."
+            echo >&2
+            echo >&2
+        fi
     done
 done