From 5981e99f0a643e30e7af0f0a07f0034d363a843f Mon Sep 17 00:00:00 2001 From: Janneke Nieuwenhuizen Date: Mon, 15 May 2023 11:38:50 +0200 Subject: gnu: hurd: Add rumpkernel. * 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): 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. Signed-off-by: Josselin Poiret --- gnu/local.mk | 2 ++ gnu/packages/hurd.scm | 16 ++++++--- gnu/packages/patches/hurd-fix-rumpdisk-build.patch | 41 ++++++++++++++++++++++ gnu/packages/patches/hurd-rumpdisk-no-hd.patch | 26 ++++++++++++++ 4 files changed, 80 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 (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index 1ff2b13c5d..cf085c9c38 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1366,6 +1366,8 @@ dist_patch_DATA = \ %D%/packages/patches/hubbub-maybe-uninitialized.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 a8f752aa7e..419d12939f 100644 --- a/gnu/packages/hurd.scm +++ b/gnu/packages/hurd.scm @@ -35,6 +35,7 @@ #: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) @@ -312,12 +313,15 @@ Hurd-minimal package which are needed for both glibc and GCC.") (define-public hurd (package (name "hurd") - (source (package-source hurd-headers)) + (source (origin + (inherit (package-source hurd-headers)) + (patches (search-patches "hurd-fix-rumpdisk-build.patch" + "hurd-rumpdisk-no-hd.patch")))) (version (package-version hurd-headers)) (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 ".")) @@ -331,7 +335,7 @@ Hurd-minimal package which are needed for both glibc and GCC.") ;; 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) @@ -494,10 +498,10 @@ exec ${system}/rc \"$@\" #: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" @@ -518,7 +522,9 @@ exec ${system}/rc \"$@\" ("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 +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) -- cgit 1.4.1