Hi Danny,

Danny Milosavljevic <dan...@friendly-machines.com> writes:

> I've now implemented the relevant parts of fuser in guile, see
> <https://issues.guix.gnu.org/78051>.  I've tested it as a standalone
> module and it seems to work fine.  However, I need help to integrate
> something like that into guix (and/or shepherd, hmm).

I think the very first step, before we can put these debugging helpers
to good use, is to reproduce the problem in a VM.

You might have seen <https://issues.guix.gnu.org/77086>.  The problem is
that not everyone experiences the problem; in particular, the
“root-unmount” system test passes.

> Does shepherd use threads, too?

No.

> 1. sudo ./pre-inst-env guix system reconfigure /etc/config.scm
>    doesn't use my channels, so I can't actually use my config.scm .
>    How do I make that work?

You could pass -L flags pointing to a checkout of the channel(s) you
need.  Or use:

  guix time-machine -C channels.scm --url=/path/to/guix/checkout

> 2. How do I test mount, umount, ioctl etc ? It seems the regular guile
>    doesn't have it.

(guix build syscalls) has everything.

>    How do I get a repl to the irregular guile?
>    I have put (shepherd service repl) into my system shepherd a long
>    time ago, now what?
>    /var/run/shepherd/repl , aha

/var/run/shepherd/repl is a Unix-domain socket you can connect to (with
socat or whatever) to get a REPL.

> 3. How do I replace the stop method of an existing shepherd service
>    on-the-fly using the shepherd repl?

What do you want to replace exactly?  You can ‘set!’ global bindings.
You could do (at your own risk):

  (struct-set! (lookup-service 'whatever) 8 new-stop-procedure)

Thanks,
Ludo’.

Reply via email to