get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 6024,
    "url": "http://patches.dpdk.org/api/patches/6024/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1435874746-32095-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": "<1435874746-32095-1-git-send-email-thomas.monjalon@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1435874746-32095-1-git-send-email-thomas.monjalon@6wind.com",
    "date": "2015-07-02T22:05:46",
    "name": "[dpdk-dev] mk: enable next abi in static libs",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "3417f82178804d69d75de301dfb43e91f695e102",
    "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/1435874746-32095-1-git-send-email-thomas.monjalon@6wind.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/6024/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/6024/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 3BD8B106B;\n\tFri,  3 Jul 2015 00:07:12 +0200 (CEST)",
            "from mail-wg0-f45.google.com (mail-wg0-f45.google.com\n\t[74.125.82.45]) by dpdk.org (Postfix) with ESMTP id 3CBAB902\n\tfor <dev@dpdk.org>; Fri,  3 Jul 2015 00:07:10 +0200 (CEST)",
            "by wguu7 with SMTP id u7so74069649wgu.3\n\tfor <dev@dpdk.org>; Thu, 02 Jul 2015 15:07:10 -0700 (PDT)",
            "from localhost.localdomain (136-92-190-109.dsl.ovh.fr.\n\t[109.190.92.136]) by mx.google.com with ESMTPSA id\n\ta6sm10101833wjy.33.2015.07.02.15.07.07\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tThu, 02 Jul 2015 15:07:08 -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;\n\tbh=adrLzqmoU/VL1dL8mExlCiJnE1Rof8aRuAP3sD3s/b8=;\n\tb=FvjPUDSGh5tpyPtVhBY1oKuZQ1AcHpvJ9oKMma3HtXrYWD/FG2JWlD/SfckfMTBWUb\n\tYTd1mSWGzcNkHpN82V+NyK74Pbl9PWTadVUMIBmnJo949tpPaTx0IJILZP4uLYrx4Yqk\n\tUcbuy/fvO97seVH+ru0TRK5Jr+D6kuf24SP+esSzs7cTwkLpjf6CSlKHv1YBj7GzCpdJ\n\tMqKxlY2US0k0YcOe9LcC2uGxaEZjMgbFwt2Qk3cJZH5+4pvSHjjwuJot/JF9W4jX4PFi\n\tmk93X7wLVEMQ2EwS5X9qqNAD8yuL4JVPwsJ1UovCNxMm/Pmq6ER9vnGBWMGV5W+hhMxl\n\tXzfw==",
        "X-Gm-Message-State": "ALoCoQkPsPkhd9Zu5G2f5wwoQfUxlQpL5BVdS5v1FotgWZlQmpzzoKWNy7iCvQ6g/Tu78YVJfGNM",
        "X-Received": "by 10.180.91.76 with SMTP id cc12mr60245372wib.67.1435874830093; \n\tThu, 02 Jul 2015 15:07:10 -0700 (PDT)",
        "From": "Thomas Monjalon <thomas.monjalon@6wind.com>",
        "To": "dev@dpdk.org",
        "Date": "Fri,  3 Jul 2015 00:05:46 +0200",
        "Message-Id": "<1435874746-32095-1-git-send-email-thomas.monjalon@6wind.com>",
        "X-Mailer": "git-send-email 2.4.2",
        "Subject": "[dpdk-dev] [PATCH] mk: enable next abi in static libs",
        "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 and enable it only for static libraries.\nThe flag RTE_NEXT_ABI may be used to \"ifdef\" the new code.\nWhen the release is out, a dynamically linked application can use\nthe new shared libraries without rebuild 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.\n\nThe new option CONFIG_RTE_NEXT_ABI is not defined in the configuration\ntemplates because it is deduced from CONFIG_RTE_BUILD_SHARED_LIB.\nIt is automatically enabled for static libraries and disabled for\nshared libraries.\nIt can be forced to another value by editing the generated .config file.\nIt shouldn't be enabled for shared libraries because it would break the\nABI without changing the version number LIBABIVER. That's why a warning\nis printed in this case.\n\nThe guideline is also updated to integrate this new possibility.\n\nSigned-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>\n---\n doc/guides/guidelines/versioning.rst | 2 ++\n lib/Makefile                         | 4 ++++\n mk/rte.sdkconfig.mk                  | 3 +++\n pkg/dpdk.spec                        | 1 +\n scripts/validate-abi.sh              | 2 ++\n 5 files changed, 12 insertions(+)",
    "diff": "diff --git a/doc/guides/guidelines/versioning.rst b/doc/guides/guidelines/versioning.rst\nindex a1c9368..6bc2a8e 100644\n--- a/doc/guides/guidelines/versioning.rst\n+++ b/doc/guides/guidelines/versioning.rst\n@@ -57,6 +57,8 @@ being provided. The requirements for doing so are:\n \n #. A full deprecation cycle, as explained above, must be made to offer\n    downstream consumers sufficient warning of the change.\n+   The changes may be shown and used in static builds before the deprecation\n+   cycle by conditioning them with RTE_NEXT_ABI option.\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\ndiff --git a/lib/Makefile b/lib/Makefile\nindex 5f480f9..ebf56ba 100644\n--- a/lib/Makefile\n+++ b/lib/Makefile\n@@ -31,6 +31,10 @@\n \n include $(RTE_SDK)/mk/rte.vars.mk\n \n+ifeq '$(CONFIG_RTE_BUILD_SHARED_LIB)$(CONFIG_RTE_NEXT_ABI)' 'yy'\n+$(info WARNING: Shared libraries versioning is tainted!)\n+endif\n+\n DIRS-y += librte_compat\n DIRS-$(CONFIG_RTE_LIBRTE_EAL) += librte_eal\n DIRS-$(CONFIG_RTE_LIBRTE_MALLOC) += librte_malloc\ndiff --git a/mk/rte.sdkconfig.mk b/mk/rte.sdkconfig.mk\nindex f8d95b1..135825c 100644\n--- a/mk/rte.sdkconfig.mk\n+++ b/mk/rte.sdkconfig.mk\n@@ -77,6 +77,9 @@ $(RTE_OUTPUT)/.config: $(RTE_CONFIG_TEMPLATE) FORCE | $(RTE_OUTPUT)\n \t\t$(CPP) -undef -P -x assembler-with-cpp \\\n \t\t-ffreestanding \\\n \t\t-o $(RTE_OUTPUT)/.config_tmp $(RTE_CONFIG_TEMPLATE) ; \\\n+\t\tprintf 'CONFIG_RTE_NEXT_ABI=' >> $(RTE_OUTPUT)/.config_tmp ; \\\n+\t\tsed -n 's,CONFIG_RTE_BUILD_SHARED_LIB=,,p' $(RTE_OUTPUT)/.config_tmp | \\\n+\t\ttr 'yn' 'ny' >> $(RTE_OUTPUT)/.config_tmp ; \\\n \t\tif ! cmp -s $(RTE_OUTPUT)/.config_tmp $(RTE_OUTPUT)/.config; then \\\n \t\t\tcp $(RTE_OUTPUT)/.config_tmp $(RTE_OUTPUT)/.config ; \\\n \t\t\tcp $(RTE_OUTPUT)/.config_tmp $(RTE_OUTPUT)/.config.orig ; \\\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"
    ]
}