#!/bin/sh # Copyright 2008, 2009 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. VERSION=${VERSION:-3.2.3} ARCH=${ARCH:-i486} BUILD=${BUILD:-1} CWD=$(pwd) TMP=${TMP:-/tmp} PKG=$TMP/package-dhcpcd if [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" elif [ "$ARCH" = "s390" ]; then SLKCFLAGS="-O2" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" fi rm -rf $PKG mkdir -p $TMP $PKG cd $TMP rm -rf dhcpcd-$VERSION tar xvf $CWD/dhcpcd-$VERSION.tar.bz2 || exit 1 cd dhcpcd-$VERSION chown -R root:root . find . \ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ -exec chmod 755 {} \; -o \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; # This changes the default locations where *.pid and other files are # written - instead of various locations, use /etc/dhcpc # The latter directory was long traditional, and (more importantly) # you can't be sure that /var is mounted yet when dhcpcd is invoked. zcat $CWD/patches/config.h.diff.gz | patch -p1 || exit 1 # Fixup the sample dhcpcd.sh script to reflect our changes zcat $CWD/patches/dhcpcd.sh.diff.gz | patch -p1 || exit 1 # Fix a typo in the manpage zcat $CWD/patches/dhcpcd.8.in.diff.gz | patch -p1 || exit 1 # Disable zeroconf support # I'm not sure if this is necessary, to be honest. If we do this though, # I think we'll want to edit the man page to remove references to it. #sed -i 's%#define ENABLE_IPV4LL%#undef ENABLE_IPV4LL%' config.h # Fix segfaulting on x86_64. Apparently i?86 is more forgiving #zcat $CWD/dhcpcd.vararg.diff.gz | patch -p1 --verbose || exit 1 CFLAGS="$SLKCFLAGS" \ make INFODIR=/etc/dhcpc || exit 1 # We'll install this manually, as the only thing "make install" actually # installs is the executable and the man page, and the man page goes to # the wrong place :-) mkdir -p $PKG/sbin cp -a dhcpcd $PKG/sbin mkdir -p $PKG/usr/man/man8 gzip -9c dhcpcd.8 > $PKG/usr/man/man8/dhcpcd.8.gz # This script (or its equivalent) has been installed non-executable for # several dhcpcd releases leading me to believe this is intentional on the # part of the developers. Indeed, the script is called a "sample" in the # included comments, and there's been at least one security issue related # to its use in the past, so it's probably a safer bet to not install it so # that it works "out of the box". However, making it non-executable is not # the best solution for this as it leads to error messages in the system # logs which I hear about from time to time. Instead, we'll make it # executable, but will give it a suffix of -sample so that dhcpcd won't # attempt to run it unless the admin specifically configure it to do so. # As far as I can tell it does nothing more than add some extra verbosity # to the logs anyway, and rc.inet1 already does that. There's really no # need that I can see to enable the script. mkdir -p $PKG/etc/dhcpc cp -a dhcpcd.sh $PKG/etc/dhcpc/dhcpcd.sh-sample chmod 755 $PKG/etc/dhcpc/dhcpcd.sh-sample find $PKG | xargs file | grep -e "executable" -e "shared object" \ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null mkdir -p $PKG/usr/doc/dhcpcd-$VERSION cp -a README $PKG/usr/doc/dhcpcd-$VERSION zcat $CWD/COPYRIGHT.gz > $PKG/usr/doc/dhcpcd-$VERSION/COPYRIGHT mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cd $PKG /sbin/makepkg -l y -c n $TMP/dhcpcd-$VERSION-$ARCH-$BUILD.txz