X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/97720cf5de4962c36f1e49857ab3ed780c34a680..6cf97414024dc9990deba102761ae5951da0200d:/bin/mdw-sbuild?ds=inline diff --git a/bin/mdw-sbuild b/bin/mdw-sbuild index 11c6c16..2fd31ff 100755 --- a/bin/mdw-sbuild +++ b/bin/mdw-sbuild @@ -33,9 +33,9 @@ fail_usage () { usage >&2; exit 1; } ###-------------------------------------------------------------------------- ### Parse options. -bogusp=nil noactp=nil -unset buildopts keyid -while getopts "haik:nt:" opt; do +bogusp=nil noactp=nil signp=nil +unset buildopts pkgs +while getopts "haik:np:t:" opt; do case $opt in h) usage @@ -47,6 +47,7 @@ Options: -i Build only architecture-neutral packages. -k KEYID Sign the result using KEYID. -n Don't actually do the build. + -p DIR Upload additional packages from DIR. -t TARGET Build in TARGET build environment. EOF exit 0 @@ -55,6 +56,7 @@ EOF i) buildopts="${buildopts+$buildopts }-i" ;; k) signp=t keyid=$OPTARG ;; n) buildopts="${buildopts+$buildopts }-n" noactp=t ;; + p) pkgs=$OPTARG ;; t) buildopts="${buildopts+$buildopts }-t$OPTARG" ;; *) bogusp=t ;; esac @@ -66,6 +68,7 @@ case $# in esac case $bogusp in t) fail_usage ;; esac case $noactp in t) signp=nil ;; esac +case ${pkgs-/hack} in /*) ;; *) pkgs=$(pwd)/$pkgs ;; esac ###-------------------------------------------------------------------------- ### Main program. @@ -94,12 +97,19 @@ dsc=${pkg}_${ver}.dsc ## 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/" +case ${pkgs+t} in t) rsync -a "$pkgs/" "$host:$builddir/pkgs/" ;; esac set +e; ssh "$host" mdw-sbuild-server $buildopts build "$builddir" rc=$?; set -e rsync -a "$host:$builddir/" ./ case $rc in 0) ;; *) exit $rc ;; esac -## Maybe sign the result. -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