Correction : vm_hosted : rule_runit_configure .
authorJulien Moutinho <julm+burette@autogeree.net>
Tue, 19 Mar 2013 22:54:13 +0000 (23:54 +0100)
committerJulien Moutinho <julm+burette@autogeree.net>
Tue, 19 Mar 2013 23:14:22 +0000 (00:14 +0100)
etc/sv/fcgi.80.git.heureux-cyclage.org/configure
etc/sv/fcgi.80.git.heureux-cyclage.org/run
vm_hosted

index ee22eba..23bd42e 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/sh -efux
-sv=$(basename "$(cd "$(dirname "$0")" && cd -)")
+sv=$(basename "$(cd "$(dirname "$0")" && pwd)")
 IFS=. read -r service site <<-EOF
        $sv
        EOF
index fc32089..530ee5a 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh -efux
 exec 2>&1
-sv=$(basename "$(cd "$(dirname "$0")" && cd -)")
+sv=$(basename "$(cd "$(dirname "$0")" && pwd)")
 IFS=. read -r service site <<-EOF
        $sv
        EOF
index 8a6c8d2..9743830 100755 (executable)
--- a/vm_hosted
+++ b/vm_hosted
@@ -7,6 +7,7 @@ while test -L "$tool"
 tool=${tool%/*}
 . "$tool"/lib/rule.sh
 . "$tool"/etc/vm.sh
+export TRACE=1
 
 rule_help () { # SYNTAX: [--hidden]
        local hidden; [ ${1:+set} ] || hidden=set
@@ -1117,10 +1118,20 @@ rule_procmail_configure () {
 rule_runit_configure () {
        rule apt_get_install runit
        local -; set +f
-       rm -f /etc/service/*
-        # NOTE: runsvdir éteindra les services qui n'apparaîtront plus ici.
-       for sv in "$tool"/etc/sv/*
-        do sv=${sv#"$tool"/etc/sv/}
+       for sv in ${1-/etc/service/*}
+        # NOTE: stoppe les services en retenant leur status de départ
+        do sv=$(basename "$sv")
+               local sv_hash=$(printf %s "$sv" | sha1sum | cut -f 1 -d ' ')
+               local sv_status
+               IFS= read -r sv_status_$sv_hash <<-EOF
+                       $(sv status "$sv")
+                       EOF
+               rm -f /etc/service/"$sv"
+        done
+       for sv in ${1-"$tool"/etc/sv/*}
+        # NOTE: configure et (re-)démarre les services
+        do sv=$(basename "$sv")
+               local sv_hash=$(printf %s "$sv" | sha1sum | cut -f 1 -d ' ')
                sudo install -d -m 770 -o root -g root \
                 /etc/sv/"$sv"
                sudo install -m 770 -o root -g root \
@@ -1134,13 +1145,14 @@ rule_runit_configure () {
                         "$tool"/etc/sv/"$sv"/log/run \
                                /etc/sv/"$sv"/log/run
                 fi
-               if test ! -x "$tool"/etc/sv/"$sv"/configure ||
-                       "$tool"/etc/sv/"$sv"/configure
-                then
-                       ln -fns ../sv/"$sv" /etc/service/"$sv"
-                       test ! -e /etc/sv/"$sv"/supervise/ok ||
-                       sv restart "$sv"
-                fi
+               test ! -x "$tool"/etc/sv/"$sv"/configure ||
+               "$tool"/etc/sv/"$sv"/configure
+               ln -fns ../sv/"$sv" /etc/service/"$sv"
+               eval local sv_status=\"\${sv_status_$sv_hash-}\"
+               case $sv_status in
+                ("") sv start "$sv";;
+                (run:*) sv restart "$sv";;
+                esac
         done
  }
 rule_ssh_configure () {