[{"id":22106,"web_url":"https://patchwork.libcamera.org/comment/22106/","msgid":"<YfrAGz4iyK4A48DV@pendragon.ideasonboard.com>","date":"2022-02-02T17:32:11","subject":"Re: [libcamera-devel] [PATCH] lc-compliance: Only download a gtest\n\tsubproject as a fallback","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Javier,\n\nThank you for the patch.\n\nOn Wed, Feb 02, 2022 at 03:31:40PM +0100, Javier Martinez Canillas wrote:\n> Currently, a subproject is used to fetch gtest dependency unconditionally\n> for any Linux distribution besides ChromeOS. But it leads to a regression\n> in distros whose builders are not allowed to download files during build.\n> \n> This change was introduced by commit 0d50a04cc918 (\"lc-compliance: Build\n> with gtest in subprojects\") and the rationale is that some distros, such\n> as Debian ship libgtest-dev as a static library. And this could be built\n> with a different toolchain than the one used to build libcamera itself.\n> \n> But this seems to be a corner case, usually users will either build both\n> libcamera and all its dependencies using the same toolchain or build it\n> using both the libgtest library and toolchain as provided by the distro.\n> \n> If someone doesn't want for meson to pick up the non-compatible static\n> library provided by the distro, then instead should make sure that their\n> build root does not have the package providing this installed.\n> \n> Let's simplify the logic to find the dependency and just use the built-in\n> support in dependency() function to fallback to a subproject if not found.\n> \n> This covers to common case of attempting to use the gtest provided by the\n> system or pulling from source if not found or is not preferred.\n> \n> Fixes: commit 0d50a04cc918 (\"lc-compliance: Build with gtest in subprojects\")\n> Reported-by: Eric Curtin <ecurtin@redhat.com>\n> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>\n\nAs discussed on IRC, this breaks the build when compiling libcamera with\nclang + libc++ on a system providing a gtest package compiled with g++ +\nlibstdc++. Compilation also breaks with gcc 7 and gcc 8, due to the\ncorresponding libstdc++ having different versions of some symbols:\n\n/usr/lib/gcc/x86_64-pc-linux-gnu/7.4.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib64/libgtest.so: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()@GLIBCXX_3.4.26'\n\nSuch \"cross\" compilation isn't expected in most cases, but can be useful\nfor CI to test multiple compilers on a host system without a fully\nseparate build root. Setting the meson force_fallback_for option to\ngtest fixes the CI compilation tests, so\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n> \n>  src/lc-compliance/meson.build | 17 +++--------------\n>  1 file changed, 3 insertions(+), 14 deletions(-)\n> \n> diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build\n> index 130ddbb55916..8b57474be2b2 100644\n> --- a/src/lc-compliance/meson.build\n> +++ b/src/lc-compliance/meson.build\n> @@ -1,25 +1,14 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n>  libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))\n> +libgtest = dependency('gtest', required : get_option('lc-compliance'),\n> +                      fallback : ['gtest', 'gtest_dep'])\n>  \n> -if not libevent.found()\n> +if not (libevent.found() and libgtest.found())\n>      lc_compliance_enabled = false\n>      subdir_done()\n>  endif\n>  \n> -if get_option('android_platform') == 'cros'\n> -    libgtest = dependency('gtest', required : get_option('lc-compliance'))\n> -\n> -    if not libgtest.found()\n> -        lc_compliance_enabled = false\n> -        subdir_done()\n> -    endif\n> -\n> -else\n> -    libgtest_sp = subproject('gtest')\n> -    libgtest = libgtest_sp.get_variable('gtest_dep')\n> -endif\n> -\n>  lc_compliance_enabled = true\n>  \n>  lc_compliance_sources = files([","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 DB333BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  2 Feb 2022 17:32:36 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 47E93609DF;\n\tWed,  2 Feb 2022 18:32:36 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1C2CF609B5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  2 Feb 2022 18:32:35 +0100 (CET)","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 83F782F3;\n\tWed,  2 Feb 2022 18:32:34 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"IDtNm9Xj\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1643823154;\n\tbh=cXULrsvzJPhmSTYT9kbSrA4XVzzSf9iXhKGwgUtdGgo=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=IDtNm9Xjd5bwKuygtIv8+mBOFxwXyjFxePIo97NpZmGHOY+esd6n2Q44Es82gvv2C\n\tIrUKKqJUbvS92K1P6+Slmr4sCD1siuajOP9vPKq6C/wME8RC2r351v3SmwtTUovi9K\n\tzvlTfunqbkcqFqbTTRQAxQWGLRlrvbJYsIRmuX1k=","Date":"Wed, 2 Feb 2022 19:32:11 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Javier Martinez Canillas <javierm@redhat.com>","Message-ID":"<YfrAGz4iyK4A48DV@pendragon.ideasonboard.com>","References":"<20220202143141.160660-1-javierm@redhat.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20220202143141.160660-1-javierm@redhat.com>","Subject":"Re: [libcamera-devel] [PATCH] lc-compliance: Only download a gtest\n\tsubproject as a fallback","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":22115,"web_url":"https://patchwork.libcamera.org/comment/22115/","msgid":"<CAO5uPHPT6TFq8sGs+U7q0gbk6kTfxq88ajnC8zs0Zg8+-A_SfQ@mail.gmail.com>","date":"2022-02-03T00:57:38","subject":"Re: [libcamera-devel] [PATCH] lc-compliance: Only download a gtest\n\tsubproject as a fallback","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi Javier, thank you for the patch.\n\nOn Thu, Feb 3, 2022 at 2:32 AM Laurent Pinchart\n<laurent.pinchart@ideasonboard.com> wrote:\n>\n> Hi Javier,\n>\n> Thank you for the patch.\n>\n> On Wed, Feb 02, 2022 at 03:31:40PM +0100, Javier Martinez Canillas wrote:\n> > Currently, a subproject is used to fetch gtest dependency unconditionally\n> > for any Linux distribution besides ChromeOS. But it leads to a regression\n> > in distros whose builders are not allowed to download files during build.\n> >\n> > This change was introduced by commit 0d50a04cc918 (\"lc-compliance: Build\n> > with gtest in subprojects\") and the rationale is that some distros, such\n> > as Debian ship libgtest-dev as a static library. And this could be built\n> > with a different toolchain than the one used to build libcamera itself.\n> >\n> > But this seems to be a corner case, usually users will either build both\n> > libcamera and all its dependencies using the same toolchain or build it\n> > using both the libgtest library and toolchain as provided by the distro.\n> >\n> > If someone doesn't want for meson to pick up the non-compatible static\n> > library provided by the distro, then instead should make sure that their\n> > build root does not have the package providing this installed.\n> >\n> > Let's simplify the logic to find the dependency and just use the built-in\n> > support in dependency() function to fallback to a subproject if not found.\n> >\n> > This covers to common case of attempting to use the gtest provided by the\n> > system or pulling from source if not found or is not preferred.\n> >\n> > Fixes: commit 0d50a04cc918 (\"lc-compliance: Build with gtest in subprojects\")\n> > Reported-by: Eric Curtin <ecurtin@redhat.com>\n> > Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>\n\nThe fallback option happens if there is no libgtest in a system.\nhttps://mesonbuild.com/Dependencies.html#building-dependencies-as-subprojects\nIt is at linking time that we find the libgtest doesn't work.\nSo I think the problem happens in an environment where libgtest is\ninstalled and a different compiler from one building the libgtest is\nused for libcamera.\nIf I understand correctly, the built-in libgest is compiled always with gcc?\n I am not sure how edge case it is to build libcamera with a different compiler.\n\nBest Regards,\n-Hiro\n>\n> As discussed on IRC, this breaks the build when compiling libcamera with\n> clang + libc++ on a system providing a gtest package compiled with g++ +\n> libstdc++. Compilation also breaks with gcc 7 and gcc 8, due to the\n> corresponding libstdc++ having different versions of some symbols:\n>\n> /usr/lib/gcc/x86_64-pc-linux-gnu/7.4.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib64/libgtest.so: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()@GLIBCXX_3.4.26'\n>\n> Such \"cross\" compilation isn't expected in most cases, but can be useful\n> for CI to test multiple compilers on a host system without a fully\n> separate build root. Setting the meson force_fallback_for option to\n> gtest fixes the CI compilation tests, so\n>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>\n> > ---\n> >\n> >  src/lc-compliance/meson.build | 17 +++--------------\n> >  1 file changed, 3 insertions(+), 14 deletions(-)\n> >\n> > diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build\n> > index 130ddbb55916..8b57474be2b2 100644\n> > --- a/src/lc-compliance/meson.build\n> > +++ b/src/lc-compliance/meson.build\n> > @@ -1,25 +1,14 @@\n> >  # SPDX-License-Identifier: CC0-1.0\n> >\n> >  libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))\n> > +libgtest = dependency('gtest', required : get_option('lc-compliance'),\n> > +                      fallback : ['gtest', 'gtest_dep'])\n> >\n> > -if not libevent.found()\n> > +if not (libevent.found() and libgtest.found())\n> >      lc_compliance_enabled = false\n> >      subdir_done()\n> >  endif\n> >\n> > -if get_option('android_platform') == 'cros'\n> > -    libgtest = dependency('gtest', required : get_option('lc-compliance'))\n> > -\n> > -    if not libgtest.found()\n> > -        lc_compliance_enabled = false\n> > -        subdir_done()\n> > -    endif\n> > -\n> > -else\n> > -    libgtest_sp = subproject('gtest')\n> > -    libgtest = libgtest_sp.get_variable('gtest_dep')\n> > -endif\n> > -\n> >  lc_compliance_enabled = true\n> >\n> >  lc_compliance_sources = files([\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 6FC77BDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  3 Feb 2022 00:57:54 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 73FF6609E5;\n\tThu,  3 Feb 2022 01:57:51 +0100 (CET)","from mail-ed1-x532.google.com (mail-ed1-x532.google.com\n\t[IPv6:2a00:1450:4864:20::532])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0AA0E609C3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Feb 2022 01:57:50 +0100 (CET)","by mail-ed1-x532.google.com with SMTP id u24so2149662eds.11\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 02 Feb 2022 16:57:49 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"jBlcHtPZ\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=XwnXa7PHS1nJ+f7/OZoToemlwUANfYNWll8wRz8JwA8=;\n\tb=jBlcHtPZNtutKJpG+vk2kMevUaekjYzlzww/Gh8zCdJ8mv3wJITevz7DYdhE56TgKp\n\txNhYVsZxfz7d0x9yQSrMLEk/Ht83jVw52mpm7+VdILIFTPo2TvcvEn6Wp2YmDd9N+hRK\n\t2K8Vu1r10NQQ2PCENBqkEhmCHWyP9CpScvGOM=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=XwnXa7PHS1nJ+f7/OZoToemlwUANfYNWll8wRz8JwA8=;\n\tb=CoHW8+6zietIT0I/iz7pixl5oJf19oUD4RWgo4qCGM79apMqx3hBW5+bSbupx0o9bn\n\tBYR9e0IRDP+pTxOgD+stA1S3mBwfiNDKkIEh1hzEupk5J5Upuf/eZd+nC5kBvTSeOS7m\n\t2NTN1mFGBz3QdXlTPnfqUXXl9vX+SZ7iGpir2IBahxQAKFVykm4zbZn6yGhKcS6697OL\n\tAP7sm4GPT+PSevnL6wgDM2utIjZNMvSr4bpVOSlCQXsmmY5cXZkpqKghKDisiCrBVmRQ\n\tjo29AH57wJ3DNpkDNndYHfI1TjtuI1XnZxpQ/XaEhpwDhFl+TRPtmlahUyjQJxIL0u+U\n\tERSA==","X-Gm-Message-State":"AOAM532PhfZG2D800rfxWKx4cCzjEW3smcsyvOQj/pbnOj2kjQ9U5wLM\n\trx3QloQvs5ue44lMQcG4ZTNqs3iQ/GdY+zI4cwA/yA==","X-Google-Smtp-Source":"ABdhPJwlpFopQVJF94ve5nA++KShlKDrjDijE8cOW4ug1ssxWUzP8uz43mUDqiryrwm48WSzKhxwgySuyKzNeMNA/Dc=","X-Received":"by 2002:a05:6402:2993:: with SMTP id\n\teq19mr32554779edb.233.1643849869489; \n\tWed, 02 Feb 2022 16:57:49 -0800 (PST)","MIME-Version":"1.0","References":"<20220202143141.160660-1-javierm@redhat.com>\n\t<YfrAGz4iyK4A48DV@pendragon.ideasonboard.com>","In-Reply-To":"<YfrAGz4iyK4A48DV@pendragon.ideasonboard.com>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Thu, 3 Feb 2022 09:57:38 +0900","Message-ID":"<CAO5uPHPT6TFq8sGs+U7q0gbk6kTfxq88ajnC8zs0Zg8+-A_SfQ@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH] lc-compliance: Only download a gtest\n\tsubproject as a fallback","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":22116,"web_url":"https://patchwork.libcamera.org/comment/22116/","msgid":"<YfsrPi3pUH2E4G5d@pendragon.ideasonboard.com>","date":"2022-02-03T01:09:18","subject":"Re: [libcamera-devel] [PATCH] lc-compliance: Only download a gtest\n\tsubproject as a fallback","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Hiro,\n\nOn Thu, Feb 03, 2022 at 09:57:38AM +0900, Hirokazu Honda wrote:\n> On Thu, Feb 3, 2022 at 2:32 AM Laurent Pinchart wrote:\n> > On Wed, Feb 02, 2022 at 03:31:40PM +0100, Javier Martinez Canillas wrote:\n> > > Currently, a subproject is used to fetch gtest dependency unconditionally\n> > > for any Linux distribution besides ChromeOS. But it leads to a regression\n> > > in distros whose builders are not allowed to download files during build.\n> > >\n> > > This change was introduced by commit 0d50a04cc918 (\"lc-compliance: Build\n> > > with gtest in subprojects\") and the rationale is that some distros, such\n> > > as Debian ship libgtest-dev as a static library. And this could be built\n> > > with a different toolchain than the one used to build libcamera itself.\n> > >\n> > > But this seems to be a corner case, usually users will either build both\n> > > libcamera and all its dependencies using the same toolchain or build it\n> > > using both the libgtest library and toolchain as provided by the distro.\n> > >\n> > > If someone doesn't want for meson to pick up the non-compatible static\n> > > library provided by the distro, then instead should make sure that their\n> > > build root does not have the package providing this installed.\n> > >\n> > > Let's simplify the logic to find the dependency and just use the built-in\n> > > support in dependency() function to fallback to a subproject if not found.\n> > >\n> > > This covers to common case of attempting to use the gtest provided by the\n> > > system or pulling from source if not found or is not preferred.\n> > >\n> > > Fixes: commit 0d50a04cc918 (\"lc-compliance: Build with gtest in subprojects\")\n> > > Reported-by: Eric Curtin <ecurtin@redhat.com>\n> > > Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>\n> \n> The fallback option happens if there is no libgtest in a system.\n> https://mesonbuild.com/Dependencies.html#building-dependencies-as-subprojects\n> It is at linking time that we find the libgtest doesn't work.\n> So I think the problem happens in an environment where libgtest is\n> installed and a different compiler from one building the libgtest is\n> used for libcamera.\n\nThat's correct.\n\n> If I understand correctly, the built-in libgest is compiled always with gcc?\n>  I am not sure how edge case it is to build libcamera with a different compiler.\n\nIn most cases libcamera will be built with the same compiler as the rest\nof the system, including the gtest version provided by the distribution.\nThings should thus work fine. However, in our CI environment, we\ntypically compile-test libcamera with different versions of gcc and\nclang, without using a separate build root that is compiled with the\nsame compiler. It failed linking to gtest with building with libcamera\nwith clang while the system is built with gcc, which is the usual case\n(actually I believe it's not related to clang vs. gcc but to libc++ vs.\nlibstdc++). I used to disable lc-compliance when building with clang for\nthis reason, and your patch that added the gtest wrap helped increasing\nthe CI coverage.\n\nI'm not entirely sure what other issues, if any, your patch fixes\nthough. On Chrome OS we kept building with the system-provided gtest, so\nI suppose it wasn't about Chrome OS.\n\n> > As discussed on IRC, this breaks the build when compiling libcamera with\n> > clang + libc++ on a system providing a gtest package compiled with g++ +\n> > libstdc++. Compilation also breaks with gcc 7 and gcc 8, due to the\n> > corresponding libstdc++ having different versions of some symbols:\n> >\n> > /usr/lib/gcc/x86_64-pc-linux-gnu/7.4.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib64/libgtest.so: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()@GLIBCXX_3.4.26'\n> >\n> > Such \"cross\" compilation isn't expected in most cases, but can be useful\n> > for CI to test multiple compilers on a host system without a fully\n> > separate build root. Setting the meson force_fallback_for option to\n> > gtest fixes the CI compilation tests, so\n> >\n> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> >\n> > > ---\n> > >\n> > >  src/lc-compliance/meson.build | 17 +++--------------\n> > >  1 file changed, 3 insertions(+), 14 deletions(-)\n> > >\n> > > diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build\n> > > index 130ddbb55916..8b57474be2b2 100644\n> > > --- a/src/lc-compliance/meson.build\n> > > +++ b/src/lc-compliance/meson.build\n> > > @@ -1,25 +1,14 @@\n> > >  # SPDX-License-Identifier: CC0-1.0\n> > >\n> > >  libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))\n> > > +libgtest = dependency('gtest', required : get_option('lc-compliance'),\n> > > +                      fallback : ['gtest', 'gtest_dep'])\n> > >\n> > > -if not libevent.found()\n> > > +if not (libevent.found() and libgtest.found())\n> > >      lc_compliance_enabled = false\n> > >      subdir_done()\n> > >  endif\n> > >\n> > > -if get_option('android_platform') == 'cros'\n> > > -    libgtest = dependency('gtest', required : get_option('lc-compliance'))\n> > > -\n> > > -    if not libgtest.found()\n> > > -        lc_compliance_enabled = false\n> > > -        subdir_done()\n> > > -    endif\n> > > -\n> > > -else\n> > > -    libgtest_sp = subproject('gtest')\n> > > -    libgtest = libgtest_sp.get_variable('gtest_dep')\n> > > -endif\n> > > -\n> > >  lc_compliance_enabled = true\n> > >\n> > >  lc_compliance_sources = files([","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 594BEBF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  3 Feb 2022 01:09:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BCFD3609E5;\n\tThu,  3 Feb 2022 02:09:44 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 04AAC609C3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Feb 2022 02:09:43 +0100 (CET)","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 616AB49C;\n\tThu,  3 Feb 2022 02:09:42 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"f5Uz886C\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1643850582;\n\tbh=JxVUsoNdaHKCU3yboXp/s1EezrinXEEYZ6QCH/CPvFM=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=f5Uz886CfkL4iLzEm35Sj9Lo2DNIBqwZB6hMs2GV/1BisBu5pvi3ZmIj98p1qBSyd\n\tuQgFD6vJ7r+Kq262rSHrQF+EVlS7r0TO7j/5lRQX1Mlb3Ct1S5n5WsczY48BcBDE3l\n\tAwt232Ej9WYDMzw3O1neKU0So+KbLTQyaTljFiXA=","Date":"Thu, 3 Feb 2022 03:09:18 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<YfsrPi3pUH2E4G5d@pendragon.ideasonboard.com>","References":"<20220202143141.160660-1-javierm@redhat.com>\n\t<YfrAGz4iyK4A48DV@pendragon.ideasonboard.com>\n\t<CAO5uPHPT6TFq8sGs+U7q0gbk6kTfxq88ajnC8zs0Zg8+-A_SfQ@mail.gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<CAO5uPHPT6TFq8sGs+U7q0gbk6kTfxq88ajnC8zs0Zg8+-A_SfQ@mail.gmail.com>","Subject":"Re: [libcamera-devel] [PATCH] lc-compliance: Only download a gtest\n\tsubproject as a fallback","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":22117,"web_url":"https://patchwork.libcamera.org/comment/22117/","msgid":"<CAO5uPHOT8a3U7rQ++ZQG6kb_ZXNTJeOuiqd-6t-Hf3hqjRxZdw@mail.gmail.com>","date":"2022-02-03T01:47:25","subject":"Re: [libcamera-devel] [PATCH] lc-compliance: Only download a gtest\n\tsubproject as a fallback","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi Laurent,\n\nOn Thu, Feb 3, 2022 at 10:09 AM Laurent Pinchart\n<laurent.pinchart@ideasonboard.com> wrote:\n>\n> Hi Hiro,\n>\n> On Thu, Feb 03, 2022 at 09:57:38AM +0900, Hirokazu Honda wrote:\n> > On Thu, Feb 3, 2022 at 2:32 AM Laurent Pinchart wrote:\n> > > On Wed, Feb 02, 2022 at 03:31:40PM +0100, Javier Martinez Canillas wrote:\n> > > > Currently, a subproject is used to fetch gtest dependency unconditionally\n> > > > for any Linux distribution besides ChromeOS. But it leads to a regression\n> > > > in distros whose builders are not allowed to download files during build.\n> > > >\n> > > > This change was introduced by commit 0d50a04cc918 (\"lc-compliance: Build\n> > > > with gtest in subprojects\") and the rationale is that some distros, such\n> > > > as Debian ship libgtest-dev as a static library. And this could be built\n> > > > with a different toolchain than the one used to build libcamera itself.\n> > > >\n> > > > But this seems to be a corner case, usually users will either build both\n> > > > libcamera and all its dependencies using the same toolchain or build it\n> > > > using both the libgtest library and toolchain as provided by the distro.\n> > > >\n> > > > If someone doesn't want for meson to pick up the non-compatible static\n> > > > library provided by the distro, then instead should make sure that their\n> > > > build root does not have the package providing this installed.\n> > > >\n> > > > Let's simplify the logic to find the dependency and just use the built-in\n> > > > support in dependency() function to fallback to a subproject if not found.\n> > > >\n> > > > This covers to common case of attempting to use the gtest provided by the\n> > > > system or pulling from source if not found or is not preferred.\n> > > >\n> > > > Fixes: commit 0d50a04cc918 (\"lc-compliance: Build with gtest in subprojects\")\n> > > > Reported-by: Eric Curtin <ecurtin@redhat.com>\n> > > > Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>\n> >\n> > The fallback option happens if there is no libgtest in a system.\n> > https://mesonbuild.com/Dependencies.html#building-dependencies-as-subprojects\n> > It is at linking time that we find the libgtest doesn't work.\n> > So I think the problem happens in an environment where libgtest is\n> > installed and a different compiler from one building the libgtest is\n> > used for libcamera.\n>\n> That's correct.\n>\n> > If I understand correctly, the built-in libgest is compiled always with gcc?\n> >  I am not sure how edge case it is to build libcamera with a different compiler.\n>\n> In most cases libcamera will be built with the same compiler as the rest\n> of the system, including the gtest version provided by the distribution.\n> Things should thus work fine. However, in our CI environment, we\n> typically compile-test libcamera with different versions of gcc and\n> clang, without using a separate build root that is compiled with the\n> same compiler. It failed linking to gtest with building with libcamera\n> with clang while the system is built with gcc, which is the usual case\n> (actually I believe it's not related to clang vs. gcc but to libc++ vs.\n> libstdc++). I used to disable lc-compliance when building with clang for\n> this reason, and your patch that added the gtest wrap helped increasing\n> the CI coverage.\n\nAh yeah, it is libc++ vs. libstdc++. I forgot that.\n\n>\n> I'm not entirely sure what other issues, if any, your patch fixes\n> though. On Chrome OS we kept building with the system-provided gtest, so\n> I suppose it wasn't about Chrome OS.\n>\n\nThat's right. Both libgtest and libcamera are built with libc++ on\nChromeOS build environment.\nTherefore this is not problem. But I build libmcaera on Debian, I use\nclang for various convenient c++ checks e.g. thread-safety, so libc++\nis used. https://git.linuxtv.org/libcamera.git/tree/meson.build#n71\nI have to not use clang or uninstall either libc++ or libgtest.\nThis change makes it impossible to build libcamera with clang++, if\nthe installed libgest is built with different c++ standard library,\nunless meson.build is manually modified.\nHmm, yeah maybe I should uninstall libgtest on my Debian.\n\n-Hiro\n> > > As discussed on IRC, this breaks the build when compiling libcamera with\n> > > clang + libc++ on a system providing a gtest package compiled with g++ +\n> > > libstdc++. Compilation also breaks with gcc 7 and gcc 8, due to the\n> > > corresponding libstdc++ having different versions of some symbols:\n> > >\n> > > /usr/lib/gcc/x86_64-pc-linux-gnu/7.4.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib64/libgtest.so: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()@GLIBCXX_3.4.26'\n> > >\n> > > Such \"cross\" compilation isn't expected in most cases, but can be useful\n> > > for CI to test multiple compilers on a host system without a fully\n> > > separate build root. Setting the meson force_fallback_for option to\n> > > gtest fixes the CI compilation tests, so\n> > >\n> > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > >\n> > > > ---\n> > > >\n> > > >  src/lc-compliance/meson.build | 17 +++--------------\n> > > >  1 file changed, 3 insertions(+), 14 deletions(-)\n> > > >\n> > > > diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build\n> > > > index 130ddbb55916..8b57474be2b2 100644\n> > > > --- a/src/lc-compliance/meson.build\n> > > > +++ b/src/lc-compliance/meson.build\n> > > > @@ -1,25 +1,14 @@\n> > > >  # SPDX-License-Identifier: CC0-1.0\n> > > >\n> > > >  libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))\n> > > > +libgtest = dependency('gtest', required : get_option('lc-compliance'),\n> > > > +                      fallback : ['gtest', 'gtest_dep'])\n> > > >\n> > > > -if not libevent.found()\n> > > > +if not (libevent.found() and libgtest.found())\n> > > >      lc_compliance_enabled = false\n> > > >      subdir_done()\n> > > >  endif\n> > > >\n> > > > -if get_option('android_platform') == 'cros'\n> > > > -    libgtest = dependency('gtest', required : get_option('lc-compliance'))\n> > > > -\n> > > > -    if not libgtest.found()\n> > > > -        lc_compliance_enabled = false\n> > > > -        subdir_done()\n> > > > -    endif\n> > > > -\n> > > > -else\n> > > > -    libgtest_sp = subproject('gtest')\n> > > > -    libgtest = libgtest_sp.get_variable('gtest_dep')\n> > > > -endif\n> > > > -\n> > > >  lc_compliance_enabled = true\n> > > >\n> > > >  lc_compliance_sources = files([\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 F0928BDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  3 Feb 2022 01:47:38 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 15C61609E5;\n\tThu,  3 Feb 2022 02:47:38 +0100 (CET)","from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com\n\t[IPv6:2a00:1450:4864:20::52f])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C6169609C3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Feb 2022 02:47:36 +0100 (CET)","by mail-ed1-x52f.google.com with SMTP id b13so2499129edn.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 02 Feb 2022 17:47:36 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"nmAH4t60\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc:content-transfer-encoding;\n\tbh=bl5v6WtHAp10zvIncDf7m7VNhu9x7HCI4NHIkNaofyI=;\n\tb=nmAH4t60ogdJ+sm+PWOqnucAYuurLJbcpVPoJvkHKX2nap7duAqDpWp0x3iimEc0Sh\n\tlZTHRPt3kSp07Ns2P8LcM1GqotvfgUuOJekCsPE/iCmvGxxfcBOKn7pw0zewqU/cV90y\n\tNTSH1Fr8va9fFFKw4YJN4EzsDaBsCQP6X8XUQ=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc:content-transfer-encoding;\n\tbh=bl5v6WtHAp10zvIncDf7m7VNhu9x7HCI4NHIkNaofyI=;\n\tb=o48K22ZcZhkP5660esQYJFV3YIw7BUYiQqaUpEmY70aPNC0IWskNjrV5AeDcrfQGVU\n\tJDtKXABmslOyD7Y1eS8V4JC9RKsW5LKXTTg6sjrLgMe52UPKoiFB1Y8Ke274SXBkjusM\n\tVp756btYd9dEztbF6dYk1/N93CTUea0HFbwwRoYpBp+Z5t+u7gb+dGTZg/fYJSpvzK1N\n\tPK7MHcTEj+wmcNcMK1Of48sRe/LCV2Ex4Zv755G0h0Gp9cNqQiWz0dIt7Nqb5LhUTdpS\n\t2nFzg9Uv0XeypyVZvaD0qrNiilC3MH4k8eioAM8F5fF/p+pzQ1sDMerxHBdsJG+X22CR\n\tFl/A==","X-Gm-Message-State":"AOAM531WDXIpoSXvNZVPU+xYdczrhgrQlEK64/EpCVQYZRXJCqVn+ZAv\n\twkp5I66WQwPzo4YDlJnX3/jANaMxNMguvmk0x3ryJA==","X-Google-Smtp-Source":"ABdhPJzxRD/6OsfTMTZaU8KNsD2xT7wUhmXdUZvZn9oJYU9vmNHD2QUWv5xlvk5Kv0yW1hgSbzX8DLWowL9NNfz+hWs=","X-Received":"by 2002:a05:6402:175b:: with SMTP id\n\tv27mr32747019edx.411.1643852856393; \n\tWed, 02 Feb 2022 17:47:36 -0800 (PST)","MIME-Version":"1.0","References":"<20220202143141.160660-1-javierm@redhat.com>\n\t<YfrAGz4iyK4A48DV@pendragon.ideasonboard.com>\n\t<CAO5uPHPT6TFq8sGs+U7q0gbk6kTfxq88ajnC8zs0Zg8+-A_SfQ@mail.gmail.com>\n\t<YfsrPi3pUH2E4G5d@pendragon.ideasonboard.com>","In-Reply-To":"<YfsrPi3pUH2E4G5d@pendragon.ideasonboard.com>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Thu, 3 Feb 2022 10:47:25 +0900","Message-ID":"<CAO5uPHOT8a3U7rQ++ZQG6kb_ZXNTJeOuiqd-6t-Hf3hqjRxZdw@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","Subject":"Re: [libcamera-devel] [PATCH] lc-compliance: Only download a gtest\n\tsubproject as a fallback","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":22118,"web_url":"https://patchwork.libcamera.org/comment/22118/","msgid":"<Yfs2ah0YGxrgYpKr@pendragon.ideasonboard.com>","date":"2022-02-03T01:56:58","subject":"Re: [libcamera-devel] [PATCH] lc-compliance: Only download a gtest\n\tsubproject as a fallback","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Hiro,\n\nOn Thu, Feb 03, 2022 at 10:47:25AM +0900, Hirokazu Honda wrote:\n> On Thu, Feb 3, 2022 at 10:09 AM Laurent Pinchart wrote:\n> > On Thu, Feb 03, 2022 at 09:57:38AM +0900, Hirokazu Honda wrote:\n> > > On Thu, Feb 3, 2022 at 2:32 AM Laurent Pinchart wrote:\n> > > > On Wed, Feb 02, 2022 at 03:31:40PM +0100, Javier Martinez Canillas wrote:\n> > > > > Currently, a subproject is used to fetch gtest dependency unconditionally\n> > > > > for any Linux distribution besides ChromeOS. But it leads to a regression\n> > > > > in distros whose builders are not allowed to download files during build.\n> > > > >\n> > > > > This change was introduced by commit 0d50a04cc918 (\"lc-compliance: Build\n> > > > > with gtest in subprojects\") and the rationale is that some distros, such\n> > > > > as Debian ship libgtest-dev as a static library. And this could be built\n> > > > > with a different toolchain than the one used to build libcamera itself.\n> > > > >\n> > > > > But this seems to be a corner case, usually users will either build both\n> > > > > libcamera and all its dependencies using the same toolchain or build it\n> > > > > using both the libgtest library and toolchain as provided by the distro.\n> > > > >\n> > > > > If someone doesn't want for meson to pick up the non-compatible static\n> > > > > library provided by the distro, then instead should make sure that their\n> > > > > build root does not have the package providing this installed.\n> > > > >\n> > > > > Let's simplify the logic to find the dependency and just use the built-in\n> > > > > support in dependency() function to fallback to a subproject if not found.\n> > > > >\n> > > > > This covers to common case of attempting to use the gtest provided by the\n> > > > > system or pulling from source if not found or is not preferred.\n> > > > >\n> > > > > Fixes: commit 0d50a04cc918 (\"lc-compliance: Build with gtest in subprojects\")\n> > > > > Reported-by: Eric Curtin <ecurtin@redhat.com>\n> > > > > Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>\n> > >\n> > > The fallback option happens if there is no libgtest in a system.\n> > > https://mesonbuild.com/Dependencies.html#building-dependencies-as-subprojects\n> > > It is at linking time that we find the libgtest doesn't work.\n> > > So I think the problem happens in an environment where libgtest is\n> > > installed and a different compiler from one building the libgtest is\n> > > used for libcamera.\n> >\n> > That's correct.\n> >\n> > > If I understand correctly, the built-in libgest is compiled always with gcc?\n> > >  I am not sure how edge case it is to build libcamera with a different compiler.\n> >\n> > In most cases libcamera will be built with the same compiler as the rest\n> > of the system, including the gtest version provided by the distribution.\n> > Things should thus work fine. However, in our CI environment, we\n> > typically compile-test libcamera with different versions of gcc and\n> > clang, without using a separate build root that is compiled with the\n> > same compiler. It failed linking to gtest with building with libcamera\n> > with clang while the system is built with gcc, which is the usual case\n> > (actually I believe it's not related to clang vs. gcc but to libc++ vs.\n> > libstdc++). I used to disable lc-compliance when building with clang for\n> > this reason, and your patch that added the gtest wrap helped increasing\n> > the CI coverage.\n> \n> Ah yeah, it is libc++ vs. libstdc++. I forgot that.\n> \n> > I'm not entirely sure what other issues, if any, your patch fixes\n> > though. On Chrome OS we kept building with the system-provided gtest, so\n> > I suppose it wasn't about Chrome OS.\n> \n> That's right. Both libgtest and libcamera are built with libc++ on\n> ChromeOS build environment.\n> Therefore this is not problem. But I build libmcaera on Debian, I use\n> clang for various convenient c++ checks e.g. thread-safety, so libc++\n> is used. https://git.linuxtv.org/libcamera.git/tree/meson.build#n71\n> I have to not use clang or uninstall either libc++ or libgtest.\n> This change makes it impossible to build libcamera with clang++, if\n> the installed libgest is built with different c++ standard library,\n> unless meson.build is manually modified.\n> Hmm, yeah maybe I should uninstall libgtest on my Debian.\n\nNo need to, you can use meson magic :-)\n\nmeson configure -Dforce_fallback_for=gtest\n\nand meson will fallback to the wrap for gtest, even if it is detected in\nthe system.\n\n> > > > As discussed on IRC, this breaks the build when compiling libcamera with\n> > > > clang + libc++ on a system providing a gtest package compiled with g++ +\n> > > > libstdc++. Compilation also breaks with gcc 7 and gcc 8, due to the\n> > > > corresponding libstdc++ having different versions of some symbols:\n> > > >\n> > > > /usr/lib/gcc/x86_64-pc-linux-gnu/7.4.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib64/libgtest.so: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()@GLIBCXX_3.4.26'\n> > > >\n> > > > Such \"cross\" compilation isn't expected in most cases, but can be useful\n> > > > for CI to test multiple compilers on a host system without a fully\n> > > > separate build root. Setting the meson force_fallback_for option to\n> > > > gtest fixes the CI compilation tests, so\n> > > >\n> > > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > > >\n> > > > > ---\n> > > > >\n> > > > >  src/lc-compliance/meson.build | 17 +++--------------\n> > > > >  1 file changed, 3 insertions(+), 14 deletions(-)\n> > > > >\n> > > > > diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build\n> > > > > index 130ddbb55916..8b57474be2b2 100644\n> > > > > --- a/src/lc-compliance/meson.build\n> > > > > +++ b/src/lc-compliance/meson.build\n> > > > > @@ -1,25 +1,14 @@\n> > > > >  # SPDX-License-Identifier: CC0-1.0\n> > > > >\n> > > > >  libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))\n> > > > > +libgtest = dependency('gtest', required : get_option('lc-compliance'),\n> > > > > +                      fallback : ['gtest', 'gtest_dep'])\n> > > > >\n> > > > > -if not libevent.found()\n> > > > > +if not (libevent.found() and libgtest.found())\n> > > > >      lc_compliance_enabled = false\n> > > > >      subdir_done()\n> > > > >  endif\n> > > > >\n> > > > > -if get_option('android_platform') == 'cros'\n> > > > > -    libgtest = dependency('gtest', required : get_option('lc-compliance'))\n> > > > > -\n> > > > > -    if not libgtest.found()\n> > > > > -        lc_compliance_enabled = false\n> > > > > -        subdir_done()\n> > > > > -    endif\n> > > > > -\n> > > > > -else\n> > > > > -    libgtest_sp = subproject('gtest')\n> > > > > -    libgtest = libgtest_sp.get_variable('gtest_dep')\n> > > > > -endif\n> > > > > -\n> > > > >  lc_compliance_enabled = true\n> > > > >\n> > > > >  lc_compliance_sources = files([","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 E328FBF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  3 Feb 2022 01:57:24 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6242F609E2;\n\tThu,  3 Feb 2022 02:57:24 +0100 (CET)","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 2496C609E1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Feb 2022 02:57:22 +0100 (CET)","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 9A5CF49C;\n\tThu,  3 Feb 2022 02:57:21 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"t8TXgVzH\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1643853441;\n\tbh=Wsw2rboDXDAApOIh448tM2sLW7wcr3lqq8S0HqFV8QM=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=t8TXgVzH+21E624qnC524KVzUFwyLpiNffPh7PujczCSRNPIm7igfluFJeR0gXgzj\n\tlJr9H41hQREyvRjROVNBvTNyAmUc0aqly3Fwzg/sFGvjqEr3QmDRj07e5WgJGgQNOf\n\tiKy8NAIHIsZdyR9KHEdzaAbpvYMcltkUvIN+l2jw=","Date":"Thu, 3 Feb 2022 03:56:58 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<Yfs2ah0YGxrgYpKr@pendragon.ideasonboard.com>","References":"<20220202143141.160660-1-javierm@redhat.com>\n\t<YfrAGz4iyK4A48DV@pendragon.ideasonboard.com>\n\t<CAO5uPHPT6TFq8sGs+U7q0gbk6kTfxq88ajnC8zs0Zg8+-A_SfQ@mail.gmail.com>\n\t<YfsrPi3pUH2E4G5d@pendragon.ideasonboard.com>\n\t<CAO5uPHOT8a3U7rQ++ZQG6kb_ZXNTJeOuiqd-6t-Hf3hqjRxZdw@mail.gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<CAO5uPHOT8a3U7rQ++ZQG6kb_ZXNTJeOuiqd-6t-Hf3hqjRxZdw@mail.gmail.com>","Subject":"Re: [libcamera-devel] [PATCH] lc-compliance: Only download a gtest\n\tsubproject as a fallback","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":22119,"web_url":"https://patchwork.libcamera.org/comment/22119/","msgid":"<CAO5uPHOtaPA0WhLJC7wAODwRsB3JKaGv0e39YB3DrRdwoiGZLg@mail.gmail.com>","date":"2022-02-03T02:50:53","subject":"Re: [libcamera-devel] [PATCH] lc-compliance: Only download a gtest\n\tsubproject as a fallback","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi Laurent,\n\nOn Thu, Feb 3, 2022 at 10:57 AM Laurent Pinchart\n<laurent.pinchart@ideasonboard.com> wrote:\n>\n> Hi Hiro,\n>\n> On Thu, Feb 03, 2022 at 10:47:25AM +0900, Hirokazu Honda wrote:\n> > On Thu, Feb 3, 2022 at 10:09 AM Laurent Pinchart wrote:\n> > > On Thu, Feb 03, 2022 at 09:57:38AM +0900, Hirokazu Honda wrote:\n> > > > On Thu, Feb 3, 2022 at 2:32 AM Laurent Pinchart wrote:\n> > > > > On Wed, Feb 02, 2022 at 03:31:40PM +0100, Javier Martinez Canillas wrote:\n> > > > > > Currently, a subproject is used to fetch gtest dependency unconditionally\n> > > > > > for any Linux distribution besides ChromeOS. But it leads to a regression\n> > > > > > in distros whose builders are not allowed to download files during build.\n> > > > > >\n> > > > > > This change was introduced by commit 0d50a04cc918 (\"lc-compliance: Build\n> > > > > > with gtest in subprojects\") and the rationale is that some distros, such\n> > > > > > as Debian ship libgtest-dev as a static library. And this could be built\n> > > > > > with a different toolchain than the one used to build libcamera itself.\n> > > > > >\n> > > > > > But this seems to be a corner case, usually users will either build both\n> > > > > > libcamera and all its dependencies using the same toolchain or build it\n> > > > > > using both the libgtest library and toolchain as provided by the distro.\n> > > > > >\n> > > > > > If someone doesn't want for meson to pick up the non-compatible static\n> > > > > > library provided by the distro, then instead should make sure that their\n> > > > > > build root does not have the package providing this installed.\n> > > > > >\n> > > > > > Let's simplify the logic to find the dependency and just use the built-in\n> > > > > > support in dependency() function to fallback to a subproject if not found.\n> > > > > >\n> > > > > > This covers to common case of attempting to use the gtest provided by the\n> > > > > > system or pulling from source if not found or is not preferred.\n> > > > > >\n> > > > > > Fixes: commit 0d50a04cc918 (\"lc-compliance: Build with gtest in subprojects\")\n> > > > > > Reported-by: Eric Curtin <ecurtin@redhat.com>\n> > > > > > Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>\n> > > >\n> > > > The fallback option happens if there is no libgtest in a system.\n> > > > https://mesonbuild.com/Dependencies.html#building-dependencies-as-subprojects\n> > > > It is at linking time that we find the libgtest doesn't work.\n> > > > So I think the problem happens in an environment where libgtest is\n> > > > installed and a different compiler from one building the libgtest is\n> > > > used for libcamera.\n> > >\n> > > That's correct.\n> > >\n> > > > If I understand correctly, the built-in libgest is compiled always with gcc?\n> > > >  I am not sure how edge case it is to build libcamera with a different compiler.\n> > >\n> > > In most cases libcamera will be built with the same compiler as the rest\n> > > of the system, including the gtest version provided by the distribution.\n> > > Things should thus work fine. However, in our CI environment, we\n> > > typically compile-test libcamera with different versions of gcc and\n> > > clang, without using a separate build root that is compiled with the\n> > > same compiler. It failed linking to gtest with building with libcamera\n> > > with clang while the system is built with gcc, which is the usual case\n> > > (actually I believe it's not related to clang vs. gcc but to libc++ vs.\n> > > libstdc++). I used to disable lc-compliance when building with clang for\n> > > this reason, and your patch that added the gtest wrap helped increasing\n> > > the CI coverage.\n> >\n> > Ah yeah, it is libc++ vs. libstdc++. I forgot that.\n> >\n> > > I'm not entirely sure what other issues, if any, your patch fixes\n> > > though. On Chrome OS we kept building with the system-provided gtest, so\n> > > I suppose it wasn't about Chrome OS.\n> >\n> > That's right. Both libgtest and libcamera are built with libc++ on\n> > ChromeOS build environment.\n> > Therefore this is not problem. But I build libmcaera on Debian, I use\n> > clang for various convenient c++ checks e.g. thread-safety, so libc++\n> > is used. https://git.linuxtv.org/libcamera.git/tree/meson.build#n71\n> > I have to not use clang or uninstall either libc++ or libgtest.\n> > This change makes it impossible to build libcamera with clang++, if\n> > the installed libgest is built with different c++ standard library,\n> > unless meson.build is manually modified.\n> > Hmm, yeah maybe I should uninstall libgtest on my Debian.\n>\n> No need to, you can use meson magic :-)\n>\n> meson configure -Dforce_fallback_for=gtest\n>\n> and meson will fallback to the wrap for gtest, even if it is detected in\n> the system.\n\nAha, I didn't know the way. Thanks.\n\nReviewed-by: Hirokazu Honda <hiroh@chromium.org>\n\n-Hiro\n>\n> > > > > As discussed on IRC, this breaks the build when compiling libcamera with\n> > > > > clang + libc++ on a system providing a gtest package compiled with g++ +\n> > > > > libstdc++. Compilation also breaks with gcc 7 and gcc 8, due to the\n> > > > > corresponding libstdc++ having different versions of some symbols:\n> > > > >\n> > > > > /usr/lib/gcc/x86_64-pc-linux-gnu/7.4.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib64/libgtest.so: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()@GLIBCXX_3.4.26'\n> > > > >\n> > > > > Such \"cross\" compilation isn't expected in most cases, but can be useful\n> > > > > for CI to test multiple compilers on a host system without a fully\n> > > > > separate build root. Setting the meson force_fallback_for option to\n> > > > > gtest fixes the CI compilation tests, so\n> > > > >\n> > > > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > > > >\n> > > > > > ---\n> > > > > >\n> > > > > >  src/lc-compliance/meson.build | 17 +++--------------\n> > > > > >  1 file changed, 3 insertions(+), 14 deletions(-)\n> > > > > >\n> > > > > > diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build\n> > > > > > index 130ddbb55916..8b57474be2b2 100644\n> > > > > > --- a/src/lc-compliance/meson.build\n> > > > > > +++ b/src/lc-compliance/meson.build\n> > > > > > @@ -1,25 +1,14 @@\n> > > > > >  # SPDX-License-Identifier: CC0-1.0\n> > > > > >\n> > > > > >  libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))\n> > > > > > +libgtest = dependency('gtest', required : get_option('lc-compliance'),\n> > > > > > +                      fallback : ['gtest', 'gtest_dep'])\n> > > > > >\n> > > > > > -if not libevent.found()\n> > > > > > +if not (libevent.found() and libgtest.found())\n> > > > > >      lc_compliance_enabled = false\n> > > > > >      subdir_done()\n> > > > > >  endif\n> > > > > >\n> > > > > > -if get_option('android_platform') == 'cros'\n> > > > > > -    libgtest = dependency('gtest', required : get_option('lc-compliance'))\n> > > > > > -\n> > > > > > -    if not libgtest.found()\n> > > > > > -        lc_compliance_enabled = false\n> > > > > > -        subdir_done()\n> > > > > > -    endif\n> > > > > > -\n> > > > > > -else\n> > > > > > -    libgtest_sp = subproject('gtest')\n> > > > > > -    libgtest = libgtest_sp.get_variable('gtest_dep')\n> > > > > > -endif\n> > > > > > -\n> > > > > >  lc_compliance_enabled = true\n> > > > > >\n> > > > > >  lc_compliance_sources = files([\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 5684DBDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  3 Feb 2022 02:51:07 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9A064609E2;\n\tThu,  3 Feb 2022 03:51:06 +0100 (CET)","from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com\n\t[IPv6:2a00:1450:4864:20::52a])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 710C1609C3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Feb 2022 03:51:05 +0100 (CET)","by mail-ed1-x52a.google.com with SMTP id w25so2668050edt.7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 02 Feb 2022 18:51:05 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"hhsIpfXi\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc:content-transfer-encoding;\n\tbh=iWlgI8N4CNJU3N7Yxh4olkEoYpt/tjfHiyk7EJICN8g=;\n\tb=hhsIpfXiwzEZcOgFErUsl3rbJ6FcD6+MxpKKATOejHI1oCXh3M5wTBfFl/xT93xHCk\n\tvXSLKiLgIeNdha787zgVusz7qj9CqYuawYuY3bvVJKE8cD3uIp9ZGVmjuXqaVR4ePrag\n\tGOAteh4tybavv7TfG1VKMStMF7uUEtghEH/zI=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc:content-transfer-encoding;\n\tbh=iWlgI8N4CNJU3N7Yxh4olkEoYpt/tjfHiyk7EJICN8g=;\n\tb=CLHKkhuocQkqfSb3Alpy+csaVWEhKA7Uo5p9T09GsiJKh6ZGuanH0QRw+Xo/ezxQJa\n\tH4ZLLg3D9DZiq4JOl1QfcGtAlgBUdMfJuVZHK5UrNCtVdZDJ5K4hhlAK/TBM091d2AJh\n\tXDY8fgp8mJL2BMaYMxmmA8qnxIpvjXtinI9f64FB4v9I1mf7NcSKMPS0x+V/Nndfz6nE\n\tBj1DrFsyy1LPZ5k7Uoz9C7WMdg8m9XYciFPM7gu8kAPZqnIpO5gFveArIgF0sLZ2nO54\n\tZ/V4pkV/uoq4y5oIe+gvP6wN8WBtHXxJBn985QXRwiIaUBgYkdpZfhf4sZzgTE4mKqnZ\n\tOvDg==","X-Gm-Message-State":"AOAM530bRU+JSXyxucpTHMkf8Ge4t7pZzFcBg1r30Ny7X5ySio8Pr3Ay\n\tF1qHLSlFISyq48cdsCZsEbzyLbb620XA58krocrpqA==","X-Google-Smtp-Source":"ABdhPJzoQW5EVACAQSvjGpxuDjQtYVu61X9CuFm+fOgVS4L7r5OKXX0BI4T2AtxwHiAbZpsl/ErS9nbKx9VjHa3Vt/I=","X-Received":"by 2002:a05:6402:490:: with SMTP id\n\tk16mr32825146edv.204.1643856664855; \n\tWed, 02 Feb 2022 18:51:04 -0800 (PST)","MIME-Version":"1.0","References":"<20220202143141.160660-1-javierm@redhat.com>\n\t<YfrAGz4iyK4A48DV@pendragon.ideasonboard.com>\n\t<CAO5uPHPT6TFq8sGs+U7q0gbk6kTfxq88ajnC8zs0Zg8+-A_SfQ@mail.gmail.com>\n\t<YfsrPi3pUH2E4G5d@pendragon.ideasonboard.com>\n\t<CAO5uPHOT8a3U7rQ++ZQG6kb_ZXNTJeOuiqd-6t-Hf3hqjRxZdw@mail.gmail.com>\n\t<Yfs2ah0YGxrgYpKr@pendragon.ideasonboard.com>","In-Reply-To":"<Yfs2ah0YGxrgYpKr@pendragon.ideasonboard.com>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Thu, 3 Feb 2022 11:50:53 +0900","Message-ID":"<CAO5uPHOtaPA0WhLJC7wAODwRsB3JKaGv0e39YB3DrRdwoiGZLg@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","Subject":"Re: [libcamera-devel] [PATCH] lc-compliance: Only download a gtest\n\tsubproject as a fallback","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":22121,"web_url":"https://patchwork.libcamera.org/comment/22121/","msgid":"<045f6db4-a069-1ff0-f849-7b46e20ec0cd@redhat.com>","date":"2022-02-03T09:28:38","subject":"Re: [libcamera-devel] [PATCH] lc-compliance: Only download a gtest\n\tsubproject as a fallback","submitter":{"id":95,"url":"https://patchwork.libcamera.org/api/people/95/","name":"Javier Martinez Canillas","email":"javierm@redhat.com"},"content":"On 2/3/22 03:50, Hirokazu Honda wrote:\n> Hi Laurent,\n\n[snip]\n\n>>> This change makes it impossible to build libcamera with clang++, if\n>>> the installed libgest is built with different c++ standard library,\n>>> unless meson.build is manually modified.\n>>> Hmm, yeah maybe I should uninstall libgtest on my Debian.\n>>\n>> No need to, you can use meson magic :-)\n>>\n>> meson configure -Dforce_fallback_for=gtest\n>>\n\nI should probably had mentioned this in the commit message and also\nthat you can make meson to fallback for all wrap subprojects with:\n\n    meson build --wrap-mode=forcefallback\n\nI'll post a v2 mentioning these two commands to prevent others to\nmake this more clear.\n\n>> and meson will fallback to the wrap for gtest, even if it is detected in\n>> the system.\n> \n> Aha, I didn't know the way. Thanks.\n> \n> Reviewed-by: Hirokazu Honda <hiroh@chromium.org>\n>\n\nThanks!\n\nBest regards,","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 3BC85BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  3 Feb 2022 09:28:49 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9BE5E609C3;\n\tThu,  3 Feb 2022 10:28:48 +0100 (CET)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5D0436020B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Feb 2022 10:28:46 +0100 (CET)","from mail-wm1-f69.google.com (mail-wm1-f69.google.com\n\t[209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\tus-mta-634-J58kgrfbPmWn8sfHE-sXPg-1; Thu, 03 Feb 2022 04:28:41 -0500","by mail-wm1-f69.google.com with SMTP id\n\tn7-20020a1c7207000000b0034ec3d8ce0aso1086337wmc.8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 03 Feb 2022 01:28:41 -0800 (PST)","from [192.168.1.102] ([92.176.231.205])\n\tby smtp.gmail.com with ESMTPSA id\n\tn11sm1585878wms.3.2022.02.03.01.28.39\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tThu, 03 Feb 2022 01:28:39 -0800 (PST)"],"Authentication-Results":["lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"G+R+bjET\"; dkim-atps=neutral","relay.mimecast.com;\n\tauth=pass smtp.auth=CUSA124A263 smtp.mailfrom=javierm@redhat.com"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1643880525;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=H85uxwqGRf6omlB0sQkFa5N+ZJIge9J4Bmkbq1W/lSo=;\n\tb=G+R+bjETV+7DLS4u6msz8ExeK/P9mkVepVnDMQWphC5hdCkb/C5lJAdEx17BJHW62LSinl\n\tj0HLj84Vjx0s0vkOdeZmdr82YVVLEgfrU9Vbc2twB4333YciR2T7qM4YgHe8tEdF7WBGP7\n\tfedFEGNGYdsCSzr6bBWW7NOjvJqVcaA=","X-MC-Unique":"J58kgrfbPmWn8sfHE-sXPg-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:message-id:date:mime-version:user-agent:subject\n\t:content-language:to:cc:references:from:in-reply-to\n\t:content-transfer-encoding;\n\tbh=H85uxwqGRf6omlB0sQkFa5N+ZJIge9J4Bmkbq1W/lSo=;\n\tb=MlGy4qC7Fi9cLGHd+2tVQScZaevmRGNVzXapqnSUC6aA+jP9IPNraPDwFpmSXtyVFS\n\tyQpyZ3Jxx/Eot9u/1F80uvw6tSvRnOcvb7ve+CsnRao9dMBsiAEViNUZItIMPKZt1nUC\n\tAM0Vs0b6c/U0JUnwnQrDPRzGlcu5ImNgRDYMqMOMAAtS3maSstnc5KvkHE2JWYI50/EV\n\tXGAlG8zSala75u77qqTs9SNvA1LjyLbhCcp6nZgojFnmWgVahdakk3y298xAoT/ba8rR\n\tLxB/6+pqA2HOnMUjAqptB18zpFOeJxBvWkliakBhuXxTqRphwRg8Zmz2PgDzy2v7lz3y\n\t0inw==","X-Gm-Message-State":"AOAM533hd9nnUIGquB6xrYHCiRQfV2kRyRgGjfjlSFIGQsrt0UAGPuzq\n\t05PXv5z+9fXSYXVdJMtJaspIqTLjvXEf98epWKL1G1GjkNYIJ8xnE0n6BmRPT6HvRRIVZ+rzHg2\n\ttZdGv4sEAz2o56Q5urDcc9FmgGXmsldMpEA==","X-Received":["by 2002:adf:c74f:: with SMTP id\n\tb15mr1658649wrh.307.1643880520355; \n\tThu, 03 Feb 2022 01:28:40 -0800 (PST)","by 2002:adf:c74f:: with SMTP id\n\tb15mr1658635wrh.307.1643880520114; \n\tThu, 03 Feb 2022 01:28:40 -0800 (PST)"],"X-Google-Smtp-Source":"ABdhPJz2C3Ji9RjMnti7Z/4Sik/9+g2ie9fhLnvSGcfxutJ3NGarZkg1nrFjvJspPNIM7BlRmX9VIQ==","Message-ID":"<045f6db4-a069-1ff0-f849-7b46e20ec0cd@redhat.com>","Date":"Thu, 3 Feb 2022 10:28:38 +0100","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101\n\tThunderbird/91.5.0","To":"Hirokazu Honda <hiroh@chromium.org>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>","References":"<20220202143141.160660-1-javierm@redhat.com>\n\t<YfrAGz4iyK4A48DV@pendragon.ideasonboard.com>\n\t<CAO5uPHPT6TFq8sGs+U7q0gbk6kTfxq88ajnC8zs0Zg8+-A_SfQ@mail.gmail.com>\n\t<YfsrPi3pUH2E4G5d@pendragon.ideasonboard.com>\n\t<CAO5uPHOT8a3U7rQ++ZQG6kb_ZXNTJeOuiqd-6t-Hf3hqjRxZdw@mail.gmail.com>\n\t<Yfs2ah0YGxrgYpKr@pendragon.ideasonboard.com>\n\t<CAO5uPHOtaPA0WhLJC7wAODwRsB3JKaGv0e39YB3DrRdwoiGZLg@mail.gmail.com>","From":"Javier Martinez Canillas <javierm@redhat.com>","In-Reply-To":"<CAO5uPHOtaPA0WhLJC7wAODwRsB3JKaGv0e39YB3DrRdwoiGZLg@mail.gmail.com>","X-Mimecast-Spam-Score":"0","X-Mimecast-Originator":"redhat.com","Content-Language":"en-US","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH] lc-compliance: Only download a gtest\n\tsubproject as a fallback","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>"}}]