From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id eLksLnVQq170fAAA0tVLHw (envelope-from ) for ; Thu, 30 Apr 2020 22:25:57 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id WNqUJH5Qq170CwAA1q6Kng (envelope-from ) for ; Thu, 30 Apr 2020 22:26:06 +0000 Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:470:142::17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id A693A94227B for ; Thu, 30 Apr 2020 22:26:05 +0000 (UTC) Received: from localhost ([::1]:43938 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jUHd7-00054u-Mg for larch@yhetil.org; Thu, 30 Apr 2020 18:26:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56552) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jUHcx-00054V-FU for guix-devel@gnu.org; Thu, 30 Apr 2020 18:25:57 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:59963) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jUHcu-0006pV-5g; Thu, 30 Apr 2020 18:25:52 -0400 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=35772 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jUHct-0004ao-FQ; Thu, 30 Apr 2020 18:25:51 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: guix-devel@gnu.org, Jan Nieuwenhuizen Subject: Re: 20/36: system: hurd: Add the Shepherd. References: <20200427101927.7020.76060@vcs0.savannah.gnu.org> <20200427101948.9B2B220A5E@vcs0.savannah.gnu.org> X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 13 =?utf-8?Q?Flor=C3=A9al?= an 228 de la =?utf-8?Q?R?= =?utf-8?Q?=C3=A9volution?= X-PGP-Key-ID: 0x090B11993D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-pc-linux-gnu Date: Fri, 01 May 2020 00:25:49 +0200 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)") Message-ID: <875zdglifm.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Scanner: scn0 X-Spam-Score: -1.01 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of guix-devel-bounces@gnu.org designates 2001:470:142::17 as permitted sender) smtp.mailfrom=guix-devel-bounces@gnu.org X-Scan-Result: default: False [-1.01 / 13.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; GENERIC_REPUTATION(0.00)[-0.49477580903609]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2001:470:142::/48:c]; IP_REPUTATION_HAM(0.00)[asn: 22989(0.17), country: US(-0.00), ip: 2001:470:142::17(-0.49)]; DWL_DNSWL_FAIL(0.00)[2001:470:142::17:server fail]; MX_GOOD(-0.50)[cached: eggs.gnu.org]; RCPT_COUNT_TWO(0.00)[2]; MAILLIST(-0.20)[mailman]; FORGED_RECIPIENTS_MAILLIST(0.00)[]; RCVD_IN_DNSWL_FAIL(0.00)[2001:470:142::17:server fail]; RCVD_TLS_LAST(0.00)[]; R_DKIM_NA(0.00)[]; ASN(0.00)[asn:22989, ipnet:2001:470:142::/48, country:US]; MID_RHS_MATCH_FROM(0.00)[]; TAGGED_FROM(0.00)[larch=yhetil.org]; ARC_NA(0.00)[]; RCVD_COUNT_FIVE(0.00)[5]; FROM_NEQ_ENVFROM(0.00)[ludo@gnu.org,guix-devel-bounces@gnu.org]; FROM_HAS_DN(0.00)[]; URIBL_BLOCKED(0.00)[gnu.org:email]; MIME_GOOD(-0.10)[text/plain]; MIME_TRACE(0.00)[0:+]; DMARC_NA(0.00)[gnu.org]; HAS_LIST_UNSUB(-0.01)[]; FORGED_SENDER_MAILLIST(0.00)[] X-TUID: 7MyFmpJGzjIK guix-commits@gnu.org skribis: > commit bb17242a511014e1691d494b17152865db0580e0 > Author: Jan (janneke) Nieuwenhuizen > AuthorDate: Tue Apr 7 08:03:03 2020 +0200 > > system: hurd: Add the Shepherd. >=20=20=20=20=20 > This starts console and ttys using the Shepherd. Shepherd is not run= ning as > PID 1 yet, its started from `rc'. >=20=20=20=20=20 > * 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))) >=20=20 > (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")) >=20=20 > + (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=E2=80=99ve defined services for Hurd-specific things like the console client, you could very much write: (operating-system ;; =E2=80=A6 (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 =E2=80=98essential-services=E2=80=99 an= d =E2=80=98services=E2=80=99 to pick the right default as a function of the chosen kernel.) and then do: guix system build --target=3Di586-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=E2=80=99t need =E2=80=98cross-hurd-image=E2=80=99 an= y longer and you can instead run: guix system vm-image --target=3Di586-pc-gnu the-config-above.scm to achieve the same result. But! There=E2=80=99s one missing bit: a Hurdish grub.cfg. I think that ca= n be hacked in (gnu bootloader grub), by inheriting from =E2=80=98grub-bootloade= r=E2=80=99 and providing a custom =E2=80=98configuration-file-generator=E2=80=99 field= and maybe =E2=80=98installer=E2=80=99 as well. Thus, (gnu system hurd) would be left with nothing but the definitions of =E2=80=98%base-services/hurd=E2=80=99, =E2=80=98%base-packages/hurd=E2= =80=99, and so on. =E2=80=98hurd-essential-services=E2=80=99 could maybe go to (gnu services h= urd). But I wonder if I=E2=80=99m missing something, WDYT? Thanks for the exciting developments again! :-) Ludo=E2=80=99.