all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
@ 2023-05-15 19:35 Janneke Nieuwenhuizen
  2023-05-15 19:36 ` [bug#63527] [PATCH 1/3] DRAFT gnu: Add rumpkernel Janneke Nieuwenhuizen
                   ` (6 more replies)
  0 siblings, 7 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-15 19:35 UTC (permalink / raw)
  To: 63527

Hi!

Some time ago we kind of promised to move forward with the Hurd[0] and while
we have had this pretty neat "childhurd" feature for some time[1], to really
do that we should get it to boot on real iron.  An important ingredient to
make that happen made it into Hurd upstream over a year ago[2]: rumpdisk
support making use of the NetBSD rumpkernel[3].

Building this rumpkernel is a bit tricksy, Debian uses an import of the NetBSD
git archive[4] --which is quite large--with some twenty-odd custom patches[5].
Some of us asked bug-hurd to document their rumpkernel support[6] or distribute
it in a less Debian-centric and more usual way to make it more digestible for
other parties (such as Guix) to adopt, but that was rejected at the time[7].

Inspired by Josselin Poiret's recent Hurd updates[8] our chats on IRC and
especially their succes in getting it to boot again on master[9], I decided to
just take the easiest route possible and build the rumpkernel from Debian's
salsa package git archive and its patch series.

The good news is that with this patch series the Hurd now has two additional
servers: pci.arbiter and rumpdisk.  Sadly, it currently hangs for me on

--8<---------------cut here---------------start------------->8---
start: pci.arbiter:
--8<---------------cut here---------------end--------------->8---

Anyway, while this builds, we probably do not want to rely on Debian's
packaging support in this way but I'm also not sure what would be a better
course of action right now.  Other than asking bug-hurd again to create an
upstream for their code outside/independent of their packaging.

Help and thoughts much appreciated!

See also:

    https://gitlab.com/janneke/guix/-/tree/wip-hurd

Greetings,
Janneke

PS: I build it like this

--8<---------------cut here---------------start------------->8---
./pre-inst-env guix system image -t hurd-qcow2 gnu/system/examples/bare-hurd.tmpl
--8<---------------cut here---------------end--------------->8---

and start it doing

--8<---------------cut here---------------start------------->8---
guix shell qemu -- qemu-system-i386                     \
-m 1024                                                 \
--enable-kvm                                            \
--device rtl8139,netdev=net0                            \
--netdev user,id=net0,hostfwd=tcp:0.0.0.0:11022-:2222   \
--snapshot                                              \
--hda /gnu/store/0zmdmjafmz0hgzw3gszl38nd0n2bblq9-disk-image
--8<---------------cut here---------------end--------------->8---

[0] https://guix.gnu.org/en/blog/2020/deprecating-support-for-the-linux-kernel/
[1] https://guix.gnu.org/en/blog/2020/childhurds-and-substitutes/
[2] https://archive.fosdem.org/2022/schedule/event/dzammit/
[3] https://wiki.netbsd.org/rumpkernel
[4] https://salsa.debian.org/hurd-team/rumpkernel
[5] https://salsa.debian.org/hurd-team/rumpkernel/-/tree/master/debian/patches
[6] https://lists.gnu.org/archive/html/bug-hurd/2022-02/msg00020.html
[7] https://lists.gnu.org/archive/html/bug-hurd/2022-02/msg00051.html
[8] https://mail.gnu.org/archive/html/guix-patches/2023-03/msg01597.html
[9] https://issues.guix.gnu.org/63501

Janneke Nieuwenhuizen (3):
  DRAFT gnu: Add rumpkernel.
  gnu: hurd: Add rumpkernel.
  DRAFT system: hurd: Boot with pci.arbiter and rumpdisk.

 gnu/packages/hurd.scm | 232 +++++++++++++++++++++++++++++++++++++++++-
 gnu/system.scm        |  26 ++++-
 2 files changed, 248 insertions(+), 10 deletions(-)


base-commit: 555a41f31c9ec9f4344d00beb94f663b44017019
-- 
2.39.2





^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 1/3] DRAFT gnu: Add rumpkernel.
  2023-05-15 19:35 [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Janneke Nieuwenhuizen
@ 2023-05-15 19:36 ` Janneke Nieuwenhuizen
  2023-05-15 19:36 ` [bug#63527] [PATCH 2/3] gnu: hurd: " Janneke Nieuwenhuizen
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-15 19:36 UTC (permalink / raw)
  To: 63527

XXX We should probably not use Debian Salsa as source for the rumpkernel
checkout and patches and use the rumpkernel upstream instead copying Debian's
patches into our archive?  Using the easier route as a first attempt to git it
to build (and boot) first.

* gnu/packages/hurd.scm (rumpkernel): New variable.
---
 gnu/packages/hurd.scm | 216 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 215 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 34c7c00f2d..f834abcf43 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2018, 2020-2023 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2020, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2022, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Rene Saavedra <pacoon@protonmail.com>
 ;;;
@@ -662,3 +662,217 @@ (define-public netdde
       ;; Some drivers are dually licensed with the options being GPLv2 or one
       ;; of MPL/Expat/BSD-3 (dependent on the driver).
       (license gpl2))))
+
+(define-public rumpkernel
+  (let ((commit "cd34aee0ee0f7a06011b2f988ce27a8fdc7ba900")
+        (revision "0"))
+    (package
+      (name "rumpkernel")
+      (version (git-version "0-20211031" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://salsa.debian.org/hurd-team/rumpkernel.git")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "0dqr6nzsv25p66yiambq4jcq4870vzf23289cns0gdpk74gamm4l"))
+                (file-name (git-file-name name commit))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:tests? #f
+        #:modules '((srfi srfi-26)
+                    (ice-9 match)
+                    (ice-9 rdelim)
+                    (guix build utils)
+                    (guix build gnu-build-system))
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'apply-patches
+              (lambda* (#:key target #:allow-other-keys)
+                (let* ((patch-directory "debian/patches/")
+                       (series (string-append patch-directory "series"))
+                       (text (with-input-from-file series read-string))
+                       (lines (string-split (string-trim-right text) #\newline))
+                       (patches (filter (negate (cute string-prefix? "#" <>))
+                                        lines))
+                       (patch-files (map (cute string-append patch-directory <>)
+                                         patches)))
+                  (for-each
+                   (cute invoke "patch" "--force" "-p1" "-i" <>)
+                   patch-files)
+                  (when target
+                    (substitute* "pci-userspace/src-gnu/Makefile.inc"
+                      (("\\<mig\\>")
+                       (string-append target "-mig")))
+                    (substitute* "buildrump.sh/src/build.sh"
+                      (("if [[] \"$[{]tool[}]\" = \"CC\" []]; then" all)
+                       (string-append
+                        "if [ \"${tool}\" = \"AR\" ]; then
+		lctool=${TARGET_AR-ar}
+	elif [ \"${tool}\" = \"NM\" ]; then
+		lctool=${TARGET_NM-nm}
+el"
+                        all))))
+                  ;; Avoid #! /gnu/store/...-bash/gnu/store/...-bash/bin/sh
+                  (substitute* '("buildrump.sh/src/tools/genassym/Makefile"
+                                 "buildrump.sh/src/tools/lorder/Makefile")
+                    (("[$][{]TOOL_SED[}] -e \"s,/bin/sh")
+                     "${TOOL_SED} -e \"s,[ !]/bin/sh")))))
+            (add-before 'configure 'setenv
+              (lambda* (#:key build target #:allow-other-keys)
+                (define (noisy-setenv name value)
+                  (setenv name value)
+                  (format (current-error-port) "set ~a=~s\n" name value))
+                (noisy-setenv "HOST_CC" "gcc")
+                (let ((target (or target build)))
+                  (noisy-setenv "TARGET_AR" (string-append target "-ar"))
+                  (noisy-setenv "TARGET_CC" (string-append target "-gcc"))
+                  (noisy-setenv "TARGET_CXX" (string-append target "-g++"))
+                  (noisy-setenv "TARGET_LD" (string-append target "-ld"))
+                  (noisy-setenv "TARGET_NM" (string-append target "-nm")))
+                (setenv "PAWD" "pwd")
+                (for-each
+                 (cute noisy-setenv <> "")
+                 '("_GCC_CRTENDS"
+                   "_GCC_CRTEND"
+                   "_GCC_CRTBEGINS"
+                   "_GCC_CRTBEGIN"
+                   "_GCC_CRTI"
+                   "_GCC_CRTN"))
+                (noisy-setenv "BSDOBJDIR=" (string-append (getcwd) "/obj"))))
+            (replace 'configure
+              (lambda args
+                (let ((configure (assoc-ref %standard-phases 'configure)))
+                  (with-directory-excursion "buildrump.sh/src/lib/librumpuser"
+                    (apply configure args)))))
+            (replace 'build
+              (lambda* (#:key parallel-build? #:allow-other-keys)
+                (let* ((jobs (if parallel-build? (parallel-job-count) 1))
+                       (host-cpu (match #$(or (%current-target-system
+                                               (%current-system)))
+                                   ("i586-pc-gnu" "i386")
+                                   ("i686-linux" "i386")
+                                   ("x86_64-linux" "amd64")))
+                       (toprump (string-append
+                                 (getcwd)
+                                 "/buildrump.sh/src/sys/rump"))
+                       (rump-make (string-append
+                                   (getcwd)
+                                   "/buildrump.sh/src/obj/tooldir/bin/nbmake-"
+                                   host-cpu)))
+                  (mkdir "obj")
+                  (with-directory-excursion "buildrump.sh/src"
+                    (invoke
+                     "sh" "build.sh"
+                     "-V" "TOOLS_BUILDRUMP=yes"
+                     "-V" "MKBINUTILS=no" 
+                     "-V" "MKGDB=no" 
+                     "-V" "MKGROFF=no" 
+                     "-V" (string-append "TOPRUMP=" toprump)
+                     "-V" "BUILDRUMP_CPPFLAGS=-Wno-error=stringop-overread"
+                     "-V" "RUMPUSER_EXTERNAL_DPLIBS=pthread" 
+		     "-V" (string-append
+                           "CPPFLAGS="
+                           " -I../../obj/destdir." host-cpu "/usr/include"
+                           " -D_FILE_OFFSET_BITS=64"
+                           " -DRUMP_REGISTER_T=int"
+                           " -DRUMPUSER_CONFIG=yes"
+                           " -DNO_PCI_MSI_MSIX=yes"
+                           " -DNUSB_DMA=1")
+                     "-V" (string-append
+                           "CWARNFLAGS="
+                           " -Wno-error=maybe-uninitialized"
+                           " -Wno-error=address-of-packed-member"
+                           " -Wno-error=unused-variable"
+                           " -Wno-error=stack-protector"
+                           " -Wno-error=array-parameter"
+                           " -Wno-error=array-bounds"
+                           " -Wno-error=stringop-overflow")
+                     "-V" "LIBCRTBEGIN="
+                     "-V" "LIBCRTEND="
+                     "-V" "LIBCRT0="
+                     "-V" "LIBCRTI="
+                     "-V" "_GCC_CRTENDS="
+                     "-V" "_GCC_CRTEND="
+                     "-V" "_GCC_CRTBEGINS="
+                     "-V" "_GCC_CRTBEGIN="
+                     "-V" "_GCC_CRTI="
+                     "-V" "_GCC_CRTN="
+                     "-U"
+                     "-u"
+                     "-T" "./obj/tooldir"
+                     "-m" host-cpu
+                     "-j" (number->string jobs)
+                     "tools"
+                     "rump"))
+                  (with-directory-excursion "buildrump.sh/src/lib/librumpuser"
+                    (setenv "RUMPRUN" "true")
+                    (invoke rump-make "dependall"))
+                  (with-directory-excursion "pci-userspace/src-gnu"
+                    (invoke rump-make "dependall")))))
+            (replace 'install
+              (lambda _
+                (define (install-file file target)
+                  (let ((dest (string-append target (basename file))))
+                    (format (current-output-port) "`~a' -> `~a'~%" file dest)
+                    (mkdir-p (dirname dest))
+                    (if (file-exists? dest)
+                        (format (current-error-port)
+                                "warning: skipping: ~a\n" file)
+                        (let ((stat (lstat file)))
+                          (case (stat:type stat)
+                            ((symlink)
+                             (let ((target (readlink file)))
+                               (symlink target dest)))
+                            (else
+                             (copy-file file dest)))))))
+                (let ((header (string-append #$output "/include/rump"))
+                      (lib (string-append #$output "/lib/")))
+                  (mkdir-p header)
+                  (copy-recursively "buildrump.sh/src/sys/rump/include/rump"
+                                    header)
+                  (mkdir-p lib)
+                  (for-each
+                   (cute install-file <> lib)
+                   (append (find-files "buildrump.sh/src" "librump.*[.](a|so.*)")
+                           (find-files "obj" "librump.*[.](a|so.*)")))))))))
+      (inputs
+       (list gnumach-headers libpciaccess))
+      (native-inputs
+       (list
+        autoconf
+        automake
+        libgcrypt
+        (if (%current-target-system)
+            (let* ((cross-base (resolve-interface '(gnu packages cross-base)))
+                   (cross-mig (module-ref cross-base 'cross-mig)))
+              (cross-mig (%current-target-system)))
+            mig)
+        zlib))
+      (supported-systems %hurd-systems)
+      (home-page "https://wiki.netbsd.org/rumpkernel")
+      (synopsis "NetBSD as rumpkernel for the GNU/Hurd")
+      (description
+       "This package provides NetBSD as rumpkernel for the GNU/Hurd, so that
+the Hurd may be installed on iron.  Using this rumpkernel package, the hurd
+package's rumpdisk can be built which provides the pci.arbiter and rumpdisk
+servers.")
+      (license (list
+                asl2.0
+                boost1.0
+                bsd-2
+                bsd-3
+                bsd-4
+                cddl1.0
+                expat
+                gpl1
+                gpl2+
+                gpl3+
+                isc
+                lgpl2.0+
+                public-domain
+                (@ (guix licenses) zlib)
+                (non-copyleft "file://src/lib/libc/hash/hashhl.c"
+                              "See debian/copyright in the distribution."))))))
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 2/3] gnu: hurd: Add rumpkernel.
  2023-05-15 19:35 [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Janneke Nieuwenhuizen
  2023-05-15 19:36 ` [bug#63527] [PATCH 1/3] DRAFT gnu: Add rumpkernel Janneke Nieuwenhuizen
@ 2023-05-15 19:36 ` Janneke Nieuwenhuizen
  2023-05-15 19:36 ` [bug#63527] [PATCH 3/3] DRAFT system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-15 19:36 UTC (permalink / raw)
  To: 63527

* gnu/packages/hurd.scm (hurd)[inputs]: Add rumpkernel.
[arguments]: Rename `prepare-dde' phase to 'prepare-addons'.  Add "rumpdisk"
directory.
---
 gnu/packages/hurd.scm | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index f834abcf43..fad529580d 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -356,7 +356,7 @@ (define-public hurd
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'prepare-dde
+         (add-after 'unpack 'prepare-addons
            (lambda* (#:key native-inputs inputs #:allow-other-keys)
              ;; First we import the things we want from dde.
              (for-each make-file-writable (find-files "."))
@@ -370,7 +370,10 @@ (define-public hurd
              ;; Makefile. libdde_linux26 is built later in its own phase.
              (substitute* "Makefile"
                (("libbpf ")
-                "libbpf libmachdevdde libddekit"))))
+                "libbpf libmachdevdde libddekit rumpdisk"))
+             (substitute* "rumpdisk/Makefile"
+               (("rumpdev_ahcisata" all)
+                (string-append all " rumpdev_ata")))))
          (add-after 'unpack 'find-tirpc
            (lambda* (#:key inputs #:allow-other-keys)
              (for-each (lambda (var)
@@ -541,7 +544,11 @@ (define-public hurd
                 ;; clnt_create
                 "ac_func_search_save_LIBS=-ltirpc"
                 "ac_cv_search_clnt_create=false"
-                "CFLAGS=-fcommon")))
+                "CFLAGS=-fcommon")
+       #:make-flags
+         (list (string-append "RUMPPATH="
+                              (assoc-ref %build-inputs "rumpkernel")
+                              "/lib"))))
     (build-system gnu-build-system)
     (inputs
      `(("libgcrypt" ,libgcrypt)                  ;for /hurd/random
@@ -557,7 +564,8 @@ (define-public hurd
        ("coreutils" ,coreutils)
        ("sed" ,sed)
        ("grep" ,grep)
-       ("util-linux" ,util-linux)))
+       ("util-linux" ,util-linux)
+       ("rumpkernel" ,rumpkernel)))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 3/3] DRAFT system: hurd: Boot with pci.arbiter and rumpdisk.
  2023-05-15 19:35 [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Janneke Nieuwenhuizen
  2023-05-15 19:36 ` [bug#63527] [PATCH 1/3] DRAFT gnu: Add rumpkernel Janneke Nieuwenhuizen
  2023-05-15 19:36 ` [bug#63527] [PATCH 2/3] gnu: hurd: " Janneke Nieuwenhuizen
@ 2023-05-15 19:36 ` Janneke Nieuwenhuizen
  2023-05-16 13:48 ` [bug#63527] [PATCH v2 0/3] Initial attempt at rumpdisk support for the Hurd Janneke Nieuwenhuizen
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-15 19:36 UTC (permalink / raw)
  To: 63527

XXX Debian uses the .STATIC variants, but they are not being built.  Do we
need those?

* gnu/system.scm (hurd-multiboot-modules): Add commands for pci.arbiter and
rumpdisk.
---
 gnu/system.scm | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/gnu/system.scm b/gnu/system.scm
index 354f58f55b..29445cec2d 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;; Copyright © 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <jannek@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <jannek@gnu.org>
 ;;; Copyright © 2020, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com>
@@ -1486,16 +1486,29 @@ (define (operating-system-multiboot-modules os)
 
 (define (hurd-multiboot-modules os)
   (let* ((hurd (operating-system-hurd os))
+         (pci-arbiter-command
+          (list (file-append hurd "/hurd/pci-arbiter")
+                "pci.arbiter"
+                "--host-priv-port='${host-port}'"
+                "--device-master-port='${device-port}'"
+                "--next-task='${disk-task}'"
+                "--store-type=typed"
+                "'$(pci-task=task-create)'"
+                "'$(task-resume)'"))
+         (rumpdisk-command
+          (list (file-append hurd "/hurd/rumpdisk")
+                "rumpdisk"
+                "--next-task='${fs-task}'"
+                "'$(disk-task=task-create)'"))
          (root-file-system-command
           (list (file-append hurd "/hurd/ext2fs.static")
                 "ext2fs"
                 "--multiboot-command-line='${kernel-command-line}'"
-                "--host-priv-port='${host-port}'"
-                "--device-master-port='${device-port}'"
                 "--exec-server-task='${exec-task}'"
                 "--store-type=typed"
                 "--x-xattr-translator-records"
-                "'${root}'" "'$(task-create)'" "'$(task-resume)'"))
+                "'${root}'"
+                "'$(fs-task=task-create)'"))
          (target (%current-target-system))
          (libc (if target
                    (with-parameters ((%current-target-system #f))
@@ -1512,7 +1525,10 @@ (define (hurd-multiboot-modules os)
           ;;       (file-append hurd "/hurd/exec") "'$(exec-task=task-create)'")
           (list (file-append hurd "/hurd/exec.static") "exec"
                 "'$(exec-task=task-create)'")))
-    (list root-file-system-command exec-server-command)))
+    (list pci-arbiter-command
+          rumpdisk-command
+          root-file-system-command
+          exec-server-command)))
 
 (define* (operating-system-boot-parameters os root-device
                                            #:key system-kernel-arguments?)
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v2 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-15 19:35 [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Janneke Nieuwenhuizen
                   ` (2 preceding siblings ...)
  2023-05-15 19:36 ` [bug#63527] [PATCH 3/3] DRAFT system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
@ 2023-05-16 13:48 ` Janneke Nieuwenhuizen
  2023-05-16 13:48   ` [bug#63527] [PATCH v2 1/3] gnu: Add rumpkernel Janneke Nieuwenhuizen
                     ` (2 more replies)
  2023-05-18  8:45 ` [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd Janneke Nieuwenhuizen
                   ` (2 subsequent siblings)
  6 siblings, 3 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-16 13:48 UTC (permalink / raw)
  To: 63527

Hi,

Our patches for the rumpkernel crossbuild have been accepted upstream

    https://lists.gnu.org/archive/html/bug-hurd/2023-05//msg00276.html

which makes our rumpkernel package a lot nicer.  I suggest using the Debian
Salsa rumpkernel package as upstream for now until development has stabilized.

The pci.arbiter and rumpdisk are now also built statically and the .STATIC
variants are used for grub.cfg.  A copy/pasto was fixed for the grub.cfg.

Sadly, we only get just a little bit further, boot now hangs like this for me:

    start pci.arbiter: pci pci.arbiter: Starting the PCI system: Gratuitous error

Greetings,
Janneke

Janneke Nieuwenhuizen (3):
  gnu: Add rumpkernel.
  gnu: hurd: Add rumpkernel.
  DRAFT system: hurd: Boot with pci.arbiter and rumpdisk.

 gnu/local.mk                                  |   1 +
 gnu/packages/hurd.scm                         | 225 +++++++++++++++++-
 .../patches/rumpkernel-cross-build.patch      | 153 ++++++++++++
 gnu/system.scm                                |  25 +-
 4 files changed, 394 insertions(+), 10 deletions(-)
 create mode 100644 gnu/packages/patches/rumpkernel-cross-build.patch


base-commit: 555a41f31c9ec9f4344d00beb94f663b44017019
-- 
2.39.2





^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v2 1/3] gnu: Add rumpkernel.
  2023-05-16 13:48 ` [bug#63527] [PATCH v2 0/3] Initial attempt at rumpdisk support for the Hurd Janneke Nieuwenhuizen
@ 2023-05-16 13:48   ` Janneke Nieuwenhuizen
  2023-05-16 13:48   ` [bug#63527] [PATCH v2 2/3] gnu: hurd: " Janneke Nieuwenhuizen
  2023-05-16 13:48   ` [bug#63527] [PATCH v2 3/3] DRAFT system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
  2 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-16 13:48 UTC (permalink / raw)
  To: 63527

This uses Debian Salsa package management as upstream as that is where
delopment happens.  Once things have stabalized upstream may change to the
NetBSD git from where Debian takes their snapshots.

* gnu/packages/patches/rumpkernel-cross-build.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/hurd.scm (rumpkernel): Use it in new variable.
---
 gnu/local.mk                                  |   1 +
 gnu/packages/hurd.scm                         | 208 +++++++++++++++++-
 .../patches/rumpkernel-cross-build.patch      | 153 +++++++++++++
 3 files changed, 361 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/rumpkernel-cross-build.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 012ce84d2d..0e394e5c36 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1860,6 +1860,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch 	\
   %D%/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch 	\
   %D%/packages/patches/rottlog-direntry.patch 			\
+  %D%/packages/patches/rumpkernel-cross-build.patch		\
   %D%/packages/patches/ruby-hiredis-use-system-hiredis.patch	\
   %D%/packages/patches/ruby-hydra-minimal-no-byebug.patch	\
   %D%/packages/patches/ruby-anystyle-data-immutable-install.patch	\
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 34c7c00f2d..8edf5d91c6 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2018, 2020-2023 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2020, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2022, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Rene Saavedra <pacoon@protonmail.com>
 ;;;
@@ -662,3 +662,209 @@ (define-public netdde
       ;; Some drivers are dually licensed with the options being GPLv2 or one
       ;; of MPL/Expat/BSD-3 (dependent on the driver).
       (license gpl2))))
+
+(define-public rumpkernel
+  (let ((commit "ec2ab9612be4dc48a316a21a0c96d3388478a064")
+        (revision "2"))
+    (package
+      (name "rumpkernel")
+      (version (git-version "0-20211031" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://salsa.debian.org/hurd-team/rumpkernel.git")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "1ypjg3jyzhh3gnanmk6fh76dwl5ml78n311nbi0hw7f7hygzn7vk"))
+                (file-name (git-file-name name commit))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:tests? #f
+        #:modules '((srfi srfi-26)
+                    (ice-9 match)
+                    (ice-9 rdelim)
+                    (guix build utils)
+                    (guix build gnu-build-system))
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'apply-patches
+              (lambda* (#:key target #:allow-other-keys)
+                (let* ((patch-directory "debian/patches/")
+                       (series (string-append patch-directory "series"))
+                       (text (with-input-from-file series read-string))
+                       (lines (string-split (string-trim-right text) #\newline))
+                       (patches (filter (negate (cute string-prefix? "#" <>))
+                                        lines))
+                       (patch-files (map
+                                     (cute string-append patch-directory <>)
+                                     patches)))
+                  (for-each
+                   (cute invoke "patch" "--force" "-p1" "-i" <>)
+                   patch-files)
+                  ;; Somewhere in the build.sh/make process MIG is not being
+                  ;; exported, apparently.
+                  (when target
+                    (substitute* "pci-userspace/src-gnu/Makefile.inc"
+                      (("MIG=mig")
+                       (string-append "MIG=" target "-mig")))))))
+            (add-before 'configure 'setenv
+              (lambda* (#:key build target #:allow-other-keys)
+                (define (noisy-setenv name value)
+                  (setenv name value)
+                  (format (current-error-port) "set ~a=~s\n" name value))
+                (noisy-setenv "HOST_CC" "gcc")
+                (when target
+                  (noisy-setenv "MIG" (string-append target "-mig")))
+                (let ((target (or target build)))
+                  (noisy-setenv "TARGET_AR" (string-append target "-ar"))
+                  (noisy-setenv "TARGET_CC" (string-append target "-gcc"))
+                  (noisy-setenv "TARGET_CXX" (string-append target "-g++"))
+                  (noisy-setenv "TARGET_LD" (string-append target "-ld"))
+                  (noisy-setenv "TARGET_MIG" (string-append target "-mig"))
+                  (noisy-setenv "TARGET_NM" (string-append target "-nm")))
+                (setenv "PAWD" "pwd")
+                (for-each
+                 (cute noisy-setenv <> "")
+                 '("_GCC_CRTENDS"
+                   "_GCC_CRTEND"
+                   "_GCC_CRTBEGINS"
+                   "_GCC_CRTBEGIN"
+                   "_GCC_CRTI"
+                   "_GCC_CRTN"))
+                (noisy-setenv "BSDOBJDIR=" (string-append (getcwd) "/obj"))))
+            (replace 'configure
+              (lambda args
+                (let ((configure (assoc-ref %standard-phases 'configure)))
+                  (with-directory-excursion "buildrump.sh/src/lib/librumpuser"
+                    (apply configure args)))))
+            (replace 'build
+              (lambda* (#:key parallel-build? #:allow-other-keys)
+                (let* ((jobs (if parallel-build? (parallel-job-count) 1))
+                       (host-cpu (match #$(or (%current-target-system
+                                               (%current-system)))
+                                   ("i586-pc-gnu" "i386")
+                                   ("i686-linux" "i386")
+                                   ("x86_64-linux" "amd64")))
+                       (toprump (string-append
+                                 (getcwd)
+                                 "/buildrump.sh/src/sys/rump"))
+                       (rump-make (string-append
+                                   (getcwd)
+                                   "/buildrump.sh/src/obj/tooldir/bin/nbmake-"
+                                   host-cpu)))
+                  (mkdir "obj")
+                  (with-directory-excursion "buildrump.sh/src"
+                    (invoke
+                     "sh" "build.sh"
+                     "-V" "TOOLS_BUILDRUMP=yes"
+                     "-V" "MKBINUTILS=no" 
+                     "-V" "MKGDB=no" 
+                     "-V" "MKGROFF=no" 
+                     "-V" (string-append "TOPRUMP=" toprump)
+                     "-V" "BUILDRUMP_CPPFLAGS=-Wno-error=stringop-overread"
+                     "-V" "RUMPUSER_EXTERNAL_DPLIBS=pthread" 
+		     "-V" (string-append
+                           "CPPFLAGS="
+                           " -I../../obj/destdir." host-cpu "/usr/include"
+                           " -D_FILE_OFFSET_BITS=64"
+                           " -DRUMP_REGISTER_T=int"
+                           " -DRUMPUSER_CONFIG=yes"
+                           " -DNO_PCI_MSI_MSIX=yes"
+                           " -DNUSB_DMA=1")
+                     "-V" (string-append
+                           "CWARNFLAGS="
+                           " -Wno-error=maybe-uninitialized"
+                           " -Wno-error=address-of-packed-member"
+                           " -Wno-error=unused-variable"
+                           " -Wno-error=stack-protector"
+                           " -Wno-error=array-parameter"
+                           " -Wno-error=array-bounds"
+                           " -Wno-error=stringop-overflow")
+                     "-V" "LIBCRTBEGIN="
+                     "-V" "LIBCRTEND="
+                     "-V" "LIBCRT0="
+                     "-V" "LIBCRTI="
+                     "-V" "_GCC_CRTENDS="
+                     "-V" "_GCC_CRTEND="
+                     "-V" "_GCC_CRTBEGINS="
+                     "-V" "_GCC_CRTBEGIN="
+                     "-V" "_GCC_CRTI="
+                     "-V" "_GCC_CRTN="
+                     "-U"
+                     "-u"
+                     "-T" "./obj/tooldir"
+                     "-m" host-cpu
+                     "-j" (number->string jobs)
+                     "tools"
+                     "rump"))
+                  (with-directory-excursion "buildrump.sh/src/lib/librumpuser"
+                    (setenv "RUMPRUN" "true")
+                    (invoke rump-make "dependall"))
+                  (with-directory-excursion "pci-userspace/src-gnu"
+                    (invoke rump-make "dependall")))))
+            (replace 'install
+              (lambda _
+                (define (install-file file target)
+                  (let ((dest (string-append target (basename file))))
+                    (format (current-output-port) "`~a' -> `~a'~%" file dest)
+                    (mkdir-p (dirname dest))
+                    (if (file-exists? dest)
+                        (format (current-error-port)
+                                "warning: skipping: ~a\n" file)
+                        (let ((stat (lstat file)))
+                          (case (stat:type stat)
+                            ((symlink)
+                             (let ((target (readlink file)))
+                               (symlink target dest)))
+                            (else
+                             (copy-file file dest)))))))
+                (let ((header (string-append #$output "/include/rump"))
+                      (lib (string-append #$output "/lib/")))
+                  (mkdir-p header)
+                  (copy-recursively "buildrump.sh/src/sys/rump/include/rump"
+                                    header)
+                  (mkdir-p lib)
+                  (for-each
+                   (cute install-file <> lib)
+                   (append (find-files "buildrump.sh/src" "librump.*[.](a|so.*)")
+                           (find-files "obj" "librump.*[.](a|so.*)")))))))))
+      (inputs
+       (list gnumach-headers libpciaccess))
+      (native-inputs
+       (list
+        autoconf
+        automake
+        libgcrypt
+        (if (%current-target-system)
+            (let* ((cross-base (resolve-interface '(gnu packages cross-base)))
+                   (cross-mig (module-ref cross-base 'cross-mig)))
+              (cross-mig (%current-target-system)))
+            mig)
+        zlib))
+      (supported-systems %hurd-systems)
+      (home-page "https://wiki.netbsd.org/rumpkernel")
+      (synopsis "NetBSD as rumpkernel for the GNU/Hurd")
+      (description
+       "This package provides NetBSD as rumpkernel for the GNU/Hurd, so that
+the Hurd may be installed on iron.  Using this rumpkernel package, the hurd
+package's rumpdisk can be built which provides the pci.arbiter and rumpdisk
+servers.")
+      (license (list
+                asl2.0
+                boost1.0
+                bsd-2
+                bsd-3
+                bsd-4
+                cddl1.0
+                expat
+                gpl1
+                gpl2+
+                gpl3+
+                isc
+                lgpl2.0+
+                public-domain
+                (@ (guix licenses) zlib)
+                (non-copyleft "file://src/lib/libc/hash/hashhl.c"
+                              "See debian/copyright in the distribution."))))))
diff --git a/gnu/packages/patches/rumpkernel-cross-build.patch b/gnu/packages/patches/rumpkernel-cross-build.patch
new file mode 100644
index 0000000000..a8c7d93e20
--- /dev/null
+++ b/gnu/packages/patches/rumpkernel-cross-build.patch
@@ -0,0 +1,153 @@
+This patch fixes cross-building the rumpkernel:
+
+  * Fixes for non-multiarch toolchains,
+  * Support cross-mig,
+  * Cater for non-FHS .../bin/sh.
+
+Upstream status: not presented upstream.
+
+From 3e080e8a43f8b2f7a107849dd2e7e38ee2732d20 Mon Sep 17 00:00:00 2001
+From: Janneke Nieuwenhuizen <janneke@gnu.org>
+Date: Tue, 16 May 2023 07:29:23 +0200
+Subject: [PATCH 1/3] squash! patch: debian/patches/crossbuild
+
+---
+ buildrump.sh/src/build.sh          | 10 ++++++++--
+ pci-userspace/src-gnu/Makefile.inc |  3 ++-
+ 2 files changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/buildrump.sh/src/build.sh b/buildrump.sh/src/build.sh
+index 60375f5f4..0e80813c1 100755
+--- a/buildrump.sh/src/build.sh
++++ b/buildrump.sh/src/build.sh
+@@ -2230,12 +2230,18 @@ maketoolwrapper ()
+ 	musthave=$1
+ 	tool=$2
+ 
+-	if [ "${tool}" = "CC" ]; then
++	if [ "${tool}" = "AR" ]; then
++		lctool=${TARGET_AR-ar}
++	elif [ "${tool}" = "CC" ]; then
+ 		lctool=${TARGET_CC-gcc}
+ 	elif [ "${tool}" = "CXX" ]; then
+ 		lctool=${TARGET_CXX-g++}
+ 	elif [ "${tool}" = "LD" ]; then
+ 		lctool=${TARGET_LD-ld}
++	elif [ "${tool}" = "MIG" ]; then
++		lctool=${TARGET_MIG-mig}
++	elif [ "${tool}" = "NM" ]; then
++		lctool=${TARGET_NM-nm}
+ 	else
+ 		lctool=$(echo ${tool} | tr '[A-Z]' '[a-z]')
+ 	fi
+@@ -2302,7 +2308,7 @@ makerumptools ()
+ 	for x in CC AR NM OBJCOPY; do
+ 		maketoolwrapper true $x
+ 	done
+-	for x in AS LD OBJDUMP RANLIB READELF SIZE STRINGS STRIP CXX; do
++	for x in AS LD OBJDUMP RANLIB READELF SIZE STRINGS STRIP CXX MIG; do
+ 		maketoolwrapper false $x
+ 	done
+ 
+diff --git a/pci-userspace/src-gnu/Makefile.inc b/pci-userspace/src-gnu/Makefile.inc
+index 6f8db357e..ef25bac3a 100644
+--- a/pci-userspace/src-gnu/Makefile.inc
++++ b/pci-userspace/src-gnu/Makefile.inc
+@@ -8,11 +8,12 @@ RUMPCOMP_USER_CPPFLAGS+=-I${PCIDIR} -I${DESTDIR}/usr/include
+ RUMPCOMP_CPPFLAGS+=	-I${PCIDIR} -I${DESTDIR}/usr/include
+ CPPFLAGS+=		-I${PCIDIR}
+ LDFLAGS+= -lmachuser -Wl,--no-as-needed -lpciaccess -Wl,--as-needed
++MIG=mig
+ 
+ mach_debugUser.c:
+ 	echo '#include <mach_debug/mach_debug.defs>' \
+ 		| ${CC} -E -x c - -o - \
+-		| mig -cc cat - /dev/null -subrprefix __ \
++		| $(MIG) -cc cat - /dev/null -subrprefix __ \
+ 			-user mach_debugUser.c \
+ 			-server /dev/null \
+ 			-header mach_debug_U.h
+-- 
+2.39.2
+
+From af67549b7c5da5970a9330d281bd8305e1f6e8ed Mon Sep 17 00:00:00 2001
+From: Janneke Nieuwenhuizen <janneke@gnu.org>
+Date: Tue, 16 May 2023 07:39:54 +0200
+Subject: [PATCH 2/3] crossbuild: Cater for non-FHS shell.
+
+---
+ buildrump.sh/src/tools/genassym/Makefile | 2 +-
+ buildrump.sh/src/tools/lorder/Makefile   | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/buildrump.sh/src/tools/genassym/Makefile b/buildrump.sh/src/tools/genassym/Makefile
+index e597c522b..96ca4ac21 100644
+--- a/buildrump.sh/src/tools/genassym/Makefile
++++ b/buildrump.sh/src/tools/genassym/Makefile
+@@ -17,7 +17,7 @@ ${TIMESTAMP}: genassym
+ 	${HOST_INSTALL_FILE} -m ${BINMODE} ${.ALLSRC} ${.TARGET}
+ 
+ genassym: genassym.sh
+-	${TOOL_SED} -e "s,/bin/sh,${HOST_BSHELL},g" \
++	${TOOL_SED} -e "s,\([ \!]\)/bin/sh,\1${HOST_BSHELL},g" \
+ 	    -e "s,{AWK:=.*},{AWK:="${TOOL_AWK:Q}"}," \
+ 		< ${.ALLSRC} > ${.TARGET}
+ 
+diff --git a/buildrump.sh/src/tools/lorder/Makefile b/buildrump.sh/src/tools/lorder/Makefile
+index f3c599e12..92af83d51 100644
+--- a/buildrump.sh/src/tools/lorder/Makefile
++++ b/buildrump.sh/src/tools/lorder/Makefile
+@@ -17,7 +17,7 @@ ${TIMESTAMP}: lorder
+ 	${HOST_INSTALL_FILE} -m ${BINMODE} ${.ALLSRC} ${.TARGET}
+ 
+ lorder: lorder.sh
+-	${TOOL_SED} -e "s,/bin/sh,"${HOST_BSHELL:Q}",g" \
++	${TOOL_SED} -e "s,\([ \!]\)/bin/sh,\1"${HOST_BSHELL:Q}",g" \
+ 	    -e "s,{JOIN:=.*},{JOIN:="${TOOL_JOIN:Q}"}," \
+ 	    -e "s,{MKTEMP:=.*},{MKTEMP:="${TOOL_MKTEMP:Q}"}," \
+ 	    -e "s,{NM:=.*},{NM:="${NM:Q}"}," \
+-- 
+2.39.2
+
+From 9c8c93485e688bcc3db129bb56da03b18daae52c Mon Sep 17 00:00:00 2001
+From: Janneke Nieuwenhuizen <janneke@gnu.org>
+Date: Tue, 16 May 2023 08:55:51 +0200
+Subject: [PATCH 3/3] squash! pci-userspace: Add acpi lookup of irqs with
+ fallback
+
+---
+ debian/patches/acpi.diff | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/debian/patches/acpi.diff b/debian/patches/acpi.diff
+index 8015a6e63..8e359b2c0 100644
+--- a/debian/patches/acpi.diff
++++ b/debian/patches/acpi.diff
+@@ -1,6 +1,6 @@
+ --- a/pci-userspace/src-gnu/Makefile.inc
+ +++ b/pci-userspace/src-gnu/Makefile.inc
+-@@ -3,7 +3,7 @@
++@@ -3,8 +3,8 @@
+  PCIDIR:=	${.PARSEDIR}
+  .PATH:		${PCIDIR}
+ 
+@@ -9,6 +9,7 @@
+  RUMPCOMP_USER_CPPFLAGS+=-I${PCIDIR} -I${DESTDIR}/usr/include
+  RUMPCOMP_CPPFLAGS+=	-I${PCIDIR} -I${DESTDIR}/usr/include
+  CPPFLAGS+=		-I${PCIDIR}
++ MIG=mig
+ @@ -16,3 +16,11 @@
+  			-user mach_debugUser.c \
+  			-server /dev/null \
+@@ -17,7 +18,7 @@
+ +acpiUser.c:
+ +	echo '#include <hurd/acpi.defs>' \
+ +		| ${CC} -E -x c - -o - \
+-+		| mig -cc cat - /dev/null -subrprefix __ \
+++		| $(MIG) -cc cat - /dev/null -subrprefix __ \
+ +			-user acpiUser.c \
+ +			-server /dev/null \
+ +			-header acpi_U.h
+-- 
+2.39.2
+
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v2 2/3] gnu: hurd: Add rumpkernel.
  2023-05-16 13:48 ` [bug#63527] [PATCH v2 0/3] Initial attempt at rumpdisk support for the Hurd Janneke Nieuwenhuizen
  2023-05-16 13:48   ` [bug#63527] [PATCH v2 1/3] gnu: Add rumpkernel Janneke Nieuwenhuizen
@ 2023-05-16 13:48   ` Janneke Nieuwenhuizen
  2023-05-16 13:48   ` [bug#63527] [PATCH v2 3/3] DRAFT system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
  2 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-16 13:48 UTC (permalink / raw)
  To: 63527

* gnu/packages/hurd.scm (hurd)[inputs]: Add rumpkernel.
[arguments]: Rename `prepare-dde' phase to 'prepare-addons'.  Add "rumpdisk"
directory.  Add --enable-static-progs=... option to #:configure-flags.
---
 gnu/packages/hurd.scm | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 8edf5d91c6..e419859c05 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -356,7 +356,7 @@ (define-public hurd
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'prepare-dde
+         (add-after 'unpack 'prepare-addons
            (lambda* (#:key native-inputs inputs #:allow-other-keys)
              ;; First we import the things we want from dde.
              (for-each make-file-writable (find-files "."))
@@ -370,7 +370,10 @@ (define-public hurd
              ;; Makefile. libdde_linux26 is built later in its own phase.
              (substitute* "Makefile"
                (("libbpf ")
-                "libbpf libmachdevdde libddekit"))))
+                "libbpf libmachdevdde libddekit rumpdisk"))
+             (substitute* "rumpdisk/Makefile"
+               (("rumpdev_ahcisata" all)
+                (string-append all " rumpdev_ata")))))
          (add-after 'unpack 'find-tirpc
            (lambda* (#:key inputs #:allow-other-keys)
              (for-each (lambda (var)
@@ -533,6 +536,7 @@ (define-public hurd
        #:configure-flags
        ,#~(list (string-append "LDFLAGS=-Wl,-rpath="
                                #$output "/lib")
+                "--enable-static-progs=ext2fs,iso9660fs,rumpdisk,pci-arbiter,acpi"
                 "--disable-ncursesw"
                 "--without-libbz2"
                 "--without-libz"
@@ -541,7 +545,11 @@ (define-public hurd
                 ;; clnt_create
                 "ac_func_search_save_LIBS=-ltirpc"
                 "ac_cv_search_clnt_create=false"
-                "CFLAGS=-fcommon")))
+                "CFLAGS=-fcommon")
+       #:make-flags
+         (list (string-append "RUMPPATH="
+                              (assoc-ref %build-inputs "rumpkernel")
+                              "/lib"))))
     (build-system gnu-build-system)
     (inputs
      `(("libgcrypt" ,libgcrypt)                  ;for /hurd/random
@@ -557,7 +565,8 @@ (define-public hurd
        ("coreutils" ,coreutils)
        ("sed" ,sed)
        ("grep" ,grep)
-       ("util-linux" ,util-linux)))
+       ("util-linux" ,util-linux)
+       ("rumpkernel" ,rumpkernel)))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v2 3/3] DRAFT system: hurd: Boot with pci.arbiter and rumpdisk.
  2023-05-16 13:48 ` [bug#63527] [PATCH v2 0/3] Initial attempt at rumpdisk support for the Hurd Janneke Nieuwenhuizen
  2023-05-16 13:48   ` [bug#63527] [PATCH v2 1/3] gnu: Add rumpkernel Janneke Nieuwenhuizen
  2023-05-16 13:48   ` [bug#63527] [PATCH v2 2/3] gnu: hurd: " Janneke Nieuwenhuizen
@ 2023-05-16 13:48   ` Janneke Nieuwenhuizen
  2 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-16 13:48 UTC (permalink / raw)
  To: 63527

XXX This hangs at

    start pci.arbiter:

* gnu/system.scm (hurd-multiboot-modules): Add commands for pci.arbiter and
rumpdisk.
---
 gnu/system.scm | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/gnu/system.scm b/gnu/system.scm
index 354f58f55b..12e646ad51 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;; Copyright © 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <jannek@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <jannek@gnu.org>
 ;;; Copyright © 2020, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com>
@@ -1486,16 +1486,28 @@ (define (operating-system-multiboot-modules os)
 
 (define (hurd-multiboot-modules os)
   (let* ((hurd (operating-system-hurd os))
+         (pci-arbiter-command
+          (list (file-append hurd "/hurd/pci-arbiter.static")
+                "pci.arbiter"
+                "--host-priv-port='${host-port}'"
+                "--device-master-port='${device-port}'"
+                "--next-task='${disk-task}'"
+                "'$(pci-task=task-create)'"
+                "'$(task-resume)'"))
+         (rumpdisk-command
+          (list (file-append hurd "/hurd/rumpdisk.static")
+                "rumpdisk"
+                "--next-task='${fs-task}'"
+                "'$(disk-task=task-create)'"))
          (root-file-system-command
           (list (file-append hurd "/hurd/ext2fs.static")
                 "ext2fs"
                 "--multiboot-command-line='${kernel-command-line}'"
-                "--host-priv-port='${host-port}'"
-                "--device-master-port='${device-port}'"
                 "--exec-server-task='${exec-task}'"
                 "--store-type=typed"
                 "--x-xattr-translator-records"
-                "'${root}'" "'$(task-create)'" "'$(task-resume)'"))
+                "'${root}'"
+                "'$(fs-task=task-create)'"))
          (target (%current-target-system))
          (libc (if target
                    (with-parameters ((%current-target-system #f))
@@ -1512,7 +1524,10 @@ (define (hurd-multiboot-modules os)
           ;;       (file-append hurd "/hurd/exec") "'$(exec-task=task-create)'")
           (list (file-append hurd "/hurd/exec.static") "exec"
                 "'$(exec-task=task-create)'")))
-    (list root-file-system-command exec-server-command)))
+    (list pci-arbiter-command
+          rumpdisk-command
+          root-file-system-command
+          exec-server-command)))
 
 (define* (operating-system-boot-parameters os root-device
                                            #:key system-kernel-arguments?)
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd
  2023-05-15 19:35 [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Janneke Nieuwenhuizen
                   ` (3 preceding siblings ...)
  2023-05-16 13:48 ` [bug#63527] [PATCH v2 0/3] Initial attempt at rumpdisk support for the Hurd Janneke Nieuwenhuizen
@ 2023-05-18  8:45 ` Janneke Nieuwenhuizen
  2023-05-18  8:45   ` [bug#63527] [PATCH v3 1/7] gnu: Add libpciaccess-0.17 Janneke Nieuwenhuizen
                     ` (7 more replies)
  2023-05-18  9:38 ` [bug#63527] [PATCH v4 0/8] Rumpdisk support for the Hurd, really! Janneke Nieuwenhuizen
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
  6 siblings, 8 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  8:45 UTC (permalink / raw)
  To: 63527

So, good progress and amazing news since the v2 series:

    * Add libpciaccess-0.17, and
    * Use that for the Hurd,
    * Actually setup translators for pci.arbiter and rumpdisk,
    * For QEMU update the memory-size to 2048MB, and
    * Suggest to do so in our bare-hurd.tmpl example, and
    * It boots! \o/

I had a lot of kind debugging help from Samuel Thibault and Sergey Bugaev on
libera.chat #hurd (https://logs.guix.gnu.org/hurd/2023-05-17.log#132259) as
well as on the bug-hurd list
(https://lists.gnu.org/archive/html/bug-hurd/2023-05//msg00326.html) to get
here, thank you!

With https://issues.guix.gnu.org/63501 by Josselin Poiret being merged
yesterday and this patch series we now have Rumpkernel/rumpdisk support for
the Hurd!

I've now succesfully been doing something like

--8<---------------cut here---------------start------------->8---
./pre-inst-env guix system image -t hurd-raw gnu/system/examples/bare-hurd.tmpl
guix shell qemu -- qemu-system-i386                     \
-m 4096                                                 \
--enable-kvm                                            \
--device rtl8139,netdev=net0                            \
--netdev user,id=net0,hostfwd=tcp:0.0.0.0:11022-:2222   \
--snapshot                                              \
--no-reboot                                             \
--hda /gnu/store/r5dpblnfsj08jh3hdmn8s6l9xaczwn65-disk-image
--8<---------------cut here---------------end--------------->8---

and ssh into the Hurd VM again.

(Should we update the the Childhurds blogpost too, it suggest -m 512
 https://guix.gnu.org/en/blog/2020/childhurds-and-substitutes/?)

Greetings,
Janneke

Janneke Nieuwenhuizen (7):
  gnu: Add libpciaccess-0.17.
  gnu: hurd: Update libpciaccess to 0.17.
  gnu: Add rumpkernel.
  gnu: hurd: Add rumpkernel.
  hurd-boot: Setup pci-arbiter and rumpdisk translators.
  services: childhurd: Bump default qemu memory to 2048MB.
  system: hurd: Boot with pci.arbiter and rumpdisk.

 gnu/build/hurd-boot.scm            |  10 +-
 gnu/packages/hurd.scm              | 231 ++++++++++++++++++++++++++++-
 gnu/packages/xorg.scm              |  17 +++
 gnu/services/virtualization.scm    |   4 +-
 gnu/system.scm                     |  25 +++-
 gnu/system/examples/bare-hurd.tmpl |   4 +-
 6 files changed, 271 insertions(+), 20 deletions(-)


base-commit: 5b700945fb0b33eec410de8979cae2fbf0d4f118
-- 
2.39.2





^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v3 1/7] gnu: Add libpciaccess-0.17.
  2023-05-18  8:45 ` [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd Janneke Nieuwenhuizen
@ 2023-05-18  8:45   ` Janneke Nieuwenhuizen
  2023-05-18  8:46   ` [bug#63527] [PATCH v3 2/7] gnu: hurd: Update libpciaccess to 0.17 Janneke Nieuwenhuizen
                     ` (6 subsequent siblings)
  7 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  8:45 UTC (permalink / raw)
  To: 63527

* gnu/packages/xorg.scm (libpciaccess-0.17): New variable.
---
 gnu/packages/xorg.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index f3d30c0ff1..93a2cca15d 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -34,6 +34,7 @@
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 qblade <qblade@protonmail.com>
 ;;; Copyright © 2021 Lu Hui <luhux76@gmail.com>
+;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1145,6 +1146,22 @@ (define-public libpciaccess
     (description "Xorg Generic PCI access library.")
     (license license:x11)))
 
+(define-public libpciaccess-0.17
+  (package
+    (inherit libpciaccess)
+    (name "libpciaccess")
+    (version "0.17")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://xorg/individual/lib/libpciaccess-"
+             version
+             ".tar.xz"))
+       (sha256
+        (base32
+         "0wsvv5d05maqbidvnavka7n0fnql55m4jix5wwlk14blr6ikna3l"))))))
+
 (define-public libpthread-stubs
   (package
     (name "libpthread-stubs")
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v3 2/7] gnu: hurd: Update libpciaccess to 0.17.
  2023-05-18  8:45 ` [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd Janneke Nieuwenhuizen
  2023-05-18  8:45   ` [bug#63527] [PATCH v3 1/7] gnu: Add libpciaccess-0.17 Janneke Nieuwenhuizen
@ 2023-05-18  8:46   ` Janneke Nieuwenhuizen
  2023-05-18  8:46   ` [bug#63527] [PATCH v3 3/7] gnu: Add rumpkernel Janneke Nieuwenhuizen
                     ` (5 subsequent siblings)
  7 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  8:46 UTC (permalink / raw)
  To: 63527

As suggested by youpi on IRC

    https://logs.guix.gnu.org/hurd/2023-05-17.log#132259

libpciaccess-0.16 is too old for the Hurd and would need Hurd-specific patches
while libpciaccess-0.17 works out of the box.

* gnu/packages/hurd.scm (hurd)[inputs]: Use libpciaccess-0.17.
(netdde)[inputs]: Likewise.
---
 gnu/packages/hurd.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 34c7c00f2d..da94b05272 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2018, 2020-2023 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2020, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2022, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Rene Saavedra <pacoon@protonmail.com>
 ;;;
@@ -45,7 +45,7 @@ (define-module (gnu packages hurd)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages onc-rpc)
-  #:use-module (gnu packages xorg) ; libpciaccess
+  #:use-module (gnu packages xorg) ;#:select (libpciaccess-0.17)
   #:use-module (guix git-download)
   #:export (hurd-system?
             hurd-target?))
@@ -547,7 +547,7 @@ (define-public hurd
      `(("libgcrypt" ,libgcrypt)                  ;for /hurd/random
        ("libdaemon" ,libdaemon)                  ;for /bin/console --daemonize
        ("unifont" ,unifont)
-       ("libpciaccess" ,libpciaccess)
+       ("libpciaccess" ,libpciaccess-0.17)
 
        ;; For NFS support
        ("libtirpc" ,libtirpc/hurd)
@@ -645,7 +645,7 @@ (define-public netdde
                                             "/bin"))
                #t)))))
       (inputs
-       (list hurd libpciaccess zlib))
+       (list hurd libpciaccess-0.17 zlib))
       (native-inputs
        `(("coreutils" ,coreutils)
          ("gawk" ,gawk)
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v3 3/7] gnu: Add rumpkernel.
  2023-05-18  8:45 ` [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd Janneke Nieuwenhuizen
  2023-05-18  8:45   ` [bug#63527] [PATCH v3 1/7] gnu: Add libpciaccess-0.17 Janneke Nieuwenhuizen
  2023-05-18  8:46   ` [bug#63527] [PATCH v3 2/7] gnu: hurd: Update libpciaccess to 0.17 Janneke Nieuwenhuizen
@ 2023-05-18  8:46   ` Janneke Nieuwenhuizen
  2023-05-18  8:46   ` [bug#63527] [PATCH v3 4/7] gnu: hurd: " Janneke Nieuwenhuizen
                     ` (4 subsequent siblings)
  7 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  8:46 UTC (permalink / raw)
  To: 63527

This uses the Debian Salsa rumpkernel package git as upstream as that is where
delopment happens.  Once things have stabalized upstream may change to the
NetBSD git from where Debian takes their snapshots.

* gnu/packages/hurd.scm (rumpkernel): New variable.
---
 gnu/packages/hurd.scm | 206 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 206 insertions(+)

diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index da94b05272..c7ea86b266 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -662,3 +662,209 @@ (define-public netdde
       ;; Some drivers are dually licensed with the options being GPLv2 or one
       ;; of MPL/Expat/BSD-3 (dependent on the driver).
       (license gpl2))))
+
+(define-public rumpkernel
+  (let ((commit "ec2ab9612be4dc48a316a21a0c96d3388478a064")
+        (revision "2"))
+    (package
+      (name "rumpkernel")
+      (version (git-version "0-20211031" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://salsa.debian.org/hurd-team/rumpkernel.git")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "1ypjg3jyzhh3gnanmk6fh76dwl5ml78n311nbi0hw7f7hygzn7vk"))
+                (file-name (git-file-name name commit))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:tests? #f
+        #:modules '((srfi srfi-26)
+                    (ice-9 match)
+                    (ice-9 rdelim)
+                    (guix build utils)
+                    (guix build gnu-build-system))
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'apply-patches
+              (lambda* (#:key target #:allow-other-keys)
+                (let* ((patch-directory "debian/patches/")
+                       (series (string-append patch-directory "series"))
+                       (text (with-input-from-file series read-string))
+                       (lines (string-split (string-trim-right text) #\newline))
+                       (patches (filter (negate (cute string-prefix? "#" <>))
+                                        lines))
+                       (patch-files (map
+                                     (cute string-append patch-directory <>)
+                                     patches)))
+                  (for-each
+                   (cute invoke "patch" "--force" "-p1" "-i" <>)
+                   patch-files)
+                  ;; Somewhere in the build.sh/make process MIG is not being
+                  ;; exported, apparently.
+                  (when target
+                    (substitute* "pci-userspace/src-gnu/Makefile.inc"
+                      (("MIG=mig")
+                       (string-append "MIG=" target "-mig")))))))
+            (add-before 'configure 'setenv
+              (lambda* (#:key build target #:allow-other-keys)
+                (define (noisy-setenv name value)
+                  (setenv name value)
+                  (format (current-error-port) "set ~a=~s\n" name value))
+                (noisy-setenv "HOST_CC" "gcc")
+                (when target
+                  (noisy-setenv "MIG" (string-append target "-mig")))
+                (let ((target (or target build)))
+                  (noisy-setenv "TARGET_AR" (string-append target "-ar"))
+                  (noisy-setenv "TARGET_CC" (string-append target "-gcc"))
+                  (noisy-setenv "TARGET_CXX" (string-append target "-g++"))
+                  (noisy-setenv "TARGET_LD" (string-append target "-ld"))
+                  (noisy-setenv "TARGET_MIG" (string-append target "-mig"))
+                  (noisy-setenv "TARGET_NM" (string-append target "-nm")))
+                (setenv "PAWD" "pwd")
+                (for-each
+                 (cute noisy-setenv <> "")
+                 '("_GCC_CRTENDS"
+                   "_GCC_CRTEND"
+                   "_GCC_CRTBEGINS"
+                   "_GCC_CRTBEGIN"
+                   "_GCC_CRTI"
+                   "_GCC_CRTN"))
+                (noisy-setenv "BSDOBJDIR=" (string-append (getcwd) "/obj"))))
+            (replace 'configure
+              (lambda args
+                (let ((configure (assoc-ref %standard-phases 'configure)))
+                  (with-directory-excursion "buildrump.sh/src/lib/librumpuser"
+                    (apply configure args)))))
+            (replace 'build
+              (lambda* (#:key parallel-build? #:allow-other-keys)
+                (let* ((jobs (if parallel-build? (parallel-job-count) 1))
+                       (host-cpu (match #$(or (%current-target-system
+                                               (%current-system)))
+                                   ("i586-pc-gnu" "i386")
+                                   ("i686-linux" "i386")
+                                   ("x86_64-linux" "amd64")))
+                       (toprump (string-append
+                                 (getcwd)
+                                 "/buildrump.sh/src/sys/rump"))
+                       (rump-make (string-append
+                                   (getcwd)
+                                   "/buildrump.sh/src/obj/tooldir/bin/nbmake-"
+                                   host-cpu)))
+                  (mkdir "obj")
+                  (with-directory-excursion "buildrump.sh/src"
+                    (invoke
+                     "sh" "build.sh"
+                     "-V" "TOOLS_BUILDRUMP=yes"
+                     "-V" "MKBINUTILS=no" 
+                     "-V" "MKGDB=no" 
+                     "-V" "MKGROFF=no" 
+                     "-V" (string-append "TOPRUMP=" toprump)
+                     "-V" "BUILDRUMP_CPPFLAGS=-Wno-error=stringop-overread"
+                     "-V" "RUMPUSER_EXTERNAL_DPLIBS=pthread" 
+		     "-V" (string-append
+                           "CPPFLAGS="
+                           " -I../../obj/destdir." host-cpu "/usr/include"
+                           " -D_FILE_OFFSET_BITS=64"
+                           " -DRUMP_REGISTER_T=int"
+                           " -DRUMPUSER_CONFIG=yes"
+                           " -DNO_PCI_MSI_MSIX=yes"
+                           " -DNUSB_DMA=1")
+                     "-V" (string-append
+                           "CWARNFLAGS="
+                           " -Wno-error=maybe-uninitialized"
+                           " -Wno-error=address-of-packed-member"
+                           " -Wno-error=unused-variable"
+                           " -Wno-error=stack-protector"
+                           " -Wno-error=array-parameter"
+                           " -Wno-error=array-bounds"
+                           " -Wno-error=stringop-overflow")
+                     "-V" "LIBCRTBEGIN="
+                     "-V" "LIBCRTEND="
+                     "-V" "LIBCRT0="
+                     "-V" "LIBCRTI="
+                     "-V" "_GCC_CRTENDS="
+                     "-V" "_GCC_CRTEND="
+                     "-V" "_GCC_CRTBEGINS="
+                     "-V" "_GCC_CRTBEGIN="
+                     "-V" "_GCC_CRTI="
+                     "-V" "_GCC_CRTN="
+                     "-U"
+                     "-u"
+                     "-T" "./obj/tooldir"
+                     "-m" host-cpu
+                     "-j" (number->string jobs)
+                     "tools"
+                     "rump"))
+                  (with-directory-excursion "buildrump.sh/src/lib/librumpuser"
+                    (setenv "RUMPRUN" "true")
+                    (invoke rump-make "dependall"))
+                  (with-directory-excursion "pci-userspace/src-gnu"
+                    (invoke rump-make "dependall")))))
+            (replace 'install
+              (lambda _
+                (define (install-file file target)
+                  (let ((dest (string-append target (basename file))))
+                    (format (current-output-port) "`~a' -> `~a'~%" file dest)
+                    (mkdir-p (dirname dest))
+                    (if (file-exists? dest)
+                        (format (current-error-port)
+                                "warning: skipping: ~a\n" file)
+                        (let ((stat (lstat file)))
+                          (case (stat:type stat)
+                            ((symlink)
+                             (let ((target (readlink file)))
+                               (symlink target dest)))
+                            (else
+                             (copy-file file dest)))))))
+                (let ((header (string-append #$output "/include/rump"))
+                      (lib (string-append #$output "/lib/")))
+                  (mkdir-p header)
+                  (copy-recursively "buildrump.sh/src/sys/rump/include/rump"
+                                    header)
+                  (mkdir-p lib)
+                  (for-each
+                   (cute install-file <> lib)
+                   (append (find-files "buildrump.sh/src" "librump.*[.](a|so.*)")
+                           (find-files "obj" "librump.*[.](a|so.*)")))))))))
+      (inputs
+       (list gnumach-headers libpciaccess-0.17))
+      (native-inputs
+       (list
+        autoconf
+        automake
+        libgcrypt
+        (if (%current-target-system)
+            (let* ((cross-base (resolve-interface '(gnu packages cross-base)))
+                   (cross-mig (module-ref cross-base 'cross-mig)))
+              (cross-mig (%current-target-system)))
+            mig)
+        zlib))
+      (supported-systems %hurd-systems)
+      (home-page "https://wiki.netbsd.org/rumpkernel")
+      (synopsis "NetBSD as rumpkernel for the GNU/Hurd")
+      (description
+       "This package provides NetBSD as rumpkernel for the GNU/Hurd, so that
+the Hurd may be installed on iron.  Using this rumpkernel package, the hurd
+package's rumpdisk can be built which provides the pci.arbiter and rumpdisk
+servers.")
+      (license (list
+                asl2.0
+                boost1.0
+                bsd-2
+                bsd-3
+                bsd-4
+                cddl1.0
+                expat
+                gpl1
+                gpl2+
+                gpl3+
+                isc
+                lgpl2.0+
+                public-domain
+                (@ (guix licenses) zlib)
+                (non-copyleft "file://src/lib/libc/hash/hashhl.c"
+                              "See debian/copyright in the distribution."))))))
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v3 4/7] gnu: hurd: Add rumpkernel.
  2023-05-18  8:45 ` [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd Janneke Nieuwenhuizen
                     ` (2 preceding siblings ...)
  2023-05-18  8:46   ` [bug#63527] [PATCH v3 3/7] gnu: Add rumpkernel Janneke Nieuwenhuizen
@ 2023-05-18  8:46   ` Janneke Nieuwenhuizen
  2023-05-18  8:46   ` [bug#63527] [PATCH v3 5/7] hurd-boot: Setup pci-arbiter and rumpdisk translators Janneke Nieuwenhuizen
                     ` (3 subsequent siblings)
  7 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  8:46 UTC (permalink / raw)
  To: 63527

* gnu/packages/hurd.scm (hurd)[inputs]: Add rumpkernel.
[arguments]: Rename `prepare-dde' phase to 'prepare-addons'.  Add "rumpdisk"
directory.  Add --enable-static-progs=... option to #:configure-flags.
---
 gnu/packages/hurd.scm | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index c7ea86b266..aaa9863a10 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -356,7 +356,7 @@ (define-public hurd
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'prepare-dde
+         (add-after 'unpack 'prepare-addons
            (lambda* (#:key native-inputs inputs #:allow-other-keys)
              ;; First we import the things we want from dde.
              (for-each make-file-writable (find-files "."))
@@ -370,7 +370,10 @@ (define-public hurd
              ;; Makefile. libdde_linux26 is built later in its own phase.
              (substitute* "Makefile"
                (("libbpf ")
-                "libbpf libmachdevdde libddekit"))))
+                "libbpf libmachdevdde libddekit rumpdisk"))
+             (substitute* "rumpdisk/Makefile"
+               (("rumpdev_ahcisata" all)
+                (string-append all " rumpdev_ata")))))
          (add-after 'unpack 'find-tirpc
            (lambda* (#:key inputs #:allow-other-keys)
              (for-each (lambda (var)
@@ -533,6 +536,7 @@ (define-public hurd
        #:configure-flags
        ,#~(list (string-append "LDFLAGS=-Wl,-rpath="
                                #$output "/lib")
+                "--enable-static-progs=ext2fs,iso9660fs,rumpdisk,pci-arbiter,acpi"
                 "--disable-ncursesw"
                 "--without-libbz2"
                 "--without-libz"
@@ -541,7 +545,11 @@ (define-public hurd
                 ;; clnt_create
                 "ac_func_search_save_LIBS=-ltirpc"
                 "ac_cv_search_clnt_create=false"
-                "CFLAGS=-fcommon")))
+                "CFLAGS=-fcommon")
+       #:make-flags
+         (list (string-append "RUMPPATH="
+                              (assoc-ref %build-inputs "rumpkernel")
+                              "/lib"))))
     (build-system gnu-build-system)
     (inputs
      `(("libgcrypt" ,libgcrypt)                  ;for /hurd/random
@@ -557,7 +565,8 @@ (define-public hurd
        ("coreutils" ,coreutils)
        ("sed" ,sed)
        ("grep" ,grep)
-       ("util-linux" ,util-linux)))
+       ("util-linux" ,util-linux)
+       ("rumpkernel" ,rumpkernel)))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v3 5/7] hurd-boot: Setup pci-arbiter and rumpdisk translators.
  2023-05-18  8:45 ` [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd Janneke Nieuwenhuizen
                     ` (3 preceding siblings ...)
  2023-05-18  8:46   ` [bug#63527] [PATCH v3 4/7] gnu: hurd: " Janneke Nieuwenhuizen
@ 2023-05-18  8:46   ` Janneke Nieuwenhuizen
  2023-05-18  8:46   ` [bug#63527] [PATCH v3 6/7] services: childhurd: Bump default qemu memory to 2048MB Janneke Nieuwenhuizen
                     ` (2 subsequent siblings)
  7 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  8:46 UTC (permalink / raw)
  To: 63527

* gnu/build/hurd-boot.scm (make-hurd-device-nodes): Setup pci-arbiter and
rumpdisk translators.
---
 gnu/build/hurd-boot.scm | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/gnu/build/hurd-boot.scm b/gnu/build/hurd-boot.scm
index 95c15907dd..25c8f0ea51 100644
--- a/gnu/build/hurd-boot.scm
+++ b/gnu/build/hurd-boot.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2020-2022 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -105,7 +105,7 @@ (define* (make-hurd-device-nodes #:optional (root "/"))
 
   ;; TODO: Set the 'gnu.translator' extended attribute for passive translator
   ;; settings?
-  )
+  (mkdir-p (scope "servers/bus/pci")))
 
 (define (passive-translator-xattr? file-name)
   "Return true if FILE-NAME has an extended @code{gnu.translator} attribute
@@ -183,7 +183,8 @@ (define* (set-hurd-device-translators #:optional (root "/"))
        (mkdir-p dir))))
 
   (define servers
-    '(("servers/crash-dump-core" ("/hurd/crash" "--dump-core"))
+    '(("servers/bus/pci"         ("/hurd/pci-arbiter"))
+      ("servers/crash-dump-core" ("/hurd/crash" "--dump-core"))
       ("servers/crash-kill"      ("/hurd/crash" "--kill"))
       ("servers/crash-suspend"   ("/hurd/crash" "--suspend"))
       ("servers/password"        ("/hurd/password"))
@@ -213,6 +214,8 @@ (define* (set-hurd-device-translators #:optional (root "/"))
       ;; 'fd_to_filename' in libc expects it.
       ("dev/fd"      ("/hurd/magic"    "--directory" "fd")  #o555)
 
+      ("dev/rumpdisk"("/hurd/rumpdisk")                     #o660)
+
       ;; Create a number of ttys; syslogd writes to tty12 by default.
       ;; FIXME: Creating /dev/tty12 leads the console client to switch to
       ;; tty12 when syslogd starts, which is confusing for users.  Thus, do
@@ -249,6 +252,7 @@ (define* (set-hurd-device-translators #:optional (root "/"))
   (false-if-EEXIST (symlink "/dev/fd/1" (scope "dev/stdout")))
   (false-if-EEXIST (symlink "/dev/fd/2" (scope "dev/stderr")))
   (false-if-EEXIST (symlink "crash-dump-core" (scope "servers/crash")))
+  (false-if-EEXIST (symlink "/dev/rumpdisk" (scope "dev/disk")))
 
   ;; Make sure /etc/mtab is a symlink to /proc/mounts.
   (false-if-exception (delete-file (scope "etc/mtab")))
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v3 6/7] services: childhurd: Bump default qemu memory to 2048MB.
  2023-05-18  8:45 ` [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd Janneke Nieuwenhuizen
                     ` (4 preceding siblings ...)
  2023-05-18  8:46   ` [bug#63527] [PATCH v3 5/7] hurd-boot: Setup pci-arbiter and rumpdisk translators Janneke Nieuwenhuizen
@ 2023-05-18  8:46   ` Janneke Nieuwenhuizen
  2023-05-18  8:46   ` [bug#63527] [PATCH v3 7/7] system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
  2023-05-18  9:14   ` [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd Janneke Nieuwenhuizen
  7 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  8:46 UTC (permalink / raw)
  To: 63527

When booting with pci-arbiter and rumpdisk and using 1024MB of memory for
qemu, booting hangs, or seems to hang, at the end of the rumpdisk boot
messages.  At least 1200MB is required, currently.

* gnu/services/virtualization.scm (<hurd-vm-configuration>)[memory-size]: Bump
to 2048.
* gnu/system/examples/bare-hurd.tmpl: Suggest using 2048 here too.  Update
example `guix system image' and "qemu" command lines too.
---
 gnu/services/virtualization.scm    | 4 ++--
 gnu/system/examples/bare-hurd.tmpl | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 2e311e3813..886b73f8c7 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Ryan Moe <ryan.moe@gmail.com>
 ;;; Copyright © 2018, 2020-2022 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2020,2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2021, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2021 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2022 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2022 Leo Nikkilä <hello@lnikki.la>
@@ -1100,7 +1100,7 @@ (define-record-type* <hurd-vm-configuration>
   (disk-size   hurd-vm-configuration-disk-size          ;number or 'guess
                (default 'guess))
   (memory-size hurd-vm-configuration-memory-size        ;number
-               (default 512))
+               (default 2048))
   (options     hurd-vm-configuration-options            ;list of string
                (default `("--snapshot")))
   (id          hurd-vm-configuration-id                 ;#f or integer [1..]
diff --git a/gnu/system/examples/bare-hurd.tmpl b/gnu/system/examples/bare-hurd.tmpl
index f0dd0cf742..463c7ee798 100644
--- a/gnu/system/examples/bare-hurd.tmpl
+++ b/gnu/system/examples/bare-hurd.tmpl
@@ -5,12 +5,12 @@
 
 ;; To build a disk image for a virtual machine, do
 ;;
-;;     ./pre-inst-env guix system image --target=i586-pc-gnu \
+;;     ./pre-inst-env guix system image --image-type=hurd-raw \
 ;;         gnu/system/examples/bare-hurd.tmpl
 ;;
 ;; You may run it like so
 ;;
-;;     guix environment --ad-hoc qemu -- qemu-system-i386 -enable-kvm -m 512M \
+;;     guix shell qemu -- qemu-system-i386 -enable-kvm -m 2048 \
 ;;      -device rtl8139,netdev=net0 -netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \
 ;;      -snapshot -hda <the-image>
 ;;
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v3 7/7] system: hurd: Boot with pci.arbiter and rumpdisk.
  2023-05-18  8:45 ` [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd Janneke Nieuwenhuizen
                     ` (5 preceding siblings ...)
  2023-05-18  8:46   ` [bug#63527] [PATCH v3 6/7] services: childhurd: Bump default qemu memory to 2048MB Janneke Nieuwenhuizen
@ 2023-05-18  8:46   ` Janneke Nieuwenhuizen
  2023-05-18  9:14   ` [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd Janneke Nieuwenhuizen
  7 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  8:46 UTC (permalink / raw)
  To: 63527

Be sure to give the Hurd enough (virtual) memory

* gnu/system.scm (hurd-multiboot-modules): Add commands for pci.arbiter and
rumpdisk.
---
 gnu/system.scm | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/gnu/system.scm b/gnu/system.scm
index 354f58f55b..23addf41e9 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;; Copyright © 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <jannek@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <jannek@gnu.org>
 ;;; Copyright © 2020, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com>
@@ -1486,16 +1486,28 @@ (define (operating-system-multiboot-modules os)
 
 (define (hurd-multiboot-modules os)
   (let* ((hurd (operating-system-hurd os))
+         (pci-arbiter-command
+          (list (file-append hurd "/hurd/pci-arbiter.static")
+                "pci-arbiter"
+                "--host-priv-port='${host-port}'"
+                "--device-master-port='${device-port}'"
+                "--next-task='${disk-task}'"
+                "'$(pci-task=task-create)'"
+                "'$(task-resume)'"))
+         (rumpdisk-command
+          (list (file-append hurd "/hurd/rumpdisk.static")
+                "rumpdisk"
+                "--next-task='${fs-task}'"
+                "'$(disk-task=task-create)'"))
          (root-file-system-command
           (list (file-append hurd "/hurd/ext2fs.static")
                 "ext2fs"
                 "--multiboot-command-line='${kernel-command-line}'"
-                "--host-priv-port='${host-port}'"
-                "--device-master-port='${device-port}'"
                 "--exec-server-task='${exec-task}'"
                 "--store-type=typed"
                 "--x-xattr-translator-records"
-                "'${root}'" "'$(task-create)'" "'$(task-resume)'"))
+                "'${root}'"
+                "'$(fs-task=task-create)'"))
          (target (%current-target-system))
          (libc (if target
                    (with-parameters ((%current-target-system #f))
@@ -1512,7 +1524,10 @@ (define (hurd-multiboot-modules os)
           ;;       (file-append hurd "/hurd/exec") "'$(exec-task=task-create)'")
           (list (file-append hurd "/hurd/exec.static") "exec"
                 "'$(exec-task=task-create)'")))
-    (list root-file-system-command exec-server-command)))
+    (list pci-arbiter-command
+          rumpdisk-command
+          root-file-system-command
+          exec-server-command)))
 
 (define* (operating-system-boot-parameters os root-device
                                            #:key system-kernel-arguments?)
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd
  2023-05-18  8:45 ` [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd Janneke Nieuwenhuizen
                     ` (6 preceding siblings ...)
  2023-05-18  8:46   ` [bug#63527] [PATCH v3 7/7] system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
@ 2023-05-18  9:14   ` Janneke Nieuwenhuizen
  7 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  9:14 UTC (permalink / raw)
  To: 63527

Janneke Nieuwenhuizen writes:

> So, good progress and amazing news since the v2 series:

Oops, there is still good news, but the updated MONOTONIC (and possibly
centiseconds) time patches from Debian Salsa are still needed!

In testing with all different builds I must have confused myself in the
final test, sorry!  Anyway, the rest of the story and the good news
still holds, we just need another ugly cross-glibc patch for the Hurd.

I'll be preparing a new patch series.

Greetings,
Janneke

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v4 0/8] Rumpdisk support for the Hurd, really!
  2023-05-15 19:35 [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Janneke Nieuwenhuizen
                   ` (4 preceding siblings ...)
  2023-05-18  8:45 ` [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd Janneke Nieuwenhuizen
@ 2023-05-18  9:38 ` Janneke Nieuwenhuizen
  2023-05-18  9:38   ` [bug#63527] [PATCH v4 1/8] gnu: glibc: Update time patches for the Hurd Janneke Nieuwenhuizen
                     ` (7 more replies)
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
  6 siblings, 8 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  9:38 UTC (permalink / raw)
  To: 63527

Most everything mentioned in the v3 patch series still holds, apart from the
little fact that the rumpkernel will panic unless we use the complete time
patches from Debian Salsa glibc package management, as was discussed/suggested
on IRC by youpi:

    https://logs.guix.gnu.org/hurd/2023-05-17.log#150916

So one additional patch for cross-glibc, no changes in any of the patches
since v3.

Greetings,
Janneke

Janneke Nieuwenhuizen (8):
  gnu: glibc: Update time patches for the Hurd.
  gnu: Add libpciaccess-0.17.
  gnu: hurd: Update libpciaccess to 0.17.
  gnu: Add rumpkernel.
  gnu: hurd: Add rumpkernel.
  hurd-boot: Setup pci-arbiter and rumpdisk translators.
  services: childhurd: Bump default qemu memory to 2048MB.
  system: hurd: Boot with pci.arbiter and rumpdisk.

 gnu/build/hurd-boot.scm                       |  10 +-
 gnu/local.mk                                  |   2 +
 gnu/packages/cross-base.scm                   |  34 ++-
 gnu/packages/hurd.scm                         | 231 +++++++++++++++++-
 ...bc-2.35-hurd-clock_gettime_monotonic.patch | 137 +++++++++++
 ...glibc-2.35-hurd-clock_t_centiseconds.patch |  63 +++++
 gnu/packages/xorg.scm                         |  17 ++
 gnu/services/virtualization.scm               |   4 +-
 gnu/system.scm                                |  25 +-
 gnu/system/examples/bare-hurd.tmpl            |   4 +-
 10 files changed, 504 insertions(+), 23 deletions(-)
 create mode 100644 gnu/packages/patches/glibc-2.35-hurd-clock_gettime_monotonic.patch
 create mode 100644 gnu/packages/patches/glibc-2.35-hurd-clock_t_centiseconds.patch


base-commit: 5b700945fb0b33eec410de8979cae2fbf0d4f118
-- 
2.39.2





^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v4 1/8] gnu: glibc: Update time patches for the Hurd.
  2023-05-18  9:38 ` [bug#63527] [PATCH v4 0/8] Rumpdisk support for the Hurd, really! Janneke Nieuwenhuizen
@ 2023-05-18  9:38   ` Janneke Nieuwenhuizen
  2023-05-18 17:10     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support " Ludovic Courtès
  2023-05-18  9:38   ` [bug#63527] [PATCH v4 2/8] gnu: Add libpciaccess-0.17 Janneke Nieuwenhuizen
                     ` (6 subsequent siblings)
  7 siblings, 1 reply; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  9:38 UTC (permalink / raw)
  To: 63527

The previous set of time patches were adapted from the Debian Salsa glibc
package git and were needed only to get Python to build.  The rumpkernel needs
the full versions of those patches, with the current set causes a rumpkernel
panic.

As discussed/suggested on IRC

    https://logs.guix.gnu.org/hurd/2023-05-17.log#150916

* gnu/packages/patches/glibc-2.35-hurd-clock_t_centiseconds.patch,
gnu/packages/patches/glibc-2.35-hurd-clock_gettime_monotonic.patch: New files.
* gnu/packages/cross-base.scm (cross-libc*)[native-inputs]: Add them, together
with their incorrect/incomplete already applied versions.
[arguments]: Use them in a new patch-libc/hurd phase: revert the incorrect
ones and apply the new patches.
---
 gnu/local.mk                                  |   2 +
 gnu/packages/cross-base.scm                   |  34 ++++-
 ...bc-2.35-hurd-clock_gettime_monotonic.patch | 137 ++++++++++++++++++
 ...glibc-2.35-hurd-clock_t_centiseconds.patch |  63 ++++++++
 4 files changed, 233 insertions(+), 3 deletions(-)
 create mode 100644 gnu/packages/patches/glibc-2.35-hurd-clock_gettime_monotonic.patch
 create mode 100644 gnu/packages/patches/glibc-2.35-hurd-clock_t_centiseconds.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 42514ded8e..c5b3568742 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1233,6 +1233,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/glib-appinfo-watch.patch			\
   %D%/packages/patches/glib-networking-gnutls-binding.patch	\
   %D%/packages/patches/glib-skip-failing-test.patch		\
+  %D%/packages/patches/glibc-2.35-hurd-clock_gettime_monotonic.patch	\
+  %D%/packages/patches/glibc-2.35-hurd-clock_t_centiseconds.patch	\
   %D%/packages/patches/glibc-CVE-2019-7309.patch		\
   %D%/packages/patches/glibc-CVE-2019-9169.patch		\
   %D%/packages/patches/glibc-CVE-2019-19126.patch		\
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 8d0b41180b..c8d1aef814 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013-2018, 2020, 2023 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016, 2019, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
@@ -624,7 +624,22 @@ (define* (cross-libc* target
                                (("/[^ ]+/lib/libc.so.0.3")
                                 (string-append out "/lib/libc.so.0.3"
                                                " libmachuser.so libhurduser.so"))))
-                           #t)))
+                           #t))
+                       ;; TODO: move to glibc in the next rebuild cycle
+                       (add-after 'unpack 'patch-libc/hurd
+                         (lambda* (#:key inputs #:allow-other-keys)
+                           (for-each
+                            (lambda (name)
+                              (let ((patch (assoc-ref inputs name)))
+                                (invoke "patch" "-p1" "--force" "-R" "-i" patch)))
+                            '("hurd-monotonic.patch"
+                              "hurd-centiseconds.patch"))
+                           (for-each
+                            (lambda (name)
+                              (let ((patch (assoc-ref inputs name)))
+                                (invoke "patch" "-p1" "--force" "-i" patch)))
+                            '("2.35-hurd-centiseconds.patch"
+                              "2.35-hurd-monotonic.patch")))))
                      '())))))
 
         ;; Shadow the native "kernel-headers" because glibc's recipe expects the
@@ -637,7 +652,20 @@ (define* (cross-libc* target
                                `(("cross-mig"
                                   ,(cross-mig target
                                               #:xgcc xgcc
-                                              #:xbinutils xbinutils)))
+                                              #:xbinutils xbinutils))
+                                 ;; TODO: move to glibc in the next rebuild cycle
+                                 ("hurd-monotonic.patch"
+                                  ,@(search-patches
+                                     "glibc-hurd-clock_gettime_monotonic.patch"))
+                                 ("hurd-centiseconds.patch"
+                                  ,@(search-patches
+                                     "glibc-hurd-clock_t_centiseconds.patch"))
+                                 ("2.35-hurd-monotonic.patch"
+                                  ,@(search-patches
+                                     "glibc-2.35-hurd-clock_gettime_monotonic.patch"))
+                                 ("2.35-hurd-centiseconds.patch"
+                                  ,@(search-patches
+                                     "glibc-2.35-hurd-clock_t_centiseconds.patch")))
                                '())
                          ,@(package-inputs libc) ;FIXME: static-bash
                          ,@(package-native-inputs libc))))))
diff --git a/gnu/packages/patches/glibc-2.35-hurd-clock_gettime_monotonic.patch b/gnu/packages/patches/glibc-2.35-hurd-clock_gettime_monotonic.patch
new file mode 100644
index 0000000000..05769d61b9
--- /dev/null
+++ b/gnu/packages/patches/glibc-2.35-hurd-clock_gettime_monotonic.patch
@@ -0,0 +1,137 @@
+Upstream status: taken from upstream:
+
+    https://salsa.debian.org/glibc-team/glibc/-/blob/sid/debian/patches/hurd-i386/local-clock_gettime_MONOTONIC.diff
+
+Use the realtime clock for the monotonic clock. This is of course not a proper
+implementation (which is being done in Mach), but will permit to fix at least
+the iceweasel stack.
+
+vlc however doesn't build when _POSIX_CLOCK_SELECTION is enabled but
+_POSIX_TIMERS is not, and they refuse to fix that (see #765578), so disable the
+former.
+
+---
+ sysdeps/mach/hurd/bits/posix_opt.h |    2 +-
+ sysdeps/unix/clock_gettime.c       |    1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+Index: glibc-2.27/sysdeps/mach/clock_gettime.c
+===================================================================
+--- glibc-2.27.orig/sysdeps/mach/clock_gettime.c
++++ glibc-2.27/sysdeps/mach/clock_gettime.c
+@@ -31,6 +31,10 @@ __clock_gettime (clockid_t clock_id, str
+   switch (clock_id) {
+ 
+     case CLOCK_REALTIME:
++    case CLOCK_MONOTONIC:
++    case CLOCK_MONOTONIC_RAW:
++    case CLOCK_REALTIME_COARSE:
++    case CLOCK_MONOTONIC_COARSE:
+       {
+ 	/* __host_get_time can only fail if passed an invalid host_t.
+ 	   __mach_host_self could theoretically fail (producing an
+Index: glibc-2.27/rt/timer_create.c
+===================================================================
+--- glibc-2.27.orig/rt/timer_create.c
++++ glibc-2.27/rt/timer_create.c
+@@ -48,7 +48,7 @@ timer_create (clockid_t clock_id, struct
+       return -1;
+     }
+ 
+-  if (clock_id != CLOCK_REALTIME)
++  if (clock_id != CLOCK_REALTIME && clock_id != CLOCK_MONOTONIC && clock_id != CLOCK_MONOTONIC_RAW && clock_id != CLOCK_REALTIME_COARSE && clock_id != CLOCK_MONOTONIC_COARSE)
+     {
+       __set_errno (EINVAL);
+       return -1;
+Index: glibc-2.27/sysdeps/mach/hurd/bits/posix_opt.h
+===================================================================
+--- glibc-2.27.orig/sysdeps/mach/hurd/bits/posix_opt.h
++++ glibc-2.27/sysdeps/mach/hurd/bits/posix_opt.h
+@@ -163,10 +163,10 @@
+ #define _POSIX_THREAD_PROCESS_SHARED	-1
+ 
+ /* The monotonic clock might be available.  */
+-#define _POSIX_MONOTONIC_CLOCK	0
++#define _POSIX_MONOTONIC_CLOCK	200809L
+ 
+-/* The clock selection interfaces are available.  */
+-#define _POSIX_CLOCK_SELECTION	200809L
++/* The clock selection interfaces are not really available yet.  */
++#define _POSIX_CLOCK_SELECTION	-1
+ 
+ /* Advisory information interfaces could be available in future.  */
+ #define _POSIX_ADVISORY_INFO	0
+Index: glibc-upstream/sysdeps/posix/clock_getres.c
+===================================================================
+--- glibc-upstream.orig/sysdeps/posix/clock_getres.c
++++ glibc-upstream/sysdeps/posix/clock_getres.c
+@@ -52,6 +52,10 @@ __clock_getres (clockid_t clock_id, stru
+   switch (clock_id)
+     {
+     case CLOCK_REALTIME:
++    case CLOCK_MONOTONIC:
++    case CLOCK_MONOTONIC_RAW:
++    case CLOCK_REALTIME_COARSE:
++    case CLOCK_MONOTONIC_COARSE:
+       retval = realtime_getres (res);
+       break;
+ 
+--- ./sysdeps/mach/clock_nanosleep.c.original	2020-07-21 00:31:35.226113142 +0200
++++ ./sysdeps/mach/clock_nanosleep.c	2020-07-21 00:31:49.026185761 +0200
+@@ -62,7 +62,7 @@
+ __clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req,
+ 		   struct timespec *rem)
+ {
+-  if (clock_id != CLOCK_REALTIME
++  if ((clock_id != CLOCK_REALTIME && clock_id != CLOCK_MONOTONIC && clock_id != CLOCK_MONOTONIC_RAW && clock_id != CLOCK_REALTIME_COARSE && clock_id != CLOCK_MONOTONIC_COARSE)
+       || !valid_nanoseconds (req->tv_nsec)
+       || (flags != 0 && flags != TIMER_ABSTIME))
+     return EINVAL;
+Index: glibc-2.32/hurd/hurdlock.c
+===================================================================
+--- glibc-2.32.orig/hurd/hurdlock.c
++++ glibc-2.32/hurd/hurdlock.c
+@@ -47,7 +47,7 @@ int
+ __lll_abstimed_wait (void *ptr, int val,
+   const struct timespec *tsp, int flags, int clk)
+ {
+-  if (clk != CLOCK_REALTIME)
++  if (clk != CLOCK_REALTIME && clk != CLOCK_MONOTONIC)
+     return EINVAL;
+ 
+   int mlsec = compute_reltime (tsp, clk);
+@@ -59,7 +59,7 @@ int
+ __lll_abstimed_wait_intr (void *ptr, int val,
+   const struct timespec *tsp, int flags, int clk)
+ {
+-  if (clk != CLOCK_REALTIME)
++  if (clk != CLOCK_REALTIME && clk != CLOCK_MONOTONIC)
+     return EINVAL;
+ 
+   int mlsec = compute_reltime (tsp, clk);
+@@ -79,7 +79,7 @@ int
+ __lll_abstimed_xwait (void *ptr, int lo, int hi,
+   const struct timespec *tsp, int flags, int clk)
+ {
+-  if (clk != CLOCK_REALTIME)
++  if (clk != CLOCK_REALTIME && clk != CLOCK_MONOTONIC)
+     return EINVAL;
+ 
+   int mlsec = compute_reltime (tsp, clk);
+@@ -91,7 +91,7 @@ int
+ __lll_abstimed_lock (void *ptr,
+   const struct timespec *tsp, int flags, int clk)
+ {
+-  if (clk != CLOCK_REALTIME)
++  if (clk != CLOCK_REALTIME && clk != CLOCK_MONOTONIC)
+     return EINVAL;
+ 
+   if (__lll_trylock (ptr) == 0)
+@@ -177,7 +177,7 @@ __lll_robust_abstimed_lock (void *ptr,
+   int wait_time = 25;
+   unsigned int val;
+ 
+-  if (clk != CLOCK_REALTIME)
++  if (clk != CLOCK_REALTIME && clk != CLOCK_MONOTONIC)
+     return EINVAL;
+ 
+   while (1)
diff --git a/gnu/packages/patches/glibc-2.35-hurd-clock_t_centiseconds.patch b/gnu/packages/patches/glibc-2.35-hurd-clock_t_centiseconds.patch
new file mode 100644
index 0000000000..c4e9fd5105
--- /dev/null
+++ b/gnu/packages/patches/glibc-2.35-hurd-clock_t_centiseconds.patch
@@ -0,0 +1,63 @@
+Upstream status: taken from upstream:
+
+    https://salsa.debian.org/glibc-team/glibc/-/blob/sid/debian/patches/hurd-i386/unsubmitted-clock_t_centiseconds.diff
+
+Some applications assume centisecond precision, or at most millisecond precision
+(e.g. guile).  This is a work-around for them.
+
+---
+ getclktck.c |    5 ++---
+ setitimer.c |    2 +-
+ times.c     |    2 +-
+ 4 files changed, 8 insertions(+), 9 deletions(-)
+commit d57f2f9b4bd007846af2fb4217486ea572579010
+Author: Richard Braun <rbraun@sceen.net>
+Date:   Tue Aug 27 11:35:31 2013 +0200
+
+    Express CPU time (clock_t of times(2)) in centiseconds
+
+diff --git a/sysdeps/mach/hurd/getclktck.c b/sysdeps/mach/hurd/getclktck.c
+index 69be2cc..5f7d946 100644
+--- a/sysdeps/mach/hurd/getclktck.c
++++ b/sysdeps/mach/hurd/getclktck.c
+@@ -18,12 +18,11 @@
+ 
+ #include <time.h>
+ 
+-/* Return frequency of `times'.
+-   Since Mach reports CPU times in microseconds, we always use 1 million.  */
++/* Return frequency of `times'.  */
+ int
+ __getclktck (void)
+ {
+-  return 1000000;
++  return 100;
+ }
+ 
+ /* Before glibc 2.2, the Hurd actually did this differently, so we
+diff --git a/sysdeps/mach/hurd/setitimer.c b/sysdeps/mach/hurd/setitimer.c
+index 39b6b16..4992c89 100644
+--- a/sysdeps/mach/hurd/setitimer.c
++++ b/sysdeps/mach/hurd/setitimer.c
+@@ -42,7 +42,7 @@ quantize_timeval (struct timeval *tv)
+   static time_t quantum = -1;
+ 
+   if (quantum == -1)
+-    quantum = 1000000 / __getclktck ();
++    quantum = 100 / __getclktck ();
+ 
+   tv->tv_usec = ((tv->tv_usec + (quantum - 1)) / quantum) * quantum;
+   if (tv->tv_usec >= 1000000)
+diff --git a/sysdeps/mach/hurd/times.c b/sysdeps/mach/hurd/times.c
+index 9e13a75..593c33a 100644
+--- a/sysdeps/mach/hurd/times.c
++++ b/sysdeps/mach/hurd/times.c
+@@ -29,7 +29,7 @@
+ static inline clock_t
+ clock_from_time_value (const time_value_t *t)
+ {
+-  return t->seconds * 1000000 + t->microseconds;
++  return t->seconds * 100 + t->microseconds / 10000;
+ }
+ 
+ /* Store the CPU time used by this process and all its
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v4 2/8] gnu: Add libpciaccess-0.17.
  2023-05-18  9:38 ` [bug#63527] [PATCH v4 0/8] Rumpdisk support for the Hurd, really! Janneke Nieuwenhuizen
  2023-05-18  9:38   ` [bug#63527] [PATCH v4 1/8] gnu: glibc: Update time patches for the Hurd Janneke Nieuwenhuizen
@ 2023-05-18  9:38   ` Janneke Nieuwenhuizen
  2023-05-18  9:38   ` [bug#63527] [PATCH v4 3/8] gnu: hurd: Update libpciaccess to 0.17 Janneke Nieuwenhuizen
                     ` (5 subsequent siblings)
  7 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  9:38 UTC (permalink / raw)
  To: 63527

* gnu/packages/xorg.scm (libpciaccess-0.17): New variable.
---
 gnu/packages/xorg.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index f3d30c0ff1..93a2cca15d 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -34,6 +34,7 @@
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 qblade <qblade@protonmail.com>
 ;;; Copyright © 2021 Lu Hui <luhux76@gmail.com>
+;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1145,6 +1146,22 @@ (define-public libpciaccess
     (description "Xorg Generic PCI access library.")
     (license license:x11)))
 
+(define-public libpciaccess-0.17
+  (package
+    (inherit libpciaccess)
+    (name "libpciaccess")
+    (version "0.17")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://xorg/individual/lib/libpciaccess-"
+             version
+             ".tar.xz"))
+       (sha256
+        (base32
+         "0wsvv5d05maqbidvnavka7n0fnql55m4jix5wwlk14blr6ikna3l"))))))
+
 (define-public libpthread-stubs
   (package
     (name "libpthread-stubs")
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v4 3/8] gnu: hurd: Update libpciaccess to 0.17.
  2023-05-18  9:38 ` [bug#63527] [PATCH v4 0/8] Rumpdisk support for the Hurd, really! Janneke Nieuwenhuizen
  2023-05-18  9:38   ` [bug#63527] [PATCH v4 1/8] gnu: glibc: Update time patches for the Hurd Janneke Nieuwenhuizen
  2023-05-18  9:38   ` [bug#63527] [PATCH v4 2/8] gnu: Add libpciaccess-0.17 Janneke Nieuwenhuizen
@ 2023-05-18  9:38   ` Janneke Nieuwenhuizen
  2023-05-18  9:38   ` [bug#63527] [PATCH v4 4/8] gnu: Add rumpkernel Janneke Nieuwenhuizen
                     ` (4 subsequent siblings)
  7 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  9:38 UTC (permalink / raw)
  To: 63527

As suggested by youpi on IRC

    https://logs.guix.gnu.org/hurd/2023-05-17.log#132259

libpciaccess-0.16 is too old for the Hurd and would need Hurd-specific patches
while libpciaccess-0.17 works out of the box.

* gnu/packages/hurd.scm (hurd)[inputs]: Use libpciaccess-0.17.
(netdde)[inputs]: Likewise.
---
 gnu/packages/hurd.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 34c7c00f2d..da94b05272 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2018, 2020-2023 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2020, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2022, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Rene Saavedra <pacoon@protonmail.com>
 ;;;
@@ -45,7 +45,7 @@ (define-module (gnu packages hurd)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages onc-rpc)
-  #:use-module (gnu packages xorg) ; libpciaccess
+  #:use-module (gnu packages xorg) ;#:select (libpciaccess-0.17)
   #:use-module (guix git-download)
   #:export (hurd-system?
             hurd-target?))
@@ -547,7 +547,7 @@ (define-public hurd
      `(("libgcrypt" ,libgcrypt)                  ;for /hurd/random
        ("libdaemon" ,libdaemon)                  ;for /bin/console --daemonize
        ("unifont" ,unifont)
-       ("libpciaccess" ,libpciaccess)
+       ("libpciaccess" ,libpciaccess-0.17)
 
        ;; For NFS support
        ("libtirpc" ,libtirpc/hurd)
@@ -645,7 +645,7 @@ (define-public netdde
                                             "/bin"))
                #t)))))
       (inputs
-       (list hurd libpciaccess zlib))
+       (list hurd libpciaccess-0.17 zlib))
       (native-inputs
        `(("coreutils" ,coreutils)
          ("gawk" ,gawk)
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v4 4/8] gnu: Add rumpkernel.
  2023-05-18  9:38 ` [bug#63527] [PATCH v4 0/8] Rumpdisk support for the Hurd, really! Janneke Nieuwenhuizen
                     ` (2 preceding siblings ...)
  2023-05-18  9:38   ` [bug#63527] [PATCH v4 3/8] gnu: hurd: Update libpciaccess to 0.17 Janneke Nieuwenhuizen
@ 2023-05-18  9:38   ` Janneke Nieuwenhuizen
  2023-05-18 17:17     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
  2023-05-18  9:39   ` [bug#63527] [PATCH v4 5/8] gnu: hurd: Add rumpkernel Janneke Nieuwenhuizen
                     ` (3 subsequent siblings)
  7 siblings, 1 reply; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  9:38 UTC (permalink / raw)
  To: 63527

This uses the Debian Salsa rumpkernel package git as upstream as that is where
delopment happens.  Once things have stabalized upstream may change to the
NetBSD git from where Debian takes their snapshots.

* gnu/packages/hurd.scm (rumpkernel): New variable.
---
 gnu/packages/hurd.scm | 206 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 206 insertions(+)

diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index da94b05272..c7ea86b266 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -662,3 +662,209 @@ (define-public netdde
       ;; Some drivers are dually licensed with the options being GPLv2 or one
       ;; of MPL/Expat/BSD-3 (dependent on the driver).
       (license gpl2))))
+
+(define-public rumpkernel
+  (let ((commit "ec2ab9612be4dc48a316a21a0c96d3388478a064")
+        (revision "2"))
+    (package
+      (name "rumpkernel")
+      (version (git-version "0-20211031" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://salsa.debian.org/hurd-team/rumpkernel.git")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "1ypjg3jyzhh3gnanmk6fh76dwl5ml78n311nbi0hw7f7hygzn7vk"))
+                (file-name (git-file-name name commit))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:tests? #f
+        #:modules '((srfi srfi-26)
+                    (ice-9 match)
+                    (ice-9 rdelim)
+                    (guix build utils)
+                    (guix build gnu-build-system))
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'apply-patches
+              (lambda* (#:key target #:allow-other-keys)
+                (let* ((patch-directory "debian/patches/")
+                       (series (string-append patch-directory "series"))
+                       (text (with-input-from-file series read-string))
+                       (lines (string-split (string-trim-right text) #\newline))
+                       (patches (filter (negate (cute string-prefix? "#" <>))
+                                        lines))
+                       (patch-files (map
+                                     (cute string-append patch-directory <>)
+                                     patches)))
+                  (for-each
+                   (cute invoke "patch" "--force" "-p1" "-i" <>)
+                   patch-files)
+                  ;; Somewhere in the build.sh/make process MIG is not being
+                  ;; exported, apparently.
+                  (when target
+                    (substitute* "pci-userspace/src-gnu/Makefile.inc"
+                      (("MIG=mig")
+                       (string-append "MIG=" target "-mig")))))))
+            (add-before 'configure 'setenv
+              (lambda* (#:key build target #:allow-other-keys)
+                (define (noisy-setenv name value)
+                  (setenv name value)
+                  (format (current-error-port) "set ~a=~s\n" name value))
+                (noisy-setenv "HOST_CC" "gcc")
+                (when target
+                  (noisy-setenv "MIG" (string-append target "-mig")))
+                (let ((target (or target build)))
+                  (noisy-setenv "TARGET_AR" (string-append target "-ar"))
+                  (noisy-setenv "TARGET_CC" (string-append target "-gcc"))
+                  (noisy-setenv "TARGET_CXX" (string-append target "-g++"))
+                  (noisy-setenv "TARGET_LD" (string-append target "-ld"))
+                  (noisy-setenv "TARGET_MIG" (string-append target "-mig"))
+                  (noisy-setenv "TARGET_NM" (string-append target "-nm")))
+                (setenv "PAWD" "pwd")
+                (for-each
+                 (cute noisy-setenv <> "")
+                 '("_GCC_CRTENDS"
+                   "_GCC_CRTEND"
+                   "_GCC_CRTBEGINS"
+                   "_GCC_CRTBEGIN"
+                   "_GCC_CRTI"
+                   "_GCC_CRTN"))
+                (noisy-setenv "BSDOBJDIR=" (string-append (getcwd) "/obj"))))
+            (replace 'configure
+              (lambda args
+                (let ((configure (assoc-ref %standard-phases 'configure)))
+                  (with-directory-excursion "buildrump.sh/src/lib/librumpuser"
+                    (apply configure args)))))
+            (replace 'build
+              (lambda* (#:key parallel-build? #:allow-other-keys)
+                (let* ((jobs (if parallel-build? (parallel-job-count) 1))
+                       (host-cpu (match #$(or (%current-target-system
+                                               (%current-system)))
+                                   ("i586-pc-gnu" "i386")
+                                   ("i686-linux" "i386")
+                                   ("x86_64-linux" "amd64")))
+                       (toprump (string-append
+                                 (getcwd)
+                                 "/buildrump.sh/src/sys/rump"))
+                       (rump-make (string-append
+                                   (getcwd)
+                                   "/buildrump.sh/src/obj/tooldir/bin/nbmake-"
+                                   host-cpu)))
+                  (mkdir "obj")
+                  (with-directory-excursion "buildrump.sh/src"
+                    (invoke
+                     "sh" "build.sh"
+                     "-V" "TOOLS_BUILDRUMP=yes"
+                     "-V" "MKBINUTILS=no" 
+                     "-V" "MKGDB=no" 
+                     "-V" "MKGROFF=no" 
+                     "-V" (string-append "TOPRUMP=" toprump)
+                     "-V" "BUILDRUMP_CPPFLAGS=-Wno-error=stringop-overread"
+                     "-V" "RUMPUSER_EXTERNAL_DPLIBS=pthread" 
+		     "-V" (string-append
+                           "CPPFLAGS="
+                           " -I../../obj/destdir." host-cpu "/usr/include"
+                           " -D_FILE_OFFSET_BITS=64"
+                           " -DRUMP_REGISTER_T=int"
+                           " -DRUMPUSER_CONFIG=yes"
+                           " -DNO_PCI_MSI_MSIX=yes"
+                           " -DNUSB_DMA=1")
+                     "-V" (string-append
+                           "CWARNFLAGS="
+                           " -Wno-error=maybe-uninitialized"
+                           " -Wno-error=address-of-packed-member"
+                           " -Wno-error=unused-variable"
+                           " -Wno-error=stack-protector"
+                           " -Wno-error=array-parameter"
+                           " -Wno-error=array-bounds"
+                           " -Wno-error=stringop-overflow")
+                     "-V" "LIBCRTBEGIN="
+                     "-V" "LIBCRTEND="
+                     "-V" "LIBCRT0="
+                     "-V" "LIBCRTI="
+                     "-V" "_GCC_CRTENDS="
+                     "-V" "_GCC_CRTEND="
+                     "-V" "_GCC_CRTBEGINS="
+                     "-V" "_GCC_CRTBEGIN="
+                     "-V" "_GCC_CRTI="
+                     "-V" "_GCC_CRTN="
+                     "-U"
+                     "-u"
+                     "-T" "./obj/tooldir"
+                     "-m" host-cpu
+                     "-j" (number->string jobs)
+                     "tools"
+                     "rump"))
+                  (with-directory-excursion "buildrump.sh/src/lib/librumpuser"
+                    (setenv "RUMPRUN" "true")
+                    (invoke rump-make "dependall"))
+                  (with-directory-excursion "pci-userspace/src-gnu"
+                    (invoke rump-make "dependall")))))
+            (replace 'install
+              (lambda _
+                (define (install-file file target)
+                  (let ((dest (string-append target (basename file))))
+                    (format (current-output-port) "`~a' -> `~a'~%" file dest)
+                    (mkdir-p (dirname dest))
+                    (if (file-exists? dest)
+                        (format (current-error-port)
+                                "warning: skipping: ~a\n" file)
+                        (let ((stat (lstat file)))
+                          (case (stat:type stat)
+                            ((symlink)
+                             (let ((target (readlink file)))
+                               (symlink target dest)))
+                            (else
+                             (copy-file file dest)))))))
+                (let ((header (string-append #$output "/include/rump"))
+                      (lib (string-append #$output "/lib/")))
+                  (mkdir-p header)
+                  (copy-recursively "buildrump.sh/src/sys/rump/include/rump"
+                                    header)
+                  (mkdir-p lib)
+                  (for-each
+                   (cute install-file <> lib)
+                   (append (find-files "buildrump.sh/src" "librump.*[.](a|so.*)")
+                           (find-files "obj" "librump.*[.](a|so.*)")))))))))
+      (inputs
+       (list gnumach-headers libpciaccess-0.17))
+      (native-inputs
+       (list
+        autoconf
+        automake
+        libgcrypt
+        (if (%current-target-system)
+            (let* ((cross-base (resolve-interface '(gnu packages cross-base)))
+                   (cross-mig (module-ref cross-base 'cross-mig)))
+              (cross-mig (%current-target-system)))
+            mig)
+        zlib))
+      (supported-systems %hurd-systems)
+      (home-page "https://wiki.netbsd.org/rumpkernel")
+      (synopsis "NetBSD as rumpkernel for the GNU/Hurd")
+      (description
+       "This package provides NetBSD as rumpkernel for the GNU/Hurd, so that
+the Hurd may be installed on iron.  Using this rumpkernel package, the hurd
+package's rumpdisk can be built which provides the pci.arbiter and rumpdisk
+servers.")
+      (license (list
+                asl2.0
+                boost1.0
+                bsd-2
+                bsd-3
+                bsd-4
+                cddl1.0
+                expat
+                gpl1
+                gpl2+
+                gpl3+
+                isc
+                lgpl2.0+
+                public-domain
+                (@ (guix licenses) zlib)
+                (non-copyleft "file://src/lib/libc/hash/hashhl.c"
+                              "See debian/copyright in the distribution."))))))
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v4 5/8] gnu: hurd: Add rumpkernel.
  2023-05-18  9:38 ` [bug#63527] [PATCH v4 0/8] Rumpdisk support for the Hurd, really! Janneke Nieuwenhuizen
                     ` (3 preceding siblings ...)
  2023-05-18  9:38   ` [bug#63527] [PATCH v4 4/8] gnu: Add rumpkernel Janneke Nieuwenhuizen
@ 2023-05-18  9:39   ` Janneke Nieuwenhuizen
  2023-05-18  9:39   ` [bug#63527] [PATCH v4 6/8] hurd-boot: Setup pci-arbiter and rumpdisk translators Janneke Nieuwenhuizen
                     ` (2 subsequent siblings)
  7 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  9:39 UTC (permalink / raw)
  To: 63527

* gnu/packages/hurd.scm (hurd)[inputs]: Add rumpkernel.
[arguments]: Rename `prepare-dde' phase to 'prepare-addons'.  Add "rumpdisk"
directory.  Add --enable-static-progs=... option to #:configure-flags.
---
 gnu/packages/hurd.scm | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index c7ea86b266..aaa9863a10 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -356,7 +356,7 @@ (define-public hurd
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'prepare-dde
+         (add-after 'unpack 'prepare-addons
            (lambda* (#:key native-inputs inputs #:allow-other-keys)
              ;; First we import the things we want from dde.
              (for-each make-file-writable (find-files "."))
@@ -370,7 +370,10 @@ (define-public hurd
              ;; Makefile. libdde_linux26 is built later in its own phase.
              (substitute* "Makefile"
                (("libbpf ")
-                "libbpf libmachdevdde libddekit"))))
+                "libbpf libmachdevdde libddekit rumpdisk"))
+             (substitute* "rumpdisk/Makefile"
+               (("rumpdev_ahcisata" all)
+                (string-append all " rumpdev_ata")))))
          (add-after 'unpack 'find-tirpc
            (lambda* (#:key inputs #:allow-other-keys)
              (for-each (lambda (var)
@@ -533,6 +536,7 @@ (define-public hurd
        #:configure-flags
        ,#~(list (string-append "LDFLAGS=-Wl,-rpath="
                                #$output "/lib")
+                "--enable-static-progs=ext2fs,iso9660fs,rumpdisk,pci-arbiter,acpi"
                 "--disable-ncursesw"
                 "--without-libbz2"
                 "--without-libz"
@@ -541,7 +545,11 @@ (define-public hurd
                 ;; clnt_create
                 "ac_func_search_save_LIBS=-ltirpc"
                 "ac_cv_search_clnt_create=false"
-                "CFLAGS=-fcommon")))
+                "CFLAGS=-fcommon")
+       #:make-flags
+         (list (string-append "RUMPPATH="
+                              (assoc-ref %build-inputs "rumpkernel")
+                              "/lib"))))
     (build-system gnu-build-system)
     (inputs
      `(("libgcrypt" ,libgcrypt)                  ;for /hurd/random
@@ -557,7 +565,8 @@ (define-public hurd
        ("coreutils" ,coreutils)
        ("sed" ,sed)
        ("grep" ,grep)
-       ("util-linux" ,util-linux)))
+       ("util-linux" ,util-linux)
+       ("rumpkernel" ,rumpkernel)))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v4 6/8] hurd-boot: Setup pci-arbiter and rumpdisk translators.
  2023-05-18  9:38 ` [bug#63527] [PATCH v4 0/8] Rumpdisk support for the Hurd, really! Janneke Nieuwenhuizen
                     ` (4 preceding siblings ...)
  2023-05-18  9:39   ` [bug#63527] [PATCH v4 5/8] gnu: hurd: Add rumpkernel Janneke Nieuwenhuizen
@ 2023-05-18  9:39   ` Janneke Nieuwenhuizen
  2023-05-18  9:39   ` [bug#63527] [PATCH v4 7/8] services: childhurd: Bump default qemu memory to 2048MB Janneke Nieuwenhuizen
  2023-05-18  9:39   ` [bug#63527] [PATCH v4 8/8] system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
  7 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  9:39 UTC (permalink / raw)
  To: 63527

* gnu/build/hurd-boot.scm (make-hurd-device-nodes): Setup pci-arbiter and
rumpdisk translators.
---
 gnu/build/hurd-boot.scm | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/gnu/build/hurd-boot.scm b/gnu/build/hurd-boot.scm
index 95c15907dd..25c8f0ea51 100644
--- a/gnu/build/hurd-boot.scm
+++ b/gnu/build/hurd-boot.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2020-2022 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -105,7 +105,7 @@ (define* (make-hurd-device-nodes #:optional (root "/"))
 
   ;; TODO: Set the 'gnu.translator' extended attribute for passive translator
   ;; settings?
-  )
+  (mkdir-p (scope "servers/bus/pci")))
 
 (define (passive-translator-xattr? file-name)
   "Return true if FILE-NAME has an extended @code{gnu.translator} attribute
@@ -183,7 +183,8 @@ (define* (set-hurd-device-translators #:optional (root "/"))
        (mkdir-p dir))))
 
   (define servers
-    '(("servers/crash-dump-core" ("/hurd/crash" "--dump-core"))
+    '(("servers/bus/pci"         ("/hurd/pci-arbiter"))
+      ("servers/crash-dump-core" ("/hurd/crash" "--dump-core"))
       ("servers/crash-kill"      ("/hurd/crash" "--kill"))
       ("servers/crash-suspend"   ("/hurd/crash" "--suspend"))
       ("servers/password"        ("/hurd/password"))
@@ -213,6 +214,8 @@ (define* (set-hurd-device-translators #:optional (root "/"))
       ;; 'fd_to_filename' in libc expects it.
       ("dev/fd"      ("/hurd/magic"    "--directory" "fd")  #o555)
 
+      ("dev/rumpdisk"("/hurd/rumpdisk")                     #o660)
+
       ;; Create a number of ttys; syslogd writes to tty12 by default.
       ;; FIXME: Creating /dev/tty12 leads the console client to switch to
       ;; tty12 when syslogd starts, which is confusing for users.  Thus, do
@@ -249,6 +252,7 @@ (define* (set-hurd-device-translators #:optional (root "/"))
   (false-if-EEXIST (symlink "/dev/fd/1" (scope "dev/stdout")))
   (false-if-EEXIST (symlink "/dev/fd/2" (scope "dev/stderr")))
   (false-if-EEXIST (symlink "crash-dump-core" (scope "servers/crash")))
+  (false-if-EEXIST (symlink "/dev/rumpdisk" (scope "dev/disk")))
 
   ;; Make sure /etc/mtab is a symlink to /proc/mounts.
   (false-if-exception (delete-file (scope "etc/mtab")))
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v4 7/8] services: childhurd: Bump default qemu memory to 2048MB.
  2023-05-18  9:38 ` [bug#63527] [PATCH v4 0/8] Rumpdisk support for the Hurd, really! Janneke Nieuwenhuizen
                     ` (5 preceding siblings ...)
  2023-05-18  9:39   ` [bug#63527] [PATCH v4 6/8] hurd-boot: Setup pci-arbiter and rumpdisk translators Janneke Nieuwenhuizen
@ 2023-05-18  9:39   ` Janneke Nieuwenhuizen
  2023-05-18 17:20     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
  2023-05-18  9:39   ` [bug#63527] [PATCH v4 8/8] system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
  7 siblings, 1 reply; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  9:39 UTC (permalink / raw)
  To: 63527

When booting with pci-arbiter and rumpdisk and using 1024MB of memory for
qemu, booting hangs, or seems to hang, at the end of the rumpdisk boot
messages.  At least 1200MB is required, currently.

* gnu/services/virtualization.scm (<hurd-vm-configuration>)[memory-size]: Bump
to 2048.
* gnu/system/examples/bare-hurd.tmpl: Suggest using 2048 here too.  Update
example `guix system image' and "qemu" command lines too.
---
 gnu/services/virtualization.scm    | 4 ++--
 gnu/system/examples/bare-hurd.tmpl | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 2e311e3813..886b73f8c7 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Ryan Moe <ryan.moe@gmail.com>
 ;;; Copyright © 2018, 2020-2022 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2020,2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2021, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2021 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2022 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2022 Leo Nikkilä <hello@lnikki.la>
@@ -1100,7 +1100,7 @@ (define-record-type* <hurd-vm-configuration>
   (disk-size   hurd-vm-configuration-disk-size          ;number or 'guess
                (default 'guess))
   (memory-size hurd-vm-configuration-memory-size        ;number
-               (default 512))
+               (default 2048))
   (options     hurd-vm-configuration-options            ;list of string
                (default `("--snapshot")))
   (id          hurd-vm-configuration-id                 ;#f or integer [1..]
diff --git a/gnu/system/examples/bare-hurd.tmpl b/gnu/system/examples/bare-hurd.tmpl
index f0dd0cf742..463c7ee798 100644
--- a/gnu/system/examples/bare-hurd.tmpl
+++ b/gnu/system/examples/bare-hurd.tmpl
@@ -5,12 +5,12 @@
 
 ;; To build a disk image for a virtual machine, do
 ;;
-;;     ./pre-inst-env guix system image --target=i586-pc-gnu \
+;;     ./pre-inst-env guix system image --image-type=hurd-raw \
 ;;         gnu/system/examples/bare-hurd.tmpl
 ;;
 ;; You may run it like so
 ;;
-;;     guix environment --ad-hoc qemu -- qemu-system-i386 -enable-kvm -m 512M \
+;;     guix shell qemu -- qemu-system-i386 -enable-kvm -m 2048 \
 ;;      -device rtl8139,netdev=net0 -netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \
 ;;      -snapshot -hda <the-image>
 ;;
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v4 8/8] system: hurd: Boot with pci.arbiter and rumpdisk.
  2023-05-18  9:38 ` [bug#63527] [PATCH v4 0/8] Rumpdisk support for the Hurd, really! Janneke Nieuwenhuizen
                     ` (6 preceding siblings ...)
  2023-05-18  9:39   ` [bug#63527] [PATCH v4 7/8] services: childhurd: Bump default qemu memory to 2048MB Janneke Nieuwenhuizen
@ 2023-05-18  9:39   ` Janneke Nieuwenhuizen
  2023-05-18 17:18     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
  7 siblings, 1 reply; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-18  9:39 UTC (permalink / raw)
  To: 63527

Be sure to give the Hurd enough (virtual) memory

* gnu/system.scm (hurd-multiboot-modules): Add commands for pci.arbiter and
rumpdisk.
---
 gnu/system.scm | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/gnu/system.scm b/gnu/system.scm
index 354f58f55b..23addf41e9 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;; Copyright © 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <jannek@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <jannek@gnu.org>
 ;;; Copyright © 2020, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com>
@@ -1486,16 +1486,28 @@ (define (operating-system-multiboot-modules os)
 
 (define (hurd-multiboot-modules os)
   (let* ((hurd (operating-system-hurd os))
+         (pci-arbiter-command
+          (list (file-append hurd "/hurd/pci-arbiter.static")
+                "pci-arbiter"
+                "--host-priv-port='${host-port}'"
+                "--device-master-port='${device-port}'"
+                "--next-task='${disk-task}'"
+                "'$(pci-task=task-create)'"
+                "'$(task-resume)'"))
+         (rumpdisk-command
+          (list (file-append hurd "/hurd/rumpdisk.static")
+                "rumpdisk"
+                "--next-task='${fs-task}'"
+                "'$(disk-task=task-create)'"))
          (root-file-system-command
           (list (file-append hurd "/hurd/ext2fs.static")
                 "ext2fs"
                 "--multiboot-command-line='${kernel-command-line}'"
-                "--host-priv-port='${host-port}'"
-                "--device-master-port='${device-port}'"
                 "--exec-server-task='${exec-task}'"
                 "--store-type=typed"
                 "--x-xattr-translator-records"
-                "'${root}'" "'$(task-create)'" "'$(task-resume)'"))
+                "'${root}'"
+                "'$(fs-task=task-create)'"))
          (target (%current-target-system))
          (libc (if target
                    (with-parameters ((%current-target-system #f))
@@ -1512,7 +1524,10 @@ (define (hurd-multiboot-modules os)
           ;;       (file-append hurd "/hurd/exec") "'$(exec-task=task-create)'")
           (list (file-append hurd "/hurd/exec.static") "exec"
                 "'$(exec-task=task-create)'")))
-    (list root-file-system-command exec-server-command)))
+    (list pci-arbiter-command
+          rumpdisk-command
+          root-file-system-command
+          exec-server-command)))
 
 (define* (operating-system-boot-parameters os root-device
                                            #:key system-kernel-arguments?)
-- 
2.39.2





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-18  9:38   ` [bug#63527] [PATCH v4 1/8] gnu: glibc: Update time patches for the Hurd Janneke Nieuwenhuizen
@ 2023-05-18 17:10     ` Ludovic Courtès
  2023-05-19  8:21       ` Janneke Nieuwenhuizen
  0 siblings, 1 reply; 67+ messages in thread
From: Ludovic Courtès @ 2023-05-18 17:10 UTC (permalink / raw)
  To: Janneke Nieuwenhuizen; +Cc: 63527

Hello!

Awesome patch series!!

Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

> +++ b/gnu/packages/cross-base.scm
> @@ -1,7 +1,7 @@
>  ;;; GNU Guix --- Functional package management for GNU
>  ;;; Copyright © 2013-2018, 2020, 2023 Ludovic Courtès <ludo@gnu.org>
>  ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
> -;;; Copyright © 2016, 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
> +;;; Copyright © 2016, 2019, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
>  ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
>  ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
>  ;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
> @@ -624,7 +624,22 @@ (define* (cross-libc* target
>                                 (("/[^ ]+/lib/libc.so.0.3")
>                                  (string-append out "/lib/libc.so.0.3"
>                                                 " libmachuser.so libhurduser.so"))))
> -                           #t)))
> +                           #t))
> +                       ;; TODO: move to glibc in the next rebuild cycle
> +                       (add-after 'unpack 'patch-libc/hurd
> +                         (lambda* (#:key inputs #:allow-other-keys)
> +                           (for-each
> +                            (lambda (name)
> +                              (let ((patch (assoc-ref inputs name)))
> +                                (invoke "patch" "-p1" "--force" "-R" "-i" patch)))
> +                            '("hurd-monotonic.patch"
> +                              "hurd-centiseconds.patch"))

Since this should also be applied when building glibc natively on
i586-gnu, should this phase go to ‘glibc’ in (gnu packages base)
instead?

Also, in general, we should move away from quasiquote/unquote to
gexp/ungexp, which will allow us to not add inputs for patches (as is
done with ‘gcc-11’ in (gnu packages gcc)).

> +                                 ;; TODO: move to glibc in the next rebuild cycle
> +                                 ("hurd-monotonic.patch"
> +                                  ,@(search-patches
> +                                     "glibc-hurd-clock_gettime_monotonic.patch"))
> +                                 ("hurd-centiseconds.patch"
> +                                  ,@(search-patches
> +                                     "glibc-hurd-clock_t_centiseconds.patch"))
> +                                 ("2.35-hurd-monotonic.patch"
> +                                  ,@(search-patches
> +                                     "glibc-2.35-hurd-clock_gettime_monotonic.patch"))
> +                                 ("2.35-hurd-centiseconds.patch"
> +                                  ,@(search-patches
> +                                     "glibc-2.35-hurd-clock_t_centiseconds.patch")))

Let’s hope these patches will soon make it upstream!

Ludo’.




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-18  9:38   ` [bug#63527] [PATCH v4 4/8] gnu: Add rumpkernel Janneke Nieuwenhuizen
@ 2023-05-18 17:17     ` Ludovic Courtès
  2023-05-19  9:21       ` Janneke Nieuwenhuizen
  0 siblings, 1 reply; 67+ messages in thread
From: Ludovic Courtès @ 2023-05-18 17:17 UTC (permalink / raw)
  To: Janneke Nieuwenhuizen; +Cc: 63527

Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

> This uses the Debian Salsa rumpkernel package git as upstream as that is where
> delopment happens.  Once things have stabalized upstream may change to the
> NetBSD git from where Debian takes their snapshots.

Could you make it a comment close to the ‘origin’ form?

> * gnu/packages/hurd.scm (rumpkernel): New variable.

[…]

> +        #~(modify-phases %standard-phases

You can tell from the phases that it took of lot of sweat to get there.
:-)

Could you add a few comments while it’s fresh on your mind to explain
the various tweaks?  The ‘build’ phase is particularly intimidating.

> +      (native-inputs
> +       (list
> +        autoconf
> +        automake
> +        libgcrypt
> +        (if (%current-target-system)
> +            (let* ((cross-base (resolve-interface '(gnu packages cross-base)))
> +                   (cross-mig (module-ref cross-base 'cross-mig)))
> +              (cross-mig (%current-target-system)))
> +            mig)

I think you could #:use-module (gnu packages cross-base) and refer to
‘cross-mig’ directly.

Also, watch out the indentation.  ;-)

  (native-inputs
   (list autoconf
         automake
         …))

> +      (license (list
> +                asl2.0
> +                boost1.0

Could you add a comment above briefly stating what this list means?  (I
suppose each license applies to a specific part of the source?)

Anyhow, well done!

Ludo’.




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-18  9:39   ` [bug#63527] [PATCH v4 8/8] system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
@ 2023-05-18 17:18     ` Ludovic Courtès
  0 siblings, 0 replies; 67+ messages in thread
From: Ludovic Courtès @ 2023-05-18 17:18 UTC (permalink / raw)
  To: Janneke Nieuwenhuizen; +Cc: 63527

Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

>  (define (hurd-multiboot-modules os)
>    (let* ((hurd (operating-system-hurd os))
> +         (pci-arbiter-command
> +          (list (file-append hurd "/hurd/pci-arbiter.static")
> +                "pci-arbiter"
> +                "--host-priv-port='${host-port}'"
> +                "--device-master-port='${device-port}'"
> +                "--next-task='${disk-task}'"
> +                "'$(pci-task=task-create)'"
> +                "'$(task-resume)'"))
> +         (rumpdisk-command
> +          (list (file-append hurd "/hurd/rumpdisk.static")
> +                "rumpdisk"
> +                "--next-task='${fs-task}'"
> +                "'$(disk-task=task-create)'"))
>           (root-file-system-command
>            (list (file-append hurd "/hurd/ext2fs.static")
>                  "ext2fs"
>                  "--multiboot-command-line='${kernel-command-line}'"
> -                "--host-priv-port='${host-port}'"
> -                "--device-master-port='${device-port}'"
>                  "--exec-server-task='${exec-task}'"
>                  "--store-type=typed"
>                  "--x-xattr-translator-records"
> -                "'${root}'" "'$(task-create)'" "'$(task-resume)'"))
> +                "'${root}'"
> +                "'$(fs-task=task-create)'"))
>           (target (%current-target-system))

Wo0t, impressive!




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-18  9:39   ` [bug#63527] [PATCH v4 7/8] services: childhurd: Bump default qemu memory to 2048MB Janneke Nieuwenhuizen
@ 2023-05-18 17:20     ` Ludovic Courtès
  2023-05-19  9:30       ` Janneke Nieuwenhuizen
  0 siblings, 1 reply; 67+ messages in thread
From: Ludovic Courtès @ 2023-05-18 17:20 UTC (permalink / raw)
  To: Janneke Nieuwenhuizen; +Cc: 63527

Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

> When booting with pci-arbiter and rumpdisk and using 1024MB of memory for
> qemu, booting hangs, or seems to hang, at the end of the rumpdisk boot
> messages.  At least 1200MB is required, currently.
>
> * gnu/services/virtualization.scm (<hurd-vm-configuration>)[memory-size]: Bump
> to 2048.
> * gnu/system/examples/bare-hurd.tmpl: Suggest using 2048 here too.  Update
> example `guix system image' and "qemu" command lines too.

Sounds a bit fishy.  :-)

Does Debian resort to a similar workaround?

Ludo’.




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-18 17:10     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support " Ludovic Courtès
@ 2023-05-19  8:21       ` Janneke Nieuwenhuizen
  0 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-19  8:21 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 63527, dev

Ludovic Courtès writes:

Hi!

> Awesome patch series!!

Thanks!

> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> +++ b/gnu/packages/cross-base.scm
[..]
>> +                       ;; TODO: move to glibc in the next rebuild cycle
>> +                       (add-after 'unpack 'patch-libc/hurd
>> +                         (lambda* (#:key inputs #:allow-other-keys)
>> +                           (for-each
>> +                            (lambda (name)
>> +                              (let ((patch (assoc-ref inputs name)))
>> +                                (invoke "patch" "-p1" "--force" "-R" "-i" patch)))
>> +                            '("hurd-monotonic.patch"
>> +                              "hurd-centiseconds.patch"))
>
> Since this should also be applied when building glibc natively on
> i586-gnu, should this phase go to ‘glibc’ in (gnu packages base)
> instead?

Yes, but I don't know how to do that without triggering a world
rebuild, or (re)creating a glibc/hurd, and currently the native build is
broken on the hurd. It tried, in glibc

      #:phases (modify-phases %standard-phases
                 ,@(if (and (hurd-target?)
                            (equal? (package-version this-package) "2.35"))
                       ;; TODO: move to glibc in the next rebuild cycle
                       '((add-after 'unpack 'patch-libc/hurd
                           (lambda* (#:key inputs #:allow-other-keys)
                             (define* (apply-patch patch #:key reverse?)
                               (let ((patch (assoc-ref inputs name)))
                                 (invoke "patch" "-p1" "--force"
                                         (if reverse? "-R" "-N")
                                         "-i" patch)))
                             (for-each (cut apply-patch <> #:reverse #t)
                                       '("hurd-monotonic.patch"
                                         "hurd-centiseconds.patch"))
                             (for-each apply-patch
                                       '("2.35-hurd-centiseconds.patch"
                                         "2.35-hurd-monotonic.patch")))))
                        '())

but that isn't being picked-up for cross-libc.  I heard talk about
glibc/hurd, should we maybe keep this patch until we create glibc/hurd,
or make glibc/hurd sooner?

> Also, in general, we should move away from quasiquote/unquote to
> gexp/ungexp, which will allow us to not add inputs for patches (as is
> done with ‘gcc-11’ in (gnu packages gcc)).

Ah, right; nice!  Would that work for cross-libc without triggering a
world rebuild?

>> +                                 ;; TODO: move to glibc in the next rebuild cycle
>> +                                 ("hurd-monotonic.patch"
>> +                                  ,@(search-patches
>> +                                     "glibc-hurd-clock_gettime_monotonic.patch"))
[..]

> Let’s hope these patches will soon make it upstream!

Yeah!

Greetings
Janneke

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-18 17:17     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
@ 2023-05-19  9:21       ` Janneke Nieuwenhuizen
  0 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-19  9:21 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 63527

Ludovic Courtès writes:

> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> This uses the Debian Salsa rumpkernel package git as upstream as that is where
>> delopment happens.  Once things have stabalized upstream may change to the
>> NetBSD git from where Debian takes their snapshots.
>
> Could you make it a comment close to the ‘origin’ form?

That makes sense, so it doesn't get lost, done.

>> * gnu/packages/hurd.scm (rumpkernel): New variable.
>
> […]
>
>> +        #~(modify-phases %standard-phases
>
> You can tell from the phases that it took of lot of sweat to get there.
> :-)
>
> Could you add a few comments while it’s fresh on your mind to explain
> the various tweaks?  The ‘build’ phase is particularly intimidating.

I have added a general comment

        ;; As we are using the Debian package as upstream, we follow their
        ;; build:
        ;;   * apply patches in debian/patches taken from the
        ;;     debian/patches/series file
        ;;   * for the configure, make, and install stages, follow
        ;;     the code in debian/rules
        ;; The Debian patchset includes a cross build feature that we
        ;; use with two differences
        ;;   * Debian uses a multiarch toolchain
        ;;   * we use cross-mig
        #:phases
        #~(modify-phases %standard-phases

a comment before 'build

            ;; The build has three toplevel entry points
            ;;   * buildrump.sh/src/build.sh: create a NetBSD-compatible
            ;;     toolchain and supports cross-compiling
            ;;   * buildrump.sh/src/lib/librumpuser: the librump* libraries
            ;;   * pci-userspace/src-gnu: the librumpdev_pci* libraries
            (replace 'build

and a comment in install

                    ;; Some libraries are duplicated/copied around in the
                    ;; build system, do not fail trying to install one
                    ;; a second time.
                    (if (file-exists? dest)
                        (format (current-error-port)
                                "warning: skipping: ~a\n" file)

>> +      (native-inputs
>> +       (list
>> +        autoconf
>> +        automake
>> +        libgcrypt
>> +        (if (%current-target-system)
>> +            (let* ((cross-base (resolve-interface '(gnu packages cross-base)))
>> +                   (cross-mig (module-ref cross-base 'cross-mig)))
>> +              (cross-mig (%current-target-system)))
>> +            mig)
>
> I think you could #:use-module (gnu packages cross-base) and refer to
> ‘cross-mig’ directly.

Right.  Weird, other packages do it like this and I copied without
thinking.  Possibly there was a circular dependency before?

> Also, watch out the indentation.  ;-)
>
>   (native-inputs
>    (list autoconf
>          automake
>          …))

Ah, changed.  I need to remember this, I'm a sucker for M-x sort-lines.

>> +      (license (list
>> +                asl2.0
>> +                boost1.0

> Could you add a comment above briefly stating what this list means?  (I
> suppose each license applies to a specific part of the source?)

Changed to

      (license
       ;; The NetBSD rumpkernel code is a big hodgepodge of softwares many of
       ;; which have their own different licensing terms, see also
       ;; https://salsa.debian.org/hurd-team/rumpkernel/-/blob/master/debian/copyright
       (list asl2.0
             boost1.0
             ...

> Anyhow, well done!

Yay!

(A v5 patch series with this to follow once we have figured out the
glibc/hurd patching problem.)

Greetings,

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-18 17:20     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
@ 2023-05-19  9:30       ` Janneke Nieuwenhuizen
  0 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-19  9:30 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 63527

Ludovic Courtès writes:

> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> When booting with pci-arbiter and rumpdisk and using 1024MB of memory for
>> qemu, booting hangs, or seems to hang, at the end of the rumpdisk boot
>> messages.  At least 1200MB is required, currently.
>>
>> * gnu/services/virtualization.scm (<hurd-vm-configuration>)[memory-size]: Bump
>> to 2048.
>> * gnu/system/examples/bare-hurd.tmpl: Suggest using 2048 here too.  Update
>> example `guix system image' and "qemu" command lines too.
>
> Sounds a bit fishy.  :-)
>
> Does Debian resort to a similar workaround?

Yes, Debian has the same problem, the latest debian image
(https://cdimage.debian.org/cdimage/ports/latest/hurd-i386/debian-hurd-20220824.img)
hangs in an identical way.

See https://logs.guix.gnu.org/hurd/2023-05-18.log#091300

youpi seid "rumpdisk is very eaty, we need to fix that"

Greetings,
Janneke

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*!
  2023-05-15 19:35 [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Janneke Nieuwenhuizen
                   ` (5 preceding siblings ...)
  2023-05-18  9:38 ` [bug#63527] [PATCH v4 0/8] Rumpdisk support for the Hurd, really! Janneke Nieuwenhuizen
@ 2023-05-23 15:47 ` Janneke Nieuwenhuizen
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 01/11] gnu: Add libpciaccess-0.17 Janneke Nieuwenhuizen
                     ` (12 more replies)
  6 siblings, 13 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 15:47 UTC (permalink / raw)
  To: 63527

Hi!

So, with lots of kind help from the folks at #hurd and bug-hurd, and many
thanks to Josselin Poiret for sending their amazing "Add libc specific to Hurd
and update components" patch set (https://issues.guix.gnu.org/63641, note that
these series depend on this!) we now have rumpdisk support for the Hurd.

To actually use it instead of the gnumach builtin IDE driver, use

    (kernel-arguments '("noide"))

To test this, I'm using this patch

--8<---------------cut here---------------start------------->8---
diff --git a/gnu/system/examples/bare-hurd.tmpl b/gnu/system/examples/bare-hurd.tmpl
index 463c7ee798..f3d54be79d 100644
--- a/gnu/system/examples/bare-hurd.tmpl
+++ b/gnu/system/examples/bare-hurd.tmpl
@@ -33,7 +33,7 @@
     (bootloader (bootloader-configuration
                  (bootloader grub-minimal-bootloader)
                  (targets '("/dev/sdX"))))
+    (kernel-arguments '("console=com0" "noide"))
     (file-systems (cons (file-system
                           (device (file-system-label "my-root"))
                           (mount-point "/")
--8<---------------cut here---------------end--------------->8---

build it using

--8<---------------cut here---------------start------------->8---
./pre-inst-env guix system image -t hurd-raw gnu/system/examples/bare-hurd.tmpl --keep-failed 
--8<---------------cut here---------------end--------------->8---

and run it like this

--8<---------------cut here---------------start------------->8---
guix shell qemu -- qemu-system-i386                     \
-m 4096                                                 \
--enable-kvm                                            \
--device rtl8139,netdev=net0                            \
--netdev user,id=net0,hostfwd=tcp:0.0.0.0:11022-:2222   \
--snapshot                                              \
--no-reboot                                             \
--device virtio-serial-pci                              \
--nographic                                             \
--serial mon:stdio                                      \
--hda /gnu/store/l35gz57nrkngc923f9zp9awxmq7ha1hc-disk-image
--8<---------------cut here---------------end--------------->8---

(It also still works without using "noide", we're still using that for
childhurd service where rumpdisk does not really make sense).

Enjoy!

Greetings,
Janneke

Janneke Nieuwenhuizen (11):
  gnu: Add libpciaccess-0.17.
  gnu: hurd: Update libpciaccess to 0.17.
  gnu: Add rumpkernel.
  gnu: Add hurd-shouldbeinlibc.
  gnu: parted: Support building for the Hurd.
  gnu: hurd: Add rumpkernel.
  hurd-boot: Setup pci-arbiter and rumpdisk translators.
  services: childhurd: Bump default qemu memory to 2048MB.
  system: hurd: Boot with pci.arbiter and rumpdisk.
  bootloader: grub: Use rumpdisk-style root when booting with "noide".
  gnu: gnumach: Support "noide" argument.

 doc/guix.texi                                 |  21 ++
 gnu/bootloader/grub.scm                       |  17 +-
 gnu/build/hurd-boot.scm                       |  27 +-
 gnu/local.mk                                  |   3 +
 gnu/packages/disk.scm                         |  19 +-
 gnu/packages/hurd.scm                         | 298 ++++++++++++++++--
 .../patches/gnumach-support-noide.patch       |  25 ++
 .../patches/hurd-fix-rumpdisk-build.patch     |  41 +++
 .../patches/hurd-rumpdisk-no-hd.patch         |  26 ++
 gnu/packages/xorg.scm                         |  17 +
 gnu/services/virtualization.scm               |   4 +-
 gnu/system.scm                                |  25 +-
 gnu/system/examples/bare-hurd.tmpl            |   4 +-
 13 files changed, 480 insertions(+), 47 deletions(-)
 create mode 100644 gnu/packages/patches/gnumach-support-noide.patch
 create mode 100644 gnu/packages/patches/hurd-fix-rumpdisk-build.patch
 create mode 100644 gnu/packages/patches/hurd-rumpdisk-no-hd.patch


base-commit: 88da863e0048721cef17a5de294084be1f10e7e9
-- 
2.40.1





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v5 01/11] gnu: Add libpciaccess-0.17.
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
@ 2023-05-23 15:47   ` Janneke Nieuwenhuizen
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 02/11] gnu: hurd: Update libpciaccess to 0.17 Janneke Nieuwenhuizen
                     ` (11 subsequent siblings)
  12 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 15:47 UTC (permalink / raw)
  To: 63527

* gnu/packages/xorg.scm (libpciaccess-0.17): New variable.
---
 gnu/packages/xorg.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index f3d30c0ff1..93a2cca15d 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -34,6 +34,7 @@
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 qblade <qblade@protonmail.com>
 ;;; Copyright © 2021 Lu Hui <luhux76@gmail.com>
+;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1145,6 +1146,22 @@ (define-public libpciaccess
     (description "Xorg Generic PCI access library.")
     (license license:x11)))
 
+(define-public libpciaccess-0.17
+  (package
+    (inherit libpciaccess)
+    (name "libpciaccess")
+    (version "0.17")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://xorg/individual/lib/libpciaccess-"
+             version
+             ".tar.xz"))
+       (sha256
+        (base32
+         "0wsvv5d05maqbidvnavka7n0fnql55m4jix5wwlk14blr6ikna3l"))))))
+
 (define-public libpthread-stubs
   (package
     (name "libpthread-stubs")
-- 
2.40.1





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v5 02/11] gnu: hurd: Update libpciaccess to 0.17.
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 01/11] gnu: Add libpciaccess-0.17 Janneke Nieuwenhuizen
@ 2023-05-23 15:47   ` Janneke Nieuwenhuizen
  2023-05-24  9:11     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 03/11] gnu: Add rumpkernel Janneke Nieuwenhuizen
                     ` (10 subsequent siblings)
  12 siblings, 1 reply; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 15:47 UTC (permalink / raw)
  To: 63527

As suggested by youpi on IRC

    https://logs.guix.gnu.org/hurd/2023-05-17.log#132259

libpciaccess-0.16 is too old for the Hurd and would need Hurd-specific patches
while libpciaccess-0.17 works out of the box.

* gnu/packages/hurd.scm (hurd)[inputs]: Use libpciaccess-0.17.
(netdde)[inputs]: Likewise.
---
 gnu/packages/hurd.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index a0133482b7..d8b4dcaf4f 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2018, 2020-2023 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2020, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2022, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Rene Saavedra <pacoon@protonmail.com>
 ;;;
@@ -45,7 +45,7 @@ (define-module (gnu packages hurd)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages onc-rpc)
-  #:use-module (gnu packages xorg) ; libpciaccess
+  #:use-module (gnu packages xorg) ;libpciaccess-0.17
   #:use-module (guix git-download)
   #:export (hurd-system?
             hurd-target?))
@@ -536,7 +536,7 @@ (define-public hurd
      `(("libgcrypt" ,libgcrypt)                  ;for /hurd/random
        ("libdaemon" ,libdaemon)                  ;for /bin/console --daemonize
        ("unifont" ,unifont)
-       ("libpciaccess" ,libpciaccess)
+       ("libpciaccess" ,libpciaccess-0.17)
 
        ;; For NFS support
        ("libtirpc" ,libtirpc/hurd)
@@ -634,7 +634,7 @@ (define-public netdde
                                             "/bin"))
                #t)))))
       (inputs
-       (list hurd libpciaccess zlib))
+       (list hurd libpciaccess-0.17 zlib))
       (native-inputs
        `(("coreutils" ,coreutils)
          ("gawk" ,gawk)
-- 
2.40.1





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v5 03/11] gnu: Add rumpkernel.
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 01/11] gnu: Add libpciaccess-0.17 Janneke Nieuwenhuizen
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 02/11] gnu: hurd: Update libpciaccess to 0.17 Janneke Nieuwenhuizen
@ 2023-05-23 15:47   ` Janneke Nieuwenhuizen
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 04/11] gnu: Add hurd-shouldbeinlibc Janneke Nieuwenhuizen
                     ` (9 subsequent siblings)
  12 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 15:47 UTC (permalink / raw)
  To: 63527

This uses the Debian Salsa rumpkernel package git as upstream as that is where
delopment happens.  Once things have stabalized upstream may change to the
NetBSD git from where Debian takes their snapshots.

* gnu/packages/hurd.scm (rumpkernel): New variable.
(hurd-headers)[native-inputs]: Use cross-mig directly.
(gnumach)[native-inputs]: Likewise.
(hurd)[native-inputs]: Likewise.
---
 gnu/packages/hurd.scm | 246 +++++++++++++++++++++++++++++++++++++++---
 1 file changed, 234 insertions(+), 12 deletions(-)

diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index d8b4dcaf4f..ff925eed75 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -33,6 +33,7 @@ (define-module (gnu packages hurd)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cross-base)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gnupg)
@@ -162,9 +163,7 @@ (define-public hurd-headers
        (list autoconf
              automake
              (if (%current-target-system)
-                 (let* ((cross-base (resolve-interface '(gnu packages cross-base)))
-                        (cross-mig (module-ref cross-base 'cross-mig)))
-                   (cross-mig (%current-target-system)))
+                 (cross-mig (%current-target-system))
                  mig)))
       (arguments
        `(#:phases
@@ -296,10 +295,8 @@ (define-public gnumach
      (list autoconf
            automake
            (if (%current-target-system)
-                   (let* ((cross-base (resolve-interface '(gnu packages cross-base)))
-                          (cross-mig (module-ref cross-base 'cross-mig)))
-                     (cross-mig (%current-target-system)))
-                   mig)
+               (cross-mig (%current-target-system))
+               mig)
            perl
            texinfo-4))
     (supported-systems %hurd-systems)
@@ -551,11 +548,9 @@ (define-public hurd
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("libgcrypt" ,libgcrypt)                   ;for 'libgcrypt-config'
-       ("mig" ,(if (%current-target-system)
-                   (let* ((cross-base (resolve-interface '(gnu packages cross-base)))
-                          (cross-mig (module-ref cross-base 'cross-mig)))
-                     (cross-mig (%current-target-system)))
-                   mig))
+       ("mig" , (if (%current-target-system)
+                    (cross-mig (%current-target-system))
+                    mig))
        ("pkg-config" ,pkg-config)
        ("perl" ,perl)
        ("texinfo" ,texinfo-4)
@@ -651,3 +646,230 @@ (define-public netdde
       ;; Some drivers are dually licensed with the options being GPLv2 or one
       ;; of MPL/Expat/BSD-3 (dependent on the driver).
       (license gpl2))))
+
+(define-public rumpkernel
+  (let ((commit "ec2ab9612be4dc48a316a21a0c96d3388478a064")
+        (revision "2"))
+    (package
+      (name "rumpkernel")
+      (version (git-version "0-20211031" revision commit))
+      ;; This uses the Debian Salsa rumpkernel package git as upstream as that
+      ;; is where delopment happens.  Once things have stabalized, upstream
+      ;; may change to the NetBSD git from where Debian takes their snapshots.
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://salsa.debian.org/hurd-team/rumpkernel.git")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "1ypjg3jyzhh3gnanmk6fh76dwl5ml78n311nbi0hw7f7hygzn7vk"))
+                (file-name (git-file-name name commit))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:tests? #f
+        #:modules '((srfi srfi-26)
+                    (ice-9 match)
+                    (ice-9 rdelim)
+                    (guix build utils)
+                    (guix build gnu-build-system))
+        ;; As we are using the Debian package as upstream, we follow their
+        ;; build:
+        ;;   * apply patches in debian/patches taken from the
+        ;;     debian/patches/series file
+        ;;   * for the configure, make, and install stages, follow
+        ;;     the code in debian/rules
+        ;; The Debian patchset includes a cross build feature that we
+        ;; use with two differences
+        ;;   * Debian uses a multiarch toolchain
+        ;;   * we use cross-mig
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'apply-patches
+              (lambda* (#:key target #:allow-other-keys)
+                (let* ((patch-directory "debian/patches/")
+                       (series (string-append patch-directory "series"))
+                       (text (with-input-from-file series read-string))
+                       (lines (string-split (string-trim-right text) #\newline))
+                       (patches (filter (negate (cute string-prefix? "#" <>))
+                                        lines))
+                       (patch-files (map
+                                     (cute string-append patch-directory <>)
+                                     patches)))
+                  (for-each
+                   (cute invoke "patch" "--force" "-p1" "-i" <>)
+                   patch-files)
+                  ;; Somewhere in the build.sh/make process MIG is not being
+                  ;; exported, apparently.
+                  (when target
+                    (substitute* "pci-userspace/src-gnu/Makefile.inc"
+                      (("MIG=mig")
+                       (string-append "MIG=" target "-mig")))))))
+            (add-before 'configure 'setenv
+              (lambda* (#:key build target #:allow-other-keys)
+                (define (noisy-setenv name value)
+                  (setenv name value)
+                  (format (current-error-port) "set ~a=~s\n" name value))
+                (noisy-setenv "HOST_CC" "gcc")
+                (when target
+                  (noisy-setenv "MIG" (string-append target "-mig")))
+                (let ((target (or target build)))
+                  (noisy-setenv "TARGET_AR" (string-append target "-ar"))
+                  (noisy-setenv "TARGET_CC" (string-append target "-gcc"))
+                  (noisy-setenv "TARGET_CXX" (string-append target "-g++"))
+                  (noisy-setenv "TARGET_LD" (string-append target "-ld"))
+                  (noisy-setenv "TARGET_MIG" (string-append target "-mig"))
+                  (noisy-setenv "TARGET_NM" (string-append target "-nm")))
+                (setenv "PAWD" "pwd")
+                (for-each
+                 (cute noisy-setenv <> "")
+                 '("_GCC_CRTENDS"
+                   "_GCC_CRTEND"
+                   "_GCC_CRTBEGINS"
+                   "_GCC_CRTBEGIN"
+                   "_GCC_CRTI"
+                   "_GCC_CRTN"))
+                (noisy-setenv "BSDOBJDIR=" (string-append (getcwd) "/obj"))))
+            (replace 'configure
+              (lambda args
+                (let ((configure (assoc-ref %standard-phases 'configure)))
+                  (with-directory-excursion "buildrump.sh/src/lib/librumpuser"
+                    (apply configure args)))))
+            ;; The build has three toplevel entry points
+            ;;   * buildrump.sh/src/build.sh: create a NetBSD-compatible
+            ;;     toolchain and supports cross-compiling
+            ;;   * buildrump.sh/src/lib/librumpuser: the librump* libraries
+            ;;   * pci-userspace/src-gnu: the librumpdev_pci* libraries
+            (replace 'build
+              (lambda* (#:key parallel-build? #:allow-other-keys)
+                (let* ((jobs (if parallel-build? (parallel-job-count) 1))
+                       (host-cpu (match #$(or (%current-target-system
+                                               (%current-system)))
+                                   ("i586-pc-gnu" "i386")
+                                   ("i686-linux" "i386")
+                                   ("x86_64-linux" "amd64")))
+                       (toprump (string-append
+                                 (getcwd)
+                                 "/buildrump.sh/src/sys/rump"))
+                       (rump-make (string-append
+                                   (getcwd)
+                                   "/buildrump.sh/src/obj/tooldir/bin/nbmake-"
+                                   host-cpu)))
+                  (mkdir "obj")
+                  (with-directory-excursion "buildrump.sh/src"
+                    (invoke
+                     "sh" "build.sh"
+                     "-V" "TOOLS_BUILDRUMP=yes"
+                     "-V" "MKBINUTILS=no"
+                     "-V" "MKGDB=no"
+                     "-V" "MKGROFF=no"
+                     "-V" (string-append "TOPRUMP=" toprump)
+                     "-V" "BUILDRUMP_CPPFLAGS=-Wno-error=stringop-overread"
+                     "-V" "RUMPUSER_EXTERNAL_DPLIBS=pthread"
+		     "-V" (string-append
+                           "CPPFLAGS="
+                           " -I../../obj/destdir." host-cpu "/usr/include"
+                           " -D_FILE_OFFSET_BITS=64"
+                           " -DRUMP_REGISTER_T=int"
+                           " -DRUMPUSER_CONFIG=yes"
+                           " -DNO_PCI_MSI_MSIX=yes"
+                           " -DNUSB_DMA=1")
+                     "-V" (string-append
+                           "CWARNFLAGS="
+                           " -Wno-error=maybe-uninitialized"
+                           " -Wno-error=address-of-packed-member"
+                           " -Wno-error=unused-variable"
+                           " -Wno-error=stack-protector"
+                           " -Wno-error=array-parameter"
+                           " -Wno-error=array-bounds"
+                           " -Wno-error=stringop-overflow")
+                     "-V" "LIBCRTBEGIN="
+                     "-V" "LIBCRTEND="
+                     "-V" "LIBCRT0="
+                     "-V" "LIBCRTI="
+                     "-V" "_GCC_CRTENDS="
+                     "-V" "_GCC_CRTEND="
+                     "-V" "_GCC_CRTBEGINS="
+                     "-V" "_GCC_CRTBEGIN="
+                     "-V" "_GCC_CRTI="
+                     "-V" "_GCC_CRTN="
+                     "-U"
+                     "-u"
+                     "-T" "./obj/tooldir"
+                     "-m" host-cpu
+                     "-j" (number->string jobs)
+                     "tools"
+                     "rump"))
+                  (with-directory-excursion "buildrump.sh/src/lib/librumpuser"
+                    (setenv "RUMPRUN" "true")
+                    (invoke rump-make "dependall"))
+                  (with-directory-excursion "pci-userspace/src-gnu"
+                    (invoke rump-make "dependall")))))
+            (replace 'install
+              (lambda _
+                (define (install-file file target)
+                  (let ((dest (string-append target (basename file))))
+                    (format (current-output-port) "`~a' -> `~a'~%" file dest)
+                    (mkdir-p (dirname dest))
+                    ;; Some libraries are duplicated/copied around in the
+                    ;; build system, do not fail trying to install one
+                    ;; a second time.
+                    (if (file-exists? dest)
+                        (format (current-error-port)
+                                "warning: skipping: ~a\n" file)
+                        (let ((stat (lstat file)))
+                          (case (stat:type stat)
+                            ((symlink)
+                             (let ((target (readlink file)))
+                               (symlink target dest)))
+                            (else
+                             (copy-file file dest)))))))
+                (let ((header (string-append #$output "/include/rump"))
+                      (lib (string-append #$output "/lib/")))
+                  (mkdir-p header)
+                  (copy-recursively "buildrump.sh/src/sys/rump/include/rump"
+                                    header)
+                  (mkdir-p lib)
+                  (for-each
+                   (cute install-file <> lib)
+                   (append (find-files "buildrump.sh/src" "librump.*[.](a|so.*)")
+                           (find-files "obj" "librump.*[.](a|so.*)")))))))))
+      (inputs
+       (list gnumach-headers libpciaccess-0.17))
+      (native-inputs
+       (list autoconf
+             automake
+             libgcrypt
+             (if (%current-target-system)
+                 (cross-mig (%current-target-system))
+                 mig)
+             zlib))
+      (supported-systems %hurd-systems)
+      (home-page "https://wiki.netbsd.org/rumpkernel")
+      (synopsis "NetBSD as rumpkernel for the GNU/Hurd")
+      (description
+       "This package provides NetBSD as rumpkernel for the GNU/Hurd, so that
+the Hurd may be installed on iron.  Using this rumpkernel package, the hurd
+package's rumpdisk can be built which provides the pci.arbiter and rumpdisk
+servers.")
+      (license
+       ;; The NetBSD rumpkernel code is a big hodgepodge of softwares many of
+       ;; which have their own different licensing terms, see also
+       ;; https://salsa.debian.org/hurd-team/rumpkernel/-/blob/master/debian/copyright
+       (list asl2.0
+             boost1.0
+             bsd-2
+             bsd-3
+             bsd-4
+             cddl1.0
+             expat
+             gpl1
+             gpl2+
+             gpl3+
+             isc
+             lgpl2.0+
+             public-domain
+             (@ (guix licenses) zlib)
+             (non-copyleft "file://src/lib/libc/hash/hashhl.c"
+                           "See debian/copyright in the distribution."))))))
-- 
2.40.1





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v5 04/11] gnu: Add hurd-shouldbeinlibc.
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
                     ` (2 preceding siblings ...)
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 03/11] gnu: Add rumpkernel Janneke Nieuwenhuizen
@ 2023-05-23 15:47   ` Janneke Nieuwenhuizen
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 05/11] gnu: parted: Support building for the Hurd Janneke Nieuwenhuizen
                     ` (8 subsequent siblings)
  12 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 15:47 UTC (permalink / raw)
  To: 63527

* gnu/packages/hurd.scm (hurd-shouldbeinlibc): New variable.
---
 gnu/packages/hurd.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index ff925eed75..9fbca9d5c5 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -240,6 +240,30 @@ (define-public hurd-minimal
 Library for GNU/Hurd.")
     (license gpl2+)))
 
+(define-public hurd-shouldbeinlibc
+  (package
+    (inherit hurd-headers)
+    (name "hurd-shouldbeinlibc")
+    (inputs (list glibc/hurd-headers gnumach-headers))
+    (arguments
+     (substitute-keyword-arguments (package-arguments hurd-headers)
+       ((#:make-flags flags '())
+        #~'("lib-subdirs=libshouldbeinlibc libstore"
+            "prog-subdirs="
+            "other-subdirs="
+            #$@flags))
+       ((#:phases _)
+        #~%standard-phases)
+       ((#:validate-runpath? validate-runpath? #f)
+        #f)))
+    (supported-systems %hurd-systems)
+    (home-page "https://www.gnu.org/software/hurd/hurd.html")
+    (synopsis "GNU Hurd libshouldbeinlibc library")
+    (description
+     "This package provides libshouldbeinlibc and libstore, needed to build
+parted for GNU/Hurd.")
+    (license gpl2+)))
+
 (define-public hurd-core-headers
   (package
     (name "hurd-core-headers")
-- 
2.40.1





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v5 05/11] gnu: parted: Support building for the Hurd.
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
                     ` (3 preceding siblings ...)
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 04/11] gnu: Add hurd-shouldbeinlibc Janneke Nieuwenhuizen
@ 2023-05-23 15:47   ` Janneke Nieuwenhuizen
  2023-05-24  9:13     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support " Ludovic Courtès
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 06/11] gnu: hurd: Add rumpkernel Janneke Nieuwenhuizen
                     ` (7 subsequent siblings)
  12 siblings, 1 reply; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 15:47 UTC (permalink / raw)
  To: 63527

* gnu/packages/disk.scm (parted)[inputs]: Remove lvm2, add hurd-shouldbeinlibc
when building for the Hurd.
[arguments]: Add configure-flag '--disable-device-mapper' when building for
the Hurd.
---
 gnu/packages/disk.scm | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 894a542171..760e9cd8f6 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016, 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
@@ -67,6 +67,7 @@ (define-module (gnu packages disk)
   #:use-module (gnu packages graphics)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages hurd)
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages ncurses)
@@ -249,17 +250,25 @@ (define-public parted
                 "18h51i3x5cbqhlj5rm23m9sfw63gaaby5czln5w6qpqj3ifdsf29"))))
     (build-system gnu-build-system)
     (arguments
-     (list #:phases
+     (append
+      (if (hurd-target?)
+          '(#:configure-flags '("--disable-device-mapper"))
+          '())
+      (list
+       #:phases
        #~(modify-phases %standard-phases
            (add-after 'unpack 'fix-locales-and-python
              (lambda _
                (substitute* "tests/t0251-gpt-unicode.sh"
                  (("C.UTF-8") "en_US.utf8")) ;not in Glibc locales
                (substitute* "tests/msdos-overlap"
-                 (("/usr/bin/python") (which "python"))))))))
+                 (("/usr/bin/python") (which "python")))))))))
     (inputs
-     (list lvm2 readline
-           `(,util-linux "lib")))
+     `(,@(if (hurd-target?)
+             (list hurd-shouldbeinlibc)
+             (list lvm2))
+       ,readline
+       (,util-linux "lib")))
     (native-inputs
      (list gettext-minimal
 
-- 
2.40.1





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v5 06/11] gnu: hurd: Add rumpkernel.
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
                     ` (4 preceding siblings ...)
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 05/11] gnu: parted: Support building for the Hurd Janneke Nieuwenhuizen
@ 2023-05-23 15:47   ` Janneke Nieuwenhuizen
  2023-05-23 16:01     ` Janneke Nieuwenhuizen
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 07/11] hurd-boot: Setup pci-arbiter and rumpdisk translators Janneke Nieuwenhuizen
                     ` (6 subsequent siblings)
  12 siblings, 1 reply; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 15:47 UTC (permalink / raw)
  To: 63527

* gnu/packages/patches/hurd-fix-rumpdisk-build.patch,
gnu/packages/patches/hurd-rumpdisk-no-hd.patch: New files.
* gnu/local.mk (dist_patch_DATA): Add them.
* gnu/packages/hurd.scm (hurd-headers): Use them.
(hurd)[inputs]: Add util-linux:static, parted, rumpkernel.
[arguments]: Rename `prepare-dde' phase to 'prepare-addons'.  Add "rumpdisk"
directory.  Add --enable-static-progs=... option to #:configure-flags, and
remove --without-parted.
---
 gnu/local.mk                                  |  2 +
 gnu/packages/hurd.scm                         | 17 +++++---
 .../patches/hurd-fix-rumpdisk-build.patch     | 41 +++++++++++++++++++
 .../patches/hurd-rumpdisk-no-hd.patch         | 26 ++++++++++++
 4 files changed, 81 insertions(+), 5 deletions(-)
 create mode 100644 gnu/packages/patches/hurd-fix-rumpdisk-build.patch
 create mode 100644 gnu/packages/patches/hurd-rumpdisk-no-hd.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 2a09d44506..052b76ea7e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1354,6 +1354,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/hubbub-sort-entities.patch		\
   %D%/packages/patches/hueplusplus-mbedtls.patch		\
   %D%/packages/patches/hurd-add-without-rump-configure-option.patch \
+  %D%/packages/patches/hurd-fix-rumpdisk-build.patch		\
+  %D%/packages/patches/hurd-rumpdisk-no-hd.patch		\
   %D%/packages/patches/hurd-fix-types-of-read-write-and-readables-methods-2.patch \
   %D%/packages/patches/hurd-fix-types-of-read-write-and-readables-methods.patch \
   %D%/packages/patches/hwloc-1-test-btrfs.patch			\
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 9fbca9d5c5..536df96e00 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -34,6 +34,7 @@ (define-module (gnu packages hurd)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cross-base)
+  #:use-module (gnu packages disk)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gnupg)
@@ -157,7 +158,9 @@ (define-public hurd-headers
                 (sha256
                  (base32
                   "0jm1dnqkx4kdwmby0z5w0yqp9m5qp4hbxd4jxlyhiqm8nkw9mkvv"))
-                (file-name (git-file-name name version))))
+                (file-name (git-file-name name version))
+                (patches (search-patches "hurd-fix-rumpdisk-build.patch"
+                                         "hurd-rumpdisk-no-hd.patch"))))
       (build-system gnu-build-system)
       (native-inputs
        (list autoconf
@@ -366,7 +369,7 @@ (define-public hurd
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'prepare-dde
+         (add-after 'unpack 'prepare-addons
            (lambda* (#:key native-inputs inputs #:allow-other-keys)
              ;; First we import the things we want from dde.
              (for-each make-file-writable (find-files "."))
@@ -380,7 +383,7 @@ (define-public hurd
              ;; Makefile. libdde_linux26 is built later in its own phase.
              (substitute* "Makefile"
                (("libbpf ")
-                "libbpf libmachdevdde libddekit"))))
+                "libbpf libmachdevdde libddekit rumpdisk"))))
          (add-after 'unpack 'find-tirpc
            (lambda* (#:key inputs #:allow-other-keys)
              (for-each (lambda (var)
@@ -543,10 +546,10 @@ (define-public hurd
        #:configure-flags
        ,#~(list (string-append "LDFLAGS=-Wl,-rpath="
                                #$output "/lib")
+                "--enable-static-progs=ext2fs,iso9660fs,rumpdisk,pci-arbiter,acpi"
                 "--disable-ncursesw"
                 "--without-libbz2"
                 "--without-libz"
-                "--without-parted"
                 ;; This is needed to pass the configure check for
                 ;; clnt_create
                 "ac_func_search_save_LIBS=-ltirpc"
@@ -567,7 +570,11 @@ (define-public hurd
        ("coreutils" ,coreutils)
        ("sed" ,sed)
        ("grep" ,grep)
-       ("util-linux" ,util-linux)))
+       ("util-linux" ,util-linux)
+;;       ("util-linux" ,util-linux "lib")          ;libuuid.so, for parted
+       ("util-linux" ,util-linux "static")       ;libuuid.a, for parted
+       ("parted" ,parted)                        ;for rumpdisk
+       ("rumpkernel" ,rumpkernel)))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
diff --git a/gnu/packages/patches/hurd-fix-rumpdisk-build.patch b/gnu/packages/patches/hurd-fix-rumpdisk-build.patch
new file mode 100644
index 0000000000..4ecd5ed0ee
--- /dev/null
+++ b/gnu/packages/patches/hurd-fix-rumpdisk-build.patch
@@ -0,0 +1,41 @@
+Upstream status: taken from upstream.
+
+From a2b0f721d077fdc5c9decb21b975b58fb51a3e8f Mon Sep 17 00:00:00 2001
+From: Janneke Nieuwenhuizen <janneke@gnu.org>
+Date: Mon, 22 May 2023 19:21:47 +0200
+Subject: [PATCH] rumpdisk: Do not assume FHS /usr/lib, fixes Guix cross-build.
+
+---
+ rumpdisk/Makefile | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/rumpdisk/Makefile b/rumpdisk/Makefile
+index 60a209b3..b59aaf9a 100644
+--- a/rumpdisk/Makefile
++++ b/rumpdisk/Makefile
+@@ -1,5 +1,5 @@
+ #
+-#   Copyright (C) 2019 Free Software Foundation, Inc.
++#   Copyright (C) 2019, 2023 Free Software Foundation, Inc.
+ #
+ #   This program is free software; you can redistribute it and/or
+ #   modify it under the terms of the GNU General Public License as
+@@ -15,7 +15,6 @@
+ #   along with this program; if not, write to the Free Software
+ #   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-RUMPPATH=/usr/lib
+ RUMPLIBS=rump rumpuser rumpdev rumpdev_disk rumpdev_pci rumpvfs rumpdev_ahcisata rumpdev_piixide rumpdev_ata
+ RUMPEXTRA=rumpdev_scsipi
+ 
+@@ -38,6 +37,6 @@ target = rumpdisk
+ OBJS = $(SRCS:.c=.o)
+ HURDLIBS = machdev ports trivfs shouldbeinlibc iohelp ihash fshelp
+ LDLIBS += -lpthread -lpciaccess -ldl
+-LDLIBS += -Wl,--whole-archive $(RUMPLIBS:%=$(RUMPPATH)/lib%_pic.a) -Wl,--no-whole-archive $(RUMPEXTRA:%=$(RUMPPATH)/lib%_pic.a)
++LDLIBS += -Wl,--whole-archive $(RUMPLIBS:%=-l%_pic) -Wl,--no-whole-archive $(RUMPEXTRA:%=-l%_pic)
+ 
+ include ../Makeconf
+-- 
+2.40.1
+
diff --git a/gnu/packages/patches/hurd-rumpdisk-no-hd.patch b/gnu/packages/patches/hurd-rumpdisk-no-hd.patch
new file mode 100644
index 0000000000..4e5d41917d
--- /dev/null
+++ b/gnu/packages/patches/hurd-rumpdisk-no-hd.patch
@@ -0,0 +1,26 @@
+This avoids rumpdisk crash when booting without "noide".
+
+Upstream status: Taken from Debian Salsa package git
+
+    https://salsa.debian.org/hurd-team/hurd/-/blob/f40ff84260b5a98bea949013415a1c92c127a43e/debian/patches/rumpdisk-no-hd
+
+Index: hurd-debian/rumpdisk/block-rump.c
+===================================================================
+--- hurd-debian.orig/rumpdisk/block-rump.c
++++ hurd-debian/rumpdisk/block-rump.c
+@@ -143,7 +143,6 @@ rumpdisk_device_init (void)
+     {
+       device_t device;
+ 
+-#if 0
+       if (! device_open (device_master, D_READ, "hd0", &device)
+        || ! device_open (device_master, D_READ, "hd1", &device)
+        || ! device_open (device_master, D_READ, "hd3", &device)
+@@ -154,7 +153,6 @@ rumpdisk_device_init (void)
+ 	  disabled = 1;
+ 	  return;
+ 	}
+-#endif
+ 
+       if (! device_open (device_master, D_READ, "sd0", &device)
+        || ! device_open (device_master, D_READ, "sd1", &device)
-- 
2.40.1





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v5 07/11] hurd-boot: Setup pci-arbiter and rumpdisk translators.
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
                     ` (5 preceding siblings ...)
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 06/11] gnu: hurd: Add rumpkernel Janneke Nieuwenhuizen
@ 2023-05-23 15:47   ` Janneke Nieuwenhuizen
  2023-05-23 21:00     ` Janneke Nieuwenhuizen
  2023-05-24  9:16     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 08/11] services: childhurd: Bump default qemu memory to 2048MB Janneke Nieuwenhuizen
                     ` (5 subsequent siblings)
  12 siblings, 2 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 15:47 UTC (permalink / raw)
  To: 63527

* gnu/build/hurd-boot.scm (make-hurd-device-nodes): Create "servers/bus/pci.
(set-hurd-device-translators): Create transators for pci-arbiter, rumpdisk,
and /dev/wd0..4s1..4.
---
 gnu/build/hurd-boot.scm | 27 +++++++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/gnu/build/hurd-boot.scm b/gnu/build/hurd-boot.scm
index 14bfc5e809..93324ac3f3 100644
--- a/gnu/build/hurd-boot.scm
+++ b/gnu/build/hurd-boot.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2020-2022 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -105,7 +105,7 @@ (define* (make-hurd-device-nodes #:optional (root "/"))
 
   ;; TODO: Set the 'gnu.translator' extended attribute for passive translator
   ;; settings?
-  )
+  (mkdir-p (scope "servers/bus/pci")))
 
 (define (passive-translator-xattr? file-name)
   "Return true if FILE-NAME has an extended @code{gnu.translator} attribute
@@ -183,7 +183,8 @@ (define* (set-hurd-device-translators #:optional (root "/"))
        (mkdir-p dir))))
 
   (define servers
-    '(("servers/crash-dump-core" ("/hurd/crash" "--dump-core"))
+    '(("servers/bus/pci"         ("/hurd/pci-arbiter"))
+      ("servers/crash-dump-core" ("/hurd/crash" "--dump-core"))
       ("servers/crash-kill"      ("/hurd/crash" "--kill"))
       ("servers/crash-suspend"   ("/hurd/crash" "--suspend"))
       ("servers/password"        ("/hurd/password"))
@@ -216,6 +217,8 @@ (define* (set-hurd-device-translators #:optional (root "/"))
       ;; 'fd_to_filename' in libc expects it.
       ("dev/fd"      ("/hurd/magic"    "--directory" "fd")  #o555)
 
+      ("dev/rumpdisk"("/hurd/rumpdisk")                     #o660)
+
       ;; Create a number of ttys; syslogd writes to tty12 by default.
       ;; FIXME: Creating /dev/tty12 leads the console client to switch to
       ;; tty12 when syslogd starts, which is confusing for users.  Thus, do
@@ -239,7 +242,22 @@ (define* (set-hurd-device-translators #:optional (root "/"))
                            ("/hurd/term" ,(string-append "/dev/ttyp" n)
                             "pty-slave" ,(string-append "/dev/ptyp" n))
                            #o666))))
-                    (iota 10 0))))
+                    (iota 10 0))
+      ,@(append-map (lambda (n)
+                      (let* ((n (number->string n))
+                             (drive (string-append "dev/wd" n))
+                             (disk (string-append "@/dev/disk:wd" n)))
+                        `((,drive ("/hurd/storeio" ,disk) #o600)
+                          ,@(map (lambda (p)
+                                   (let ((p (number->string p)))
+                                     `(,(string-append drive "s" p)
+                                       ("/hurd/storeio"
+                                        "--store-type=typed"
+                                        ,(string-append
+                                          "part:" p ":device:@/dev/disk:wd0"))
+                                       #o660)))
+                                 (iota 4 1)))))
+                    (iota 4 0))))
 
   (for-each scope-set-translator servers)
   (mkdir* "dev/vcs/1")
@@ -252,6 +270,7 @@ (define* (set-hurd-device-translators #:optional (root "/"))
   (false-if-EEXIST (symlink "/dev/fd/1" (scope "dev/stdout")))
   (false-if-EEXIST (symlink "/dev/fd/2" (scope "dev/stderr")))
   (false-if-EEXIST (symlink "crash-dump-core" (scope "servers/crash")))
+  (false-if-EEXIST (symlink "/dev/rumpdisk" (scope "dev/disk")))
 
   ;; Make sure /etc/mtab is a symlink to /proc/mounts.
   (false-if-exception (delete-file (scope "etc/mtab")))
-- 
2.40.1





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v5 08/11] services: childhurd: Bump default qemu memory to 2048MB.
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
                     ` (6 preceding siblings ...)
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 07/11] hurd-boot: Setup pci-arbiter and rumpdisk translators Janneke Nieuwenhuizen
@ 2023-05-23 15:47   ` Janneke Nieuwenhuizen
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 09/11] system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
                     ` (4 subsequent siblings)
  12 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 15:47 UTC (permalink / raw)
  To: 63527

When booting with pci-arbiter and rumpdisk and using 1024MB of memory for
qemu, booting hangs, or seems to hang, at the end of the rumpdisk boot
messages.  At least 1200MB is required, currently.

* gnu/services/virtualization.scm (<hurd-vm-configuration>)[memory-size]: Bump
to 2048.
* gnu/system/examples/bare-hurd.tmpl: Suggest using 2048 here too.  Update
example `guix system image' and "qemu" command lines too.
---
 gnu/services/virtualization.scm    | 4 ++--
 gnu/system/examples/bare-hurd.tmpl | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 2e311e3813..886b73f8c7 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Ryan Moe <ryan.moe@gmail.com>
 ;;; Copyright © 2018, 2020-2022 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2020,2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2021, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2021 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2022 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2022 Leo Nikkilä <hello@lnikki.la>
@@ -1100,7 +1100,7 @@ (define-record-type* <hurd-vm-configuration>
   (disk-size   hurd-vm-configuration-disk-size          ;number or 'guess
                (default 'guess))
   (memory-size hurd-vm-configuration-memory-size        ;number
-               (default 512))
+               (default 2048))
   (options     hurd-vm-configuration-options            ;list of string
                (default `("--snapshot")))
   (id          hurd-vm-configuration-id                 ;#f or integer [1..]
diff --git a/gnu/system/examples/bare-hurd.tmpl b/gnu/system/examples/bare-hurd.tmpl
index f0dd0cf742..463c7ee798 100644
--- a/gnu/system/examples/bare-hurd.tmpl
+++ b/gnu/system/examples/bare-hurd.tmpl
@@ -5,12 +5,12 @@
 
 ;; To build a disk image for a virtual machine, do
 ;;
-;;     ./pre-inst-env guix system image --target=i586-pc-gnu \
+;;     ./pre-inst-env guix system image --image-type=hurd-raw \
 ;;         gnu/system/examples/bare-hurd.tmpl
 ;;
 ;; You may run it like so
 ;;
-;;     guix environment --ad-hoc qemu -- qemu-system-i386 -enable-kvm -m 512M \
+;;     guix shell qemu -- qemu-system-i386 -enable-kvm -m 2048 \
 ;;      -device rtl8139,netdev=net0 -netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \
 ;;      -snapshot -hda <the-image>
 ;;
-- 
2.40.1





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v5 09/11] system: hurd: Boot with pci.arbiter and rumpdisk.
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
                     ` (7 preceding siblings ...)
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 08/11] services: childhurd: Bump default qemu memory to 2048MB Janneke Nieuwenhuizen
@ 2023-05-23 15:47   ` Janneke Nieuwenhuizen
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 10/11] bootloader: grub: Use rumpdisk-style root when booting with "noide" Janneke Nieuwenhuizen
                     ` (3 subsequent siblings)
  12 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 15:47 UTC (permalink / raw)
  To: 63527

* gnu/system.scm (hurd-multiboot-modules): Add commands for pci.arbiter and
rumpdisk.
---
 gnu/system.scm | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/gnu/system.scm b/gnu/system.scm
index 354f58f55b..23addf41e9 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;; Copyright © 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <jannek@gnu.org>
+;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <jannek@gnu.org>
 ;;; Copyright © 2020, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com>
@@ -1486,16 +1486,28 @@ (define (operating-system-multiboot-modules os)
 
 (define (hurd-multiboot-modules os)
   (let* ((hurd (operating-system-hurd os))
+         (pci-arbiter-command
+          (list (file-append hurd "/hurd/pci-arbiter.static")
+                "pci-arbiter"
+                "--host-priv-port='${host-port}'"
+                "--device-master-port='${device-port}'"
+                "--next-task='${disk-task}'"
+                "'$(pci-task=task-create)'"
+                "'$(task-resume)'"))
+         (rumpdisk-command
+          (list (file-append hurd "/hurd/rumpdisk.static")
+                "rumpdisk"
+                "--next-task='${fs-task}'"
+                "'$(disk-task=task-create)'"))
          (root-file-system-command
           (list (file-append hurd "/hurd/ext2fs.static")
                 "ext2fs"
                 "--multiboot-command-line='${kernel-command-line}'"
-                "--host-priv-port='${host-port}'"
-                "--device-master-port='${device-port}'"
                 "--exec-server-task='${exec-task}'"
                 "--store-type=typed"
                 "--x-xattr-translator-records"
-                "'${root}'" "'$(task-create)'" "'$(task-resume)'"))
+                "'${root}'"
+                "'$(fs-task=task-create)'"))
          (target (%current-target-system))
          (libc (if target
                    (with-parameters ((%current-target-system #f))
@@ -1512,7 +1524,10 @@ (define (hurd-multiboot-modules os)
           ;;       (file-append hurd "/hurd/exec") "'$(exec-task=task-create)'")
           (list (file-append hurd "/hurd/exec.static") "exec"
                 "'$(exec-task=task-create)'")))
-    (list root-file-system-command exec-server-command)))
+    (list pci-arbiter-command
+          rumpdisk-command
+          root-file-system-command
+          exec-server-command)))
 
 (define* (operating-system-boot-parameters os root-device
                                            #:key system-kernel-arguments?)
-- 
2.40.1





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v5 10/11] bootloader: grub: Use rumpdisk-style root when booting with "noide".
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
                     ` (8 preceding siblings ...)
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 09/11] system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
@ 2023-05-23 15:47   ` Janneke Nieuwenhuizen
  2023-05-24  9:32     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 11/11] gnu: gnumach: Support "noide" argument Janneke Nieuwenhuizen
                     ` (2 subsequent siblings)
  12 siblings, 1 reply; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 15:47 UTC (permalink / raw)
  To: 63527

* gnu/bootloader/grub.scm (make-grub-configuration): When "noide" is in
arguments, use device name "wd0" rather than "hd0".
---
 gnu/bootloader/grub.scm | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm
index ecd44e7f3c..af46d76380 100644
--- a/gnu/bootloader/grub.scm
+++ b/gnu/bootloader/grub.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2019, 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Stefan <stefan-guix@vodafonemail.de>
@@ -404,17 +404,20 @@ (define* (make-grub-configuration grub config entries
                     #$linux (string-join (list #$@arguments))
                     #$initrd)))
        (multiboot-kernel
-        (let ((kernel (menu-entry-multiboot-kernel entry))
-              (arguments (menu-entry-multiboot-arguments entry))
-              (modules (menu-entry-multiboot-modules entry))
-              (root-index 1))            ; XXX EFI will need root-index 2
+        (let* ((kernel (menu-entry-multiboot-kernel entry))
+               (arguments (menu-entry-multiboot-arguments entry))
+               (disk (if (member "noide" arguments) "w" "h"))
+               (modules (menu-entry-multiboot-modules entry))
+               (root-index 1))          ; XXX EFI will need root-index 2
           #~(format port "
 menuentry ~s {
-  multiboot ~a root=device:hd0s~a~a~a
+  multiboot ~a root=part:~a:device:~ad0~a~a
 }~%"
                     #$label
                     #$kernel
-                    #$root-index (string-join (list #$@arguments) " " 'prefix)
+                    #$root-index
+                    #$disk
+                    (string-join (list #$@arguments) " " 'prefix)
                     (string-join (map string-join '#$modules)
                                  "\n  module " 'prefix))))
        (chain-loader
-- 
2.40.1





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v5 11/11] gnu: gnumach: Support "noide" argument.
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
                     ` (9 preceding siblings ...)
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 10/11] bootloader: grub: Use rumpdisk-style root when booting with "noide" Janneke Nieuwenhuizen
@ 2023-05-23 15:47   ` Janneke Nieuwenhuizen
  2023-05-24  9:36     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
  2023-05-24  9:08   ` Ludovic Courtès
  2023-05-24  9:37   ` Ludovic Courtès
  12 siblings, 1 reply; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 15:47 UTC (permalink / raw)
  To: 63527

* gnu/packages/patches/gnumach-support-noide.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/hurd.scm (gnumach-headers): Use it.
* doc/guix.texi (Bootloader Configuration): Document it.
---
 doc/guix.texi                                 | 21 ++++++++++++++++
 gnu/local.mk                                  |  1 +
 gnu/packages/hurd.scm                         |  3 ++-
 .../patches/gnumach-support-noide.patch       | 25 +++++++++++++++++++
 4 files changed, 49 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/gnumach-support-noide.patch

diff --git a/doc/guix.texi b/doc/guix.texi
index f4cca66d76..11ce9340ae 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -39779,6 +39779,27 @@ Bootloader Configuration
 @item @code{multiboot-arguments} (default: @code{()})
 The list of extra command-line arguments for the multiboot-kernel.
 
+For example, when running in QEMU it can be useful to use a text-based
+console (use options @option{--nographic} @option{--serial mon:stdio}):
+
+@lisp
+'("console=com0"")
+@end lisp
+
+To use the new (experimental) rumpdisk (See
+@url{https://darnassus.sceen.net/~hurd-web/rump_kernel/, GNU Hurd rump
+kernel}) instead of the legacy gnumach buitin IDE support:
+
+@lisp
+'("noide")
+@end lisp
+
+Of course, these options can be combined:
+
+@lisp
+'("console=com0" "noide")
+@end lisp
+
 @item @code{multiboot-modules} (default: @code{()})
 The list of commands for loading Multiboot modules.  For example:
 
diff --git a/gnu/local.mk b/gnu/local.mk
index 052b76ea7e..e633afa4b4 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1277,6 +1277,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gnome-session-support-elogind.patch	\
   %D%/packages/patches/gnome-tweaks-search-paths.patch		\
   %D%/packages/patches/gnumach-add-missing-const_mach_port_name_array_t-type.patch \
+  %D%/packages/patches/gnumach-support-noide.patch		\
   %D%/packages/patches/gnupg-default-pinentry.patch		\
   %D%/packages/patches/gnupg-1-build-with-gcc10.patch		\
   %D%/packages/patches/gnutls-skip-trust-store-test.patch	\
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 536df96e00..c44c51818e 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -80,7 +80,8 @@ (define-public gnumach-headers
        (file-name (git-file-name "gnumach" version))
        (sha256
         (base32
-         "0f49zqxf64ds75rmskizpybl2mw7sxs05k59gjp3pgspvr87w7gs"))))
+         "0f49zqxf64ds75rmskizpybl2mw7sxs05k59gjp3pgspvr87w7gs"))
+       (patches (list (search-patch "gnumach-support-noide.patch")))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/patches/gnumach-support-noide.patch b/gnu/packages/patches/gnumach-support-noide.patch
new file mode 100644
index 0000000000..723d4bcac4
--- /dev/null
+++ b/gnu/packages/patches/gnumach-support-noide.patch
@@ -0,0 +1,25 @@
+Upstream status: Taken from Debian/upsream.
+
+    https://salsa.debian.org/hurd-team/gnumach/-/blob/master/debian/patches/90_noide.patch
+
+This supports using `noide' on the gnumach command line, disabling
+gnumach IDE support and thus forcing use of rumdisk.
+
+---
+ linux/dev/glue/block.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/linux/dev/glue/block.c
++++ b/linux/dev/glue/block.c
+@@ -207,7 +207,10 @@ int
+ blk_dev_init ()
+ {
+ #ifdef CONFIG_BLK_DEV_IDE
+-  ide_init ();
++  extern char *kernel_cmdline;
++  if (strncmp(kernel_cmdline, "noide", 5) &&
++      !strstr(kernel_cmdline, " noide"))
++    ide_init ();
+ #endif
+ #ifdef CONFIG_BLK_DEV_FD
+   floppy_init ();
-- 
2.40.1





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v5 06/11] gnu: hurd: Add rumpkernel.
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 06/11] gnu: hurd: Add rumpkernel Janneke Nieuwenhuizen
@ 2023-05-23 16:01     ` Janneke Nieuwenhuizen
       [not found]       ` <cover.1684858715.git.janneke@gnu.org>
  0 siblings, 1 reply; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 16:01 UTC (permalink / raw)
  To: 63527

Janneke Nieuwenhuizen writes:

[..]

> * gnu/packages/hurd.scm (hurd-headers): Use them.
> (hurd)[inputs]: Add util-linux:static, parted, rumpkernel.

[..]

> diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
> index 9fbca9d5c5..536df96e00 100644

> @@ -567,7 +570,11 @@ (define-public hurd
>         ("coreutils" ,coreutils)
>         ("sed" ,sed)
>         ("grep" ,grep)
> -       ("util-linux" ,util-linux)))
> +       ("util-linux" ,util-linux)
> +;;       ("util-linux" ,util-linux "lib")          ;libuuid.so, for parted
> +       ("util-linux" ,util-linux "static")       ;libuuid.a, for parted
> +       ("parted" ,parted)                        ;for rumpdisk
> +       ("rumpkernel" ,rumpkernel)))
>      (native-inputs
>       `(("autoconf" ,autoconf)
>         ("automake" ,automake)

Oops, will remove the commented code, and also check if we can remove

    ("util-linux" ,util-linux)

altogether.

Janneke

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
..




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v6 06/11] gnu: hurd: Add rumpkernel.
       [not found]       ` <cover.1684858715.git.janneke@gnu.org>
@ 2023-05-23 16:20         ` Janneke Nieuwenhuizen
  0 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 16:20 UTC (permalink / raw)
  To: 63527

* gnu/packages/patches/hurd-fix-rumpdisk-build.patch,
gnu/packages/patches/hurd-rumpdisk-no-hd.patch: New files.
* gnu/local.mk (dist_patch_DATA): Add them.
* gnu/packages/hurd.scm (hurd-headers): Use them.
(hurd)[inputs]: Replace util-linux with util-linux:static, add parted,
rumpkernel.
[arguments]: Rename `prepare-dde' phase to 'prepare-addons'.  Add "rumpdisk"
directory.  Add --enable-static-progs=... option to #:configure-flags, and
remove --without-parted.
---
 gnu/local.mk                                  |  2 +
 gnu/packages/hurd.scm                         | 15 ++++---
 .../patches/hurd-fix-rumpdisk-build.patch     | 41 +++++++++++++++++++
 .../patches/hurd-rumpdisk-no-hd.patch         | 26 ++++++++++++
 4 files changed, 79 insertions(+), 5 deletions(-)
 create mode 100644 gnu/packages/patches/hurd-fix-rumpdisk-build.patch
 create mode 100644 gnu/packages/patches/hurd-rumpdisk-no-hd.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 2a09d44506..052b76ea7e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1354,6 +1354,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/hubbub-sort-entities.patch		\
   %D%/packages/patches/hueplusplus-mbedtls.patch		\
   %D%/packages/patches/hurd-add-without-rump-configure-option.patch \
+  %D%/packages/patches/hurd-fix-rumpdisk-build.patch		\
+  %D%/packages/patches/hurd-rumpdisk-no-hd.patch		\
   %D%/packages/patches/hurd-fix-types-of-read-write-and-readables-methods-2.patch \
   %D%/packages/patches/hurd-fix-types-of-read-write-and-readables-methods.patch \
   %D%/packages/patches/hwloc-1-test-btrfs.patch			\
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 9fbca9d5c5..2687c0229c 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -34,6 +34,7 @@ (define-module (gnu packages hurd)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cross-base)
+  #:use-module (gnu packages disk)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gnupg)
@@ -157,7 +158,9 @@ (define-public hurd-headers
                 (sha256
                  (base32
                   "0jm1dnqkx4kdwmby0z5w0yqp9m5qp4hbxd4jxlyhiqm8nkw9mkvv"))
-                (file-name (git-file-name name version))))
+                (file-name (git-file-name name version))
+                (patches (search-patches "hurd-fix-rumpdisk-build.patch"
+                                         "hurd-rumpdisk-no-hd.patch"))))
       (build-system gnu-build-system)
       (native-inputs
        (list autoconf
@@ -366,7 +369,7 @@ (define-public hurd
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'prepare-dde
+         (add-after 'unpack 'prepare-addons
            (lambda* (#:key native-inputs inputs #:allow-other-keys)
              ;; First we import the things we want from dde.
              (for-each make-file-writable (find-files "."))
@@ -380,7 +383,7 @@ (define-public hurd
              ;; Makefile. libdde_linux26 is built later in its own phase.
              (substitute* "Makefile"
                (("libbpf ")
-                "libbpf libmachdevdde libddekit"))))
+                "libbpf libmachdevdde libddekit rumpdisk"))))
          (add-after 'unpack 'find-tirpc
            (lambda* (#:key inputs #:allow-other-keys)
              (for-each (lambda (var)
@@ -543,10 +546,10 @@ (define-public hurd
        #:configure-flags
        ,#~(list (string-append "LDFLAGS=-Wl,-rpath="
                                #$output "/lib")
+                "--enable-static-progs=ext2fs,iso9660fs,rumpdisk,pci-arbiter,acpi"
                 "--disable-ncursesw"
                 "--without-libbz2"
                 "--without-libz"
-                "--without-parted"
                 ;; This is needed to pass the configure check for
                 ;; clnt_create
                 "ac_func_search_save_LIBS=-ltirpc"
@@ -567,7 +570,9 @@ (define-public hurd
        ("coreutils" ,coreutils)
        ("sed" ,sed)
        ("grep" ,grep)
-       ("util-linux" ,util-linux)))
+       ("util-linux" ,util-linux "static")       ;libuuid.a, for parted
+       ("parted" ,parted)                        ;for rumpdisk
+       ("rumpkernel" ,rumpkernel)))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
diff --git a/gnu/packages/patches/hurd-fix-rumpdisk-build.patch b/gnu/packages/patches/hurd-fix-rumpdisk-build.patch
new file mode 100644
index 0000000000..4ecd5ed0ee
--- /dev/null
+++ b/gnu/packages/patches/hurd-fix-rumpdisk-build.patch
@@ -0,0 +1,41 @@
+Upstream status: taken from upstream.
+
+From a2b0f721d077fdc5c9decb21b975b58fb51a3e8f Mon Sep 17 00:00:00 2001
+From: Janneke Nieuwenhuizen <janneke@gnu.org>
+Date: Mon, 22 May 2023 19:21:47 +0200
+Subject: [PATCH] rumpdisk: Do not assume FHS /usr/lib, fixes Guix cross-build.
+
+---
+ rumpdisk/Makefile | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/rumpdisk/Makefile b/rumpdisk/Makefile
+index 60a209b3..b59aaf9a 100644
+--- a/rumpdisk/Makefile
++++ b/rumpdisk/Makefile
+@@ -1,5 +1,5 @@
+ #
+-#   Copyright (C) 2019 Free Software Foundation, Inc.
++#   Copyright (C) 2019, 2023 Free Software Foundation, Inc.
+ #
+ #   This program is free software; you can redistribute it and/or
+ #   modify it under the terms of the GNU General Public License as
+@@ -15,7 +15,6 @@
+ #   along with this program; if not, write to the Free Software
+ #   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-RUMPPATH=/usr/lib
+ RUMPLIBS=rump rumpuser rumpdev rumpdev_disk rumpdev_pci rumpvfs rumpdev_ahcisata rumpdev_piixide rumpdev_ata
+ RUMPEXTRA=rumpdev_scsipi
+ 
+@@ -38,6 +37,6 @@ target = rumpdisk
+ OBJS = $(SRCS:.c=.o)
+ HURDLIBS = machdev ports trivfs shouldbeinlibc iohelp ihash fshelp
+ LDLIBS += -lpthread -lpciaccess -ldl
+-LDLIBS += -Wl,--whole-archive $(RUMPLIBS:%=$(RUMPPATH)/lib%_pic.a) -Wl,--no-whole-archive $(RUMPEXTRA:%=$(RUMPPATH)/lib%_pic.a)
++LDLIBS += -Wl,--whole-archive $(RUMPLIBS:%=-l%_pic) -Wl,--no-whole-archive $(RUMPEXTRA:%=-l%_pic)
+ 
+ include ../Makeconf
+-- 
+2.40.1
+
diff --git a/gnu/packages/patches/hurd-rumpdisk-no-hd.patch b/gnu/packages/patches/hurd-rumpdisk-no-hd.patch
new file mode 100644
index 0000000000..4e5d41917d
--- /dev/null
+++ b/gnu/packages/patches/hurd-rumpdisk-no-hd.patch
@@ -0,0 +1,26 @@
+This avoids rumpdisk crash when booting without "noide".
+
+Upstream status: Taken from Debian Salsa package git
+
+    https://salsa.debian.org/hurd-team/hurd/-/blob/f40ff84260b5a98bea949013415a1c92c127a43e/debian/patches/rumpdisk-no-hd
+
+Index: hurd-debian/rumpdisk/block-rump.c
+===================================================================
+--- hurd-debian.orig/rumpdisk/block-rump.c
++++ hurd-debian/rumpdisk/block-rump.c
+@@ -143,7 +143,6 @@ rumpdisk_device_init (void)
+     {
+       device_t device;
+ 
+-#if 0
+       if (! device_open (device_master, D_READ, "hd0", &device)
+        || ! device_open (device_master, D_READ, "hd1", &device)
+        || ! device_open (device_master, D_READ, "hd3", &device)
+@@ -154,7 +153,6 @@ rumpdisk_device_init (void)
+ 	  disabled = 1;
+ 	  return;
+ 	}
+-#endif
+ 
+       if (! device_open (device_master, D_READ, "sd0", &device)
+        || ! device_open (device_master, D_READ, "sd1", &device)
-- 
2.40.1





^ permalink raw reply related	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH v5 07/11] hurd-boot: Setup pci-arbiter and rumpdisk translators.
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 07/11] hurd-boot: Setup pci-arbiter and rumpdisk translators Janneke Nieuwenhuizen
@ 2023-05-23 21:00     ` Janneke Nieuwenhuizen
  2023-05-24  9:16     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
  1 sibling, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-23 21:00 UTC (permalink / raw)
  To: 63527

Janneke Nieuwenhuizen writes:

> * gnu/build/hurd-boot.scm (make-hurd-device-nodes): Create "servers/bus/pci.
> (set-hurd-device-translators): Create transators for pci-arbiter, rumpdisk,
> and /dev/wd0..4s1..4.

Of course, that's rather /dev/wd0..3s1..4.

Changed commit message.

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
                     ` (10 preceding siblings ...)
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 11/11] gnu: gnumach: Support "noide" argument Janneke Nieuwenhuizen
@ 2023-05-24  9:08   ` Ludovic Courtès
  2023-05-24  9:15     ` Janneke Nieuwenhuizen
  2023-05-24  9:37   ` Ludovic Courtès
  12 siblings, 1 reply; 67+ messages in thread
From: Ludovic Courtès @ 2023-05-24  9:08 UTC (permalink / raw)
  To: Janneke Nieuwenhuizen; +Cc: 63527

Hi,

Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

> So, with lots of kind help from the folks at #hurd and bug-hurd, and many
> thanks to Josselin Poiret for sending their amazing "Add libc specific to Hurd
> and update components" patch set (https://issues.guix.gnu.org/63641, note that
> these series depend on this!) we now have rumpdisk support for the Hurd.

Yay!! 🎉

> To actually use it instead of the gnumach builtin IDE driver, use
>
>     (kernel-arguments '("noide"))

Should we build Mach without this driver, or otherwise make “noide” the
default?  (We can answer that later, no rush.)

> guix shell qemu -- qemu-system-i386                     \
> -m 4096                                                 \
> --enable-kvm                                            \
> --device rtl8139,netdev=net0                            \

Once we have netdde, we can probably drop that line and use the default
NIC (e1000, IIRC).

Is “-m 4096” still needed?  You mentioned this as a workaround
initially, IIRC?

Ludo’.




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 02/11] gnu: hurd: Update libpciaccess to 0.17 Janneke Nieuwenhuizen
@ 2023-05-24  9:11     ` Ludovic Courtès
  2023-05-24  9:28       ` Janneke Nieuwenhuizen
  0 siblings, 1 reply; 67+ messages in thread
From: Ludovic Courtès @ 2023-05-24  9:11 UTC (permalink / raw)
  To: Janneke Nieuwenhuizen; +Cc: 63527

Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

> As suggested by youpi on IRC
>
>     https://logs.guix.gnu.org/hurd/2023-05-17.log#132259
>
> libpciaccess-0.16 is too old for the Hurd and would need Hurd-specific patches
> while libpciaccess-0.17 works out of the box.
>
> * gnu/packages/hurd.scm (hurd)[inputs]: Use libpciaccess-0.17.
> (netdde)[inputs]: Likewise.

[…]

> +       ("libpciaccess" ,libpciaccess-0.17)

Maybe add “;need libpciaccess > 0.16” to convey that we should be able
to safely upgrade next time.

Ludo’.




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 05/11] gnu: parted: Support building for the Hurd Janneke Nieuwenhuizen
@ 2023-05-24  9:13     ` Ludovic Courtès
  2023-05-24  9:24       ` Janneke Nieuwenhuizen
  0 siblings, 1 reply; 67+ messages in thread
From: Ludovic Courtès @ 2023-05-24  9:13 UTC (permalink / raw)
  To: Janneke Nieuwenhuizen; +Cc: 63527

Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

> * gnu/packages/disk.scm (parted)[inputs]: Remove lvm2, add hurd-shouldbeinlibc
> when building for the Hurd.
> [arguments]: Add configure-flag '--disable-device-mapper' when building for
> the Hurd.

[...]

>      (arguments
> -     (list #:phases
> +     (append
> +      (if (hurd-target?)
> +          '(#:configure-flags '("--disable-device-mapper"))
> +          '())
> +      (list
> +       #:phases

Slightly more visually appealing:

  (list #:configure-flags (if (hurd-target?)
                              #~'("--disable-device-mapper")
                              #~'())
        #:phases …)

:-)

Ludo’.




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-24  9:08   ` Ludovic Courtès
@ 2023-05-24  9:15     ` Janneke Nieuwenhuizen
  0 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-24  9:15 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 63527

Ludovic Courtès writes:

Hi Ludo!

> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> So, with lots of kind help from the folks at #hurd and bug-hurd, and many
>> thanks to Josselin Poiret for sending their amazing "Add libc specific to Hurd
>> and update components" patch set (https://issues.guix.gnu.org/63641, note that
>> these series depend on this!) we now have rumpdisk support for the Hurd.
>
> Yay!! 🎉

Yes \o/

>> To actually use it instead of the gnumach builtin IDE driver, use
>>
>>     (kernel-arguments '("noide"))
>
> Should we build Mach without this driver, or otherwise make “noide” the
> default?  (We can answer that later, no rush.)

Possibly, I would suggest for now to follow upstream, IIUC, rumpdisk is
still somewhat experimental (and slooowww).

I expect upstream/bothstream to drop the "noide" patch at some point,
and possibly eradicate the IDE driver from gnumach altogether?

>> guix shell qemu -- qemu-system-i386                     \
>> -m 4096                                                 \
>> --enable-kvm                                            \
>> --device rtl8139,netdev=net0                            \
>
> Once we have netdde, we can probably drop that line and use the default
> NIC (e1000, IIRC).
>
> Is “-m 4096” still needed?  You mentioned this as a workaround
> initially, IIRC?

-m 2048 should be enoug, it seems boot with -m 1200; but yea, we do _do_
 need more than 1024 (or 512 even)...

Greetings,
Janneke

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 07/11] hurd-boot: Setup pci-arbiter and rumpdisk translators Janneke Nieuwenhuizen
  2023-05-23 21:00     ` Janneke Nieuwenhuizen
@ 2023-05-24  9:16     ` Ludovic Courtès
  2023-05-24  9:30       ` Janneke Nieuwenhuizen
  1 sibling, 1 reply; 67+ messages in thread
From: Ludovic Courtès @ 2023-05-24  9:16 UTC (permalink / raw)
  To: Janneke Nieuwenhuizen; +Cc: 63527

Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

> * gnu/build/hurd-boot.scm (make-hurd-device-nodes): Create "servers/bus/pci.
> (set-hurd-device-translators): Create transators for pci-arbiter, rumpdisk,
> and /dev/wd0..4s1..4.

[...]

> +      ,@(append-map (lambda (n)
> +                      (let* ((n (number->string n))
> +                             (drive (string-append "dev/wd" n))
> +                             (disk (string-append "@/dev/disk:wd" n)))
> +                        `((,drive ("/hurd/storeio" ,disk) #o600)
> +                          ,@(map (lambda (p)
> +                                   (let ((p (number->string p)))
> +                                     `(,(string-append drive "s" p)
> +                                       ("/hurd/storeio"
> +                                        "--store-type=typed"
> +                                        ,(string-append
> +                                          "part:" p ":device:@/dev/disk:wd0"))

Shouldn’t “/dev/disk:wd0” be “,disk” instead?




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-24  9:13     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support " Ludovic Courtès
@ 2023-05-24  9:24       ` Janneke Nieuwenhuizen
  0 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-24  9:24 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 63527

Ludovic Courtès writes:

> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
[..]

> Slightly more visually appealing:
>
>   (list #:configure-flags (if (hurd-target?)
>                               #~'("--disable-device-mapper")
>                               #~'())
>         #:phases …)
>
> :-)

Nice   I couldn't figure this one out, thanks!

Greetings,
Janneke

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-24  9:11     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
@ 2023-05-24  9:28       ` Janneke Nieuwenhuizen
  0 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-24  9:28 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 63527

Ludovic Courtès writes:

> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> As suggested by youpi on IRC
>>
>>     https://logs.guix.gnu.org/hurd/2023-05-17.log#132259
>>
>> libpciaccess-0.16 is too old for the Hurd and would need Hurd-specific patches
>> while libpciaccess-0.17 works out of the box.
>>
>> * gnu/packages/hurd.scm (hurd)[inputs]: Use libpciaccess-0.17.
>> (netdde)[inputs]: Likewise.
>
> […]
>
>> +       ("libpciaccess" ,libpciaccess-0.17)
>
> Maybe add “;need libpciaccess > 0.16” to convey that we should be able
> to safely upgrade next time.

Nice, yes that's helpful.  Done.

Greetings,
Janneke

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-24  9:16     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
@ 2023-05-24  9:30       ` Janneke Nieuwenhuizen
  0 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-24  9:30 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 63527

Ludovic Courtès writes:

> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> * gnu/build/hurd-boot.scm (make-hurd-device-nodes): Create "servers/bus/pci.
>> (set-hurd-device-translators): Create transators for pci-arbiter, rumpdisk,
>> and /dev/wd0..4s1..4.
>
> [...]
>
>> +      ,@(append-map (lambda (n)
>> +                      (let* ((n (number->string n))
>> +                             (drive (string-append "dev/wd" n))
>> +                             (disk (string-append "@/dev/disk:wd" n)))
>> +                        `((,drive ("/hurd/storeio" ,disk) #o600)
>> +                          ,@(map (lambda (p)
>> +                                   (let ((p (number->string p)))
>> +                                     `(,(string-append drive "s" p)
>> +                                       ("/hurd/storeio"
>> +                                        "--store-type=typed"
>> +                                        ,(string-append
>> +                                          "part:" p ":device:@/dev/disk:wd0"))
>
> Shouldn’t “/dev/disk:wd0” be “,disk” instead?

Oops, yeah sure!  This could have been quite a search bug search one
day...

Changed to

      ,@(append-map (lambda (n)
                      (let* ((n (number->string n))
                             (drive (string-append "dev/wd" n))
                             (disk (string-append "@/dev/disk:wd" n)))
                        `((,drive ("/hurd/storeio" ,disk) #o600)
                          ,@(map (lambda (p)
                                   (let ((p (number->string p)))
                                     `(,(string-append drive "s" p)
                                       ("/hurd/storeio"
                                        "--store-type=typed"
                                        ,(string-append
                                          "part:" p ":device:" disk))
                                       #o660)))
                                 (iota 4 1)))))
                    (iota 4 0))

Greetings,
Janneke

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 10/11] bootloader: grub: Use rumpdisk-style root when booting with "noide" Janneke Nieuwenhuizen
@ 2023-05-24  9:32     ` Ludovic Courtès
  2023-05-24  9:37       ` Janneke Nieuwenhuizen
  0 siblings, 1 reply; 67+ messages in thread
From: Ludovic Courtès @ 2023-05-24  9:32 UTC (permalink / raw)
  To: Janneke Nieuwenhuizen; +Cc: 63527

Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

> * gnu/bootloader/grub.scm (make-grub-configuration): When "noide" is in
> arguments, use device name "wd0" rather than "hd0".

[...]

> +        (let* ((kernel (menu-entry-multiboot-kernel entry))
> +               (arguments (menu-entry-multiboot-arguments entry))
> +               (disk (if (member "noide" arguments) "w" "h"))

Could you add a comment like:

  ;; Choose between device names as understood by Mach's built-in IDE
  ;; driver and those understood by rumpdisk (in the "noide" case).

(It’s a bit of an abstraction leak, but hey, we’ll worry about it when
we have another multiboot-compliant kernel.)

Ludo’.




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-23 15:47   ` [bug#63527] [PATCH v5 11/11] gnu: gnumach: Support "noide" argument Janneke Nieuwenhuizen
@ 2023-05-24  9:36     ` Ludovic Courtès
  2023-05-24  9:40       ` Janneke Nieuwenhuizen
  0 siblings, 1 reply; 67+ messages in thread
From: Ludovic Courtès @ 2023-05-24  9:36 UTC (permalink / raw)
  To: Janneke Nieuwenhuizen; +Cc: 63527

Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

> * gnu/packages/patches/gnumach-support-noide.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Add it.
> * gnu/packages/hurd.scm (gnumach-headers): Use it.
> * doc/guix.texi (Bootloader Configuration): Document it.

[...]

> +@lisp
> +'("console=com0"")
                  ^
Extra quote.

> +To use the new (experimental) rumpdisk (See
> +@url{https://darnassus.sceen.net/~hurd-web/rump_kernel/, GNU Hurd rump
> +kernel}) instead of the legacy gnumach buitin IDE support:

Nitpick:

  To use the new and still experimental
  @uref{https://darnassus.sceen.net/~hurd-web/rump_kernel/, rumpdisk
  user-level disk driver} instead of GNU@tie{}Mach's in-kernel IDE
  driver, set @code{kernel-arguments} to:

Ludo’.




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-24  9:32     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
@ 2023-05-24  9:37       ` Janneke Nieuwenhuizen
  0 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-24  9:37 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 63527

Ludovic Courtès writes:

> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> * gnu/bootloader/grub.scm (make-grub-configuration): When "noide" is in
>> arguments, use device name "wd0" rather than "hd0".
>
> [...]
>
>> +        (let* ((kernel (menu-entry-multiboot-kernel entry))
>> +               (arguments (menu-entry-multiboot-arguments entry))
>> +               (disk (if (member "noide" arguments) "w" "h"))
>
> Could you add a comment like:
>
>   ;; Choose between device names as understood by Mach's built-in IDE
>   ;; driver and those understood by rumpdisk (in the "noide" case).

Added as

               ;; Choose between device names as understood by Mach's built-in
               ;; IDE driver ("hdX") and those understood by rumpdisk ("wdX"
               ;; in the "noide" case).
               (disk (if (member "noide" arguments) "w" "h"))

> (It’s a bit of an abstraction leak, but hey, we’ll worry about it when
> we have another multiboot-compliant kernel.)

(Yeah, ok!)

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
                     ` (11 preceding siblings ...)
  2023-05-24  9:08   ` Ludovic Courtès
@ 2023-05-24  9:37   ` Ludovic Courtès
  2023-05-24  9:46     ` Janneke Nieuwenhuizen
  12 siblings, 1 reply; 67+ messages in thread
From: Ludovic Courtès @ 2023-05-24  9:37 UTC (permalink / raw)
  To: Janneke Nieuwenhuizen; +Cc: 63527

I made cosmetic suggestions (as I usually do :-)) but the whole patch
series looks great to me, thank you!

Ludo’.




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-24  9:36     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
@ 2023-05-24  9:40       ` Janneke Nieuwenhuizen
  0 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-24  9:40 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 63527

Ludovic Courtès writes:

> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> * gnu/packages/patches/gnumach-support-noide.patch: New file.
>> * gnu/local.mk (dist_patch_DATA): Add it.
>> * gnu/packages/hurd.scm (gnumach-headers): Use it.
>> * doc/guix.texi (Bootloader Configuration): Document it.
>
> [...]
>
>> +@lisp
>> +'("console=com0"")
>                   ^
> Extra quote.

Oops.

>> +To use the new (experimental) rumpdisk (See
>> +@url{https://darnassus.sceen.net/~hurd-web/rump_kernel/, GNU Hurd rump
>> +kernel}) instead of the legacy gnumach buitin IDE support:
>
> Nitpick:
>
>   To use the new and still experimental
>   @uref{https://darnassus.sceen.net/~hurd-web/rump_kernel/, rumpdisk
>   user-level disk driver} instead of GNU@tie{}Mach's in-kernel IDE
>   driver, set @code{kernel-arguments} to:

I like it!  Thanks.

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-24  9:37   ` Ludovic Courtès
@ 2023-05-24  9:46     ` Janneke Nieuwenhuizen
  2023-07-13 17:13       ` Josselin Poiret via Guix-patches via
  0 siblings, 1 reply; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-05-24  9:46 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 63527

Ludovic Courtès writes:

> I made cosmetic suggestions (as I usually do :-))

Yes, and spotted typos/buglets), so thank you for all that!

> but the whole patch
> series looks great to me, thank you!

\o/

So, good to go after https://issues.guix.gnu.org/63641 merges!

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-05-24  9:46     ` Janneke Nieuwenhuizen
@ 2023-07-13 17:13       ` Josselin Poiret via Guix-patches via
  2023-07-13 17:41         ` Janneke Nieuwenhuizen
  0 siblings, 1 reply; 67+ messages in thread
From: Josselin Poiret via Guix-patches via @ 2023-07-13 17:13 UTC (permalink / raw)
  To: Janneke Nieuwenhuizen, Ludovic Courtès; +Cc: 63527

[-- Attachment #1: Type: text/plain, Size: 327 bytes --]

Hi Janneke,

Janneke Nieuwenhuizen <janneke@gnu.org> writes:

> So, good to go after https://issues.guix.gnu.org/63641 merges!

Finally got around to review and merge this + netdde as
b4fe82bd8af735000d0f2165a23cfb695c181f6f.  Sorry for the delay, and
thanks for this amazing packaging!

Best,
-- 
Josselin Poiret

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 682 bytes --]

^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-07-13 17:13       ` Josselin Poiret via Guix-patches via
@ 2023-07-13 17:41         ` Janneke Nieuwenhuizen
  2023-07-14 13:37           ` Ludovic Courtès
  0 siblings, 1 reply; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-07-13 17:41 UTC (permalink / raw)
  To: Josselin Poiret; +Cc: 63527, Ludovic Courtès

Josselin Poiret writes:

Hi hurd-team ;)

> Janneke Nieuwenhuizen <janneke@gnu.org> writes:
>
>> So, good to go after https://issues.guix.gnu.org/63641 merges!
>
> Finally got around to review and merge this + netdde as
> b4fe82bd8af735000d0f2165a23cfb695c181f6f.  Sorry for the delay, and
> thanks for this amazing packaging!

Thanks for your extensive review with patches!

Does anything have to happen for ci to pick this up?  It seems
awfully quiet here

    https://ci.guix.gnu.org/search?query=system%3Ai586-gnu

It would be nice to have hurd-team rebased, and added to ci too, but
we'll probably want to wait until i568-gnu on master is built.

Greetings,
Janneke

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-07-13 17:41         ` Janneke Nieuwenhuizen
@ 2023-07-14 13:37           ` Ludovic Courtès
  2023-07-14 18:59             ` Josselin Poiret via Guix-patches via
  0 siblings, 1 reply; 67+ messages in thread
From: Ludovic Courtès @ 2023-07-14 13:37 UTC (permalink / raw)
  To: Janneke Nieuwenhuizen; +Cc: 63527, Josselin Poiret

Hello fantastic hackers!  :-)

Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

>> Janneke Nieuwenhuizen <janneke@gnu.org> writes:
>>
>>> So, good to go after https://issues.guix.gnu.org/63641 merges!
>>
>> Finally got around to review and merge this + netdde as
>> b4fe82bd8af735000d0f2165a23cfb695c181f6f.  Sorry for the delay, and
>> thanks for this amazing packaging!
>
> Thanks for your extensive review with patches!

Yeah, thanks to the two of you!!

> Does anything have to happen for ci to pick this up?  It seems
> awfully quiet here
>
>     https://ci.guix.gnu.org/search?query=system%3Ai586-gnu

It was apparently picked up:

  https://ci.guix.gnu.org/eval/595625

However, there seem to be regressions when cross-compiling to
i586-pc-gnu, such as <https://ci.guix.gnu.org/build/1595110/details>:

--8<---------------cut here---------------start------------->8---
gcc dlopenold.c -c -std=gnu11 -fgnu89-inline  -g -O2 -Wall -Wwrite-strings -Wundef -Werror -fmerge-all-constants -frounding-math -fno-stack-protector -fno-common -Wstrict-prototypes -Wold-style-definition -fmath-errno    -fPIC   -ftls-model=initial-exec      -I../include -I/tmp/guix-build-glibc-2.35.drv-0/build/dlfcn  -I/tmp/guix-build-glibc-2.35.drv-0/build  -I../sysdeps/unix/sysv/linux/x86_64/64  -I../sysdeps/unix/sysv/linux/x86_64  -I../sysdeps/unix/sysv/linux/x86/include -I../sysdeps/unix/sysv/linux/x86  -I../sysdeps/x86/nptl  -I../sysdeps/unix/sysv/linux/wordsize-64  -I../sysdeps/x86_64/nptl  -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux  -I../sysdeps/nptl  -I../sysdeps/pthread  -I../sysdeps/gnu  -I../sysdeps/unix/inet  -I../sysdeps/unix/sysv  -I../sysdeps/unix/x86_64  -I../sysdeps/unix  -I../sysdeps/posix  -I../sysdeps/x86_64/64  -I../sysdeps/x86_64/fpu/multiarch  -I../sysdeps/x86_64/fpu  -I../sysdeps/x86/fpu  -I../sysdeps/x86_64/multiarch  -I../sysdeps/x86_64  -I../sysdeps/x86/include -I../sysdeps/x86  -I../sysdeps/ieee754/float128  -I../sysdeps/ieee754/ldbl-96/include -I../sysdeps/ieee754/ldbl-96  -I../sysdeps/ieee754/dbl-64  -I../sysdeps/ieee754/flt-32  -I../sysdeps/wordsize-64  -I../sysdeps/ieee754  -I../sysdeps/generic  -I.. -I../libio -I. -nostdinc -isystem /gnu/store/qzqq7za0mqvxgp7q8jmzd97c22xbqd18-gcc-7.5.0-lib/lib/gcc/x86_64-unknown-linux-gnu/7.5.0/include -isystem /gnu/store/qzqq7za0mqvxgp7q8jmzd97c22xbqd18-gcc-7.5.0-lib/lib/gcc/x86_64-unknown-linux-gnu/7.5.0/include-fixed -isystem /gnu/store/sjq77rvlryjgksni6ry1648xkj807ynv-linux-libre-headers-5.15.49/include -D_LIBC_REENTRANT -include /tmp/guix-build-glibc-2.35.drv-0/build/libc-modules.h -DMODULE_NAME=libc -include ../include/libc-symbols.h  -DPIC -DSHARED     -DTOP_NAMESPACE=glibc -o /tmp/guix-build-glibc-2.35.drv-0/build/dlfcn/dlopenold.os -MD -MP -MF /tmp/guix-build-glibc-2.35.drv-0/build/dlfcn/dlopenold.os.dt -MT /tmp/guix-build-glibc-2.35.drv-0/build/dlfcn/dlopenold.os
"/gnu/store/d90028hf869mppv8pspbpgbj7xmdj4h6-gnumach-headers-cross-i586-pc-gnu-1.8+git20221224/include/mach/mach_types.defs", line 60: syntax error
"/gnu/store/d90028hf869mppv8pspbpgbj7xmdj4h6-gnumach-headers-cross-i586-pc-gnu-1.8+git20221224/include/mach/mach_types.defs", line 62: syntax error
"/gnu/store/d90028hf869mppv8pspbpgbj7xmdj4h6-gnumach-headers-cross-i586-pc-gnu-1.8+git20221224/include/mach/mach_types.defs", line 63: syntax error
"/gnu/store/d90028hf869mppv8pspbpgbj7xmdj4h6-gnumach-headers-cross-i586-pc-gnu-1.8+git20221224/include/mach/mach_types.defs", line 64: syntax error
"/gnu/store/d90028hf869mppv8pspbpgbj7xmdj4h6-gnumach-headers-cross-i586-pc-gnu-1.8+git20221224/include/mach/mach_types.defs", line 65: syntax error
"/gnu/store/d90028hf869mppv8pspbpgbj7xmdj4h6-gnumach-headers-cross-i586-pc-gnu-1.8+git20221224/include/mach/mach_types.defs", line 66: syntax error
"/gnu/store/d90028hf869mppv8pspbpgbj7xmdj4h6-gnumach-headers-cross-i586-pc-gnu-1.8+git20221224/include/mach/mach_types.defs", line 67: syntax error
"/gnu/store/d90028hf869mppv8pspbpgbj7xmdj4h6-gnumach-headers-cross-i586-pc-gnu-1.8+git20221224/include/mach/mach_types.defs", line 68: syntax error
"/gnu/store/d90028hf869mppv8pspbpgbj7xmdj4h6-gnumach-headers-cross-i586-pc-gnu-1.8+git20221224/include/mach/mach_types.defs", line 69: syntax error
"/gnu/store/d90028hf869mppv8pspbpgbj7xmdj4h6-gnumach-headers-cross-i586-pc-gnu-1.8+git20221224/include/mach/mach_types.defs", line 70: syntax error
"/gnu/store/d90028hf869mppv8pspbpgbj7xmdj4h6-gnumach-headers-cross-i586-pc-gnu-1.8+git20221224/include/mach/mach_types.defs", line 263: syntax error
"/gnu/store/d90028hf869mppv8pspbpgbj7xmdj4h6-gnumach-headers-cross-i586-pc-gnu-1.8+git20221224/include/mach/mach_types.defs", line 265: syntax error
"/gnu/store/d90028hf869mppv8pspbpgbj7xmdj4h6-gnumach-headers-cross-i586-pc-gnu-1.8+git20221224/include/mach/mach_types.defs", line 266: syntax error
"/gnu/store/d90028hf869mppv8pspbpgbj7xmdj4h6-gnumach-headers-cross-i586-pc-gnu-1.8+git20221224/include/mach/mach_types.defs", line 267: type 'rpc_time_value_t' not defined
echo 'dlfcn/dladdr.o dlfcn/dladdr1.o dlfcn/dlclose.o dlfcn/dlerror.o dlfcn/dlinfo.o dlfcn/dlmopen.o dlfcn/dlopen.o dlfcn/dlsym.o dlfcn/dlvsym.o dlfcn/libc_dlerror_result.o' > /tmp/guix-build-glibc-2.35.drv-0/build/dlfcn/stamp.oT
mv -f /tmp/guix-build-glibc-2.35.drv-0/build/dlfcn/stamp.oT /tmp/guix-build-glibc-2.35.drv-0/build/dlfcn/stamp.o
make[2]: *** [Machrules:168: /tmp/guix-build-glibc-hurd-headers-cross-i586-pc-gnu-2.37.drv-0/build/mach/mach/mach_interface.__h] Error 1
make[2]: Leaving directory '/tmp/guix-build-glibc-hurd-headers-cross-i586-pc-gnu-2.37.drv-0/glibc-2.37/mach'
make[1]: *** [Makefile:484: mach/install-headers] Error 2
make[1]: Leaving directory '/tmp/guix-build-glibc-hurd-headers-cross-i586-pc-gnu-2.37.drv-0/glibc-2.37'
make: *** [Makefile:9: install-headers] Error 2
error: in phase 'install': uncaught exception:
%exception #<&invoke-error program: "make" arguments: ("install-headers") exit-status: 2 term-signal: #f stop-signal: #f> 
phase `install' failed after 8.6 seconds
command "make" "install-headers" failed with status 2
echo 'dlfcn/dladdr.os dlfcn/dladdr1.os dlfcn/dlclose.os dlfcn/dlerror.os dlfcn/dlinfo.os dlfcn/dlmopen.os dlfcn/dlopen.os dlfcn/dlsym.os dlfcn/dlvsym.os dlfcn/libc_dlerror_result.os dlfcn/dlopenold.os' > /tmp/guix-build-glibc-2.35.drv-0/build/dlfcn/stamp.osT
builder for `/gnu/store/vk634lqm1fr9bfq1w6n68x33cj1vvyv8-glibc-hurd-headers-cross-i586-pc-gnu-2.37.drv' failed with exit code 1
@ build-failed /gnu/store/vk634lqm1fr9bfq1w6n68x33cj1vvyv8-glibc-hurd-headers-cross-i586-pc-gnu-2.37.drv - 1 builder for `/gnu/store/vk634lqm1fr9bfq1w6n68x33cj1vvyv8-glibc-hurd-headers-cross-i586-pc-gnu-2.37.drv' failed with exit code 1
--8<---------------cut here---------------end--------------->8---

Thoughts?

Ludo’.




^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-07-14 13:37           ` Ludovic Courtès
@ 2023-07-14 18:59             ` Josselin Poiret via Guix-patches via
  2023-07-14 23:35               ` Janneke Nieuwenhuizen
  0 siblings, 1 reply; 67+ messages in thread
From: Josselin Poiret via Guix-patches via @ 2023-07-14 18:59 UTC (permalink / raw)
  To: Ludovic Courtès, Janneke Nieuwenhuizen; +Cc: 63527

[-- Attachment #1: Type: text/plain, Size: 622 bytes --]

Hi Ludo,

Ludovic Courtès <ludo@gnu.org> writes:

> However, there seem to be regressions when cross-compiling to
> i586-pc-gnu, such as <https://ci.guix.gnu.org/build/1595110/details>:

That's because of the revert of the mig update in
a041bbb4bf98cce72b14c554369fc56eeacc2f5d, since it apparently caused
problems on the data service.  I don't expect anything to build without
the new mig version, but I have no idea what could be causing this
issue.  Janneke, have you ever run into such a thing when building
natively?  Maybe it's just the childhurds not having enough RAM?

Best,
-- 
Josselin Poiret

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 682 bytes --]

^ permalink raw reply	[flat|nested] 67+ messages in thread

* [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd.
  2023-07-14 18:59             ` Josselin Poiret via Guix-patches via
@ 2023-07-14 23:35               ` Janneke Nieuwenhuizen
  0 siblings, 0 replies; 67+ messages in thread
From: Janneke Nieuwenhuizen @ 2023-07-14 23:35 UTC (permalink / raw)
  To: Josselin Poiret; +Cc: 63527, Ludovic Courtès

Josselin Poiret writes:

> Hi Ludo,
>
> Ludovic Courtès <ludo@gnu.org> writes:
>
>> However, there seem to be regressions when cross-compiling to
>> i586-pc-gnu, such as <https://ci.guix.gnu.org/build/1595110/details>:
>
> That's because of the revert of the mig update in
> a041bbb4bf98cce72b14c554369fc56eeacc2f5d, since it apparently caused
> problems on the data service.  I don't expect anything to build without
> the new mig version, but I have no idea what could be causing this
> issue.

Yes, I re-cherry-picked the mig update and put it at the bottom of
hurd-team and can confirm that

    /gnu/store/8syklh9kg8rlkalzmb2rzgj0z6fgabyr-guile-static-stripped-tarball-3.0.9

> Janneke, have you ever run into such a thing when building
> natively?  Maybe it's just the childhurds not having enough RAM?

I've got no idea; it was suggested on IRC that a circular dependency was
created and that may be true.  Like you remarked on IRC, we probably
need the commencement patches too.

We can see about the rest of hurd-team that's mostly about building guix
natively, later.

Greetings,
Janneke

-- 
Janneke Nieuwenhuizen <janneke@gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 67+ messages in thread

end of thread, other threads:[~2023-07-14 23:36 UTC | newest]

Thread overview: 67+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-15 19:35 [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Janneke Nieuwenhuizen
2023-05-15 19:36 ` [bug#63527] [PATCH 1/3] DRAFT gnu: Add rumpkernel Janneke Nieuwenhuizen
2023-05-15 19:36 ` [bug#63527] [PATCH 2/3] gnu: hurd: " Janneke Nieuwenhuizen
2023-05-15 19:36 ` [bug#63527] [PATCH 3/3] DRAFT system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
2023-05-16 13:48 ` [bug#63527] [PATCH v2 0/3] Initial attempt at rumpdisk support for the Hurd Janneke Nieuwenhuizen
2023-05-16 13:48   ` [bug#63527] [PATCH v2 1/3] gnu: Add rumpkernel Janneke Nieuwenhuizen
2023-05-16 13:48   ` [bug#63527] [PATCH v2 2/3] gnu: hurd: " Janneke Nieuwenhuizen
2023-05-16 13:48   ` [bug#63527] [PATCH v2 3/3] DRAFT system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
2023-05-18  8:45 ` [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd Janneke Nieuwenhuizen
2023-05-18  8:45   ` [bug#63527] [PATCH v3 1/7] gnu: Add libpciaccess-0.17 Janneke Nieuwenhuizen
2023-05-18  8:46   ` [bug#63527] [PATCH v3 2/7] gnu: hurd: Update libpciaccess to 0.17 Janneke Nieuwenhuizen
2023-05-18  8:46   ` [bug#63527] [PATCH v3 3/7] gnu: Add rumpkernel Janneke Nieuwenhuizen
2023-05-18  8:46   ` [bug#63527] [PATCH v3 4/7] gnu: hurd: " Janneke Nieuwenhuizen
2023-05-18  8:46   ` [bug#63527] [PATCH v3 5/7] hurd-boot: Setup pci-arbiter and rumpdisk translators Janneke Nieuwenhuizen
2023-05-18  8:46   ` [bug#63527] [PATCH v3 6/7] services: childhurd: Bump default qemu memory to 2048MB Janneke Nieuwenhuizen
2023-05-18  8:46   ` [bug#63527] [PATCH v3 7/7] system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
2023-05-18  9:14   ` [bug#63527] [PATCH v3 0/7] Rumpdisk support for the Hurd Janneke Nieuwenhuizen
2023-05-18  9:38 ` [bug#63527] [PATCH v4 0/8] Rumpdisk support for the Hurd, really! Janneke Nieuwenhuizen
2023-05-18  9:38   ` [bug#63527] [PATCH v4 1/8] gnu: glibc: Update time patches for the Hurd Janneke Nieuwenhuizen
2023-05-18 17:10     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support " Ludovic Courtès
2023-05-19  8:21       ` Janneke Nieuwenhuizen
2023-05-18  9:38   ` [bug#63527] [PATCH v4 2/8] gnu: Add libpciaccess-0.17 Janneke Nieuwenhuizen
2023-05-18  9:38   ` [bug#63527] [PATCH v4 3/8] gnu: hurd: Update libpciaccess to 0.17 Janneke Nieuwenhuizen
2023-05-18  9:38   ` [bug#63527] [PATCH v4 4/8] gnu: Add rumpkernel Janneke Nieuwenhuizen
2023-05-18 17:17     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
2023-05-19  9:21       ` Janneke Nieuwenhuizen
2023-05-18  9:39   ` [bug#63527] [PATCH v4 5/8] gnu: hurd: Add rumpkernel Janneke Nieuwenhuizen
2023-05-18  9:39   ` [bug#63527] [PATCH v4 6/8] hurd-boot: Setup pci-arbiter and rumpdisk translators Janneke Nieuwenhuizen
2023-05-18  9:39   ` [bug#63527] [PATCH v4 7/8] services: childhurd: Bump default qemu memory to 2048MB Janneke Nieuwenhuizen
2023-05-18 17:20     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
2023-05-19  9:30       ` Janneke Nieuwenhuizen
2023-05-18  9:39   ` [bug#63527] [PATCH v4 8/8] system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
2023-05-18 17:18     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
2023-05-23 15:47 ` [bug#63527] [PATCH v5 00/11] Rumpdisk support for the Hurd, really, *really*! Janneke Nieuwenhuizen
2023-05-23 15:47   ` [bug#63527] [PATCH v5 01/11] gnu: Add libpciaccess-0.17 Janneke Nieuwenhuizen
2023-05-23 15:47   ` [bug#63527] [PATCH v5 02/11] gnu: hurd: Update libpciaccess to 0.17 Janneke Nieuwenhuizen
2023-05-24  9:11     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
2023-05-24  9:28       ` Janneke Nieuwenhuizen
2023-05-23 15:47   ` [bug#63527] [PATCH v5 03/11] gnu: Add rumpkernel Janneke Nieuwenhuizen
2023-05-23 15:47   ` [bug#63527] [PATCH v5 04/11] gnu: Add hurd-shouldbeinlibc Janneke Nieuwenhuizen
2023-05-23 15:47   ` [bug#63527] [PATCH v5 05/11] gnu: parted: Support building for the Hurd Janneke Nieuwenhuizen
2023-05-24  9:13     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support " Ludovic Courtès
2023-05-24  9:24       ` Janneke Nieuwenhuizen
2023-05-23 15:47   ` [bug#63527] [PATCH v5 06/11] gnu: hurd: Add rumpkernel Janneke Nieuwenhuizen
2023-05-23 16:01     ` Janneke Nieuwenhuizen
     [not found]       ` <cover.1684858715.git.janneke@gnu.org>
2023-05-23 16:20         ` [bug#63527] [PATCH v6 " Janneke Nieuwenhuizen
2023-05-23 15:47   ` [bug#63527] [PATCH v5 07/11] hurd-boot: Setup pci-arbiter and rumpdisk translators Janneke Nieuwenhuizen
2023-05-23 21:00     ` Janneke Nieuwenhuizen
2023-05-24  9:16     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
2023-05-24  9:30       ` Janneke Nieuwenhuizen
2023-05-23 15:47   ` [bug#63527] [PATCH v5 08/11] services: childhurd: Bump default qemu memory to 2048MB Janneke Nieuwenhuizen
2023-05-23 15:47   ` [bug#63527] [PATCH v5 09/11] system: hurd: Boot with pci.arbiter and rumpdisk Janneke Nieuwenhuizen
2023-05-23 15:47   ` [bug#63527] [PATCH v5 10/11] bootloader: grub: Use rumpdisk-style root when booting with "noide" Janneke Nieuwenhuizen
2023-05-24  9:32     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
2023-05-24  9:37       ` Janneke Nieuwenhuizen
2023-05-23 15:47   ` [bug#63527] [PATCH v5 11/11] gnu: gnumach: Support "noide" argument Janneke Nieuwenhuizen
2023-05-24  9:36     ` [bug#63527] [PATCH 0/3] Initial attempt at rumpdisk support for the Hurd Ludovic Courtès
2023-05-24  9:40       ` Janneke Nieuwenhuizen
2023-05-24  9:08   ` Ludovic Courtès
2023-05-24  9:15     ` Janneke Nieuwenhuizen
2023-05-24  9:37   ` Ludovic Courtès
2023-05-24  9:46     ` Janneke Nieuwenhuizen
2023-07-13 17:13       ` Josselin Poiret via Guix-patches via
2023-07-13 17:41         ` Janneke Nieuwenhuizen
2023-07-14 13:37           ` Ludovic Courtès
2023-07-14 18:59             ` Josselin Poiret via Guix-patches via
2023-07-14 23:35               ` Janneke Nieuwenhuizen

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.