diff options
Diffstat (limited to 'external/unbound/makedist.sh')
-rwxr-xr-x | external/unbound/makedist.sh | 460 |
1 files changed, 0 insertions, 460 deletions
diff --git a/external/unbound/makedist.sh b/external/unbound/makedist.sh deleted file mode 100755 index 5f19dfb68..000000000 --- a/external/unbound/makedist.sh +++ /dev/null @@ -1,460 +0,0 @@ -#!/bin/sh - -# Build unbound distribution tar from the SVN repository. -# -# Copyright (c) 2007, NLnet Labs. All rights reserved. -# -# This software is open source. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# Neither the name of the NLNET LABS nor the names of its contributors may -# be used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Abort script on unexpected errors. -set -e - -# Remember the current working directory. -cwd=`pwd` - -# Utility functions. -usage () { - cat >&2 <<EOF -Usage $0: [-h] [-s] [-d SVN_root] [-w ...args...] -Generate a distribution tar file for unbound. - - -h This usage information. - -s Build a snapshot distribution file. The current date is - automatically appended to the current unbound version number. - -rc <nr> Build a release candidate, the given string will be added - to the version number - (which will then be unbound-<version>rc<number>) - -d SVN_root Retrieve the unbound source from the specified repository. - Detected from svn working copy if not specified. - -wssl openssl.xx.tar.gz Also build openssl from tarball for windows dist. - -wxp expat.xx.tar.gz Also build expat from tarball for windows dist. - -w ... Build windows binary dist. last args passed to configure. -EOF - exit 1 -} - -info () { - echo "$0: info: $1" -} - -error () { - echo "$0: error: $1" >&2 - exit 1 -} - -question () { - printf "%s (y/n) " "$*" - read answer - case "$answer" in - [Yy]|[Yy][Ee][Ss]) - return 0 - ;; - *) - return 1 - ;; - esac -} - -# Only use cleanup and error_cleanup after generating the temporary -# working directory. -cleanup () { - info "Deleting temporary working directory." - cd $cwd && rm -rf $temp_dir -} - -error_cleanup () { - echo "$0: error: $1" >&2 - cleanup - exit 1 -} - -replace_text () { - (cp "$1" "$1".orig && \ - sed -e "s/$2/$3/g" < "$1".orig > "$1" && \ - rm "$1".orig) || error_cleanup "Replacement for $1 failed." -} - -replace_all () { - info "Updating '$1' with the version number." - replace_text "$1" "@version@" "$version" - info "Updating '$1' with today's date." - replace_text "$1" "@date@" "`date +'%b %e, %Y'`" -} - -replace_version () { - local v1=`echo $2 | sed -e 's/^.*\..*\.//'` - local v2=`echo $3 | sed -e 's/^.*\..*\.//'` - replace_text "$1" "VERSION_MICRO\],\[$v1" "VERSION_MICRO\],\[$v2" -} - -check_svn_root () { - # Check if SVNROOT is specified. - if [ -z "$SVNROOT" ]; then - if svn info 2>&1 | grep "not a working copy" >/dev/null; then - if test -z "$SVNROOT"; then - error "SVNROOT must be specified (using -d)" - fi - else - eval `svn info | grep 'URL:' | sed -e 's/URL: /url=/' | head -1` - SVNROOT="$url" - fi - fi -} - -create_temp_dir () { - # Creating temp directory - info "Creating temporary working directory" - temp_dir=`mktemp -d unbound-dist-XXXXXX` - info "Directory '$temp_dir' created." - cd $temp_dir -} - -# pass filename as $1 arg. -# creates file.sha1 and file.sha256 -storehash () { - case $OSTYPE in - linux*) - sha=`sha1sum $1 | awk '{ print $1 }'` - sha256=`sha256sum $1 | awk '{ print $1 }'` - ;; - freebsd*) - sha=`sha1 $1 | awk '{ print $5 }'` - sha256=`sha256 $1 | awk '{ print $5 }'` - ;; - *) - # in case $OSTYPE is gone. - case `uname` in - Linux*) - sha=`sha1sum $1 | awk '{ print $1 }'` - sha256=`sha256sum $1 | awk '{ print $1 }'` - ;; - FreeBSD*) - sha=`sha1 $1 | awk '{ print $5 }'` - sha256=`sha256 $1 | awk '{ print $5 }'` - ;; - *) - sha=`sha1sum $1 | awk '{ print $1 }'` - sha256=`sha256sum $1 | awk '{ print $1 }'` - ;; - esac - ;; - esac - echo $sha > $1.sha1 - echo $sha256 > $1.sha256 - echo "hash of $1.{sha1,sha256}" - echo "sha1 $sha" - echo "sha256 $sha256" -} - - -SNAPSHOT="no" -RC="no" -DOWIN="no" -WINSSL="" -WINEXPAT="" - -# Parse the command line arguments. -while [ "$1" ]; do - case "$1" in - "-h") - usage - ;; - "-d") - SVNROOT="$2" - shift - ;; - "-s") - SNAPSHOT="yes" - ;; - "-wssl") - WINSSL="$2" - shift - ;; - "-wxp") - WINEXPAT="$2" - shift - ;; - "-w") - DOWIN="yes" - shift - break - ;; - "-rc") - RC="$2" - shift - ;; - *) - error "Unrecognized argument -- $1" - ;; - esac - shift -done - -if [ "$DOWIN" = "yes" ]; then - # detect crosscompile, from Fedora13 at this point. - if test "`uname`" = "Linux"; then - info "Crosscompile windows dist" - cross="yes" - configure="mingw32-configure" - strip="i686-w64-mingw32-strip" - makensis="makensis" # from mingw32-nsis package - # flags for crosscompiled dependency libraries - cross_flag="" - - check_svn_root - create_temp_dir - - # crosscompile openssl for windows. - if test -n "$WINSSL"; then - info "Cross compile $WINSSL" - info "winssl tar unpack" - (cd ..; gzip -cd $WINSSL) | tar xf - || error_cleanup "tar unpack of $WINSSL failed" - sslinstall="`pwd`/sslinstall" - cd openssl-* || error_cleanup "no openssl-X dir in tarball" - # configure for crosscompile, without CAPI because it fails - # cross-compilation and it is not used anyway - # before 1.0.1i need --cross-compile-prefix=i686-w64-mingw32- - sslflags="no-asm -DOPENSSL_NO_CAPIENG mingw" - info "winssl: Configure $sslflags" - CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar RANLIB=i686-w64-mingw32-ranlib ./Configure --prefix="$sslinstall" $sslflags || error_cleanup "OpenSSL Configure failed" - info "winssl: make" - make || error_cleanup "OpenSSL crosscompile failed" - # only install sw not docs, which take a long time. - info "winssl: make install_sw" - make install_sw || error_cleanup "OpenSSL install failed" - cross_flag="$cross_flag --with-ssl=$sslinstall" - cd .. - fi - - if test -n "$WINEXPAT"; then - info "Cross compile $WINEXPAT" - info "wxp: tar unpack" - (cd ..; gzip -cd $WINEXPAT) | tar xf - || error_cleanup "tar unpack of $WINEXPAT failed" - wxpinstall="`pwd`/wxpinstall" - cd expat-* || error_cleanup "no expat-X dir in tarball" - info "wxp: configure" - mingw32-configure --prefix="$wxpinstall" --exec-prefix="$wxpinstall" --bindir="$wxpinstall/bin" --includedir="$wxpinstall/include" --mandir="$wxpinstall/man" --libdir="$wxpinstall/lib" || error_cleanup "libexpat configure failed" - #info "wxp: make" - #make || error_cleanup "libexpat crosscompile failed" - info "wxp: make installlib" - make installlib || error_cleanup "libexpat install failed" - cross_flag="$cross_flag --with-libexpat=$wxpinstall" - cd .. - fi - - info "SVNROOT is $SVNROOT" - info "Exporting source from SVN." - svn export "$SVNROOT" unbound || error_cleanup "SVN command failed" - cd unbound || error_cleanup "Unbound not exported correctly from SVN" - - # on a re-configure the cache may no longer be valid... - if test -f mingw32-config.cache; then rm mingw32-config.cache; fi - else - cross="no" # mingw and msys - cross_flag="" - configure="./configure" - strip="strip" - makensis="c:/Program Files/NSIS/makensis.exe" # http://nsis.sf.net - fi - - # version gets compiled into source, edit the configure to set it - version=`./configure --version | head -1 | awk '{ print $3 }'` \ - || error_cleanup "Cannot determine version number." - if [ "$RC" != "no" -o "$SNAPSHOT" != "no" ]; then - if [ "$RC" != "no" ]; then - version2=`echo $version | sed -e 's/rc.*$//' -e 's/_20.*$//'` - version2=`echo $version2 | sed -e 's/rc.*//'`"rc$RC" - fi - if [ "$SNAPSHOT" != "no" ]; then - version2=`echo $version | sed -e 's/rc.*$//' -e 's/_20.*$//'` - version2="${version2}_`date +%Y%m%d`" - fi - replace_version "configure.ac" "$version" "$version2" - version="$version2" - info "Rebuilding configure script (autoconf) snapshot." - autoconf || error_cleanup "Autoconf failed." - autoheader || error_cleanup "Autoheader failed." - rm -r autom4te* || echo "ignored" - fi - - # procedure for making unbound installer on mingw. - info "Creating windows dist unbound $version" - info "Calling configure" - echo "$configure"' --enable-debug --enable-static-exe '"$* $cross_flag" - $configure --enable-debug --enable-static-exe $* $cross_flag \ - || error_cleanup "Could not configure" - info "Calling make" - make || error_cleanup "Could not make" - info "Make complete" - - info "Unbound version: $version" - file="unbound-$version.zip" - rm -f $file - info "Creating $file" - mkdir tmp.$$ - $strip unbound.exe - $strip anchor-update.exe - $strip unbound-control.exe - $strip unbound-host.exe - $strip unbound-anchor.exe - $strip unbound-checkconf.exe - $strip unbound-service-install.exe - $strip unbound-service-remove.exe - cd tmp.$$ - cp ../doc/example.conf ../doc/Changelog . - cp ../unbound.exe ../unbound-anchor.exe ../unbound-host.exe ../unbound-control.exe ../unbound-checkconf.exe ../unbound-service-install.exe ../unbound-service-remove.exe ../LICENSE ../winrc/unbound-control-setup.cmd ../winrc/unbound-website.url ../winrc/service.conf ../winrc/README.txt ../contrib/create_unbound_ad_servers.cmd ../contrib/warmup.cmd ../contrib/unbound_cache.cmd . - # zipfile - zip ../$file LICENSE README.txt unbound.exe unbound-anchor.exe unbound-host.exe unbound-control.exe unbound-checkconf.exe unbound-service-install.exe unbound-service-remove.exe unbound-control-setup.cmd example.conf service.conf unbound-website.url create_unbound_ad_servers.cmd warmup.cmd unbound_cache.cmd Changelog - info "Testing $file" - (cd .. ; zip -T $file ) - # installer - info "Creating installer" - quadversion=`cat ../config.h | grep RSRC_PACKAGE_VERSION | sed -e 's/#define RSRC_PACKAGE_VERSION //' -e 's/,/\\./g'` - cat ../winrc/setup.nsi | sed -e 's/define VERSION.*$/define VERSION "'$version'"/' -e 's/define QUADVERSION.*$/define QUADVERSION "'$quadversion'"/' > ../winrc/setup_ed.nsi - "$makensis" ../winrc/setup_ed.nsi - info "Created installer" - cd .. - rm -rf tmp.$$ - mv winrc/unbound_setup_$version.exe . - if test "$cross" = "yes"; then - mv unbound_setup_$version.exe $cwd/. - mv unbound-$version.zip $cwd/. - cleanup - fi - storehash unbound_setup_$version.exe - storehash unbound-$version.zip - ls -lG unbound_setup_$version.exe - ls -lG unbound-$version.zip - info "Done" - exit 0 -fi - -check_svn_root - -# Start the packaging process. -info "SVNROOT is $SVNROOT" -info "SNAPSHOT is $SNAPSHOT" - -#question "Do you wish to continue with these settings?" || error "User abort." - -create_temp_dir - -info "Exporting source from SVN." -svn export "$SVNROOT" unbound || error_cleanup "SVN command failed" - -cd unbound || error_cleanup "Unbound not exported correctly from SVN" - -info "Adding libtool utils (libtoolize)." -libtoolize -c --install || libtoolize -c || error_cleanup "Libtoolize failed." - -info "Building configure script (autoreconf)." -autoreconf || error_cleanup "Autoconf failed." - -rm -r autom4te* || error_cleanup "Failed to remove autoconf cache directory." - -info "Building lexer and parser." -echo "#include \"config.h\"" > util/configlexer.c || error_cleanup "Failed to create configlexer" -echo "#include \"util/configyyrename.h\"" >> util/configlexer.c || error_cleanup "Failed to create configlexer" -flex -i -t util/configlexer.lex >> util/configlexer.c || error_cleanup "Failed to create configlexer" -if test -x `which bison` 2>&1; then YACC=bison; else YACC=yacc; fi -$YACC -y -d -o util/configparser.c util/configparser.y || error_cleanup "Failed to create configparser" - -find . -name .c-mode-rc.el -exec rm {} \; -find . -name .cvsignore -exec rm {} \; -rm makedist.sh || error_cleanup "Failed to remove makedist.sh." - -info "Determining Unbound version." -version=`./configure --version | head -1 | awk '{ print $3 }'` || \ - error_cleanup "Cannot determine version number." - -info "Unbound version: $version" - -RECONFIGURE="no" - -if [ "$RC" != "no" ]; then - info "Building Unbound release candidate $RC." - version2="${version}rc$RC" - info "Version number: $version2" - - replace_version "configure.ac" "$version" "$version2" - version="$version2" - RECONFIGURE="yes" -fi - -if [ "$SNAPSHOT" = "yes" ]; then - info "Building Unbound snapshot." - version2="${version}_`date +%Y%m%d`" - info "Snapshot version number: $version2" - - replace_version "configure.ac" "$version" "$version2" - version="$version2" - RECONFIGURE="yes" -fi - -if [ "$RECONFIGURE" = "yes" ]; then - info "Rebuilding configure script (autoconf) snapshot." - autoreconf || error_cleanup "Autoconf failed." - rm -r autom4te* || error_cleanup "Failed to remove autoconf cache directory." -fi - -replace_all doc/README -replace_all doc/unbound.8.in -replace_all doc/unbound.conf.5.in -replace_all doc/unbound-checkconf.8.in -replace_all doc/unbound-control.8.in -replace_all doc/unbound-anchor.8.in -replace_all doc/unbound-host.1.in -replace_all doc/example.conf.in -replace_all doc/libunbound.3.in - -info "Renaming Unbound directory to unbound-$version." -cd .. -mv unbound unbound-$version || error_cleanup "Failed to rename unbound directory." - -tarfile="../unbound-$version.tar.gz" - -if [ -f $tarfile ]; then - (question "The file $tarfile already exists. Overwrite?" \ - && rm -f $tarfile) || error_cleanup "User abort." -fi - -info "Creating tar unbound-$version.tar.gz" -tar czf ../unbound-$version.tar.gz unbound-$version || error_cleanup "Failed to create tar file." - -cleanup - -storehash unbound-$version.tar.gz -echo "create unbound-$version.tar.gz.asc with:" -echo " gpg --armor --detach-sign unbound-$version.tar.gz" -echo " gpg --armor --detach-sign unbound-$version.zip" -echo " gpg --armor --detach-sign unbound_setup_$version.exe" - -info "Unbound distribution created successfully." - |