get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 6201,
    "url": "http://patches.dpdk.org/api/patches/6201/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1436373856-29468-1-git-send-email-thomas.monjalon@6wind.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": "<1436373856-29468-1-git-send-email-thomas.monjalon@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1436373856-29468-1-git-send-email-thomas.monjalon@6wind.com",
    "date": "2015-07-08T16:44:16",
    "name": "[dpdk-dev,v3] mk: enable next abi preview",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "9f0db5c7b8b761541289f40bdc7aac175f72cdc7",
    "submitter": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/people/1/?format=api",
        "name": "Thomas Monjalon",
        "email": "thomas.monjalon@6wind.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1436373856-29468-1-git-send-email-thomas.monjalon@6wind.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/6201/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/6201/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 [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 0F3125A57;\n\tWed,  8 Jul 2015 18:45:31 +0200 (CEST)",
            "from mail-wi0-f178.google.com (mail-wi0-f178.google.com\n\t[209.85.212.178]) by dpdk.org (Postfix) with ESMTP id 128093B5\n\tfor <dev@dpdk.org>; Wed,  8 Jul 2015 18:45:30 +0200 (CEST)",
            "by widjy10 with SMTP id jy10so222480243wid.1\n\tfor <dev@dpdk.org>; Wed, 08 Jul 2015 09:45:29 -0700 (PDT)",
            "from localhost.localdomain (136-92-190-109.dsl.ovh.fr.\n\t[109.190.92.136]) by smtp.gmail.com with ESMTPSA id\n\tx10sm4331270wjr.25.2015.07.08.09.45.28\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tWed, 08 Jul 2015 09:45:29 -0700 (PDT)"
        ],
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20130820;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=NGPcTcPUJIjFUYXkKMlwvcBau+GHgFgDj0MMrnx0ksI=;\n\tb=GmOLFUD0tyl/nPLl2yYKa+EqM9Y2YPLPzNOzLk3qoCTRVzSHgsVnm4j+alVF0iYpTV\n\t6Y6WMttOZ5w1FJz1JJu1crbDFhgHQXmxerkiey1kYk9CiwNjkS9nN+QBR7gqsZ71ZghF\n\tIdxKUOZnTyWS2Re1Il1obS8cnsDeUN3Glk8TY0VBNnKNSB9BVod6vJqEvrNR4pOCz5oo\n\tw5gIydw9WMkCjHf1TVd6H6vgMfLoIpP42ntJfYh3zPghQPF6ek4IkGsQZzh9kmZL23Gj\n\t+2DaI2nOhmuLCAbFbPLlYed9RUxJpr2CxYm0vZB6TjJudh5tbGsLcE98ntn9htgWAr3o\n\tctuw==",
        "X-Gm-Message-State": "ALoCoQm19QKZ6+OgvZDnqlb8qRhBx88qIZUmkclv2lLbcOW2JzY5/Y4qqt3BgCK1VBBfHf3A3ff3",
        "X-Received": "by 10.180.188.48 with SMTP id fx16mr76082194wic.35.1436373929888;\n\tWed, 08 Jul 2015 09:45:29 -0700 (PDT)",
        "From": "Thomas Monjalon <thomas.monjalon@6wind.com>",
        "To": "nhorman@tuxdriver.com",
        "Date": "Wed,  8 Jul 2015 18:44:16 +0200",
        "Message-Id": "<1436373856-29468-1-git-send-email-thomas.monjalon@6wind.com>",
        "X-Mailer": "git-send-email 2.4.2",
        "In-Reply-To": "<1436367323-19968-3-git-send-email-thomas.monjalon@6wind.com>",
        "References": "<1436367323-19968-3-git-send-email-thomas.monjalon@6wind.com>",
        "Cc": "dev@dpdk.org",
        "Subject": "[dpdk-dev] [PATCH v3] mk: enable next abi preview",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
        "List-Unsubscribe": "<http://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": "<http://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": "When a change makes really hard to keep ABI compatibility,\ninstead of waiting next release to break the ABI, it is smoother\nto introduce the new code as a preview and disable it when packaging.\nThe flag RTE_NEXT_ABI must be used to \"ifdef\" the new code.\nWhen the release is out, a dynamically linked application can use\nthe new shared libraries with the old ABI while developpers can prepare\ntheir application for the next ABI by reading the deprecation notice\nand easily testing the new code.\nWhen starting the next release cycle, the \"ifdefs\" will be removed\nand the ABI break will be marked by incrementing LIBABIVER. The map\nfiles will also be updated.\n\nThe default value is enabled to be developer compliant.\nThe packagers must disable it as done in pkg/dpdk.spec.\nWhen enabled, all shared library numbers are incremented by appending\na minor .1 to the old ABI number. In the next release, only impacted\nlibraries will have a major +1 increment.\nThe impacted libraries must provide an alternative map file to use\nwith this option.\n\nThe ABI policy is updated.\n\nSigned-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>\n---\nv3 change:\n- fix .so symbolic link to .so.x.1\n\n config/common_bsdapp                 |  5 +++++\n config/common_linuxapp               |  5 +++++\n doc/guides/guidelines/versioning.rst | 12 +++++++++---\n mk/rte.lib.mk                        |  9 +++++----\n pkg/dpdk.spec                        |  1 +\n scripts/validate-abi.sh              |  2 ++\n 6 files changed, 27 insertions(+), 7 deletions(-)",
    "diff": "diff --git a/config/common_bsdapp b/config/common_bsdapp\nindex 78754b2..a4e3262 100644\n--- a/config/common_bsdapp\n+++ b/config/common_bsdapp\n@@ -90,6 +90,11 @@ CONFIG_RTE_BUILD_COMBINE_LIBS=n\n CONFIG_RTE_LIBNAME=intel_dpdk\n \n #\n+# Use newest code breaking previous ABI\n+#\n+CONFIG_RTE_NEXT_ABI=y\n+\n+#\n # Compile Environment Abstraction Layer\n #\n CONFIG_RTE_LIBRTE_EAL=y\ndiff --git a/config/common_linuxapp b/config/common_linuxapp\nindex f5646e0..050bf35 100644\n--- a/config/common_linuxapp\n+++ b/config/common_linuxapp\n@@ -90,6 +90,11 @@ CONFIG_RTE_BUILD_COMBINE_LIBS=n\n CONFIG_RTE_LIBNAME=\"intel_dpdk\"\n \n #\n+# Use newest code breaking previous ABI\n+#\n+CONFIG_RTE_NEXT_ABI=y\n+\n+#\n # Compile Environment Abstraction Layer\n #\n CONFIG_RTE_LIBRTE_EAL=y\ndiff --git a/doc/guides/guidelines/versioning.rst b/doc/guides/guidelines/versioning.rst\nindex ea789cb..8a739dd 100644\n--- a/doc/guides/guidelines/versioning.rst\n+++ b/doc/guides/guidelines/versioning.rst\n@@ -55,12 +55,18 @@ being provided. The requirements for doing so are:\n #. At least 3 acknowledgments of the need to do so must be made on the\n    dpdk.org mailing list.\n \n+#. The changes (including an alternative map file) must be gated with\n+   the ``RTE_NEXT_ABI`` option, and provided with a deprecation notice at the\n+   same time.\n+   It will become the default ABI in the next release.\n+\n #. A full deprecation cycle, as explained above, must be made to offer\n    downstream consumers sufficient warning of the change.\n \n-#. The ``LIBABIVER`` variable in the makefile(s) where the ABI changes are\n-   incorporated must be incremented in parallel with the ABI changes\n-   themselves.\n+#. At the beginning of the next release cycle, every ``RTE_NEXT_ABI``\n+   conditions will be removed, the ``LIBABIVER`` variable in the makefile(s)\n+   where the ABI is changed will be incremented, and the map files will\n+   be updated.\n \n Note that the above process for ABI deprecation should not be undertaken\n lightly. ABI stability is extremely important for downstream consumers of the\ndiff --git a/mk/rte.lib.mk b/mk/rte.lib.mk\nindex fff62a7..f15de9b 100644\n--- a/mk/rte.lib.mk\n+++ b/mk/rte.lib.mk\n@@ -37,11 +37,13 @@ include $(RTE_SDK)/mk/internal/rte.depdirs-pre.mk\n \n # VPATH contains at least SRCDIR\n VPATH += $(SRCDIR)\n-ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)\n \n+ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)\n LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB))\n+ifeq ($(CONFIG_RTE_NEXT_ABI),y)\n+LIB := $(LIB).1\n+endif\n CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)\n-\n endif\n \n \n@@ -167,12 +169,11 @@ endif\n # install lib in $(RTE_OUTPUT)/lib\n #\n $(RTE_OUTPUT)/lib/$(LIB): $(LIB)\n-\t$(eval LIBSONAME := $(basename $(LIB)))\n \t@echo \"  INSTALL-LIB $(LIB)\"\n \t@[ -d $(RTE_OUTPUT)/lib ] || mkdir -p $(RTE_OUTPUT)/lib\n \t$(Q)cp -f $(LIB) $(RTE_OUTPUT)/lib\n ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)\n-\t$(Q)ln -s -f $< $(RTE_OUTPUT)/lib/$(LIBSONAME)\n+\t$(Q)ln -s -f $< $(basename $(basename $@))\n endif\n \n #\ndiff --git a/pkg/dpdk.spec b/pkg/dpdk.spec\nindex 5f6ec6a..fb71ccc 100644\n--- a/pkg/dpdk.spec\n+++ b/pkg/dpdk.spec\n@@ -82,6 +82,7 @@ make O=%{target} T=%{target} config\n sed -ri 's,(RTE_MACHINE=).*,\\1%{machine},' %{target}/.config\n sed -ri 's,(RTE_APP_TEST=).*,\\1n,'         %{target}/.config\n sed -ri 's,(RTE_BUILD_SHARED_LIB=).*,\\1y,' %{target}/.config\n+sed -ri 's,(RTE_NEXT_ABI=).*,\\1n,'         %{target}/.config\n sed -ri 's,(LIBRTE_VHOST=).*,\\1y,'         %{target}/.config\n sed -ri 's,(LIBRTE_PMD_PCAP=).*,\\1y,'      %{target}/.config\n sed -ri 's,(LIBRTE_PMD_XENVIRT=).*,\\1y,'   %{target}/.config\ndiff --git a/scripts/validate-abi.sh b/scripts/validate-abi.sh\nindex 1747b8b..4476433 100755\n--- a/scripts/validate-abi.sh\n+++ b/scripts/validate-abi.sh\n@@ -157,6 +157,7 @@ git checkout $TAG1\n # Make sure we configure SHARED libraries\n # Also turn off IGB and KNI as those require kernel headers to build\n sed -i -e\"$ a\\CONFIG_RTE_BUILD_SHARED_LIB=y\" config/defconfig_$TARGET\n+sed -i -e\"$ a\\CONFIG_RTE_NEXT_ABI=n\" config/defconfig_$TARGET\n sed -i -e\"$ a\\CONFIG_RTE_EAL_IGB_UIO=n\" config/defconfig_$TARGET\n sed -i -e\"$ a\\CONFIG_RTE_LIBRTE_KNI=n\" config/defconfig_$TARGET\n \n@@ -198,6 +199,7 @@ git checkout $TAG2\n # Make sure we configure SHARED libraries\n # Also turn off IGB and KNI as those require kernel headers to build\n sed -i -e\"$ a\\CONFIG_RTE_BUILD_SHARED_LIB=y\" config/defconfig_$TARGET\n+sed -i -e\"$ a\\CONFIG_RTE_NEXT_ABI=n\" config/defconfig_$TARGET\n sed -i -e\"$ a\\CONFIG_RTE_EAL_IGB_UIO=n\" config/defconfig_$TARGET\n sed -i -e\"$ a\\CONFIG_RTE_LIBRTE_KNI=n\" config/defconfig_$TARGET\n \n",
    "prefixes": [
        "dpdk-dev",
        "v3"
    ]
}