unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Attila Lendvai <attila@lendvai.name>
To: "Felix Lechner" <felix.lechner@lease-up.com>,
	"Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel <guix-devel@gnu.org>
Subject: Re: shepherd GEXP module import mystery
Date: Tue, 28 Nov 2023 12:16:56 +0000	[thread overview]
Message-ID: <IoP2DB6YqPWNnyKd7ADAfN879uZqXslS2dp754IRHiJlhtj64oUHIB1GFapaMz15ASTFeB20Sr1PLtktYP-v9MHZgcwTaa5C-_GK4vZpHRw=@lendvai.name> (raw)
In-Reply-To: <87ttp6lqon.fsf@lease-up.com>

[-- Attachment #1: Type: text/plain, Size: 4870 bytes --]

hi Felix, Ludo,


> > a start GEXP of my service sees bindings that come from the module
> > called (shepherd support), but i have no idea who and where imports
> > that module.
> 
> 
> Without code it's hazardous to speculate, but could the Guix service
> (gnu service mcron) cause that issue when it is being logged?


unfortunately it's a complex web of stuff, but i managed to make a small reproducer that is attaced.

it can be run with:

$(guix system --no-graphic vm reproducer.scm)

and in the VM (must use fold, because it's a dumb terminal):

cat /var/log/messages | fold -150

to my surprise this one does list (shepherd support) in the module-use list. and i realized why: the logging infrastructure somewhere siently truncates the lines, and in my original case that module was chopped off.

not that i understand everything here... e.g. why are there several (guix build utils) modules?

*** reproducer gexp speaking, current module: #<module (#{g107}#) 7f5b49cf61e0>,
module-uses: (
#<interface (guile) 7f5b4b652dc0>
#<interface (oop goops) 7f5b4a256c80>
#<interface (shepherd service) 7f5b49cf3c80>
#<interface (srfi srfi-34)
#<interface (system repl error-handling) 7f5b49d9ab40> #<custom-interface (guix build utils) 7f5b49d9a140>
#<interface (guix build syscalls) 7f5b49495e60> #<custom-interface (guix build utils) 7f5b49495500> #<custom-interface (gnu build file-systems) 7f5b49523460>
#<interface (gnu system file-systems) 7f5b494deb40>
#<custom-interface (guix build utils) 7f5b495233c0>
#<custom-interface (gnu build file-systems) 7f5b49523320>
#<custom-interface (guix build utils) 7f5b49523280>
#<custom-interface (gnu build file-systems) 7f5b495231e0>
#<custom-interface (guix build utils) 7f5b49523140>
#<custom-interface (gnu build file-systems) 7f5b495230a0>
#<custom-interface (guix build utils) 7f5b49523000>
#<custom-interface (guix build utils) 7f5b4954df00>
#<custom-interface (guix build utils) 7f5b4954de60>
#<custom-interface (guix build utils) 7f5b4954ddc0>
#<interface (gnu build activation) 7f5b4954db40>
#<interface (gnu system accounts) 7f5b4954d8c0>
#<custom-interface (guix build utils) 7f5b4b5e6000>
#<custom-interface (guix build utils) 7f5b49453f00>
#<interface (gnu build linux-boot) 7f5b4b5e6e60>
#<custom-interface (guix build utils) 7f5b49453e60>
#<interface (ice-9 popen) 7f5b49453be0>
#<interface (ice-9 rdelim) 7f5b4a210f00>
#<interface (ice-9 match) 7f5b4b652460>
#<custom-interface (guix build utils) 7f5b49453b40>
#<interface (srfi srfi-1) 7f5b4b692320>
#<interface (gnu build shepherd) 7f5b494538c0>
#<interface (rnrs bytevectors) 7f5b4b6def00>
#<interface (rnrs io ports) 7f5b49d18dc0>
#<custom-interface (guix build utils) 7f5b49453140>
#<custom-interface (guix build utils) 7f5b494530a0>
#<custom-interface (guix build utils) 7f5b49453000>
#<custom-interface (guix build utils) 7f5b497f6f00>
#<custom-interface (guix build utils) 7f5b497f6e60>
#<custom-interface (guix build utils) 7f5b497f6dc0>
#<custom-interface (guix build utils) 7f5b497f6d20>
#<custom-interface (guix build utils) 7f5b497f6c80>
#<custom-interface (guix build utils) 7f5b497f6be0>
#<custom-interface (guix build utils) 7f5b497f6b40>
#<custom-interface (guix build utils) 7f5b497f6aa0>
#<custom-interface (guix build utils) 7f5b497f6a00>
#<custom-interface (guix build utils) 7f5b497f6960>
#<custom-interface (guix build utils) 7f5b497f68c0>
#<custom-interface (guix build utils) 7f5b497f6820>
#<custom-interface (guix build utils) 7f5b497f6780>
#<custom-interface (guix build utils) 7f5b497f66e0>
#<interface (srfi srfi-26) 7f5b4a64ff00>
#<custom-interface (shepherd support) 7f5b497f6640>
#<custom-interface (guix build utils) 7f5b497f65a0>
#<interface (ip addr) 7f5b497f6280>
#<interface (ip link) 7f5b497f6000>
#<interface (ip route) 7f5b49772820>
#<interface (ice-9 format) 7f5b4b7b86e0>),
ringbuffer: #<procedure ring-buffer (size)>


so, the only mystery left is that i still don't know where it is imported into the unnamed package in which the GEXPs are compiled/loaded, and whether that is intended.

maybe it's part of the shepherd API that (shepherd support) is made available for the service GEXPs? looking at the public definitions in (shepherd support), it's not obvious that those are meant to be available for the users of shepherd, though.

Ludo?


> In my code tree, which is a month behind, (gnu services mcron) is the
> only Guix service that imports (shepherd support).


it's a good hint, but that could only cause this if all the service GEXPs were loaded into the same module, but that would have already broken things in countless other ways.

-- 
• attila lendvai
• PGP: 963F 5D5F 45C7 DFCD 0A39
--
“We are products of our past, but we don't have to be prisoners of it.”
	— Rick Warren (1954–)

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: reproducer.scm --]
[-- Type: text/x-scheme; name=reproducer.scm, Size: 1528 bytes --]

;; Run with something like this:
;; $(guix system --no-graphic vm reproducer.scm)

(define-module (reproducer)
  #:use-module (gnu system)
  #:use-module (gnu system shadow)
  #:use-module (gnu system nss)
  #:use-module (gnu system vm)
  #:use-module (gnu tests)
  #:use-module (gnu services)
  #:use-module (gnu services base)
  #:use-module (gnu services dbus)
  #:use-module (gnu services shepherd)
  #:use-module (gnu packages admin)
  #:use-module (gnu packages base)
  #:use-module (gnu packages bash)
  #:use-module (gnu packages certs)
  #:use-module (gnu packages package-management)
  #:use-module (gnu packages linux)
  #:use-module (guix gexp)
  #:use-module (guix git)
  #:use-module (guix git-download)
  #:use-module (guix store)
  #:use-module (guix modules)
  #:use-module (guix packages)
  #:use-module (srfi srfi-1)
  #:use-module (ice-9 match))

(operating-system
  (inherit %simple-os)
  (services
   (cons*
    (simple-service
     'reproducer
     shepherd-root-service-type
     (list
      (shepherd-service
       (requirement '(file-systems))
       (provision '(reproducer))
       (documentation "")
       (start
        #~(begin
            (lambda _
              (format #t "*** reproducer gexp speaking, \
current module: ~A, \
module-uses: ~A, \
ringbuffer: ~A~%"
                      (current-module)
                      (module-uses (current-module))
                      (and=> (module-variable (current-module) 'ring-buffer) variable-ref))
              0))))))
    %base-services)))

  reply	other threads:[~2023-11-28 12:18 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-27 22:52 shepherd GEXP module import mystery Attila Lendvai
2023-11-27 23:30 ` Felix Lechner via Development of GNU Guix and the GNU System distribution.
2023-11-28 12:16   ` Attila Lendvai [this message]
2023-12-05 21:38     ` Attila Lendvai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='IoP2DB6YqPWNnyKd7ADAfN879uZqXslS2dp754IRHiJlhtj64oUHIB1GFapaMz15ASTFeB20Sr1PLtktYP-v9MHZgcwTaa5C-_GK4vZpHRw=@lendvai.name' \
    --to=attila@lendvai.name \
    --cc=felix.lechner@lease-up.com \
    --cc=guix-devel@gnu.org \
    --cc=ludo@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).