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