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’.