diff options
author | Carlo Landmeter <clandmeter@gmail.com> | 2012-01-26 16:24:27 +0000 |
---|---|---|
committer | Carlo Landmeter <clandmeter@gmail.com> | 2012-01-26 16:24:27 +0000 |
commit | 06c07ee2227a0cc1a9743dcfe6f044c27fcb32ee (patch) | |
tree | 153129c2267948d27d94bf111d6096c5723af86b /main | |
parent | 6160b20b4f9a1cb388556228aecb583f0da590b2 (diff) | |
download | aports-06c07ee2227a0cc1a9743dcfe6f044c27fcb32ee.tar.bz2 aports-06c07ee2227a0cc1a9743dcfe6f044c27fcb32ee.tar.xz |
main/scstadmin: update to 2.2.0
Diffstat (limited to 'main')
-rw-r--r-- | main/scstadmin/APKBUILD | 17 | ||||
-rw-r--r-- | main/scstadmin/scst-init-ash-comapt.patch | 35 | ||||
-rw-r--r-- | main/scstadmin/scstadmin.initd | 232 |
3 files changed, 240 insertions, 44 deletions
diff --git a/main/scstadmin/APKBUILD b/main/scstadmin/APKBUILD index cdf22d12dd..912a31dafd 100644 --- a/main/scstadmin/APKBUILD +++ b/main/scstadmin/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Carlo Landmeter # Maintainer: pkgname=scstadmin -pkgver=2.1.0 +pkgver=2.2.0 pkgrel=0 pkgdesc="SCST administration tool written in perl" url="http://scst.sourceforge.net" @@ -11,28 +11,27 @@ depends="perl" makedepends="perl-dev" install= subpackages="$pkgname-doc" -source="http://downloads.sourceforge.net/scst/$pkgname-$pkgver.tar.gz - scst-init-ash-comapt.patch +source="http://downloads.sourceforge.net/scst/$pkgname-$pkgver.tar.bz2 + scstadmin.initd " _builddir="$srcdir/$pkgname-$pkgver" prepare() { - cd "$_builddir"/scstadmin.sysfs/scst-0.9.00 + cd "$_builddir"/scstadmin.sysfs/scst-0.9.10 PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 cd "$_builddir" - patch -p1 < "$srcdir"/scst-init-ash-comapt.patch } package() { - cd "$_builddir"/scstadmin.sysfs/scst-0.9.00 + cd "$_builddir"/scstadmin.sysfs/scst-0.9.10 make DESTDIR="$pkgdir" install || return 1 cd "$_builddir" mkdir -p "$pkgdir"/var/lib/scst/pr install -Dm755 scstadmin.sysfs/scstadmin "$pkgdir"/usr/sbin/scstadmin || return 1 - install -Dm755 init.d/scst.gentoo "$pkgdir"/etc/init.d/scstadmin || return 1 + install -Dm755 "$srcdir"/scstadmin.initd "$pkgdir"/etc/init.d/scstadmin || return 1 } -md5sums="df5a914c80dfe167163a4da6f6044d86 scstadmin-2.1.0.tar.gz -061580b8ec84b5f7da0b1332601f505a scst-init-ash-comapt.patch" +md5sums="ab990f8eaf74c20f89e1c7b154c61d25 scstadmin-2.2.0.tar.bz2 +0c5eb336ec325533145ea739a7dea82f scstadmin.initd" diff --git a/main/scstadmin/scst-init-ash-comapt.patch b/main/scstadmin/scst-init-ash-comapt.patch deleted file mode 100644 index 67cd7adf17..0000000000 --- a/main/scstadmin/scst-init-ash-comapt.patch +++ /dev/null @@ -1,35 +0,0 @@ ---- scstadmin/init.d/scst.gentoo -+++ scstadmin/init.d/scst.gentoo -@@ -12,13 +12,11 @@ - # Note: on most Linux distributions /bin/sh is a soft link to /bin/bash, while - # on a default Ubuntu setup /bin/sh is a soft link to /bin/dash ! - --opts="${opts} try-restart reload force-reload" -+opts="${opts} try_restart reload force_reload" - depend() { - use logger - } - --PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin -- - DEFAULTFILE="/etc/conf.d/scst" - SCST_CFG=/etc/scst.conf - MODPROBE="/sbin/modprobe" -@@ -121,7 +119,7 @@ - start - } - --try-restart() { -+try_restart() { - ## Restart the service if the service is already running. - status >/dev/null 2>&1 && restart - } -@@ -140,7 +138,7 @@ - fi - } - --force-reload() { -+force_reload() { - ## Cause the configuration to be reloaded if the service supports this, - ## otherwise restart the service if it is running. - einfo "Reloading SCST configuration" diff --git a/main/scstadmin/scstadmin.initd b/main/scstadmin/scstadmin.initd new file mode 100644 index 0000000000..af5cdd9856 --- /dev/null +++ b/main/scstadmin/scstadmin.initd @@ -0,0 +1,232 @@ +#!/sbin/runscript +# +# Copyright (C) 2008 Mark Buechler <mark.buechler@gmail.com> +# Copyright (C) 2009-2011 Bart Van Assche <bvanassche@acm.org> +# This software is made available under the GPLv2 license. +# +# System startup script for SCST. +# +# See also: +# * http://refspecs.freestandards.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html +# * http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html +# + +SCST_CFG=/etc/scst.conf + +if [ ! -e /lib/lsb/init-functions ]; then + # Slackware and Gentoo. +rc_status() { + _rc_status_ret=$? + for i; do + case "$i" in + -v) + case "${_rc_status_ret}" in + 0) echo "OK";; + *) echo "Not running";; + esac + ;; + esac + done + return ${_rc_status_ret} +} +start_daemon() { + "$@" >/dev/null 2>&1 & +} +killproc() { + local exe="`basename "$1"`" + killall $exe + rm -f "/var/run/$exe.pid" +} +fi + +# Whether or not there is a "TARGET_DRIVER iscsi" section in scst.conf. +using_iscsi() { + for m in $SCST_MODULES; do + if [ $m = "iscsi_scst" ]; then + return 0 + fi + done + return 1 +} + +# Parse scst.conf and assign the list of associated kernel modules to +# SCST_MODULES. +parse_scst_conf() { + SCST_MODULES="scst" + SCST_OPT_MODULES="" + SCST_DAEMONS="" + if [ ! -e $SCST_CFG ]; then + return 0 + fi + local nonblanks="[^ ]\{1,\}" + local blanks="[ ]\{1,\}" + SCST_MODULES="$SCST_MODULES `sed -n -e 's/^HANDLER'"$blanks"'\('"$nonblanks"'\)'"$blanks"'{$/\1/p' \ + -e 's/^\[HANDLER'"$blanks"'\('"$nonblanks"'\)\]$/\1/p' $SCST_CFG \ + | while read h; do + case "$h" in + dev_cdrom) echo scst_cdrom;; + dev_changer) echo scst_changer;; + dev_disk*) echo scst_disk;; + dev_modisk*) echo scst_modisk;; + dev_processor) echo scst_processor;; + dev_raid) echo scst_raid;; + dev_tape*) echo scst_tape;; + dev_user) echo scst_user;; + vdisk*|vcdrom) echo scst_vdisk;; + *) echo "$h";; + esac + done | sort -u` \ + `sed -n 's/^TARGET_DRIVER'"$blanks"'\('"$nonblanks"'\)'"$blanks"'{$/\1/p' $SCST_CFG | while read d; do + case "$d" in + iscsi) echo iscsi_scst;; + qla2x00t) echo qla2x00tgt;; + *) echo "$d";; + esac + done | sort -u` \ + $SCST_TARGET_MODULES" + if using_iscsi; then + case "`uname -m`" in + x86_64|i686) + SCST_OPT_MODULES="crc32c-intel $SCST_OPT_MODULES";; + esac + SCST_OPT_MODULES="crc32c $SCST_OPT_MODULES" + SCST_DAEMONS="/usr/local/sbin/iscsi-scstd $SCST_DAEMONS" + fi +} + +# Unload SCST. parse_scst_conf must already have been invoked. +unload_scst() { + for d in $SCST_DAEMONS; do + killproc $d + done + + reverse_list="" + for m in $SCST_MODULES; do + reverse_list="$m $reverse_list" + done + for m in $reverse_list; do + refcnt="`cat /sys/module/$m/refcnt 2>/dev/null`" + if [ ! -z "$refcnt" ] && [ "$refcnt" -gt 0 ]; then + # Apparently it can happen that the iscsi_scst refcnt is only + # decremented a short time after killproc finished. If that + # occurs, sleep for a short time. + sleep 1 + fi + if [ -e /sys/module/$m/refcnt ] && ! rmmod $m; then + return 1 + fi + done + for m in $SCST_OPT_MODULES; do + reverse_list="$m $reverse_list" + done + for m in $reverse_list; do + rmmod $m >/dev/null 2>&1 + done + + # Clear the config in case unloading failed or SCST has been built into the + # kernel + if [ -e /sys/module/scst ]; then + scstadmin -noprompt -force -clear_config >/dev/null 2>&1 + fi + + return 0 +} + +start_scst() { + if [ -e /sys/module/scst -a -e /sys/module/scst/refcnt ]; then + echo Already started + return 1 + fi + + parse_scst_conf + + for m in $SCST_OPT_MODULES; do + modprobe $m >/dev/null 2>&1 + done + + for m in $SCST_MODULES; do + if [ ! -e /sys/module/$m ]; then + if ! modprobe $m; then + echo modprobe $m failed. + unload_scst + return 5 + fi + fi + done + + for d in $SCST_DAEMONS; do + options="" + if [ "$(basename "$d")" = "iscsi-scstd" ]; then + options="${ISCSID_OPTIONS}" + fi + if ! start_daemon $d $options; then + echo "Starting $d failed" + unload_scst + return 1 + fi + done + + if [ -f $SCST_CFG ]; then + scstadmin -force -noprompt -clear_config >/dev/null 2>&1 + tmpout=/tmp/scstadmin-output-$$ + if scstadmin -config $SCST_CFG >$tmpout 2>&1; then + rm -f $tmpout + return 0 + else + cat $tmpout + rm -f $tmpout + unload_scst + return 1 + fi + else + echo "SCST configuration file $SCST_CFG missing" + return 0 + fi +} + +stop_scst() { + if ! parse_scst_conf; then + return 1 + fi + + unload_scst +} + +scst_status() { + # Status has a slightly different meaning for the status command: + # 0 - service running + # 1 - service dead, but /var/run/ pid file exists + # 2 - service dead, but /var/lock/ lock file exists + # 3 - service not running + + parse_scst_conf + + for m in $SCST_MODULES; do + if [ ! -e /sys/module/$m ]; then + echo "$m: not loaded" + return 3 + fi + done + return 0 +} + +depend() { + need localmount + need net +} + +checkconfig() { + true +} + +start() { + ebegin "Starting SCST" + start_scst + eend $? +} + +stop() { + ebegin "Stopping SCST" + stop_scst + eend $? +} |