#!/bin/sh # Slackware build script for nagios: # IT infrastructure monitoring system # Written by Niels Horn # revision date 2010/10/06 PRGNAM=nagios VERSION=${VERSION:-3.2.3} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i486 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi DOCROOT=${DOCROOT:-/var/www/htdocs} # To create valid symlinks, we need a relative path from DOCROOT RELPATH="" for i in $(echo $DOCROOT | tr "/" " "); do RELPATH="${RELPATH}../" done CWD=$(pwd) TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} if [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" LIBDIRSUFFIX="" ARCHQUADLET="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" LIBDIRSUFFIX="" ARCHQUADLET="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" LIBDIRSUFFIX="64" ARCHQUADLET="" elif [ "$ARCH" = "arm" ]; then SLKCFLAGS="-O2 -march=armv4t" LIBDIRSUFFIX="" ARCHQUADLET="-gnueabi" else SLKCFLAGS="-O2" LIBDIRSUFFIX="" ARCHQUADLET="" fi set -e # Check if the 'nagios' user & group exist: if [ "$(grep ^nagios /etc/passwd)" = "" -o "$(grep ^nagios /etc/group)" = "" ] ; then printf "\nYou must have a nagios user and group.\n\nExample:\n" printf "\t# groupadd -g 213 nagios\n" printf "\t# useradd -d /dev/null -s /bin/false -u 213 -g nagios nagios\n\n" exit 1 fi rm -rf $TMP/$PRGNAM-$VERSION $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP tar xvf $CWD/$PRGNAM-$VERSION.tar.gz cd $PRGNAM-$VERSION chown -R root:root . chmod -R u+w,go+r-w,a-s . CFLAGS="$SLKCFLAGS" \ ./configure \ --prefix=/usr \ --sbindir=/usr/sbin/$PRGNAM \ --datadir=$DOCROOT/$PRGNAM \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --libexecdir=/usr/libexec/$PRGNAM \ --sysconfdir=/etc/$PRGNAM \ --localstatedir=/var/$PRGNAM \ --mandir=/usr/man \ --build=$ARCH-slackware-linux$ARCHQUADLET \ --with-httpd-conf=/etc/httpd/extra \ --with-checkresult-dir=/var/spool/$PRGNAM \ --with-init-dir=/etc/rc.d \ --with-lockfile=/var/run/nagios/nagios.lock make all export DESTDIR=$PKG make install make install-init make install-commandmode make install-config # Need to create the $PKG/etc/httpd/extra directory (this is a bug in Makefile.in) mkdir -p $PKG/etc/httpd/extra make install-webconf find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true # Change configuration files to .new find $PKG/etc/$PRGNAM/ -name *.cfg | while read cfg ; do mv $cfg $cfg.new ; done mv $PKG/etc/httpd/extra/nagios.conf $PKG/etc/httpd/extra/nagios.conf.new # cfg files may contain passwords, so we don't want 'others' to read them chmod -R g-w,o-rx $PKG/etc/$PRGNAM # Create directory for lock-file mkdir -p $PKG/var/run/nagios # Change init script and leave it -x mv $PKG/etc/rc.d/$PRGNAM $PKG/etc/rc.d/rc.$PRGNAM.new chmod -x $PKG/etc/rc.d/rc.$PRGNAM.new # Move documentation to right location mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a \ Changelog INSTALLING LEGAL LICENSE README THANKS UPGRADING contrib \ $PKG/usr/doc/$PRGNAM-$VERSION mv $PKG/$DOCROOT/$PRGNAM/docs $PKG/usr/doc/$PRGNAM-$VERSION/html cd $PKG/$DOCROOT/$PRGNAM ln -sf ../$RELPATH/usr/doc/$PRGNAM-$VERSION/html docs cd - find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \; cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild cat $CWD/README.SLACKWARE > $PKG/usr/doc/$PRGNAM-$VERSION/README.SLACKWARE # Fixup some ownership and permission issues chown -R root:root $PKG/usr/doc/$PRGNAM-$VERSION/html chmod 0755 $PKG/usr/doc/$PRGNAM-$VERSION/html{,/images} chown root:root $PKG/usr/sbin chown -R root:nagios $PKG/usr/sbin/$PRGNAM chmod -R 0754 $PKG/usr/sbin/$PRGNAM chown root:root $PKG/usr/bin chmod 0755 $PKG/usr/bin chown root:nagios $PKG/usr/bin/* chmod 0754 $PKG/usr/bin/* chown nagios:nagios $PKG/var/run/$PRGNAM chmod 0775 $PKG/var/run/$PRGNAM mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}