From d81e9330bd481ffc51ad55647c9ec1850dd9d307 Mon Sep 17 00:00:00 2001 From: Shawn Routhier Date: Thu, 5 Apr 2012 22:16:47 +0000 Subject: Update bind.sh to use git when getting the bind tarball Update Makefile.bind to minimize the work when we've already configured or compiled the bind tree. --- util/Makefile.bind | 40 ++++++++++++------ util/bind.sh | 119 ++++++++++++++++++++++++++++++----------------------- 2 files changed, 95 insertions(+), 64 deletions(-) (limited to 'util') diff --git a/util/Makefile.bind b/util/Makefile.bind index 6ecd184e..bd68319e 100644 --- a/util/Makefile.bind +++ b/util/Makefile.bind @@ -1,5 +1,5 @@ # -# Copyright (C) 2009-2011 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2009-2012 Internet Systems Consortium, Inc. ("ISC") # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -13,7 +13,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: Makefile.bind,v 1.7 2011/04/06 00:41:10 marka Exp $ +# $Id: Makefile.bind,v 1.8 2012/04/05 22:16:47 sar Exp $ # Configure and build the bind libraries for use by DHCP @@ -44,18 +44,31 @@ all: # Configure the export libraries # Currently disable the epoll and devpoll options as they don't interact # well with the DHCP code. - @echo Configuring BIND Export libraries for DHCP. - @(cd ${bindsrcdir} && ./configure --disable-kqueue --disable-epoll --disable-devpoll --without-openssl --without-libxml2 --enable-exportlib --enable-threads=no --with-export-includedir=${binddir}/include --with-export-libdir=${binddir}/lib --with-gssapi=no > ${binddir}/configure.log) - -# Build the export libraries - @echo Building BIND Export libraries - this takes some time. - @(cd ${bindsrcdir}/lib/export ; \ - echo building in `pwd` ; \ - MAKE=${GMAKE} ${GMAKE} > ${binddir}/build.log) +# If the top-level Bind Makefile exists we skip the configuration step +# as we assume it's done and won't change. Doing a make clean will +# reset things if necessary. + @if test -f ${bindsrcdir}/Makefile ; then \ + echo Bind export libraries already configured ; \ + else \ + echo Configuring BIND Export libraries for DHCP. ; \ + rm -rf ./lib ./include ./configure.log ./build.log ./install.log ; \ + (cd ${bindsrcdir} && ./configure --disable-kqueue --disable-epoll --disable-devpoll --without-openssl --without-libxml2 --enable-exportlib --enable-threads=no --with-export-includedir=${binddir}/include --with-export-libdir=${binddir}/lib --with-gssapi=no > ${binddir}/configure.log); \ + fi - @echo Installing BIND Export libraries to ${binddir}. - @(cd ${bindsrcdir}/lib/export ; \ - MAKE=${GMAKE} ${GMAKE} install > ${binddir}/install.log) +# Build and install the export libraries +# No need to do anything if we already have something installed. + @if test -d ${binddir}/lib ; then \ + echo Bind export libraries already installed ; \ + else \ + echo Building BIND Export libraries - this takes some time. ;\ + (cd ${bindsrcdir}/lib/export ; \ + echo building in `pwd` ; \ + MAKE=${GMAKE} ${GMAKE} > ${binddir}/build.log) ; \ + \ + echo Installing BIND Export libraries to ${binddir}. ; \ + (cd ${bindsrcdir}/lib/export ; \ + MAKE=${GMAKE} ${GMAKE} install > ${binddir}/install.log) ; \ + fi clean: @echo Cleaning BIND export library. @@ -73,3 +86,4 @@ install: check: +uninstall: diff --git a/util/bind.sh b/util/bind.sh index b8734b6d..bcaa7b5d 100644 --- a/util/bind.sh +++ b/util/bind.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2009-2011 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2009-2012 by Internet Systems Consortium, Inc. ("ISC") # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -14,73 +14,96 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: bind.sh,v 1.24 2012/01/23 17:58:56 sar Exp $ +# $Id: bind.sh,v 1.25 2012/04/05 22:16:47 sar Exp $ # Get the bind distribution for the libraries # This script is used to build the DHCP distribution and shouldn't be shipped # -# Usage: sh bind.sh -# +# Usage: sh bind.sh # +# By default we will do a git clone of bind into the default bind directory +# and then get the proper bind tarball from that. As getting a git clone +# may be slow for people working remotely we also allow them to indicate +# a directory that already holds the clone in which case we use it instead. +# We expect the kit.sh script to create the temporary directory $binddir +# and to do a git pull to get the latest code. topdir=`pwd` binddir=$topdir/bind +gitbinddir=$topdir/bindgit case $# in - 1) - case "$1" in - ### - ### Robie calls this script with the building branch name so we can - ### build with BIND9 HEAD for the relevant branch we would release - ### with. - ### - ### XXX: We can't use the 'snapshot' syntax right now because kit.sh - ### pulls the version.tmp off the branch name, and then stores a - ### tarball with vastly different values. So the version.tmp can not - ### be used to chdir down into the directory that is unpacked. - ### - v4_2) noSNAP=snapshot BINDTAG=v9_7 ;; - HEAD|v[0-9]_[0-9].*) noSNAP=snapshot BINDTAG=HEAD ;; - ### - ### For ease of use, this records the sticky tag of versions - ### released with each point release. - ### - 4.2.3-P1|4.2.3-P2) BINDTAG=v9_8_1_P1 ;; - 4.2.3rc1|4.2.3) BINDTAG=v9_8_1 ;; - 4.2.2rc1|4.2.2) BINDTAG=v9_8_0_P4 ;; - 4.2.1|4.2.1-P1|4.2.2b1) BINDTAG=v9_8_0 ;; - 4.2.1rc1) BINDTAG=v9_8_0rc1 ;; - 4.2.1b1) BINDTAG=v9_8_0b1 ;; - 4.2.0rc1|4.2.0) BINDTAG=v9_7_1 ;; - 4.2.0b2) BINDTAG=v9_7_1rc1 ;; - 4.2.0b1) BINDTAG=v9_7_0_P1 ;; - 4.2.0a2|4.2.0a1) BINDTAG=v9_7_0b3 ;; - *) echo "bind.sh: unsupported version: $1" >&2 - exit 1 - ;; - esac + 2) + gitbinddir=$2 + ;; + 1) ;; - *) echo "usage: sh bind.sh [|]" >&2 + *) echo "usage: sh bind.sh [|] [git binddir]" >&2 exit 1 ;; esac +case "$1" in +### +### Robie calls this script with the building branch name so we can +### build with BIND9 HEAD for the relevant branch we would release +### with. +### +### XXX: We can't use the 'snapshot' syntax right now because kit.sh +### pulls the version.tmp off the branch name, and then stores a +### tarball with vastly different values. So the version.tmp can not +### be used to chdir down into the directory that is unpacked. +### +v4_2) noSNAP=snapshot BINDTAG=v9_8; BRANCHTAG=v9_8 ;; +HEAD|v[0-9]_[0-9].*) noSNAP=snapshot BINDTAG=HEAD; BRANCHTAG=v9_9 ;; +### +### For ease of use, this records the sticky tag of versions +### released with each point release. +### +4.2.3-P1|4.2.3-P2) BINDTAG=v9_8_1_P1; BRANCHTAG=v9_8 ;; +4.2.3rc1|4.2.3) BINDTAG=v9_8_1; BRANCHTAG=v9_8 ;; +4.2.2rc1|4.2.2) BINDTAG=v9_8_0_P4; BRANCHTAG=v9_8 ;; +4.2.1|4.2.1-P1|4.2.2b1) BINDTAG=v9_8_0; BRANCHTAG=v9_8 ;; +4.2.1rc1) BINDTAG=v9_8_0rc1; BRANCHTAG=v9_8 ;; +4.2.1b1) BINDTAG=v9_8_0b1; BRANCHTAG=v9_8 ;; +4.2.0rc1|4.2.0) BINDTAG=v9_7_1; BRANCHTAG=v9_7 ;; +4.2.0b2) BINDTAG=v9_7_1rc1; BRANCHTAG=v9_7 ;; +4.2.0b1) BINDTAG=v9_7_0_P1; BRANCHTAG=v9_7 ;; +4.2.0a2|4.2.0a1) BINDTAG=v9_7_0b3; BRANCHTAG=v9_7 ;; +*) echo "bind.sh: unsupported version: $1" >&2 + exit 1 + ;; +esac + # Delete all previous bind stuff rm -rf bind -# Make and move to our directory for all things bind -mkdir $binddir -cp util/Makefile.bind bind/Makefile -cd $binddir +# If needed clone the directory, note that +# kit.sh does a pull so we don't have to +# kit.sh will also build the binddir if it doesn't +# exist +if !(test -d ${gitbinddir}) ; then + echo Cloning Bind into ${gitbinddir} + git clone repo.isc.org:/proj/git/prod/bind9.git ${gitbinddir} +fi -# Get the bind release kit shell script -cvs checkout -p -r $BINDTAG bind9/util/kit.sh > kit.sh +# We seem to need the checkout to get to the correct branch +# especially for tags of the form v9_8 +echo Checking out verison $BRANCHTAG +pushd $gitbinddir +git checkout $BRANCHTAG +popd # Create the bind tarball, which has the side effect of # setting up the bind directory we will use for building # the export libraries -sh kit.sh $SNAP $BINDTAG $binddir +echo Creating tarball for $BINDTAG +sh $gitbinddir/util/kit.sh $SNAP $gitbinddir $BINDTAG $binddir +# and copy the bind makeifle to it +cp util/Makefile.bind bind/Makefile + +cd $binddir . ./version.tmp version=${MAJORVER}.${MINORVER}.${PATCHVER}${RELEASETYPE}${RELEASEVER} @@ -88,12 +111,6 @@ bindsrcdir=bind-$version mm=${MAJORVER}.${MINORVER} # move the tar file to a known place for use by the make dist command +echo Moving tar file to bind.tar.gz for distribution mv bind-${mm}*.tar.gz bind.tar.gz -# temporary hack to allow testing when using snapshots -#mv $binddir/bind-9.7* $binddir/$bindsrcdir - -# Run the script to build and install the export libraries -# Let make do this now. -#sh $topdir/util/bindlib.sh $binddir $bindsrcdir - -- cgit v1.2.1