summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Martinez Canillas <javierm@redhat.com>2022-02-03 10:30:22 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-02-03 18:23:48 +0200
commite526a57d09a3cb9fe226e70f896b4beaa8f9180a (patch)
tree03e0faa916a7ed8f0f44744e4c754402404c8eb5
parent348a273c2bab1fc9524e1f2032fb46109e252ee9 (diff)
lc-compliance: Only download gtest subproject as a fallback
Currently, a subproject is used to fetch gtest dependency unconditionally for any Linux distribution besides ChromeOS. But it leads to a regression in distros whose builders are not allowed to download files during build. This change was introduced by commit 0d50a04cc918 ("lc-compliance: Build with gtest in subprojects") and the rationale is that some distros, such as Debian ship libgtest-dev as a static library. And this could be built with a different toolchain than the one used to build libcamera itself. But this seems to be a corner case, usually users will either build both libcamera and all its dependencies using the same toolchain or build it using both the libgtest library and toolchain as provided by the distro. If someone doesn't want for meson to pick up the non-compatible static library provided by the distro, then instead should make sure that their build root does not have the package providing this installed. Let's simplify the logic to find the dependency and just use the built-in support in dependency() function to fallback to a subproject if not found. This covers to common case of attempting to use the gtest provided by the system or pulling from source if not found or is not preferred. To force meson to fallback to the wrap for gtest you can use this command: meson configure -Dforce_fallback_for=gtest and to force fallback for all the dependencies, you can use the following: meson build --wrap-mode=forcefallback Fixes: commit 0d50a04cc918 ("lc-compliance: Build with gtest in subprojects") Reported-by: Eric Curtin <ecurtin@redhat.com> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--src/lc-compliance/meson.build17
1 files changed, 3 insertions, 14 deletions
diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build
index 130ddbb5..8b57474b 100644
--- a/src/lc-compliance/meson.build
+++ b/src/lc-compliance/meson.build
@@ -1,25 +1,14 @@
# SPDX-License-Identifier: CC0-1.0
libevent = dependency('libevent_pthreads', required : get_option('lc-compliance'))
+libgtest = dependency('gtest', required : get_option('lc-compliance'),
+ fallback : ['gtest', 'gtest_dep'])
-if not libevent.found()
+if not (libevent.found() and libgtest.found())
lc_compliance_enabled = false
subdir_done()
endif
-if get_option('android_platform') == 'cros'
- libgtest = dependency('gtest', required : get_option('lc-compliance'))
-
- if not libgtest.found()
- lc_compliance_enabled = false
- subdir_done()
- endif
-
-else
- libgtest_sp = subproject('gtest')
- libgtest = libgtest_sp.get_variable('gtest_dep')
-endif
-
lc_compliance_enabled = true
lc_compliance_sources = files([