Ajout : etc/sv/sympa/ .
[lhc/ateliers.git] / vm_hosted
index b9275fa..3ac6ced 100755 (executable)
--- a/vm_hosted
+++ b/vm_hosted
@@ -61,10 +61,16 @@ rule_adduser () {
        sudo adduser "$@" "$user"
  }
 rule_apt_get_install () { # SYNTAX: $package
-       sudo DEBIAN_FRONTEND=noninteractive apt-get install --yes "$@"
+       sudo \
+        DEBIAN_FRONTEND=noninteractive \
+        DEBIAN_PRIORITY=low \
+        apt-get install --yes "$@"
  }
 rule_dpkg_reconfigure () { # SYNTAX: $package
-       sudo DEBIAN_FRONTEND=noninteractive dpkg-reconfigure "$@"
+       sudo \
+        DEBIAN_FRONTEND=noninteractive \
+        DEBIAN_PRIORITY=low \
+        dpkg-reconfigure "$@"
  }
 
 rule__chrooted_configure () { # NOTE: est-ce bien utile à un moment ?
@@ -252,7 +258,7 @@ rule_apt_configure () {
        sudo install -m 660 -o root -g root /dev/stdin /etc/apt/sources.list.d/openerp.list <<-EOF
                deb http://nightly.openerp.com/7.0/nightly/deb/ ./
                EOF
-       sudo install -m 660 -o root -g root /dev/stdin /etc/apt/preferences <<-EOF
+       sudo install -m 664 -o root -g root /dev/stdin /etc/apt/preferences <<-EOF
                Package: *
                Pin: release a=$vm_lsb_name
                Pin-Priority: 200
@@ -553,25 +559,48 @@ rule_network_configure () {
         /etc/network/interfaces
  }
 rule_runit_configure () { # SYNTAX: $sv
-       rule apt_get_install runit
-       local -; set +f
-       sudo find /etc/sv -mindepth 1 -maxdepth 1 -type d -name "${1:-*}" -exec \
-               /bin/sh -efux -c 'case $(sv stop "$1") in
-                (*": runsv not running") true;;
-                (*": unable to open supervise/ok: file does not exist") true;;
-                ("ok: down:"*) true;;
-                (*) false;;
-                esac' '' {} +
-       for sv in ${1-"$tool"/etc/sv/*}
-        do sv=${sv##*/}
-               rule runit_sv_configure "$sv"
-               rule runit_sv_start     "$sv"
-        done
-       #sleep 3
-       #sudo find -L /etc/service -type l -delete
+       #rule apt_get_install runit
+       if test $# = 0
+        then
+               set +x
+               sudo sv status \
+                $(sudo find /etc/sv \
+                -mindepth 1 -maxdepth 1 -type d \
+                -printf '%p\n' | sort)
+        else
+               local services=
+               while [ $# -gt 0 ]
+                do case $1 in
+                        (--) shift; break;;
+                        (*) services="$services $1"; shift;;
+                        esac
+                done
+               #for sv in $(sudo find /etc/sv \
+               # -mindepth 1 -maxdepth 1 -type d \
+               # -false $(printf -- '-or -name %s\n' $services) \
+               # -printf '%f\n')
+               # do
+               #       case $(sudo sv stop "$sv" | tee /dev/stderr) in
+               #        (*": runsv not running") true;;
+               #        (*": unable to open supervise/ok: file does not exist") true;;
+               #        ("ok: down:"*) true;;
+               #        (*) false;;
+               #        esac
+               # done
+               for sv in $(find "$tool"/etc/sv \
+                -mindepth 1 -maxdepth 1 -type d \
+                -false $(printf -- '-or -name %s\n' $services) \
+                -printf '%f\n')
+                do
+                       rule runit_sv_configure "$sv" "$@"
+                       rule runit_sv_start     "$sv"
+                done
+               #sleep 3
+               #sudo find -L /etc/service -type l -delete
+        fi
  }
-rule_runit_sv_configure () { # SYNTAX: $sv
-       local sv="$1"
+rule_runit_sv_configure () { # SYNTAX: $sv $configure_options
+       local sv="$1"; shift
        sudo install -d -m 770 -o root -g root \
         /etc/sv/"$sv"
        sudo install -m 770 -o root -g root \
@@ -587,9 +616,11 @@ rule_runit_sv_configure () { # SYNTAX: $sv
         fi
        (
        test ! -r "$tool"/etc/sv/"$sv"/configure.sh ||
-       .         "$tool"/etc/sv/"$sv"/configure.sh
+       .         "$tool"/etc/sv/"$sv"/configure.sh || return 1
+       )
+       (
        test ! -r "$tool"/etc/sv/"$sv"/log/configure.sh ||
-       .         "$tool"/etc/sv/"$sv"/log/configure.sh
+       .         "$tool"/etc/sv/"$sv"/log/configure.sh || return 1
        )
        sudo ln -fns \
                ../sv/"$sv" \
@@ -598,9 +629,9 @@ rule_runit_sv_configure () { # SYNTAX: $sv
 rule_runit_sv_restart () { # SYNTAX: $sv
        local sv="$1"
        while true
-        do case $(sudo sv restart "$sv") in
-                ("fail: $sv: runsv not running") sleep 1;;
-                ("warning: $sv: unable to open supervise/ok: file does not exists") sleep 1;;
+        do case $(sudo sv restart "$sv" | tee /dev/stderr) in
+                (*": runsv not running") sleep 1;;
+                (*": unable to open supervise/ok: file does not exist") sleep 1;;
                 (*) break;;
                 esac
         done
@@ -608,9 +639,9 @@ rule_runit_sv_restart () { # SYNTAX: $sv
 rule_runit_sv_start () { # SYNTAX: $sv
        local sv="$1"
        while true
-        do case $(sudo sv start "$sv") in
-                ("fail: $sv: runsv not running") sleep 1;;
-                ("warning: $sv: unable to open supervise/ok: file does not exists") sleep 1;;
+        do case $(sudo sv start "$sv" | tee /dev/stderr) in
+                (*": runsv not running") sleep 1;;
+                (*": unable to open supervise/ok: file does not exist") sleep 1;;
                 (*) break;;
                 esac
         done
@@ -752,7 +783,9 @@ rule_user_configure () {
        for sh in "$tool"/etc/user.d/*/configure.sh
         do sh=${sh#"$tool"/etc/user.d/}
                local user="${sh%/configure.sh}"
-               . "$tool"/etc/user.d/"$sh"
+               (
+               . "$tool"/etc/user.d/"$sh" || return 1
+               )
         done
  }
 rule_user_admin_add () { # SYNTAX: $user