[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#41541] [PATCH 7/8] services: hurd: Add `hurd-etc-service'.
From: |
Jan Nieuwenhuizen |
Subject: |
[bug#41541] [PATCH 7/8] services: hurd: Add `hurd-etc-service'. |
Date: |
Sat, 06 Jun 2020 16:31:22 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Ludovic Courtès writes:
> "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org> skribis:
>
>> * gnu/services/hurd.scm: New file.
>> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
>> * doc/guix.texi (Hurd Services): Document it.
>
> [...]
As discussed on IRC: dropped altogether, replaced with attached patch.
>> +@deffn {Scheme Procedure} hurd-etc-service @var{os}
>> +This service implements a minimal @code{etc-service}, adding some
>> +specifics for the Hurd.
>> +
>> +It is part of the @code{hurd-default-essential-services}.
>> +@end deffn
>
> The ‘hurd-default-essential-services’ bit is not in this patch, though.
Hmm. I think it's complicated...No, it was complicated. ETC depends on
%activatation which depends on %boot, but those now work; so I can
reorder!
Reordered, added to hurd-default-essential-services in compliance with
the documentation.
>> +;;; The ETC service for the Hurd.
>
> s/ETC/etc/
OK. Eh... ok. ;-)
>> +(define (hurd-etc-service os)
[..]
>> + (etc-service
>> + `(("services" ,(file-append net-base "/etc/services"))
>> + ("protocols" ,(file-append net-base "/etc/protocols"))
>> + ("profile" ,profile)
>> + ("hostname" ,(plain-file "hostname" (operating-system-host-name os)))
>> + ("login" ,(file-append hurd "/etc/login"))
>> + ("motd" ,(file-append hurd "/etc/motd"))))))
>
> Why again does it need to be different from that on GNU/Linux?
Good question! Yeah...this started out as a more formalized copy of the
gnu/system/hurd.scm hack and it used to be complicated; services didn't
cross build, for example.
Also, it felt good to start really minimalistic, especially because of
the cross build troubles.
I seemed to remember that on top of that there was a Hurd build problem,
but I think that must have been sudo and it's easy to disable.
> Intuitively it should be the same, but it’s fine to keep this one,
> perhaps with a FIXME, until we’ve figured out what to do to use the same
> /etc service in both cases.
Phew, I didn't expect so much work; but also not so much cleanup so
soon.
Thanks, Janneke
>From 4cef6e73ce9fd137640c1c00f98958cdc41dda90 Mon Sep 17 00:00:00 2001
From: "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org>
Date: Sat, 25 Apr 2020 11:55:56 +0200
Subject: [PATCH] services: Support etc-service for the Hurd.
* gnu/system.scm (operating-system-etc-service): Cater for missing nsswitch
and missing sudoers-file. For the Hurd, add "login" and "motd".
(hurd-default-essential-services): Add operating-system-etc-service.
---
gnu/system.scm | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/gnu/system.scm b/gnu/system.scm
index ac64dfcff6..0df642679d 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -611,6 +611,7 @@ bookkeeping."
(list (service system-service-type '())
%boot-service
%activation-service
+ (operating-system-etc-service os)
(service profile-service-type '())))
(define* (operating-system-services os)
@@ -716,7 +717,7 @@ This is the GNU system. Welcome.\n")
(define* (operating-system-etc-service os)
"Return a <service> that builds containing the static part of the /etc
directory."
- (let ((login.defs
+ (let* ((login.defs
(plain-file "login.defs"
(string-append
"# Default paths for non-login shells started by
su(1).\n"
@@ -727,10 +728,13 @@ directory."
"/run/current-system/profile/bin:"
"/run/current-system/profile/sbin\n")))
- (issue (plain-file "issue" (operating-system-issue os)))
- (nsswitch (plain-file "nsswitch.conf"
- (name-service-switch->string
- (operating-system-name-service-switch os))))
+ (hurd (operating-system-hurd os))
+ (issue (plain-file "issue" (operating-system-issue os)))
+ (nsswitch (operating-system-name-service-switch os))
+ (nsswitch (and nsswitch
+ (plain-file "nsswitch.conf"
+ (name-service-switch->string nsswitch))))
+ (sudoers (operating-system-sudoers-file os))
;; Startup file for POSIX-compliant login shells, which set system-wide
;; environment variables.
@@ -820,7 +824,7 @@ fi\n")))
("rpc" ,(file-append net-base "/etc/rpc"))
("login.defs" ,#~#$login.defs)
("issue" ,#~#$issue)
- ("nsswitch.conf" ,#~#$nsswitch)
+ ,@(if nsswitch `(("nsswitch.conf" ,#~#$nsswitch)) '())
("profile" ,#~#$profile)
("bashrc" ,#~#$bashrc)
("hosts" ,#~#$(or (operating-system-hosts-file os)
@@ -836,7 +840,9 @@ fi\n")))
("timezone" ,(plain-file "timezone" (operating-system-timezone os)))
("localtime" ,(file-append tzdata "/share/zoneinfo/"
(operating-system-timezone os)))
- ("sudoers" ,(operating-system-sudoers-file os))))))
+ ,@(if sudoers `(("sudoers" ,sudoers)) '())
+ ,@(if hurd `(("login" ,(file-append hurd "/etc/login"))
+ ("motd" ,(file-append hurd "/etc/motd"))))))))
(define %root-account
;; Default root account.
--
2.26.2
--
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com