Show a patch.

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

{
    "id": 26520,
    "url": "https://patchwork.libcamera.org/api/patches/26520/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/26520/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20260416232625.26758-1-kieran.bingham@ideasonboard.com>",
    "date": "2026-04-16T23:26:25",
    "name": "cam: Add option to report libcamera version",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "aba673ab75f27a4382904a9107111e3ff248ba72",
    "submitter": {
        "id": 4,
        "url": "https://patchwork.libcamera.org/api/people/4/?format=api",
        "name": "Kieran Bingham",
        "email": "kieran.bingham@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/26520/mbox/",
    "series": [
        {
            "id": 5882,
            "url": "https://patchwork.libcamera.org/api/series/5882/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5882",
            "date": "2026-04-16T23:26:25",
            "name": "cam: Add option to report libcamera version",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/5882/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/26520/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/26520/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>",
        "X-Original-To": "parsemail@patchwork.libcamera.org",
        "Delivered-To": "parsemail@patchwork.libcamera.org",
        "Received": [
            "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 8D86ABDCBD\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 16 Apr 2026 23:26:36 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8FD5662EC5;\n\tFri, 17 Apr 2026 01:26:35 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BAB3762647\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 17 Apr 2026 01:26:33 +0200 (CEST)",
            "from charm.ideasonboard.com (ams.linuxembedded.co.uk\n\t[209.38.108.23])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A48EA2EC;\n\tFri, 17 Apr 2026 01:24:58 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"C3gAX1mO\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1776381898;\n\tbh=sg2I9f0iOT5N7mHWPfPQIcxBtJRDMAe5UZqL/+3WO9g=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=C3gAX1mObE6sJN3mREy932fyGlBtn3sNqzjK5W+KX8XI0z0imVOuxuMyKHlVALWnM\n\twF9u23KAciI5fZSNdRpmnN4o2VIwHt+Hy8uQXpPP2L9+KjtdTEsNaaWhI1JKPauX3+\n\tfYC1emmfjlrL6uafCWggKiDrrAU+cfcmq8LDnBC8=",
        "From": "Kieran Bingham <kieran.bingham@ideasonboard.com>",
        "To": "libcamera devel <libcamera-devel@lists.libcamera.org>",
        "Cc": "Kieran Bingham <kieran.bingham@ideasonboard.com>",
        "Subject": "[PATCH] cam: Add option to report libcamera version",
        "Date": "Fri, 17 Apr 2026 00:26:25 +0100",
        "Message-ID": "<20260416232625.26758-1-kieran.bingham@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.53.0",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "libcamera-devel@lists.libcamera.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "<libcamera-devel.lists.libcamera.org>",
        "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>",
        "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>",
        "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>",
        "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "The cam tool is our swiss army knife for interogating libcamera.\n\nA frequently needed piece of information is to determine what version of\nlibcamera is installed or being run on a system.\n\nThis information is available in the debug logs of libcamera when a\nCameraManager is instantiated. However without actually starting the\nCameraManager this information is not presented.\n\nAdd an option to 'cam' to allow it to report the version.  Whilst this\nis the version from the 'cam' command, it directly gets the version of\nthe libcamera library to which cam is linked.\n\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n\nQuite simply:\n\nkbingham@charm:~/iob/libcamera$ ./build/gcc/src/apps/cam/cam --version\nlibcamera version v0.7.0+89-ed4dd6bb-dirty (2026-04-17T00:18:37BST)\n\n\nand\n\nkbingham@charm:~/iob/libcamera$ ./build/gcc/src/apps/cam/cam --help\nOptions:\n  -c, --camera camera ...                               Specify which camera to operate on, by id or by index\n  -h, --help                                            Display this help message\n  -v, --version                                         Display libcamera version information\n  -I, --info                                            Display information about stream(s)\n.... <snip remaining usage help> ...\n\n\n\n src/apps/cam/main.cpp | 8 ++++++++\n src/apps/cam/main.h   | 1 +\n 2 files changed, 9 insertions(+)",
    "diff": "diff --git a/src/apps/cam/main.cpp b/src/apps/cam/main.cpp\nindex 029f518f7294..120917eb632d 100644\n--- a/src/apps/cam/main.cpp\n+++ b/src/apps/cam/main.cpp\n@@ -126,6 +126,8 @@ int CamApp::parseOptions(int argc, char *argv[])\n \t\t\t ArgumentRequired, \"camera\", true);\n \tparser.addOption(OptHelp, OptionNone, \"Display this help message\",\n \t\t\t \"help\");\n+\tparser.addOption(OptVersion, OptionNone, \"Display libcamera version information\",\n+\t\t\t \"version\");\n \tparser.addOption(OptInfo, OptionNone,\n \t\t\t \"Display information about stream(s)\", \"info\");\n \tparser.addOption(OptList, OptionNone, \"List all cameras\", \"list\");\n@@ -197,6 +199,12 @@ int CamApp::parseOptions(int argc, char *argv[])\n \t\treturn options_.empty() ? -EINVAL : -EINTR;\n \t}\n \n+\tif (options_.isSet(OptVersion)) {\n+\t\tconst std::string &version = CameraManager::version();\n+\t\tstd::cout << \"libcamera version \" << version << std::endl;\n+\t\treturn -EINTR;\n+\t}\n+\n \treturn 0;\n }\n \ndiff --git a/src/apps/cam/main.h b/src/apps/cam/main.h\nindex 64e6a20e8668..9bec1e712dfb 100644\n--- a/src/apps/cam/main.h\n+++ b/src/apps/cam/main.h\n@@ -20,6 +20,7 @@ enum {\n \tOptOrientation = 'o',\n \tOptSDL = 'S',\n \tOptStream = 's',\n+\tOptVersion = 'v',\n \tOptListControls = 256,\n \tOptStrictFormats = 257,\n \tOptMetadata = 258,\n",
    "prefixes": []
}