###--------------------------------------------------------------------------
### Parse options.
-bogusp=nil noactp=nil
-unset buildopts keyid
+bogusp=nil noactp=nil signp=nil
+unset buildopts
while getopts "haik:nt:" opt; do
case $opt in
h)
;;
a) buildopts="${buildopts+$buildopts }-a" ;;
i) buildopts="${buildopts+$buildopts }-i" ;;
- k) keyid=$OPTARG ;;
+ k) signp=t keyid=$OPTARG ;;
n) buildopts="${buildopts+$buildopts }-n" noactp=t ;;
t) buildopts="${buildopts+$buildopts }-t$OPTARG" ;;
*) bogusp=t ;;
*) bogusp=t ;;
esac
case $bogusp in t) fail_usage ;; esac
+case $noactp in t) signp=nil ;; esac
###--------------------------------------------------------------------------
### Main program.
case ${pkg+t} in t) ;; *) fail "can't figure out the package name" ;; esac
case ${ver+t} in t) ;; *) fail "can't figure out the package version" ;; esac
-## Build a Debian source package. If we're signing, use `dpkg-buildpackage'
-## for this so that we get an uploadable `_source.changes' file out the end
-## of it.
-case ${keyid+t},$noactp in
- t,nil)
- dpkg-buildpackage -S -k"$keyid"
- cd ..
- ;;
- *)
- dir=$(pwd); base=${dir##*/}
- cd ..
- dpkg-source -b "$base"
- ;;
-esac
+## Build a Debian source package. Don't sign anything yet. That will happen
+## at the end, all in one go.
+dpkg-buildpackage -S -uc -us
+cd ..
dsc=${pkg}_${ver}.dsc
[ -f "$dsc" ] || fail "where is my \`.dsc' file?"
+## Actually do the build. Get a build directory assigned by the server,
+## upload the sources, run the build, and collect the results.
builddir=$(ssh "$host" mdw-sbuild-server dir "$pkg/$ver")
dcmd rsync -a "$dsc" "$host:$builddir/"
set +e; ssh "$host" mdw-sbuild-server $buildopts build "$builddir"
rc=$?; set -e
rsync -a "$host:$builddir/" ./
case $rc in 0) ;; *) exit $rc ;; esac
-case $?,${keyid+t},$noactp in
- 0,t,nil) debsign -k"$keyid" "${pkg}_${ver}_"*.changes ;;
+
+## Merge the change files together, and maybe sign the result.
+chchch=${pkg}_${ver}_source.changes
+for i in "${pkg}_${ver}"_*.changes; do
+ case " $chchch " in *" $i "*) ;; *) chchch="$chchch $i" ;; esac
+done
+mergechanges -f $chchch
+rm $chchch
+case $signp in
+ t) debsign -k"$keyid" "${pkg}_${ver}_multi.changes" ;;
esac