[csw-devel] SF.net SVN: gar:[2352] csw/trunk/utils
bonivart at users.sourceforge.net
bonivart at users.sourceforge.net
Tue Nov 25 09:13:37 CET 2008
Revision: 2352
http://gar.svn.sourceforge.net/gar/?rev=2352&view=rev
Author: bonivart
Date: 2008-11-25 08:13:23 +0000 (Tue, 25 Nov 2008)
Log Message:
-----------
cswclassutils: moved to gar and updated to 1.1
Added Paths:
-----------
csw/trunk/utils/cswclassutils/
csw/trunk/utils/cswclassutils/Makefile
csw/trunk/utils/cswclassutils/checksums
csw/trunk/utils/cswclassutils/files/
csw/trunk/utils/cswclassutils/files/CSWcswclassutils.README.CSW
csw/trunk/utils/cswclassutils/files/CSWcswclassutils.copyright
csw/trunk/utils/cswclassutils/files/CSWcswclassutils.csw.smf.sample
csw/trunk/utils/cswclassutils/files/CSWcswclassutils.gspec
csw/trunk/utils/cswclassutils/files/CSWcswclassutils.i.cswcpsampleconf
csw/trunk/utils/cswclassutils/files/CSWcswclassutils.i.cswinitsmf
csw/trunk/utils/cswclassutils/files/CSWcswclassutils.i.cswpreserveconf
csw/trunk/utils/cswclassutils/files/CSWcswclassutils.prototype
csw/trunk/utils/cswclassutils/files/CSWcswclassutils.r.cswcpsampleconf
csw/trunk/utils/cswclassutils/files/CSWcswclassutils.r.cswinitsmf
csw/trunk/utils/cswclassutils/files/CSWcswclassutils.r.cswpreserveconf
Added: csw/trunk/utils/cswclassutils/Makefile
===================================================================
--- csw/trunk/utils/cswclassutils/Makefile (rev 0)
+++ csw/trunk/utils/cswclassutils/Makefile 2008-11-25 08:13:23 UTC (rev 2352)
@@ -0,0 +1,37 @@
+GARNAME = cswclassutils
+GARVERSION = 1.1
+CATEGORIES = utils
+
+DESCRIPTION = CSW class action utilities
+
+MASTER_SITES =
+DISTFILES += $(call admfiles,CSWcswclassutils,prototype)
+
+CONFIGURE_SCRIPTS =
+BUILD_SCRIPTS =
+TEST_SCRIPTS =
+INSTALL_SCRIPTS = custom
+
+include ../category.mk
+
+WORKSRC = $(WORKDIR)
+SPKG_SOURCEURL = http://www.opencsw.org/
+
+install-custom:
+ @echo " ==> Installing $(GARNAME)"
+ @rm -rf $(DESTDIR)
+ @ginstall -d $(DESTDIR)/etc/opt/csw/init.d
+ @ginstall -d $(DESTDIR)/opt/csw/share/doc/$(GARNAME)
+ @ginstall -d $(DESTDIR)/usr/sadm/install/scripts
+ @ginstall -d $(DESTDIR)/var/opt/csw/svc/manifest
+ @ginstall -d $(DESTDIR)/var/opt/csw/svc/method
+ @cp $(FILEDIR)/CSW$(GARNAME).csw.smf.sample $(DESTDIR)/etc/opt/csw/init.d/csw.smf.sample
+ @cp $(FILEDIR)/CSW$(GARNAME).README.CSW $(DESTDIR)/opt/csw/share/doc/$(GARNAME)/README.CSW
+ @cp $(FILEDIR)/CSW$(GARNAME).copyright $(DESTDIR)/opt/csw/share/doc/$(GARNAME)/LICENSE
+ @cp $(FILEDIR)/CSW$(GARNAME).i.cswcpsampleconf $(DESTDIR)/usr/sadm/install/scripts/i.cswcpsampleconf
+ @cp $(FILEDIR)/CSW$(GARNAME).r.cswcpsampleconf $(DESTDIR)/usr/sadm/install/scripts/r.cswcpsampleconf
+ @cp $(FILEDIR)/CSW$(GARNAME).i.cswpreserveconf $(DESTDIR)/usr/sadm/install/scripts/i.cswpreserveconf
+ @cp $(FILEDIR)/CSW$(GARNAME).r.cswpreserveconf $(DESTDIR)/usr/sadm/install/scripts/r.cswpreserveconf
+ @cp $(FILEDIR)/CSW$(GARNAME).i.cswinitsmf $(DESTDIR)/usr/sadm/install/scripts/i.cswinitsmf
+ @cp $(FILEDIR)/CSW$(GARNAME).r.cswinitsmf $(DESTDIR)/usr/sadm/install/scripts/r.cswinitsmf
+ @$(MAKECOOKIE)
Added: csw/trunk/utils/cswclassutils/checksums
===================================================================
--- csw/trunk/utils/cswclassutils/checksums (rev 0)
+++ csw/trunk/utils/cswclassutils/checksums 2008-11-25 08:13:23 UTC (rev 2352)
@@ -0,0 +1,2 @@
+15e48f60e16862b94755b3205b666ab8 download/CSWcswclassutils.gspec
+847abc46521d2e324518456d783f9235 download/CSWcswclassutils.prototype
Added: csw/trunk/utils/cswclassutils/files/CSWcswclassutils.README.CSW
===================================================================
--- csw/trunk/utils/cswclassutils/files/CSWcswclassutils.README.CSW (rev 0)
+++ csw/trunk/utils/cswclassutils/files/CSWcswclassutils.README.CSW 2008-11-25 08:13:23 UTC (rev 2352)
@@ -0,0 +1,30 @@
+CSWcswclassutils
+================
+
+This package contains class action scripts to simplify doing common tasks in a
+consistent manner. They can also be updated to benefit all packages that make
+use of them.
+
+Currently it has:
+
+- cswinitsmf
+
+ This class takes care of creating/removing init script links for Solaris 8
+ and 9. For Solaris 10+ it supports SMF and can create a simple manifest on
+ the fly at installation time. Read more about how to use it in the sample
+ init script provided in /etc/opt/csw/init.d/csw.smf.sample.
+
+- cswcpsampleconf
+
+ This script handles the sample configuration files. If you provide a file
+ called cswfoo.CSW it will copy it to cswfoo it that file doesn't already
+ exist. Read more in /usr/sadm/install/scripts/i.cswcpsampleconf and
+ r.cswcpsampleconf.
+
+- cswpreserveconf
+
+ This is an enhanced variation of cswcpsampleconf. It moves
+ user-modified versions of the sample config files, to a preserve
+ directory when a package is removed, and restores it on the next pkgadd.
+ Read more in /usr/sadm/install/scripts/i.cswpreserveconf and
+ r.cswpreserveconf.
Added: csw/trunk/utils/cswclassutils/files/CSWcswclassutils.copyright
===================================================================
--- csw/trunk/utils/cswclassutils/files/CSWcswclassutils.copyright (rev 0)
+++ csw/trunk/utils/cswclassutils/files/CSWcswclassutils.copyright 2008-11-25 08:13:23 UTC (rev 2352)
@@ -0,0 +1,5 @@
+
+These script(s) are utility scripts used by people who package software
+for opencsw.org's Solaris "Community SoftWare" (CSW) effort. The scripts
+may be copied free of charge, but may be of limited use to non-opencsw folks.
+
Added: csw/trunk/utils/cswclassutils/files/CSWcswclassutils.csw.smf.sample
===================================================================
--- csw/trunk/utils/cswclassutils/files/CSWcswclassutils.csw.smf.sample (rev 0)
+++ csw/trunk/utils/cswclassutils/files/CSWcswclassutils.csw.smf.sample 2008-11-25 08:13:23 UTC (rev 2352)
@@ -0,0 +1,73 @@
+#!/bin/sh
+#
+# Sample init script
+#
+# Original concept by Philip Brown
+# Written by Peter Bonivart
+#
+# 2008-04-22 First release
+#
+# Usage
+# -----
+# 1. Add CSWcswclassutils in depend
+# 2. Add cswinitsmf as the last class in pkginfo, e.g. "CLASSES=none cswinitsmf"
+# 3. Add a line in prototype for the init script, it must belong to the
+# cswinitsmf class. Also note the path in the example below:
+# "f cswinitsmf /etc/opt/csw/init.d/cswfoo 0755 root bin"
+#
+# NOTE that the SMF service name will be the same as the init script file
+# name, in the example above cswfoo.
+#
+# Requirements
+# ------------
+# 1. Your init script must support start and stop. Restart will be supported
+# if present.
+#
+# In-Line tweaks
+# --------------
+# In your init script you can have "magic" comments that configure
+# the service creation or symlink creation during pkg installation.
+#
+# These are all OPTIONAL. If you do not set them, then reasonable
+# defaults will be chosen.
+#
+# The line must start with one hash mark to be immediately followed by
+# the variable, then whitespace to the value. Comments like in the examples
+# below are OK but there must be whitespace after the value.
+#
+# The examples below, happen to be the default values if you do not
+# define them yourself.
+#
+# RC_KLEV and RC_SLEV supports comma separated lists.
+#
+# Examples of OPTIONAL tweaks below.
+# To use, change '##' to '#', and set your own preferred value(s).
+#
+##RC_KNUM 20 # Number used for kill script symlink, e.g. K20cswfoo
+##RC_SNUM 80 # Number used for start script symlink, e.g. S80cswfoo
+##RC_KLEV 0,1,2,S # Run levels that should have a kill script symlink
+##RC_SLEV 3 # Run levels that should have a start script symlink
+##FMRI network # FMRI path for service (S10+), the example would give
+# an FMRI of "svc:/network/cswfoo:default"
+
+case "$1" in
+ start)
+ echo "Starting cswfoo ..."
+ /opt/csw/bin/cswfoo
+ ;;
+ stop)
+ echo "Stopping cswfoo ..."
+ pkill cswfoo
+ ;;
+ restart)
+ $0 stop
+ sleep 1 # or explicitly check that service has stopped
+ $0 start
+ ;;
+ *)
+ echo "Usage: $0 { start | stop | restart }"
+ exit 1
+ ;;
+esac
+
+exit 0
Property changes on: csw/trunk/utils/cswclassutils/files/CSWcswclassutils.csw.smf.sample
___________________________________________________________________
Added: svn:executable
+ *
Added: csw/trunk/utils/cswclassutils/files/CSWcswclassutils.gspec
===================================================================
--- csw/trunk/utils/cswclassutils/files/CSWcswclassutils.gspec (rev 0)
+++ csw/trunk/utils/cswclassutils/files/CSWcswclassutils.gspec 2008-11-25 08:13:23 UTC (rev 2352)
@@ -0,0 +1,11 @@
+%var bitname cswclassutils
+%var pkgname CSWcswclassutils
+%var arch all
+%include url file://%{PKGLIB}/csw_vars.gspec
+%pkginfo url file://%{PKGLIB}/csw/pkginfo
+%include url file://%{PKGLIB}/csw_prototype.gspec
+%depend
+%copyright
+
+Please see /opt/csw/share/doc/cswclassutils/LICENSE for license information.
+
Added: csw/trunk/utils/cswclassutils/files/CSWcswclassutils.i.cswcpsampleconf
===================================================================
--- csw/trunk/utils/cswclassutils/files/CSWcswclassutils.i.cswcpsampleconf (rev 0)
+++ csw/trunk/utils/cswclassutils/files/CSWcswclassutils.i.cswcpsampleconf 2008-11-25 08:13:23 UTC (rev 2352)
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+# This "class" is meant to be used with a sample configuration file.
+# eg: f cswcpsampleconf /etc/opt/csw/myprog.conf.csw
+#
+# It will copy myprog.conf.csw to myprog.conf, IF AND ONLY IF
+# there is no pre-existing "myprog.conf" file
+#
+# Author: Philip Brown 2008
+# May be used/copied freely
+#
+
+while read src dest ; do
+ # reminder: $dest will already have $PKG_INSTALL_ROOT prepended for us
+ cp $src $dest
+
+ case $dest in
+ *.csw)
+ confdest=`echo $dest |sed 's/.csw$//'`
+ ;;
+ *.CSW)
+ confdest=`echo $dest |sed 's/.CSW$//'`
+ ;;
+ *)
+ echo ERROR: unrecognized sample conf file .ext $dest
+ exit 1
+ ;;
+ esac
+
+ if [ -f $confdest ] ; then
+ echo $confdest already exists. Not overwriting
+ else
+ echo Copying sample config to $confdest
+ cp $dest $confdest
+ fi
+done
+
+echo ""
Added: csw/trunk/utils/cswclassutils/files/CSWcswclassutils.i.cswinitsmf
===================================================================
--- csw/trunk/utils/cswclassutils/files/CSWcswclassutils.i.cswinitsmf (rev 0)
+++ csw/trunk/utils/cswclassutils/files/CSWcswclassutils.i.cswinitsmf 2008-11-25 08:13:23 UTC (rev 2352)
@@ -0,0 +1,242 @@
+#!/bin/sh
+#
+# i.cswinitsmf - Class action script for CSW SMF support
+#
+# Original concept by Philip Brown
+# Written by Peter Bonivart
+#
+# 2008-04-21 First release
+
+DEBUG= # clear to disable debug, set to anything to enable
+SVCDIR=/var/opt/csw/svc
+
+# Source csw.conf, if it exists
+if [ -f $PKG_INSTALL_ROOT/opt/csw/etc/csw.conf ] ; then
+ . $PKG_INSTALL_ROOT/opt/csw/etc/csw.conf
+fi
+if [ -f $PKG_INSTALL_ROOT/etc/opt/csw/csw.conf ] ; then
+ . $PKG_INSTALL_ROOT/etc/opt/csw/csw.conf
+fi
+
+# Determine if SMF should be used or not
+smf=no
+
+if [ -f /usr/sbin/svccfg -a -f /usr/sbin/svcadm ]; then
+ smf=yes
+fi
+
+if [ "$use_smf" = "no" ]; then
+ smf=no
+fi
+
+if [ "$DEBUG" ]; then
+ echo PACKAGE: $PKGINST SMF: $smf
+fi
+
+# Copy files, set up SMF
+echo "Installing class <cswinitsmf> ..."
+
+while read src dest
+do
+ if [ "$DEBUG" ]; then
+ echo SRC: $src DEST: $dest
+ fi
+ service="`basename $dest`"
+ if [ "$smf" = "yes" ]; then
+ # Copy the service script
+ /usr/bin/cp $src $dest || exit 2
+ FMRI=
+ if [ "`grep '^#FMRI' $dest`" ]; then
+ FMRI=`grep '^#FMRI' $dest | awk '{print $2}'`
+ fi
+ if [ ! "$FMRI" ]; then
+ FMRI=network
+ fi
+ # Creating FMRI path on system if needed
+ testpath=$SVCDIR/manifest
+ for i in `echo $FMRI | sed 's/\// /g'`; do
+ testpath=$testpath/$i
+ if [ ! -d $testpath ]; then
+ echo Creating $testpath ...
+ /usr/bin/mkdir $testpath
+ /usr/bin/chown root:bin $testpath
+ /usr/bin/chmod 755 $testpath
+ /usr/sbin/installf -c cswinitsmf $PKGINST $testpath d 755 root bin
+ fi
+ done
+ if [ "$DEBUG" ]; then
+ echo FMRI: $FMRI
+ fi
+ echo Creating service script in $SVCDIR/method/svc-$service ...
+ /usr/bin/ln -s $dest $SVCDIR/method/svc-$service
+ /usr/sbin/installf -c cswinitsmf $PKGINST $SVCDIR/method/svc-$service=$dest s
+ /usr/bin/chmod 755 $SVCDIR/method/svc-$service
+ /usr/bin/chown root:bin $SVCDIR/method/svc-$service
+
+ # Creating manifest
+ echo Creating manifest ...
+ # Add first part of manifest
+ cat > $SVCDIR/manifest/$FMRI/$service.xml << EOF
+<?xml version='1.0'?>
+<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
+<!--
+Service manifest for $service
+Autogenerated by CSWinitsmf
+2008-04-21 Peter Bonivart
+-->
+
+<service_bundle type='manifest' name='$service:$service'>
+
+<service
+ name='$FMRI/$service'
+ type='service'
+ version='1'>
+ <create_default_instance enabled='false' />
+ <single_instance />
+
+ <dependency name='fs'
+ grouping='require_all'
+ restart_on='none'
+ type='service'>
+ <service_fmri value='svc:/system/filesystem/local' />
+ </dependency>
+
+ <dependency name='net'
+ grouping='require_all'
+ restart_on='none'
+ type='service'>
+ <service_fmri value='svc:/network/loopback' />
+ </dependency>
+
+ <exec_method
+ type='method'
+ name='start'
+ exec='$SVCDIR/method/svc-$service start'
+ timeout_seconds='-1'>
+ </exec_method>
+
+ <exec_method
+ type='method'
+ name='stop'
+ exec='$SVCDIR/method/svc-$service stop'
+ timeout_seconds='-1'>
+ </exec_method>
+
+EOF
+
+ # Add restart option to manifest if service script supports it
+ if [ "`/usr/bin/egrep 'restart.?\)' $SVCDIR/method/svc-$service`" ]; then
+ cat >> $SVCDIR/manifest/$FMRI/$service.xml << EOF
+ <exec_method
+ type='method'
+ name='restart'
+ exec='$SVCDIR/method/svc-$service restart'
+ timeout_seconds='-1'>
+ </exec_method>
+
+EOF
+ fi
+
+ # Add last part of manifest
+ cat >> $SVCDIR/manifest/$FMRI/$service.xml << EOF
+</service>
+
+</service_bundle>
+EOF
+ /usr/sbin/installf -c cswinitsmf $PKGINST $SVCDIR/manifest/$FMRI/$service.xml f 644 root bin
+ /usr/bin/chmod 644 $SVCDIR/manifest/$FMRI/$service.xml
+ /usr/bin/chown root:bin $SVCDIR/manifest/$FMRI/$service.xml
+
+ # Register with SMF
+ echo Configuring service in SMF ...
+ /usr/sbin/svccfg import $SVCDIR/manifest/$FMRI/$service.xml > /dev/null 2>&1
+ /usr/sbin/svcadm disable svc:/$FMRI/$service > /dev/null 2>&1
+ echo $PKGINST is using Service Management Facility. The FMRI is svc:/$FMRI/$service:default
+ else
+ # Copy the service script
+ echo $dest
+ /usr/bin/cp $src $dest || exit 2
+
+ # Create link to /etc/init.d
+ echo /etc/init.d/$service
+ /usr/bin/ln -s $dest /etc/init.d/$service
+ /usr/sbin/installf -c cswinitsmf $PKGINST /etc/init.d/$service=$dest s
+
+ # Create rc-symlinks
+ RC_KNUM=
+ if [ "`grep '^#RC_KNUM' $dest`" ]; then
+ RC_KNUM=`grep '^#RC_KNUM' $dest | awk '{print $2}'`
+ fi
+ RC_SNUM=
+ if [ "`grep '^#RC_SNUM' $dest`" ]; then
+ RC_SNUM=`grep '^#RC_SNUM' $dest | awk '{print $2}'`
+ fi
+ RC_KLEV=
+ if [ "`grep '^#RC_KLEV' $dest`" ]; then
+ RC_KLEV=`grep '^#RC_KLEV' $dest | awk '{print $2}'`
+ RC_KLEV=`echo $RC_KLEV | sed 's/,/ /g'`
+ fi
+ RC_SLEV=
+ if [ "`grep '^#RC_SLEV' $dest`" ]; then
+ RC_SLEV=`grep '^#RC_SLEV' $dest | awk '{print $2}'`
+ RC_SLEV=`echo $RC_SLEV | sed 's/,/ /g'`
+ fi
+ if [ ! "$RC_KNUM" ]; then
+ RC_KNUM=20
+ fi
+ if [ ! "$RC_SNUM" ]; then
+ RC_SNUM=80
+ fi
+ if [ ! "$RC_KLEV" ]; then
+ RC_KLEV="0 1 2 S"
+ fi
+ if [ ! "$RC_SLEV" ]; then
+ RC_SLEV=3
+ fi
+ if [ "$DEBUG" ]; then
+ echo RC_KNUM: $RC_KNUM
+ echo RC_SNUM: $RC_SNUM
+ echo RC_KLEV: $RC_KLEV
+ echo RC_SLEV: $RC_SLEV
+ fi
+ for i in $RC_KLEV; do
+ echo /etc/rc$i.d/K$RC_KNUM$service
+ /usr/sbin/installf -c cswinitsmf $PKGINST /etc/rc$i.d/K$RC_KNUM$service=/etc/init.d/$service s
+ /bin/ln -s /etc/init.d/$service /etc/rc$i.d/K$RC_KNUM$service
+ done
+ for i in $RC_SLEV; do
+ echo /etc/rc$i.d/S$RC_SNUM$service
+ /usr/sbin/installf -c cswinitsmf $PKGINST /etc/rc$i.d/S$RC_SNUM$service=/etc/init.d/$service s
+ /bin/ln -s /etc/init.d/$service /etc/rc$i.d/S$RC_SNUM$service
+ done
+ fi
+done
+
+# Determine if service should be started or not
+daemon=yes
+
+if [ "$autoenable_daemons" = "no" ]; then
+ daemon=no
+fi
+
+if [ "$autoenable_$service" = "no" ]; then
+ daemon=no
+elif [ "$autoenable_$service" = "yes" ]; then
+ daemon=yes
+fi
+
+# Start service
+if [ "$daemon" = "yes" ]; then
+ echo Starting $PKGINST ...
+ if [ "$smf" = "yes" ]; then
+ /usr/sbin/svcadm enable svc:/$FMRI/$service > /dev/null 2>&1
+ else
+ # fix permissions temporarily since 644 is used until verification
+ /usr/bin/chmod 744 /etc/init.d/$service
+ /etc/init.d/$service start > /dev/null 2>&1
+ fi
+fi
+
+/usr/sbin/installf -f $PKGINST
+
+exit 0
Added: csw/trunk/utils/cswclassutils/files/CSWcswclassutils.i.cswpreserveconf
===================================================================
--- csw/trunk/utils/cswclassutils/files/CSWcswclassutils.i.cswpreserveconf (rev 0)
+++ csw/trunk/utils/cswclassutils/files/CSWcswclassutils.i.cswpreserveconf 2008-11-25 08:13:23 UTC (rev 2352)
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+# This script is similar yet different, to cswcpsampleconf
+# It should probably replace the former in all cases, but...
+# not sure yet.
+#
+# See README for package, for documentation
+#
+# Author: Philip Brown 2008
+# May be used/copied freely
+#
+
+
+while read src dest ; do
+ cp $src $dest
+
+ # reminder: $dest will already have $PKG_INSTALL_ROOT prepended for us
+
+ case $dest in
+ *.csw)
+ confdest=`echo $dest |sed 's/.csw$//'`
+ ;;
+ *.CSW)
+ confdest=`echo $dest |sed 's/.CSW$//'`
+ ;;
+ *)
+ echo ERROR: unrecognized sample conf file .ext $dest
+ exit 1
+ ;;
+ esac
+ preservedir=$PKG_INSTALL_ROOT/etc/opt/csw/preserve/$PKG
+ confbasename=`basename $confdest`
+ preservedconf=$preservedir/$confbasename
+
+ if [ -f $preservedconf ] ; then
+ echo Restoring $preservedconf
+ cp $preservedconf $confdest
+ elif [ -f $confdest ] ; then
+ echo $confdest already exists. Not overwriting
+ else
+ echo Copying sample config to $confdest
+ cp $dest $confdest
+ fi
+done
+
+echo ""
Added: csw/trunk/utils/cswclassutils/files/CSWcswclassutils.prototype
===================================================================
--- csw/trunk/utils/cswclassutils/files/CSWcswclassutils.prototype (rev 0)
+++ csw/trunk/utils/cswclassutils/files/CSWcswclassutils.prototype 2008-11-25 08:13:23 UTC (rev 2352)
@@ -0,0 +1,20 @@
+i pkginfo=CSWcswclassutils.pkginfo
+i copyright=CSWcswclassutils.copyright
+d none /etc/opt/csw 0755 root bin
+d none /etc/opt/csw/init.d 0755 root bin
+f none /etc/opt/csw/init.d/csw.smf.sample 0755 root bin
+d none /var/opt/csw 0755 root bin
+d none /var/opt/csw/svc 0755 root bin
+d none /var/opt/csw/svc/manifest 0755 root bin
+d none /var/opt/csw/svc/method 0755 root bin
+f none /usr/sadm/install/scripts/i.cswinitsmf 0555 root sys
+f none /usr/sadm/install/scripts/r.cswinitsmf 0555 root sys
+f none /usr/sadm/install/scripts/i.cswcpsampleconf 0555 root sys
+f none /usr/sadm/install/scripts/r.cswcpsampleconf 0555 root sys
+f none /usr/sadm/install/scripts/i.cswpreserveconf 0555 root sys
+f none /usr/sadm/install/scripts/r.cswpreserveconf 0555 root sys
+d none /opt/csw/share 0755 root bin
+d none /opt/csw/share/doc 0755 root bin
+d none /opt/csw/share/doc/cswclassutils 0755 root bin
+f none /opt/csw/share/doc/cswclassutils/README.CSW 0444 root bin
+f none /opt/csw/share/doc/cswclassutils/LICENSE 0444 root bin
Added: csw/trunk/utils/cswclassutils/files/CSWcswclassutils.r.cswcpsampleconf
===================================================================
--- csw/trunk/utils/cswclassutils/files/CSWcswclassutils.r.cswcpsampleconf (rev 0)
+++ csw/trunk/utils/cswclassutils/files/CSWcswclassutils.r.cswcpsampleconf 2008-11-25 08:13:23 UTC (rev 2352)
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# Author: Philip Brown 2008
+# May be used/copied freely
+#
+
+while read dest ; do
+ # reminder: $dest will already have $PKG_INSTALL_ROOT prepended for us
+
+ case $dest in
+ *.csw)
+ confdest=`echo $dest |sed 's/.csw$//'`
+ ;;
+ *.CSW)
+ confdest=`echo $dest |sed 's/.CSW$//'`
+ ;;
+ *)
+ echo ERROR: unrecognized sample conf file .ext $dest
+ exit 1
+ ;;
+ esac
+
+ if cmp $confdest $dest >/dev/null ; then
+ echo $confdest is identical to sample config file $dest
+ echo Removing $confdest
+ rm $confdest
+ fi
+ rm $dest
+done
Added: csw/trunk/utils/cswclassutils/files/CSWcswclassutils.r.cswinitsmf
===================================================================
--- csw/trunk/utils/cswclassutils/files/CSWcswclassutils.r.cswinitsmf (rev 0)
+++ csw/trunk/utils/cswclassutils/files/CSWcswclassutils.r.cswinitsmf 2008-11-25 08:13:23 UTC (rev 2352)
@@ -0,0 +1,61 @@
+#!/bin/sh
+#
+# r.cswinitsmf - Class action script for CSW SMF support
+#
+# Original concept by Philip Brown
+# Written by Peter Bonivart
+#
+# 2008-04-21 First release
+# 2008-11-23 Fixed grep bug for FMRI
+
+DEBUG= # clear to disable debug, set to anything to enable
+
+# Source csw.conf, if it exists
+if [ -f $PKG_INSTALL_ROOT/opt/csw/etc/csw.conf ] ; then
+ . $PKG_INSTALL_ROOT/opt/csw/etc/csw.conf
+fi
+if [ -f $PKG_INSTALL_ROOT/etc/opt/csw/csw.conf ] ; then
+ . $PKG_INSTALL_ROOT/etc/opt/csw/csw.conf
+fi
+
+# Determine if SMF should be used or not
+smf=no
+
+if [ -f /usr/sbin/svccfg -a -f /usr/sbin/svcadm ]; then
+ smf=yes
+fi
+
+if [ "$use_smf" = "no" ]; then
+ smf=no
+fi
+
+if [ "$DEBUG" ]; then
+ echo PACKAGE: $PKGINST SMF: $smf
+fi
+
+# Stop service
+echo Stopping $PKGINST ...
+if [ "$smf" = "yes" ]; then
+ # Find out FMRI complete with service name
+ FMRI=`grep ${PKGINST}$ /var/sadm/install/contents | grep "^/var/opt/csw/svc/manifest" | egrep '\.xml ' | cut -d'/' -f7- | awk -F'.xml' '{print $1}'`
+ /usr/sbin/svcadm disable svc:/$FMRI > /dev/null 2>&1
+ # Unregister with SMF
+ echo Unregister svc:/${FMRI}:default with SMF ...
+ /usr/sbin/svccfg delete svc:/${FMRI}:default >/dev/null 2>&1
+else
+ /etc/init.d/$service stop > /dev/null 2>&1
+fi
+
+# Remove files in class cswinitsmf
+echo "Removing class <cswinitsmf> ..."
+while read file
+do
+ echo $file
+ if [ -d $file ]; then
+ /usr/bin/rm -rf $file || exit 2
+ else
+ /usr/bin/rm -f $file || exit 2
+ fi
+done
+
+exit 0
Added: csw/trunk/utils/cswclassutils/files/CSWcswclassutils.r.cswpreserveconf
===================================================================
--- csw/trunk/utils/cswclassutils/files/CSWcswclassutils.r.cswpreserveconf (rev 0)
+++ csw/trunk/utils/cswclassutils/files/CSWcswclassutils.r.cswpreserveconf 2008-11-25 08:13:23 UTC (rev 2352)
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# Author: Philip Brown 2008
+# May be used/copied freely
+#
+
+while read dest ; do
+ # reminder: $dest will already have $PKG_INSTALL_ROOT prepended for us
+
+ case $dest in
+ *.csw)
+ confdest=`echo $dest |sed 's/.csw$//'`
+ ;;
+ *.CSW)
+ confdest=`echo $dest |sed 's/.CSW$//'`
+ ;;
+ *)
+ echo ERROR: unrecognized sample conf file .ext $dest
+ exit 1
+ ;;
+ esac
+
+ preservedir=$PKG_INSTALL_ROOT/etc/opt/csw/preserve/$PKG
+ confbasename=`basename $confdest`
+ preservedconf=$preservedir/$confbasename
+
+ if [ -f $confdest ] ; then
+ if cmp $confdest $dest >/dev/null ; then
+ echo $confdest is identical to sample config file $dest
+ echo Removing $confdest
+ rm $confdest
+ else
+ echo "preserving $confdest to $preservedconf"
+ mkdir -p $preservedir
+ cp -p $confdest $preservedconf && rm $confdest
+ fi
+ fi
+
+ # Any way it shakes out, we always remove the "sample conf"
+ rm $dest
+done
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the devel
mailing list