unconditionally restart trigger services on liminix-rebuild
We call s6-rc -u -p default to restart/start the base services on a rebuild, otherwise services that are only in the new configuration won't come up. However, this stops any service started by a trigger. So, workaround is to restart the trigger service and expect it to restart the services it manages if they're needed
This commit is contained in:
parent
a192f08881
commit
4795dd05b7
5 changed files with 16 additions and 5 deletions
|
@ -9,6 +9,7 @@ let
|
|||
in longrun {
|
||||
name = "ifwait.${interface.name}";
|
||||
buildInputs = [ service ];
|
||||
isTrigger = true;
|
||||
run = ''
|
||||
${ifwait}/bin/ifwait -s ${service.name} $(output ${interface} ifname) ${state}
|
||||
'';
|
||||
|
|
|
@ -11,7 +11,7 @@ test -n "$contents" && for d in $contents; do
|
|||
touch $out/${name}/contents.d/$d
|
||||
done
|
||||
|
||||
for i in timeout-up timeout-down run notification-fd up down consumer-for producer-for pipeline-name ; do
|
||||
for i in timeout-up timeout-down run notification-fd up down consumer-for producer-for pipeline-name restart-on-upgrade; do
|
||||
test -n "$(printenv $i)" && (echo "$(printenv $i)" > $out/${name}/$i)
|
||||
done
|
||||
|
||||
|
|
|
@ -36,12 +36,14 @@ let
|
|||
, dependencies ? []
|
||||
, contents ? []
|
||||
, buildInputs ? []
|
||||
, isTrigger ? false
|
||||
} @ args:
|
||||
stdenvNoCC.mkDerivation {
|
||||
# we use stdenvNoCC to avoid generating derivations with names
|
||||
# like foo.service-mips-linux-musl
|
||||
inherit name serviceType up down run notification-fd
|
||||
producer-for consumer-for pipeline-name timeout-up timeout-down;
|
||||
restart-on-upgrade = isTrigger;
|
||||
buildInputs = buildInputs ++ dependencies ++ contents;
|
||||
dependencies = builtins.map (d: d.name) dependencies;
|
||||
contents = builtins.map (d: d.name) contents;
|
||||
|
|
|
@ -21,11 +21,16 @@ in stdenvNoCC.mkDerivation {
|
|||
if test -d $i; then
|
||||
for j in $i/* ; do
|
||||
if test -f $j/type ; then
|
||||
if test -e $j/restart-on-upgrade; then
|
||||
flag=force-restart
|
||||
else
|
||||
unset flag
|
||||
fi
|
||||
case $(cat $j/type) in
|
||||
longrun|oneshot)
|
||||
# s6-rc-update only wants oneshots in its
|
||||
# s6-rc-update only wants atomics in its
|
||||
# restarts file
|
||||
echo $(basename $j) " " $i >> $out/hashes
|
||||
echo $(basename $j) " " ''${flag-$i} >> $out/hashes
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
|
|
|
@ -12,8 +12,11 @@
|
|||
new-hashes (hashes-from-file new)]
|
||||
(with-open [f (io.open "/tmp/restarts" :w)]
|
||||
(each [n h (pairs old-hashes)]
|
||||
(when (not (= h (. new-hashes n)))
|
||||
(f:write (.. n " restart\n")))))))
|
||||
(let [new (. new-hashes n)]
|
||||
(when (or (= h "force-restart")
|
||||
(= new "force-restart")
|
||||
(not (= h new)))
|
||||
(f:write (.. n " restart\n"))))))))
|
||||
|
||||
(fn exec [text command]
|
||||
(io.write (.. text ": "))
|
||||
|
|
Loading…
Reference in a new issue