<div dir="ltr"><div dir="ltr">Hi Laurent,<div><br></div><div>Thank you for the fix!</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 5 Oct 2022 at 11:56, Laurent Pinchart <<a href="mailto:laurent.pinchart@ideasonboard.com">laurent.pinchart@ideasonboard.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Commit 036d26d6677e ("test: threads: Test thread cleanup upon abnormal<br>
termination") added calls to functions provided by the pthread library<br>
in the threads test, but didn't add the corresponding dependency. This<br>
caused a link breakage on some platforms:<br>
<br>
/usr/bin/ld: test/threads.p/threads.cpp.o: undefined reference to symbol 'pthread_cancel@@GLIBC_2.4'<br>
/usr/bin/ld: /lib/arm-linux-gnueabihf/libpthread.so.0: error adding symbols: DSO missing from command line<br>
collect2: error: ld returned 1 exit status<br>
<br>
Fix it by adding the missing dependency.<br>
<br>
Fixes: 036d26d6677e ("test: threads: Test thread cleanup upon abnormal termination")<br>
Reported-by: Naushir Patuck <<a href="mailto:naush@raspberrypi.com" target="_blank">naush@raspberrypi.com</a>><br>
Signed-off-by: Laurent Pinchart <<a href="mailto:laurent.pinchart@ideasonboard.com" target="_blank">laurent.pinchart@ideasonboard.com</a>><br></blockquote><div><br></div><div>Reviewed-by: Naushir Patuck <<a href="mailto:naush@raspberrypi.com" target="_blank">naush@raspberrypi.com</a>></div><div>Tested-by: Naushir Patuck <<a href="mailto:naush@raspberrypi.com" target="_blank">naush@raspberrypi.com</a>></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">---<br>
 src/libcamera/base/meson.build |  2 +-<br>
 src/libcamera/meson.build      |  1 +<br>
 test/meson.build               | 23 +++++++++++++++++++----<br>
 3 files changed, 21 insertions(+), 5 deletions(-)<br>
<br>
diff --git a/src/libcamera/base/meson.build b/src/libcamera/base/meson.build<br>
index 3b9d74efe935..7a75914ab2a8 100644<br>
--- a/src/libcamera/base/meson.build<br>
+++ b/src/libcamera/base/meson.build<br>
@@ -38,9 +38,9 @@ if libunwind.found()<br>
 endif<br>
<br>
 libcamera_base_deps = [<br>
-    dependency('threads'),<br>
     libatomic,<br>
     libdw,<br>
+    libthreads,<br>
     libunwind,<br>
 ]<br>
<br>
diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build<br>
index 63b47b177fd2..7fcbb2ddc9e7 100644<br>
--- a/src/libcamera/meson.build<br>
+++ b/src/libcamera/meson.build<br>
@@ -58,6 +58,7 @@ includes = [<br>
 ]<br>
<br>
 libatomic = cc.find_library('atomic', required : false)<br>
+libthreads = dependency('threads')<br>
<br>
 subdir('base')<br>
 subdir('ipa')<br>
diff --git a/test/meson.build b/test/meson.build<br>
index 6cc778415dc8..9bf7bf34e796 100644<br>
--- a/test/meson.build<br>
+++ b/test/meson.build<br>
@@ -51,7 +51,7 @@ internal_tests = [<br>
     ['pixel-format',                    'pixel-format.cpp'],<br>
     ['shared-fd',                       'shared-fd.cpp'],<br>
     ['signal-threads',                  'signal-threads.cpp'],<br>
-    ['threads',                         'threads.cpp'],<br>
+    ['threads',                         'threads.cpp', [libthreads]],<br>
     ['timer',                           'timer.cpp'],<br>
     ['timer-thread',                    'timer-thread.cpp'],<br>
     ['unique-fd',                       'unique-fd.cpp'],<br>
@@ -65,8 +65,13 @@ internal_non_parallel_tests = [<br>
 ]<br>
<br>
 foreach t : public_tests<br>
+    deps = [libcamera_public]<br>
+    if t.length() > 2<br>
+        deps += t[2]<br>
+    endif<br>
+<br>
     exe = executable(t[0], t[1],<br>
-                     dependencies : libcamera_public,<br>
+                     dependencies : deps,<br>
                      link_with : test_libraries,<br>
                      include_directories : test_includes_public)<br>
<br>
@@ -74,8 +79,13 @@ foreach t : public_tests<br>
 endforeach<br>
<br>
 foreach t : internal_tests<br>
+    deps = [libcamera_private]<br>
+    if t.length() > 2<br>
+        deps += t[2]<br>
+    endif<br>
+<br>
     exe = executable(t[0], t[1],<br>
-                     dependencies : libcamera_private,<br>
+                     dependencies : deps,<br>
                      link_with : test_libraries,<br>
                      include_directories : test_includes_internal)<br>
<br>
@@ -83,8 +93,13 @@ foreach t : internal_tests<br>
 endforeach<br>
<br>
 foreach t : internal_non_parallel_tests<br>
+    deps = [libcamera_private]<br>
+    if t.length() > 2<br>
+        deps += t[2]<br>
+    endif<br>
+<br>
     exe = executable(t[0], t[1],<br>
-                     dependencies : libcamera_private,<br>
+                     dependencies : deps,<br>
                      link_with : test_libraries,<br>
                      include_directories : test_includes_internal)<br>
<br>
<br>
base-commit: 12f4708e35cde15ff9607d59eb053ece1b2bd081<br>
-- <br>
Regards,<br>
<br>
Laurent Pinchart<br>
<br>
</blockquote></div></div>