From patchwork Sat Mar 21 22:24:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leo Famulari X-Patchwork-Id: 20834 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 431DB27BBEA; Sat, 21 Mar 2020 22:25:11 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,T_DKIM_INVALID,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTP id C416F27BBE4 for ; Sat, 21 Mar 2020 22:25:10 +0000 (GMT) Received: from localhost ([::1]:41324 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jFmYI-0004o7-Ar for patchwork@mira.cbaines.net; Sat, 21 Mar 2020 18:25:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59619) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jFmYB-0004o0-7s for guix-patches@gnu.org; Sat, 21 Mar 2020 18:25:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jFmY9-0007Ll-Q4 for guix-patches@gnu.org; Sat, 21 Mar 2020 18:25:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:42391) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jFmY9-0007Lf-MJ for guix-patches@gnu.org; Sat, 21 Mar 2020 18:25:01 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jFmY9-0002Pf-Im for guix-patches@gnu.org; Sat, 21 Mar 2020 18:25:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#40178] [PATCH 1/2] gnu: Prefix licenses in (gnu packages debug). References: <20200321222104.GA19557@jasmine.lan> In-Reply-To: <20200321222104.GA19557@jasmine.lan> Resent-From: Leo Famulari Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sat, 21 Mar 2020 22:25:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40178 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: 40178@debbugs.gnu.org Received: via spool by 40178-submit@debbugs.gnu.org id=B40178.15848294729216 (code B ref 40178); Sat, 21 Mar 2020 22:25:01 +0000 Received: (at 40178) by debbugs.gnu.org; 21 Mar 2020 22:24:32 +0000 Received: from localhost ([127.0.0.1]:48362 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jFmXf-0002OY-US for submit@debbugs.gnu.org; Sat, 21 Mar 2020 18:24:32 -0400 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:56335) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jFmXe-0002OE-Aq for 40178@debbugs.gnu.org; Sat, 21 Mar 2020 18:24:30 -0400 Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.nyi.internal (Postfix) with ESMTP id 36E115C01A2; Sat, 21 Mar 2020 18:24:25 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Sat, 21 Mar 2020 18:24:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=famulari.name; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; s=mesmtp; bh=6nlI0fA8hUESmNDHRdQt+0y 5oR62f/7LDvUAl2uavgA=; b=awfEi/vu51MVUtA/OeP6vaLnemVMdA0ur2nW9Rr BaKsND+JYSUZjWFOMQCt61FtxO/5CNDoFxtrbSqRvHovqxYgD8tB8F2p5hmgqeoN v10lHrmcGc4GNmhggXCH48Rhr7k1h9qz9FZeYU0Brfc2x/WrMLld/2L8sHRoPnis Pei0= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:date:from :message-id:mime-version:subject:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=6nlI0fA8hUESmNDHR dQt+0y5oR62f/7LDvUAl2uavgA=; b=qW05+WW5hNs4fFA3lOTMJfrhfC0MLB5Bb l72N6qGaU6iQ+7a7y+xSyvOMDamgjsznNmEPVwSNTUWD6DF/S+Z1KYfYsFw0deE1 HIq8YjATp5MMK2tneHrRn8b5OZ9DQtVbxR/vJ2O0nF83O2/unx62c/3IR209xUw4 6FMUv4kUfR9s4rU4XdS9tuX2x4FfkRXhkAden6M8vABVohalO20NTw4HzG0H25IY RZRsMoJs9JbkVmgHYTr1lyNmSlJ52SAmVSe293Vqbmeojk5WQU8wwdJPSmJFHKIz c4rIan3UvZTTU4nUhGvVPq6l70mZ8R1qXvNi2u9G5l92LIWUApk8A== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrudegfedgudeivdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurhephffvufffkffoggfgsedtkeertd ertddtnecuhfhrohhmpefnvghoucfhrghmuhhlrghrihcuoehlvghosehfrghmuhhlrghr ihdrnhgrmhgvqeenucffohhmrghinhepfihtfhhplhdrnhgvthenucfkphepjeeirdduvd egrddufeekrdeifeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhl fhhrohhmpehlvghosehfrghmuhhlrghrihdrnhgrmhgv X-ME-Proxy: Received: from jasmine.lan (c-76-124-138-63.hsd1.pa.comcast.net [76.124.138.63]) by mail.messagingengine.com (Postfix) with ESMTPA id 7480430618C1 for <40178@debbugs.gnu.org>; Sat, 21 Mar 2020 18:24:24 -0400 (EDT) From: Leo Famulari Date: Sat, 21 Mar 2020 18:24:16 -0400 Message-Id: X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * gnu/packages/debug.scm: Add a license prefix. --- gnu/packages/debug.scm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm index 718a76310d..1de8ba3677 100644 --- a/gnu/packages/debug.scm +++ b/gnu/packages/debug.scm @@ -22,7 +22,7 @@ (define-module (gnu packages debug) #:use-module (guix packages) - #:use-module (guix licenses) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix utils) @@ -96,7 +96,7 @@ isolate a small failure-inducing substring of a large input that causes your program to exhibit a bug.") ;; See License.txt, which is a bsd-3 license, despite the project's ;; home-page pointing to a bsd-2 license. - (license bsd-3))) + (license license:bsd-3))) (define-public c-reduce (package @@ -156,7 +156,7 @@ property of interest (such as triggering a compiler bug) and automatically produces a much smaller C/C++ program that has the same property. It is intended for use by people who discover and report bugs in compilers and other tools that process C/C++ code.") - (license ncsa))) + (license license:ncsa))) (define-public american-fuzzy-lop (let ((machine (match (or (%current-target-system) @@ -283,7 +283,7 @@ targeted binary. This substantially improves the functional coverage for the fuzzed code. The compact synthesized corpora produced by the tool are also useful for seeding other, more labor- or resource-intensive testing regimes down the road.") - (license asl2.0)))) + (license license:asl2.0)))) (define-public stress-make (let ((commit "9e92dff8f0157f012aaf31de5b8b8112ad720100") @@ -346,8 +346,8 @@ Stress Make, then it is likely that the @code{Makefile} contains no race conditions.") ;; stress-make wrapper is under BSD-3-modifications-must-be-indicated, ;; and patched GNU Make is under its own license. - (license (list (non-copyleft "LICENSE.md") - gpl3+))))) + (license (list (license:non-copyleft "LICENSE.md") + license:gpl3+))))) (define-public zzuf (package @@ -369,7 +369,7 @@ conditions.") (description "Zzuf is a transparent application input fuzzer. It works by intercepting file operations and changing random bits in the program's input. Zzuf's behaviour is deterministic, making it easy to reproduce bugs.") - (license (non-copyleft "http://www.wtfpl.net/txt/copying/")))) + (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/")))) (define-public scanmem (package @@ -427,7 +427,7 @@ several different times. After several scans of the process, scanmem isolates the position of the variable and allows you to modify its value.") ;; The library is covered by LGPLv3 or later; the application is covered ;; by GPLv3 or later. - (license (list lgpl3+ gpl3+)))) + (license (list license:lgpl3+ license:gpl3+)))) (define-public rr (package @@ -490,4 +490,4 @@ execution of applications (trees of processes and threads). Debugging extends GDB with very efficient reverse-execution, which in combination with standard GDB/x86 features like hardware data watchpoints, makes debugging much more fun.") - (license expat))) + (license license:expat))) From patchwork Sat Mar 21 22:24:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Leo Famulari X-Patchwork-Id: 20835 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 66AF127BBEA; Sat, 21 Mar 2020 22:25:14 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,T_DKIM_INVALID,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTP id 8702227BBE4 for ; Sat, 21 Mar 2020 22:25:13 +0000 (GMT) Received: from localhost ([::1]:41330 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jFmYL-0004qc-3I for patchwork@mira.cbaines.net; Sat, 21 Mar 2020 18:25:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59629) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jFmYC-0004o1-Ad for guix-patches@gnu.org; Sat, 21 Mar 2020 18:25:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jFmYA-0007Lz-5d for guix-patches@gnu.org; Sat, 21 Mar 2020 18:25:04 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:42392) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jFmYA-0007Lr-19 for guix-patches@gnu.org; Sat, 21 Mar 2020 18:25:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jFmY9-0002Pm-Un for guix-patches@gnu.org; Sat, 21 Mar 2020 18:25:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#40178] [PATCH 2/2] gnu: Remove qemu-minimal-2.10. Resent-From: Leo Famulari Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sat, 21 Mar 2020 22:25:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40178 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: 40178@debbugs.gnu.org Received: via spool by 40178-submit@debbugs.gnu.org id=B40178.15848294739224 (code B ref 40178); Sat, 21 Mar 2020 22:25:01 +0000 Received: (at 40178) by debbugs.gnu.org; 21 Mar 2020 22:24:33 +0000 Received: from localhost ([127.0.0.1]:48364 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jFmXg-0002Ob-9c for submit@debbugs.gnu.org; Sat, 21 Mar 2020 18:24:33 -0400 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:38705) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jFmXe-0002OD-Aq for 40178@debbugs.gnu.org; Sat, 21 Mar 2020 18:24:31 -0400 Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.nyi.internal (Postfix) with ESMTP id 3783F5C01C1; Sat, 21 Mar 2020 18:24:25 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Sat, 21 Mar 2020 18:24:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=famulari.name; h=from:to:subject:date:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; s=mesmtp; bh=X72f8sZ15dowvyRYcXC/C/G8zFd7IZe8B91btVuFFa4=; b=n7ZcAb37xSzR 5jnSfpctaZiOyKDq0UbTPxg70iVvgQyJXzTFDl1lkx+3StQhYvpfgjoiPYGtY99a S+z7rHbCv8DEveeYrb71QEm7rtwvsCLcNLFWAqgeuE9zmusQFU1aMm2NTBeMlV7e oaAvS7q93gzfb1CcX8OMncpwyx5v+Gw= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm2; bh=X72f8sZ15dowvyRYcXC/C/G8zFd7IZe8B91btVuFF a4=; b=VbKc8HtrJQCIKg/nF8dex8Mf53ApaslngCarZ7slrzBGp4Xw8Y7NCJdUx J24z9c9140mT0/59kVJU3CFrpFIb+H1s1Wy7jkieI7aC21tmRX3c+ojxXzUeqDRD DM+pE9fOl/kHhrZfYJKfRB/Tof3hJnzzI5o8aaBgm7Q0ty8lBAMmQiQqHPf9bqkE Rvy37XsMdD5x0n37C8O2PVzue4rZqLZyx0TC3BuLuyvDXNsjXyRj1DMeM3zgt9q7 npYT3p+H1oW0ISHX04BkhtP3Ifprj0nm2I+cFljncSfQdENHTaYTCRUP8C8VCQFU FCGh++RSBTfoqYwrUmYd7F04+JLQw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrudegfedgudeivdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurhephffvufffkffojghfgggtgfesth ekredtredtjeenucfhrhhomhepnfgvohcuhfgrmhhulhgrrhhiuceolhgvohesfhgrmhhu lhgrrhhirdhnrghmvgeqnecuffhomhgrihhnpehqvghmuhdrohhrghdpghhnuhdrohhrgh enucfkphepjeeirdduvdegrddufeekrdeifeenucevlhhushhtvghrufhiiigvpedtnecu rfgrrhgrmhepmhgrihhlfhhrohhmpehlvghosehfrghmuhhlrghrihdrnhgrmhgv X-ME-Proxy: Received: from jasmine.lan (c-76-124-138-63.hsd1.pa.comcast.net [76.124.138.63]) by mail.messagingengine.com (Postfix) with ESMTPA id 9539A30626D3 for <40178@debbugs.gnu.org>; Sat, 21 Mar 2020 18:24:24 -0400 (EDT) From: Leo Famulari Date: Sat, 21 Mar 2020 18:24:17 -0400 Message-Id: <7f0ce820d4edbf883af3ea2d96c23706858a5b34.1584829446.git.leo@famulari.name> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * gnu/packages/virtualization.scm (qemu-minimal-2.10): Remove variable. * gnu/packages/debug.scm (qemu-for-american-fuzzy-lop): New variable. (american-fuzzy-lop)[inputs]: Remove custom-qemu and add qemu-for-american-fuzzy-lop. [arguments]: Adjust reference to QEMU in the 'install-qemu' phase. --- gnu/packages/debug.scm | 246 ++++++++++++++++++++++++-------- gnu/packages/virtualization.scm | 28 ---- 2 files changed, 190 insertions(+), 84 deletions(-) diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm index 1de8ba3677..f389b770df 100644 --- a/gnu/packages/debug.scm +++ b/gnu/packages/debug.scm @@ -28,16 +28,23 @@ #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) + #:use-module (gnu packages) + #:use-module (gnu packages attr) #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages bash) + #:use-module (gnu packages bison) #:use-module (gnu packages code) + #:use-module (gnu packages compression) #:use-module (gnu packages flex) #:use-module (gnu packages gdb) #:use-module (gnu packages glib) #:use-module (gnu packages gtk) #:use-module (gnu packages golang) + #:use-module (gnu packages image) + #:use-module (gnu packages linux) #:use-module (gnu packages llvm) + #:use-module (gnu packages ncurses) #:use-module (gnu packages ninja) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -46,7 +53,9 @@ #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) #:use-module (gnu packages serialization) + #:use-module (gnu packages texinfo) #:use-module (gnu packages virtualization) + #:use-module (gnu packages xdisorg) #:use-module (ice-9 match) #:use-module (srfi srfi-1)) @@ -183,61 +192,7 @@ tools that process C/C++ code.") (file-name (git-file-name name version)))) (build-system gnu-build-system) (inputs - `(("custom-qemu" - ;; The afl-qemu tool builds qemu 2.10.0 with a few patches applied. - ,(package (inherit qemu-minimal-2.10) - (name "afl-qemu") - (inputs - `(("afl-src" ,source) - ,@(package-inputs qemu-minimal))) - ;; afl only supports using a single afl-qemu-trace executable, so - ;; we only build qemu for the native target. - (arguments - `(#:modules ((srfi srfi-1) - ,@%gnu-build-system-modules) - ,@(substitute-keyword-arguments (package-arguments qemu-minimal) - ((#:configure-flags config-flags) - ``(,(string-append "--target-list=" ,machine "-linux-user") - ,@(remove (λ (f) (string-prefix? "--target-list=" f)) - ,config-flags))) - ((#:phases qemu-phases) - `(modify-phases ,qemu-phases - (add-after - 'unpack 'apply-afl-patches - (lambda* (#:key inputs #:allow-other-keys) - (let* ((afl-src (assoc-ref inputs "afl-src")) - (patch-dir "qemu_mode/patches")) - (copy-recursively (string-append afl-src "/" - patch-dir) - patch-dir) - (install-file - (string-append patch-dir - "/afl-qemu-cpu-inl.h") - ".") - (copy-file (string-append afl-src "/config.h") - "./afl-config.h") - (install-file (string-append afl-src "/types.h") - ".") - (substitute* "afl-qemu-cpu-inl.h" - (("\\.\\./\\.\\./config.h") "afl-config.h")) - (substitute* (string-append patch-dir - "/cpu-exec.diff") - (("\\.\\./patches/") "")) - - ;; These were already applied to qemu-minimal-2.10. - (for-each (lambda (obsolete-patch) - (delete-file (string-append - patch-dir "/" - obsolete-patch))) - (list "configure.diff" - "memfd.diff")) - - (for-each (lambda (patch-file) - (invoke "patch" "--force" "-p1" - "--input" patch-file)) - (find-files patch-dir - "\\.diff$")) - #t)))))))))))) + `(("qemu" ,qemu-for-american-fuzzy-lop))) (arguments `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")) (string-append "DOC_PATH=$(PREFIX)/share/doc/" @@ -267,7 +222,7 @@ tools that process C/C++ code.") ;; TODO: Build and install the afl-llvm tool. 'install 'install-qemu (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((qemu (assoc-ref inputs "custom-qemu")) + (let ((qemu (assoc-ref inputs "qemu")) (out (assoc-ref outputs "out"))) (symlink (string-append qemu "/bin/qemu-" ,machine) (string-append out "/bin/afl-qemu-trace")) @@ -285,6 +240,185 @@ useful for seeding other, more labor- or resource-intensive testing regimes down the road.") (license license:asl2.0)))) +(define-public qemu-for-american-fuzzy-lop + (let ((machine (match (or (%current-target-system) + (%current-system)) + ("x86_64-linux" "x86_64") + ("i686-linux" "i386") + ("aarch64-linux" "aarch64") + ("armhf-linux" "arm") + ("mips64el-linux" "mips64el") + ;; Prevent errors when querying this package on unsupported + ;; platforms, e.g. when running "guix package --search=" + (_ "UNSUPPORTED")))) + (hidden-package + (package + (name "qemu") + (version "2.10.2") + (source (origin + (method url-fetch) + (uri (string-append "https://download.qemu.org/qemu-" + version ".tar.xz")) + (sha256 + (base32 + "17w21spvaxaidi2am5lpsln8yjpyp2zi3s3gc6nsxj5arlgamzgw")) + (patches + (search-patches "qemu-glibc-2.27.patch")))) + (build-system gnu-build-system) + (arguments + `(;; Running tests in parallel can occasionally lead to failures, like: + ;; boot_sector_test: assertion failed (signature == SIGNATURE): (0x00000000 == 0x0000dead) + #:parallel-tests? #f + #:configure-flags + (list (string-append "--target-list=" ,machine "-linux-user")) + #:make-flags '("V=1") + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key inputs outputs (configure-flags '()) + #:allow-other-keys) + ;; The `configure' script doesn't understand some of the + ;; GNU options. Thus, add a new phase that's compatible. + (let ((out (assoc-ref outputs "out"))) + (setenv "SHELL" (which "bash")) + + ;; While we're at it, patch for tests. + (substitute* "tests/libqtest.c" + (("/bin/sh") (which "sh"))) + + ;; The binaries need to be linked against -lrt. + (setenv "LDFLAGS" "-lrt") + (apply invoke + `("./configure" + ,(string-append "--cc=" (which "gcc")) + ;; Some architectures insist on using HOST_CC + ,(string-append "--host-cc=" (which "gcc")) + "--disable-debug-info" ; save build space + "--enable-virtfs" ; just to be sure + ,(string-append "--prefix=" out) + ,(string-append "--sysconfdir=/etc") + ,@configure-flags))))) + (add-after + 'unpack 'apply-afl-patches + (lambda* (#:key inputs #:allow-other-keys) + (let* ((afl-src (assoc-ref inputs "afl-source")) + (patch-dir "qemu_mode/patches")) + (copy-recursively (string-append afl-src "/" + patch-dir) + patch-dir) + (install-file + (string-append patch-dir + "/afl-qemu-cpu-inl.h") + ".") + (copy-file (string-append afl-src "/config.h") + "./afl-config.h") + (install-file (string-append afl-src "/types.h") + ".") + (substitute* "afl-qemu-cpu-inl.h" + (("\\.\\./\\.\\./config.h") "afl-config.h")) + (substitute* (string-append patch-dir + "/cpu-exec.diff") + (("\\.\\./patches/") "")) + + ;; These were already applied to qemu-minimal-2.10. + (for-each (lambda (obsolete-patch) + (delete-file (string-append + patch-dir "/" + obsolete-patch))) + (list "configure.diff" + "memfd.diff")) + + (for-each (lambda (patch-file) + (invoke "patch" "--force" "-p1" + "--input" patch-file)) + (find-files patch-dir + "\\.diff$")) + #t))) + (add-after 'install 'install-info + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Install the Info manual, unless Texinfo is missing. + (when (assoc-ref inputs "texinfo") + (let* ((out (assoc-ref outputs "out")) + (dir (string-append out "/share/info"))) + (invoke "make" "info") + (for-each (lambda (info) + (install-file info dir)) + (find-files "." "\\.info")))) + #t)) + ;; Create a wrapper for Samba. This allows QEMU to use Samba without + ;; pulling it in as an input. Note that you need to explicitly install + ;; Samba in your Guix profile for Samba support. + (add-after 'install-info 'create-samba-wrapper + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (libexec (string-append out "/libexec"))) + (call-with-output-file "samba-wrapper" + (lambda (port) + (format port "#!/bin/sh +exec smbd $@"))) + (chmod "samba-wrapper" #o755) + (install-file "samba-wrapper" libexec)) + #t)) + (add-before 'configure 'prevent-network-configuration + (lambda _ + ;; Prevent the build from trying to use git to fetch from the net. + (substitute* "Makefile" + (("@./config.status") + "")) #t)) + (add-before 'check 'disable-unusable-tests + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "tests/Makefile.include" + ;; Comment out the test-qga test, which needs /sys and + ;; fails within the build environment. + (("check-unit-.* tests/test-qga" all) + (string-append "# " all))) + (substitute* "tests/Makefile.include" + ;; Comment out the test-char test, which needs networking and + ;; fails within the build environment. + (("check-unit-.* tests/test-char" all) + (string-append "# " all))) + #t))))) + (native-inputs + `(("python-2" ,python-2) ; QEMU 2 needs Python 2 + ("glib:bin" ,glib "bin") + ("perl" ,perl) + ("flex" ,flex) + ("bison" ,bison) + ("pkg-config" ,pkg-config) + ("texinfo" ,texinfo))) + (inputs + `(("afl-source" ,(package-source american-fuzzy-lop)) + ("alsa-lib" ,alsa-lib) + ("attr" ,attr) + ("glib" ,glib) + ("libaio" ,libaio) + ("libattr" ,attr) + ("libcap" ,libcap) + ("libjpeg" ,libjpeg-turbo) + ("libpng" ,libpng) + ("ncurses" ,ncurses) + ("pixman" ,pixman) + ("util-linux" ,util-linux) + ("zlib" ,zlib))) + (home-page "https://www.qemu.org") + (synopsis "Machine emulator and virtualizer (without GUI)") + (description + "QEMU is a generic machine emulator and virtualizer. + +When used as a machine emulator, QEMU can run OSes and programs made for one +machine (e.g. an ARM board) on a different machine---e.g., your own PC. By +using dynamic translation, it achieves very good performance. + +When used as a virtualizer, QEMU achieves near native performances by +executing the guest code directly on the host CPU. QEMU supports +virtualization when executing under the Xen hypervisor or using +the KVM kernel module in Linux. When using KVM, QEMU can virtualize x86, +server and embedded PowerPC, and S390 guests.") + ;; Many files are GPLv2+, but some are GPLv2-only---e.g., `memory.c'. + (license license:gpl2) + ;; Several tests fail on MIPS. + (supported-systems (delete "mips64el-linux" %supported-systems)))))) + (define-public stress-make (let ((commit "9e92dff8f0157f012aaf31de5b8b8112ad720100") (revision "1")) ;No official source distribution diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index 03f0ceaeee..b7e2c415fe 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -284,34 +284,6 @@ server and embedded PowerPC, and S390 guests.") '("libusb" "mesa" "sdl2" "spice" "virglrenderer" "gtk+" "usbredir" "libdrm" "libepoxy" "pulseaudio" "vde2"))))) -;; The GRUB test suite fails with later versions of Qemu, so we -;; keep it at 2.10 for now. See -;; . -;; This package is hidden since we do not backport updates to it. -(define-public qemu-minimal-2.10 - (hidden-package - (package - (inherit qemu-minimal) - (version "2.10.2") - (source (origin - (method url-fetch) - (uri (string-append "https://download.qemu.org/qemu-" - version ".tar.xz")) - (sha256 - (base32 - "17w21spvaxaidi2am5lpsln8yjpyp2zi3s3gc6nsxj5arlgamzgw")) - (patches - (search-patches "qemu-glibc-2.27.patch")))) - ;; qemu-minimal-2.10 needs Python 2. Remove below once no longer necessary. - (native-inputs `(("python-2" ,python-2) - ,@(fold alist-delete (package-native-inputs qemu-minimal) - '("python-wrapper" "python-sphinx")))) - (inputs - (fold alist-delete (package-inputs qemu-minimal) - ;; Disable seccomp support, because it's not required for the GRUB - ;; test suite, and because it fails with libseccomp 2.4.2 and later. - '("libseccomp")))))) - (define-public libosinfo (package (name "libosinfo")