From unknown Sun Jun 22 11:41:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#41855: [PATCH 0/2] hurd-boot: Cleanups: Remove MAKEDEV, then use setxattr (on the Hurd). Resent-From: "Jan (janneke) Nieuwenhuizen" Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Sun, 14 Jun 2020 16:55:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 41855 X-GNU-PR-Package: guix X-GNU-PR-Keywords: patch To: 41855@debbugs.gnu.org Cc: Jan Nieuwenhuizen X-Debbugs-Original-To: bug-guix@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.159215367812142 (code B ref -1); Sun, 14 Jun 2020 16:55:02 +0000 Received: (at submit) by debbugs.gnu.org; 14 Jun 2020 16:54:38 +0000 Received: from localhost ([127.0.0.1]:44408 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jkVu2-00039l-5j for submit@debbugs.gnu.org; Sun, 14 Jun 2020 12:54:38 -0400 Received: from lists.gnu.org ([209.51.188.17]:60588) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jkVtz-00039c-TY for submit@debbugs.gnu.org; Sun, 14 Jun 2020 12:54:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59690) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jkVtz-0001cU-KB for bug-guix@gnu.org; Sun, 14 Jun 2020 12:54:35 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:48611) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jkVty-0001xY-10; Sun, 14 Jun 2020 12:54:34 -0400 Received: from [2001:980:1b4f:1:42d2:832d:bb59:862] (port=48140 helo=dundal.fritz.box) by fencepost.gnu.org with esmtpa (Exim 4.82) (envelope-from ) id 1jkVtw-0000Jg-Ll; Sun, 14 Jun 2020 12:54:33 -0400 From: "Jan (janneke) Nieuwenhuizen" Date: Sun, 14 Jun 2020 18:54:30 +0200 Message-Id: <20200614165430.3411-1-janneke@gnu.org> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) From: Jan Nieuwenhuizen Hi! Several variants of these patches were present on wip-hurd-vm before. Currently, we are running MAKEDEV from activation, and thus need hurd, bash, coreutils and sed in PATH. The first patch replaces that with scheme code, which seems a no-brainer to me. Then we only need hurd in PATH for settrans and gettrans. The second patch then switches to using setxattr instead of settrans; alas we still need gettrans as getxattr behaves "funny" on translated nodes. I suppose that would be a question for the bug-hurd? Greetings, Janneke Jan (janneke) Nieuwenhuizen (2): hurd-boot: Create individual translators instead of running MAKEDEV. hurd-boot: Use 'setxattr' instead of invoking settrans. gnu/build/hurd-boot.scm | 172 +++++++++++++++++++++++++++++----------- gnu/system.scm | 1 + 2 files changed, 126 insertions(+), 47 deletions(-) -- Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com From unknown Sun Jun 22 11:41:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#41855: [PATCH 1/2] hurd-boot: Create individual translators instead of running MAKEDEV. References: <20200614165430.3411-1-janneke@gnu.org> In-Reply-To: <20200614165430.3411-1-janneke@gnu.org> Resent-From: "Jan (janneke) Nieuwenhuizen" Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Sun, 14 Jun 2020 16:57:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 41855 X-GNU-PR-Package: guix X-GNU-PR-Keywords: patch To: 41855@debbugs.gnu.org Received: via spool by 41855-submit@debbugs.gnu.org id=B41855.159215382112401 (code B ref 41855); Sun, 14 Jun 2020 16:57:02 +0000 Received: (at 41855) by debbugs.gnu.org; 14 Jun 2020 16:57:01 +0000 Received: from localhost ([127.0.0.1]:44414 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jkVwK-0003Dr-JG for submit@debbugs.gnu.org; Sun, 14 Jun 2020 12:57:01 -0400 Received: from eggs.gnu.org ([209.51.188.92]:52484) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jkVwI-0003DW-UA for 41855@debbugs.gnu.org; Sun, 14 Jun 2020 12:56:59 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:48648) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jkVwC-0002IP-3k; Sun, 14 Jun 2020 12:56:52 -0400 Received: from [2001:980:1b4f:1:42d2:832d:bb59:862] (port=48144 helo=dundal.fritz.box) by fencepost.gnu.org with esmtpa (Exim 4.82) (envelope-from ) id 1jkVwA-0001MI-Lx; Sun, 14 Jun 2020 12:56:51 -0400 From: "Jan (janneke) Nieuwenhuizen" Date: Sun, 14 Jun 2020 18:56:48 +0200 Message-Id: <20200614165649.3496-1-janneke@gnu.org> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) * gnu/build/hurd-boot.scm (make-hurd-device-nodes): Do not create dev/{null,zero,full,random,urandom} mount points. (setup-translator, xattr-translator, showtrans-translator?, translated?, set-hurd-device-translators): New procedures. (boot-hurd-system): Use them instead of running MAKEDEV. --- gnu/build/hurd-boot.scm | 172 +++++++++++++++++++++++++++++----------- 1 file changed, 125 insertions(+), 47 deletions(-) diff --git a/gnu/build/hurd-boot.scm b/gnu/build/hurd-boot.scm index 09326233d2..398cee1395 100644 --- a/gnu/build/hurd-boot.scm +++ b/gnu/build/hurd-boot.scm @@ -80,16 +80,8 @@ Return the value associated with OPTION, or #f on failure." (string-append root (if (string-suffix? "/" root) "" "/") dir)) (mkdir (scope "dev")) - (for-each (lambda (file) - (call-with-output-file (scope file) - (lambda (port) - (display file port) ;avoid hard-linking - (chmod port #o666)))) - '("dev/null" - "dev/zero" - "dev/full" - "dev/random" - "dev/urandom")) + ;; Don't create /dev/null etc just yet; the store + ;; messes-up the permission bits. ;; Don't create /dev/console, /dev/vcs, etc.: they are created by ;; console-run on first boot. @@ -115,6 +107,125 @@ Return the value associated with OPTION, or #f on failure." ;; settings? ) +(define (xattr-translator? file-name) + "Return true if FILE-NAME has an extended @code{gnu.translator} attribute +set." + (false-if-exception + (not (string-null? (getxattr file-name "gnu.translator"))))) + +(define (showtrans-translator? file-name) + "Return true if @file{showtrans} finds a translator installed on FILE-NAME." + (with-output-to-port (%make-void-port "w") + (lambda _ + (with-error-to-port (%make-void-port "w") + (lambda _ + (zero? (system* "showtrans" "--silent" file-name))))))) + +(define (translated? file-name) + "Return true if a translator is installed on FILE-NAME." + (if (string-contains %host-type "linux-gnu") + (xattr-translator? file-name) + (showtrans-translator? file-name))) + +(define* (setup-translator file-name command #:optional (mode #o600)) + "Setup translator COMMAND on FILE-NAME." + (unless (translated? file-name) + (let ((dir (dirname file-name))) + (unless (directory-exists? dir) + (mkdir-p dir)) + (unless (file-exists? file-name) + (call-with-output-file file-name + (lambda (port) + (display file-name port) ;avoid hard-linking + (chmod port mode))))) + (catch 'system-error + (lambda _ + (apply invoke "settrans" "--create" file-name command)) + (lambda (key . args) + (let ((errno (system-error-errno (cons key args)))) + (format (current-error-port) "~a: ~a\n" + (strerror errno) file-name) + (format (current-error-port) "Ignoring...Good Luck!\n")))))) + +(define* (set-hurd-device-translators #:optional (root "/")) + "Make some of the device nodes needed on GNU/Hurd." + + (define (scope dir) + (string-append root (if (string-suffix? "/" root) "" "/") dir)) + + (define scope-setup-translator + (match-lambda + ((file-name command) + (scope-setup-translator (list file-name command #o600))) + ((file-name command mode) + (let ((mount-point (scope file-name))) + (setup-translator mount-point command mode))))) + + (define servers + '(("servers/crash-dump-core" ("/hurd/crash" "--dump-core")) + ("servers/crash-kill" ("/hurd/crash" "--kill")) + ("servers/crash-suspend" ("/hurd/crash" "--suspend")) + ("servers/password" ("/hurd/password")) + ("servers/socket/1" ("/hurd/pflocal")) + ("servers/socket/2" ("/hurd/pfinet" + "--interface" "eth0" + "--address" + "10.0.2.15" ;the default QEMU guest IP + "--netmask" "255.255.255.0" + "--gateway" "10.0.2.2" + "--ipv6" "/servers/socket/16")))) + + (define devices + '(("dev/full" ("/hurd/null" "--full") #o666) + ("dev/null" ("/hurd/null") #o666) + ("dev/random" ("/hurd/random" "--seed-file" "/var/lib/random-seed") + #o644) + ("dev/zero" ("/hurd/storeio" "--store-type=zero") #o666) + + ("dev/console" ("/hurd/term" "/dev/console" "device" "console")) + + ("dev/klog" ("/hurd/streamio" "kmsg")) + ("dev/mem" ("/hurd/storeio" "--no-cache" "mem") #o660) + ("dev/shm" ("/hurd/tmpfs" "--mode=1777" "50%") #o644) + ("dev/time" ("/hurd/storeio" "--no-cache" "time") #o644) + + ("dev/vcs" ("/hurd/console")) + ("dev/tty" ("/hurd/magic" "tty") #o666) + + ("dev/tty1" ("/hurd/term" "/dev/tty1" "hurdio" "/dev/vcs/1/console") + #o666) + ("dev/tty2" ("/hurd/term" "/dev/tty2" "hurdio" "/dev/vcs/2/console") + #o666) + ("dev/tty3" ("/hurd/term" "/dev/tty3" "hurdio" "/dev/vcs/3/console") + #o666) + + ("dev/ptyp0" ("/hurd/term" "/dev/ptyp0" "pty-master" "/dev/ttyp0") + #o666) + ("dev/ptyp1" ("/hurd/term" "/dev/ptyp1" "pty-master" "/dev/ttyp1") + #o666) + ("dev/ptyp2" ("/hurd/term" "/dev/ptyp2" "pty-master" "/dev/ttyp2") + #o666) + + ("dev/ttyp0" ("/hurd/term" "/dev/ttyp0" "pty-slave" "/dev/ptyp0") + #o666) + ("dev/ttyp1" ("/hurd/term" "/dev/ttyp1" "pty-slave" "/dev/ptyp1") + #o666) + ("dev/ttyp2" ("/hurd/term" "/dev/ttyp2" "pty-slave" "/dev/ptyp2") + #o666))) + + (for-each scope-setup-translator servers) + (false-if-exception (mkdir-p (scope "dev/vcs/1"))) + (false-if-exception (mkdir-p (scope "dev/vcs/2"))) + (false-if-exception (mkdir-p (scope "dev/vcs/3"))) + (false-if-exception (rename-file "/dev/console" "/dev/console-")) + (for-each scope-setup-translator devices) + + (false-if-exception (symlink "/dev/random" "/dev/urandom")) + (false-if-exception (mkdir-p "/dev/fd")) + (false-if-exception (symlink "/dev/fd/0" "/dev/stdin")) + (false-if-exception (symlink "/dev/fd/1" "/dev/stdout")) + (false-if-exception (symlink "/dev/fd/2" "/dev/stderr"))) + (define* (boot-hurd-system #:key (on-error 'debug)) "This procedure is meant to be called from an early RC script. @@ -126,20 +237,9 @@ starting the Shepherd. XXX TODO: see linux-boot.scm:boot-system. XXX TODO: add proper file-system checking, mounting XXX TODO: move bits to (new?) (hurd?) (activation?) services -XXX TODO: use settrans/setxattr instead of MAKEDEV +XXX TODO: use Linux xattr/setxattr to remove (settrans in) /libexec/RUNSYSTEM " - (define translators - '(("/servers/crash-dump-core" ("/hurd/crash" "--dump-core")) - ("/servers/crash-kill" ("/hurd/crash" "--kill")) - ("/servers/crash-suspend" ("/hurd/crash" "--suspend")) - ("/servers/password" ("/hurd/password")) - ("/servers/socket/1" ("/hurd/pflocal")) - ("/servers/socket/2" ("/hurd/pfinet" "--interface" "eth0" - "--address" "10.0.2.15" ;the default QEMU guest IP - "--netmask" "255.255.255.0" - "--gateway" "10.0.2.2" - "--ipv6" "/servers/socket/16")))) (display "Welcome, this is GNU's early boot Guile.\n") (display "Use '--repl' for an initrd REPL.\n\n") @@ -147,35 +247,13 @@ XXX TODO: use settrans/setxattr instead of MAKEDEV (call-with-error-handling (lambda () - (define (translated? node) - ;; Return true if a translator is installed on NODE. - (with-output-to-port (%make-void-port "w") - (lambda () - (with-error-to-port (%make-void-port "w") - (lambda () - (zero? (system* "showtrans" "--silent" node))))))) - (let* ((args (command-line)) (system (find-long-option "--system" args)) (to-load (find-long-option "--load" args))) - (format #t "Creating essential servers...\n") - (setenv "PATH" (string-append system "/profile/bin" - ":" system "/profile/sbin")) - (for-each (match-lambda - ((node command) - (unless (translated? node) - (mkdir-p (dirname node)) - (apply invoke "settrans" "--create" node command)))) - translators) - - (format #t "Creating essential device nodes...\n") - (with-directory-excursion "/dev" - (invoke "MAKEDEV" "--devdir=/dev" "std") - (invoke "MAKEDEV" "--devdir=/dev" "vcs") - (invoke "MAKEDEV" "--devdir=/dev" "tty1""tty2" "tty3" "tty4" "tty5" "tty6") - (invoke "MAKEDEV" "--devdir=/dev" "ptyp0" "ptyp1" "ptyp2") - (invoke "MAKEDEV" "--devdir=/dev" "console")) + (format #t "Setting-up essential translators...\n") + (setenv "PATH" (string-append system "/profile/bin")) + (set-hurd-device-translators) (false-if-exception (delete-file "/hurd")) (let ((hurd/hurd (readlink* (string-append system "/profile/hurd")))) -- Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com From unknown Sun Jun 22 11:41:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#41855: [PATCH 2/2] hurd-boot: Use 'setxattr' instead of invoking settrans. Resent-From: "Jan (janneke) Nieuwenhuizen" Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Sun, 14 Jun 2020 16:57:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 41855 X-GNU-PR-Package: guix X-GNU-PR-Keywords: patch To: 41855@debbugs.gnu.org Received: via spool by 41855-submit@debbugs.gnu.org id=B41855.159215382112411 (code B ref 41855); Sun, 14 Jun 2020 16:57:02 +0000 Received: (at 41855) by debbugs.gnu.org; 14 Jun 2020 16:57:01 +0000 Received: from localhost ([127.0.0.1]:44416 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jkVwL-0003Dv-3R for submit@debbugs.gnu.org; Sun, 14 Jun 2020 12:57:01 -0400 Received: from eggs.gnu.org ([209.51.188.92]:52490) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jkVwJ-0003DY-Bm for 41855@debbugs.gnu.org; Sun, 14 Jun 2020 12:56:59 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:48649) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jkVwE-0002Ie-1C; Sun, 14 Jun 2020 12:56:54 -0400 Received: from [2001:980:1b4f:1:42d2:832d:bb59:862] (port=48144 helo=dundal.fritz.box) by fencepost.gnu.org with esmtpa (Exim 4.82) (envelope-from ) id 1jkVwC-0001MI-FR; Sun, 14 Jun 2020 12:56:53 -0400 From: "Jan (janneke) Nieuwenhuizen" Date: Sun, 14 Jun 2020 18:56:49 +0200 Message-Id: <20200614165649.3496-2-janneke@gnu.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200614165649.3496-1-janneke@gnu.org> References: <20200614165649.3496-1-janneke@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Note: Using `getxattr' on the Hurd instead of running showtrans does not work (yet?). * gnu/build/hurd-boot.scm (setup-translator): Use 'setxattr' instead of invoking settrans. * gnu/system.scm (hurd-multiboot-modules): Add --x-xattr-translator-records to enable xattr-embebbing of translators. --- gnu/build/hurd-boot.scm | 2 +- gnu/system.scm | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/build/hurd-boot.scm b/gnu/build/hurd-boot.scm index 398cee1395..8150aff972 100644 --- a/gnu/build/hurd-boot.scm +++ b/gnu/build/hurd-boot.scm @@ -140,7 +140,7 @@ set." (chmod port mode))))) (catch 'system-error (lambda _ - (apply invoke "settrans" "--create" file-name command)) + (setxattr file-name "gnu.translator" (string-join command "\0" 'suffix))) (lambda (key . args) (let ((errno (system-error-errno (cons key args)))) (format (current-error-port) "~a: ~a\n" diff --git a/gnu/system.scm b/gnu/system.scm index d51691fe76..25cc63a9df 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -1191,6 +1191,7 @@ a list of , to populate the \"old entries\" menu." "--device-master-port='${device-port}'" "--exec-server-task='${exec-task}'" "--store-type=typed" + "--x-xattr-translator-records" "'${root}'" "'$(task-create)'" "'$(task-resume)'")) (target (%current-target-system)) (libc (if target -- Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com From unknown Sun Jun 22 11:41:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#41855: [PATCH 1/2] hurd-boot: Create individual translators instead of running MAKEDEV. Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Mon, 15 Jun 2020 19:56:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 41855 X-GNU-PR-Package: guix X-GNU-PR-Keywords: patch To: "Jan \(janneke\) Nieuwenhuizen" Cc: 41855@debbugs.gnu.org Received: via spool by 41855-submit@debbugs.gnu.org id=B41855.159225090223449 (code B ref 41855); Mon, 15 Jun 2020 19:56:01 +0000 Received: (at 41855) by debbugs.gnu.org; 15 Jun 2020 19:55:02 +0000 Received: from localhost ([127.0.0.1]:47530 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jkvCA-000669-7U for submit@debbugs.gnu.org; Mon, 15 Jun 2020 15:55:02 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37450) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jkvC8-00065c-2P for 41855@debbugs.gnu.org; Mon, 15 Jun 2020 15:55:00 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:42711) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jkvC2-0000ZQ-Or; Mon, 15 Jun 2020 15:54:54 -0400 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=40668 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jkvC2-0002wy-8a; Mon, 15 Jun 2020 15:54:54 -0400 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <20200614165430.3411-1-janneke@gnu.org> <20200614165649.3496-1-janneke@gnu.org> Date: Mon, 15 Jun 2020 21:54:52 +0200 In-Reply-To: <20200614165649.3496-1-janneke@gnu.org> (Jan Nieuwenhuizen's message of "Sun, 14 Jun 2020 18:56:48 +0200") Message-ID: <87imfsyuib.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-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi! "Jan (janneke) Nieuwenhuizen" skribis: > * gnu/build/hurd-boot.scm (make-hurd-device-nodes): Do not create > dev/{null,zero,full,random,urandom} mount points. > (setup-translator, xattr-translator, > showtrans-translator?, translated?, set-hurd-device-translators): New > procedures. > (boot-hurd-system): Use them instead of running MAKEDEV. This is mostly about moving the logic from the MAKEDEV script to this file, right? Sounds nice. > +(define (xattr-translator? file-name) > + "Return true if FILE-NAME has an extended @code{gnu.translator} attrib= ute > +set." > + (false-if-exception > + (not (string-null? (getxattr file-name "gnu.translator"))))) I=E2=80=99d call it =E2=80=98passive-translator-xattr?=E2=80=99. In general, I=E2=80=99d avoid =E2=80=98false-if-exception=E2=80=99 as much = as possible because it can hide real issues. So here, you could catch 'system-error and check for ENODATA. If you need it in several places, you can define a =E2=80=98false-if-ENODATA=E2=80=99 macro > +(define (showtrans-translator? file-name) > + "Return true if @file{showtrans} finds a translator installed on FILE-= NAME." Should be =E2=80=98passive-translator-installed?=E2=80=99 no? (IIRC =E2=80= =98showtrans=E2=80=99 only shows passive translator settings by default.) > + (with-output-to-port (%make-void-port "w") > + (lambda _ > + (with-error-to-port (%make-void-port "w") > + (lambda _ > + (zero? (system* "showtrans" "--silent" file-name))))))) > + > +(define (translated? file-name) > + "Return true if a translator is installed on FILE-NAME." > + (if (string-contains %host-type "linux-gnu") > + (xattr-translator? file-name) > + (showtrans-translator? file-name))) It=E2=80=99s counter-intuitive that hurd-boot.scm is used from GNU/Linux. Should we move the shared bits in (gnu build hurd) or similar? > +(define* (setup-translator file-name command #:optional (mode #o600)) > + "Setup translator COMMAND on FILE-NAME." =E2=80=98set-translator=E2=80=99? :-) > + (false-if-exception (mkdir-p (scope "dev/vcs/1"))) > + (false-if-exception (mkdir-p (scope "dev/vcs/2"))) > + (false-if-exception (mkdir-p (scope "dev/vcs/3"))) > + (false-if-exception (rename-file "/dev/console" "/dev/console-")) > + (for-each scope-setup-translator devices) > + > + (false-if-exception (symlink "/dev/random" "/dev/urandom")) > + (false-if-exception (mkdir-p "/dev/fd")) > + (false-if-exception (symlink "/dev/fd/0" "/dev/stdin")) > + (false-if-exception (symlink "/dev/fd/1" "/dev/stdout")) > + (false-if-exception (symlink "/dev/fd/2" "/dev/stderr"))) =E2=80=98false-if-EEXIST=E2=80=99? Thanks! Ludo=E2=80=99. From unknown Sun Jun 22 11:41:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#41855: [PATCH 2/2] hurd-boot: Use 'setxattr' instead of invoking settrans. Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Mon, 15 Jun 2020 20:01:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 41855 X-GNU-PR-Package: guix X-GNU-PR-Keywords: patch To: "Jan \(janneke\) Nieuwenhuizen" Cc: 41855@debbugs.gnu.org Received: via spool by 41855-submit@debbugs.gnu.org id=B41855.159225126124050 (code B ref 41855); Mon, 15 Jun 2020 20:01:01 +0000 Received: (at 41855) by debbugs.gnu.org; 15 Jun 2020 20:01:01 +0000 Received: from localhost ([127.0.0.1]:47534 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jkvHx-0006Fi-0T for submit@debbugs.gnu.org; Mon, 15 Jun 2020 16:01:01 -0400 Received: from eggs.gnu.org ([209.51.188.92]:38742) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jkvHu-0006FV-Uu for 41855@debbugs.gnu.org; Mon, 15 Jun 2020 16:00:59 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:42877) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jkvHo-0001gL-P3; Mon, 15 Jun 2020 16:00:52 -0400 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=40674 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jkvHn-0004Aa-6P; Mon, 15 Jun 2020 16:00:51 -0400 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <20200614165649.3496-1-janneke@gnu.org> <20200614165649.3496-2-janneke@gnu.org> Date: Mon, 15 Jun 2020 22:00:49 +0200 In-Reply-To: <20200614165649.3496-2-janneke@gnu.org> (Jan Nieuwenhuizen's message of "Sun, 14 Jun 2020 18:56:49 +0200") Message-ID: <87a714yu8e.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-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) "Jan (janneke) Nieuwenhuizen" skribis: > Note: Using `getxattr' on the Hurd instead of running showtrans does not > work (yet?). How does it not work? :-) > * gnu/build/hurd-boot.scm (setup-translator): Use 'setxattr' instead of > invoking settrans. > * gnu/system.scm (hurd-multiboot-modules): Add --x-xattr-translator-recor= ds to > enable xattr-embebbing of translators. ^ Typo. Otherwise LGTM! Ludo=E2=80=99. From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 15 16:05:45 2020 Received: (at control) by debbugs.gnu.org; 15 Jun 2020 20:05:45 +0000 Received: from localhost ([127.0.0.1]:47542 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jkvMW-0006Mq-Qg for submit@debbugs.gnu.org; Mon, 15 Jun 2020 16:05:44 -0400 Received: from eggs.gnu.org ([209.51.188.92]:39826) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jkvMU-0006Mb-Tr for control@debbugs.gnu.org; Mon, 15 Jun 2020 16:05:43 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:42960) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jkvMP-0002a5-Nb for control@debbugs.gnu.org; Mon, 15 Jun 2020 16:05:37 -0400 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=40680 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jkvMO-0000mu-P7 for control@debbugs.gnu.org; Mon, 15 Jun 2020 16:05:37 -0400 Date: Mon, 15 Jun 2020 22:05:35 +0200 Message-Id: <878sgoyu0g.fsf@gnu.org> To: control@debbugs.gnu.org From: =?utf-8?Q?Ludovic_Court=C3=A8s?= Subject: control message for bug #41855 MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) reassign 41855 guix-patches quit From unknown Sun Jun 22 11:41:23 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#41855] [PATCH 2/2] hurd-boot: Use 'setxattr' instead of invoking settrans. Resent-From: Jan Nieuwenhuizen Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 16 Jun 2020 21:13:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 41855 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 41855@debbugs.gnu.org Received: via spool by 41855-submit@debbugs.gnu.org id=B41855.159234196714733 (code B ref 41855); Tue, 16 Jun 2020 21:13:01 +0000 Received: (at 41855) by debbugs.gnu.org; 16 Jun 2020 21:12:47 +0000 Received: from localhost ([127.0.0.1]:49762 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jlIsx-0003pY-ID for submit@debbugs.gnu.org; Tue, 16 Jun 2020 17:12:47 -0400 Received: from eggs.gnu.org ([209.51.188.92]:50044) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jlIss-0003pH-DN for 41855@debbugs.gnu.org; Tue, 16 Jun 2020 17:12:45 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:35662) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jlIsm-0005TE-K8; Tue, 16 Jun 2020 17:12:36 -0400 Received: from [2001:980:1b4f:1:42d2:832d:bb59:862] (port=41214 helo=dundal.peder.onsbrabantnet.nl) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jlIse-0006CA-Oe; Tue, 16 Jun 2020 17:12:35 -0400 From: Jan Nieuwenhuizen Organization: AvatarAcademy.nl References: <20200614165649.3496-1-janneke@gnu.org> <20200614165649.3496-2-janneke@gnu.org> <87a714yu8e.fsf@gnu.org> X-Url: http://AvatarAcademy.nl Date: Tue, 16 Jun 2020 23:12:26 +0200 In-Reply-To: <87a714yu8e.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Mon, 15 Jun 2020 22:00:49 +0200") Message-ID: <87zh92yath.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-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Ludovic Court=C3=A8s writes: Hello! > "Jan (janneke) Nieuwenhuizen" skribis: > >> Note: Using `getxattr' on the Hurd instead of running showtrans does not >> work (yet?). > > How does it not work? :-) root@childhurd ~# showtrans /dev/vcs /gnu/store/b48w1piqvqldl54sfj57g6vib405mn3a-hurd-0.9-1.91a5167/hurd/console scheme@(guile-user)> (getxattr "/dev/vcs" "gnu.translator") $1 =3D #f >> * gnu/build/hurd-boot.scm (setup-translator): Use 'setxattr' instead of >> invoking settrans. >> * gnu/system.scm (hurd-multiboot-modules): Add --x-xattr-translator-reco= rds to >> enable xattr-embebbing of translators. > ^ > Typo. Fixed! > Otherwise LGTM! Thanks! Janneke --=20 Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.com From unknown Sun Jun 22 11:41:23 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#41855] [PATCH 1/2] hurd-boot: Create individual translators instead of running MAKEDEV. Resent-From: Jan Nieuwenhuizen Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 16 Jun 2020 21:16:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 41855 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 41855@debbugs.gnu.org Received: via spool by 41855-submit@debbugs.gnu.org id=B41855.159234211715032 (code B ref 41855); Tue, 16 Jun 2020 21:16:02 +0000 Received: (at 41855) by debbugs.gnu.org; 16 Jun 2020 21:15:17 +0000 Received: from localhost ([127.0.0.1]:49770 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jlIvM-0003uO-2n for submit@debbugs.gnu.org; Tue, 16 Jun 2020 17:15:16 -0400 Received: from eggs.gnu.org ([209.51.188.92]:50298) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jlIvK-0003uB-Hi for 41855@debbugs.gnu.org; Tue, 16 Jun 2020 17:15:15 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:35707) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jlIvF-0005jz-Ao; Tue, 16 Jun 2020 17:15:09 -0400 Received: from [2001:980:1b4f:1:42d2:832d:bb59:862] (port=41218 helo=dundal.peder.onsbrabantnet.nl) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jlIvE-0006Qr-QB; Tue, 16 Jun 2020 17:15:09 -0400 From: Jan Nieuwenhuizen Organization: AvatarAcademy.nl References: <20200614165430.3411-1-janneke@gnu.org> <20200614165649.3496-1-janneke@gnu.org> <87imfsyuib.fsf@gnu.org> X-Url: http://AvatarAcademy.nl Date: Tue, 16 Jun 2020 23:15:07 +0200 In-Reply-To: <87imfsyuib.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Mon, 15 Jun 2020 21:54:52 +0200") Message-ID: <87y2omyap0.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Ludovic Court=C3=A8s writes: Hi! > "Jan (janneke) Nieuwenhuizen" skribis: > >> * gnu/build/hurd-boot.scm (make-hurd-device-nodes): Do not create >> dev/{null,zero,full,random,urandom} mount points. >> (setup-translator, xattr-translator, >> showtrans-translator?, translated?, set-hurd-device-translators): New >> procedures. >> (boot-hurd-system): Use them instead of running MAKEDEV. > > This is mostly about moving the logic from the MAKEDEV script to this > file, right? Sounds nice. Yes. Glad you like the idea too. >> +(define (xattr-translator? file-name) >> + "Return true if FILE-NAME has an extended @code{gnu.translator} attri= bute >> +set." >> + (false-if-exception >> + (not (string-null? (getxattr file-name "gnu.translator"))))) > > I=E2=80=99d call it =E2=80=98passive-translator-xattr?=E2=80=99. > In general, I=E2=80=99d avoid =E2=80=98false-if-exception=E2=80=99 as muc= h as possible because > it can hide real issues. So here, you could catch 'system-error and > check for ENODATA. If you need it in several places, you can define a > =E2=80=98false-if-ENODATA=E2=80=99 macro Nice. Ah, I remember having file-exists? checks or no check at all and then found it only worked on first boot, not with a persistent image. Minor detail. So I got out my axe and..."it worked" :-/ >> +(define (showtrans-translator? file-name) >> + "Return true if @file{showtrans} finds a translator installed on FILE= -NAME." > > Should be =E2=80=98passive-translator-installed?=E2=80=99 no? (IIRC =E2= =80=98showtrans=E2=80=99 only > shows passive translator settings by default.) Yes, thanks. >> + (with-output-to-port (%make-void-port "w") >> + (lambda _ >> + (with-error-to-port (%make-void-port "w") >> + (lambda _ >> + (zero? (system* "showtrans" "--silent" file-name))))))) >> + >> +(define (translated? file-name) >> + "Return true if a translator is installed on FILE-NAME." >> + (if (string-contains %host-type "linux-gnu") >> + (xattr-translator? file-name) >> + (showtrans-translator? file-name))) > > It=E2=80=99s counter-intuitive that hurd-boot.scm is used from GNU/Linux. > Should we move the shared bits in (gnu build hurd) or similar? Maybe...I don't know. hurd-boot defines functions that are needed to create a bootable hurd -- some can be called from GNU/Linux. Similarly, "linux-boot" defines "make-essential-device-nodes", which could be called from GNU/Hurd when we cross build a linux VM. Well, having one weird situation is a bad argument to propagate the madness. I guess it makes sense to move utility functions like passive-translator-xattr, passive-translator-installed?, and translated? could be moved to (gnu build hurd). Haven't made this change yet, let me know you want; or feel free to make the change yourself :-) >> +(define* (setup-translator file-name command #:optional (mode #o600)) >> + "Setup translator COMMAND on FILE-NAME." > > =E2=80=98set-translator=E2=80=99? :-) =3D> set-translator! :-) >> + (false-if-exception (mkdir-p (scope "dev/vcs/1"))) >> + (false-if-exception (mkdir-p (scope "dev/vcs/2"))) >> + (false-if-exception (mkdir-p (scope "dev/vcs/3"))) >> + (false-if-exception (rename-file "/dev/console" "/dev/console-")) >> + (for-each scope-setup-translator devices) >> + >> + (false-if-exception (symlink "/dev/random" "/dev/urandom")) >> + (false-if-exception (mkdir-p "/dev/fd")) >> + (false-if-exception (symlink "/dev/fd/0" "/dev/stdin")) >> + (false-if-exception (symlink "/dev/fd/1" "/dev/stdout")) >> + (false-if-exception (symlink "/dev/fd/2" "/dev/stderr"))) > > =E2=80=98false-if-EEXIST=E2=80=99? Done for symlink; for mkdir, using (define (mkdir* dir) (let ((dir (scope dir))) (unless (file-exists? dir) (mkdir-p dir)))) New patch attached. Greetings, Janneke --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=v2-0001-hurd-boot-Create-individual-translators-instead-o.patch Content-Transfer-Encoding: quoted-printable >From 1e27aabb8bf32e85547517e1f0e35f789a08933d Mon Sep 17 00:00:00 2001 From: "Jan (janneke) Nieuwenhuizen" Date: Mon, 8 Jun 2020 13:02:13 +0200 Subject: [PATCH v2 1/2] hurd-boot: Create individual translators instead of running MAKEDEV. * guix/build/utils.scm * gnu/build/hurd-boot.scm (make-hurd-device-nodes): Do not create dev/{null,zero,full,random,urandom} mount points. (passive-translator-xattr?, passive-translator-installed?, translated?, set-hurd-device-translators): New procedures. (false-if-EEXIST): New macro. (boot-hurd-system): Use them instead of running MAKEDEV. --- gnu/build/hurd-boot.scm | 190 ++++++++++++++++++++++++++++++---------- 1 file changed, 143 insertions(+), 47 deletions(-) diff --git a/gnu/build/hurd-boot.scm b/gnu/build/hurd-boot.scm index 09326233d2..3f0e215344 100644 --- a/gnu/build/hurd-boot.scm +++ b/gnu/build/hurd-boot.scm @@ -80,16 +80,8 @@ Return the value associated with OPTION, or #f on failur= e." (string-append root (if (string-suffix? "/" root) "" "/") dir)) =20 (mkdir (scope "dev")) - (for-each (lambda (file) - (call-with-output-file (scope file) - (lambda (port) - (display file port) ;avoid hard-linking - (chmod port #o666)))) - '("dev/null" - "dev/zero" - "dev/full" - "dev/random" - "dev/urandom")) + ;; Don't create /dev/null etc just yet; the store + ;; messes-up the permission bits. ;; Don't create /dev/console, /dev/vcs, etc.: they are created by ;; console-run on first boot. =20 @@ -115,6 +107,143 @@ Return the value associated with OPTION, or #f on fai= lure." ;; settings? ) =20 +(define (passive-translator-xattr? file-name) + "Return true if FILE-NAME has an extended @code{gnu.translator} attribute +set." + (catch 'system-error + (lambda _ (not (string-null? (getxattr file-name "gnu.translator")))) + (lambda args + (if (=3D ENODATA (system-error-errno args)) + #f + (apply throw args))))) + +(define (passive-translator-installed? file-name) + "Return true if @file{showtrans} finds a translator installed on FILE-NA= ME." + (with-output-to-port (%make-void-port "w") + (lambda _ + (with-error-to-port (%make-void-port "w") + (lambda _ + (zero? (system* "showtrans" "--silent" file-name))))))) + +(define (translated? file-name) + "Return true if a translator is installed on FILE-NAME." + (if (string-contains %host-type "linux-gnu") + (passive-translator-xattr? file-name) + (passive-translator-installed? file-name))) + +(define* (set-translator! file-name command #:optional (mode #o600)) + "Setup translator COMMAND on FILE-NAME." + (unless (translated? file-name) + (let ((dir (dirname file-name))) + (unless (directory-exists? dir) + (mkdir-p dir)) + (unless (file-exists? file-name) + (call-with-output-file file-name + (lambda (port) + (display file-name port) ;avoid hard-linking + (chmod port mode))))) + (catch 'system-error + (lambda _ + (apply invoke "settrans" "--create" file-name command)) + (lambda (key . args) + (let ((errno (system-error-errno (cons key args)))) + (format (current-error-port) "~a: ~a\n" + (strerror errno) file-name) + (format (current-error-port) "Ignoring...Good Luck!\n")))))) + +(define-syntax-rule (false-if-EEXIST exp) + "Evaluate EXP but return #f if it raises to 'system-error with EEXIST." + (catch 'system-error + (lambda () exp) + (lambda args + (if (=3D EEXIST (system-error-errno args)) + #f + (apply throw args))))) + +(define* (set-hurd-device-translators #:optional (root "/")) + "Make some of the device nodes needed on GNU/Hurd." + + (define (scope dir) + (string-append root (if (string-suffix? "/" root) "" "/") dir)) + + (define scope-set-translator! + (match-lambda + ((file-name command) + (scope-set-translator! (list file-name command #o600))) + ((file-name command mode) + (let ((mount-point (scope file-name))) + (set-translator! mount-point command mode))))) + + (define (mkdir* dir) + (let ((dir (scope dir))) + (unless (file-exists? dir) + (mkdir-p dir)))) + + (define servers + '(("servers/crash-dump-core" ("/hurd/crash" "--dump-core")) + ("servers/crash-kill" ("/hurd/crash" "--kill")) + ("servers/crash-suspend" ("/hurd/crash" "--suspend")) + ("servers/password" ("/hurd/password")) + ("servers/socket/1" ("/hurd/pflocal")) + ("servers/socket/2" ("/hurd/pfinet" + "--interface" "eth0" + "--address" + "10.0.2.15" ;the default QEMU guest IP + "--netmask" "255.255.255.0" + "--gateway" "10.0.2.2" + "--ipv6" "/servers/socket/16")))) + + (define devices + '(("dev/full" ("/hurd/null" "--full") #o666) + ("dev/null" ("/hurd/null") #o666) + ("dev/random" ("/hurd/random" "--seed-file" "/var/lib/random-seed= ") + #o644) + ("dev/zero" ("/hurd/storeio" "--store-type=3Dzero") #o666) + + ("dev/console" ("/hurd/term" "/dev/console" "device" "console")) + + ("dev/klog" ("/hurd/streamio" "kmsg")) + ("dev/mem" ("/hurd/storeio" "--no-cache" "mem") #o660) + ("dev/shm" ("/hurd/tmpfs" "--mode=3D1777" "50%") #o644) + ("dev/time" ("/hurd/storeio" "--no-cache" "time") #o644) + + ("dev/vcs" ("/hurd/console")) + ("dev/tty" ("/hurd/magic" "tty") #o666) + + ("dev/tty1" ("/hurd/term" "/dev/tty1" "hurdio" "/dev/vcs/1/co= nsole") + #o666) + ("dev/tty2" ("/hurd/term" "/dev/tty2" "hurdio" "/dev/vcs/2/co= nsole") + #o666) + ("dev/tty3" ("/hurd/term" "/dev/tty3" "hurdio" "/dev/vcs/3/co= nsole") + #o666) + + ("dev/ptyp0" ("/hurd/term" "/dev/ptyp0" "pty-master" "/dev/tty= p0") + #o666) + ("dev/ptyp1" ("/hurd/term" "/dev/ptyp1" "pty-master" "/dev/tty= p1") + #o666) + ("dev/ptyp2" ("/hurd/term" "/dev/ptyp2" "pty-master" "/dev/tty= p2") + #o666) + + ("dev/ttyp0" ("/hurd/term" "/dev/ttyp0" "pty-slave" "/dev/ptyp= 0") + #o666) + ("dev/ttyp1" ("/hurd/term" "/dev/ttyp1" "pty-slave" "/dev/ptyp= 1") + #o666) + ("dev/ttyp2" ("/hurd/term" "/dev/ttyp2" "pty-slave" "/dev/ptyp= 2") + #o666))) + + (for-each scope-set-translator! servers) + (mkdir* (scope "dev/vcs/1")) + (mkdir* (scope "dev/vcs/2")) + (mkdir* (scope "dev/vcs/2")) + (rename-file (scope "/dev/console") (scope "/dev/console-")) + (for-each scope-set-translator! devices) + + (false-if-EEXIST (symlink "/dev/random" (scope "dev/urandom"))) + (mkdir* (scope "dev/fd")) + (false-if-EEXIST (symlink "/dev/fd/0" (scope "dev/stdin"))) + (false-if-EEXIST (symlink "/dev/fd/1" (scope "dev/stdout"))) + (false-if-EEXIST (symlink "/dev/fd/2" (scope "dev/stderr")))) + (define* (boot-hurd-system #:key (on-error 'debug)) "This procedure is meant to be called from an early RC script. @@ -126,20 +255,9 @@ starting the Shepherd. XXX TODO: see linux-boot.scm:boot-system. XXX TODO: add proper file-system checking, mounting XXX TODO: move bits to (new?) (hurd?) (activation?) services -XXX TODO: use settrans/setxattr instead of MAKEDEV +XXX TODO: use Linux xattr/setxattr to remove (settrans in) /libexec/RUNSYS= TEM =20 " - (define translators - '(("/servers/crash-dump-core" ("/hurd/crash" "--dump-core")) - ("/servers/crash-kill" ("/hurd/crash" "--kill")) - ("/servers/crash-suspend" ("/hurd/crash" "--suspend")) - ("/servers/password" ("/hurd/password")) - ("/servers/socket/1" ("/hurd/pflocal")) - ("/servers/socket/2" ("/hurd/pfinet" "--interface" "eth0" - "--address" "10.0.2.15" ;the default QEMU gues= t IP - "--netmask" "255.255.255.0" - "--gateway" "10.0.2.2" - "--ipv6" "/servers/socket/16")))) =20 (display "Welcome, this is GNU's early boot Guile.\n") (display "Use '--repl' for an initrd REPL.\n\n") @@ -147,35 +265,13 @@ XXX TODO: use settrans/setxattr instead of MAKEDEV (call-with-error-handling (lambda () =20 - (define (translated? node) - ;; Return true if a translator is installed on NODE. - (with-output-to-port (%make-void-port "w") - (lambda () - (with-error-to-port (%make-void-port "w") - (lambda () - (zero? (system* "showtrans" "--silent" node))))))) - (let* ((args (command-line)) (system (find-long-option "--system" args)) (to-load (find-long-option "--load" args))) =20 - (format #t "Creating essential servers...\n") - (setenv "PATH" (string-append system "/profile/bin" - ":" system "/profile/sbin")) - (for-each (match-lambda - ((node command) - (unless (translated? node) - (mkdir-p (dirname node)) - (apply invoke "settrans" "--create" node command)))) - translators) - - (format #t "Creating essential device nodes...\n") - (with-directory-excursion "/dev" - (invoke "MAKEDEV" "--devdir=3D/dev" "std") - (invoke "MAKEDEV" "--devdir=3D/dev" "vcs") - (invoke "MAKEDEV" "--devdir=3D/dev" "tty1""tty2" "tty3" "tty4" "t= ty5" "tty6") - (invoke "MAKEDEV" "--devdir=3D/dev" "ptyp0" "ptyp1" "ptyp2") - (invoke "MAKEDEV" "--devdir=3D/dev" "console")) + (format #t "Setting-up essential translators...\n") + (setenv "PATH" (string-append system "/profile/bin")) + (set-hurd-device-translators) =20 (false-if-exception (delete-file "/hurd")) (let ((hurd/hurd (readlink* (string-append system "/profile/hurd"))= )) --=20 Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.com --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable --=20 Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.com --=-=-=-- From unknown Sun Jun 22 11:41:23 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#41855] [PATCH 1/2] hurd-boot: Create individual translators instead of running MAKEDEV. Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 19 Jun 2020 08:04:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 41855 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Jan Nieuwenhuizen Cc: 41855@debbugs.gnu.org Received: via spool by 41855-submit@debbugs.gnu.org id=B41855.159255381517927 (code B ref 41855); Fri, 19 Jun 2020 08:04:01 +0000 Received: (at 41855) by debbugs.gnu.org; 19 Jun 2020 08:03:35 +0000 Received: from localhost ([127.0.0.1]:55061 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jmBzr-0004f5-1U for submit@debbugs.gnu.org; Fri, 19 Jun 2020 04:03:35 -0400 Received: from eggs.gnu.org ([209.51.188.92]:33182) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jmBzp-0004eq-QX for 41855@debbugs.gnu.org; Fri, 19 Jun 2020 04:03:34 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:57735) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jmBzj-0007vs-Kw; Fri, 19 Jun 2020 04:03:27 -0400 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=37272 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jmBzi-00046D-Qd; Fri, 19 Jun 2020 04:03:27 -0400 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <20200614165430.3411-1-janneke@gnu.org> <20200614165649.3496-1-janneke@gnu.org> <87imfsyuib.fsf@gnu.org> <87y2omyap0.fsf@gnu.org> X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 2 Messidor an 228 de la =?UTF-8?Q?R=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, 19 Jun 2020 10:03:25 +0200 In-Reply-To: <87y2omyap0.fsf@gnu.org> (Jan Nieuwenhuizen's message of "Tue, 16 Jun 2020 23:15:07 +0200") Message-ID: <87wo43h48i.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-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi, Jan Nieuwenhuizen skribis: >> It=E2=80=99s counter-intuitive that hurd-boot.scm is used from GNU/Linux. >> Should we move the shared bits in (gnu build hurd) or similar? > > Maybe...I don't know. hurd-boot defines functions that are needed to > create a bootable hurd -- some can be called from GNU/Linux. > > Similarly, "linux-boot" defines "make-essential-device-nodes", which > could be called from GNU/Hurd when we cross build a linux VM. Right. > Well, having one weird situation is a bad argument to propagate the > madness. > > I guess it makes sense to move utility functions like > passive-translator-xattr, passive-translator-installed?, and translated? > could be moved to (gnu build hurd). > > Haven't made this change yet, let me know you want; or feel free to make > the change yourself :-) Yeah, we can leave that for later. :-) > From 1e27aabb8bf32e85547517e1f0e35f789a08933d Mon Sep 17 00:00:00 2001 > From: "Jan (janneke) Nieuwenhuizen" > Date: Mon, 8 Jun 2020 13:02:13 +0200 > Subject: [PATCH v2 1/2] hurd-boot: Create individual translators instead = of > running MAKEDEV. > > * guix/build/utils.scm Something=E2=80=99s wrong! > * gnu/build/hurd-boot.scm (make-hurd-device-nodes): Do not create > dev/{null,zero,full,random,urandom} mount points. > (passive-translator-xattr?, passive-translator-installed?, translated?, > set-hurd-device-translators): New procedures. > (false-if-EEXIST): New macro. > (boot-hurd-system): Use them instead of running MAKEDEV. [...] > +(define* (set-translator! file-name command #:optional (mode #o600)) Nitpick: there shouldn=E2=80=99t be a bang here (just like for =E2=80=98mkd= ir=E2=80=99, etc.). Otherwise LGTM, thank you! Ludo=E2=80=99. From unknown Sun Jun 22 11:41:23 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: "Jan (janneke) Nieuwenhuizen" Subject: bug#41855: closed (Re: bug#41855: [PATCH 1/2] hurd-boot: Create individual translators instead of running MAKEDEV.) Message-ID: References: <87o8pfa1i6.fsf@gnu.org> <20200614165430.3411-1-janneke@gnu.org> X-Gnu-PR-Message: they-closed 41855 X-Gnu-PR-Package: guix-patches X-Gnu-PR-Keywords: patch Reply-To: 41855@debbugs.gnu.org Date: Fri, 19 Jun 2020 08:45:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1592556302-21820-1" This is a multi-part message in MIME format... ------------=_1592556302-21820-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #41855: [PATCH 0/2] hurd-boot: Cleanups: Remove MAKEDEV, then use setxattr = (on the Hurd). which was filed against the guix-patches package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 41855@debbugs.gnu.org. --=20 41855: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D41855 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1592556302-21820-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 41855-done) by debbugs.gnu.org; 19 Jun 2020 08:44:30 +0000 Received: from localhost ([127.0.0.1]:55089 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jmCdR-0005f7-Sq for submit@debbugs.gnu.org; Fri, 19 Jun 2020 04:44:30 -0400 Received: from eggs.gnu.org ([209.51.188.92]:41220) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jmCdN-0005er-Rt for 41855-done@debbugs.gnu.org; Fri, 19 Jun 2020 04:44:28 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:58186) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jmCdI-0005z4-J3; Fri, 19 Jun 2020 04:44:20 -0400 Received: from [2001:980:1b4f:1:42d2:832d:bb59:862] (port=57026 helo=dundal.peder.onsbrabantnet.nl) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jmCdI-0007ta-2b; Fri, 19 Jun 2020 04:44:20 -0400 From: Jan Nieuwenhuizen To: Ludovic =?utf-8?Q?Court=C3=A8s?= Subject: Re: bug#41855: [PATCH 1/2] hurd-boot: Create individual translators instead of running MAKEDEV. Organization: AvatarAcademy.nl References: <20200614165430.3411-1-janneke@gnu.org> <20200614165649.3496-1-janneke@gnu.org> <87imfsyuib.fsf@gnu.org> <87y2omyap0.fsf@gnu.org> <87wo43h48i.fsf@gnu.org> X-Url: http://AvatarAcademy.nl Date: Fri, 19 Jun 2020 10:44:17 +0200 In-Reply-To: <87wo43h48i.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Fri, 19 Jun 2020 10:03:25 +0200") Message-ID: <87o8pfa1i6.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-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 41855-done Cc: 41855-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Ludovic Court=C3=A8s writes: Hi! > Jan Nieuwenhuizen skribis: >> Similarly, "linux-boot" defines "make-essential-device-nodes", which >> could be called from GNU/Hurd when we cross build a linux VM. > > Right. > >> Haven't made this change yet, let me know you want; or feel free to make >> the change yourself :-) > > Yeah, we can leave that for later. :-) "Good" :-) >> From 1e27aabb8bf32e85547517e1f0e35f789a08933d Mon Sep 17 00:00:00 2001 >> From: "Jan (janneke) Nieuwenhuizen" >> Date: Mon, 8 Jun 2020 13:02:13 +0200 >> Subject: [PATCH v2 1/2] hurd-boot: Create individual translators instead= of >> running MAKEDEV. >> >> * guix/build/utils.scm > > Something=E2=80=99s wrong! Oops, removed this mid-way change-of-mind sublimation. >> * gnu/build/hurd-boot.scm (make-hurd-device-nodes): Do not create >> dev/{null,zero,full,random,urandom} mount points. >> (passive-translator-xattr?, passive-translator-installed?, translated?, >> set-hurd-device-translators): New procedures. >> (false-if-EEXIST): New macro. >> (boot-hurd-system): Use them instead of running MAKEDEV. > > [...] > >> +(define* (set-translator! file-name command #:optional (mode #o600)) > > Nitpick: there shouldn=E2=80=99t be a bang here (just like for =E2=80=98m= kdir=E2=80=99, etc.). ...ah, interesting. ! is for scheme'y imperativeness. > Otherwise LGTM, thank you! Pushed this serie master as f25e8f76fec03e5a31c221e7427d6962ece1aa67 That was all I have all from wip-hurd-vm. At least until we decide to risk using the linux xattr patch (looks like that will be in linux-5.8). Janneke --=20 Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.com ------------=_1592556302-21820-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 14 Jun 2020 16:54:38 +0000 Received: from localhost ([127.0.0.1]:44408 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jkVu2-00039l-5j for submit@debbugs.gnu.org; Sun, 14 Jun 2020 12:54:38 -0400 Received: from lists.gnu.org ([209.51.188.17]:60588) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jkVtz-00039c-TY for submit@debbugs.gnu.org; Sun, 14 Jun 2020 12:54:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59690) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jkVtz-0001cU-KB for bug-guix@gnu.org; Sun, 14 Jun 2020 12:54:35 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:48611) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jkVty-0001xY-10; Sun, 14 Jun 2020 12:54:34 -0400 Received: from [2001:980:1b4f:1:42d2:832d:bb59:862] (port=48140 helo=dundal.fritz.box) by fencepost.gnu.org with esmtpa (Exim 4.82) (envelope-from ) id 1jkVtw-0000Jg-Ll; Sun, 14 Jun 2020 12:54:33 -0400 From: "Jan (janneke) Nieuwenhuizen" To: bug-guix@gnu.org Subject: [PATCH 0/2] hurd-boot: Cleanups: Remove MAKEDEV, then use setxattr (on the Hurd). Date: Sun, 14 Jun 2020 18:54:30 +0200 Message-Id: <20200614165430.3411-1-janneke@gnu.org> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: submit Cc: Jan Nieuwenhuizen X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) From: Jan Nieuwenhuizen Hi! Several variants of these patches were present on wip-hurd-vm before. Currently, we are running MAKEDEV from activation, and thus need hurd, bash, coreutils and sed in PATH. The first patch replaces that with scheme code, which seems a no-brainer to me. Then we only need hurd in PATH for settrans and gettrans. The second patch then switches to using setxattr instead of settrans; alas we still need gettrans as getxattr behaves "funny" on translated nodes. I suppose that would be a question for the bug-hurd? Greetings, Janneke Jan (janneke) Nieuwenhuizen (2): hurd-boot: Create individual translators instead of running MAKEDEV. hurd-boot: Use 'setxattr' instead of invoking settrans. gnu/build/hurd-boot.scm | 172 +++++++++++++++++++++++++++++----------- gnu/system.scm | 1 + 2 files changed, 126 insertions(+), 47 deletions(-) -- Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com ------------=_1592556302-21820-1--