From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id RNN7ETuKYmToFgEASxT56A (envelope-from ) for ; Mon, 15 May 2023 21:38:35 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id +CWGEDuKYmTPtwAA9RJhRA (envelope-from ) for ; Mon, 15 May 2023 21:38:35 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 074132B0E2 for ; Mon, 15 May 2023 21:38:35 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pye1E-0008Uw-Ko; Mon, 15 May 2023 15:38:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pye1C-0008UG-TX for guix-patches@gnu.org; Mon, 15 May 2023 15:38:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pye1C-0000Eo-Lc for guix-patches@gnu.org; Mon, 15 May 2023 15:38:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pye1C-0004Dw-Gx for guix-patches@gnu.org; Mon, 15 May 2023 15:38:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#63527] [PATCH 1/3] DRAFT gnu: Add rumpkernel. Resent-From: Janneke Nieuwenhuizen Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 15 May 2023 19:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63527 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 63527@debbugs.gnu.org Received: via spool by 63527-submit@debbugs.gnu.org id=B63527.168417943116153 (code B ref 63527); Mon, 15 May 2023 19:38:02 +0000 Received: (at 63527) by debbugs.gnu.org; 15 May 2023 19:37:11 +0000 Received: from localhost ([127.0.0.1]:44477 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pye0M-0004CS-I9 for submit@debbugs.gnu.org; Mon, 15 May 2023 15:37:11 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37518) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pye0K-0004C7-E5 for 63527@debbugs.gnu.org; Mon, 15 May 2023 15:37:09 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pye0F-0008VA-53; Mon, 15 May 2023 15:37:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:References:In-Reply-To:Date:Subject:To: From; bh=ouhDeB3JbtDrsWFNUIEGt3CZLBpLC+p9B7GWsiUlypA=; b=e4fulqqoyPEe98vystFu q+jJXFdZ14b9LtcnV7NbCgbwdc5PKD34CJIROo8cCAKG8dBXYSZA+eAtZe167ud89HZzZyPL2C4E0 aAGKE5ebKS5GVkH3/pTByJgBcLyU4pcd7Hsy8572zJvwdhE/lj2qXhl/j3XKRFutVateo5xpZH6sK 3g+nXdNk0QLiu82ywkbdwM6senZltZLJbZzvjDYoSXpSWEQIRZTbhYtCrOuFjzov7wX8IoIN58kLl jomr/nir4M7NYRACbnyUHNRDzxDa4b5dM68bdArKuRwsGO4cXwPDZJTCeI7wSh/zhaxMUK9IfwgWR tq2vf4v6DDDUnQ==; Received: from 2a02-a462-da03-1-2701-7f81-a736-4607.fixed6.kpn.net ([2a02:a462:da03:1:2701:7f81:a736:4607] helo=drakenpad.fritz.box) by fencepost.gnu.org with esmtpa (Exim 4.90_1) (envelope-from ) id 1pye0D-0002J4-4l; Mon, 15 May 2023 15:37:02 -0400 From: Janneke Nieuwenhuizen Date: Mon, 15 May 2023 21:36:57 +0200 Message-Id: <3c1235a19285d40174f0aadb1ac5fdead22f2961.1684177770.git.janneke@gnu.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: guix-patches-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN ARC-Seal: i=1; s=key1; d=yhetil.org; t=1684179515; a=rsa-sha256; cv=none; b=K6LV9JRcWRt6AgFETFVj7EU7ml/lbHwQbq1knksP0u7ijqdJmCsEIywNFc1M5LyadYk2Et N8Of2Zs0U8v+yaKBENgQ/ka5BdvUK1LADJeuqgZEIH/i8FXEwO357Burzzdg/5lDvoyU4v fyyTbM0Mfm1G1FL7fnwFsYo381I5McR+2w3pc0rIvcZPjGfsroPBnAMZ/4YGXQyJ/OObQ2 co1GVCQ1uGQKAn6zw/Fo8j5/JmVD+70F8lT3p2vGpj4yNbqd+1ClSIpFVyk735e1+wsAve +hHIH24HSBwHbBTV9BOKDxAz4K/DAo2FrlVjwi1huDBzvobgNvARiFPBcYbyGg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=e4fulqqo; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1684179515; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=ouhDeB3JbtDrsWFNUIEGt3CZLBpLC+p9B7GWsiUlypA=; b=Nqfn2ud9Qdl2HrQjHkIfSIaMtvDrW4nNn77CrREAEmfxYoeOuuhfgmBaODDWoSvBc5y+zI hpWpfj6LB/rLMwzPpJduLQwkucTP7T2JBe/s9uIMnPbQ1sKIzNuK9jX9kSW1VP9MEM9QwF hiWJJXQrh4ki2cxS6xld8QfwOGTauqCp4eS5Vm5Ruyhrr8EZ6q5+CX6zjY1bBC8jBwj3AY iNDHZVBEQR91ljFEFF20nez7uXVM5sCB2qmQOj+dLEm1zpRAUc0eqvVnXzYAaXr0FDFdR3 RtheyqDm1UUND0hmu+oAIi4K18/F8aO7xYNeLpoUlkuZkCeiq4u7DSbSN4Pthw== X-Migadu-Spam-Score: -2.99 X-Spam-Score: -2.99 X-Migadu-Queue-Id: 074132B0E2 X-Migadu-Scanner: scn0.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=e4fulqqo; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-TUID: l8eW9GJaFSdC 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 ;;; Copyright © 2020 Efraim Flashner ;;; Copyright © 2020 Marius Bakke -;;; Copyright © 2020, 2022 Jan (janneke) Nieuwenhuizen +;;; Copyright © 2020, 2022, 2023 Janneke Nieuwenhuizen ;;; Copyright © 2020 Ricardo Wurmus ;;; Copyright © 2020 Rene Saavedra ;;; @@ -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" + (("\\") + (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