X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/07d972e48ec5bb8c4eb851c3f3e2067c1b117f85..1e0b3449d6ffbf89d4e0f5c7ed5efa030d74079e:/bin/mdw-build diff --git a/bin/mdw-build b/bin/mdw-build index fa3eb3e..6a5a28a 100755 --- a/bin/mdw-build +++ b/bin/mdw-build @@ -54,11 +54,49 @@ 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. +prog=${0##*/} + usage () { cat <&2 "$prog: $want not set"; exit 1 ;; + esac +} for opt; do case "$opt" in checkout) checkout=yes checkoutrev=HEAD ;; @@ -105,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" ;; *) @@ -195,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=. @@ -242,7 +289,7 @@ case "$debian,$(yesno [ -d $srcpath/debian ])" in debver=none ;; yes,yes) - debver=$(dpkg-parsechangelog | sed -n 's/^Version: //p' | tr \~ -) + debver=$(dpkg-parsechangelog | sed -n 's/^Version: //p') debsrc=$(dpkg-parsechangelog | sed -n 's/^Source: //p') debname=$(git config user.name) debemail=$(git config user.email) ;; @@ -255,20 +302,30 @@ case "$checkout" in run git clone -sn $srcpath/.git _source assign srcpath $releasepath/_source cd $srcpath - run git checkout -b mdw-build $checkoutrev - gitver=$(git describe --abbrev=4) + run git update-ref refs/heads/mdw-build $checkoutrev "" + run git symbolic-ref HEAD refs/heads/mdw-build + run git read-tree --reset refs/heads/mdw-build + run git checkout-index -afu + assign gitversion "$(git describe --abbrev=4)" ;; esac ## Check the version number. hack_dch_p=no -case "$gitver,$debver" in +case "$gitversion,$debver" in none,* | *,none) ;; *) - if [ "$gitver" != "$debver" ]; then - warn "Git version $gitver doesn't match Debian version $debver" + dvref=$(echo "$debver" | tr '~' '_') + if [ "$gitversion" = "$dvref" ]; then + assign debversion "$debver" + else + warn "Git version $gitversion doesn't match Debian version $debver" hack_dch=yes + dver=$(echo $gitversion | sed 's/-/+/; s/-/./g') + case $debver in *~) dver=$debver$dver ;; esac + assign debversion "$dver" + now=$(date -R) fi ;; esac @@ -333,10 +390,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 @@ -347,10 +403,8 @@ case "$debian" in cd $distdir case $hack_dch in yes) - dver=$(echo $gitver | sed 's/-/+/; s/-/./g') - now=$(date -R) cat - debian/changelog >debian/changelog.new <