Blame dist/net-snmp-solaris-build/buildpackage-solaris

Packit fcad23
#!/bin/ksh
Packit fcad23
#
Packit fcad23
# automatic build (configure/make/package) script 
Packit fcad23
# for NET-SNMP on Solaris
Packit fcad23
#
Packit fcad23
# 2004/11 Rewrite to strictly build the package jfrank@fastrieve.com
Packit fcad23
# 2002/11 Stefan.Radman@CTBTO.ORG
Packit fcad23
Packit fcad23
Packit fcad23
# If you define DEBUG, the script will be verbose, and we won't remove temporary files
Packit fcad23
Packit fcad23
#DEBUG=Y
Packit fcad23
if [ ! -z $DEBUG ]; then
Packit fcad23
   set -x # be verbose
Packit fcad23
fi
Packit fcad23
Packit fcad23
# TMP is where we are temporarily installing the package to
Packit fcad23
TMP=`pwd`/pkgroot
Packit fcad23
Packit fcad23
# PKG is the internal and external name for the package
Packit fcad23
PKG=OSSnet-snmp
Packit fcad23
Packit fcad23
#PREFIX is the top level architecture dependent directory.
Packit fcad23
# This should be normally determined by configure
Packit fcad23
#prefix=/opt/${PKG}
Packit fcad23
prefix=/usr/local
Packit fcad23
Packit fcad23
# VARDIR is the persistent dir from configure
Packit fcad23
VARDIR=/var/net-snmp
Packit fcad23
Packit fcad23
expandedprefix=${TMP}/${prefix}
Packit fcad23
Packit fcad23
PERL=${PERL:=`which perl`}
Packit fcad23
MAKE=${MAKE:=`which make`}
Packit fcad23
Packit fcad23
if [ -d ${TMP} ]; then
Packit fcad23
   rm -rf ${TMP};
Packit fcad23
fi
Packit fcad23
Packit fcad23
# install to temporary package build root
Packit fcad23
cd ../..
Packit fcad23
Packit fcad23
$MAKE install prefix=${expandedprefix} exec_prefix=${expandedprefix} || exit 1
Packit fcad23
Packit fcad23
# We now have the main software installed, copy over the auxillary files
Packit fcad23
cd -
Packit fcad23
Packit fcad23
awk /^___snmpd-init.d/,/___EOF/ $0 | grep -v ^___ | sed "s,@prefix@,$prefix,g" >|snmpd-init.d
Packit fcad23
Packit fcad23
# create persistent directory if it does not exist
Packit fcad23
[ -d $TMP/$VARDIR ] || install -d -m 0755 $TMP/$VARDIR 
Packit fcad23
Packit fcad23
# postinstall
Packit fcad23
LD_LIBRARY_PATH=$TMP$prefix/lib:$LD_LIBRARY_PATH $TMP/$prefix/bin/snmptranslate\
Packit fcad23
  -M$TMP/$prefix/share/snmp/mibs -m SNMPv2-SMI .1 >&- || exit $? # create MIB index
Packit fcad23
Packit fcad23
# package
Packit fcad23
version=`../../net-snmp-config --version`
Packit fcad23
os=`uname -s`
Packit fcad23
rel=`uname -r`
Packit fcad23
class=snmp
Packit fcad23
owner=$LOGNAME
Packit fcad23
groups | awk '{print $1}' | read group
Packit fcad23
cat <<== >|pkginfo
Packit fcad23
PKG="${PKG}"
Packit fcad23
NAME="net-snmp-$version"
Packit fcad23
ARCH="`uname -p`"
Packit fcad23
VERSION="$version, $os $rel, `date +%Y.%m.%d.%H.%M.%S`"
Packit fcad23
CATEGORY="OpenSource"
Packit fcad23
DESC="The NET-SNMP Tools and Library"
Packit fcad23
VENDOR="http://net-snmp.sourceforge.net"
Packit fcad23
CLASSES="$class"
Packit fcad23
BASEDIR="$prefix"
Packit fcad23
==
Packit fcad23
. ./pkginfo
Packit fcad23
Packit fcad23
echo 'checking dependencies'
Packit fcad23
unset LD_LIBRARY_PATH # binaries and libraries should have RPATH now
Packit fcad23
./elfdepend.sh $TMP | grep -v "P  *$PKG " >|depend # ignore own package
Packit fcad23
Packit fcad23
echo 'creating prototype file'
Packit fcad23
cat <<== >|prototype
Packit fcad23
i pkginfo
Packit fcad23
i copyright=../../COPYING
Packit fcad23
#i preinstall=./preinstall-postremove
Packit fcad23
#i postinstall=./preinstall-postremove
Packit fcad23
i depend
Packit fcad23
# set default mode, owner and group
Packit fcad23
! default 0775 root sys
Packit fcad23
d snmp /etc 0755 root sys
Packit fcad23
d snmp /etc/init.d 0755 root sys
Packit fcad23
f snmp /etc/init.d/snmpd=./snmpd-init.d 0755 root sys
Packit fcad23
#l snmp /etc/rc2.d/S76snmpd=/etc/init.d/snmpd # not yet
Packit fcad23
==
Packit fcad23
Packit fcad23
pkgproto -c snmp $TMP=/ |\
Packit fcad23
egrep -v '^d .* / |^d .* /var |^d .* /opt |^ .*perllocal.pod=' |\
Packit fcad23
sed -e "s/ $owner $group\$//" >> prototype || exit $?
Packit fcad23
# and ignore top level directories (must pre-exist)
Packit fcad23
Packit fcad23
echo 'creating package'
Packit fcad23
pkgmk -od . || exit $?
Packit fcad23
pkgtrans . $PKG-$version-$ARCH-$os$rel.pkg $PKG || exit $?
Packit fcad23
Packit fcad23
# We should really do some cleanup here
Packit fcad23
if [ -z $DEBUG ]; then
Packit fcad23
   rm -rf snmpd-init.d $PKG $TMP pkginfo prototype depend 
Packit fcad23
fi
Packit fcad23
Packit fcad23
echo "build was successfull"
Packit fcad23
exit 0
Packit fcad23
Packit fcad23
# /etc/init/snmpd
Packit fcad23
# This is packaged inside of buildpackage-solaris because we need to substitute
Packit fcad23
# in the actual server name.
Packit fcad23
Packit fcad23
___snmpd-init.d___
Packit fcad23
#! /bin/sh
Packit fcad23
#
Packit fcad23
# start/stop the NET-SNMP master agent (snmpd)
Packit fcad23
#
Packit fcad23
# Location:      /etc/init.d/snmpd
Packit fcad23
#                /etc/rc3.d/S??snmpd
Packit fcad23
#
Packit fcad23
name="NET-SNMP agent"
Packit fcad23
daemon=@prefix@/sbin/snmpd
Packit fcad23
Packit fcad23
case "$1" in
Packit fcad23
start)
Packit fcad23
        [ ! -x $daemon ] && echo "ERROR: cannot start $name ($daemon)" && exit 1
Packit fcad23
        echo "Starting $name ... \c"
Packit fcad23
        PGREP=`which pgrep`
Packit fcad23
        if [ -z $PGREP ]; then
Packit fcad23
           pid=`pgrep -fx $daemon`
Packit fcad23
        else
Packit fcad23
           pid=`ps -ef | grep $daemon | grep -v grep | awk '{print $2}'`
Packit fcad23
        fi
Packit fcad23
Packit fcad23
        [ ! -z "$pid" ] && echo "already running with pid $pid." && exit 0
Packit fcad23
        $daemon && echo "done."
Packit fcad23
        ;;
Packit fcad23
stop)
Packit fcad23
        echo "Stopping $name ... \c"
Packit fcad23
        PGREP=`which pgrep`
Packit fcad23
        if [ -z $PGREP ]; then
Packit fcad23
           pid=`pgrep -fx $daemon`
Packit fcad23
        else
Packit fcad23
           pid=`ps -ef | grep $daemon | grep -v grep | awk '{print $2}'`
Packit fcad23
        fi
Packit fcad23
        [ ! -z "$pid" ] && (kill $pid && echo "done" ) || echo "not running"
Packit fcad23
Packit fcad23
        ;;
Packit fcad23
status)
Packit fcad23
        echo "$name is \c"
Packit fcad23
        PGREP=`which pgrep`
Packit fcad23
        if [ -z $PGREP ]; then
Packit fcad23
           pid=`pgrep -fx $daemon`
Packit fcad23
        else
Packit fcad23
           pid=`ps -ef | grep $daemon | grep -v grep | awk '{print $2}'`
Packit fcad23
        fi
Packit fcad23
        [ -z "$pid" ] && echo "not running" || echo "running with pid $pid"
Packit fcad23
        ;;
Packit fcad23
restart)
Packit fcad23
        $0 stop && $0 start
Packit fcad23
        ;;
Packit fcad23
reload)
Packit fcad23
        echo "Re-initializing $name ...\c"
Packit fcad23
        PGREP=`which pgrep`
Packit fcad23
        if [ -z $PGREP ]; then
Packit fcad23
           pid=`pgrep -fx $daemon`
Packit fcad23
        else
Packit fcad23
           pid=`ps -ef | grep $daemon | grep -v grep | awk '{print $2}'`
Packit fcad23
        fi
Packit fcad23
        [ ! -z "$pid" ] && (kill -HUP $pid && echo "done" ) || echo "not running"
Packit fcad23
        ;;
Packit fcad23
*)
Packit fcad23
        echo "Usage: $0 { start | stop | status | restart | reload }"
Packit fcad23
        ;;
Packit fcad23
esac
Packit fcad23
Packit fcad23
exit 0
Packit fcad23
___EOF___