diff options
Diffstat (limited to 'source/n/dhcp/dhcp.SlackBuild')
-rwxr-xr-x | source/n/dhcp/dhcp.SlackBuild | 132 |
1 files changed, 87 insertions, 45 deletions
diff --git a/source/n/dhcp/dhcp.SlackBuild b/source/n/dhcp/dhcp.SlackBuild index 10c211ce..6baf041a 100755 --- a/source/n/dhcp/dhcp.SlackBuild +++ b/source/n/dhcp/dhcp.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -20,22 +20,38 @@ # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -VERSION=3.1.2p1 -ARCH=${ARCH:-x86_64} -BUILD=${BUILD:-1} + +VERSION=${VERSION:-$(echo dhcp-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-2} NUMJOBS=${NUMJOBS:-" -j7 "} +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i486 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + CWD=$(pwd) TMP=${TMP:-/tmp} PKG=$TMP/package-dhcp if [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" elif [ "$ARCH" = "s390" ]; then SLKCFLAGS="-O2" + LIBDIRSUFFIX="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" fi rm -rf $PKG @@ -43,27 +59,55 @@ mkdir -p $TMP $PKG cd $TMP rm -rf dhcp-$VERSION -tar xvf $CWD/dhcp-$VERSION.tar.gz || exit 1 +tar xvf $CWD/dhcp-$VERSION.tar.?z* || exit 1 cd dhcp-$VERSION || exit 1 -./configure -make DEBUG="$SLKCFLAGS" || exit 1 -make DEBUG="$SLKCFLAGS" install DESTDIR=$PKG || exit 1 +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 {} \; + +# Add PATH setting to /sbin/dhclient-script +zcat $CWD/dhclient-script.PATH.diff.gz | patch -p1 || exit 1 + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --infodir=/usr/info \ + --mandir=/usr/man \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --docdir=/usr/doc/dhcp-$VERSION \ + --build=$ARCH-slackware-linux \ + --with-srv-lease-file=/var/state/dhcp/dhcpd.leases \ + --with-srv6-lease-file=/var/state/dhcp/dhcpd6.leases \ + --with-cli-lease-file=/var/state/dhcp/dhclient.leases \ + --with-cli6-lease-file=/var/state/dhcp/dhclient6.leases +# Default pid dir is still /var/run, so no need to declare it + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# DHCP libraries need not be included, yet. +rm -rf $PKG/usr/{include,lib${LIBDIRSUFFIX}} + +# We need this in /sbin +mkdir -p $PKG/sbin +mv $PKG/usr/sbin/dhclient $PKG/sbin + +# Install the dhclient-script for linux +cat client/scripts/linux > $PKG/sbin/dhclient-script +chmod 700 $PKG/sbin/dhclient-script mkdir -p $PKG/var/state/dhcp -rm -f $PKG/var/state/dhcp/dhcpd.leases -touch $PKG/var/state/dhcp/dhcpd.leases.new - -rm -rf $PKG/usr/local - -mkdir -p $PKG/usr/doc/dhcp-$VERSION -cp -a \ - LICENSE README RELNOTES \ - $PKG/usr/doc/dhcp-$VERSION -mkdir -p $PKG/usr/doc/dhcp-$VERSION/examples -cp -a client/dhclient.conf server/dhcpd.conf \ - $PKG/usr/doc/dhcp-$VERSION/examples -chown -R root:root $PKG/usr/doc/dhcp-$VERSION +# The daemon should create these automatically as needed +#touch $PKG/var/state/dhcp/dhcpd.leases.new +#touch $PKG/var/state/dhcp/dhcpd6.leases.new +#touch $PKG/var/state/dhcp/dhclient.leases.new +#touch $PKG/var/state/dhcp/dhclient6.leases.new cat << EOF > $PKG/etc/dhcpd.conf.new # dhcpd.conf @@ -79,37 +123,35 @@ cat << EOF > $PKG/etc/dhclient.conf.new # EOF -cat client/scripts/linux > $PKG/sbin/dhclient-script -chmod 700 $PKG/sbin/dhclient-script - -gzip -9 $PKG/usr/man/man?/* -find $PKG/usr/man -type f -exec chmod 644 {} \; +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi 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/dhcp-$VERSION/examples +cp -a \ + LICENSE README RELNOTES \ + $PKG/usr/doc/dhcp-$VERSION +mv $PKG/etc/dhcpd.conf $PKG/etc/dhclient.conf \ + $PKG/usr/doc/dhcp-$VERSION/examples + mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc -cat << EOF > $PKG/install/doinst.sh -#!/bin/sh -config() { - NEW="\$1" - OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)" - # If there's no config file by that name, mv it over: - if [ ! -r \$OLD ]; then - mv \$NEW \$OLD - elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then # toss the redundant copy - rm \$NEW - fi - # Otherwise, we leave the .new copy for the admin to consider... -} -config etc/dhcpd.conf.new -config etc/dhclient.conf.new -config var/state/dhcp/dhcpd.leases.new -rm -f var/state/dhcp/dhcpd.leases.new -EOF +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh -# Build the package: cd $PKG /sbin/makepkg -l y -c n $TMP/dhcp-$VERSION-$ARCH-$BUILD.txz |