Show a cover letter.

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

{
    "id": 87207,
    "url": "https://patches.dpdk.org/api/covers/87207/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/cover/20210125141115.573122-1-bruce.richardson@intel.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<20210125141115.573122-1-bruce.richardson@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210125141115.573122-1-bruce.richardson@intel.com",
    "date": "2021-01-25T14:11:11",
    "name": "[v3,0/4] add checking of header includes",
    "submitter": {
        "id": 20,
        "url": "https://patches.dpdk.org/api/people/20/?format=api",
        "name": "Bruce Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/cover/20210125141115.573122-1-bruce.richardson@intel.com/mbox/",
    "series": [
        {
            "id": 14928,
            "url": "https://patches.dpdk.org/api/series/14928/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=14928",
            "date": "2021-01-25T14:11:12",
            "name": "add checking of header includes",
            "version": 3,
            "mbox": "https://patches.dpdk.org/series/14928/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/covers/87207/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 05650A052A;\n\tMon, 25 Jan 2021 15:11:57 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 92F6D140F48;\n\tMon, 25 Jan 2021 15:11:48 +0100 (CET)",
            "from mga01.intel.com (mga01.intel.com [192.55.52.88])\n by mails.dpdk.org (Postfix) with ESMTP id ADAB9140F40\n for <dev@dpdk.org>; Mon, 25 Jan 2021 15:11:46 +0100 (CET)",
            "from orsmga004.jf.intel.com ([10.7.209.38])\n by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 25 Jan 2021 06:11:24 -0800",
            "from silpixa00399126.ir.intel.com ([10.237.222.4])\n by orsmga004.jf.intel.com with ESMTP; 25 Jan 2021 06:11:22 -0800"
        ],
        "IronPort-SDR": [
            "\n 1JNGqsR1icUT2Qv25YitpkzicWD5JKPgIRUotQuruf7Oy/N2ORJGd72+yqxl1gHeGCrNGWJ8RP\n YX9mGz8ytWzA==",
            "\n RBGTOMZZpHnkxcOxKcOdbXBPBioFeu64b19poytUYfCK/4Qc9tbFfXi8vThwTMPbO8PjBgvFvY\n AEFPTvRQuGWQ=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9874\"; a=\"198511275\"",
            "E=Sophos;i=\"5.79,373,1602572400\"; d=\"scan'208\";a=\"198511275\"",
            "E=Sophos;i=\"5.79,373,1602572400\"; d=\"scan'208\";a=\"504149137\""
        ],
        "X-ExtLoop1": "1",
        "From": "Bruce Richardson <bruce.richardson@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "david.marchand@redhat.com, thomas@monjalon.net,\n Bruce Richardson <bruce.richardson@intel.com>",
        "Date": "Mon, 25 Jan 2021 14:11:11 +0000",
        "Message-Id": "<20210125141115.573122-1-bruce.richardson@intel.com>",
        "X-Mailer": "git-send-email 2.27.0",
        "In-Reply-To": "<20210114110606.21142-1-bruce.richardson@intel.com>",
        "References": "<20210114110606.21142-1-bruce.richardson@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v3 0/4] add checking of header 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.  The script \"check-includes.sh\" could be used\nfor this job, but it was not called out in the documentation, so many\ncontributors may not have been aware of it's existance. It also was\ndifficult to run from a source-code directory, as the script did not\nautomatically allow finding of headers from one DPDK library directory\nto another [this was probably based on running it on a build created by\nthe \"make\" build system, where all headers were in a single directory].\nTo attempt to have a build-system integrated replacement, this patchset\nadds a \"chkincs\" app in the buildtools directory to verify this on an\nongoing basis.\n\nThis chkincs app does nothing when run, and is not installed as part of\na DPDK \"ninja install\", it's for build-time checking only. Its source\ncode consists of one C file per public DPDK header, where that C file\ncontains nothing except an include for that header.  Therefore, if any\nheader is added to the lib folder which fails to compile when included\nalone, the build of chkincs will fail with a suitable error message.\nSince this compile checking is not needed on most builds of DPDK, the\nbuilding of chkincs is disabled by default, but can be enabled by the\n\"test_includes\" meson option. To catch errors with patch submissions,\nthe final patch of this series enables it for a single build in\ntest-meson-builds script.\n\nFuture work could involve doing similar checks on headers for C++\ncompatibility, which was something done by the check-includes.sh script\nbut which is missing here..\n\nV3:\n* Shrunk patchset as most header fixes already applied\n* Moved chkincs from \"apps\" to the \"buildtools\" directory, which is a\n  better location for something not for installation for end-user use.\n* Added patch to drop check-includes script.\n\nV2:\n* Add maintainers file entry for new app\n* Drop patch for c11 ring header\n* Use build variable \"headers_no_chkincs\" for tracking exceptions\n\nBruce Richardson (4):\n  eal: add missing include to mcslock\n  build: separate out headers for include checking\n  buildtools/chkincs: add app to verify header includes\n  devtools: remove check-includes script\n\n MAINTAINERS                                  |   5 +-\n buildtools/chkincs/gen_c_file_for_header.py  |  12 +\n buildtools/chkincs/main.c                    |   4 +\n buildtools/chkincs/meson.build               |  40 +++\n devtools/check-includes.sh                   | 259 -------------------\n devtools/test-meson-builds.sh                |   2 +-\n doc/guides/contributing/coding_style.rst     |  12 +\n lib/librte_eal/include/generic/rte_mcslock.h |   1 +\n lib/librte_eal/include/meson.build           |   2 +-\n lib/librte_eal/x86/include/meson.build       |  14 +-\n lib/librte_ethdev/meson.build                |   4 +-\n lib/librte_hash/meson.build                  |   4 +-\n lib/librte_ipsec/meson.build                 |   3 +-\n lib/librte_lpm/meson.build                   |   2 +-\n lib/librte_regexdev/meson.build              |   2 +-\n lib/librte_ring/meson.build                  |   4 +-\n lib/librte_stack/meson.build                 |   4 +-\n lib/librte_table/meson.build                 |   7 +-\n lib/meson.build                              |   3 +\n meson.build                                  |   6 +\n meson_options.txt                            |   2 +\n 21 files changed, 112 insertions(+), 280 deletions(-)\n create mode 100755 buildtools/chkincs/gen_c_file_for_header.py\n create mode 100644 buildtools/chkincs/main.c\n create mode 100644 buildtools/chkincs/meson.build\n delete mode 100755 devtools/check-includes.sh\n\n--\n2.27.0"
}