X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/c035e794d622d7074c8fa94e18cb5ddfea7c36a1..84dd906913e8482be980d093bc937bf3c3749e29:/bin/mdw-build diff --git a/bin/mdw-build b/bin/mdw-build index 34b6383..2c4edaa 100755 --- a/bin/mdw-build +++ b/bin/mdw-build @@ -21,6 +21,36 @@ ### along with this program; if not, write to the Free Software Foundation, ### Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +###-------------------------------------------------------------------------- +### Conventions for build systems. +### +### This script is designed to work with a variety of `make'-based build +### systems, but there are a number of conventions which must be followed if +### this is going to work properly. +### +### * There must be a `configure.ac', `configure.in', or `.links' file, or +### a `.git' directory in the project top-level, so that we can find it. +### +### * The following `make' variables must be assigned in the top-level +### Makefile, after `mdw-build' has constructed it. +### +### distdir The name of the top-level project directory in the +### source distribution, and the base name for +### distribution archives; should be of the form +### `PROJECT-VERSION'. +### +### The following `make' targets must be available in the top-level +### Makefile. +### +### dist Write to $(distdir).tar.gz a source distribution of +### the package. +### +### distcheck As for `dist', but also build and test the project. +### +### * The source distribution constructed by `make dist' must contain a file +### $(distdir)/RELEASE containing the release name. This isn't currently +### tested, but it might be later. + set -e ###-------------------------------------------------------------------------- @@ -83,6 +113,18 @@ for opt; do esac done +## Parse DEB_BUILD_OPTIONS. +jobs=1 +set -- $DEB_BUILD_OPTIONS +for opt; do + case "$opt" in + parallel=*) jobs=${opt#*=} ;; + esac +done + +makeopts="" +case $jobs in 1) ;; *) makeopts="$makeopts -j$jobs" ;; esac + ###-------------------------------------------------------------------------- ### Utility functions. @@ -137,7 +179,8 @@ yesno () { ### Do the building. ## Find the top-level package directory. -while [ ! -f configure.ac -a ! -f configure.in -a ! -f .links ]; do +while [ ! -f configure.ac -a ! -f configure.in -a \ + ! -f .links -a ! -d .git ]; do case "$(pwd)" in /) fail "couldn't find top-level directory" @@ -237,16 +280,16 @@ assign distdir $(make -f find-distdir.mk print-distdir) ## Get a tarball distribution. case "$distcheck" in yes) - run make distcheck + run make $makeopts distcheck ;; no) - run make dist + run make $makeopts dist ;; esac cd $releasepath -if ! tar tfz $buildpath/$distdir.tar.gz | grep -q RELEASE; then +if ! tar tf $buildpath/$distdir.tar.gz 2>/dev/null | grep -q RELEASE; then fail "missing RELEASE file in distribution" fi @@ -269,10 +312,10 @@ case "$upload,$build" in ;; yes,release) run rsync $distdir.tar.gz \ - $(mdw-conf upload-target metalzone.distorted.org.uk:/home/ftp/pub/mdw/) + $(mdw-conf upload-target ftp.distorted.org.uk:~ftp/pub/mdw/) case "$debian" in yes) - run dput -f $(mdw-conf dput-target metalzone) *.changes + run dput -f $(mdw-conf dput-target distorted) *.changes ;; esac esac