[{"id":17183,"web_url":"https://patchwork.libcamera.org/comment/17183/","msgid":"<c5159239-302c-13a8-1764-26147c24afad@ideasonboard.com>","date":"2021-05-24T09:42:06","subject":"Re: [libcamera-devel] [RFC PATCH 1/6] utils: ipc: Add script to\n\textract doxygen docs from mojom files","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi Paul,\n\nThanks for this work. The script, essentially the meat of the series, \nlooks great!\n\nOn 5/24/21 2:10 PM, Paul Elder wrote:\n> Add a script to extract doxygen documentation comments from mojom files.\n> It matches based on ^\\/\\*\\*$ for start of block and ^ \\*\\/$ for end of\n> block, and simply copies the comments to the output file along with a\n> header and the libcamera namespace.\n>\n> Also add it to the meson file so it is usable by other meson files.\n>\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\nAcked-by: Umang Jain <umang.jain@ideasonboard.com>\n> ---\n>   utils/ipc/extract-docs.py | 77 +++++++++++++++++++++++++++++++++++++++\n>   utils/ipc/meson.build     |  2 +\n>   2 files changed, 79 insertions(+)\n>   create mode 100755 utils/ipc/extract-docs.py\n>\n> diff --git a/utils/ipc/extract-docs.py b/utils/ipc/extract-docs.py\n> new file mode 100755\n> index 00000000..b6667057\n> --- /dev/null\n> +++ b/utils/ipc/extract-docs.py\n> @@ -0,0 +1,77 @@\n> +#!/usr/bin/env python3\n> +# SPDX-License-Identifier: GPL-2.0-or-later\n> +# Copyright (C) 2021, Google Inc.\n> +#\n> +# Author: Paul Elder <paul.elder@ideasonboard.com>\n> +#\n> +# extract-docs.py - Extract doxygen documentation from mojom files\n> +\n> +import argparse\n> +import re\n> +import sys\n> +\n> +regex_block_start = re.compile('^\\/\\*\\*$')\n> +regex_block_end = re.compile('^ \\*\\/$')\n> +\n> +\n> +def main(argv):\n> +\n> +    # Parse command line arguments\n> +    parser = argparse.ArgumentParser()\n> +    parser.add_argument('-o', dest='output', metavar='file', type=str,\n> +                        help='Output file name. Defaults to standard output if not specified.')\n> +    parser.add_argument('input', type=str,\n> +                        help='Input file name.')\n> +    args = parser.parse_args(argv[1:])\n> +\n> +    lines = open(args.input, 'r').readlines()\n> +    pipeline = args.input.split('/')[-1].replace('.mojom', '')\n> +    data = f'''\\\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/*\n> + * Copyright (C) 2021, Google Inc.\n> + *\n> + * {pipeline}_ipa_interface.cpp - Docs file for generated {pipeline}.mojom\n> + *\n> + * This file is auto-generated. Do not edit.\n> + */\n> +\n> +namespace libcamera {{\n> +\n> +'''\n> +\n> +    in_block = False\n> +    comment = ''\n> +    for lineno, line in enumerate(lines, start=1):\n> +        if regex_block_start.match(line):\n> +            if in_block:\n> +                raise SyntaxError('Expected end of comment',\n> +                                  (args.input, lineno, 1, line))\n> +            in_block = True\n> +            comment = line\n> +            continue\n> +\n> +        if regex_block_end.match(line):\n> +            if in_block:\n> +                comment += line\n> +                data += comment + '\\n'\n> +            in_block = False\n> +            continue\n> +\n> +        if in_block:\n> +            comment += line\n> +\n\nThe only bit I was wondering, if we needed a '\\n' after every block is \nextracted. But I guess, it makes /no/ difference to the doxygen if a \\n \nis present between blocks.\n> +    data += '} /* namespace libcamera */\\n'\n> +\n> +    if args.output:\n> +        output = open(args.output, 'wb')\n> +        output.write(data.encode('utf-8'))\n> +        output.close()\n> +    else:\n> +        sys.stdout.write(data)\n> +\n> +    return 0\n> +\n> +\n> +if __name__ == '__main__':\n> +    sys.exit(main(sys.argv))\n> diff --git a/utils/ipc/meson.build b/utils/ipc/meson.build\n> index 4a41b9c1..973a5417 100644\n> --- a/utils/ipc/meson.build\n> +++ b/utils/ipc/meson.build\n> @@ -8,6 +8,8 @@ mojom_parser = find_program('./parser.py')\n>   \n>   mojom_generator = find_program('./generate.py')\n>   \n> +mojom_docs_extractor = find_program('./extract-docs.py')\n> +\n>   mojom_templates = custom_target('mojom_templates',\n>                                   input : mojom_template_files,\n>                                   output : 'libcamera_templates.zip',","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 1BC18C3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 24 May 2021 09:42:16 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id ABC4E68919;\n\tMon, 24 May 2021 11:42:15 +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 C27AC602B1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 24 May 2021 11:42:13 +0200 (CEST)","from localhost.localdomain (unknown [103.251.226.203])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 993D61315;\n\tMon, 24 May 2021 11:42:12 +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=\"LhQscPWU\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1621849333;\n\tbh=KVL5mFHJIdcxRtwi+tcEuSb2wF6bqkKpf0A2quvfavc=;\n\th=Subject:To:References:From:Date:In-Reply-To:From;\n\tb=LhQscPWU6Rwc45ZB5/9+TQHQwvpPmvMw+kbZii9xifjvsOSh0NzEPVU7U3mBU2FAH\n\t2g/9e+gs4zEaMSzd66yYhYxUcPjTWe+z55Sv3nlEHlU84djRxyfsK/ZbgWITVne/8/\n\tM81Wow9Fm3wEbzknnIONvDtlvueaXDKPJnnu6dvM=","To":"Paul Elder <paul.elder@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20210524084029.1179881-1-paul.elder@ideasonboard.com>\n\t<20210524084029.1179881-2-paul.elder@ideasonboard.com>","From":"Umang Jain <umang.jain@ideasonboard.com>","Message-ID":"<c5159239-302c-13a8-1764-26147c24afad@ideasonboard.com>","Date":"Mon, 24 May 2021 15:12:06 +0530","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.11.0","MIME-Version":"1.0","In-Reply-To":"<20210524084029.1179881-2-paul.elder@ideasonboard.com>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Transfer-Encoding":"7bit","Content-Language":"en-US","Subject":"Re: [libcamera-devel] [RFC PATCH 1/6] utils: ipc: Add script to\n\textract doxygen docs from mojom files","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":17185,"web_url":"https://patchwork.libcamera.org/comment/17185/","msgid":"<20210524094945.GL902042@pyrite.rasen.tech>","date":"2021-05-24T09:49:45","subject":"Re: [libcamera-devel] [RFC PATCH 1/6] utils: ipc: Add script to\n\textract doxygen docs from mojom files","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi Umang,\n\nOn Mon, May 24, 2021 at 03:12:06PM +0530, Umang Jain wrote:\n> Hi Paul,\n> \n> Thanks for this work. The script, essentially the meat of the series, looks\n> great!\n\n\\o/ thanks!\n\n> \n> On 5/24/21 2:10 PM, Paul Elder wrote:\n> > Add a script to extract doxygen documentation comments from mojom files.\n> > It matches based on ^\\/\\*\\*$ for start of block and ^ \\*\\/$ for end of\n> > block, and simply copies the comments to the output file along with a\n> > header and the libcamera namespace.\n> > \n> > Also add it to the meson file so it is usable by other meson files.\n> > \n> > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> Acked-by: Umang Jain <umang.jain@ideasonboard.com>\n> > ---\n> >   utils/ipc/extract-docs.py | 77 +++++++++++++++++++++++++++++++++++++++\n> >   utils/ipc/meson.build     |  2 +\n> >   2 files changed, 79 insertions(+)\n> >   create mode 100755 utils/ipc/extract-docs.py\n> > \n> > diff --git a/utils/ipc/extract-docs.py b/utils/ipc/extract-docs.py\n> > new file mode 100755\n> > index 00000000..b6667057\n> > --- /dev/null\n> > +++ b/utils/ipc/extract-docs.py\n> > @@ -0,0 +1,77 @@\n> > +#!/usr/bin/env python3\n> > +# SPDX-License-Identifier: GPL-2.0-or-later\n> > +# Copyright (C) 2021, Google Inc.\n> > +#\n> > +# Author: Paul Elder <paul.elder@ideasonboard.com>\n> > +#\n> > +# extract-docs.py - Extract doxygen documentation from mojom files\n> > +\n> > +import argparse\n> > +import re\n> > +import sys\n> > +\n> > +regex_block_start = re.compile('^\\/\\*\\*$')\n> > +regex_block_end = re.compile('^ \\*\\/$')\n> > +\n> > +\n> > +def main(argv):\n> > +\n> > +    # Parse command line arguments\n> > +    parser = argparse.ArgumentParser()\n> > +    parser.add_argument('-o', dest='output', metavar='file', type=str,\n> > +                        help='Output file name. Defaults to standard output if not specified.')\n> > +    parser.add_argument('input', type=str,\n> > +                        help='Input file name.')\n> > +    args = parser.parse_args(argv[1:])\n> > +\n> > +    lines = open(args.input, 'r').readlines()\n> > +    pipeline = args.input.split('/')[-1].replace('.mojom', '')\n> > +    data = f'''\\\n> > +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> > +/*\n> > + * Copyright (C) 2021, Google Inc.\n> > + *\n> > + * {pipeline}_ipa_interface.cpp - Docs file for generated {pipeline}.mojom\n> > + *\n> > + * This file is auto-generated. Do not edit.\n> > + */\n> > +\n> > +namespace libcamera {{\n> > +\n> > +'''\n> > +\n> > +    in_block = False\n> > +    comment = ''\n> > +    for lineno, line in enumerate(lines, start=1):\n> > +        if regex_block_start.match(line):\n> > +            if in_block:\n> > +                raise SyntaxError('Expected end of comment',\n> > +                                  (args.input, lineno, 1, line))\n> > +            in_block = True\n> > +            comment = line\n> > +            continue\n> > +\n> > +        if regex_block_end.match(line):\n> > +            if in_block:\n> > +                comment += line\n> > +                data += comment + '\\n'\n> > +            in_block = False\n> > +            continue\n> > +\n> > +        if in_block:\n> > +            comment += line\n> > +\n> \n> The only bit I was wondering, if we needed a '\\n' after every block is\n> extracted. But I guess, it makes /no/ difference to the doxygen if a \\n is\n> present between blocks.\n\nIt's not really necessary, but I like generated code to be at least\nreadable, and I think a blank line in between blocks helps with that.\n\nI have a bunch of those in the generated code for IPC too.\n\n\nPaul\n\n> > +    data += '} /* namespace libcamera */\\n'\n> > +\n> > +    if args.output:\n> > +        output = open(args.output, 'wb')\n> > +        output.write(data.encode('utf-8'))\n> > +        output.close()\n> > +    else:\n> > +        sys.stdout.write(data)\n> > +\n> > +    return 0\n> > +\n> > +\n> > +if __name__ == '__main__':\n> > +    sys.exit(main(sys.argv))\n> > diff --git a/utils/ipc/meson.build b/utils/ipc/meson.build\n> > index 4a41b9c1..973a5417 100644\n> > --- a/utils/ipc/meson.build\n> > +++ b/utils/ipc/meson.build\n> > @@ -8,6 +8,8 @@ mojom_parser = find_program('./parser.py')\n> >   mojom_generator = find_program('./generate.py')\n> > +mojom_docs_extractor = find_program('./extract-docs.py')\n> > +\n> >   mojom_templates = custom_target('mojom_templates',\n> >                                   input : mojom_template_files,\n> >                                   output : 'libcamera_templates.zip',\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 8BDC8C3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 24 May 2021 09:49:55 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F095768919;\n\tMon, 24 May 2021 11:49:54 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D9AAE602B1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 24 May 2021 11:49:53 +0200 (CEST)","from pyrite.rasen.tech (unknown\n\t[IPv6:2400:4051:61:600:2c71:1b79:d06d:5032])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 532791315;\n\tMon, 24 May 2021 11:49:52 +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=\"AwW/H9b1\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1621849793;\n\tbh=s/djktg/UP6h44WomQftWj6wx8xmBM8eYdu9clvyAog=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=AwW/H9b1iEXnXLOmXad4gkZghBAN+C/4RCDJoe16/Yw7iYmQ9cMpCnTz7Pgbjjx8e\n\thi8xWkyA72/3JZpOiNb6EjoASJ5I+yDlKLxK2Pr52yvc+VfuEzWPl0vehyNnp8ykDi\n\tswz8Vs930t2AgbCgDBypV5XN3atdDsBiLwKAGnd4=","Date":"Mon, 24 May 2021 18:49:45 +0900","From":"paul.elder@ideasonboard.com","To":"Umang Jain <umang.jain@ideasonboard.com>","Message-ID":"<20210524094945.GL902042@pyrite.rasen.tech>","References":"<20210524084029.1179881-1-paul.elder@ideasonboard.com>\n\t<20210524084029.1179881-2-paul.elder@ideasonboard.com>\n\t<c5159239-302c-13a8-1764-26147c24afad@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<c5159239-302c-13a8-1764-26147c24afad@ideasonboard.com>","Subject":"Re: [libcamera-devel] [RFC PATCH 1/6] utils: ipc: Add script to\n\textract doxygen docs from mojom files","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":17202,"web_url":"https://patchwork.libcamera.org/comment/17202/","msgid":"<YKunBG/YHOby+auV@pendragon.ideasonboard.com>","date":"2021-05-24T13:15:48","subject":"Re: [libcamera-devel] [RFC PATCH 1/6] utils: ipc: Add script to\n\textract doxygen docs from mojom files","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Paul,\n\nThank you for the patch.\n\nOn Mon, May 24, 2021 at 05:40:24PM +0900, Paul Elder wrote:\n> Add a script to extract doxygen documentation comments from mojom files.\n> It matches based on ^\\/\\*\\*$ for start of block and ^ \\*\\/$ for end of\n> block, and simply copies the comments to the output file along with a\n> header and the libcamera namespace.\n> \n> Also add it to the meson file so it is usable by other meson files.\n> \n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> ---\n>  utils/ipc/extract-docs.py | 77 +++++++++++++++++++++++++++++++++++++++\n>  utils/ipc/meson.build     |  2 +\n>  2 files changed, 79 insertions(+)\n>  create mode 100755 utils/ipc/extract-docs.py\n> \n> diff --git a/utils/ipc/extract-docs.py b/utils/ipc/extract-docs.py\n> new file mode 100755\n> index 00000000..b6667057\n> --- /dev/null\n> +++ b/utils/ipc/extract-docs.py\n> @@ -0,0 +1,77 @@\n> +#!/usr/bin/env python3\n> +# SPDX-License-Identifier: GPL-2.0-or-later\n> +# Copyright (C) 2021, Google Inc.\n> +#\n> +# Author: Paul Elder <paul.elder@ideasonboard.com>\n> +#\n> +# extract-docs.py - Extract doxygen documentation from mojom files\n> +\n> +import argparse\n> +import re\n> +import sys\n> +\n> +regex_block_start = re.compile('^\\/\\*\\*$')\n> +regex_block_end = re.compile('^ \\*\\/$')\n\nThis may be a bit fragile, but it should do for now.\n\n> +\n> +\n> +def main(argv):\n> +\n> +    # Parse command line arguments\n> +    parser = argparse.ArgumentParser()\n> +    parser.add_argument('-o', dest='output', metavar='file', type=str,\n> +                        help='Output file name. Defaults to standard output if not specified.')\n\nYou could use argparse's native support for files:\n\n    parser.add_argument('-o', '--output', metavar='file',\n                        type=argparse.FileType('w', encoding='utf-8'),\n                        default=sys.stdout,\n                        help='Output file name (default: standard output)')\n\n> +    parser.add_argument('input', type=str,\n> +                        help='Input file name.')\n> +    args = parser.parse_args(argv[1:])\n> +\n> +    lines = open(args.input, 'r').readlines()\n> +    pipeline = args.input.split('/')[-1].replace('.mojom', '')\n> +    data = f'''\\\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/*\n> + * Copyright (C) 2021, Google Inc.\n> + *\n> + * {pipeline}_ipa_interface.cpp - Docs file for generated {pipeline}.mojom\n> + *\n> + * This file is auto-generated. Do not edit.\n> + */\n> +\n> +namespace libcamera {{\n> +\n> +'''\n> +\n> +    in_block = False\n> +    comment = ''\n> +    for lineno, line in enumerate(lines, start=1):\n> +        if regex_block_start.match(line):\n> +            if in_block:\n> +                raise SyntaxError('Expected end of comment',\n> +                                  (args.input, lineno, 1, line))\n> +            in_block = True\n> +            comment = line\n> +            continue\n> +\n> +        if regex_block_end.match(line):\n> +            if in_block:\n> +                comment += line\n> +                data += comment + '\\n'\n> +            in_block = False\n> +            continue\n> +\n> +        if in_block:\n> +            comment += line\n> +\n> +    data += '} /* namespace libcamera */\\n'\n> +\n> +    if args.output:\n> +        output = open(args.output, 'wb')\n> +        output.write(data.encode('utf-8'))\n> +        output.close()\n> +    else:\n> +        sys.stdout.write(data)\n\nAnd all this would become\n\n    args.output.write(data)\n\nYou could also call args.output.write() to write the header, the\ncomments and the footer seperately, instead of accumulating comments in\nthe data variable. Up to you.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> +\n> +    return 0\n> +\n> +\n> +if __name__ == '__main__':\n> +    sys.exit(main(sys.argv))\n> diff --git a/utils/ipc/meson.build b/utils/ipc/meson.build\n> index 4a41b9c1..973a5417 100644\n> --- a/utils/ipc/meson.build\n> +++ b/utils/ipc/meson.build\n> @@ -8,6 +8,8 @@ mojom_parser = find_program('./parser.py')\n>  \n>  mojom_generator = find_program('./generate.py')\n>  \n> +mojom_docs_extractor = find_program('./extract-docs.py')\n> +\n>  mojom_templates = custom_target('mojom_templates',\n>                                  input : mojom_template_files,\n>                                  output : 'libcamera_templates.zip',","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 97028C3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 24 May 2021 13:15:55 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 02648602B0;\n\tMon, 24 May 2021 15:15:55 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 67B25601AA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 24 May 2021 15:15:53 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E012BED;\n\tMon, 24 May 2021 15:15:51 +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=\"UJAm5qJ/\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1621862152;\n\tbh=+DwBgPIUhJpb/qUwHQ5wNN+fEjf1TuYO8Kmiw/EM6Gk=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=UJAm5qJ/EHBglqc+DAS4vm8RaGiPyQd+9pDLjaTGwvtwP/eQBuCQeBpIPVNm7a9Pa\n\tkluG6h9fbUPUbkyNTA/ZaVaESYjkf0wtwloBB1nhewnzdCtl28W6PUwD8cWYhDiD6t\n\tt8HEgip/itTslQxK7tp/PuoPkeKygCiz6SHzBc3E=","Date":"Mon, 24 May 2021 16:15:48 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<YKunBG/YHOby+auV@pendragon.ideasonboard.com>","References":"<20210524084029.1179881-1-paul.elder@ideasonboard.com>\n\t<20210524084029.1179881-2-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210524084029.1179881-2-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [RFC PATCH 1/6] utils: ipc: Add script to\n\textract doxygen docs from mojom files","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]