All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/1] package/libcamera: disable compliance tool
@ 2021-10-20 19:04 Fabrice Fontaine
  2021-10-21  9:22 ` Kieran Bingham
  0 siblings, 1 reply; 8+ messages in thread
From: Fabrice Fontaine @ 2021-10-20 19:04 UTC (permalink / raw)
  To: buildroot; +Cc: Kieran Bingham, Fabrice Fontaine

Disable compliance tool to fix the following build failure
raised since commit e1d37ab0a7b2b8735e69c070519978d2898d2e79 and
https://git.linuxtv.org/libcamera.git/commit/?id=02bc1108578e8b8eb68fa7d9ae3eeea558723931:

/usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: cannot find -lgtest

Fixes:
 - http://autobuild.buildroot.org/results/e1bb8aa1de310f3d27b74ec7d8748d170ad444e2

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
 package/libcamera/libcamera.mk | 1 +
 1 file changed, 1 insertion(+)

diff --git a/package/libcamera/libcamera.mk b/package/libcamera/libcamera.mk
index 8ab95fb42a..638c9ac553 100644
--- a/package/libcamera/libcamera.mk
+++ b/package/libcamera/libcamera.mk
@@ -17,6 +17,7 @@ LIBCAMERA_DEPENDENCIES = \
 LIBCAMERA_CONF_OPTS = \
 	-Dandroid=disabled \
 	-Ddocumentation=disabled \
+	-Dlc-compliance=disabled \
 	-Dtest=false \
 	-Dwerror=false
 LIBCAMERA_INSTALL_STAGING = YES
-- 
2.33.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [Buildroot] [PATCH 1/1] package/libcamera: disable compliance tool
  2021-10-20 19:04 [Buildroot] [PATCH 1/1] package/libcamera: disable compliance tool Fabrice Fontaine
@ 2021-10-21  9:22 ` Kieran Bingham
  2021-10-21 16:05   ` Fabrice Fontaine
  0 siblings, 1 reply; 8+ messages in thread
From: Kieran Bingham @ 2021-10-21  9:22 UTC (permalink / raw)
  To: Fabrice Fontaine, buildroot; +Cc: Fabrice Fontaine

Hi Fabrice,

Quoting Fabrice Fontaine (2021-10-20 20:04:23)
> Disable compliance tool to fix the following build failure
> raised since commit e1d37ab0a7b2b8735e69c070519978d2898d2e79 and
> https://git.linuxtv.org/libcamera.git/commit/?id=02bc1108578e8b8eb68fa7d9ae3eeea558723931:
> 
> /usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: cannot find -lgtest
> 
> Fixes:
>  - http://autobuild.buildroot.org/results/e1bb8aa1de310f3d27b74ec7d8748d170ad444e2
> 

Any idea why we're failing to find gtest?

Our meson.build for src/lc-compliance contains the following:

"""
# SPDX-License-Identifier: CC0-1.0

libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))
libgtest = dependency('gtest', required : get_option('lc-compliance'))

if not (libevent.found() and libgtest.found())
    lc_compliance_enabled = false
    subdir_done()
endif

lc_compliance_enabled = true
"""

Which implies that libgtest was found during the configuration phase,
but not during the linking phase....

Is libgtest built as part of this build configuration? If it is - I'd
expect lc-compliance to get built against it. If not - then it would
automatically be disabled by our build...


> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> ---
>  package/libcamera/libcamera.mk | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/package/libcamera/libcamera.mk b/package/libcamera/libcamera.mk
> index 8ab95fb42a..638c9ac553 100644
> --- a/package/libcamera/libcamera.mk
> +++ b/package/libcamera/libcamera.mk
> @@ -17,6 +17,7 @@ LIBCAMERA_DEPENDENCIES = \
>  LIBCAMERA_CONF_OPTS = \
>         -Dandroid=disabled \
>         -Ddocumentation=disabled \
> +       -Dlc-compliance=disabled \
>         -Dtest=false \
>         -Dwerror=false
>  LIBCAMERA_INSTALL_STAGING = YES
> -- 
> 2.33.0
>
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Buildroot] [PATCH 1/1] package/libcamera: disable compliance tool
  2021-10-21  9:22 ` Kieran Bingham
@ 2021-10-21 16:05   ` Fabrice Fontaine
  2021-10-21 16:30     ` Kieran Bingham
  0 siblings, 1 reply; 8+ messages in thread
From: Fabrice Fontaine @ 2021-10-21 16:05 UTC (permalink / raw)
  To: Kieran Bingham; +Cc: Buildroot Mailing List

Hi Kieran,

Le jeu. 21 oct. 2021 à 11:22, Kieran Bingham
<kieran.bingham@ideasonboard.com> a écrit :
>
> Hi Fabrice,
>
> Quoting Fabrice Fontaine (2021-10-20 20:04:23)
> > Disable compliance tool to fix the following build failure
> > raised since commit e1d37ab0a7b2b8735e69c070519978d2898d2e79 and
> > https://git.linuxtv.org/libcamera.git/commit/?id=02bc1108578e8b8eb68fa7d9ae3eeea558723931:
> >
> > /usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: cannot find -lgtest
> >
> > Fixes:
> >  - http://autobuild.buildroot.org/results/e1bb8aa1de310f3d27b74ec7d8748d170ad444e2
> >
>
> Any idea why we're failing to find gtest?
Nope, I didn't take time to find out why this is failing as I think
that lc-compliance is just not needed in the context of buildroot (as
gtest is not installed on target).
>
> Our meson.build for src/lc-compliance contains the following:
>
> """
> # SPDX-License-Identifier: CC0-1.0
>
> libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))
> libgtest = dependency('gtest', required : get_option('lc-compliance'))
>
> if not (libevent.found() and libgtest.found())
>     lc_compliance_enabled = false
>     subdir_done()
> endif
>
> lc_compliance_enabled = true
> """
>
> Which implies that libgtest was found during the configuration phase,
> but not during the linking phase....
>
> Is libgtest built as part of this build configuration? If it is - I'd
> expect lc-compliance to get built against it. If not - then it would
> automatically be disabled by our build...
Yes, it is built and found by meson otherwise lc-compliance won't be
built but for an unknown reason, the link step fails.
>
>
> > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> > ---
> >  package/libcamera/libcamera.mk | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/package/libcamera/libcamera.mk b/package/libcamera/libcamera.mk
> > index 8ab95fb42a..638c9ac553 100644
> > --- a/package/libcamera/libcamera.mk
> > +++ b/package/libcamera/libcamera.mk
> > @@ -17,6 +17,7 @@ LIBCAMERA_DEPENDENCIES = \
> >  LIBCAMERA_CONF_OPTS = \
> >         -Dandroid=disabled \
> >         -Ddocumentation=disabled \
> > +       -Dlc-compliance=disabled \
> >         -Dtest=false \
> >         -Dwerror=false
> >  LIBCAMERA_INSTALL_STAGING = YES
> > --
> > 2.33.0
> >
Best Regards,

Fabrice
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Buildroot] [PATCH 1/1] package/libcamera: disable compliance tool
  2021-10-21 16:05   ` Fabrice Fontaine
@ 2021-10-21 16:30     ` Kieran Bingham
  2021-10-21 17:05       ` Fabrice Fontaine
  0 siblings, 1 reply; 8+ messages in thread
From: Kieran Bingham @ 2021-10-21 16:30 UTC (permalink / raw)
  To: Fabrice Fontaine; +Cc: Buildroot Mailing List

Quoting Fabrice Fontaine (2021-10-21 17:05:51)
> Hi Kieran,
> 
> Le jeu. 21 oct. 2021 à 11:22, Kieran Bingham
> <kieran.bingham@ideasonboard.com> a écrit :
> >
> > Hi Fabrice,
> >
> > Quoting Fabrice Fontaine (2021-10-20 20:04:23)
> > > Disable compliance tool to fix the following build failure
> > > raised since commit e1d37ab0a7b2b8735e69c070519978d2898d2e79 and
> > > https://git.linuxtv.org/libcamera.git/commit/?id=02bc1108578e8b8eb68fa7d9ae3eeea558723931:
> > >
> > > /usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: cannot find -lgtest
> > >
> > > Fixes:
> > >  - http://autobuild.buildroot.org/results/e1bb8aa1de310f3d27b74ec7d8748d170ad444e2
> > >
> >
> > Any idea why we're failing to find gtest?
> Nope, I didn't take time to find out why this is failing as I think
> that lc-compliance is just not needed in the context of buildroot (as
> gtest is not installed on target).
> >
> > Our meson.build for src/lc-compliance contains the following:
> >
> > """
> > # SPDX-License-Identifier: CC0-1.0
> >
> > libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))
> > libgtest = dependency('gtest', required : get_option('lc-compliance'))
> >
> > if not (libevent.found() and libgtest.found())
> >     lc_compliance_enabled = false
> >     subdir_done()
> > endif
> >
> > lc_compliance_enabled = true
> > """
> >
> > Which implies that libgtest was found during the configuration phase,
> > but not during the linking phase....
> >
> > Is libgtest built as part of this build configuration? If it is - I'd
> > expect lc-compliance to get built against it. If not - then it would
> > automatically be disabled by our build...
> Yes, it is built and found by meson otherwise lc-compliance won't be
> built but for an unknown reason, the link step fails.

You've mentioned above that gtest won't be installed on the target... So
.. I would expect that means it isn't in the target sysroot, and can't
be linked against.

So it seems that for some reason meson finds a host package instead of a
target package?

Do we have a way to differentiate these in buildroot?

I'm not sure if there's some buildroot wizardry that would make
libcamera's configure phase see only the packages that are installed on
the target when being built, but if buildroot doesn't support installing
gtest at all - then indeed there isn't any point supporting
lc-compliance which requires it.


> >
> >
> > > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> > > ---
> > >  package/libcamera/libcamera.mk | 1 +
> > >  1 file changed, 1 insertion(+)
> > >
> > > diff --git a/package/libcamera/libcamera.mk b/package/libcamera/libcamera.mk
> > > index 8ab95fb42a..638c9ac553 100644
> > > --- a/package/libcamera/libcamera.mk
> > > +++ b/package/libcamera/libcamera.mk
> > > @@ -17,6 +17,7 @@ LIBCAMERA_DEPENDENCIES = \
> > >  LIBCAMERA_CONF_OPTS = \
> > >         -Dandroid=disabled \
> > >         -Ddocumentation=disabled \
> > > +       -Dlc-compliance=disabled \
> > >         -Dtest=false \
> > >         -Dwerror=false
> > >  LIBCAMERA_INSTALL_STAGING = YES
> > > --
> > > 2.33.0
> > >
> Best Regards,
> 
> Fabrice
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Buildroot] [PATCH 1/1] package/libcamera: disable compliance tool
  2021-10-21 16:30     ` Kieran Bingham
@ 2021-10-21 17:05       ` Fabrice Fontaine
  2021-10-21 18:05         ` Peter Seiderer
  0 siblings, 1 reply; 8+ messages in thread
From: Fabrice Fontaine @ 2021-10-21 17:05 UTC (permalink / raw)
  To: Kieran Bingham; +Cc: Buildroot Mailing List

Le jeu. 21 oct. 2021 à 18:30, Kieran Bingham
<kieran.bingham@ideasonboard.com> a écrit :
>
> Quoting Fabrice Fontaine (2021-10-21 17:05:51)
> > Hi Kieran,
> >
> > Le jeu. 21 oct. 2021 à 11:22, Kieran Bingham
> > <kieran.bingham@ideasonboard.com> a écrit :
> > >
> > > Hi Fabrice,
> > >
> > > Quoting Fabrice Fontaine (2021-10-20 20:04:23)
> > > > Disable compliance tool to fix the following build failure
> > > > raised since commit e1d37ab0a7b2b8735e69c070519978d2898d2e79 and
> > > > https://git.linuxtv.org/libcamera.git/commit/?id=02bc1108578e8b8eb68fa7d9ae3eeea558723931:
> > > >
> > > > /usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: cannot find -lgtest
> > > >
> > > > Fixes:
> > > >  - http://autobuild.buildroot.org/results/e1bb8aa1de310f3d27b74ec7d8748d170ad444e2
> > > >
> > >
> > > Any idea why we're failing to find gtest?
> > Nope, I didn't take time to find out why this is failing as I think
> > that lc-compliance is just not needed in the context of buildroot (as
> > gtest is not installed on target).
> > >
> > > Our meson.build for src/lc-compliance contains the following:
> > >
> > > """
> > > # SPDX-License-Identifier: CC0-1.0
> > >
> > > libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))
> > > libgtest = dependency('gtest', required : get_option('lc-compliance'))
> > >
> > > if not (libevent.found() and libgtest.found())
> > >     lc_compliance_enabled = false
> > >     subdir_done()
> > > endif
> > >
> > > lc_compliance_enabled = true
> > > """
> > >
> > > Which implies that libgtest was found during the configuration phase,
> > > but not during the linking phase....
> > >
> > > Is libgtest built as part of this build configuration? If it is - I'd
> > > expect lc-compliance to get built against it. If not - then it would
> > > automatically be disabled by our build...
> > Yes, it is built and found by meson otherwise lc-compliance won't be
> > built but for an unknown reason, the link step fails.
>
> You've mentioned above that gtest won't be installed on the target... So
> .. I would expect that means it isn't in the target sysroot, and can't
> be linked against.
>
> So it seems that for some reason meson finds a host package instead of a
> target package?
gtest is installed on staging (but not on target):
GTEST_INSTALL_STAGING = YES
GTEST_INSTALL_TARGET = NO

It should be noted that no packages are using gtest in buldroot.
IMHO, we should remove it to avoid unexpected build failures and
improve build reproducibility as I assume that libcamera is not the
only package that has a "hidden" gtest dependency.
>> Do we have a way to differentiate these in buildroot?
>
> I'm not sure if there's some buildroot wizardry that would make
> libcamera's configure phase see only the packages that are installed on
> the target when being built, but if buildroot doesn't support installing
> gtest at all - then indeed there isn't any point supporting
> lc-compliance which requires it.
>
>
> > >
> > >
> > > > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> > > > ---
> > > >  package/libcamera/libcamera.mk | 1 +
> > > >  1 file changed, 1 insertion(+)
> > > >
> > > > diff --git a/package/libcamera/libcamera.mk b/package/libcamera/libcamera.mk
> > > > index 8ab95fb42a..638c9ac553 100644
> > > > --- a/package/libcamera/libcamera.mk
> > > > +++ b/package/libcamera/libcamera.mk
> > > > @@ -17,6 +17,7 @@ LIBCAMERA_DEPENDENCIES = \
> > > >  LIBCAMERA_CONF_OPTS = \
> > > >         -Dandroid=disabled \
> > > >         -Ddocumentation=disabled \
> > > > +       -Dlc-compliance=disabled \
> > > >         -Dtest=false \
> > > >         -Dwerror=false
> > > >  LIBCAMERA_INSTALL_STAGING = YES
> > > > --
> > > > 2.33.0
> > > >
> > Best Regards,
> >
> > Fabrice
Best Regards,

Fabrice
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Buildroot] [PATCH 1/1] package/libcamera: disable compliance tool
  2021-10-21 17:05       ` Fabrice Fontaine
@ 2021-10-21 18:05         ` Peter Seiderer
  2021-10-21 19:04           ` Peter Seiderer
  0 siblings, 1 reply; 8+ messages in thread
From: Peter Seiderer @ 2021-10-21 18:05 UTC (permalink / raw)
  To: Fabrice Fontaine; +Cc: Kieran Bingham, Buildroot Mailing List

Hello Fabrice,

On Thu, 21 Oct 2021 19:05:38 +0200, Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:

> Le jeu. 21 oct. 2021 à 18:30, Kieran Bingham
> <kieran.bingham@ideasonboard.com> a écrit :
> >
> > Quoting Fabrice Fontaine (2021-10-21 17:05:51)  
> > > Hi Kieran,
> > >
> > > Le jeu. 21 oct. 2021 à 11:22, Kieran Bingham
> > > <kieran.bingham@ideasonboard.com> a écrit :  
> > > >
> > > > Hi Fabrice,
> > > >
> > > > Quoting Fabrice Fontaine (2021-10-20 20:04:23)  
> > > > > Disable compliance tool to fix the following build failure
> > > > > raised since commit e1d37ab0a7b2b8735e69c070519978d2898d2e79 and
> > > > > https://git.linuxtv.org/libcamera.git/commit/?id=02bc1108578e8b8eb68fa7d9ae3eeea558723931:
> > > > >
> > > > > /usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: cannot find -lgtest
> > > > >
> > > > > Fixes:
> > > > >  - http://autobuild.buildroot.org/results/e1bb8aa1de310f3d27b74ec7d8748d170ad444e2
> > > > >  
> > > >
> > > > Any idea why we're failing to find gtest?  
> > > Nope, I didn't take time to find out why this is failing as I think
> > > that lc-compliance is just not needed in the context of buildroot (as
> > > gtest is not installed on target).  
> > > >
> > > > Our meson.build for src/lc-compliance contains the following:
> > > >
> > > > """
> > > > # SPDX-License-Identifier: CC0-1.0
> > > >
> > > > libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))
> > > > libgtest = dependency('gtest', required : get_option('lc-compliance'))
> > > >
> > > > if not (libevent.found() and libgtest.found())
> > > >     lc_compliance_enabled = false
> > > >     subdir_done()
> > > > endif
> > > >
> > > > lc_compliance_enabled = true
> > > > """
> > > >
> > > > Which implies that libgtest was found during the configuration phase,
> > > > but not during the linking phase....
> > > >
> > > > Is libgtest built as part of this build configuration? If it is - I'd
> > > > expect lc-compliance to get built against it. If not - then it would
> > > > automatically be disabled by our build...  
> > > Yes, it is built and found by meson otherwise lc-compliance won't be
> > > built but for an unknown reason, the link step fails.  
> >
> > You've mentioned above that gtest won't be installed on the target... So
> > .. I would expect that means it isn't in the target sysroot, and can't
> > be linked against.
> >
> > So it seems that for some reason meson finds a host package instead of a
> > target package?  
> gtest is installed on staging (but not on target):
> GTEST_INSTALL_STAGING = YES
> GTEST_INSTALL_TARGET = NO
> 
> It should be noted that no packages are using gtest in buldroot.
> IMHO, we should remove it to avoid unexpected build failures and
> improve build reproducibility as I assume that libcamera is not the
> only package that has a "hidden" gtest dependency.

But this is normal behavior for a (maybe static) library to be installed
to staging...., and the failure is a compile time one and not a
runtime one? If you want reproducibility you have to add a optional
dependency on gtest (and fix the link failure) or (as you suggested)
disable the need/check for gtest in the failing package...

I know more than one custom package using gtest (optional on the
target hardware for runtime tests)...

Regards,
Peter

> >> Do we have a way to differentiate these in buildroot?  
> >
> > I'm not sure if there's some buildroot wizardry that would make
> > libcamera's configure phase see only the packages that are installed on
> > the target when being built, but if buildroot doesn't support installing
> > gtest at all - then indeed there isn't any point supporting
> > lc-compliance which requires it.
> >
> >  
> > > >
> > > >  
> > > > > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> > > > > ---
> > > > >  package/libcamera/libcamera.mk | 1 +
> > > > >  1 file changed, 1 insertion(+)
> > > > >
> > > > > diff --git a/package/libcamera/libcamera.mk b/package/libcamera/libcamera.mk
> > > > > index 8ab95fb42a..638c9ac553 100644
> > > > > --- a/package/libcamera/libcamera.mk
> > > > > +++ b/package/libcamera/libcamera.mk
> > > > > @@ -17,6 +17,7 @@ LIBCAMERA_DEPENDENCIES = \
> > > > >  LIBCAMERA_CONF_OPTS = \
> > > > >         -Dandroid=disabled \
> > > > >         -Ddocumentation=disabled \
> > > > > +       -Dlc-compliance=disabled \
> > > > >         -Dtest=false \
> > > > >         -Dwerror=false
> > > > >  LIBCAMERA_INSTALL_STAGING = YES
> > > > > --
> > > > > 2.33.0
> > > > >  
> > > Best Regards,
> > >
> > > Fabrice  
> Best Regards,
> 
> Fabrice
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Buildroot] [PATCH 1/1] package/libcamera: disable compliance tool
  2021-10-21 18:05         ` Peter Seiderer
@ 2021-10-21 19:04           ` Peter Seiderer
  2021-10-22 19:10             ` Peter Seiderer
  0 siblings, 1 reply; 8+ messages in thread
From: Peter Seiderer @ 2021-10-21 19:04 UTC (permalink / raw)
  To: Fabrice Fontaine; +Cc: Kieran Bingham, Buildroot Mailing List

Hello Fabrice, Kieran,

On Thu, 21 Oct 2021 20:05:18 +0200, Peter Seiderer <ps.report@gmx.net> wrote:

> Hello Fabrice,
> 
> On Thu, 21 Oct 2021 19:05:38 +0200, Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
> 
> > Le jeu. 21 oct. 2021 à 18:30, Kieran Bingham
> > <kieran.bingham@ideasonboard.com> a écrit :  
> > >
> > > Quoting Fabrice Fontaine (2021-10-21 17:05:51)    
> > > > Hi Kieran,
> > > >
> > > > Le jeu. 21 oct. 2021 à 11:22, Kieran Bingham
> > > > <kieran.bingham@ideasonboard.com> a écrit :    
> > > > >
> > > > > Hi Fabrice,
> > > > >
> > > > > Quoting Fabrice Fontaine (2021-10-20 20:04:23)    
> > > > > > Disable compliance tool to fix the following build failure
> > > > > > raised since commit e1d37ab0a7b2b8735e69c070519978d2898d2e79 and
> > > > > > https://git.linuxtv.org/libcamera.git/commit/?id=02bc1108578e8b8eb68fa7d9ae3eeea558723931:
> > > > > >
> > > > > > /usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: cannot find -lgtest

The failing configuration has set 'BR2_ENABLE_RUNTIME_DEBUG=y' and gtest installs
its library as libgtestd.a (instead of libgtest.a as requested by gtest.pc), can
be fixed by:

--- a/package/gtest/gtest.mk
+++ b/package/gtest/gtest.mk
@@ -46,6 +46,10 @@ ifeq ($(BR2_STATIC_LIBS),)
 GTEST_CONF_OPTS += -DCMAKE_POSITION_INDEPENDENT_CODE=ON
 endif
 
+# set build type always to Release, otherwise the library is named
+# libgtestd.a and not found by dependent packages using gtest.pc
+# requuesting plain libgtest.a
+GTEST_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release
 ifeq ($(BR2_PACKAGE_GTEST_GMOCK),y)
 GTEST_CONF_OPTS += -DBUILD_GMOCK=ON
 else

Alternative would be to fix the generation of gtest.pc...

Regards,
Peter

> > > > > >
> > > > > > Fixes:
> > > > > >  - http://autobuild.buildroot.org/results/e1bb8aa1de310f3d27b74ec7d8748d170ad444e2
> > > > > >    
> > > > >
> > > > > Any idea why we're failing to find gtest?    
> > > > Nope, I didn't take time to find out why this is failing as I think
> > > > that lc-compliance is just not needed in the context of buildroot (as
> > > > gtest is not installed on target).    
> > > > >
> > > > > Our meson.build for src/lc-compliance contains the following:
> > > > >
> > > > > """
> > > > > # SPDX-License-Identifier: CC0-1.0
> > > > >
> > > > > libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))
> > > > > libgtest = dependency('gtest', required : get_option('lc-compliance'))
> > > > >
> > > > > if not (libevent.found() and libgtest.found())
> > > > >     lc_compliance_enabled = false
> > > > >     subdir_done()
> > > > > endif
> > > > >
> > > > > lc_compliance_enabled = true
> > > > > """
> > > > >
> > > > > Which implies that libgtest was found during the configuration phase,
> > > > > but not during the linking phase....
> > > > >
> > > > > Is libgtest built as part of this build configuration? If it is - I'd
> > > > > expect lc-compliance to get built against it. If not - then it would
> > > > > automatically be disabled by our build...    
> > > > Yes, it is built and found by meson otherwise lc-compliance won't be
> > > > built but for an unknown reason, the link step fails.    
> > >
> > > You've mentioned above that gtest won't be installed on the target... So
> > > .. I would expect that means it isn't in the target sysroot, and can't
> > > be linked against.
> > >
> > > So it seems that for some reason meson finds a host package instead of a
> > > target package?    
> > gtest is installed on staging (but not on target):
> > GTEST_INSTALL_STAGING = YES
> > GTEST_INSTALL_TARGET = NO
> > 
> > It should be noted that no packages are using gtest in buldroot.
> > IMHO, we should remove it to avoid unexpected build failures and
> > improve build reproducibility as I assume that libcamera is not the
> > only package that has a "hidden" gtest dependency.  
> 
> But this is normal behavior for a (maybe static) library to be installed
> to staging...., and the failure is a compile time one and not a
> runtime one? If you want reproducibility you have to add a optional
> dependency on gtest (and fix the link failure) or (as you suggested)
> disable the need/check for gtest in the failing package...
> 
> I know more than one custom package using gtest (optional on the
> target hardware for runtime tests)...
> 
> Regards,
> Peter
> 
> > >> Do we have a way to differentiate these in buildroot?    
> > >
> > > I'm not sure if there's some buildroot wizardry that would make
> > > libcamera's configure phase see only the packages that are installed on
> > > the target when being built, but if buildroot doesn't support installing
> > > gtest at all - then indeed there isn't any point supporting
> > > lc-compliance which requires it.
> > >
> > >    
> > > > >
> > > > >    
> > > > > > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> > > > > > ---
> > > > > >  package/libcamera/libcamera.mk | 1 +
> > > > > >  1 file changed, 1 insertion(+)
> > > > > >
> > > > > > diff --git a/package/libcamera/libcamera.mk b/package/libcamera/libcamera.mk
> > > > > > index 8ab95fb42a..638c9ac553 100644
> > > > > > --- a/package/libcamera/libcamera.mk
> > > > > > +++ b/package/libcamera/libcamera.mk
> > > > > > @@ -17,6 +17,7 @@ LIBCAMERA_DEPENDENCIES = \
> > > > > >  LIBCAMERA_CONF_OPTS = \
> > > > > >         -Dandroid=disabled \
> > > > > >         -Ddocumentation=disabled \
> > > > > > +       -Dlc-compliance=disabled \
> > > > > >         -Dtest=false \
> > > > > >         -Dwerror=false
> > > > > >  LIBCAMERA_INSTALL_STAGING = YES
> > > > > > --
> > > > > > 2.33.0
> > > > > >    
> > > > Best Regards,
> > > >
> > > > Fabrice    
> > Best Regards,
> > 
> > Fabrice
> > _______________________________________________
> > buildroot mailing list
> > buildroot@buildroot.org
> > https://lists.buildroot.org/mailman/listinfo/buildroot  
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Buildroot] [PATCH 1/1] package/libcamera: disable compliance tool
  2021-10-21 19:04           ` Peter Seiderer
@ 2021-10-22 19:10             ` Peter Seiderer
  0 siblings, 0 replies; 8+ messages in thread
From: Peter Seiderer @ 2021-10-22 19:10 UTC (permalink / raw)
  To: Fabrice Fontaine; +Cc: Kieran Bingham, Buildroot Mailing List

Hello *,

On Thu, 21 Oct 2021 21:04:00 +0200, Peter Seiderer <ps.report@gmx.net> wrote:

> Hello Fabrice, Kieran,
> 
> On Thu, 21 Oct 2021 20:05:18 +0200, Peter Seiderer <ps.report@gmx.net> wrote:
> 
> > Hello Fabrice,
> > 
> > On Thu, 21 Oct 2021 19:05:38 +0200, Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
> >   
> > > Le jeu. 21 oct. 2021 à 18:30, Kieran Bingham
> > > <kieran.bingham@ideasonboard.com> a écrit :    
> > > >
> > > > Quoting Fabrice Fontaine (2021-10-21 17:05:51)      
> > > > > Hi Kieran,
> > > > >
> > > > > Le jeu. 21 oct. 2021 à 11:22, Kieran Bingham
> > > > > <kieran.bingham@ideasonboard.com> a écrit :      
> > > > > >
> > > > > > Hi Fabrice,
> > > > > >
> > > > > > Quoting Fabrice Fontaine (2021-10-20 20:04:23)      
> > > > > > > Disable compliance tool to fix the following build failure
> > > > > > > raised since commit e1d37ab0a7b2b8735e69c070519978d2898d2e79 and
> > > > > > > https://git.linuxtv.org/libcamera.git/commit/?id=02bc1108578e8b8eb68fa7d9ae3eeea558723931:
> > > > > > >
> > > > > > > /usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-uclibcgnueabi/10.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: cannot find -lgtest  
> 
> The failing configuration has set 'BR2_ENABLE_RUNTIME_DEBUG=y' and gtest installs
> its library as libgtestd.a (instead of libgtest.a as requested by gtest.pc), can
> be fixed by:
> 
> --- a/package/gtest/gtest.mk
> +++ b/package/gtest/gtest.mk
> @@ -46,6 +46,10 @@ ifeq ($(BR2_STATIC_LIBS),)
>  GTEST_CONF_OPTS += -DCMAKE_POSITION_INDEPENDENT_CODE=ON
>  endif
>  
> +# set build type always to Release, otherwise the library is named
> +# libgtestd.a and not found by dependent packages using gtest.pc
> +# requuesting plain libgtest.a
> +GTEST_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release
>  ifeq ($(BR2_PACKAGE_GTEST_GMOCK),y)
>  GTEST_CONF_OPTS += -DBUILD_GMOCK=ON
>  else
> 
> Alternative would be to fix the generation of gtest.pc...

Alternative implemented for package/gtest and added an lc-compliance
option for package/libcamera (to gain an gtest consumer in buildroot),
see [1] and [2]...

Regards,
Peter

[1] https://patchwork.ozlabs.org/project/buildroot/patch/20211022190702.7782-1-ps.report@gmx.net/
[2] https://patchwork.ozlabs.org/project/buildroot/patch/20211022190702.7782-2-ps.report@gmx.net/

> 
> Regards,
> Peter
> 
> > > > > > >
> > > > > > > Fixes:
> > > > > > >  - http://autobuild.buildroot.org/results/e1bb8aa1de310f3d27b74ec7d8748d170ad444e2
> > > > > > >      
> > > > > >
> > > > > > Any idea why we're failing to find gtest?      
> > > > > Nope, I didn't take time to find out why this is failing as I think
> > > > > that lc-compliance is just not needed in the context of buildroot (as
> > > > > gtest is not installed on target).      
> > > > > >
> > > > > > Our meson.build for src/lc-compliance contains the following:
> > > > > >
> > > > > > """
> > > > > > # SPDX-License-Identifier: CC0-1.0
> > > > > >
> > > > > > libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))
> > > > > > libgtest = dependency('gtest', required : get_option('lc-compliance'))
> > > > > >
> > > > > > if not (libevent.found() and libgtest.found())
> > > > > >     lc_compliance_enabled = false
> > > > > >     subdir_done()
> > > > > > endif
> > > > > >
> > > > > > lc_compliance_enabled = true
> > > > > > """
> > > > > >
> > > > > > Which implies that libgtest was found during the configuration phase,
> > > > > > but not during the linking phase....
> > > > > >
> > > > > > Is libgtest built as part of this build configuration? If it is - I'd
> > > > > > expect lc-compliance to get built against it. If not - then it would
> > > > > > automatically be disabled by our build...      
> > > > > Yes, it is built and found by meson otherwise lc-compliance won't be
> > > > > built but for an unknown reason, the link step fails.      
> > > >
> > > > You've mentioned above that gtest won't be installed on the target... So
> > > > .. I would expect that means it isn't in the target sysroot, and can't
> > > > be linked against.
> > > >
> > > > So it seems that for some reason meson finds a host package instead of a
> > > > target package?      
> > > gtest is installed on staging (but not on target):
> > > GTEST_INSTALL_STAGING = YES
> > > GTEST_INSTALL_TARGET = NO
> > > 
> > > It should be noted that no packages are using gtest in buldroot.
> > > IMHO, we should remove it to avoid unexpected build failures and
> > > improve build reproducibility as I assume that libcamera is not the
> > > only package that has a "hidden" gtest dependency.    
> > 
> > But this is normal behavior for a (maybe static) library to be installed
> > to staging...., and the failure is a compile time one and not a
> > runtime one? If you want reproducibility you have to add a optional
> > dependency on gtest (and fix the link failure) or (as you suggested)
> > disable the need/check for gtest in the failing package...
> > 
> > I know more than one custom package using gtest (optional on the
> > target hardware for runtime tests)...
> > 
> > Regards,
> > Peter
> >   
> > > >> Do we have a way to differentiate these in buildroot?      
> > > >
> > > > I'm not sure if there's some buildroot wizardry that would make
> > > > libcamera's configure phase see only the packages that are installed on
> > > > the target when being built, but if buildroot doesn't support installing
> > > > gtest at all - then indeed there isn't any point supporting
> > > > lc-compliance which requires it.
> > > >
> > > >      
> > > > > >
> > > > > >      
> > > > > > > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> > > > > > > ---
> > > > > > >  package/libcamera/libcamera.mk | 1 +
> > > > > > >  1 file changed, 1 insertion(+)
> > > > > > >
> > > > > > > diff --git a/package/libcamera/libcamera.mk b/package/libcamera/libcamera.mk
> > > > > > > index 8ab95fb42a..638c9ac553 100644
> > > > > > > --- a/package/libcamera/libcamera.mk
> > > > > > > +++ b/package/libcamera/libcamera.mk
> > > > > > > @@ -17,6 +17,7 @@ LIBCAMERA_DEPENDENCIES = \
> > > > > > >  LIBCAMERA_CONF_OPTS = \
> > > > > > >         -Dandroid=disabled \
> > > > > > >         -Ddocumentation=disabled \
> > > > > > > +       -Dlc-compliance=disabled \
> > > > > > >         -Dtest=false \
> > > > > > >         -Dwerror=false
> > > > > > >  LIBCAMERA_INSTALL_STAGING = YES
> > > > > > > --
> > > > > > > 2.33.0
> > > > > > >      
> > > > > Best Regards,
> > > > >
> > > > > Fabrice      
> > > Best Regards,
> > > 
> > > Fabrice
> > > _______________________________________________
> > > buildroot mailing list
> > > buildroot@buildroot.org
> > > https://lists.buildroot.org/mailman/listinfo/buildroot    
> > 
> > _______________________________________________
> > buildroot mailing list
> > buildroot@buildroot.org
> > https://lists.buildroot.org/mailman/listinfo/buildroot  
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-10-22 19:11 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-20 19:04 [Buildroot] [PATCH 1/1] package/libcamera: disable compliance tool Fabrice Fontaine
2021-10-21  9:22 ` Kieran Bingham
2021-10-21 16:05   ` Fabrice Fontaine
2021-10-21 16:30     ` Kieran Bingham
2021-10-21 17:05       ` Fabrice Fontaine
2021-10-21 18:05         ` Peter Seiderer
2021-10-21 19:04           ` Peter Seiderer
2021-10-22 19:10             ` Peter Seiderer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.