diff options
-rw-r--r-- | gnu/local.mk | 2 | ||||
-rw-r--r-- | gnu/packages/hurd.scm | 16 | ||||
-rw-r--r-- | gnu/packages/patches/hurd-fix-rumpdisk-build.patch | 41 | ||||
-rw-r--r-- | gnu/packages/patches/hurd-rumpdisk-no-hd.patch | 26 |
4 files changed, 80 insertions, 5 deletions
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 <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) |