get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 77152,
    "url": "http://patches.dpdk.org/api/patches/77152/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20200910142121.3995680-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": "<20200910142121.3995680-5-conor.walsh@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200910142121.3995680-5-conor.walsh@intel.com",
    "date": "2020-09-10T14:21:21",
    "name": "[v2,4/4] build: add abi breakage checks to meson",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "e5f1de43e8413198bd0dd9232d6a15e4a9f5d8d1",
    "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/20200910142121.3995680-5-conor.walsh@intel.com/mbox/",
    "series": [
        {
            "id": 12104,
            "url": "http://patches.dpdk.org/api/series/12104/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=12104",
            "date": "2020-09-10T14:21:17",
            "name": "abi breakage checks for meson",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/12104/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/77152/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/77152/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 62ED2A04B5;\n\tThu, 10 Sep 2020 16:22:08 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id C7CAF1C10F;\n\tThu, 10 Sep 2020 16:21:37 +0200 (CEST)",
            "from mga12.intel.com (mga12.intel.com [192.55.52.136])\n by dpdk.org (Postfix) with ESMTP id B8A1B1C10C\n for <dev@dpdk.org>; Thu, 10 Sep 2020 16:21:36 +0200 (CEST)",
            "from fmsmga004.fm.intel.com ([10.253.24.48])\n by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 10 Sep 2020 07:21:36 -0700",
            "from silpixa00400466.ir.intel.com ([10.237.213.195])\n by fmsmga004.fm.intel.com with ESMTP; 10 Sep 2020 07:21:34 -0700"
        ],
        "IronPort-SDR": [
            "\n lxQL29KpNHG6UM6p+Y96wgtuADSryRVUpobpjGcZllgRVR+D9932WQmyVfXi41KUWe3qExC6L5\n +m0ugR2HX0iw==",
            "\n eIyjuPLUby3MtYG6HoZfPaLCz5daYe9lr05v0o90UySRmo0hgUDKqZNSv9wRerjOoJUkws98ZU\n lWcZl+FyhGkg=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9739\"; a=\"138054719\"",
            "E=Sophos;i=\"5.76,413,1592895600\"; d=\"scan'208\";a=\"138054719\"",
            "E=Sophos;i=\"5.76,413,1592895600\"; d=\"scan'208\";a=\"329346331\""
        ],
        "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": "Thu, 10 Sep 2020 14:21:21 +0000",
        "Message-Id": "<20200910142121.3995680-5-conor.walsh@intel.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20200910142121.3995680-1-conor.walsh@intel.com>",
        "References": "<20200910140116.3995345-1-conor.walsh@intel.com>\n <20200910142121.3995680-1-conor.walsh@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v2 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 | 20 ++++++++++++++++++++\n config/meson.build     |  9 +++++++++\n drivers/meson.build    | 15 +++++++++++++++\n lib/meson.build        | 15 +++++++++++++++\n meson_options.txt      |  2 ++\n 5 files changed, 61 insertions(+)",
    "diff": "diff --git a/buildtools/meson.build b/buildtools/meson.build\nindex 04808dabc..63513a273 100644\n--- a/buildtools/meson.build\n+++ b/buildtools/meson.build\n@@ -8,6 +8,26 @@ check_symbols = find_program('check-symbols.sh')\n ldflags_ibverbs_static = find_program('options-ibverbs-static.sh')\n binutils_avx512_check = find_program('binutils-avx512-check.sh')\n \n+abi_checks = get_option('abi_checks')\n+abi_dir = ''\n+# If abi checks enabled setup abi dump directory\n+if abi_checks!=''\n+\tmessage('ABI Checks are being setup, If DPDK_ABI_TAR_URI has not been set these checks may be need to be generated this could take several minutes')\n+\tsetup_check = run_command('abi-setup.py','-t',abi_checks,'-d',meson.source_root()).stdout().strip()\n+\t# Check if error returned from script\n+\tif setup_check.startswith('ERROR')\n+\t\terror('ABI checks setup failed: '+setup_check)\n+\t# No error then set abi directory\n+\telse\n+\t\tabi_dir=setup_check\n+\tendif\n+endif\n+abidiff = find_program('abidiff', required: abi_checks!='')\n+if abidiff.found()==false and abi_checks!=''\n+\terror('ABI checks require abidiff to to be completed')\n+endif\n+abignore = files(meson.source_root()+'/devtools/libabigail.abignore')\n+\n # set up map-to-win script using python, either built-in or external\n python3 = import('python').find_installation(required: false)\n if python3.found()\ndiff --git a/config/meson.build b/config/meson.build\nindex 6996e5cbe..65f8ea4d7 100644\n--- a/config/meson.build\n+++ b/config/meson.build\n@@ -47,6 +47,15 @@ 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 abi_checks!=''\n+\terror('ABI checks cannot be run on windows')\n+endif\n+# abi checks can only be run on a debug build\n+if not get_option('debug') and abi_checks!=''\n+  error('Build type must have debug symbols when abi_checks=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..c82fbc250 100644\n--- a/drivers/meson.build\n+++ b/drivers/meson.build\n@@ -208,6 +208,21 @@ 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 abidiff.found() and abi_checks!='' 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\tfiles(dump_name),\n+\t\t\t\t\t\t\t'@INPUT@'],\n+\t\t\t\t\t      input: 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..e864e0440 100644\n--- a/lib/meson.build\n+++ b/lib/meson.build\n@@ -190,6 +190,21 @@ 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 abidiff.found() and abi_checks!='' 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\tfiles(dump_name),\n+\t\t\t\t\t\t\t'@INPUT@'],\n+\t\t\t\t\t      input: 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": [
        "v2",
        "4/4"
    ]
}