Message ID | 20190809231908.22209-1-ps.report@gmx.net |
---|---|
State | Changes Requested |
Headers | show |
Series | [v2] libdrm: fix static build (tests/nouveau) | expand |
Hello Peter, Thanks for working on this topic. Some questions/comments below. On Sat, 10 Aug 2019 01:19:08 +0200 Peter Seiderer <ps.report@gmx.net> wrote: > Some toolchains (e.g. br-arm-cortex-m4-full) provide empty libdl > libraries. This fools the dynamic/static detection for tests/nouveau, > so explicit check for library type instead. > > Fixes [1]: > > ../tests/nouveau/threaded.c:24:10: fatal error: dlfcn.h: No such file or directory So the error is about not finding a header. > + # Among others FreeBSD does not have a separate dl library. > + if not cc.has_function('dlsym') > ++ # fooled in case empty libdl provided, e.g. toolchain br-arm-cortex-m4-full > + dep_dl = cc.find_library('dl', required : with_nouveau) What about instead checking for the availability of dlfcn.h, in addition to checking the availability of the libdl library ? Also, how come the cc.has_function('dlsym') checks returns true ? I guess in a static library configuration, this check should return false. Also, could you drop the references to br-arm-cortex-m4-full, so that the patch can be upstreamed ? BTW, with uClibc-ng and musl, the libdl library is always empty, regardless of whether it has dynamic library support or not. Here is a uClibc-ng toolchain, with dynamic library support: -rw-r--r-- 1 thomas thomas 8 1 août 22:23 output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libdl.a Indeed, since quite a while, uClibc-ng is all in a single file, libc.so, including symbols that used to be in libdl.so: $ ./output/host/bin/arm-linux-readelf -s output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/lib/libc.so.1 | grep "FUNC.*dlsym" 884: 00058fe0 468 FUNC GLOBAL DEFAULT 8 dlsym 7356: 00058fe0 468 FUNC GLOBAL DEFAULT 8 dlsym Best regards, Thomas
Hello Thomas, On Sun, 11 Aug 2019 15:38:46 +0200, Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote: > Hello Peter, > > Thanks for working on this topic. Some questions/comments below. > > On Sat, 10 Aug 2019 01:19:08 +0200 > Peter Seiderer <ps.report@gmx.net> wrote: > > > Some toolchains (e.g. br-arm-cortex-m4-full) provide empty libdl > > libraries. This fools the dynamic/static detection for tests/nouveau, > > so explicit check for library type instead. > > > > Fixes [1]: > > > > ../tests/nouveau/threaded.c:24:10: fatal error: dlfcn.h: No such file or directory > > So the error is about not finding a header. Yes, follow up failure from misdetecting dynamic library support... > > > + # Among others FreeBSD does not have a separate dl library. > > + if not cc.has_function('dlsym') > > ++ # fooled in case empty libdl provided, e.g. toolchain br-arm-cortex-m4-full > > + dep_dl = cc.find_library('dl', required : with_nouveau) > > What about instead checking for the availability of dlfcn.h, in > addition to checking the availability of the libdl library ? Yes, this would be the better/perfect solution (but did not yet find the time to impelment it).... > > Also, how come the cc.has_function('dlsym') checks returns true ? I > guess in a static library configuration, this check should return false. Mind the 'not' in the if statement, if no 'native' cc support for dlsym check for libdl as indication for dynamic library support... > > Also, could you drop the references to br-arm-cortex-m4-full, so that > the patch can be upstreamed ? Yes will do (as soon as I find a suitable timeslot ;-) )... The librm/meson patch series is re-suggested upsteam, see [1], [2], [3]... Regards, Peter [1] https://lists.freedesktop.org/archives/dri-devel/2019-August/230489.html [2] https://lists.freedesktop.org/archives/dri-devel/2019-August/230490.html [3] https://lists.freedesktop.org/archives/dri-devel/2019-August/230491.html > > BTW, with uClibc-ng and musl, the libdl library is always empty, > regardless of whether it has dynamic library support or not. Here is a > uClibc-ng toolchain, with dynamic library support: > > -rw-r--r-- 1 thomas thomas 8 1 août 22:23 output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libdl.a > > Indeed, since quite a while, uClibc-ng is all in a single file, > libc.so, including symbols that used to be in libdl.so: > > $ ./output/host/bin/arm-linux-readelf -s output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/lib/libc.so.1 | grep "FUNC.*dlsym" > 884: 00058fe0 468 FUNC GLOBAL DEFAULT 8 dlsym > 7356: 00058fe0 468 FUNC GLOBAL DEFAULT 8 dlsym > > Best regards, > > Thomas
diff --git a/package/libdrm/0005-meson-fix-libdl-shared-library-support-detection-for.patch b/package/libdrm/0005-meson-fix-libdl-shared-library-support-detection-for.patch new file mode 100644 index 0000000000..eb36f55ba5 --- /dev/null +++ b/package/libdrm/0005-meson-fix-libdl-shared-library-support-detection-for.patch @@ -0,0 +1,52 @@ +From 8705f6908f5de494dcdb13323b8c15fb9b09acf1 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer <ps.report@gmx.net> +Date: Sat, 10 Aug 2019 01:06:13 +0200 +Subject: [PATCH] meson: fix libdl/shared library support detection for nouveau + tests + +Some toolchains (e.g. br-arm-cortex-m4-full) provide empty libdl +libraries. This fools the dynamic/static detection for tests/nouveau, +so explicit check for library type instead. + +Fixes: + + ../tests/nouveau/threaded.c:24:10: fatal error: dlfcn.h: No such file or directory + +Signed-off-by: Peter Seiderer <ps.report@gmx.net> +--- + meson.build | 1 + + tests/meson.build | 5 ++++- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index adaaf22..b78d9e5 100644 +--- a/meson.build ++++ b/meson.build +@@ -168,6 +168,7 @@ endif + + # Among others FreeBSD does not have a separate dl library. + if not cc.has_function('dlsym') ++ # fooled in case empty libdl provided, e.g. toolchain br-arm-cortex-m4-full + dep_dl = cc.find_library('dl', required : with_nouveau) + else + dep_dl = [] +diff --git a/tests/meson.build b/tests/meson.build +index 6c8ddd9..f7cb5f0 100644 +--- a/tests/meson.build ++++ b/tests/meson.build +@@ -44,8 +44,11 @@ endif + if with_etnaviv + subdir('etnaviv') + endif ++lib_type = get_option('default_library') + if with_nouveau +- subdir('nouveau') ++ if lib_type != 'static' ++ subdir('nouveau') ++ endif + endif + + drmsl = executable( +-- +2.22.0 +
Some toolchains (e.g. br-arm-cortex-m4-full) provide empty libdl libraries. This fools the dynamic/static detection for tests/nouveau, so explicit check for library type instead. Fixes [1]: ../tests/nouveau/threaded.c:24:10: fatal error: dlfcn.h: No such file or directory [1] http://autobuild.buildroot.net/results/d15/d15ed604756cac4e4a87afca61b7a4778f293baf Signed-off-by: Peter Seiderer <ps.report@gmx.net> --- Changes v1 -> v2: - patch updated --- ...shared-library-support-detection-for.patch | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 package/libdrm/0005-meson-fix-libdl-shared-library-support-detection-for.patch -- 2.22.0