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
: ${clean=yes}
: ${vpath=yes}
: ${native=yes}
+default_depends sbuild sbuildsrv
default_depends sign signkey
default_depends upload uploadpath
default_depends dput dputtarget
usage () {
cat <<EOF
-Usage: $prog [-vr] BUILDOPT
+Usage: $prog [-v] BUILDOPT
Build options:
[no]dput[=TARGET]
[no]clean
[no]vpath
+ [no]sbuild[=SERVER]
[no]sign[=KEYID]
[no]native
EOF
## Parse simple options.
verbose=no
-while getopts "hvr" opt; do
+while getopts "hv" opt; do
case "$opt" in
h) usage; exit 0 ;;
v) verbose=yes ;;
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#*=} ;;
eval "$opt=yes"
;;
nocheckout | nosetup | nodistcheck | nodebian | \
- noupload | nodput | noclean | novpath | nonative | nosign)
+ noupload | nodput | noclean | novpath | nonative | nosbuild | nosign)
eval "${opt#no}=no"
;;
*)
esac
cd ..
done
-assign srcpath $(pwd)
+assign toppath $(pwd)
+assign srcpath $toppath
## Build any necessary qualifiers.
qual= sep=.
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)
;;
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
cd $distdir
case $hack_dch in
yes)
- dver=$(echo $gitver | sed 's/-/+/; s/-/./g')
- now=$(date -R)
cat - debian/changelog >debian/changelog.new <<EOF
-$debsrc ($dver) experimental; urgency=low
+$debsrc ($debversion) experimental; urgency=low
* Hacking in process, not intended for release.
mv debian/changelog.new debian/changelog
;;
esac
- case $build,$sign in
- release,yes) run dpkg-buildpackage -k$signkey ;;
+ 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
;;