get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 58843,
    "url": "https://patches.dpdk.org/api/patches/58843/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20190906121955.24046-1-robin.jarry@6wind.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": "<20190906121955.24046-1-robin.jarry@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190906121955.24046-1-robin.jarry@6wind.com",
    "date": "2019-09-06T12:19:55",
    "name": "usertools: fix python 3 support of dpdk-pmdinfo.py",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "c870c27db0b74095ce5ea678eafc1111155387e1",
    "submitter": {
        "id": 400,
        "url": "https://patches.dpdk.org/api/people/400/?format=api",
        "name": "Robin Jarry",
        "email": "robin.jarry@6wind.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/20190906121955.24046-1-robin.jarry@6wind.com/mbox/",
    "series": [
        {
            "id": 6299,
            "url": "https://patches.dpdk.org/api/series/6299/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=6299",
            "date": "2019-09-06T12:19:55",
            "name": "usertools: fix python 3 support of dpdk-pmdinfo.py",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/6299/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/58843/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/58843/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 6C49B1F30B;\n\tFri,  6 Sep 2019 14:20:09 +0200 (CEST)",
            "from mail-wr1-f43.google.com (mail-wr1-f43.google.com\n\t[209.85.221.43]) by dpdk.org (Postfix) with ESMTP id 1187D1F305\n\tfor <dev@dpdk.org>; Fri,  6 Sep 2019 14:20:08 +0200 (CEST)",
            "by mail-wr1-f43.google.com with SMTP id q14so6340910wrm.9\n\tfor <dev@dpdk.org>; Fri, 06 Sep 2019 05:20:08 -0700 (PDT)",
            "from tom.dev.6wind.com. (host.78.145.23.62.rev.coltfrance.com.\n\t[62.23.145.78]) by smtp.gmail.com with ESMTPSA id\n\tv4sm8949916wrg.56.2019.09.06.05.20.07\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 06 Sep 2019 05:20:07 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind.com; s=google; \n\th=from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=RZG7q7PklBmNmJTgU7ZjI6AtgwEXR69xhgQagNgMicE=;\n\tb=P9wx/ON+VARRiX543UWqMKJL2nK55CEYj+hMKXZt+lOlHyIwNH+bUz8EOTjZfN3bxO\n\tB4/z+OUmrRN8PzgODoH9LG/P6TRr+ChOo87XmBS7f6vIN7cAr1XwyFstU9bjwyPmxkgo\n\tcb6e/6+X2ad9awoyP4bWljkHd899Qs10eeT+qakIBQ6bee8qvSIxUwOYCf2F7U0lqC8x\n\t0oGqebS9qrp0CkhXECQPfWS/aP6fAfDWNdCOjBNhIxOIS42VVrSGs3PWLqqV/cdOyCSb\n\tVxPNswPNemzyJb6UHIh/sQ+btHuYLlCcD18KcRsasJFvMYSQQ5f8ttVLQJlbio5sWYHO\n\tIEZg==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=RZG7q7PklBmNmJTgU7ZjI6AtgwEXR69xhgQagNgMicE=;\n\tb=OxtdtG/rnOS6EU5x3z4HQaWZVZ8AAM7uR/zaoiRbY0lOMWMpxU4QAU0NDx+A3WSD/H\n\tBJChL6yYwOcvicjjlpbSxVYzuUF9NxQCUuX2P+ZZGcsRmntQkDFWCasj/oNKhmv9T1xF\n\t/gPdgC6QRQsJxygG40c4j16tzwx69pwNqSYyW24/ZWvrjC4narh4rOv2iyn8MTLBbNiO\n\tfL4tLvPb9f6EU63R0lOqsSQJ0tX0wiSk05civgXRTAM18KbQq+Y9NaCtKb1gxAUKziWl\n\tnFEA/N/ratx0GA9M320a133CV5TfPG31+sSNUsXBuoIRZVFhhqSJWOfRWuS7c+xSgcla\n\ttCOA==",
        "X-Gm-Message-State": "APjAAAWZIMACFMgeNmOjdlWLpdKbYbzObCgG0VM/VEhvA8uGjDvZyB9l\n\t+7Nwr/pe8ZKEQmcVkH/yoOAcxw==",
        "X-Google-Smtp-Source": "APXvYqzVGdGbKv2vE31Aek5wpuzj3SCRnDM5NCWhUglbPtmPLg7MJFklUiZN6EqpiA1jYZ+PL4i0lA==",
        "X-Received": "by 2002:a5d:46c4:: with SMTP id g4mr6352346wrs.189.1567772407771;\n\tFri, 06 Sep 2019 05:20:07 -0700 (PDT)",
        "From": "Robin Jarry <robin.jarry@6wind.com>",
        "To": "Neil Horman <nhorman@tuxdriver.com>",
        "Cc": "dev@dpdk.org, John McNamara <john.mcnamara@intel.com>, stable@dpdk.org, \n\tOlivier Matz <olivier.matz@6wind.com>",
        "Date": "Fri,  6 Sep 2019 14:19:55 +0200",
        "Message-Id": "<20190906121955.24046-1-robin.jarry@6wind.com>",
        "X-Mailer": "git-send-email 2.23.0.rc1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH] usertools: fix python 3 support of\n\tdpdk-pmdinfo.py",
        "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\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Running this script on ubuntu-18.04 with python 3 and pyelftools\ninstalled produces no output but no error is reported neither:\n\n  ~$ python3 usertools/dpdk-pmdinfo.py -r build/app/testpmd\n  ~$ echo $?\n  0\n\nWhile with python 2, it works:\n\n  ~# python2 usertools/dpdk-pmdinfo.py -r build/app/testpmd\n  {\"pci_ids\": [], \"name\": \"dpio\"}\n  {\"pci_ids\": [], \"name\": \"dpbp\"}\n  {\"pci_ids\": [], \"name\": \"dpaa2_qdma\"}\n  .....\n\nLooking in the code of pyelftools, ELFFile.get_section_by_name performs\na lookup in a _section_name_map dictionary which contains a mapping of\nsection names to section numbers. Section names are strings, not bytes.\nWe must not encode the string before using it as argument to this\nfunction. Otherwise the lookup fails and the script assumes there is no\nELF section in the file. Then it exits without any error.\n\nAlso, section tags are strings, not bytes, fix the following error on\npython 3:\n\n  Traceback (most recent call last):\n    File \"usertools/dpdk-pmdinfo.py\", line 612, in <module>\n      main()\n    File \"usertools/dpdk-pmdinfo.py\", line 601, in main\n      readelf.process_dt_needed_entries()\n    File \"usertools/dpdk-pmdinfo.py\", line 442, in\n    process_dt_needed_entries\n      rc = tag.needed.find(b\"librte_pmd\")\n  TypeError: must be str, not bytes\n\nFixes: c67c9a5c646a (\"tools: query binaries for HW and other support information\")\nCc: Neil Horman <nhorman@tuxdriver.com>\nFixes: 54ca545dce4b (\"make python scripts python2/3 compliant\")\nCc: John McNamara <john.mcnamara@intel.com>\nCc: stable@dpdk.org\n\nSigned-off-by: Robin Jarry <robin.jarry@6wind.com>\nReviewed-by: Olivier Matz <olivier.matz@6wind.com>\n---\n usertools/dpdk-pmdinfo.py | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)",
    "diff": "diff --git a/usertools/dpdk-pmdinfo.py b/usertools/dpdk-pmdinfo.py\nindex 03623d5b8b48..d2d4aa3c143f 100755\n--- a/usertools/dpdk-pmdinfo.py\n+++ b/usertools/dpdk-pmdinfo.py\n@@ -14,7 +14,7 @@\n import string\n import sys\n from elftools.common.exceptions import ELFError\n-from elftools.common.py3compat import (byte2int, bytes2str, str2bytes)\n+from elftools.common.py3compat import (byte2int, bytes2str)\n from elftools.elf.elffile import ELFFile\n from optparse import OptionParser\n \n@@ -267,7 +267,7 @@ def _section_from_spec(self, spec):\n                 return None\n         except ValueError:\n             # Not a number. Must be a name then\n-            return self.elffile.get_section_by_name(str2bytes(spec))\n+            return self.elffile.get_section_by_name(spec)\n \n     def pretty_print_pmdinfo(self, pmdinfo):\n         global pcidb\n@@ -439,7 +439,7 @@ def process_dt_needed_entries(self):\n \n         for tag in dynsec.iter_tags():\n             if tag.entry.d_tag == 'DT_NEEDED':\n-                rc = tag.needed.find(b\"librte_pmd\")\n+                rc = tag.needed.find(\"librte_pmd\")\n                 if (rc != -1):\n                     library = search_file(tag.needed,\n                                           runpath + \":\" + ldlibpath +\n",
    "prefixes": []
}