Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/63175/?format=api
http://patches.dpdk.org/api/patches/63175/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/9119a0d0d1cf891b9c2dfafe2146d40e9d83daf1.1574270323.git.anatoly.burakov@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": "<9119a0d0d1cf891b9c2dfafe2146d40e9d83daf1.1574270323.git.anatoly.burakov@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/9119a0d0d1cf891b9c2dfafe2146d40e9d83daf1.1574270323.git.anatoly.burakov@intel.com", "date": "2019-11-20T17:23:39", "name": "[v8,12/12] buildtools: add ABI versioning check script", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": true, "hash": "ffbf587743d0303d8733fc9858dfa9f9fa5d2e9a", "submitter": { "id": 4, "url": "http://patches.dpdk.org/api/people/4/?format=api", "name": "Anatoly Burakov", "email": "anatoly.burakov@intel.com" }, "delegate": null, "mbox": "http://patches.dpdk.org/project/dpdk/patch/9119a0d0d1cf891b9c2dfafe2146d40e9d83daf1.1574270323.git.anatoly.burakov@intel.com/mbox/", "series": [ { "id": 7549, "url": "http://patches.dpdk.org/api/series/7549/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=7549", "date": "2019-11-20T17:23:27", "name": "Implement the new ABI policy and add helper scripts", "version": 8, "mbox": "http://patches.dpdk.org/series/7549/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/63175/comments/", "check": "fail", "checks": "http://patches.dpdk.org/api/patches/63175/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 AF55CA04C1;\n\tWed, 20 Nov 2019 18:25:32 +0100 (CET)", "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id EFE7C2BA3;\n\tWed, 20 Nov 2019 18:25:04 +0100 (CET)", "from mga11.intel.com (mga11.intel.com [192.55.52.93])\n by dpdk.org (Postfix) with ESMTP id C1C932B8B\n for <dev@dpdk.org>; Wed, 20 Nov 2019 18:25:03 +0100 (CET)", "from orsmga008.jf.intel.com ([10.7.209.65])\n by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n 20 Nov 2019 09:25:02 -0800", "from silpixa00399498.ir.intel.com (HELO\n silpixa00399498.ger.corp.intel.com) ([10.237.223.151])\n by orsmga008.jf.intel.com with ESMTP; 20 Nov 2019 09:25:00 -0800" ], "X-Amp-Result": "SKIPPED(no attachment in message)", "X-Amp-File-Uploaded": "False", "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.69,222,1571727600\"; d=\"scan'208\";a=\"200794386\"", "From": "Anatoly Burakov <anatoly.burakov@intel.com>", "To": "dev@dpdk.org", "Cc": "Marcin Baran <marcinx.baran@intel.com>, john.mcnamara@intel.com,\n ray.kinsella@intel.com, bruce.richardson@intel.com, thomas@monjalon.net,\n david.marchand@redhat.com, Pawel Modrak <pawelx.modrak@intel.com>", "Date": "Wed, 20 Nov 2019 17:23:39 +0000", "Message-Id": "\n <9119a0d0d1cf891b9c2dfafe2146d40e9d83daf1.1574270323.git.anatoly.burakov@intel.com>", "X-Mailer": "git-send-email 2.17.1", "In-Reply-To": [ "<cover.1574270323.git.anatoly.burakov@intel.com>", "<cover.1574270323.git.anatoly.burakov@intel.com>" ], "References": [ "<cover.1574270323.git.anatoly.burakov@intel.com>", "<cover.1573230233.git.anatoly.burakov@intel.com>\n <cover.1574270323.git.anatoly.burakov@intel.com>" ], "Subject": "[dpdk-dev] [PATCH v8 12/12] buildtools: add ABI versioning check\n\tscript", "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": "From: Marcin Baran <marcinx.baran@intel.com>\n\nAdd a shell script that checks whether built libraries are\nversioned with expected ABI (current ABI, current ABI + 1,\nor EXPERIMENTAL).\n\nThe following command was used to verify current source tree\n(assuming build directory is in ./build):\n\nfind ./build/lib ./build/drivers -name \\*.so \\\n\t-exec ./buildtools/check-abi-version.sh {} \\; -print\n\nSigned-off-by: Marcin Baran <marcinx.baran@intel.com>\nSigned-off-by: Pawel Modrak <pawelx.modrak@intel.com>\nSigned-off-by: Anatoly Burakov <anatoly.burakov@intel.com>\nAcked-by: Bruce Richardson <bruce.richardson@intel.com>\n---\n\nNotes:\n v2:\n - Moved this to the end of the patchset\n - Fixed bug when ABI symbols were not found because the .so\n did not declare any public symbols\n\n buildtools/check-abi-version.sh | 54 +++++++++++++++++++++++++++++++++\n 1 file changed, 54 insertions(+)\n create mode 100755 buildtools/check-abi-version.sh", "diff": "diff --git a/buildtools/check-abi-version.sh b/buildtools/check-abi-version.sh\nnew file mode 100755\nindex 0000000000..9a3d135463\n--- /dev/null\n+++ b/buildtools/check-abi-version.sh\n@@ -0,0 +1,54 @@\n+#!/bin/sh\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright(c) 2019 Intel Corporation\n+\n+# Check whether library symbols have correct\n+# version (provided ABI number or provided ABI\n+# number + 1 or EXPERIMENTAL).\n+# Args:\n+# $1: path of the library .so file\n+# $2: ABI major version number to check\n+# (defaults to ABI_VERSION file value)\n+\n+if [ -z \"$1\" ]; then\n+ echo \"Script checks whether library symbols have\"\n+ echo \"correct version (ABI_VER/ABI_VER+1/EXPERIMENTAL)\"\n+ echo \"Usage:\"\n+ echo \" $0 SO_FILE_PATH [ABI_VER]\"\n+ exit 1\n+fi\n+\n+LIB=\"$1\"\n+DEFAULT_ABI=$(cat \"$(dirname \\\n+ $(readlink -f $0))/../ABI_VERSION\" | \\\n+ cut -d'.' -f 1)\n+ABIVER=\"DPDK_${2-$DEFAULT_ABI}\"\n+NEXT_ABIVER=\"DPDK_$((${2-$DEFAULT_ABI}+1))\"\n+\n+ret=0\n+\n+# get output of objdump\n+OBJ_DUMP_OUTPUT=`objdump -TC --section=.text ${LIB} 2>&1 | grep \".text\"`\n+\n+# there may not be any .text sections in the .so file, in which case exit early\n+echo \"${OBJ_DUMP_OUTPUT}\" | grep \"not found in any input file\" -q\n+if [ \"$?\" -eq 0 ]; then\n+ exit 0\n+fi\n+\n+# we have symbols, so let's see if the versions are correct\n+for SYM in $(echo \"${OBJ_DUMP_OUTPUT}\" | awk '{print $(NF-1) \"-\" $NF}')\n+do\n+ version=$(echo $SYM | cut -d'-' -f 1)\n+ symbol=$(echo $SYM | cut -d'-' -f 2)\n+ case $version in (*\"$ABIVER\"*|*\"$NEXT_ABIVER\"*|\"EXPERIMENTAL\")\n+ ;;\n+ (*)\n+ echo \"Warning: symbol $symbol ($version) should be annotated \" \\\n+ \"as ABI version $ABIVER / $NEXT_ABIVER, or EXPERIMENTAL.\"\n+ ret=1\n+ ;;\n+ esac\n+done\n+\n+exit $ret\n", "prefixes": [ "v8", "12/12" ] }{ "id": 63175, "url": "