get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 77452,
    "url": "http://patches.dpdk.org/api/patches/77452/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20200911160332.256343-5-conor.walsh@intel.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": "<20200911160332.256343-5-conor.walsh@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200911160332.256343-5-conor.walsh@intel.com",
    "date": "2020-09-11T16:03:32",
    "name": "[v3,4/4] build: add abi breakage checks to meson",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "0c8da6ed20b9962d6d4de3bcf43302fb15f0114a",
    "submitter": {
        "id": 1935,
        "url": "http://patches.dpdk.org/api/people/1935/?format=api",
        "name": "Conor Walsh",
        "email": "conor.walsh@intel.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/20200911160332.256343-5-conor.walsh@intel.com/mbox/",
    "series": [
        {
            "id": 12155,
            "url": "http://patches.dpdk.org/api/series/12155/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=12155",
            "date": "2020-09-11T16:03:30",
            "name": "abi breakage checks for meson",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/12155/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/77452/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/77452/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 DCE7AA04C0;\n\tFri, 11 Sep 2020 18:04:34 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id DC8AB1C119;\n\tFri, 11 Sep 2020 18:03:58 +0200 (CEST)",
            "from mga06.intel.com (mga06.intel.com [134.134.136.31])\n by dpdk.org (Postfix) with ESMTP id 25A721C0DC\n for <dev@dpdk.org>; Fri, 11 Sep 2020 18:03:53 +0200 (CEST)",
            "from orsmga002.jf.intel.com ([10.7.209.21])\n by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 11 Sep 2020 09:03:53 -0700",
            "from silpixa00400466.ir.intel.com ([10.237.213.195])\n by orsmga002.jf.intel.com with ESMTP; 11 Sep 2020 09:03:51 -0700"
        ],
        "IronPort-SDR": [
            "\n uNmMspW7fnIfN0QQmK+E8crlSm12EMbgK5ukkCDbwm29zcduY8bUVhuDCs2VMNtV0EyNvx3SZf\n wRB6RFKVjTGg==",
            "\n V3IduwRAD3QBl2j5nrU2CtsjuzPe4Ik6xp4pCFbuRCd2KXS3b/DdZiLi3+HmJUSAcURMzirenF\n xllDnUJWJcJA=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9741\"; a=\"220343481\"",
            "E=Sophos;i=\"5.76,416,1592895600\"; d=\"scan'208\";a=\"220343481\"",
            "E=Sophos;i=\"5.76,416,1592895600\"; d=\"scan'208\";a=\"318321590\""
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "From": "Conor Walsh <conor.walsh@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "david.marchand@redhat.com, ray.kinsella@intel.com, nhorman@tuxdriver.com,\n aconole@redhat.com, maicolgabriel@hotmail.com, thomas@monjalon.net,\n bruce.richardson@intel.com, Conor Walsh <conor.walsh@intel.com>",
        "Date": "Fri, 11 Sep 2020 16:03:32 +0000",
        "Message-Id": "<20200911160332.256343-5-conor.walsh@intel.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20200911160332.256343-1-conor.walsh@intel.com>",
        "References": "<20200910142121.3995680-1-conor.walsh@intel.com>\n <20200911160332.256343-1-conor.walsh@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v3 4/4] build: add abi breakage checks to meson",
        "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": "This patch adds the ability to run ABI breakage checks to meson.\nTo do this the developer needs to set the meson build type to debug and\nset the version of DPDK that they want to check the ABI against.\nThe option \"abi_checks\" has been added to meson for this, the option\naccepts DPDK tags e.g. \"latest\" or \"v20.11\".\nExample meson command: \"meson -Dbuildtype=debug -Dabi_checks=v20.11 build\"\nWhen the build is done using ninja the ABI checks will be performed\nif any breakages are present the build will fail.\n\nSigned-off-by: Conor Walsh <conor.walsh@intel.com>\n---\n buildtools/meson.build | 18 ++++++++++++++++++\n config/meson.build     | 15 +++++++++++++++\n drivers/meson.build    | 14 ++++++++++++++\n lib/meson.build        | 14 ++++++++++++++\n meson_options.txt      |  2 ++\n 5 files changed, 63 insertions(+)",
    "diff": "diff --git a/buildtools/meson.build b/buildtools/meson.build\nindex 04808dabc..c3ee69a44 100644\n--- a/buildtools/meson.build\n+++ b/buildtools/meson.build\n@@ -17,3 +17,21 @@ else\n endif\n map_to_win_cmd = py3 + files('map_to_win.py')\n sphinx_wrapper = py3 + files('call-sphinx-build.py')\n+\n+abi_check_version = get_option('abi_checks')\n+check_abi = (abi_check_version != '')\n+\n+abi_dir = ''\n+# If abi checks enabled setup abi dump directory\n+if check_abi\n+\tmessage('ABI checks are being setup. This could take several minutes')\n+\tsetup_run = run_command('abi-setup.py', '-t', abi_check_version, '-d', meson.source_root())\n+\t# Check if error returned from script\n+\tif setup_run.returncode() != 0\n+\t\tsetup_err = setup_run.stderr().strip()\n+\t\terror('ABI checks setup script returned an error: ' + setup_err)\n+\tendif\n+\tabi_dir = setup_run.stdout().strip()\n+endif\n+abidiff = find_program('abidiff', required: check_abi)\n+abignore = files('../devtools/libabigail.abignore')\ndiff --git a/config/meson.build b/config/meson.build\nindex 6996e5cbe..79b90f2cc 100644\n--- a/config/meson.build\n+++ b/config/meson.build\n@@ -47,6 +47,21 @@ else\n \tdpdk_conf.set('RTE_VER_RELEASE', 99)\n endif\n \n+# abi checks cannot be run on windows\n+if is_windows and check_abi\n+\terror('ABI checks cannot be run on windows')\n+endif\n+# abi checks can only be run on a debug build\n+# meson <0.48 does not support get_option('debug')\n+if meson.version().version_compare('>=0.48')\n+\tdebug_enabled = get_option('debug')\n+else\n+\tdebug_enabled = get_option('buildtype').startswith('debug')\n+endif\n+if check_abi and not debug_enabled\n+\terror('Build type must have debug symbols when abi_checks are enabled')\n+endif\n+\n pmd_subdir_opt = get_option('drivers_install_subdir')\n if pmd_subdir_opt.contains('<VERSION>')\n \tpmd_subdir_opt = abi_version.join(pmd_subdir_opt.split('<VERSION>'))\ndiff --git a/drivers/meson.build b/drivers/meson.build\nindex 5f9526557..b24a875da 100644\n--- a/drivers/meson.build\n+++ b/drivers/meson.build\n@@ -208,6 +208,20 @@ foreach subpath:subdirs\n \t\t\t\t\tinclude_directories: includes,\n \t\t\t\t\tdependencies: static_deps)\n \n+\t\t\t# If abidiff found, abi checks are enabled and the abi dump files for the library are available run abi check\n+\t\t\tdump_name = abi_dir+'/lib' + lib_name + '.dump'\n+\t\t\tif check_abi and run_command('[', '-f', dump_name, ']').returncode() == 0\n+\t\t\t\tcustom_target('lib' + lib_name + '.abi_chk',\n+\t\t\t\t\t      command: [abidiff, '--no-added-syms',\n+\t\t\t\t\t\t\t'--suppr', abignore,\n+\t\t\t\t\t\t\t'@INPUT@'],\n+\t\t\t\t\t      input: [dump_name, shared_lib],\n+\t\t\t\t\t      output: 'lib' + lib_name + '.abi_chk',\n+\t\t\t\t\t      capture: true,\n+\t\t\t\t\t      install: false,\n+\t\t\t\t\t      build_by_default: true)\n+\t\t\tendif\n+\n \t\t\tdpdk_drivers += static_lib\n \n \t\t\tset_variable('shared_@0@'.format(lib_name), shared_dep)\ndiff --git a/lib/meson.build b/lib/meson.build\nindex 3852c0156..0d9325b90 100644\n--- a/lib/meson.build\n+++ b/lib/meson.build\n@@ -190,6 +190,20 @@ foreach l:libraries\n \t\t\t\t\tinclude_directories: includes,\n \t\t\t\t\tdependencies: shared_deps)\n \n+\t\t\t# If abidiff found, abi checks are enabled and the abi dump files for the library are available run abi check\n+\t\t\tdump_name = abi_dir+'/' + dir_name + '.dump'\n+\t\t\tif check_abi and run_command('[', '-f', dump_name, ']').returncode() == 0\n+\t\t\t\tcustom_target(dir_name + '.abi_chk',\n+\t\t\t\t\t      command: [abidiff, '--no-added-syms',\n+\t\t\t\t\t\t\t'--suppr', abignore,\n+\t\t\t\t\t\t\t'@INPUT@'],\n+\t\t\t\t\t      input: [dump_name, shared_lib],\n+\t\t\t\t\t      output: dir_name + '.abi_chk',\n+\t\t\t\t\t      capture: true,\n+\t\t\t\t\t      install: false,\n+\t\t\t\t\t      build_by_default: true)\n+\t\t\tendif\n+\n \t\t\tdpdk_libraries = [shared_lib] + dpdk_libraries\n \t\t\tdpdk_static_libraries = [static_lib] + dpdk_static_libraries\n \t\tendif # sources.length() > 0\ndiff --git a/meson_options.txt b/meson_options.txt\nindex 9bf18ab6b..26ac48f45 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -1,5 +1,7 @@\n # Please keep these options sorted alphabetically.\n \n+option('abi_checks', type: 'string', value: '',\n+    description: 'Enable abi compatibility checks to run during the build. This requires debug build to be enabled. Input is latest or git tag e.g. v20.11')\n option('armv8_crypto_dir', type: 'string', value: '',\n \tdescription: 'path to the armv8_crypto library installation directory')\n option('disable_drivers', type: 'string', value: '',\n",
    "prefixes": [
        "v3",
        "4/4"
    ]
}