[{"id":25405,"web_url":"https://patchwork.libcamera.org/comment/25405/","msgid":"<Y0bUZLyhXVkxAAja@pendragon.ideasonboard.com>","date":"2022-10-12T14:51:16","subject":"Re: [libcamera-devel] [PATCH v3 2/5] meson: Shared Object version\n\thandling","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nThank you for the patch.\n\nOn Mon, Oct 10, 2022 at 06:32:11PM +0100, Kieran Bingham via libcamera-devel wrote:\n> The libcamera project is not yet ready to declare ABI nor API stability,\n> but it will benefit the community to be able to provide more regular\n> release cycles to determine 'versioned' points of history.\n> \n> Ideally, these releases will be made at any ABI breakage, but can be\n> made at arbitary time based points along the way.\n> \n> To support releases which may not be ABI stable, declare the soversion\n> of both the libcamera and libcamera-base library to be dependant upon\n> both the major and minor component of the project version.\n> \n> As part of this, introduce a new 'Versions' summary section to highlight\n> the different version components that may become apparent within any\n> given build.\n> \n> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> ---\n> v3:\n>  - fix typo\n>  - Use libcamera_version directly for SONAME.\n>  - Fix ordering of EXCLUDE_PATTERNS\n>  - Use meson.project_version() in the event the git versions\n>    are incorrect.\n>  - No need to present libcamera_version anymore\n>    - Guaranteed to be the same as 'project_version'\n> \n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> ---\n>  Documentation/Doxyfile.in      |  4 +++-\n>  meson.build                    | 23 +++++++++++++++++++++++\n>  src/libcamera/base/meson.build |  1 +\n>  src/libcamera/meson.build      |  1 +\n>  4 files changed, 28 insertions(+), 1 deletion(-)\n> \n> diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in\n> index 88dfcddaebf6..e87bb2b42c5e 100644\n> --- a/Documentation/Doxyfile.in\n> +++ b/Documentation/Doxyfile.in\n> @@ -51,7 +51,9 @@ EXCLUDE_PATTERNS       = @TOP_BUILDDIR@/include/libcamera/ipa/*_serializer.h \\\n>                           @TOP_BUILDDIR@/include/libcamera/ipa/ipu3_*.h \\\n>                           @TOP_BUILDDIR@/include/libcamera/ipa/raspberrypi_*.h \\\n>                           @TOP_BUILDDIR@/include/libcamera/ipa/rkisp1_*.h \\\n> -                         @TOP_BUILDDIR@/include/libcamera/ipa/vimc_*.h\n> +                         @TOP_BUILDDIR@/include/libcamera/ipa/vimc_*.h \\\n> +                         @TOP_BUILDDIR@/src/libcamera/libcamera.so* \\\n> +                         @TOP_BUILDDIR@/src/libcamera/base/libcamera-base.so*\n\nI'm still getting\n\nwarning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/libcamera.so.0' is not a readable file or directory... skipping.\nwarning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/libcamera.so' is not a readable file or directory... skipping.\nwarning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/base/libcamera-base.so.0' is not a readable file or directory... skipping.\n\ndespite this.\n\nI was hoping that EXCLUDE_SYMLINKS would fix it, but that's not the\ncase. Doxygen prints the warning before checking if the file is a\nsymlink. It should be easily fixable in Doxygen, I may even send a\npatch. Should we set EXCLUDE_SYMLINKS to prepare for that, and drop the\nEXCLUDE_PATTERNS change ?\n\n>  \n>  EXCLUDE_SYMBOLS        = libcamera::BoundMethodArgs \\\n>                           libcamera::BoundMethodBase \\\n> diff --git a/meson.build b/meson.build\n> index 2c6173b4f97e..3e2bcc0de2c3 100644\n> --- a/meson.build\n> +++ b/meson.build\n> @@ -26,6 +26,29 @@ endif\n>  \n>  libcamera_version = libcamera_git_version.split('+')[0]\n>  \n> +# A shallow clone, or a clone without a reachable tag equivalent to the\n> +# meson.project_version() could leave the project in a mis-described state.\n> +# Produce a warning in this event, and fix to a best effort.\n\nFor a moment I wondered what we should do if there's a git tag more\nrecent than the meson project version. Then I thought whoever does that\nwould probably deserve an Undefined Behaviour (TM) that would have at\nleast a 50% change of sudo rm -rf /. As we're nice people, let's just\nignore this case :-)\n\n> +if libcamera_version != meson.project_version()\n> +    warning('The sources disagree about the version: '\n> +            + libcamera_version + ' != ' + meson.project_version())\n> +\n> +    libcamera_version = meson.project_version()\n> +    libcamera_git_version = libcamera_version + '+' + libcamera_git_version.split('+')[1]\n> +    summary({'Source version override': true}, section : 'Versions')\n\nMaybe bool_yn to match the the rest of our summary sections ? It will by\ndefault (on terminals that support it) print YES in green and NO in red,\nso if we phrased this message the other way around (for instance 'Source\nversion match' : false) it would appear more prominantly as something\nbad. Entirely up to you.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> +endif\n> +\n> +# Until we make ABI compatible releases, the full libcamera version is used as\n> +# the soname.\n> +libcamera_soversion = libcamera_version\n> +\n> +summary({\n> +            'project': meson.project_version(),\n> +            'sources': libcamera_git_version,\n> +            'soname': libcamera_soversion,\n> +        },\n> +        section : 'Versions')\n> +\n>  # This script generates the .tarball-version file on a 'meson dist' command.\n>  meson.add_dist_script('utils/run-dist.sh')\n>  \n> diff --git a/src/libcamera/base/meson.build b/src/libcamera/base/meson.build\n> index 7a75914ab2a8..7a7fd7e4ca87 100644\n> --- a/src/libcamera/base/meson.build\n> +++ b/src/libcamera/base/meson.build\n> @@ -51,6 +51,7 @@ libcamera_base_args = [ '-DLIBCAMERA_BASE_PRIVATE' ]\n>  libcamera_base_lib = shared_library('libcamera-base',\n>                                      [libcamera_base_sources, libcamera_base_headers],\n>                                      version : libcamera_version,\n> +                                    soversion : libcamera_soversion,\n>                                      name_prefix : '',\n>                                      install : true,\n>                                      cpp_args : libcamera_base_args,\n> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\n> index 7fcbb2ddc9e7..5f39d2e2c60a 100644\n> --- a/src/libcamera/meson.build\n> +++ b/src/libcamera/meson.build\n> @@ -161,6 +161,7 @@ libcamera_deps = [\n>  libcamera = shared_library('libcamera',\n>                             libcamera_sources,\n>                             version : libcamera_version,\n> +                           soversion : libcamera_soversion,\n>                             name_prefix : '',\n>                             install : true,\n>                             include_directories : includes,","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 38764BD16B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 12 Oct 2022 14:51:26 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3DD6A62D9F;\n\tWed, 12 Oct 2022 16:51:25 +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 2D943603D7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 12 Oct 2022 16:51:24 +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 7678D4D3;\n\tWed, 12 Oct 2022 16:51:23 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1665586285;\n\tbh=v1gOvt2y7U2i8kA6XhFaqF0JKrCoHbJ94HxNGsG1xIw=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=RysEws8psY5G5ipb1d+GYPg39F83VBuhWSml838rsGCPcknkCnk9vLp6QSWntRmMU\n\tk7ErAxEbO7fM6we0fXmmXCnTV4xEIOm+fCfS+9QVJFRfrRgwsy6av51BintVzT+XvC\n\tYGnayZopj1BQ4khfCeHT+0k8UV+7l+rGWBrEubZi87+Hi0jSam9a4Ne8x6NO5h79xY\n\tdIolupuWZcJ9et8G2v2w58GpEcSrji/SrdEuTm/QJfPoCKJJCtUNiHEode2KTuPJh6\n\tmhvBvE8GgUl70SNYSRMkSKhtw3JMExxoZmO4IUAHWZEONdtSzwsDvh5cc97B5G3SOD\n\tbTqeHoY5aqlBg==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1665586283;\n\tbh=v1gOvt2y7U2i8kA6XhFaqF0JKrCoHbJ94HxNGsG1xIw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=NF8A4kSSeH8rdO3uzmqtg8DO/pvNY38bqb2uO54XAAePXwVOZBBYIE1sjwcXfpXu1\n\tqwObOm6EiJiP0VvpNQmFh3XBJZnDSA8B/xLM++CELHW8QZW08rbG4EjJbUFDiKDDz4\n\t52ia09ZkVpJWaNPuqZW4jfIOU7iT6Wvd5rPK+K8A="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"NF8A4kSS\"; dkim-atps=neutral","Date":"Wed, 12 Oct 2022 17:51:16 +0300","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<Y0bUZLyhXVkxAAja@pendragon.ideasonboard.com>","References":"<20221010173214.3547133-1-kieran.bingham@ideasonboard.com>\n\t<20221010173214.3547133-3-kieran.bingham@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20221010173214.3547133-3-kieran.bingham@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v3 2/5] meson: Shared Object version\n\thandling","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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":25408,"web_url":"https://patchwork.libcamera.org/comment/25408/","msgid":"<166558951755.3760285.4565139589112498975@Monstersaurus>","date":"2022-10-12T15:45:17","subject":"Re: [libcamera-devel] [PATCH v3 2/5] meson: Shared Object version\n\thandling","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Laurent Pinchart (2022-10-12 15:51:16)\n> Hi Kieran,\n> \n> Thank you for the patch.\n> \n> On Mon, Oct 10, 2022 at 06:32:11PM +0100, Kieran Bingham via libcamera-devel wrote:\n> > The libcamera project is not yet ready to declare ABI nor API stability,\n> > but it will benefit the community to be able to provide more regular\n> > release cycles to determine 'versioned' points of history.\n> > \n> > Ideally, these releases will be made at any ABI breakage, but can be\n> > made at arbitary time based points along the way.\n> > \n> > To support releases which may not be ABI stable, declare the soversion\n> > of both the libcamera and libcamera-base library to be dependant upon\n> > both the major and minor component of the project version.\n> > \n> > As part of this, introduce a new 'Versions' summary section to highlight\n> > the different version components that may become apparent within any\n> > given build.\n> > \n> > Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n> > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > \n> > ---\n> > v3:\n> >  - fix typo\n> >  - Use libcamera_version directly for SONAME.\n> >  - Fix ordering of EXCLUDE_PATTERNS\n> >  - Use meson.project_version() in the event the git versions\n> >    are incorrect.\n> >  - No need to present libcamera_version anymore\n> >    - Guaranteed to be the same as 'project_version'\n> > \n> > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > ---\n> >  Documentation/Doxyfile.in      |  4 +++-\n> >  meson.build                    | 23 +++++++++++++++++++++++\n> >  src/libcamera/base/meson.build |  1 +\n> >  src/libcamera/meson.build      |  1 +\n> >  4 files changed, 28 insertions(+), 1 deletion(-)\n> > \n> > diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in\n> > index 88dfcddaebf6..e87bb2b42c5e 100644\n> > --- a/Documentation/Doxyfile.in\n> > +++ b/Documentation/Doxyfile.in\n> > @@ -51,7 +51,9 @@ EXCLUDE_PATTERNS       = @TOP_BUILDDIR@/include/libcamera/ipa/*_serializer.h \\\n> >                           @TOP_BUILDDIR@/include/libcamera/ipa/ipu3_*.h \\\n> >                           @TOP_BUILDDIR@/include/libcamera/ipa/raspberrypi_*.h \\\n> >                           @TOP_BUILDDIR@/include/libcamera/ipa/rkisp1_*.h \\\n> > -                         @TOP_BUILDDIR@/include/libcamera/ipa/vimc_*.h\n> > +                         @TOP_BUILDDIR@/include/libcamera/ipa/vimc_*.h \\\n> > +                         @TOP_BUILDDIR@/src/libcamera/libcamera.so* \\\n> > +                         @TOP_BUILDDIR@/src/libcamera/base/libcamera-base.so*\n> \n> I'm still getting\n> \n> warning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/libcamera.so.0' is not a readable file or directory... skipping.\n> warning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/libcamera.so' is not a readable file or directory... skipping.\n> warning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/base/libcamera-base.so.0' is not a readable file or directory... skipping.\n> \n> despite this.\n\nAh, that's a pain, I thought it had gone - but ... it must have been\nbecause I cleaned my tree or such.\n \n> I was hoping that EXCLUDE_SYMLINKS would fix it, but that's not the\n> case. Doxygen prints the warning before checking if the file is a\n> symlink. It should be easily fixable in Doxygen, I may even send a\n> patch. Should we set EXCLUDE_SYMLINKS to prepare for that, and drop the\n> EXCLUDE_PATTERNS change ?\n\nWhat is the EXCLUDE_SYMLINKS change?\n\nI'm happy to add that, or we can drop this here and fix it later.\n\nCertainly no point adding lines that don't affect it though.\n\n> \n> >  \n> >  EXCLUDE_SYMBOLS        = libcamera::BoundMethodArgs \\\n> >                           libcamera::BoundMethodBase \\\n> > diff --git a/meson.build b/meson.build\n> > index 2c6173b4f97e..3e2bcc0de2c3 100644\n> > --- a/meson.build\n> > +++ b/meson.build\n> > @@ -26,6 +26,29 @@ endif\n> >  \n> >  libcamera_version = libcamera_git_version.split('+')[0]\n> >  \n> > +# A shallow clone, or a clone without a reachable tag equivalent to the\n> > +# meson.project_version() could leave the project in a mis-described state.\n> > +# Produce a warning in this event, and fix to a best effort.\n> \n> For a moment I wondered what we should do if there's a git tag more\n> recent than the meson project version. Then I thought whoever does that\n> would probably deserve an Undefined Behaviour (TM) that would have at\n> least a 50% change of sudo rm -rf /. As we're nice people, let's just\n> ignore this case :-)\n> \n> > +if libcamera_version != meson.project_version()\n> > +    warning('The sources disagree about the version: '\n> > +            + libcamera_version + ' != ' + meson.project_version())\n> > +\n> > +    libcamera_version = meson.project_version()\n> > +    libcamera_git_version = libcamera_version + '+' + libcamera_git_version.split('+')[1]\n> > +    summary({'Source version override': true}, section : 'Versions')\n> \n> Maybe bool_yn to match the the rest of our summary sections ? It will by\n> default (on terminals that support it) print YES in green and NO in red,\n> so if we phrased this message the other way around (for instance 'Source\n> version match' : false) it would appear more prominantly as something\n> bad. Entirely up to you.\n\nSource version match : NO\n\nsounds reasonable. I'll try it out.\n\n> \n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> \n> > +endif\n> > +\n> > +# Until we make ABI compatible releases, the full libcamera version is used as\n> > +# the soname.\n> > +libcamera_soversion = libcamera_version\n> > +\n> > +summary({\n> > +            'project': meson.project_version(),\n> > +            'sources': libcamera_git_version,\n> > +            'soname': libcamera_soversion,\n> > +        },\n> > +        section : 'Versions')\n> > +\n> >  # This script generates the .tarball-version file on a 'meson dist' command.\n> >  meson.add_dist_script('utils/run-dist.sh')\n> >  \n> > diff --git a/src/libcamera/base/meson.build b/src/libcamera/base/meson.build\n> > index 7a75914ab2a8..7a7fd7e4ca87 100644\n> > --- a/src/libcamera/base/meson.build\n> > +++ b/src/libcamera/base/meson.build\n> > @@ -51,6 +51,7 @@ libcamera_base_args = [ '-DLIBCAMERA_BASE_PRIVATE' ]\n> >  libcamera_base_lib = shared_library('libcamera-base',\n> >                                      [libcamera_base_sources, libcamera_base_headers],\n> >                                      version : libcamera_version,\n> > +                                    soversion : libcamera_soversion,\n> >                                      name_prefix : '',\n> >                                      install : true,\n> >                                      cpp_args : libcamera_base_args,\n> > diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\n> > index 7fcbb2ddc9e7..5f39d2e2c60a 100644\n> > --- a/src/libcamera/meson.build\n> > +++ b/src/libcamera/meson.build\n> > @@ -161,6 +161,7 @@ libcamera_deps = [\n> >  libcamera = shared_library('libcamera',\n> >                             libcamera_sources,\n> >                             version : libcamera_version,\n> > +                           soversion : libcamera_soversion,\n> >                             name_prefix : '',\n> >                             install : true,\n> >                             include_directories : includes,\n> \n> -- \n> Regards,\n> \n> Laurent Pinchart","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 931BCC0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 12 Oct 2022 15:45:22 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CB8AD62DA2;\n\tWed, 12 Oct 2022 17:45:21 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 87C89603D7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 12 Oct 2022 17:45:20 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0C0AF4D3;\n\tWed, 12 Oct 2022 17:45:20 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1665589521;\n\tbh=gjhO7xQGPRcuSAXoW4A3l72SpyWpIzgAxDFHtKt/2iE=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=cTOuKXgt9+6brfrjW9cBKAXVx/w6mN0cNPDvZQ2bNYezFV0MwceEOkoAXRTEyFjlb\n\tR6ISqpJW8Y6NcWlbZzmX4JUWxDc9m6rDq5MF8gk7hAKx5tmnvmtePNiF+AJba9D6RT\n\tPNzatwxy+fJbRNSGoU3Ku03Iy03/5ekKiPbix+LwXoKobaTkUDfP1N9zMKbwY/x1oG\n\tMh3fYyXq8wVIv8UF8HEaBmz6D7tZu1hqWbGJU2R4mm4YWQ3L7Uq4IHpH7gkhcoTlHO\n\t5tkbGqzrXjAlpGq8vSk5Wkh9Qznmor/cuf1KvYDxI+dCHHxLa8dXHRo6eIJj90KMHz\n\tbGKsD1vLgJj4Q==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1665589520;\n\tbh=gjhO7xQGPRcuSAXoW4A3l72SpyWpIzgAxDFHtKt/2iE=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=r1jnKV74n01fF9YArh4qdeQP6jIRJLWFvW8EWsQXEvS4WZg3BUuQs3OD/yTzf9SO+\n\tBKYmXESAimiBtF2kchESNEoe7ADcPd92AZYbV3qLwBU0TgoNL06cqdwxhDUuTFGQq3\n\tlJi7VqFnQ0S8Srj8vgzxlIhE1hUUz8heMnuX7ku0="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"r1jnKV74\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<Y0bUZLyhXVkxAAja@pendragon.ideasonboard.com>","References":"<20221010173214.3547133-1-kieran.bingham@ideasonboard.com>\n\t<20221010173214.3547133-3-kieran.bingham@ideasonboard.com>\n\t<Y0bUZLyhXVkxAAja@pendragon.ideasonboard.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Date":"Wed, 12 Oct 2022 16:45:17 +0100","Message-ID":"<166558951755.3760285.4565139589112498975@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v3 2/5] meson: Shared Object version\n\thandling","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>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":25410,"web_url":"https://patchwork.libcamera.org/comment/25410/","msgid":"<Y0b3f2DYhQE+BluL@pendragon.ideasonboard.com>","date":"2022-10-12T17:21:03","subject":"Re: [libcamera-devel] [PATCH v3 2/5] meson: Shared Object version\n\thandling","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nOn Wed, Oct 12, 2022 at 04:45:17PM +0100, Kieran Bingham wrote:\n> Quoting Laurent Pinchart (2022-10-12 15:51:16)\n> > On Mon, Oct 10, 2022 at 06:32:11PM +0100, Kieran Bingham via libcamera-devel wrote:\n> > > The libcamera project is not yet ready to declare ABI nor API stability,\n> > > but it will benefit the community to be able to provide more regular\n> > > release cycles to determine 'versioned' points of history.\n> > > \n> > > Ideally, these releases will be made at any ABI breakage, but can be\n> > > made at arbitary time based points along the way.\n> > > \n> > > To support releases which may not be ABI stable, declare the soversion\n> > > of both the libcamera and libcamera-base library to be dependant upon\n> > > both the major and minor component of the project version.\n> > > \n> > > As part of this, introduce a new 'Versions' summary section to highlight\n> > > the different version components that may become apparent within any\n> > > given build.\n> > > \n> > > Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n> > > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > \n> > > ---\n> > > v3:\n> > >  - fix typo\n> > >  - Use libcamera_version directly for SONAME.\n> > >  - Fix ordering of EXCLUDE_PATTERNS\n> > >  - Use meson.project_version() in the event the git versions\n> > >    are incorrect.\n> > >  - No need to present libcamera_version anymore\n> > >    - Guaranteed to be the same as 'project_version'\n> > > \n> > > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > ---\n> > >  Documentation/Doxyfile.in      |  4 +++-\n> > >  meson.build                    | 23 +++++++++++++++++++++++\n> > >  src/libcamera/base/meson.build |  1 +\n> > >  src/libcamera/meson.build      |  1 +\n> > >  4 files changed, 28 insertions(+), 1 deletion(-)\n> > > \n> > > diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in\n> > > index 88dfcddaebf6..e87bb2b42c5e 100644\n> > > --- a/Documentation/Doxyfile.in\n> > > +++ b/Documentation/Doxyfile.in\n> > > @@ -51,7 +51,9 @@ EXCLUDE_PATTERNS       = @TOP_BUILDDIR@/include/libcamera/ipa/*_serializer.h \\\n> > >                           @TOP_BUILDDIR@/include/libcamera/ipa/ipu3_*.h \\\n> > >                           @TOP_BUILDDIR@/include/libcamera/ipa/raspberrypi_*.h \\\n> > >                           @TOP_BUILDDIR@/include/libcamera/ipa/rkisp1_*.h \\\n> > > -                         @TOP_BUILDDIR@/include/libcamera/ipa/vimc_*.h\n> > > +                         @TOP_BUILDDIR@/include/libcamera/ipa/vimc_*.h \\\n> > > +                         @TOP_BUILDDIR@/src/libcamera/libcamera.so* \\\n> > > +                         @TOP_BUILDDIR@/src/libcamera/base/libcamera-base.so*\n> > \n> > I'm still getting\n> > \n> > warning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/libcamera.so.0' is not a readable file or directory... skipping.\n> > warning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/libcamera.so' is not a readable file or directory... skipping.\n> > warning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/base/libcamera-base.so.0' is not a readable file or directory... skipping.\n> > \n> > despite this.\n> \n> Ah, that's a pain, I thought it had gone - but ... it must have been\n> because I cleaned my tree or such.\n>  \n> > I was hoping that EXCLUDE_SYMLINKS would fix it, but that's not the\n> > case. Doxygen prints the warning before checking if the file is a\n> > symlink. It should be easily fixable in Doxygen, I may even send a\n> > patch. Should we set EXCLUDE_SYMLINKS to prepare for that, and drop the\n> > EXCLUDE_PATTERNS change ?\n> \n> What is the EXCLUDE_SYMLINKS change?\n\nSetting EXCLUDE_SYMLINKS to YES makes doxygen ignore symlinks. The\nnon-readable files are symlinks, so it would fix our issue. That is, if\nit worked :-)\n\n> I'm happy to add that, or we can drop this here and fix it later.\n> \n> Certainly no point adding lines that don't affect it though.\n\nWe can add it later when doxygen is fixed I suppose.\n\n> > >  \n> > >  EXCLUDE_SYMBOLS        = libcamera::BoundMethodArgs \\\n> > >                           libcamera::BoundMethodBase \\\n> > > diff --git a/meson.build b/meson.build\n> > > index 2c6173b4f97e..3e2bcc0de2c3 100644\n> > > --- a/meson.build\n> > > +++ b/meson.build\n> > > @@ -26,6 +26,29 @@ endif\n> > >  \n> > >  libcamera_version = libcamera_git_version.split('+')[0]\n> > >  \n> > > +# A shallow clone, or a clone without a reachable tag equivalent to the\n> > > +# meson.project_version() could leave the project in a mis-described state.\n> > > +# Produce a warning in this event, and fix to a best effort.\n> > \n> > For a moment I wondered what we should do if there's a git tag more\n> > recent than the meson project version. Then I thought whoever does that\n> > would probably deserve an Undefined Behaviour (TM) that would have at\n> > least a 50% change of sudo rm -rf /. As we're nice people, let's just\n> > ignore this case :-)\n> > \n> > > +if libcamera_version != meson.project_version()\n> > > +    warning('The sources disagree about the version: '\n> > > +            + libcamera_version + ' != ' + meson.project_version())\n> > > +\n> > > +    libcamera_version = meson.project_version()\n> > > +    libcamera_git_version = libcamera_version + '+' + libcamera_git_version.split('+')[1]\n> > > +    summary({'Source version override': true}, section : 'Versions')\n> > \n> > Maybe bool_yn to match the the rest of our summary sections ? It will by\n> > default (on terminals that support it) print YES in green and NO in red,\n> > so if we phrased this message the other way around (for instance 'Source\n> > version match' : false) it would appear more prominantly as something\n> > bad. Entirely up to you.\n> \n> Source version match : NO\n> \n> sounds reasonable. I'll try it out.\n> \n> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > \n> > > +endif\n> > > +\n> > > +# Until we make ABI compatible releases, the full libcamera version is used as\n> > > +# the soname.\n> > > +libcamera_soversion = libcamera_version\n> > > +\n> > > +summary({\n> > > +            'project': meson.project_version(),\n> > > +            'sources': libcamera_git_version,\n> > > +            'soname': libcamera_soversion,\n> > > +        },\n> > > +        section : 'Versions')\n> > > +\n> > >  # This script generates the .tarball-version file on a 'meson dist' command.\n> > >  meson.add_dist_script('utils/run-dist.sh')\n> > >  \n> > > diff --git a/src/libcamera/base/meson.build b/src/libcamera/base/meson.build\n> > > index 7a75914ab2a8..7a7fd7e4ca87 100644\n> > > --- a/src/libcamera/base/meson.build\n> > > +++ b/src/libcamera/base/meson.build\n> > > @@ -51,6 +51,7 @@ libcamera_base_args = [ '-DLIBCAMERA_BASE_PRIVATE' ]\n> > >  libcamera_base_lib = shared_library('libcamera-base',\n> > >                                      [libcamera_base_sources, libcamera_base_headers],\n> > >                                      version : libcamera_version,\n> > > +                                    soversion : libcamera_soversion,\n> > >                                      name_prefix : '',\n> > >                                      install : true,\n> > >                                      cpp_args : libcamera_base_args,\n> > > diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\n> > > index 7fcbb2ddc9e7..5f39d2e2c60a 100644\n> > > --- a/src/libcamera/meson.build\n> > > +++ b/src/libcamera/meson.build\n> > > @@ -161,6 +161,7 @@ libcamera_deps = [\n> > >  libcamera = shared_library('libcamera',\n> > >                             libcamera_sources,\n> > >                             version : libcamera_version,\n> > > +                           soversion : libcamera_soversion,\n> > >                             name_prefix : '',\n> > >                             install : true,\n> > >                             include_directories : includes,","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 53A2ABD16B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 12 Oct 2022 17:21:14 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6362F62DA3;\n\tWed, 12 Oct 2022 19:21:13 +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 6AC1B603D7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 12 Oct 2022 19:21:11 +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 C42224D3;\n\tWed, 12 Oct 2022 19:21:10 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1665595273;\n\tbh=sGZTi3t3t2+3qNoY2/woihQneQsIJSNx3fkWl08TT+A=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=W05i5r3n2OKN+ri880eXLtGTWA/wqCO9eaSHh7IShCyTWlBMqcJgmA9VMJQL0U0Yy\n\t4nsaFq5szIAe3ma31e6iOan+f8xt2VF6S++chdQ+OQu+3t+gxu9Ae4xI+Kfz0olmUF\n\twHd1dMoYF9pzqtFLVDmA9oo8JWFn2J0WbY36Hr44dKCSyn/mWZbLl7Cb/t+66PRHWE\n\tymhrmOMwnxuyZcsN5UuboWe4rUw7VjamF4cVLk4O0S0ddqNz6GrKe5/eqfGFrOiIWF\n\ttTzH08lC31JCNj18PFtJxkAieoWALeOd9x3X78Sw2m/tQ1xY5VWhzfMUG/Z5KLMCD+\n\tagxv2BepzLHZA==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1665595271;\n\tbh=sGZTi3t3t2+3qNoY2/woihQneQsIJSNx3fkWl08TT+A=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=q7gVMZZjaCY8UU1VS2/hEAmZ+noYHKqEHT9gFCNtJBhrQTJMyyEz8qzMgZVPbVR3+\n\tawc0zONhoZt6emnOdw10Tjko7mAKk6d10grPGFdRYUYDgvwQ6n+6u99RCfQ3tUI7JT\n\t3kRmDE0FeeEafjZGLFgC/wKECYhchZRu1U6zoUus="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"q7gVMZZj\"; dkim-atps=neutral","Date":"Wed, 12 Oct 2022 20:21:03 +0300","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<Y0b3f2DYhQE+BluL@pendragon.ideasonboard.com>","References":"<20221010173214.3547133-1-kieran.bingham@ideasonboard.com>\n\t<20221010173214.3547133-3-kieran.bingham@ideasonboard.com>\n\t<Y0bUZLyhXVkxAAja@pendragon.ideasonboard.com>\n\t<166558951755.3760285.4565139589112498975@Monstersaurus>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<166558951755.3760285.4565139589112498975@Monstersaurus>","Subject":"Re: [libcamera-devel] [PATCH v3 2/5] meson: Shared Object version\n\thandling","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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":25412,"web_url":"https://patchwork.libcamera.org/comment/25412/","msgid":"<Y0cC18co2HfGzj6R@pendragon.ideasonboard.com>","date":"2022-10-12T18:09:27","subject":"Re: [libcamera-devel] [PATCH v3 2/5] meson: Shared Object version\n\thandling","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nOn Wed, Oct 12, 2022 at 08:21:03PM +0300, Laurent Pinchart via libcamera-devel wrote:\n> On Wed, Oct 12, 2022 at 04:45:17PM +0100, Kieran Bingham wrote:\n> > Quoting Laurent Pinchart (2022-10-12 15:51:16)\n> > > On Mon, Oct 10, 2022 at 06:32:11PM +0100, Kieran Bingham via libcamera-devel wrote:\n> > > > The libcamera project is not yet ready to declare ABI nor API stability,\n> > > > but it will benefit the community to be able to provide more regular\n> > > > release cycles to determine 'versioned' points of history.\n> > > > \n> > > > Ideally, these releases will be made at any ABI breakage, but can be\n> > > > made at arbitary time based points along the way.\n> > > > \n> > > > To support releases which may not be ABI stable, declare the soversion\n> > > > of both the libcamera and libcamera-base library to be dependant upon\n> > > > both the major and minor component of the project version.\n> > > > \n> > > > As part of this, introduce a new 'Versions' summary section to highlight\n> > > > the different version components that may become apparent within any\n> > > > given build.\n> > > > \n> > > > Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n> > > > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > > \n> > > > ---\n> > > > v3:\n> > > >  - fix typo\n> > > >  - Use libcamera_version directly for SONAME.\n> > > >  - Fix ordering of EXCLUDE_PATTERNS\n> > > >  - Use meson.project_version() in the event the git versions\n> > > >    are incorrect.\n> > > >  - No need to present libcamera_version anymore\n> > > >    - Guaranteed to be the same as 'project_version'\n> > > > \n> > > > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > > ---\n> > > >  Documentation/Doxyfile.in      |  4 +++-\n> > > >  meson.build                    | 23 +++++++++++++++++++++++\n> > > >  src/libcamera/base/meson.build |  1 +\n> > > >  src/libcamera/meson.build      |  1 +\n> > > >  4 files changed, 28 insertions(+), 1 deletion(-)\n> > > > \n> > > > diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in\n> > > > index 88dfcddaebf6..e87bb2b42c5e 100644\n> > > > --- a/Documentation/Doxyfile.in\n> > > > +++ b/Documentation/Doxyfile.in\n> > > > @@ -51,7 +51,9 @@ EXCLUDE_PATTERNS       = @TOP_BUILDDIR@/include/libcamera/ipa/*_serializer.h \\\n> > > >                           @TOP_BUILDDIR@/include/libcamera/ipa/ipu3_*.h \\\n> > > >                           @TOP_BUILDDIR@/include/libcamera/ipa/raspberrypi_*.h \\\n> > > >                           @TOP_BUILDDIR@/include/libcamera/ipa/rkisp1_*.h \\\n> > > > -                         @TOP_BUILDDIR@/include/libcamera/ipa/vimc_*.h\n> > > > +                         @TOP_BUILDDIR@/include/libcamera/ipa/vimc_*.h \\\n> > > > +                         @TOP_BUILDDIR@/src/libcamera/libcamera.so* \\\n> > > > +                         @TOP_BUILDDIR@/src/libcamera/base/libcamera-base.so*\n> > > \n> > > I'm still getting\n> > > \n> > > warning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/libcamera.so.0' is not a readable file or directory... skipping.\n> > > warning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/libcamera.so' is not a readable file or directory... skipping.\n> > > warning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/base/libcamera-base.so.0' is not a readable file or directory... skipping.\n> > > \n> > > despite this.\n> > \n> > Ah, that's a pain, I thought it had gone - but ... it must have been\n> > because I cleaned my tree or such.\n> >  \n> > > I was hoping that EXCLUDE_SYMLINKS would fix it, but that's not the\n> > > case. Doxygen prints the warning before checking if the file is a\n> > > symlink. It should be easily fixable in Doxygen, I may even send a\n> > > patch. Should we set EXCLUDE_SYMLINKS to prepare for that, and drop the\n> > > EXCLUDE_PATTERNS change ?\n> > \n> > What is the EXCLUDE_SYMLINKS change?\n> \n> Setting EXCLUDE_SYMLINKS to YES makes doxygen ignore symlinks. The\n> non-readable files are symlinks, so it would fix our issue. That is, if\n> it worked :-)\n> \n> > I'm happy to add that, or we can drop this here and fix it later.\n> > \n> > Certainly no point adding lines that don't affect it though.\n> \n> We can add it later when doxygen is fixed I suppose.\n\nhttps://github.com/doxygen/doxygen/pull/9636\n\nSuccessfully tested with EXCLUDE_SYMLINKS = YES.\n\n> > > >  \n> > > >  EXCLUDE_SYMBOLS        = libcamera::BoundMethodArgs \\\n> > > >                           libcamera::BoundMethodBase \\\n> > > > diff --git a/meson.build b/meson.build\n> > > > index 2c6173b4f97e..3e2bcc0de2c3 100644\n> > > > --- a/meson.build\n> > > > +++ b/meson.build\n> > > > @@ -26,6 +26,29 @@ endif\n> > > >  \n> > > >  libcamera_version = libcamera_git_version.split('+')[0]\n> > > >  \n> > > > +# A shallow clone, or a clone without a reachable tag equivalent to the\n> > > > +# meson.project_version() could leave the project in a mis-described state.\n> > > > +# Produce a warning in this event, and fix to a best effort.\n> > > \n> > > For a moment I wondered what we should do if there's a git tag more\n> > > recent than the meson project version. Then I thought whoever does that\n> > > would probably deserve an Undefined Behaviour (TM) that would have at\n> > > least a 50% change of sudo rm -rf /. As we're nice people, let's just\n> > > ignore this case :-)\n> > > \n> > > > +if libcamera_version != meson.project_version()\n> > > > +    warning('The sources disagree about the version: '\n> > > > +            + libcamera_version + ' != ' + meson.project_version())\n> > > > +\n> > > > +    libcamera_version = meson.project_version()\n> > > > +    libcamera_git_version = libcamera_version + '+' + libcamera_git_version.split('+')[1]\n> > > > +    summary({'Source version override': true}, section : 'Versions')\n> > > \n> > > Maybe bool_yn to match the the rest of our summary sections ? It will by\n> > > default (on terminals that support it) print YES in green and NO in red,\n> > > so if we phrased this message the other way around (for instance 'Source\n> > > version match' : false) it would appear more prominantly as something\n> > > bad. Entirely up to you.\n> > \n> > Source version match : NO\n> > \n> > sounds reasonable. I'll try it out.\n> > \n> > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > > \n> > > > +endif\n> > > > +\n> > > > +# Until we make ABI compatible releases, the full libcamera version is used as\n> > > > +# the soname.\n> > > > +libcamera_soversion = libcamera_version\n> > > > +\n> > > > +summary({\n> > > > +            'project': meson.project_version(),\n> > > > +            'sources': libcamera_git_version,\n> > > > +            'soname': libcamera_soversion,\n> > > > +        },\n> > > > +        section : 'Versions')\n> > > > +\n> > > >  # This script generates the .tarball-version file on a 'meson dist' command.\n> > > >  meson.add_dist_script('utils/run-dist.sh')\n> > > >  \n> > > > diff --git a/src/libcamera/base/meson.build b/src/libcamera/base/meson.build\n> > > > index 7a75914ab2a8..7a7fd7e4ca87 100644\n> > > > --- a/src/libcamera/base/meson.build\n> > > > +++ b/src/libcamera/base/meson.build\n> > > > @@ -51,6 +51,7 @@ libcamera_base_args = [ '-DLIBCAMERA_BASE_PRIVATE' ]\n> > > >  libcamera_base_lib = shared_library('libcamera-base',\n> > > >                                      [libcamera_base_sources, libcamera_base_headers],\n> > > >                                      version : libcamera_version,\n> > > > +                                    soversion : libcamera_soversion,\n> > > >                                      name_prefix : '',\n> > > >                                      install : true,\n> > > >                                      cpp_args : libcamera_base_args,\n> > > > diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\n> > > > index 7fcbb2ddc9e7..5f39d2e2c60a 100644\n> > > > --- a/src/libcamera/meson.build\n> > > > +++ b/src/libcamera/meson.build\n> > > > @@ -161,6 +161,7 @@ libcamera_deps = [\n> > > >  libcamera = shared_library('libcamera',\n> > > >                             libcamera_sources,\n> > > >                             version : libcamera_version,\n> > > > +                           soversion : libcamera_soversion,\n> > > >                             name_prefix : '',\n> > > >                             install : true,\n> > > >                             include_directories : includes,","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 90A24BD16B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 12 Oct 2022 18:09:37 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E164A62DA6;\n\tWed, 12 Oct 2022 20:09:36 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C392F603D7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 12 Oct 2022 20:09:34 +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 10C674D3;\n\tWed, 12 Oct 2022 20:09:34 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1665598176;\n\tbh=l1G+/A6kk6cM7FdiDyDksbrT2OqzKDfuf79ux1IK+hQ=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=BDugaZSqmpH65vpx3P9e3Digi98GfZ8c8hpnCLsE1qxXsoJuUI6brv8FMmORwYKEO\n\tAxbgmUvwr/Yulz+ZTFtHaVAySWSWl1G+nMnme+ZSYkh+Tk/EGcbjUcCn3SxN7VxTVb\n\t+oDeRqe10yW8royaqbz9A1ROV+ycW4rUMJhcM2jTy3ziFKyFUO0tHGeICTeuK1Dho9\n\tOHOUQ3HCxC0KBn+WMYm9KHKvovG0BP0C3N/7aKr2oA71i4cOGHdkjKjDFlvCf6XERT\n\tHXwzRtk09neSWWH2x+JQFqQqatzrYGswIvDqyVkh+VTM9ogyN+brVndQJiATalVzn0\n\t0/MGUsUv+IMQQ==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1665598174;\n\tbh=l1G+/A6kk6cM7FdiDyDksbrT2OqzKDfuf79ux1IK+hQ=;\n\th=Date:From:To:Subject:References:In-Reply-To:From;\n\tb=UyB1BXYxyz0GXUM8XtxOyXMtJeHiTjiXnKDvHZ3M+DvJ0iyfNlQdIB+bDI7GIfxps\n\tjHowbgkPVK0RjUjRSIgNJWh95/q5CSRRdfJKFdbsZOc/hXwn2Wm5zgsjslYZdnIohb\n\t1NAYQwPo//Mh7MWnyOMzhM1S01c85nS+Zq2iVZLE="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"UyB1BXYx\"; dkim-atps=neutral","Date":"Wed, 12 Oct 2022 21:09:27 +0300","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera devel <libcamera-devel@lists.libcamera.org>","Message-ID":"<Y0cC18co2HfGzj6R@pendragon.ideasonboard.com>","References":"<20221010173214.3547133-1-kieran.bingham@ideasonboard.com>\n\t<20221010173214.3547133-3-kieran.bingham@ideasonboard.com>\n\t<Y0bUZLyhXVkxAAja@pendragon.ideasonboard.com>\n\t<166558951755.3760285.4565139589112498975@Monstersaurus>\n\t<Y0b3f2DYhQE+BluL@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<Y0b3f2DYhQE+BluL@pendragon.ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v3 2/5] meson: Shared Object version\n\thandling","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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":25413,"web_url":"https://patchwork.libcamera.org/comment/25413/","msgid":"<166565101306.3760285.225949236877036374@Monstersaurus>","date":"2022-10-13T08:50:13","subject":"Re: [libcamera-devel] [PATCH v3 2/5] meson: Shared Object version\n\thandling","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Laurent Pinchart (2022-10-12 19:09:27)\n> Hi Kieran,\n> \n> On Wed, Oct 12, 2022 at 08:21:03PM +0300, Laurent Pinchart via libcamera-devel wrote:\n> > On Wed, Oct 12, 2022 at 04:45:17PM +0100, Kieran Bingham wrote:\n> > > Quoting Laurent Pinchart (2022-10-12 15:51:16)\n> > > > On Mon, Oct 10, 2022 at 06:32:11PM +0100, Kieran Bingham via libcamera-devel wrote:\n> > > > > The libcamera project is not yet ready to declare ABI nor API stability,\n> > > > > but it will benefit the community to be able to provide more regular\n> > > > > release cycles to determine 'versioned' points of history.\n> > > > > \n> > > > > Ideally, these releases will be made at any ABI breakage, but can be\n> > > > > made at arbitary time based points along the way.\n> > > > > \n> > > > > To support releases which may not be ABI stable, declare the soversion\n> > > > > of both the libcamera and libcamera-base library to be dependant upon\n> > > > > both the major and minor component of the project version.\n> > > > > \n> > > > > As part of this, introduce a new 'Versions' summary section to highlight\n> > > > > the different version components that may become apparent within any\n> > > > > given build.\n> > > > > \n> > > > > Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n> > > > > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > > > \n> > > > > ---\n> > > > > v3:\n> > > > >  - fix typo\n> > > > >  - Use libcamera_version directly for SONAME.\n> > > > >  - Fix ordering of EXCLUDE_PATTERNS\n> > > > >  - Use meson.project_version() in the event the git versions\n> > > > >    are incorrect.\n> > > > >  - No need to present libcamera_version anymore\n> > > > >    - Guaranteed to be the same as 'project_version'\n> > > > > \n> > > > > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > > > ---\n> > > > >  Documentation/Doxyfile.in      |  4 +++-\n> > > > >  meson.build                    | 23 +++++++++++++++++++++++\n> > > > >  src/libcamera/base/meson.build |  1 +\n> > > > >  src/libcamera/meson.build      |  1 +\n> > > > >  4 files changed, 28 insertions(+), 1 deletion(-)\n> > > > > \n> > > > > diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in\n> > > > > index 88dfcddaebf6..e87bb2b42c5e 100644\n> > > > > --- a/Documentation/Doxyfile.in\n> > > > > +++ b/Documentation/Doxyfile.in\n> > > > > @@ -51,7 +51,9 @@ EXCLUDE_PATTERNS       = @TOP_BUILDDIR@/include/libcamera/ipa/*_serializer.h \\\n> > > > >                           @TOP_BUILDDIR@/include/libcamera/ipa/ipu3_*.h \\\n> > > > >                           @TOP_BUILDDIR@/include/libcamera/ipa/raspberrypi_*.h \\\n> > > > >                           @TOP_BUILDDIR@/include/libcamera/ipa/rkisp1_*.h \\\n> > > > > -                         @TOP_BUILDDIR@/include/libcamera/ipa/vimc_*.h\n> > > > > +                         @TOP_BUILDDIR@/include/libcamera/ipa/vimc_*.h \\\n> > > > > +                         @TOP_BUILDDIR@/src/libcamera/libcamera.so* \\\n> > > > > +                         @TOP_BUILDDIR@/src/libcamera/base/libcamera-base.so*\n> > > > \n> > > > I'm still getting\n> > > > \n> > > > warning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/libcamera.so.0' is not a readable file or directory... skipping.\n> > > > warning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/libcamera.so' is not a readable file or directory... skipping.\n> > > > warning: source 'libcamera/build/x86-gcc-10.4.0/src/libcamera/base/libcamera-base.so.0' is not a readable file or directory... skipping.\n> > > > \n> > > > despite this.\n> > > \n> > > Ah, that's a pain, I thought it had gone - but ... it must have been\n> > > because I cleaned my tree or such.\n> > >  \n> > > > I was hoping that EXCLUDE_SYMLINKS would fix it, but that's not the\n> > > > case. Doxygen prints the warning before checking if the file is a\n> > > > symlink. It should be easily fixable in Doxygen, I may even send a\n> > > > patch. Should we set EXCLUDE_SYMLINKS to prepare for that, and drop the\n> > > > EXCLUDE_PATTERNS change ?\n> > > \n> > > What is the EXCLUDE_SYMLINKS change?\n> > \n> > Setting EXCLUDE_SYMLINKS to YES makes doxygen ignore symlinks. The\n> > non-readable files are symlinks, so it would fix our issue. That is, if\n> > it worked :-)\n> > \n> > > I'm happy to add that, or we can drop this here and fix it later.\n> > > \n> > > Certainly no point adding lines that don't affect it though.\n> > \n> > We can add it later when doxygen is fixed I suppose.\n> \n> https://github.com/doxygen/doxygen/pull/9636\n> \n> Successfully tested with EXCLUDE_SYMLINKS = YES.\n\n\nOk - that's the following hunk applied to this patch:\n\ndiff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in\nindex e87bb2b42c5e..e4f0cd426d39 100644\n--- a/Documentation/Doxyfile.in\n+++ b/Documentation/Doxyfile.in\n@@ -51,9 +51,7 @@ EXCLUDE_PATTERNS       = @TOP_BUILDDIR@/include/libcamera/ipa/*_serializer.h \\\n                          @TOP_BUILDDIR@/include/libcamera/ipa/ipu3_*.h \\\n                          @TOP_BUILDDIR@/include/libcamera/ipa/raspberrypi_*.h \\\n                          @TOP_BUILDDIR@/include/libcamera/ipa/rkisp1_*.h \\\n-                         @TOP_BUILDDIR@/include/libcamera/ipa/vimc_*.h \\\n-                         @TOP_BUILDDIR@/src/libcamera/libcamera.so* \\\n-                         @TOP_BUILDDIR@/src/libcamera/base/libcamera-base.so*\n+                         @TOP_BUILDDIR@/include/libcamera/ipa/vimc_*.h\n\n EXCLUDE_SYMBOLS        = libcamera::BoundMethodArgs \\\n                          libcamera::BoundMethodBase \\\n@@ -68,6 +66,8 @@ EXCLUDE_SYMBOLS        = libcamera::BoundMethodArgs \\\n                          *::details \\\n                          std::*\n\n+EXCLUDE_SYMLINKS       = YES\n+\n HTML_OUTPUT            = api-html\n\n GENERATE_LATEX         = NO\n\n\n\n\n> \n> > > > >  \n> > > > >  EXCLUDE_SYMBOLS        = libcamera::BoundMethodArgs \\\n> > > > >                           libcamera::BoundMethodBase \\\n> > > > > diff --git a/meson.build b/meson.build\n> > > > > index 2c6173b4f97e..3e2bcc0de2c3 100644\n> > > > > --- a/meson.build\n> > > > > +++ b/meson.build\n> > > > > @@ -26,6 +26,29 @@ endif\n> > > > >  \n> > > > >  libcamera_version = libcamera_git_version.split('+')[0]\n> > > > >  \n> > > > > +# A shallow clone, or a clone without a reachable tag equivalent to the\n> > > > > +# meson.project_version() could leave the project in a mis-described state.\n> > > > > +# Produce a warning in this event, and fix to a best effort.\n> > > > \n> > > > For a moment I wondered what we should do if there's a git tag more\n> > > > recent than the meson project version. Then I thought whoever does that\n> > > > would probably deserve an Undefined Behaviour (TM) that would have at\n> > > > least a 50% change of sudo rm -rf /. As we're nice people, let's just\n> > > > ignore this case :-)\n> > > > \n> > > > > +if libcamera_version != meson.project_version()\n> > > > > +    warning('The sources disagree about the version: '\n> > > > > +            + libcamera_version + ' != ' + meson.project_version())\n> > > > > +\n> > > > > +    libcamera_version = meson.project_version()\n> > > > > +    libcamera_git_version = libcamera_version + '+' + libcamera_git_version.split('+')[1]\n> > > > > +    summary({'Source version override': true}, section : 'Versions')\n> > > > \n> > > > Maybe bool_yn to match the the rest of our summary sections ? It will by\n> > > > default (on terminals that support it) print YES in green and NO in red,\n> > > > so if we phrased this message the other way around (for instance 'Source\n> > > > version match' : false) it would appear more prominantly as something\n> > > > bad. Entirely up to you.\n> > > \n> > > Source version match : NO\n> > > \n> > > sounds reasonable. I'll try it out.\n\nThis made me realise that in the event of a mismatch, it also makes\nsense to report what git reports.\nSo that makes this :\n\ndiff --git a/meson.build b/meson.build\nindex 05cdee1edaf6..8b06120f17eb 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -33,9 +33,13 @@ if libcamera_version != meson.project_version()\n     warning('The sources disagree about the version: '\n             + libcamera_version + ' != ' + meson.project_version())\n\n+    summary({'libcamera git version' : libcamera_git_version,\n+             'Source version match' : false,\n+            },\n+            bool_yn : true, section : 'Versions')\n+\n     libcamera_version = meson.project_version()\n     libcamera_git_version = libcamera_version + '+' + libcamera_git_version.split('+')[1]\n-    summary({'Source version override': true}, section : 'Versions')\n endif\n\n # Until we make ABI compatible releases, the full libcamera version is used as\n\n\nThis gives a final presentation (upon a version mismatch of)\n\n  Versions\n    libcamera git version    : 0.0.1+dirty (2022-10-13T09:08:43+01:00)\n    Source version match     : NO\n    project                  : 0.1.1\n    sources                  : 0.1.1+dirty (2022-10-13T09:08:43\n    soname                   : 0.1.1\n\nAnd highlights that I've got the concatenation of the\nmeson.project_version() and the extra build information wrong. (due to\nsplitting on +), so I'll fix that.\n\n\nThat's fixable by using .replace() instead of .split()\n\n+    libcamera_git_version = libcamera_git_version.replace(libcamera_version,\n+                                                          meson.project_version())\n     libcamera_version = meson.project_version()\n-    libcamera_git_version = libcamera_version + '+' + libcamera_git_version.split('+')[1]\n-    summary({'Source version override': true}, section : 'Versions')\n\nAnd now we have: (Yes my tree has changed from above)\n\n  Versions\n    libcamera git version    : 0.0.1+2-55c615e3-dirty (2022-10-13T09:33:35+01:00)\n    Source version match     : NO\n    project                  : 0.1.1\n    sources                  : 0.1.1+2-55c615e3-dirty (2022-10-13T09:33:35+01:00)\n    soname                   : 0.1.1\n\nThe only thing to be aware of is that if there is a \"Source Version\nMatch : NO\", then the 'patch count' (+2) can't be trusted at all. But I\nthink that's fine to just be aware of and ignore, and there's sufficient\ninformation around to still tie down what commit / build is in use.\n\nSo ... lets add a marker to indicate when we modify the verision string.\n\n     libcamera_git_version = libcamera_git_version.replace(libcamera_version,\n                                                           meson.project_version())\n     libcamera_version = meson.project_version()\n+\n+    # Append a marker to show we have modified this version string\n+    libcamera_git_version += '-nvm'\n endif\n \n # Until we make ABI compatible releases, the full libcamera version is used as\n\nWhich now gives us:\n\n\n  Versions\n    libcamera git version    : 0.0.1+2-55c615e3-dirty (2022-10-13T09:40:50+01:00)\n    Source version match     : NO\n    project                  : 0.1.1\n    sources                  : 0.1.1+2-55c615e3-dirty (2022-10-13T09:40:50+01:00)-nvm\n    soname                   : 0.1.1\n\n\nFinally, the project version is now redundant, as it is 'guaranteed' to\nbe presented in the 'sources' version string. (And is actually presented\nabove the summary section anyway).\n\nSo that leaves us with:\n\nfor a good case:\n\nlibcamera 0.0.1\n\n  Versions\n    sources                  : 0.0.1+3-9b089899-dirty (2022-10-13T09:48:13+01:00)\n    soname                   : 0.0.1\n\nAnd a mis-match case:\n\nlibcamera 0.1.1\n\n  Versions\n    libcamera git version    : 0.0.1+3-9b089899-dirty (2022-10-13T09:47:34+01:00)\n    Source version match     : NO\n    sources                  : 0.1.1+3-9b089899-dirty (2022-10-13T09:47:34+01:00)-nvm\n    soname                   : 0.1.1\n\n\nThe soname could also now be dropped as 'we' know it is\n'major.minor.patch' now, until we (actually) hit 0.1, where it would be\nmajor.minor, and when we hit a real 1.x, it would become just 'major'.\n\n\n\n\n> > > \n> > > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > > > \n> > > > > +endif\n> > > > > +\n> > > > > +# Until we make ABI compatible releases, the full libcamera version is used as\n> > > > > +# the soname.\n> > > > > +libcamera_soversion = libcamera_version\n> > > > > +\n> > > > > +summary({\n> > > > > +            'project': meson.project_version(),\n> > > > > +            'sources': libcamera_git_version,\n> > > > > +            'soname': libcamera_soversion,\n> > > > > +        },\n> > > > > +        section : 'Versions')\n> > > > > +\n> > > > >  # This script generates the .tarball-version file on a 'meson dist' command.\n> > > > >  meson.add_dist_script('utils/run-dist.sh')\n> > > > >  \n> > > > > diff --git a/src/libcamera/base/meson.build b/src/libcamera/base/meson.build\n> > > > > index 7a75914ab2a8..7a7fd7e4ca87 100644\n> > > > > --- a/src/libcamera/base/meson.build\n> > > > > +++ b/src/libcamera/base/meson.build\n> > > > > @@ -51,6 +51,7 @@ libcamera_base_args = [ '-DLIBCAMERA_BASE_PRIVATE' ]\n> > > > >  libcamera_base_lib = shared_library('libcamera-base',\n> > > > >                                      [libcamera_base_sources, libcamera_base_headers],\n> > > > >                                      version : libcamera_version,\n> > > > > +                                    soversion : libcamera_soversion,\n> > > > >                                      name_prefix : '',\n> > > > >                                      install : true,\n> > > > >                                      cpp_args : libcamera_base_args,\n> > > > > diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\n> > > > > index 7fcbb2ddc9e7..5f39d2e2c60a 100644\n> > > > > --- a/src/libcamera/meson.build\n> > > > > +++ b/src/libcamera/meson.build\n> > > > > @@ -161,6 +161,7 @@ libcamera_deps = [\n> > > > >  libcamera = shared_library('libcamera',\n> > > > >                             libcamera_sources,\n> > > > >                             version : libcamera_version,\n> > > > > +                           soversion : libcamera_soversion,\n> > > > >                             name_prefix : '',\n> > > > >                             install : true,\n> > > > >                             include_directories : includes,\n> \n> -- \n> Regards,\n> \n> Laurent Pinchart","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 C5B17BD16B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 13 Oct 2022 08:50:18 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0676862DA8;\n\tThu, 13 Oct 2022 10:50:18 +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 92CC961F6E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 13 Oct 2022 10:50:15 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id EC812492;\n\tThu, 13 Oct 2022 10:50:14 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1665651018;\n\tbh=e/vXdwmoyalUiYWPDLiuToy2+ZdxXfxQecspdAyLERw=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=XeouVXDg3b71tnZD2vCGKW0bcyEg3ZkE5fZ+KBrpckYLUaOBTpuiecbpp6QfT1MSm\n\t4xrCJJDtHtjWQjGhlH+9UK27qUHjSQLsoOkS2ZT0N7/IYltEUbSg0T0cDYQyLEf1TW\n\tvYLsfPYqVlgCRGbTitYCVGq3xhCNODEPI0E5aSFe6p4IuxEdz8vmXp3oXW3u9iW1Ks\n\tIcIVCnb+Vn7zZ0bcQj/Wfrvp6hF1r21N8X8Vw2YJbC9fQz2clkWQCd32JY/X1mkKAR\n\tKiKM+lsslK6W8vKcCQicPtTfvG/8MzgRdp7+KWs5uBzhE/n5LObRrdLHUmIU/gxT5L\n\tQgTXIRMllhYww==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1665651015;\n\tbh=e/vXdwmoyalUiYWPDLiuToy2+ZdxXfxQecspdAyLERw=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=QcrV0qw0xpacgl7DENHnJAb9uNwBhlG+SKHmAqSp5+o5FsZEQv2F3RECMBZtwopAf\n\tYjaGsN/gsw3bdA0IAFLpnIpOnPdVR4YFH8XZLK6XxJs5bx43MYVHCpw3JFyiGoxGeH\n\tFER7C4s3CZL0xZu7jXBI7ZMPs+/zmfmipnU5uOiU="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"QcrV0qw0\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<Y0cC18co2HfGzj6R@pendragon.ideasonboard.com>","References":"<20221010173214.3547133-1-kieran.bingham@ideasonboard.com>\n\t<20221010173214.3547133-3-kieran.bingham@ideasonboard.com>\n\t<Y0bUZLyhXVkxAAja@pendragon.ideasonboard.com>\n\t<166558951755.3760285.4565139589112498975@Monstersaurus>\n\t<Y0b3f2DYhQE+BluL@pendragon.ideasonboard.com>\n\t<Y0cC18co2HfGzj6R@pendragon.ideasonboard.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera devel <libcamera-devel@lists.libcamera.org>","Date":"Thu, 13 Oct 2022 09:50:13 +0100","Message-ID":"<166565101306.3760285.225949236877036374@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v3 2/5] meson: Shared Object version\n\thandling","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>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]