X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/f4e43257fd5b724d48f6451ab6b88a00b379b606..9906310798d936a6cacd0ec5a2d3b607e911c423:/mdw-build diff --git a/mdw-build b/mdw-build deleted file mode 100755 index 7003964..0000000 --- a/mdw-build +++ /dev/null @@ -1,261 +0,0 @@ -#! /bin/bash -### -### Build script for Debian packages -### -### (c) 2008 Mark Wooding -### - -###----- Licensing notice --------------------------------------------------- -### -### This program is free software; you can redistribute it and/or modify -### it under the terms of the GNU General Public License as published by -### the Free Software Foundation; either version 2 of the License, or -### (at your option) any later version. -### -### This program is distributed in the hope that it will be useful, -### but WITHOUT ANY WARRANTY; without even the implied warranty of -### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -### GNU General Public License for more details. -### -### You should have received a copy of the GNU General Public License -### along with this program; if not, write to the Free Software Foundation, -### Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -set -e - -###-------------------------------------------------------------------------- -### Parse options. - -usage () { - cat <&2 - exit 1 - ;; - esac -done - -###-------------------------------------------------------------------------- -### Utility functions. - -exec 3>&2 4>/dev/null 5>&2 - -notify () { - colour=$1 message=$2 - echo $message >&4 - echo "$(tput bold; tput setaf $colour)$message$(tput sgr0; tput op)" >&5 -} - -fail () { - notify 1 "!!! $*" - exit 1 -} - -info () { - notify 6 "--- $*" -} - -assign () { - info "$1 = $2" - eval "$1=$2" -} - -runx () { - notify 2 "+++ $*" - "$@" 2>&3 || fail "$1: exit $?" -} - -run () { runx "$@" >&3; } - -yesno () { - echo -n "(test $*)" >&4 - if "$@" >&4 2>&4; then - echo "(yes)" >&4 - echo yes - else - echo "(no)" >&4 - echo no - fi -} - -###-------------------------------------------------------------------------- -### Do the building. - -## Find the top-level package directory. -while [ ! -f configure.ac -a ! -f configure.in -a ! -f .links ]; do - case "$(pwd)" in - /) - fail "couldn't find top-level directory" - ;; - esac - cd .. -done -assign srcpath $(pwd) - -## Construct the output directory. -assign releasepath $srcpath/dist-$build -chmod -R +w $releasepath 2>/dev/null|| : -rm -rf $releasepath 2>/dev/null || : -mkdir $releasepath -case $verbose in - no) - exec 4>$releasepath/mdw-build.log 3>&4 || - fail "Failed to create log." - ;; -esac - -## Maybe check out a copy of the source. -case "$checkout,$setup,$(yesno [ -d $srcpath/.git ])" in - yes,no,*) - fail "Inconsistent options: can't check out without setup." - ;; - yes,yes,no) - info "No Git repository found." - ;; - yes,yes,yes) - cd $srcpath - [ "$(git ls-files -m)" = "" ] || - fail "working tree has uncommitted changes" - cd $releasepath - run git clone -sn $srcpath/.git _source - assign srcpath $releasepath/_source - cd $srcpath - run git checkout -b mdw-build $checkoutrev - ;; -esac - -## Maybe refresh the build machinery. -case "$setup" in - yes) - run mdw-setup - ;; -esac - -## Initialize the build directory. -if [ -e $srcpath/configure ]; then - assign buildpath $releasepath/_build - mkdir $buildpath - cd $buildpath - run $srcpath/configure -else - info "no configure script" - assign buildpath $srcpath - cd $srcpath -fi - -## Discover the release name. -cat >find-distdir.mk <<'EOF' -include Makefile -print-distdir: - @echo $(distdir) -EOF -assign distdir $(make -f find-distdir.mk print-distdir) - -## Get a tarball distribution. -case "$distcheck" in - yes) - run make distcheck - ;; - no) - run make dist - ;; -esac - -cd $releasepath - -if ! tar tfz $buildpath/$distdir.tar.gz | grep -q RELEASE; then - fail "missing RELEASE file in distribution" -fi - -run mv $buildpath/$distdir.tar.gz . - -## Maybe build the Debian packages. -case "$debian,$(yesno [ -d $srcpath/debian ])" in - yes,no) - info "No debian directory found." - debian=no - ;; - yes,yes) - run tar xvfz $distdir.tar.gz - cd $distdir - run dpkg-buildpackage -k$(mdw-conf releasekey) - ;; -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 \ - $(mdw-conf upload-target metalzone.distorted.org.uk:/home/ftp/pub/mdw/) - case "$debian" in - yes) - run dput -f $(mdw-conf dput-target metalzone) *.changes - ;; - esac -esac - -## Tidy up. -case "$clean" in - yes) - rm -rf $releasepath/$distdir - rm -rf $releasepath/_source - rm -rf $releasepath/_build - ;; -esac - -## Done. -info "All OK." - -###----- That's all, folks --------------------------------------------------