X-Git-Url: https://git.cyclocoop.org/?p=lhc%2Fateliers.git;a=blobdiff_plain;f=vm_hosted;h=3ac6cedb176debb6697a9bf481c4bc51fc7728d2;hp=b9275fa05a2ba53560d5a983e115236c5d785294;hb=b27661cf8e40872543f86a00922d18573ef83612;hpb=7c02698fa11a13fd332c2e95986339241aaa79a6 diff --git a/vm_hosted b/vm_hosted index b9275fa..3ac6ced 100755 --- 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