unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Ludovic Courtès" <ludo@gnu.org>
To: guix-devel@gnu.org, Jan Nieuwenhuizen <janneke@gnu.org>
Subject: Re: 20/36: system: hurd: Add the Shepherd.
Date: Fri, 01 May 2020 00:25:49 +0200	[thread overview]
Message-ID: <875zdglifm.fsf@gnu.org> (raw)
In-Reply-To: <20200427101948.9B2B220A5E@vcs0.savannah.gnu.org> (guix-commits@gnu.org's message of "Mon, 27 Apr 2020 06:19:48 -0400 (EDT)")

guix-commits@gnu.org skribis:

> commit bb17242a511014e1691d494b17152865db0580e0
> Author: Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
> AuthorDate: Tue Apr 7 08:03:03 2020 +0200
>
>     system: hurd: Add the Shepherd.
>     
>     This starts console and ttys using the Shepherd.  Shepherd is not running as
>     PID 1 yet, its started from `rc'.
>     
>     * gnu/system/hurd.scm (%base-packages/hurd): Add "shepherd".
>     (%base-services/hurd): New variable.
>     (%hurd-os): New variable.
>     (hurd-shepherd-services): New function.
>     (cross-hurd-image): Use them to generate an (unused and incomplete) ...
>     (shepherd.conf): Generate from services defined in
>     %hurd-os.
>     * gnu/packages/hurd.scm (hurd-rc-script): Do not start console, start the
>     shepherd instead.
>     (hurd)[arguments]: Create pty devices.
>     * gnu/system/hurd.scm (shepherd.conf): New file.

[...]

> +;; XXX: We will replace this by addding (gnu services shepherd).
> +(define shepherd-configuration-file
> +  (@@ (gnu services shepherd) shepherd-configuration-file))
> +
>  (define %base-packages/hurd
>    (list hurd bash coreutils file findutils grep sed
>          guile-3.0 guile-colorized guile-readline
> -        net-base inetutils less which))
> +        net-base inetutils less shepherd which))
> +
> +(define %base-services/hurd
> +  (list (service user-processes-service-type)
> +        (service hurd-console-service-type
> +                 (hurd-console-configuration (hurd hurd)))
> +        (service hurd-ttys-service-type
> +                 (hurd-ttys-configuration (hurd hurd)))))
> +
> +(define %hurd-os
> +  (operating-system
> +    (host-name "guixygnu")
> +    (bootloader #f)
> +    (file-systems '())
> +    (timezone "GNUrope")
> +    (services %base-services/hurd)))
> +
> +(define (hurd-shepherd-services os)
> +  (append-map hurd-service->shepherd-service (operating-system-services os)))
>  
>  (define* (cross-hurd-image #:key (hurd hurd) (gnumach gnumach))
>    "Return a cross-built GNU/Hurd image."
> @@ -136,6 +163,10 @@ if [ -f \"$GUIX_PROFILE/etc/profile\" ]; then
>    . \"$GUIX_PROFILE/etc/profile\"
>  fi\n"))
>  
> +  (define shepherd.conf
> +    (with-parameters ((%current-target-system "i586-pc-gnu"))
> +      (shepherd-configuration-file (hurd-shepherd-services %hurd-os))))

This looks like an intermediate before fully using the service/OS
framework, but I wonder how much it helps.

The way I see it, now that you’ve defined services for Hurd-specific
things like the console client, you could very much write:

  (operating-system
    ;; …
    (kernel gnumach)
    (hurd hurd)  ;<- we probably need this new field
    (essential-services (hurd-essential-services this-operating-system))
    (services %base-hurd-services))

(Eventually we can even arrange for ‘essential-services’ and ‘services’
to pick the right default as a function of the chosen kernel.)

and then do:

  guix system build --target=i586-pc-gnu the-config-above.scm

Assuming system cross-compilation works as advertised :-), it should
cross-compile the whole system.

At that stage, you don’t need ‘cross-hurd-image’ any longer and you can
instead run:

  guix system vm-image --target=i586-pc-gnu the-config-above.scm

to achieve the same result.

But!  There’s one missing bit: a Hurdish grub.cfg.  I think that can be
hacked in (gnu bootloader grub), by inheriting from ‘grub-bootloader’
and providing a custom ‘configuration-file-generator’ field and maybe
‘installer’ as well.

Thus, (gnu system hurd) would be left with nothing but the definitions
of ‘%base-services/hurd’, ‘%base-packages/hurd’, and so on.
‘hurd-essential-services’ could maybe go to (gnu services hurd).

But I wonder if I’m missing something, WDYT?

Thanks for the exciting developments again!  :-)

Ludo’.


  parent reply	other threads:[~2020-04-30 22:25 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20200427101927.7020.76060@vcs0.savannah.gnu.org>
     [not found] ` <20200427101942.B725620A5E@vcs0.savannah.gnu.org>
2020-04-30 21:48   ` 02/36: gnu: guix: Use gnutls-3.6.13 when cross-compiling Ludovic Courtès
2020-05-01  7:22     ` Jan Nieuwenhuizen
     [not found] ` <20200427101943.A4BDD20A5E@vcs0.savannah.gnu.org>
2020-04-30 21:50   ` 05/36: vm: Make the device node procedure a parameter Ludovic Courtès
2020-05-01  6:07     ` Jan Nieuwenhuizen
2020-05-03 20:34       ` Ludovic Courtès
     [not found] ` <20200427101943.F251E20A5E@vcs0.savannah.gnu.org>
2020-04-30 21:51   ` 06/36: gnu: hurd: Fix references to /bin/w Ludovic Courtès
2020-05-01  6:07     ` Jan Nieuwenhuizen
     [not found] ` <20200427101944.46D0C20A5E@vcs0.savannah.gnu.org>
2020-04-30 21:52   ` 07/36: gnu: hurd: Use default Qemu guest ip: 10.0.2.15 Ludovic Courtès
2020-05-01  6:07     ` Jan Nieuwenhuizen
     [not found] ` <20200427101944.86DE020BC2@vcs0.savannah.gnu.org>
2020-04-30 21:53   ` 08/36: gnu: hurd: Add NFS support Ludovic Courtès
2020-05-01  6:14     ` Jan Nieuwenhuizen
     [not found] ` <20200427101945.023D020BC4@vcs0.savannah.gnu.org>
2020-04-30 21:55   ` 09/36: gnu: Add libtirpc/hurd Ludovic Courtès
2020-05-01  6:15     ` Jan Nieuwenhuizen
2020-04-30 21:56 ` branch wip-hurd-vm created (now fdb35e3) Ludovic Courtès
2020-05-01  7:02   ` Jan Nieuwenhuizen
     [not found] ` <20200427101946.414C420A5E@vcs0.savannah.gnu.org>
2020-04-30 22:03   ` 13/36: services: Add hurd-console-service-type Ludovic Courtès
2020-05-01 15:16     ` Jan Nieuwenhuizen
2020-05-01 20:03       ` Jan Nieuwenhuizen
2020-05-03 20:39       ` Ludovic Courtès
2020-05-03 20:55         ` Jan Nieuwenhuizen
     [not found] ` <20200427101947.E79D320A5E@vcs0.savannah.gnu.org>
2020-04-30 22:07   ` 18/36: services: hurd: Add dummy loopback Ludovic Courtès
2020-05-01 15:15     ` Jan Nieuwenhuizen
2020-05-03 20:50       ` Ludovic Courtès
2020-05-03 22:15         ` Jan Nieuwenhuizen
2020-05-05  9:23           ` Ludovic Courtès
2020-05-05  9:38             ` Vincent Legoll
2020-05-06 14:06               ` Ludovic Courtès
2020-05-05 12:46             ` Jan Nieuwenhuizen
2020-05-06 14:09               ` Ludovic Courtès
     [not found] ` <20200427101948.9B2B220A5E@vcs0.savannah.gnu.org>
2020-04-30 22:25   ` Ludovic Courtès [this message]
2020-05-01 10:28     ` 20/36: system: hurd: Add the Shepherd Jan Nieuwenhuizen

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=875zdglifm.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=guix-devel@gnu.org \
    --cc=janneke@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).