#!/bin/bash ulimit -s unlimited shopt -s extglob # bind.SlackBuild # Heavily based on the original Slackware build script, # Modified by Stuart Winter ARMedslack. # 08-July-2004 # # Copyright 2006, 2007 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. # Record toolchain & other info for the build log: slackbuildinfo # Paths to skeleton port's source & real Slackware source tree: slackset_var_cwds # Temporary build locations: export TMPBUILD=$TMP/build-$PKGNAM export PKG=$TMP/package-$PKGNAM mkpkgdirs # Delete & re-create temporary directories then cd into $TMPBUILD # Detect krb5: if pkg-config --exists krb5-gssapi 1> /dev/null 2> /dev/null ; then GSSAPI=" --with-gssapi " else GSSAPI=" " fi # Extract source: tar xvvf $CWD/$PKGNAM-$VERSION.tar.!(*sign|*asc|*sig) cd $PKGNAM-*/ || exit 1 slackhousekeeping # Apply patches: # Configure: LDFLAGS="-Wl,-z,relro -Wl,--as-needed -Wl,-z,now" \ CFLAGS="$SLKCFLAGS" \ ./configure \ --prefix=/usr \ --mandir=/usr/man \ --sysconfdir=/etc \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --localstatedir=/var \ --with-libtool \ --with-libidn2 \ --with-python=/usr/bin/python3 \ --enable-shared \ --disable-static \ --with-openssl=/usr \ $GSSAPI \ --build=${SLK_ARCH_BUILD} || failconfig # Build: make $NUMJOBS || make || failmake # Install into package: mkdir -vpm755 $PKG/etc/default make install DESTDIR=$PKG || failinstall # These probably were not supposed to be installed: find . -name .deps -exec rm -rf "{}" \; find . -name .libs -exec rm -rf "{}" \; # We like symlinks. ( cd $PKG/usr/sbin ln -sf named lwresd ) # We like a lot of symlinks. if [ -d $PKG/usr/man/man3 ]; then ( cd $PKG/usr/man/man3 sh $CWD/3link.sh ) fi # Install init script: mkdir -p $PKG/etc/rc.d install -pm644 $CWD/rc.bind $PKG/etc/rc.d/rc.bind.new # Install default options file for named: install -vpm644 $CWD/default.named $PKG/etc/default/named.new # Fix library perms: chmod 755 $PKG/usr/lib${LIBDIRSUFFIX}/* # Add a documentation directory: mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION cp -a \ CHANGES COPYRIGHT FAQ* README* \ doc/arm doc/misc \ $PKG/usr/doc/${PKGNAM}-$VERSION # This one should have the correct perms of the config file: if [ -r $PKG/usr/doc/${PKGNAM}-$VERSION/misc/rndc.conf-sample ]; then chmod 644 $PKG/usr/doc/${PKGNAM}-$VERSION/misc/rndc.conf-sample fi # One format of this is plenty. Especially get rid of the bloated PDF. ( cd $PKG/usr/doc/bind-$VERSION/arm rm -f Makefile* *.pdf *.xml README.SGML latex-fixup.pl ) # Add sample config files for a simple caching nameserver: mkdir -p $PKG/var/named/caching-example install -vpm644 $CWD/caching-example/named.conf $PKG/etc/named.conf.new install -vpm644 $CWD/caching-example/localhost.zone $PKG/var/named/caching-example/localhost.zone install -vpm644 $CWD/caching-example/named.local $PKG/var/named/caching-example/named.local install -vpm644 $CWD/caching-example/named.root $PKG/var/named/caching-example/named.root # This name is deprecated, but having it here doesn't hurt in case # an old configuration file wants it: install -vpm644 $CWD/caching-example/named.root $PKG/var/named/caching-example/named.ca # Apply generic Slackware packaging policies: cd $PKG slackstripall # strip all .a archives and all ELFs #slackstriprpaths # strip rpaths slack_delete_lafiles # delete usr/lib{,64}/*.la slackgzpages -i # compress man & info pages and delete usr/info/dir slackslack # chown -R root:root, chmod -R og-w, slackchown, slack644docs slackdesc # install slack-desc and doinst.sh # rndc-confgen hangs until it receieves enough random data # to generate its key. Inside QEMU and on the SheevaPlug, # there is very little happening to generate interrupts, so # the install script hangs the installation until you start # pressing keys or making traffic on the network card. # Instead we'll use /dev/urandom and let the Slackware installer # initialise the random number generator after every package # has been installed. # - This was fixed a while ago in the doinst.sh script. # sed -i 's?rndc-confgen -a ?rndc-confgen -ar /dev/urandom ?' install/doinst.sh # Make sure that everything in /var/named is owned by named:named: chown -R named:named $PKG/var/named slackmp # run makepkg -l y -c n # Perform any final checks on the package: cd $PKG slackhlinks # search for any hard links