get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 85037,
    "url": "https://patches.dpdk.org/api/patches/85037/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20201212233447.23154-4-dmitry.kozliuk@gmail.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20201212233447.23154-4-dmitry.kozliuk@gmail.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20201212233447.23154-4-dmitry.kozliuk@gmail.com",
    "date": "2020-12-12T23:34:46",
    "name": "[3/4] buildtools: support object file extraction for Windows",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "2002cdd13d9254578da1d519b33eeb3234e9c8a8",
    "submitter": {
        "id": 1581,
        "url": "https://patches.dpdk.org/api/people/1581/?format=api",
        "name": "Dmitry Kozlyuk",
        "email": "dmitry.kozliuk@gmail.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20201212233447.23154-4-dmitry.kozliuk@gmail.com/mbox/",
    "series": [
        {
            "id": 14274,
            "url": "https://patches.dpdk.org/api/series/14274/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=14274",
            "date": "2020-12-12T23:34:43",
            "name": "pmdinfogen: support Windows",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/14274/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/85037/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/85037/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 6E796A0524;\n\tSun, 13 Dec 2020 00:35:54 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 5B484C996;\n\tSun, 13 Dec 2020 00:35:04 +0100 (CET)",
            "from mail-lf1-f44.google.com (mail-lf1-f44.google.com\n [209.85.167.44]) by dpdk.org (Postfix) with ESMTP id 4B6B1C970\n for <dev@dpdk.org>; Sun, 13 Dec 2020 00:35:01 +0100 (CET)",
            "by mail-lf1-f44.google.com with SMTP id o17so17994698lfg.4\n for <dev@dpdk.org>; Sat, 12 Dec 2020 15:35:01 -0800 (PST)",
            "from localhost.localdomain (broadband-37-110-65-23.ip.moscow.rt.ru.\n [37.110.65.23])\n by smtp.gmail.com with ESMTPSA id b22sm1517930lfp.233.2020.12.12.15.34.58\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Sat, 12 Dec 2020 15:34:59 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n h=from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version:content-transfer-encoding;\n bh=PjsvFvoABiYseZIi32qiAhKd2MgNiqsJjiNS1U6BBv0=;\n b=F8Et0GVouFH8ZyqtWiOXU8ehToMqHG/sJvoZ4OYtiDRl7Ijd1QT3OI8KQtRjnkMItF\n bXa3aPbjgq7mPrzI3PgC9v409xJ6rHDh31JqG5kdzLept5PDh9O4Tjr9bU6vAHjoGA50\n ARn5pknoNeaVE6JgIkMkecm1qcWy+Z37HwYejdC+XI+8WY2o/eSz9q90FoFuEurI/Kh7\n 59zEMK8PR1e1mSXzG86QYSDckpdnVQkCiNcqoiM4eUAwvjnZ5IrWO0H/DcISuk7RbECu\n 7g7JhePvejx5QPT/EVMjbw/mAVf1FbNErQ/XPVMzlh/EWwaxtB+7VILAKfUCyVpxhgCQ\n D/CA==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20161025;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n :references:mime-version:content-transfer-encoding;\n bh=PjsvFvoABiYseZIi32qiAhKd2MgNiqsJjiNS1U6BBv0=;\n b=LEOyXxiWfDJyEM/WDDs2xelFkGPA5tQBhHfp2GNJghlFa9taielSE61zzGnKQsysT9\n 0iX0j9jSTAPuO0BgqRxHgelkPzuNiEPBhmSluEQBecxunTzpu2wUCdUvC9eYYPHnj5JA\n atK3oV9A7cVIqU7OcUffiAZ2AGm2HG5U8hbNjU3dc2Qro7cWY+Krv/gl9TUmiUcpzf2V\n ylqSJUk+bNR5iNB0I5er9KSR/ez37/xXVxzFZC+KZK5/CPltUKWReX/yV4ZwpC+fx/fP\n vtnKyHByEAxZxErKm9wtkyOVVl5gnE6TU5xTKpFQYw9nwM8045Sruwvkx8DY/f7zlqJm\n rwKw==",
        "X-Gm-Message-State": "AOAM533apIwtUg5k04tLYpoyEwHlL2/HzfkeTpZ9ni6NUiPrCDM5pjsd\n rA/rvZwcOaPEIe0jbiiZ1SJP9hipC0jQ0YCR",
        "X-Google-Smtp-Source": "\n ABdhPJzGKwzSoMQo5/8UOmncIeatenuPsQbDetFfppNRcFY2GpuBJRlqi1G2pzY2bvqTV823GPqeJQ==",
        "X-Received": "by 2002:a19:54c:: with SMTP id 73mr7162196lff.551.1607816099561;\n Sat, 12 Dec 2020 15:34:59 -0800 (PST)",
        "From": "Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>",
        "To": "dev@dpdk.org",
        "Cc": "Narcisa Ana Maria Vasile <navasile@linux.microsoft.com>,\n Pallavi Kadam <pallavi.kadam@intel.com>,\n Dmitry Malloy <dmitrym@microsoft.com>,\n Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>,\n Bruce Richardson <bruce.richardson@intel.com>,\n Neil Horman <nhorman@tuxdriver.com>",
        "Date": "Sun, 13 Dec 2020 02:34:46 +0300",
        "Message-Id": "<20201212233447.23154-4-dmitry.kozliuk@gmail.com>",
        "X-Mailer": "git-send-email 2.29.2",
        "In-Reply-To": "<20201212233447.23154-1-dmitry.kozliuk@gmail.com>",
        "References": "<20201212233447.23154-1-dmitry.kozliuk@gmail.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH 3/4] buildtools: support object file extraction\n\tfor Windows",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "clang archiver tool is llvm-ar on Windows and ar on other platforms.\nMinGW always uses ar. Replace shell script (Unix-only) that calls ar\nwith a Python script (OS-independent) that calls an appropriate archiver\ntool selected at configuration time. Move the logic not to generate\nempty sources into pmdinfogen.\n\nSigned-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>\n---\nStdin and stdout are not longer used for input and output. Code to\nhandle that could be removed, but maybe it's useful for someone.\n\n buildtools/gen-pmdinfo-cfile.py | 19 +++++++++++++++++++\n buildtools/gen-pmdinfo-cfile.sh | 14 --------------\n buildtools/meson.build          | 10 ++++++++--\n buildtools/pmdinfogen.py        |  7 +++++++\n 4 files changed, 34 insertions(+), 16 deletions(-)\n create mode 100644 buildtools/gen-pmdinfo-cfile.py\n delete mode 100755 buildtools/gen-pmdinfo-cfile.sh",
    "diff": "diff --git a/buildtools/gen-pmdinfo-cfile.py b/buildtools/gen-pmdinfo-cfile.py\nnew file mode 100644\nindex 000000000..f1f289ffe\n--- /dev/null\n+++ b/buildtools/gen-pmdinfo-cfile.py\n@@ -0,0 +1,19 @@\n+#!/usr/bin/env python3\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright (c) 2020 Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>\n+\n+import os\n+import subprocess\n+import sys\n+import tempfile\n+\n+_, ar, archive, output, *pmdinfogen = sys.argv\n+with tempfile.TemporaryDirectory() as temp:\n+    proc = subprocess.run(\n+        # Don't use \"ar p\", because its output is corrupted on Windows.\n+        [ar, \"xv\", os.path.abspath(archive)], capture_output=True, check=True, cwd=temp\n+    )\n+    lines = proc.stdout.decode().splitlines()\n+    names = [line[len(\"x - \") :] for line in lines]\n+    paths = [os.path.join(temp, name) for name in names]\n+    subprocess.run(pmdinfogen + paths + [output], check=True)\ndiff --git a/buildtools/gen-pmdinfo-cfile.sh b/buildtools/gen-pmdinfo-cfile.sh\ndeleted file mode 100755\nindex 109ee461e..000000000\n--- a/buildtools/gen-pmdinfo-cfile.sh\n+++ /dev/null\n@@ -1,14 +0,0 @@\n-#! /bin/sh\n-# SPDX-License-Identifier: BSD-3-Clause\n-# Copyright(c) 2017 Intel Corporation\n-\n-arfile=$1\n-output=$2\n-shift 2\n-pmdinfogen=$*\n-\n-# The generated file must not be empty if compiled in pedantic mode\n-echo 'static __attribute__((unused)) const char *generator = \"'$0'\";' > $output\n-for ofile in `ar t $arfile` ; do\n-\tar p $arfile $ofile | $pmdinfogen - - >> $output\n-done\ndiff --git a/buildtools/meson.build b/buildtools/meson.build\nindex 23cefd4be..0a2e91a7b 100644\n--- a/buildtools/meson.build\n+++ b/buildtools/meson.build\n@@ -2,7 +2,6 @@\n # Copyright(c) 2017-2019 Intel Corporation\n \n pkgconf = find_program('pkg-config', 'pkgconf', required: false)\n-pmdinfo = find_program('gen-pmdinfo-cfile.sh')\n list_dir_globs = find_program('list-dir-globs.py')\n check_symbols = find_program('check-symbols.sh')\n ldflags_ibverbs_static = find_program('options-ibverbs-static.sh')\n@@ -18,11 +17,18 @@ endif\n map_to_win_cmd = py3 + files('map_to_win.py')\n sphinx_wrapper = py3 + files('call-sphinx-build.py')\n \n-# select object file format\n+# select library and object file format\n+pmdinfo = py3 + files('gen-pmdinfo-cfile.py')\n pmdinfogen = py3 + files('pmdinfogen.py')\n if host_machine.system() == 'windows'\n+\tif cc.get_id() == 'gcc'\n+\t\tpmdinfo += 'ar'\n+\telse\n+\t\tpmdinfo += 'llvm-ar'\n+\tendif\n \tpmdinfogen += 'coff'\n else\n+\tpmdinfo += 'ar'\n \tpmdinfogen += 'elf'\n endif\n \ndiff --git a/buildtools/pmdinfogen.py b/buildtools/pmdinfogen.py\nindex 3209510eb..56f5f488c 100755\n--- a/buildtools/pmdinfogen.py\n+++ b/buildtools/pmdinfogen.py\n@@ -230,12 +230,19 @@ def open_output(path):\n     return open(path, \"w\")\n \n \n+def write_header(output):\n+    output.write(\n+        \"static __attribute__((unused)) const char *generator = \\\"%s\\\";\\n\" % sys.argv[0]\n+    )\n+\n+\n def main():\n     args = parse_args()\n     if args.input.count('-') > 1:\n         raise Exception(\"'-' input cannot be used multiple times\")\n \n     output = open_output(args.output)\n+    write_header(output)\n     for path in args.input:\n         image = load_image(args.format, path)\n         drivers = load_drivers(image)\n",
    "prefixes": [
        "3/4"
    ]
}