X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/profile/blobdiff_plain/0660d2242aeb3767f3198a9c90687022f9a2f5ce..63b40831b80c784c50bafbdef00a5cd07ddb91fd:/bin/mdw-build diff --git a/bin/mdw-build b/bin/mdw-build index 7247073..2bb7bb1 100755 --- a/bin/mdw-build +++ b/bin/mdw-build @@ -53,6 +53,42 @@ set -e +###-------------------------------------------------------------------------- +### Configuration. + +unset checkout checkoutrev +unset setup setupcmd +unset sign signkey +unset sbuild sbuildsrv +unset upload uploadpath +unset dput dputtarget +unset build distcheck debian clean vpath native +for i in \ + "/etc/mdw-build.conf" \ + "${XDG_CONFIG_HOME-$HOME/.config}/mdw-build.conf" \ + "./.mdw-build.conf" +do + if [ -f "$i" ]; then . "$i"; fi +done +default_depends () { + var=$1 want=$2 + eval "p=\${$var+t} q=\${$want+t}" + case $p,$q in t,*) ;; *,t) eval "$var=yes" ;; *) eval "$var=no" ;; esac +} +: ${checkout=yes} ${checkoutrev=HEAD} +: ${build=test} +: ${setup=yes} ${setupcmd=mdw-setup} +: ${distcheck=yes} +: ${debian=yes} +: ${clean=yes} +: ${vpath=yes} +: ${native=yes} +default_depends sbuild sbuildsrv +default_depends sign signkey +default_depends upload uploadpath +default_depends dput dputtarget +: ${DEB_BUILD_OPTIONS=parallel=4}; export DEB_BUILD_OPTIONS + ###-------------------------------------------------------------------------- ### Parse options. @@ -60,7 +96,7 @@ prog=${0##*/} usage () { cat <&2 "$prog: $want not set"; exit 1 ;; + esac +} for opt; do case "$opt" in checkout) checkout=yes checkoutrev=HEAD ;; @@ -107,12 +143,20 @@ for opt; do norelease) build=test ;; setup) setup=yes setupcmd=mdw-setup ;; setup=*) setup=yes setupcmd=${opt#*=} ;; - - distcheck | debian | upload | clean | vpath | native) + upload) maybe_set upload uploadpath ;; + upload=*) upload=yes uploadpath=${opt#*=} ;; + sign) maybe_set sign signkey ;; + sign=*) sign=yes signkey=${opt#*=} ;; + sbuild) maybe_set sbuild sbuildsrv ;; + sbuild=*) sbuild=yes sbuildsrv=${opt#*=} ;; + dput) maybe_set dput dputtarget ;; + dput=*) dput=yes dputtarget=${opt#*=} ;; + + distcheck | debian | clean | vpath | native) eval "$opt=yes" ;; nocheckout | nosetup | nodistcheck | nodebian | \ - noupload | noclean | novpath | nonative) + noupload | nodput | noclean | novpath | nonative | nosbuild | nosign) eval "${opt#no}=no" ;; *) @@ -197,7 +241,8 @@ while [ ! -f configure.ac -a ! -f configure.in -a \ esac cd .. done -assign srcpath $(pwd) +assign toppath $(pwd) +assign srcpath $toppath ## Build any necessary qualifiers. qual= sep=. @@ -335,10 +380,9 @@ case $native in esac run mv $buildpath/$distdir.tar.gz . -case $build in - release) - run gpg -u$(mdw-conf releasekey) -ab -o$distdir.tar.gz.gpg \ - $distdir.tar.gz +case $build,$sign in + release,yes) + run gpg -u$signkey -ab -o$distdir.tar.gz.gpg $distdir.tar.gz ;; esac @@ -362,24 +406,33 @@ EOF mv debian/changelog.new debian/changelog ;; esac - run dpkg-buildpackage -k$(mdw-conf releasekey) + sbuildargs=$sbuildsrv + case $sbuild,$build in + yes,release) + case $sign in yes) sbuildargs="-k$signkey $sbuildargs" ;; esac + ;; + yes,*) + if [ -d $toppath/dist-$build.pkgs ]; then + sbuildargs="-p$toppath/dist-$build.pkgs $sbuildargs" + fi + ;; + esac + case $sbuild,$build,$sign in + yes,*) run mdw-sbuild $sbuildargs ;; + no,release,yes) run dpkg-buildpackage -k$signkey ;; + no,*) run dpkg-buildpackage -us -uc ;; + esac ;; esac ## Maybe upload Debian packages. cd $releasepath case "$upload,$build" in - yes,test) - info "Test build: not uploading." - ;; - yes,release) - run rsync $distdir.tar.gz $distdir.tar.gz.gpg \ - $(mdw-conf upload-target ftp.distorted.org.uk:~ftp/pub/mdw/) - case "$debian" in - yes) - run dput -f $(mdw-conf dput-target distorted) *.changes - ;; - esac + yes,test) info "Test build: not uploading." ;; + yes,release) run rsync $distdir.tar.gz $distdir.tar.gz.gpg $uploadpath ;; +esac +case "$debian,$upload,$dput,$build" in + yes,yes,yes,release) run dput -f $dputtarget *.changes ;; esac ## Tidy up.