[{"id":38622,"web_url":"https://patchwork.libcamera.org/comment/38622/","msgid":"<20260417045357.GI1824072@killaraus.ideasonboard.com>","date":"2026-04-17T04:53:57","subject":"Re: [PATCH] cam: Add option to report libcamera version","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Fri, Apr 17, 2026 at 12:26:25AM +0100, Kieran Bingham wrote:\n> The cam tool is our swiss army knife for interogating libcamera.\n> \n> A frequently needed piece of information is to determine what version of\n> libcamera is installed or being run on a system.\n> \n> This information is available in the debug logs of libcamera when a\n> CameraManager is instantiated. However without actually starting the\n> CameraManager this information is not presented.\n> \n> Add an option to 'cam' to allow it to report the version.  Whilst this\n> is the version from the 'cam' command, it directly gets the version of\n> the libcamera library to which cam is linked.\n> \n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n> \n> Quite simply:\n> \n> kbingham@charm:~/iob/libcamera$ ./build/gcc/src/apps/cam/cam --version\n> libcamera version v0.7.0+89-ed4dd6bb-dirty (2026-04-17T00:18:37BST)\n> \n> \n> and\n> \n> kbingham@charm:~/iob/libcamera$ ./build/gcc/src/apps/cam/cam --help\n> Options:\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(+)\n> \n> diff --git a/src/apps/cam/main.cpp b/src/apps/cam/main.cpp\n> index 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>  \n> diff --git a/src/apps/cam/main.h b/src/apps/cam/main.h\n> index 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,","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 E22AFC324E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 17 Apr 2026 04:54:02 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 67FB662ECC;\n\tFri, 17 Apr 2026 06:54:01 +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 749CA62EC0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 17 Apr 2026 06:54:00 +0200 (CEST)","from killaraus.ideasonboard.com\n\t(2001-14ba-703d-e500--2a1.rev.dnainternet.fi\n\t[IPv6:2001:14ba:703d:e500::2a1])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 74F5A34;\n\tFri, 17 Apr 2026 06:52:25 +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=\"cVHILayV\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1776401545;\n\tbh=tCELFe5yoorBEYX0VF+R7zxHdj1BbWU2EIijjgTTbBw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=cVHILayVlPs0RsWRXW7heO0mNji4QOktt4zT6fdlpoiXcVU3+sRMbH3pVcOlHYYzv\n\t8GzrYh8cnkfVjqNJ2anBqQacBFbC3rLZeAQs53bMCxweTqU/5KIUZuTd5Nkf2Vgyz7\n\tI9JUrNAK1IQO2bHAxwowJmX1gS3kUxo2M9MOz4cY=","Date":"Fri, 17 Apr 2026 07:53:57 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Subject":"Re: [PATCH] cam: Add option to report libcamera version","Message-ID":"<20260417045357.GI1824072@killaraus.ideasonboard.com>","References":"<20260416232625.26758-1-kieran.bingham@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20260416232625.26758-1-kieran.bingham@ideasonboard.com>","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>"}},{"id":38623,"web_url":"https://patchwork.libcamera.org/comment/38623/","msgid":"<aeHWTV4oH6qmt9Xb@zed>","date":"2026-04-17T06:45:08","subject":"Re: [PATCH] cam: Add option to report libcamera version","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"Hi Kieran\n\nOn Fri, Apr 17, 2026 at 12:26:25AM +0100, Kieran Bingham wrote:\n> The cam tool is our swiss army knife for interogating libcamera.\n>\n> A frequently needed piece of information is to determine what version of\n> libcamera is installed or being run on a system.\n>\n> This information is available in the debug logs of libcamera when a\n> CameraManager is instantiated. However without actually starting the\n> CameraManager this information is not presented.\n>\n> Add an option to 'cam' to allow it to report the version.  Whilst this\n> is the version from the 'cam' command, it directly gets the version of\n> the libcamera library to which cam is linked.\n>\n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\nUseful indeed\nReviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\n> ---\n>\n> Quite simply:\n>\n> kbingham@charm:~/iob/libcamera$ ./build/gcc/src/apps/cam/cam --version\n> libcamera version v0.7.0+89-ed4dd6bb-dirty (2026-04-17T00:18:37BST)\n>\n>\n> and\n>\n> kbingham@charm:~/iob/libcamera$ ./build/gcc/src/apps/cam/cam --help\n> Options:\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(+)\n>\n> diff --git a/src/apps/cam/main.cpp b/src/apps/cam/main.cpp\n> index 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\nmmm, not the best to return an error, but I understand this is the\neasier way out\nReviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\n> +\t}\n> +\n>  \treturn 0;\n>  }\n>\n> diff --git a/src/apps/cam/main.h b/src/apps/cam/main.h\n> index 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> --\n> 2.53.0\n>","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 E09A0BDCBD\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 17 Apr 2026 06:45:14 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0506B62EC5;\n\tFri, 17 Apr 2026 08:45:14 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0137062EC0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 17 Apr 2026 08:45:11 +0200 (CEST)","from ideasonboard.com (net-93-65-100-155.cust.vodafonedsl.it\n\t[93.65.100.155])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 3341222F;\n\tFri, 17 Apr 2026 08:43:37 +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=\"lsyI+FP8\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1776408217;\n\tbh=HxvIjgrRZvqEzwQMSBBscIoKIQDLdEyy7u7SDexOvjM=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=lsyI+FP8z/jqiP+WLbLwBBTXu+n4rkptTyx2pmdspaRJibUtoLdD9jcrhenLT7ewv\n\tmTjl6b1jQPivWe4Hc3pCs1jQBSqsPI+QRgbE5CSrN+6f16QbXzy8un6x/DTt4OZEjX\n\tYmgWKXKehdyLc4/WUQgIef3UB44DzZJWVgaPFIgs=","Date":"Fri, 17 Apr 2026 08:45:08 +0200","From":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Subject":"Re: [PATCH] cam: Add option to report libcamera version","Message-ID":"<aeHWTV4oH6qmt9Xb@zed>","References":"<20260416232625.26758-1-kieran.bingham@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20260416232625.26758-1-kieran.bingham@ideasonboard.com>","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>"}}]