get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.0/patches/2175340/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2175340,
    "url": "http://patchwork.ozlabs.org/api/1.0/patches/2175340/?format=api",
    "project": {
        "id": 27,
        "url": "http://patchwork.ozlabs.org/api/1.0/projects/27/?format=api",
        "name": "Buildroot development",
        "link_name": "buildroot",
        "list_id": "buildroot.buildroot.org",
        "list_email": "buildroot@buildroot.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20251217192330.3769476-3-bernd@kuhls.net>",
    "date": "2025-12-17T19:23:13",
    "name": "[v3,02/18] package/dmraid: remove package",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "c841973b3ac14698b28a6b25861f94927d6a2486",
    "submitter": {
        "id": 86624,
        "url": "http://patchwork.ozlabs.org/api/1.0/people/86624/?format=api",
        "name": "Bernd Kuhls",
        "email": "bernd@kuhls.net"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/buildroot/patch/20251217192330.3769476-3-bernd@kuhls.net/mbox/",
    "series": [
        {
            "id": 485754,
            "url": "http://patchwork.ozlabs.org/api/1.0/series/485754/?format=api",
            "date": "2025-12-17T19:23:11",
            "name": "Remove packages",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/485754/mbox/"
        }
    ],
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2175340/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<buildroot-bounces@buildroot.org>",
        "X-Original-To": [
            "incoming-buildroot@patchwork.ozlabs.org",
            "buildroot@buildroot.org"
        ],
        "Delivered-To": [
            "patchwork-incoming-buildroot@legolas.ozlabs.org",
            "buildroot@buildroot.org"
        ],
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=buildroot.org header.i=@buildroot.org\n header.a=rsa-sha256 header.s=default header.b=RRPeZnH/;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=buildroot.org\n (client-ip=140.211.166.137; helo=smtp4.osuosl.org;\n envelope-from=buildroot-bounces@buildroot.org; receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4dWkHn09Csz1xpw\n\tfor <incoming-buildroot@patchwork.ozlabs.org>;\n Thu, 18 Dec 2025 06:24:05 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 7095E40D60;\n\tWed, 17 Dec 2025 19:24:02 +0000 (UTC)",
            "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id GpM_DmQoUzVX; Wed, 17 Dec 2025 19:24:01 +0000 (UTC)",
            "from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 4A65340EE2;\n\tWed, 17 Dec 2025 19:24:01 +0000 (UTC)",
            "from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n by lists1.osuosl.org (Postfix) with ESMTP id 2B1DA361\n for <buildroot@buildroot.org>; Wed, 17 Dec 2025 19:23:59 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n by smtp3.osuosl.org (Postfix) with ESMTP id 1C9DC60BAD\n for <buildroot@buildroot.org>; Wed, 17 Dec 2025 19:23:59 +0000 (UTC)",
            "from smtp3.osuosl.org ([127.0.0.1])\n by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id KFbB6VY4mPWl for <buildroot@buildroot.org>;\n Wed, 17 Dec 2025 19:23:58 +0000 (UTC)",
            "from dd20012.kasserver.com (dd20012.kasserver.com [85.13.140.57])\n by smtp3.osuosl.org (Postfix) with ESMTPS id 9F3B160B34\n for <buildroot@buildroot.org>; Wed, 17 Dec 2025 19:23:57 +0000 (UTC)",
            "from fli4l.lan.fli4l (p54a1ba4b.dip0.t-ipconnect.de [84.161.186.75])\n by dd20012.kasserver.com (Postfix) with ESMTPSA id 27419A4C4609;\n Wed, 17 Dec 2025 20:23:31 +0100 (CET)",
            "from bruckner.lan.fli4l ([192.168.1.1]:51964)\n by fli4l.lan.fli4l with esmtp (Exim 4.99)\n (envelope-from <bernd@kuhls.net>) id 1vVx7S-000000000pX-1Ezb;\n Wed, 17 Dec 2025 19:23:30 +0000"
        ],
        "X-Virus-Scanned": [
            "amavis at osuosl.org",
            "amavis at osuosl.org"
        ],
        "X-Comment": "SPF check N/A for local connections - client-ip=140.211.166.142;\n helo=lists1.osuosl.org; envelope-from=buildroot-bounces@buildroot.org;\n receiver=<UNKNOWN> ",
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 smtp4.osuosl.org 4A65340EE2",
            "OpenDKIM Filter v2.11.0 smtp3.osuosl.org 9F3B160B34"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=buildroot.org;\n\ts=default; t=1765999441;\n\tbh=lHLB1+eWvyhLmI2dDWlzhW0S3zM2c+oJsKPUxOPncVg=;\n\th=From:To:Cc:Date:In-Reply-To:References:Subject:List-Id:\n\t List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:\n\t From;\n\tb=RRPeZnH/x98wrfYmOWnH4lYk3lcljGJnfFM79q0VzF8a9GvaWNWC9oTEKQXco0rWP\n\t 7nImPpJ963UE6XrD2TPajZyN/TINoKOK/36KytAIqO4ljdfbcYWI2VNOS+Mdrcb5xl\n\t 7vj1n0YjvrbjEaYYosauRt7GkyJsOJJOe+LqOsgQdBdStI+id0AZI/blnW1xRN8VpL\n\t DBZh9EwE23pkolRxkb/fbl5Vk1cTeZWibUBkZxIf+jTTGE5+ORJcks920LUHcAo+uX\n\t /nwV6qobWt0I1qkQgL1Ik+HZtZ3FW5BZlYTRKfVT72a3qBuqFv0e0Iv+wAKP0vi9e/\n\t KsQ7c4b2YoyQA==",
        "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=85.13.140.57;\n helo=dd20012.kasserver.com; envelope-from=bernd@kuhls.net;\n receiver=<UNKNOWN>",
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp3.osuosl.org 9F3B160B34",
        "From": "Bernd Kuhls <bernd@kuhls.net>",
        "To": "buildroot@buildroot.org",
        "Cc": "Guillaume William Brs <guillaume.bressaix@gmail.com>,\n Julien Olivain <ju.o@free.fr>, Gilles Talis <gilles.talis@gmail.com>,\n Rahul Bedarkar <rahulbedarkar89@gmail.com>,\n Jianhui Zhao <zhaojh329@gmail.com>, Romain Naour <romain.naour@gmail.com>,\n Jan Heylen <jan.heylen@nokia.com>,\n Zoltan Gyarmati <mr.zoltan.gyarmati@gmail.com>,\n Simon Dawson <spdawson@gmail.com>, Ben Boeckel <mathstuf@gmail.com>",
        "Date": "Wed, 17 Dec 2025 20:23:13 +0100",
        "Message-ID": "<20251217192330.3769476-3-bernd@kuhls.net>",
        "X-Mailer": "git-send-email 2.47.3",
        "In-Reply-To": "<20251217192330.3769476-1-bernd@kuhls.net>",
        "References": "<20251217192330.3769476-1-bernd@kuhls.net>",
        "MIME-Version": "1.0",
        "X-Spamd-Bar": "++",
        "X-Mailman-Original-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=kuhls.net;\n s=kas202511301023; t=1765999411;\n bh=lIphA9YVfvhUSn+muFxDm+D1ACYy9K4oMkbuFhH77+s=;\n h=From:To:Cc:Subject:Date:In-Reply-To:From;\n b=uFtaeBFcnwn99JHm68IVHDk/Wy+xc6S9MtQBHzobceCkoNi1wGQp7WLsUnix/q8il\n aK3VG+R8RSBQRo1IvXCuL3l7HZ38ofPN35pjzjf55CKBf9+npQRcuedTmHsFu+F5PB\n JvAI9TlBDnH2CNMOqwZczr02PLzgBmxjlhpKfkv92OUeUWzCGmQZqFsvkPZPxToeAG\n la/8v3+YaEEysykd+dpEA484jafy2WkHjwQ9Og5f0WD4D6VoDtGlQXyl/kDxHzJiN/\n 49Yj+EDxhpONVVdWpa/AoCkqDGidXNfOFgMEWRBc9Qk10QI61aFXvtgZV83wkoKC1s\n 6FwCcF55fdiBw==",
        "X-Mailman-Original-Authentication-Results": [
            "smtp3.osuosl.org;\n dmarc=pass (p=none dis=none)\n header.from=kuhls.net",
            "smtp3.osuosl.org;\n dkim=pass (2048-bit key) header.d=kuhls.net header.i=@kuhls.net\n header.a=rsa-sha256 header.s=kas202511301023 header.b=uFtaeBFc"
        ],
        "Subject": "[Buildroot] [PATCH v3 02/18] package/dmraid: remove package",
        "X-BeenThere": "buildroot@buildroot.org",
        "X-Mailman-Version": "2.1.30",
        "Precedence": "list",
        "List-Id": "Discussion and development of buildroot <buildroot.buildroot.org>",
        "List-Unsubscribe": "<https://lists.buildroot.org/mailman/options/buildroot>,\n <mailto:buildroot-request@buildroot.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.buildroot.org/pipermail/buildroot/>",
        "List-Post": "<mailto:buildroot@buildroot.org>",
        "List-Help": "<mailto:buildroot-request@buildroot.org?subject=help>",
        "List-Subscribe": "<https://lists.buildroot.org/mailman/listinfo/buildroot>,\n <mailto:buildroot-request@buildroot.org?subject=subscribe>",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "buildroot-bounces@buildroot.org",
        "Sender": "\"buildroot\" <buildroot-bounces@buildroot.org>"
    },
    "content": "Package was abandoned by Fedora:\nhttps://src.fedoraproject.org/rpms/dmraid/c/2a27f40357e52d5497a0245b05624ce37b8474e6?branch=rawhide\n\nBuild is broken with newer gcc.\n\nFixes:\nhttps://autobuild.buildroot.net/results/c79/c79232526ded1d6f1f0f8925f006d7613e22be89/\n\nSigned-off-by: Bernd Kuhls <bernd@kuhls.net>\n---\n .checkpackageignore                           |  2 -\n Config.in.legacy                              |  6 ++\n DEVELOPERS                                    |  2 -\n package/Config.in                             |  1 -\n .../0001-fix-compilation-under-musl.patch     | 47 ----------\n package/dmraid/Config.in                      | 19 ----\n package/dmraid/S20dmraid                      | 29 ------\n package/dmraid/dmraid.hash                    |  5 -\n package/dmraid/dmraid.mk                      | 25 -----\n .../testing/tests/package/test_ddrescue.py    | 94 -------------------\n .../test_ddrescue/linux-ddrescue.fragment     |  4 -\n 11 files changed, 6 insertions(+), 228 deletions(-)\n delete mode 100644 package/dmraid/0001-fix-compilation-under-musl.patch\n delete mode 100644 package/dmraid/Config.in\n delete mode 100644 package/dmraid/S20dmraid\n delete mode 100644 package/dmraid/dmraid.hash\n delete mode 100644 package/dmraid/dmraid.mk\n delete mode 100644 support/testing/tests/package/test_ddrescue.py\n delete mode 100644 support/testing/tests/package/test_ddrescue/linux-ddrescue.fragment",
    "diff": "diff --git a/.checkpackageignore b/.checkpackageignore\nindex 7a03a5ca9b..b2bf4d0403 100644\n--- a/.checkpackageignore\n+++ b/.checkpackageignore\n@@ -318,8 +318,6 @@ package/dmalloc/0001-configure-fix-build-on-mips.patch lib_patch.Upstream\n package/dmalloc/0003-configure-allow-overriding-some-tests.patch lib_patch.Upstream\n package/dmalloc/0004-Makefile-use-the-configure-detected-or-user-supplied.patch lib_patch.Upstream\n package/dmalloc/0005-configure-use-LD-instead-of-hard-coding-ld.patch lib_patch.Upstream\n-package/dmraid/0001-fix-compilation-under-musl.patch lib_patch.Upstream\n-package/dmraid/S20dmraid lib_sysv.Variables\n package/docopt-cpp/0001-only-build-one-target-use-BUILD_SHARED_LIBS-where-appropriate.patch lib_patch.Upstream\n package/domoticz/S99domoticz Shellcheck\n package/dovecot/0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch lib_patch.Upstream\ndiff --git a/Config.in.legacy b/Config.in.legacy\nindex 29b3316a7a..c8b5b14f4c 100644\n--- a/Config.in.legacy\n+++ b/Config.in.legacy\n@@ -146,6 +146,12 @@ endif\n \n comment \"Legacy options removed in 2026.02\"\n \n+config BR2_PACKAGE_DMRAID\n+\tbool \"dmraid has been removed\"\n+\tselect BR2_LEGACY\n+\thelp\n+\t  dmraid is unmaintained and has been removed\n+\n config BR2_PACKAGE_LIBNIDS\n \tbool \"libnids has been removed\"\n \tselect BR2_LEGACY\ndiff --git a/DEVELOPERS b/DEVELOPERS\nindex 098370af6e..f2ff1a9c05 100644\n--- a/DEVELOPERS\n+++ b/DEVELOPERS\n@@ -1873,8 +1873,6 @@ F:\tsupport/testing/tests/package/test_compressor_base.py\n F:\tsupport/testing/tests/package/test_coremark.py\n F:\tsupport/testing/tests/package/test_cryptsetup.py\n F:\tsupport/testing/tests/package/test_cryptsetup/\n-F:\tsupport/testing/tests/package/test_ddrescue.py\n-F:\tsupport/testing/tests/package/test_ddrescue/\n F:\tsupport/testing/tests/package/test_dieharder.py\n F:\tsupport/testing/tests/package/test_dmidecode.py\n F:\tsupport/testing/tests/package/test_dos2unix.py\ndiff --git a/package/Config.in b/package/Config.in\nindex 80cd4c0466..2df509047c 100644\n--- a/package/Config.in\n+++ b/package/Config.in\n@@ -490,7 +490,6 @@ endmenu\n \tsource \"package/dfu-programmer/Config.in\"\n \tsource \"package/dfu-util/Config.in\"\n \tsource \"package/dmidecode/Config.in\"\n-\tsource \"package/dmraid/Config.in\"\n \tsource \"package/dt-utils/Config.in\"\n \tsource \"package/dtbocfg/Config.in\"\n \tsource \"package/dtv-scan-tables/Config.in\"\ndiff --git a/package/dmraid/0001-fix-compilation-under-musl.patch b/package/dmraid/0001-fix-compilation-under-musl.patch\ndeleted file mode 100644\nindex 3d45641b8d..0000000000\n--- a/package/dmraid/0001-fix-compilation-under-musl.patch\n+++ /dev/null\n@@ -1,47 +0,0 @@\n-From 89c7fc15e064dd407e6d5ccefe78985b86b8a036 Mon Sep 17 00:00:00 2001\n-From: Brendan Heading <brendanheading@gmail.com>\n-Date: Tue, 1 Sep 2015 12:26:36 +0100\n-Subject: [PATCH] fix compilation under musl\n-\n-Patch borrowed from Void Linux :\n-\n-https://github.com/voidlinux/void-packages/blob/master/srcpkgs/dmraid/patches/25_musl-libc.patch\n-\n-Upstream package appears dormant, no mailing list and no\n-maintenance releases since Nov 2010.\n-\n-Upstream-Status: dormant\n-Signed-off-by: Brendan Heading <brendanheading@gmail.com>\n-\n----\n- 1.0.0.rc16-3/dmraid/include/dmraid/misc.h | 1 +\n- 1.0.0.rc16-3/dmraid/lib/device/scan.c     | 1 +\n- 2 files changed, 2 insertions(+)\n-\n-diff --git a/1.0.0.rc16-3/dmraid/include/dmraid/misc.h b/1.0.0.rc16-3/dmraid/include/dmraid/misc.h\n-index 247a68e..1b1dfdf 100644\n---- a/1.0.0.rc16-3/dmraid/include/dmraid/misc.h\n-+++ b/1.0.0.rc16-3/dmraid/include/dmraid/misc.h\n-@@ -10,6 +10,7 @@\n- \n- #ifndef _MISC_H_\n- #define _MISC_H_\n-+#include <fcntl.h>\n- \n- #define DM_ASSERT(__cond) do { if (!(__cond)) { printf(\"ASSERT file:%s line:%d fuction:%s cond: %s\\n\", __FILE__, __LINE__, __FUNCTION__, #__cond); } } while(0);\n- \n-diff --git a/1.0.0.rc16-3/dmraid/lib/device/scan.c b/1.0.0.rc16-3/dmraid/lib/device/scan.c\n-index a040d53..6897146 100644\n---- a/1.0.0.rc16-3/dmraid/lib/device/scan.c\n-+++ b/1.0.0.rc16-3/dmraid/lib/device/scan.c\n-@@ -10,6 +10,7 @@\n- # include <dirent.h>\n- # include <paths.h>\n- #else\n-+# include <paths.h>\n- # include <dirent.h>\n- # include <mntent.h>\n- #endif\n--- \n-2.4.3\n-\ndiff --git a/package/dmraid/Config.in b/package/dmraid/Config.in\ndeleted file mode 100644\nindex ad86334f1e..0000000000\n--- a/package/dmraid/Config.in\n+++ /dev/null\n@@ -1,19 +0,0 @@\n-config BR2_PACKAGE_DMRAID\n-\tbool \"dmraid\"\n-\tdepends on BR2_TOOLCHAIN_HAS_THREADS # lvm2\n-\tdepends on BR2_USE_MMU # lvm2\n-\tdepends on !BR2_STATIC_LIBS # lvm2\n-\tselect BR2_PACKAGE_LVM2\n-\thelp\n-\t  dmraid discovers, activates, deactivates and displays\n-\t  properties of software RAID sets (eg, ATARAID) and contained\n-\t  DOS partitions.\n-\n-\t  dmraid uses the Linux device-mapper to create devices with\n-\t  respective mappings for the ATARAID sets discovered.\n-\n-\t  https://people.redhat.com/~heinzm/sw/dmraid/\n-\n-comment \"dmraid needs a toolchain w/ threads, dynamic library\"\n-\tdepends on BR2_USE_MMU\n-\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\ndiff --git a/package/dmraid/S20dmraid b/package/dmraid/S20dmraid\ndeleted file mode 100644\nindex b3bfdcc84b..0000000000\n--- a/package/dmraid/S20dmraid\n+++ /dev/null\n@@ -1,29 +0,0 @@\n-#!/bin/sh\n-\n-set -e\n-\n-# try to load module in case that hasn't been done yet\n-modprobe dm-mod >/dev/null 2>&1\n-\n-case \"$1\" in\n-\tstart|\"\")\n-\t\techo \"Setting up DMRAID devices...\"\n-\t\t/usr/sbin/dmraid --activate yes --ignorelocking --verbose\n-\t\t;;\n-\n-\tstop)\n-\t\techo \"Shutting down DMRAID devices... \"\n-\t\t/usr/sbin/dmraid --activate no --ignorelocking --verbose\n-\t\t;;\n-\n-\trestart|force-reload)\n-\t\t$0 stop\n-\t\tsleep 1\n-\t\t$0 start\n-\t\t;;\n-\n-\t*)\n-\t\techo \"Usage: dmraid {start|stop|restart|force-reload}\"\n-\t\texit 1\n-\t\t;;\n-esac\ndiff --git a/package/dmraid/dmraid.hash b/package/dmraid/dmraid.hash\ndeleted file mode 100644\nindex 0f30864254..0000000000\n--- a/package/dmraid/dmraid.hash\n+++ /dev/null\n@@ -1,5 +0,0 @@\n-# From https://people.redhat.com/~heinzm/sw/dmraid/src/dmraid-1.0.0.rc16-3.tar.bz2.md5.sum\n-md5  819338fcef98e8e25819f0516722beeb  dmraid-1.0.0.rc16-3.tar.bz2\n-# locally computed\n-sha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  1.0.0.rc16-3/dmraid/LICENSE_GPL\n-sha256  4bc391fcf852e03c3a7564cb146af6e47717562eed296b28bce123ee1b0396b8  1.0.0.rc16-3/dmraid/LICENSE\ndiff --git a/package/dmraid/dmraid.mk b/package/dmraid/dmraid.mk\ndeleted file mode 100644\nindex dca9195ef6..0000000000\n--- a/package/dmraid/dmraid.mk\n+++ /dev/null\n@@ -1,25 +0,0 @@\n-################################################################################\n-#\n-# dmraid\n-#\n-################################################################################\n-\n-DMRAID_VERSION = 1.0.0.rc16-3\n-DMRAID_SOURCE = dmraid-$(DMRAID_VERSION).tar.bz2\n-DMRAID_SITE = https://people.redhat.com/~heinzm/sw/dmraid/src\n-DMRAID_SUBDIR = $(DMRAID_VERSION)/dmraid\n-# lib and tools race with parallel make\n-DMRAID_MAKE = $(MAKE1)\n-DMRAID_INSTALL_STAGING = YES\n-DMRAID_LICENSE = GPL-2.0\n-DMRAID_LICENSE_FILES = $(DMRAID_SUBDIR)/LICENSE_GPL $(DMRAID_SUBDIR)/LICENSE\n-DMRAID_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) CFLAGS=\"$(TARGET_CFLAGS) -fPIC\"\n-\n-DMRAID_DEPENDENCIES = lvm2\n-\n-define DMRAID_INSTALL_INIT_SYSV\n-\t$(INSTALL) -D -m 0755 package/dmraid/S20dmraid \\\n-\t\t$(TARGET_DIR)/etc/init.d/S20dmraid\n-endef\n-\n-$(eval $(autotools-package))\ndiff --git a/support/testing/tests/package/test_ddrescue.py b/support/testing/tests/package/test_ddrescue.py\ndeleted file mode 100644\nindex 989abc8f01..0000000000\n--- a/support/testing/tests/package/test_ddrescue.py\n+++ /dev/null\n@@ -1,94 +0,0 @@\n-import os\n-\n-import infra.basetest\n-\n-\n-class TestDdrescue(infra.basetest.BRTest):\n-\n-    # A specific configuration is needed for testing ddrescue:\n-    # - A kernel config fragment enables loop blk dev and device\n-    #   mapper dm-dust, which are used to simulate a failing storage\n-    #   block device.\n-    # - dmraid user space package is needed to configure dm-dust\n-    config = \\\n-        \"\"\"\n-        BR2_aarch64=y\n-        BR2_TOOLCHAIN_EXTERNAL=y\n-        BR2_TARGET_GENERIC_GETTY_PORT=\"ttyAMA0\"\n-        BR2_LINUX_KERNEL=y\n-        BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n-        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"6.1.15\"\n-        BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y\n-        BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=\"board/qemu/aarch64-virt/linux.config\"\n-        BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES=\"{}\"\n-        BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y\n-        BR2_PACKAGE_DDRESCUE=y\n-        BR2_PACKAGE_DMRAID=y\n-        BR2_TARGET_ROOTFS_CPIO=y\n-        BR2_TARGET_ROOTFS_CPIO_GZIP=y\n-        # BR2_TARGET_ROOTFS_TAR is not set\n-        \"\"\".format(\n-            infra.filepath(\"tests/package/test_ddrescue/linux-ddrescue.fragment\")\n-        )\n-\n-    def test_run(self):\n-        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio.gz\")\n-        kern = os.path.join(self.builddir, \"images\", \"Image\")\n-        self.emulator.boot(arch=\"aarch64\",\n-                           kernel=kern,\n-                           kernel_cmdline=[\"console=ttyAMA0\"],\n-                           options=[\"-M\", \"virt\", \"-cpu\", \"cortex-a57\", \"-m\", \"256M\", \"-initrd\", img])\n-        self.emulator.login()\n-\n-        # Test variables:\n-        dev_img = \"/tmp/dev.img\"\n-        lo_dev = \"/dev/loop0\"\n-        dm_dev_name = \"dust0\"\n-        dm_dev = f\"/dev/mapper/{dm_dev_name}\"\n-        ddrescue_img = \"/tmp/ddrescue.img\"\n-\n-        # Test the program can execute\n-        self.assertRunOk(\"ddrescue --version\")\n-\n-        # Create a 1MB file of zeroes for initial loopback block device\n-        self.assertRunOk(f\"dd if=/dev/zero of={dev_img} bs=1M count=1\")\n-\n-        # Setup lookback block device\n-        self.assertRunOk(f\"losetup {lo_dev} {dev_img}\")\n-\n-        # Create and setup dm-dust to simulate a failing block device\n-        # The dev_img file is 1MB: 2048 blocks of 512 bytes each\n-        self.assertRunOk(f\"dmsetup create {dm_dev_name} --table '0 2048 dust {lo_dev} 0 512'\")\n-\n-        # Add few bad blocks and enable I/O error emulation\n-        for badblock in [30, 40, 50, 60]:\n-            self.assertRunOk(f\"dmsetup message {dm_dev_name} 0 addbadblock {badblock}\")\n-        self.assertRunOk(f\"dmsetup message {dm_dev_name} 0 enable\")\n-\n-        # Show device mapper status, to make debugging easier\n-        self.assertRunOk(f\"dmsetup status {dm_dev_name}\")\n-\n-        # A normal 'dd' is expected to fail with I/O error\n-        cmd = f\"dd if={dm_dev} of=/dev/null bs=512\"\n-        _, exit_code = self.emulator.run(cmd)\n-        self.assertNotEqual(exit_code, 0)\n-\n-        # Where a normal 'dd' fails, 'ddrescue' is expected to succeed\n-        self.assertRunOk(f\"ddrescue {dm_dev} {ddrescue_img}\")\n-\n-        # ddrescue does not normally write any output data when there\n-        # is I/O error on the input. The intent is to preserve any\n-        # data that could have been read in a previous pass. There is\n-        # one exception, when the output is a non-existing regular\n-        # file, ddrescue will initialize it with zeroes the first\n-        # time. Since the original image file was also including\n-        # zeroes, the recovered image is expected to be the same as\n-        # the original one. See ddrescue manual:\n-        # https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html#Introduction\n-        # \"Ddrescue does not write zeros to the output when it finds\n-        # bad sectors in the input, and does not truncate the output\n-        # file if not asked to.\"\n-        # https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html#Algorithm\n-        # \"If the output file is a regular file created by ddrescue,\n-        # the areas marked as bad-sector will contain zeros.\"\n-        self.assertRunOk(f\"cmp {dev_img} {ddrescue_img}\")\ndiff --git a/support/testing/tests/package/test_ddrescue/linux-ddrescue.fragment b/support/testing/tests/package/test_ddrescue/linux-ddrescue.fragment\ndeleted file mode 100644\nindex 5cbe18a89f..0000000000\n--- a/support/testing/tests/package/test_ddrescue/linux-ddrescue.fragment\n+++ /dev/null\n@@ -1,4 +0,0 @@\n-CONFIG_BLK_DEV_LOOP=y\n-CONFIG_MD=y\n-CONFIG_BLK_DEV_DM=y\n-CONFIG_DM_DUST=y\n",
    "prefixes": [
        "v3",
        "02/18"
    ]
}