binonly=0
sbuild_args=
+sbuild_args_sourceful=
schangesfile=
arch=
for opt in "$@"; do
exit 1
fi
-[ -z "$arch" ] && arch="$DEB_BUILD_ARCH"
-
dist="$(sed -ne 's,Distribution: ,,p' "$schangesfile")"
schangesfile_basename="${schangesfile##*/}"
esac
done
-[ "$binonly" = 0 ] && sbuild_args="${sbuild_args:+$sbuild_args }--source --arch-all"
+rm $schangesfile
+unset schangesfile
-sbuild $sbuild_args --arch="$arch" --dist="$dist" --keyid=$KEYID \
- "$dscfile_basename"
+[ -z "$arch" ] && arch="$DEB_BUILD_ARCH"
+
+target_arch="$(sed -ne 's,^Architecture: ,,p' $dscfile_basename)"
+case "$binonly/$target_arch" in
+ 1/all)
+ echo "E: cannot build arch:all packages with -B." >&2
+ exit 1
+ ;;
+ 0/all) arch=all;;
+ */any)
+ arch="$(schroot -l | sed -rne 's,^sid-([^-]+).*,\1,p' | uniq | tr '\n' ' ')"
+ ;;
+esac
-changesfile="${packagenameversion}_${arch}.changes"
+if [ "$binonly" = 0 ]; then
+ sbuild_args_sourceful="--source"
+fi
-postbuild "$changesfile"
+for a in $arch; do
+ echo "I: building $packagenameversion for $a/$dist…" >&2
-dinstall "$dist" "$changesfile"
+ case "$a" in
+ all)
+ arch_arg=--arch-all
+ a="$DEB_BUILD_ARCH"
+ ;;
+ *) arch_arg="--arch=$a";;
+ esac
-DATESTR="$(date +%Y.%m.%d.%H%M%S)"
-BUILD_PREFIX="${packagenameversion}_${arch}.${DATESTR}"
+ sbuild $sbuild_args $sbuild_args_sourceful \
+ $arch_arg --dist="$dist" --keyid=$KEYID \
+ "$dscfile_basename" || ret=$?
-bundle="${BUNDLE_DIR}/${BUILD_PREFIX}".bundle.tar
-tar -chf "$bundle" *
-chmod 644 "$bundle"
+ changesfile="${packagenameversion}_${a}.changes"
-cleanup
+ if [ -n "$sbuild_args_sourceful" ]; then
+ schangesfile="${packagenameversion}_source+${changesfile#${packagenameversion}_}"
+ mv "$changesfile" "$schangesfile"
+ changesfile="$schangesfile"
+ fi
+ # subsequent iterations should be binonly
+ sbuild_args_sourceful=
+
+ echo "I: running post-build hook ($packagenameversion/$a/$dist)…" >&2
+ postbuild "$dist" "$a" "$changesfile"
+ echo "I: running dinstall ($packagenameversion/$a/$dist)…" >&2
+ dinstall "$dist" "$changesfile"
+
+ echo "I: done building $packagenameversion for $a/$dist" >&2
+done
+
+if [ -n "${schangesfile:-}" ]; then
+ sarch="${schangesfile##*_}"; sarch=${sarch%.changes}
+ other_archs="$(for i in *.changes; do
+ [ "$i" = "$schangesfile" ] && continue
+ t="${i##*_}"; echo "${t%.changes}"
+ done)"
+
+ if [ -n "$other_archs" ]; then
+ combined_arch="${sarch}+${other_archs}"
+ mergechanges *.changes > ${packagenameversion}_${combined_arch}.changes
+ arch="$combined_arch"
+ else
+ arch="$sarch"
+ fi
+fi
+
+bundle="${BUNDLE_DIR}/${packagenameversion}_${arch}_bundle.tar.gz"
+tar -chzf "$bundle" *
+chmod 644 "$bundle"
print_bundle_location "$bundle"
+cleanup
+
exit 0