get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 35137,
    "url": "http://patches.dpdk.org/api/patches/35137/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20180212161312.31795-1-pbhagavatula@caviumnetworks.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<20180212161312.31795-1-pbhagavatula@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180212161312.31795-1-pbhagavatula@caviumnetworks.com",
    "date": "2018-02-12T16:13:12",
    "name": "[dpdk-dev] devtools: add script to verify map files",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "95165e5e71bb370561215011e9d3d74270a87695",
    "submitter": {
        "id": 768,
        "url": "http://patches.dpdk.org/api/people/768/?format=api",
        "name": "Pavan Nikhilesh",
        "email": "pbhagavatula@caviumnetworks.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20180212161312.31795-1-pbhagavatula@caviumnetworks.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/35137/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/35137/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 221431B372;\n\tMon, 12 Feb 2018 17:14:14 +0100 (CET)",
            "from NAM01-SN1-obe.outbound.protection.outlook.com\n\t(mail-sn1nam01on0049.outbound.protection.outlook.com [104.47.32.49])\n\tby dpdk.org (Postfix) with ESMTP id A5DD61B36E\n\tfor <dev@dpdk.org>; Mon, 12 Feb 2018 17:14:12 +0100 (CET)",
            "from localhost.localdomain (111.93.218.67) by\n\tCY4PR07MB3463.namprd07.prod.outlook.com (2603:10b6:910:75::16) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.485.10;\n\tMon, 12 Feb 2018 16:14:09 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=0+d3RloA4g84mpSkmWoYbK0gm8VY8a95dKAVFJSVm8Y=;\n\tb=NLVh/C+sZnImNsCo5Bv0WgXTZySbQgGM6jHgv6y7euMruPh4hucPkTDTdtff7KFtFkQklUKY1Pv1eHUYnWAaVgg90ykZt6ULbbvZrfH96ccrGzJQ+sB2YEkQWzaohJ3zyuW50gYi9a3UL5jlQUHDGmJxDb48GxAU+zvRc8qXVpM=",
        "From": "Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>",
        "To": "thomas@monjalon.net",
        "Cc": "dev@dpdk.org,\n\tPavan Nikhilesh <pbhagavatula@caviumnetworks.com>",
        "Date": "Mon, 12 Feb 2018 21:43:12 +0530",
        "Message-Id": "<20180212161312.31795-1-pbhagavatula@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.16.1",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[111.93.218.67]",
        "X-ClientProxiedBy": "SG2PR0401CA0005.apcprd04.prod.outlook.com\n\t(2603:1096:3:1::15) To CY4PR07MB3463.namprd07.prod.outlook.com\n\t(2603:10b6:910:75::16)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "745f1075-bc67-447d-11cc-08d57233a6c2",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(7020095)(4652020)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603307)(7153060)(7193020);\n\tSRVR:CY4PR07MB3463; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; CY4PR07MB3463;\n\t3:/GK58cGzZmiCbkG4pE9uGEzAFqZcP7Sdctr2mXNqBF0rlx9NfpdrOa6NrNAd2Ue+TMog7SuM8eRJS1OZDYef4yJ2Z61s2heSyl5K6OintYQoeTZhE7xZJUIwYvUELxwG4A4wSSc1gtsEBimdv/8ll/VRmX4vLblJjr64i8IseiEX2fe0AoygMB1enSnsVDvaJmgEYZSsUB8dnLgy3m+Qg/FwqFm6TZ3l90Y5ZZWWCf0pRuOGNlhDcnHricEBWmuJ;\n\t25:Qhwhq6XlBD8enfG5Eux4wYyv7ys04ReGnCShoIWSWeWTfzDZz0Czsl3IuqonSikbuP25mjq2eIcApfsiI+AcLxynGGE6cl3ybphfZ6eRxrUnZqpyYeSGF9sMJQUdOc6KfAi2J2wjTPBcKpV20h945Jwcd2qsReN2lQDsmFSk3rUfhq2KppTs+Kbk8HFXJaRDuatJwPGpwsnZrcUnzSAvTtZxVWOJ/VYUCBnRNr0yo4Yn6v6UNFa6zwUFQCJCEpAYl3YTx7bjx8K45rqNdCTeBlvNrQR8vo2ogee4hhBKtWdCyiJ98YPP/Pwhs68MJCr2C6ilTm2VIdvZGYm4O6CyIQ==;\n\t31:iq0MfxUE3zcqfxILiR2iVKiSi6F0NRm8VffTAFnLbCic69cXrIhrbo9ca18WtndigTj9uSRUaqesd/SAYa3mEphNiI6StQ07gN9cTDHNA0WyQTTkFq4mCMiuTQDPPvgnK8WXKlJ5ZlhT97fQtsTcvP273FHA60kw2LckByQN/6zNspCsTouNj/irqJDWb8UpSW17IdSzxEI/4hK9YzHPEwOqnqQsYQKalVavcF3eabA=",
            "1; CY4PR07MB3463;\n\t20:ZbiN1884bDgrIY/Rv9QV5WLiFAsS5ybluB5DZQuUhqJTMMQCAB/l20sXEfcy9v5N6mCYXMx3uPqid/KQ8k6HkskhpM2nXpoyTDXCKg+CgMFFoKE2I2xBx0nFeUYl5KaO16D3WE1RleoZSLlCNGfx6xlEiMy/2JnQAKZWfmzR5QfrWWy/GNnCbRyL5UeIEAjBYkjpJ2Wem/vgVTxwzam6VwRr20kIzY1IqcLuFWABbuFDzWw5DUBCzhwsVc7lNQCzhLStI7GCGWXQ1q5a4QRG0gxjSF2liW31fBvNMDxqvhCLIBTrffkoLRDDzfMGLsNx/yeUEhKVd41Ynl3/t7a9pMAUSdczoI9amp//gCF+1SP+vjwDVpfFqLF0y/YAx+h8Elq5kd0pl3jJMwc/vdTjKNtgjg1UhChYDcLhEeE8Czedln9g6j5DP20ZL16xdUVq/aK3F359q3c95ogTbfC/23fPWDC1FDJmgxHdZziVZV/OtwNktvJTmQwJ/QOgAGk77whf2eawVK7EATa897EU0i9nKsrJ17UcaPJhRtQXvoV/5eOer9JecuKP6TRopJxOwRc8R12Q0l9nLSRp6HLUx+8baL2kNaCnwebZ57Rtoxo=;\n\t4:47X9M3+Fx6NJjLpyelnywnjwi4KwxQVfArjMh29fOrOgQ0h2oYCw1GBREelXHKuJb+8EZgSPshR2sGLV+LHg25cWI7YOVX3G4FCgqAs3w1iY1xQSwuJA7JEnEttgBN8//XFf9JnSsyPt2Ogg+mYMZUrYvQ5GiFt8tDNruma+t/PIvY81uwy77hMEMQvf6H2Edb4C/rwb/HdaP9KJl4nZ7uwMr+1n3Kio7tC1NKcW/8CPoQ/AN05waVr3TFePQzhd4xFUBhkNp29NqYFcqqFg/UOrRTTLYfytKveRlKMpTG0IxawEGeEwAEiGNmenRF+H",
            "=?us-ascii?Q?1; CY4PR07MB3463;\n\t23:6J2tL9CS5NyGSROvOM1loMQACq1L6zOGYLvm3pzlB?=\n\tnKqIIrVJ4wKddYfOa6u0P264NtGPdDesO82ROiflDxSvrSOpypl5sO6PTTWHML6TPfwZrbsSVFwYp4w5zceVj8ErO8CD/SOfX5O4v6NIQix0zrYH3f75hAJxt9XI1COWVxDS7CaV3HXa9Br0/lisK5aSlBpbU/tWT5rEYiqIWwtOm1sZGkzo/jM+qmOeWAvJEOrmr6z6b/MHQ5sHpxiaw3JUvhgScgxUhPL/QhBTZqMZjqOGuIoQb6L/DeLkq0m4kb1eXBtSEZJjp7BbzesGAqskWCXfTAFkkRQX0jegijevSDOUFd4SFyk5MRigT8YNQe8LM91IvjhEQhitycX1jK3Lx8CMiYLAQx/Mdm9bsXcDNLtnNlUdQXQ+1D9KwDoL1NxmHXx3PiRi4KOrsu85Q/xO77G2nKqzx8jhOz3BG+Yd9gHVuBEzKykRry2lvgNeevB4qaeRCGfH14X/J2lqX1dzcUtukkrffraeKIFqvbTTRE0OppzUlNFHFCWYbM0/mezqX09cxu7dBKVgeyd6xHsQPjyfrsMrccwVk/skwX1AaS+9NrWKxPtS9+16UEYndUjPP9yZLhOhueMAF0BC64K6vA+B0XoFt510dSxnGaZ15DE9WGy4ywg47YQK7d55mfdP3fmbGBooq+yg33T7jl+NQogtAbZj9djJPF3FbqqlrqU9sgZENcBYnN0LGJ3WUztqHuieMu2ZUgX29cfl0axPcMfsPVaRCAfftna1bOOaFb4zSfNEKybDMHzgqHhkt+Av48fr+ERNrg5saKW+zbDK/UK7ovm/apet9bc81aEnEKt0/aZsEpIdJ6GMFB1WGlmreQQXF9KkCpHsLzlQDmCGB1/blGITdKqqzUwTx6nVUdeCW34KFXutvCc9aCHE2Vt9iU2vap0EUvwx2qOR8zFqa7XpGMRdQgTFZmWC1hw4DujgOdzRIaQ5wmVqSwd81zAnDVWLBM3njkLqqknIwDq14cJKj1T9IX9cOya6ZjWKO4b0hkW2m+YRG/tbeEMWfS8V9EeeDy0HfsfmucV401ybao61XZ/CEw4Ir8RuQJmLe7qQibNgqeKLSwga8SK0yExfSujC4ywdIvGYe5ELFeruhwhRvBXKEVsL+cIiFdtrakmAGWEDpkFRAn2rc+Eyzod411Dt1jFXo68x91pfXat9M2TjttPpkstOXoN7LCb/UZaRPXTn1pBTZskKTHekdfqmM7Ls7HDrL/aImD5Fsr5",
            "1; CY4PR07MB3463;\n\t6:ce13kNp6d/z0LOVDGjBScsZsXH7xEFbZzW9EaBuAg8OoDGreQLpbPjl3Z4mnLf+bC8657wzIyC4ztwo12bPZ4mS8zt7/ahe9wqktDp7nsfVZOsZJKdS6tOzFB7Mp11oXpOU+AIHcPIjHMYjnuANvYjGnz/HgZTU8d+UtH4eJO9gTFM3+hZgjuxY8OeiWDgDYkn4TFK8/fkvhfh/OUwPvFqs07UxwQ6EWy1s+og01ZPKV5ZlwImUS96YnpoPhsqiFOENQZXYgSkyM8ldMEcwd09TdLkd5i2a7OyjoTZAU4XPO9jsi0xK6YhhWptI2vCpNdm0mjeZRX1vzbttqZZoNc4jcKEQtRC2LVuSTGuYxJw4=;\n\t5:+r94WHy2Icz7tvDFJNGI4D2AJjtw43z7ZRO+0px0uhD5MHnyELwWbIw8Yt85tV+MMVRTsM6DMOarTGA3G+dgVV94Bjfd1hJ1S4ShYGby6Gs/jTGXNafwv0pcqeP+/7CdF2qECOwsqwghLRpGzqVcRhzkcefB6NpLeAIDf7PT3lk=;\n\t24:Rq2DEfbTHPNWbPH18Qze799dBVW2qx9/xDPCoTf2BM8iSAvLlofYKAXt+bgZQxGGlH6QPqmG09Esh9KytqC+dSmezt32kLkHirWhDF6L6bU=;\n\t7:wQLURF02QJzl1p6OSe6m8OUBmcNw/uqI1RcibCpiKZ49G5K0XLUksBGQBEDrtkt5lTCxjgeQ92V+++Xk4f+qM6Qq/204Ccx6vP73xFpf8hXtC3XO9rgpXXRjg/TR+O9yDSK+YbGwYnzYHRXimhpSiFbfOwuL+kOaFB6TrbQMIM6MuNmyr5ro2daAugyHQpQ8iWX6/HdyfeVucZWAg+V99zCyGBDYywfchcnTMJriq5RZCj/MQkDC54D/LfkGzM10"
        ],
        "X-MS-TrafficTypeDiagnostic": "CY4PR07MB3463:",
        "X-Microsoft-Antispam-PRVS": "<CY4PR07MB3463E6C6DD3DD7F6DE98433880F70@CY4PR07MB3463.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(788757137089);",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(6040501)(2401047)(5005006)(8121501046)(10201501046)(3231101)(2400082)(944501161)(3002001)(93006095)(6041288)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123560045)(20161123562045)(6072148)(201708071742011);\n\tSRVR:CY4PR07MB3463; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB3463; ",
        "X-Forefront-PRVS": "0581B5AB35",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(6069001)(376002)(39380400002)(396003)(346002)(39850400004)(366004)(189003)(199004)(5660300001)(36756003)(6116002)(3846002)(1076002)(8676002)(105586002)(478600001)(7736002)(47776003)(81156014)(81166006)(6666003)(50466002)(68736007)(2361001)(6512007)(66066001)(97736004)(106356001)(107886003)(48376002)(8936002)(50226002)(2351001)(25786009)(6916009)(42882006)(316002)(4326008)(6486002)(2906002)(386003)(16586007)(6506007)(72206003)(53936002)(16526019)(186003)(5009440100003)(52116002)(1857600001)(51416003)(305945005)(6346003)(26005)(42262002);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB3463; H:localhost.localdomain;\n\tFPR:; \n\tSPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; ",
        "Received-SPF": "None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Pavan.Bhagavatula@cavium.com; ",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "12 Feb 2018 16:14:09.5365\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "745f1075-bc67-447d-11cc-08d57233a6c2",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "711e4ccf-2e9b-4bcf-a551-4094005b6194",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CY4PR07MB3463",
        "Subject": "[dpdk-dev]  [PATCH] devtools: add script to verify map files",
        "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://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This script checks for the symbols specified in the map files against\nthe symbols present in the map file directory.\nCurrently, the script checks for map files in drivers and lib directory.\n\nExample:\n./devtools/check-map.py\n\nThe following symbols are unused :\n\nMap file : /home/pavan/Work/clean/dpdk/drivers/mempool/dpaa/...\n['rte_dpaa_pool_table']\n\nMap file : /home/pavan/Work/clean/dpdk/drivers/bus/fslmc/...\n['qbman_get_version', 'qbman_swp_send_multiple']\n\n...\n\nSigned-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>\n---\n devtools/check-map.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++\n 1 file changed, 56 insertions(+)\n create mode 100755 devtools/check-map.py",
    "diff": "diff --git a/devtools/check-map.py b/devtools/check-map.py\nnew file mode 100755\nindex 000000000..a508469d6\n--- /dev/null\n+++ b/devtools/check-map.py\n@@ -0,0 +1,56 @@\n+#! /usr/bin/env python\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright(c) 2017 Cavium, Inc\n+#\n+\n+import subprocess\n+import re\n+import os\n+from glob import glob\n+\n+paths = ['drivers', 'lib']\n+map_files = []\n+\n+for path in paths:\n+    map_files = map_files + [y\n+                             for x in os.walk(os.environ['PWD'] + '/' + path)\n+                             for y in glob(os.path.join(x[0],\n+                                                        '*.map'))]\n+\n+print(\"\\nThe following symbols are unused : \\n\")\n+for map_file in map_files:\n+    path = os.path.dirname(os.path.abspath(map_file))\n+    with open(map_file) as f:\n+        map_content = [line.strip() for line in f]\n+    # Filter empty lines.\n+    map_content = list(filter(None, map_content))\n+    regex = re.compile(\n+            r\"\"\"\n+            \\bDPDK.*\\b |\n+            \\bglobal.*\\b |\n+            \\blocal.*\\b | \\}.* |\n+            \\bEXPERIMENTAL\\b |\n+            \\bper_lcore.*\\b\"\"\",\n+            flags=re.I | re.X | re.VERBOSE)\n+    filtered_map = filter(lambda i: not regex.search(i), map_content)\n+    filtered_map = [i for i in map_content if not regex.search(i)]\n+    filtered_map = [s.replace(';', '') for s in filtered_map]\n+    # Filter out known lines.\n+    if not filtered_map:\n+        continue\n+    not_found = []\n+    # Gerp in the map file directory for each symbol\n+    for map_symbol in filtered_map:\n+        try:\n+            op = subprocess.check_output(['grep', '-nr', '--exclude',\n+                                          os.path.basename(map_file),\n+                                          map_symbol,\n+                                          path])\n+        except subprocess.CalledProcessError as ex:\n+            not_found.append(map_symbol)\n+            rc = ex.returncode\n+            if rc != 1:\n+                raise\n+    if not_found:\n+        print(\"Map file : %s\" % map_file)\n+        print(\"%s\\n\" % not_found)\n",
    "prefixes": [
        "dpdk-dev"
    ]
}