From: Jan Nieuwenhuizen <janneke@gnu.org>
To: Mathieu Othacehe <othacehe@gnu.org>
Cc: 41541@debbugs.gnu.org
Subject: bug#41541: merge wip-hurd-vm
Date: Wed, 03 Jun 2020 22:27:03 +0200 [thread overview]
Message-ID: <874krrrj3c.fsf@gnu.org> (raw)
In-Reply-To: <87v9k85fdc.fsf@gnu.org> (Mathieu Othacehe's message of "Wed, 03 Jun 2020 17:38:23 +0200")
Mathieu Othacehe writes:
Hi!
>> Legend (in order of merge'ability / is there a convention for this?):
>>
>> [M] Mathieu
>> [L] Ludo
>> g good to go LGTM'd
>> t trivial (self-LGTM :-)
>> . direct dependency of/partially superseded by a LGTM
>>
>> ack or review needed
>> ! troublesome
>
> Hehe, nice one :)
>
>> ! ee81319934 image: Support extra-directives, add hurd-directives.
>
> This one now only contains the hurd symlink, that you could be done at
> activation I guess.
I never believed that could work, but to my own eh, ..., I found a way
to make it work. We "only" need to make sure that /hurd/startup etc.
are found by substitute*'ing some more, and create the symlink.
Reverting that patch and using this diff
--8<---------------cut here---------------start------------->8---
diff --git a/gnu/build/hurd-boot.scm b/gnu/build/hurd-boot.scm
index 20d012fbfa..31260b52a1 100644
--- a/gnu/build/hurd-boot.scm
+++ b/gnu/build/hurd-boot.scm
@@ -45,6 +45,35 @@ Return the value associated with OPTION, or #f on failure."
(lambda (arg)
(substring arg (+ 1 (string-index arg #\=)))))))
+;; XXX FIXME c&p from guix/utils.scm
+(define (readlink* file)
+ "Call 'readlink' until the result is not a symlink."
+ (define %max-symlink-depth 50)
+
+ (let loop ((file file)
+ (depth 0))
+ (define (absolute target)
+ (if (absolute-file-name? target)
+ target
+ (string-append (dirname file) "/" target)))
+
+ (if (>= depth %max-symlink-depth)
+ file
+ (call-with-values
+ (lambda ()
+ (catch 'system-error
+ (lambda ()
+ (values #t (readlink file)))
+ (lambda args
+ (let ((errno (system-error-errno args)))
+ (if (or (= errno EINVAL))
+ (values #f file)
+ (apply throw args))))))
+ (lambda (success? target)
+ (if success?
+ (loop (absolute target) (+ depth 1))
+ file))))))
+
(define* (make-hurd-device-nodes #:optional (root "/"))
"Make some of the nodes needed on GNU/Hurd."
(define (scope dir)
@@ -199,18 +228,25 @@ XXX TODO: use Linux xattr/setxattr to remove (settrans in) /libexec/RUNSYSTEM
(format #t "Setting-up essential translators...\n")
(set-hurd-device-translators)
- (format #t "Starting pager...\n")
- (unless (zero? (system* "/hurd/mach-defpager"))
- (format #t "FAILED...Good luck!\n"))
-
(let* ((args (command-line))
(system (find-long-option "--system" args))
(to-load (find-long-option "--load" args)))
+
(false-if-exception (delete-file "/run/current-system"))
(format #t "Setting current system...~a\n" system)
(mkdir-p "/run")
(symlink system "/run/current-system")
+
+ (false-if-exception (delete-file "/hurd"))
+ (let ((hurd/hurd (readlink* (string-append system "/profile/hurd"))))
+ (symlink hurd/hurd "/hurd"))
+
+ (format #t "Starting pager...\n")
+ (unless (zero? (system* "/hurd/mach-defpager"))
+ (format #t "FAILED...Good luck!\n"))
+
(cond ((member "--repl" args)
+ (format #t "Starting repl...\n")
(start-repl))
(to-load
(format #t "loading '~a'...\n" to-load)
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 9dc03c6c9c..087574cd61 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -390,6 +390,8 @@ PATH=@PATH@
fsck --yes --force /
fsysopts / --writable
+
+# Note: this /hurd/ gets substituted
settrans -c /servers/socket/1 /hurd/pflocal
# parse multiboot arguments
@@ -421,9 +423,18 @@ exec ${system}/rc \"$@\"
(substitute* '("utils/uptime.sh")
(("/bin/w")
(string-append out "/bin/w")))
- (substitute* "daemons/console-run.c"
+ (substitute* '("boot/boot.c"
+ "daemons/console-run.c"
+ "startup/startup.c")
(("/hurd/")
(string-append out "/hurd/")))
+ (substitute* "hurd/paths.h"
+ (("_HURD_STARTUP\t")
+ (string-append "_HURD_STARTUP\t\"" out "\" "))
+ (("_HURD_PROC\t")
+ (string-append "_HURD_PROC\t\"" out "\" "))
+ (("_HURD_AUTH\t")
+ (string-append "_HURD_AUTH\t\"" out "\" ")))
(substitute* '("daemons/runsystem.sh"
"sutils/MAKEDEV.sh")
(("^PATH=.*")
--8<---------------cut here---------------end--------------->8---
produces a bootable VM. So...this could be great or maybe...well, what
do you think?
>> t 4479c1c1e3 linux-boot: Update 'make-hurd-device-nodes'.
>> [M] a17f91bd50 image: Add Hurd support.
>> t 7359403993 gnu: hurd: Update to upstream Hurd-reserved xattr index.
>> [L] 68a8a26a57 gnu: guile-static: Disable JIT on ARMv7.
>> [L] 220243a2c6 vm: Shared-store script runs that native QEMU and Bash.
>> [L] e3b6c5dce2 vm: <virtual-machine> compiler honors system and target.
>> [L] d43423f074 vm: 'qemu-image' preserves the cross-compilation target of the OS.
>> [L] c6ee3a059b vm: 'qemu-image' uses the native partitioning tools and bootloader.
>> [L] ab06638f57 vm: 'expression->derivation-in-linux-vm' always returns a native build.
>> [L] 113ba9d7a9 system: 'system-linux-image-file-name' takes an optional parameter.
>
> For the rest, maybe you could send a patch serie by email with all the
> patch that are tagged ' ' or '!'. This way we could proceed to a last
> review round?
Sure, that makes sense. I'll need some time to move this diff down the
tree and do some testing.
Greetings,
Janneke
--
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
next prev parent reply other threads:[~2020-06-03 20:29 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-26 14:21 bug#41541: merge wip-hurd-vm Jan Nieuwenhuizen
2020-05-27 10:01 ` Mathieu Othacehe
2020-05-27 11:11 ` Jan Nieuwenhuizen
2020-05-30 14:40 ` Jan Nieuwenhuizen
2020-06-02 8:48 ` Mathieu Othacehe
2020-06-02 9:24 ` Jan Nieuwenhuizen
2020-06-02 10:16 ` Mathieu Othacehe
2020-06-02 12:23 ` Jan Nieuwenhuizen
2020-06-02 12:40 ` Ludovic Courtès
2020-06-02 13:39 ` Jan Nieuwenhuizen
2020-06-03 9:18 ` Ludovic Courtès
2020-06-03 15:22 ` Jan Nieuwenhuizen
2020-06-03 15:38 ` Mathieu Othacehe
2020-06-03 20:27 ` Jan Nieuwenhuizen [this message]
2020-06-04 9:32 ` Ludovic Courtès
2020-06-04 11:33 ` Jan Nieuwenhuizen
2020-06-05 16:08 ` Ludovic Courtès
2020-06-05 16:24 ` Jan Nieuwenhuizen
2020-06-04 13:59 ` bug#41541: [PATCH 0/9] Merge wip-hurd-vm "last review round" Jan (janneke) Nieuwenhuizen
2020-06-04 13:59 ` bug#41541: [PATCH 1/8] system: Add 'hurd' field to <operating-system> Jan (janneke) Nieuwenhuizen
2020-06-06 7:21 ` Mathieu Othacehe
2020-06-06 8:26 ` Jan Nieuwenhuizen
2020-06-06 10:45 ` [bug#41541] " Ludovic Courtès
2020-06-06 11:14 ` Jan Nieuwenhuizen
2020-06-04 13:59 ` bug#41541: [PATCH 2/8] bootloader: Extend `<menu-entry>' for multiboot Jan (janneke) Nieuwenhuizen
2020-06-06 10:48 ` [bug#41541] " Ludovic Courtès
2020-06-06 12:00 ` Jan Nieuwenhuizen
2020-06-04 13:59 ` bug#41541: [PATCH 3/8] system: Add 'multiboot-modules' field to <boot-parameters> Jan (janneke) Nieuwenhuizen
2020-06-06 7:32 ` Mathieu Othacehe
2020-06-06 10:13 ` Jan Nieuwenhuizen
2020-06-06 10:55 ` [bug#41541] " Ludovic Courtès
2020-06-07 7:39 ` Jan Nieuwenhuizen
2020-06-04 13:59 ` bug#41541: [PATCH 4/8] bootloader: grub: Add support for multiboot Jan (janneke) Nieuwenhuizen
2020-06-06 7:47 ` Mathieu Othacehe
2020-06-06 8:46 ` Jan Nieuwenhuizen
2020-06-06 10:57 ` [bug#41541] " Ludovic Courtès
2020-06-06 12:08 ` Jan Nieuwenhuizen
2020-06-04 13:59 ` bug#41541: [PATCH 5/8] system: Use 'hurd' package in label Jan (janneke) Nieuwenhuizen
2020-06-06 10:57 ` [bug#41541] " Ludovic Courtès
2020-06-04 13:59 ` bug#41541: [PATCH 6/8] system: examples: Add bare-hurd.tmpl Jan (janneke) Nieuwenhuizen
2020-06-06 7:56 ` Mathieu Othacehe
2020-06-06 10:58 ` [bug#41541] " Jan Nieuwenhuizen
2020-06-06 16:49 ` Mathieu Othacehe
2020-06-06 22:44 ` Jan Nieuwenhuizen
2020-06-06 10:59 ` Ludovic Courtès
2020-06-06 12:34 ` Jan Nieuwenhuizen
2020-06-04 13:59 ` bug#41541: [PATCH 7/8] services: hurd: Add `hurd-etc-service' Jan (janneke) Nieuwenhuizen
2020-06-06 11:08 ` [bug#41541] " Ludovic Courtès
2020-06-06 14:31 ` Jan Nieuwenhuizen
2020-06-07 20:02 ` Ludovic Courtès
2020-06-07 20:31 ` Jan Nieuwenhuizen
2020-06-04 13:59 ` bug#41541: [PATCH 8/8] system: Add `hurd-activation' Jan (janneke) Nieuwenhuizen
2020-06-06 8:03 ` Mathieu Othacehe
2020-06-06 8:54 ` Jan Nieuwenhuizen
2020-06-06 11:05 ` [bug#41541] " Ludovic Courtès
2020-06-06 14:21 ` Jan Nieuwenhuizen
2020-06-08 12:57 ` [bug#41541] [PATCH 0/4] Final wip-hurd-vm batch Jan (janneke) Nieuwenhuizen
2020-06-08 12:57 ` [bug#41541] [PATCH 1/4] hurd-boot: Create individual translators instead of running MAKEDEV Jan (janneke) Nieuwenhuizen
2020-06-08 12:58 ` [bug#41541] [PATCH 2/4] system: hurd: Remove 'cross-hurd-image' hack Jan (janneke) Nieuwenhuizen
2020-06-13 10:49 ` Jan Nieuwenhuizen
2020-06-14 16:46 ` bug#41541: " Jan Nieuwenhuizen
2020-06-14 17:48 ` [bug#41541] " Mathieu Othacehe
2020-06-14 20:29 ` Ludovic Courtès
2020-06-08 12:58 ` [bug#41541] [PATCH 3/4] system: bare-hurd.tmpl: Add openssh client and service Jan (janneke) Nieuwenhuizen
2020-06-08 13:23 ` Jan Nieuwenhuizen
2020-06-13 7:24 ` Jan Nieuwenhuizen
2020-06-08 12:58 ` [bug#41541] [PATCH 4/4] hurd-boot: Use 'setxattr' instead of invoking settrans Jan (janneke) 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=874krrrj3c.fsf@gnu.org \
--to=janneke@gnu.org \
--cc=41541@debbugs.gnu.org \
--cc=othacehe@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 external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.