* [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 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 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 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 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 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 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 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: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 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: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 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 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-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 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 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: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 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 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
[parent not found: <cover.1684858715.git.janneke@gnu.org>]
* [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 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 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 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: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 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 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-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 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 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: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-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-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 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: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 public inbox https://git.savannah.gnu.org/cgit/guix.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).