From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id iDoqLKLyZWT2oAAASxT56A (envelope-from ) for ; Thu, 18 May 2023 11:40:50 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id UCU2LKLyZWTPWQAA9RJhRA (envelope-from ) for ; Thu, 18 May 2023 11:40:50 +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 74C94149FB for ; Thu, 18 May 2023 11:40:50 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pza7D-0002Lk-Bb; Thu, 18 May 2023 05:40:07 -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 1pza7B-0002Kn-D2 for guix-patches@gnu.org; Thu, 18 May 2023 05:40:05 -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 1pza7B-0006cF-5C for guix-patches@gnu.org; Thu, 18 May 2023 05:40:05 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pza7B-0004Jk-0t for guix-patches@gnu.org; Thu, 18 May 2023 05:40:05 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#63527] [PATCH v4 4/8] gnu: Add rumpkernel. Resent-From: Janneke Nieuwenhuizen Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Thu, 18 May 2023 09:40:04 +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.168440277516471 (code B ref 63527); Thu, 18 May 2023 09:40:04 +0000 Received: (at 63527) by debbugs.gnu.org; 18 May 2023 09:39:35 +0000 Received: from localhost ([127.0.0.1]:52080 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pza6g-0004HU-RG for submit@debbugs.gnu.org; Thu, 18 May 2023 05:39:35 -0400 Received: from eggs.gnu.org ([209.51.188.92]:47204) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pza6Z-0004Fw-7z for 63527@debbugs.gnu.org; Thu, 18 May 2023 05:39:29 -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 1pza6U-0006MO-0z; Thu, 18 May 2023 05:39:22 -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=rDUwo9jyM14qcCRHiJja2XQuusOMr2fbjILphkyXf9w=; b=IleMjeivnKL+PDirvkS2 0ouUwqNrRGWSBI0pSOgwzoaG1UgbfkkKIpMBQYdxEpAxBRo/nwXm9JN2u3+hHXevxKlUHOe+JLkbW JMrPMc/nO9lf07mXsvP+AV9jYQHlppQUL1HZkrRwkljZrnRg9fKWenOZ22+9tsqzHWGp1Qkd01QXu 5IEIi7b0V5Rf1BN9NnlQjsECt6vlDHNEMmdfl27M34eJoldNuATY+2qj/MYIyku2S3ass+AlEIiVH z4Gu/bp6OmRXAL4mIn4WcNNQUuHfDycee6CNPyzwbo5SDzEkDnhzj3S75SXxV1a1StYkFNHUg2Rtw SCbthdRI2zsMWA==; Received: from [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 1pza6T-0006zE-Kn; Thu, 18 May 2023 05:39:21 -0400 From: Janneke Nieuwenhuizen Date: Thu, 18 May 2023 11:38:59 +0200 Message-Id: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 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-Flow: FLOW_IN X-Migadu-Country: US ARC-Seal: i=1; s=key1; d=yhetil.org; t=1684402850; a=rsa-sha256; cv=none; b=SVFFUXqS9JfI2u10hnZPuEZMPi9vlsPwRuXR6kmR+lk8CfJm/o8pn2F6x4SezpfuBizqpO RKcIPjSUWNqhk/tJjRBmdCFYR5lB5qPXtfaaPWF+AlBsr9vLIdq4esePm3xhs4Uql4dhBX RfQG4AZV7LOiwrvdr0JPPRRVjDxUO6KkAuck9YpsvGyHvcz3NwOkF6fuRLER6H80ddCFXi 7bcIqRJSqurnUwXgYmrGsQ6Z2px/9gt+GjZZYvoHUgsR9s9m95PgTuxlUiec35xqnwUpZO kxQGSzQHumPOgSg5x6OhMh2mjzbPJy6jH4HYA0cnibT+3Gx/cAAhojvwaRr1Fg== 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=IleMjeiv; 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=1684402850; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: 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=rDUwo9jyM14qcCRHiJja2XQuusOMr2fbjILphkyXf9w=; b=gjvwnTutxagluDOzFT5OwwgL31c5pbriJOwLI+gbDmXocpjiOrr1Aary9WCGW+AccNk0zi F/o5KRcALxNzwxYgCbJWCGZoLsTxCNHZ6EvG6I+QbhlV959QGaf4vO5bPk8THMs6TVOFhO Dd+ldYRDwyblnW96xyAVAIlsW8nEXAJBvOiTrwIO697YDyrn7rsxqtHHixWgqzOKsRPcmL nKZ85uTrBHK9B2UlE8tUWTnTAamDA3NifEXla9vG10HnV4n72jOErP4ZEu+0O+l/oq7LV3 Eq3AbiLarvMKArDIL2DV11ZqQ9TWxB7oTPJNM31VaO8087WM+IT+LSSa7espWA== X-Migadu-Scanner: scn1.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=IleMjeiv; 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-Migadu-Spam-Score: -2.59 X-Spam-Score: -2.59 X-Migadu-Queue-Id: 74C94149FB X-TUID: eFEDT1Hr8Un8 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