rename /run/service-state to /run/services/outputs
This commit is contained in:
parent
8578a554c7
commit
3c950704e1
8 changed files with 43 additions and 8 deletions
21
NEWS
21
NEWS
|
@ -48,4 +48,25 @@ them afterwards as though they were "out of tree". Refer to commit
|
||||||
b9c0d93670275e69df24902b05bf4aa4f0fcbe96 for a fuller explanation
|
b9c0d93670275e69df24902b05bf4aa4f0fcbe96 for a fuller explanation
|
||||||
of how this simplifies things.
|
of how this simplifies things.
|
||||||
|
|
||||||
|
2024-02-13
|
||||||
|
|
||||||
|
So that we can be more consistent about services that would like their
|
||||||
|
state to be preserved across boots (assuming a writable filesystem)
|
||||||
|
these changes have been made
|
||||||
|
|
||||||
|
* /run/service-state has been moved to /run/services/outputs
|
||||||
|
to better reflect what it's used for
|
||||||
|
* /run/services/state is either a symlink to /persist/services/state
|
||||||
|
(if there's a writeable fs on /persist) or a directory (if there
|
||||||
|
isn't)
|
||||||
|
|
||||||
|
The `output` and `mkoutputs` functions defined by ${serviceFns}
|
||||||
|
have been updated, so unless your services are hardcoding service-state
|
||||||
|
then the change should be seamless
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
21:02:51 GMT 2024
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,6 @@ let
|
||||||
script = callPackage ./acquire-wan-address.nix { };
|
script = callPackage ./acquire-wan-address.nix { };
|
||||||
in longrun {
|
in longrun {
|
||||||
inherit name;
|
inherit name;
|
||||||
run = "${script} /run/service-state/${client.name} $(output ${interface} ifname)";
|
run = "${script} $SERVICE_OUTPUTS/${client.name} $(output ${interface} ifname)";
|
||||||
dependencies = [ client interface ];
|
dependencies = [ client interface ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ in longrun {
|
||||||
inherit name;
|
inherit name;
|
||||||
notification-fd = 10;
|
notification-fd = 10;
|
||||||
run = ''
|
run = ''
|
||||||
export SERVICE_STATE=/run/service-state/${name}
|
export SERVICE_STATE=$SERVICE_OUTPUTS/${name}
|
||||||
${odhcp6c}/bin/odhcp6c -s ${odhcp-script} -e -v -p /run/${name}.pid -P0 $(output ${interface} ifname)
|
${odhcp6c}/bin/odhcp6c -s ${odhcp-script} -e -v -p /run/${name}.pid -P0 $(output ${interface} ifname)
|
||||||
)
|
)
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -11,6 +11,6 @@ let
|
||||||
script = callPackage ./acquire-delegated-prefix.nix { };
|
script = callPackage ./acquire-delegated-prefix.nix { };
|
||||||
in longrun {
|
in longrun {
|
||||||
inherit name;
|
inherit name;
|
||||||
run = "${script} /run/service-state/${client.name} $(output ${interface} ifname)";
|
run = "${script} $SERVICE_OUTPUTS/${client.name} $(output ${interface} ifname)";
|
||||||
dependencies = [ client interface ];
|
dependencies = [ client interface ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,8 +22,15 @@ mount -t tmpfs none /tmp
|
||||||
mkdir /dev/pts
|
mkdir /dev/pts
|
||||||
mount -t devpts none /dev/pts
|
mount -t devpts none /dev/pts
|
||||||
|
|
||||||
mkdir -m 0751 /run/service-state
|
mkdir -m 0751 -p /run/services/outputs
|
||||||
chgrp system /run/service-state
|
chgrp system /run/services/outputs
|
||||||
|
|
||||||
|
if test -d /persist; then
|
||||||
|
mkdir -m 0751 -p /persist/services/state
|
||||||
|
(cd /run/services && ln -s ../../persist/services/state .)
|
||||||
|
else
|
||||||
|
mkdir -m 0751 -p /run/services/state
|
||||||
|
fi
|
||||||
|
|
||||||
### If your services are managed by s6-rc:
|
### If your services are managed by s6-rc:
|
||||||
### (replace /run/service with your scandir)
|
### (replace /run/service with your scandir)
|
||||||
|
|
|
@ -15,6 +15,6 @@ for i in run notification-fd up down consumer-for producer-for pipeline-name ; d
|
||||||
test -n "$(printenv $i)" && (echo "$(printenv $i)" > $out/${name}/$i)
|
test -n "$(printenv $i)" && (echo "$(printenv $i)" > $out/${name}/$i)
|
||||||
done
|
done
|
||||||
|
|
||||||
( cd $out && ln -s /run/service-state/${name} ./.outputs )
|
( cd $out && ln -s /run/services/outputs/${name} ./.outputs )
|
||||||
for i in $out/${name}/{down,up,run} ; do test -f $i && chmod +x $i; done
|
for i in $out/${name}/{down,up,run} ; do test -f $i && chmod +x $i; done
|
||||||
true
|
true
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (builtins) concatStringsSep;
|
inherit (builtins) concatStringsSep;
|
||||||
prefix = "/run/service-state";
|
prefix = "/run/services/outputs";
|
||||||
output = service: name: "${prefix}/${service.name}/${name}";
|
output = service: name: "${prefix}/${service.name}/${name}";
|
||||||
serviceScript = commands : ''
|
serviceScript = commands : ''
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
|
@ -2,8 +2,15 @@
|
||||||
writeText "service-fns.sh" ''
|
writeText "service-fns.sh" ''
|
||||||
output() { cat $1/.outputs/$2; }
|
output() { cat $1/.outputs/$2; }
|
||||||
output_path() { echo $(realpath $1/.outputs)/$2; }
|
output_path() { echo $(realpath $1/.outputs)/$2; }
|
||||||
|
SERVICE_OUTPUTS=/run/services/outputs
|
||||||
|
SERVICE_STATE=/run/services/state
|
||||||
mkoutputs() {
|
mkoutputs() {
|
||||||
d=/run/service-state/$1
|
d=$SERVICE_OUTPUTS/$1
|
||||||
|
mkdir -m 2751 -p $d && chown root:system $d
|
||||||
|
echo $d
|
||||||
|
}
|
||||||
|
mkstate() {
|
||||||
|
d=$SERVICE_STATE/$1
|
||||||
mkdir -m 2751 -p $d && chown root:system $d
|
mkdir -m 2751 -p $d && chown root:system $d
|
||||||
echo $d
|
echo $d
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue