Show a cover letter.

GET /api/covers/86591/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 86591,
    "url": "http://patches.dpdk.org/api/covers/86591/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20210114110606.21142-1-bruce.richardson@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": "<20210114110606.21142-1-bruce.richardson@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210114110606.21142-1-bruce.richardson@intel.com",
    "date": "2021-01-14T11:05:46",
    "name": "[00/20] ensure headers have correct includes",
    "submitter": {
        "id": 20,
        "url": "http://patches.dpdk.org/api/people/20/?format=api",
        "name": "Bruce Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20210114110606.21142-1-bruce.richardson@intel.com/mbox/",
    "series": [
        {
            "id": 14751,
            "url": "http://patches.dpdk.org/api/series/14751/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=14751",
            "date": "2021-01-14T11:05:46",
            "name": "ensure headers have correct includes",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/14751/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/86591/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 6B383A0A02;\n\tThu, 14 Jan 2021 12:06:16 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 5A613141142;\n\tThu, 14 Jan 2021 12:06:16 +0100 (CET)",
            "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n by mails.dpdk.org (Postfix) with ESMTP id 34BB0141134\n for <dev@dpdk.org>; Thu, 14 Jan 2021 12:06:14 +0100 (CET)",
            "from orsmga005.jf.intel.com ([10.7.209.41])\n by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 14 Jan 2021 03:06:14 -0800",
            "from silpixa00399126.ir.intel.com ([10.237.222.4])\n by orsmga005.jf.intel.com with ESMTP; 14 Jan 2021 03:06:12 -0800"
        ],
        "IronPort-SDR": [
            "\n 1zdZotBI4M1pkRN1DspAeb929GgLM9Y08p0ESEbLY9i/sjFTUEZ3vBO6A1Ytr2S4EuGqi6gZhq\n +H6qGMW5uncQ==",
            "\n 4y0IVrTXeYlauWK6/2vNNfbcOp0zudZNGic+tlqoLa8qWKfiZCjTEoGyfYVK/1ULBncjc3oBYF\n vQmLfury/y4A=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9863\"; a=\"175765753\"",
            "E=Sophos;i=\"5.79,347,1602572400\"; d=\"scan'208\";a=\"175765753\"",
            "E=Sophos;i=\"5.79,347,1602572400\"; d=\"scan'208\";a=\"568139766\""
        ],
        "X-ExtLoop1": "1",
        "From": "Bruce Richardson <bruce.richardson@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "Bruce Richardson <bruce.richardson@intel.com>",
        "Date": "Thu, 14 Jan 2021 11:05:46 +0000",
        "Message-Id": "<20210114110606.21142-1-bruce.richardson@intel.com>",
        "X-Mailer": "git-send-email 2.27.0",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH 00/20] ensure headers have correct includes",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "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": "As a general principle, each header file should include any other\nheaders it needs to provide data type definitions or macros. For\nexample, any header using the uintX_t types in structures or function\nprototypes should include \"stdint.h\" to provide those type definitions.\n\nIn practice, while many, but not all, headers in DPDK did include all\nnecessary headers, it was never actually checked that each header could\nbe included in a C file and compiled without having any compiler errors\nabout missing definitions. This patchset fixes any missing includes in\npublic headers from the DPDK \"lib\" folder and then adds a \"chkincs\" app.\nto verify this on an ongoing basis.\n\nThis chkincs app does nothing when run, it's for build-time checking\nonly. Its source code consists of one C file per public DPDK header,\nwhere that C file contains nothing except an include for that header.\nTherefore, if any header is added to the lib folder which fails to\ncompile when included alone, the build of chkincs will fail with a\nsuitable error message. Since this compile checking is not needed on\nmost builds of DPDK, the building of chkincs is disabled by default, but\ncan be enabled by the \"test_includes\" meson option. To catch errors with\npatch submissions, the final patch of this series enables it for a\nsingle build in test-meson-builds script.\n\nFuture work could involve doing similar checks on headers for C++ compatibility,\nfor example.\n\nBruce Richardson (20):\n  eal: fix missing header inclusion\n  telemetry: fix missing header include\n  ethdev: fix missing header include\n  ring: fix missing includes for c11 model header\n  net: fix missing header include\n  mbuf: fix missing header include\n  bitratestats: fix missing header include\n  rib: fix missing header includes\n  vhost: fix missing header includes\n  ipsec: fix missing header include\n  fib: fix missing header includes\n  table: fix missing header include\n  pipeline: fix missing header includes\n  metrics: fix variable declaration in header\n  node: fix missing header include\n  app: fix extra include paths for app builds\n  app/chkincs: add chkincs app to verify headers\n  eal: add missing include to mcslock\n  eal/x86: add architecture-specific headers to chkincs\n  test-meson-builds: add includes check to default x86 build\n\n app/chkincs/gen_c_file_for_header.py         | 53 ++++++++++++++++++++\n app/chkincs/main.c                           |  4 ++\n app/chkincs/meson.build                      | 28 +++++++++++\n app/meson.build                              |  2 +\n devtools/test-meson-builds.sh                |  2 +-\n lib/librte_bitratestats/rte_bitrate.h        |  1 +\n lib/librte_eal/include/generic/rte_mcslock.h |  1 +\n lib/librte_eal/include/rte_reciprocal.h      |  1 +\n lib/librte_eal/x86/include/meson.build       |  1 +\n lib/librte_ethdev/rte_eth_ctrl.h             |  1 +\n lib/librte_fib/rte_fib.h                     |  1 +\n lib/librte_fib/rte_fib6.h                    |  1 +\n lib/librte_ipsec/rte_ipsec_sad.h             |  1 +\n lib/librte_mbuf/rte_mbuf_core.h              |  1 +\n lib/librte_mbuf/rte_mbuf_dyn.h               |  3 ++\n lib/librte_metrics/rte_metrics_telemetry.c   |  2 +\n lib/librte_metrics/rte_metrics_telemetry.h   |  2 -\n lib/librte_net/rte_geneve.h                  |  1 +\n lib/librte_node/rte_node_ip4_api.h           |  1 +\n lib/librte_pipeline/rte_swx_ctl.h            |  1 +\n lib/librte_pipeline/rte_swx_pipeline.h       |  1 +\n lib/librte_rib/rte_rib.h                     |  2 +\n lib/librte_ring/rte_ring_c11_mem.h           |  4 ++\n lib/librte_table/rte_lru_x86.h               |  1 +\n lib/librte_telemetry/rte_telemetry.h         |  1 +\n lib/librte_vhost/rte_vdpa.h                  |  2 +\n lib/librte_vhost/rte_vdpa_dev.h              |  1 +\n lib/librte_vhost/rte_vhost_crypto.h          |  7 +++\n lib/meson.build                              |  1 +\n meson.build                                  |  1 +\n meson_options.txt                            |  2 +\n 31 files changed, 128 insertions(+), 3 deletions(-)\n create mode 100755 app/chkincs/gen_c_file_for_header.py\n create mode 100644 app/chkincs/main.c\n create mode 100644 app/chkincs/meson.build\n\n--\n2.27.0"
}