kumquat-buildroot/package/meson/0002-mesonbuild-dependencies-base.py-add-pkg_config_stati.patch

42 lines
3.6 KiB
Diff
Raw Normal View History

From 8622d37587169c1e4a4206a9462868ede057f0e8 Mon Sep 17 00:00:00 2001
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Date: Sat, 15 Feb 2020 15:13:59 +0100
Subject: [PATCH] mesonbuild/dependencies/base.py: add pkg_config_static
Allow the user to always call pkg-config with --static thanks to a
pkg_config_static property. This will allow to fix static build failures
with libglib2:
FAILED: gio/gio
/home/naourr/work/instance-0/output-1/host/bin/arm-linux-gcc -o gio/gio 'gio/6ae6c9e@@gio@exe/gio-tool.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-cat.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-copy.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-info.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-list.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-mime.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-mkdir.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-monitor.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-mount.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-move.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-open.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-rename.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-remove.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-save.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-set.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-trash.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-tree.c.o' -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -static -Wl,--start-group gio/libgio-2.0.a glib/libglib-2.0.a gobject/libgobject-2.0.a gmodule/libgmodule-2.0.a -pthread /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libz.a /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libmount.a /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libpcre.a -lm /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libffi.a -Wl,--end-group '-Wl,-rpath,$ORIGIN/:$ORIGIN/../glib:$ORIGIN/../gobject:$ORIGIN/../gmodule' -Wl,-rpath-link,/home/naourr/work/instance-0/output-1/build/libglib2-2.62.4/build/gio -Wl,-rpath-link,/home/naourr/work/instance-0/output-1/build/libglib2-2.62.4/build/glib -Wl,-rpath-link,/home/naourr/work/instance-0/output-1/build/libglib2-2.62.4/build/gobject -Wl,-rpath-link,/home/naourr/work/instance-0/output-1/build/libglib2-2.62.4/build/gmodule
/home/naourr/work/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libmount.a(la-fs.o): in function `__mnt_fs_set_source_ptr':
fs.c:(.text+0x5ec): undefined reference to `blkid_parse_tag_string'
Fixes:
- http://autobuild.buildroot.org/results/0d36952def63cb69628697fa6408aeb6ce10cb5b
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
package/meson: fix shared build issue due to --static flag always passed to pkg-config Since cf75d7da98596580eee5a9b5e1a3e156ad832099 we have a build failures when building libgbm.so when valgrind package is selected because --static is always passed to pkg-config even for shared build. Even if -Dvalgrind=false on meson command line to build mesa, the valgrind libraries come from pkg-config libdrm... output/host/bin/pkg-config libdrm --libs --static -L[...]/sysroot/usr/lib -ldrm -lm -L[...]/sysroot/usr/lib/valgrind -lcoregrind-arm64-linux -lvex-arm64-linux -lgcc ... and break the build. See initial discussions: http://lists.busybox.net/pipermail/buildroot/2020-June/284543.html This is due to a wrong condition test added by the patch 0004-mesonbuild-dependencies-base.py-add-pkg_config_stati.patch. Indeed, pkg_config_static is a string, not a boolean; it is set to either 'true' or 'aflse' by our meson package infra. Since the returned object is a string, do not pass a boolean, but pas None (we only want to test against the 'true' string, so we don't care what we get back when it is not set, which never happens in Buildroot). Before this patch, the issue can be reproduced using the following defconfig: BR2_aarch64=y BR2_TOOLCHAIN_EXTERNAL=y BR2_PACKAGE_VALGRIND=y BR2_PACKAGE_MESA3D=y BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST=y Fixes: http://autobuild.buildroot.net/results/1b5/1b58d73ecbbe1af2c3e140563d696cf32d1c4a5a/build-end.log Signed-off-by: Romain Naour <romain.naour@gmail.com> Cc: James Hilliard <james.hilliard1@gmail.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com> [yann.morin.1998@free.fr: slightly reword the commit log] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2020-06-14 14:50:02 +02:00
[Romain: Fix if condition, pkg_config_static is a string not a boolean]
Signed-off-by: Romain Naour <romain.naour@gmail.com>
---
package/meson: fix shared build issue due to --static flag always passed to pkg-config Since cf75d7da98596580eee5a9b5e1a3e156ad832099 we have a build failures when building libgbm.so when valgrind package is selected because --static is always passed to pkg-config even for shared build. Even if -Dvalgrind=false on meson command line to build mesa, the valgrind libraries come from pkg-config libdrm... output/host/bin/pkg-config libdrm --libs --static -L[...]/sysroot/usr/lib -ldrm -lm -L[...]/sysroot/usr/lib/valgrind -lcoregrind-arm64-linux -lvex-arm64-linux -lgcc ... and break the build. See initial discussions: http://lists.busybox.net/pipermail/buildroot/2020-June/284543.html This is due to a wrong condition test added by the patch 0004-mesonbuild-dependencies-base.py-add-pkg_config_stati.patch. Indeed, pkg_config_static is a string, not a boolean; it is set to either 'true' or 'aflse' by our meson package infra. Since the returned object is a string, do not pass a boolean, but pas None (we only want to test against the 'true' string, so we don't care what we get back when it is not set, which never happens in Buildroot). Before this patch, the issue can be reproduced using the following defconfig: BR2_aarch64=y BR2_TOOLCHAIN_EXTERNAL=y BR2_PACKAGE_VALGRIND=y BR2_PACKAGE_MESA3D=y BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST=y Fixes: http://autobuild.buildroot.net/results/1b5/1b58d73ecbbe1af2c3e140563d696cf32d1c4a5a/build-end.log Signed-off-by: Romain Naour <romain.naour@gmail.com> Cc: James Hilliard <james.hilliard1@gmail.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com> [yann.morin.1998@free.fr: slightly reword the commit log] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2020-06-14 14:50:02 +02:00
mesonbuild/dependencies/base.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
index 23701da95..83e51626d 100644
--- a/mesonbuild/dependencies/base.py
+++ b/mesonbuild/dependencies/base.py
@@ -849,7 +849,8 @@ class PkgConfigDependency(ExternalDependency):
def _set_libs(self):
env = None
libcmd = [self.name, '--libs']
- if self.static:
package/meson: fix shared build issue due to --static flag always passed to pkg-config Since cf75d7da98596580eee5a9b5e1a3e156ad832099 we have a build failures when building libgbm.so when valgrind package is selected because --static is always passed to pkg-config even for shared build. Even if -Dvalgrind=false on meson command line to build mesa, the valgrind libraries come from pkg-config libdrm... output/host/bin/pkg-config libdrm --libs --static -L[...]/sysroot/usr/lib -ldrm -lm -L[...]/sysroot/usr/lib/valgrind -lcoregrind-arm64-linux -lvex-arm64-linux -lgcc ... and break the build. See initial discussions: http://lists.busybox.net/pipermail/buildroot/2020-June/284543.html This is due to a wrong condition test added by the patch 0004-mesonbuild-dependencies-base.py-add-pkg_config_stati.patch. Indeed, pkg_config_static is a string, not a boolean; it is set to either 'true' or 'aflse' by our meson package infra. Since the returned object is a string, do not pass a boolean, but pas None (we only want to test against the 'true' string, so we don't care what we get back when it is not set, which never happens in Buildroot). Before this patch, the issue can be reproduced using the following defconfig: BR2_aarch64=y BR2_TOOLCHAIN_EXTERNAL=y BR2_PACKAGE_VALGRIND=y BR2_PACKAGE_MESA3D=y BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST=y Fixes: http://autobuild.buildroot.net/results/1b5/1b58d73ecbbe1af2c3e140563d696cf32d1c4a5a/build-end.log Signed-off-by: Romain Naour <romain.naour@gmail.com> Cc: James Hilliard <james.hilliard1@gmail.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com> [yann.morin.1998@free.fr: slightly reword the commit log] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2020-06-14 14:50:02 +02:00
+ if self.static or \
+ (self.env.properties[self.for_machine].get('pkg_config_static', None) == 'true'):
libcmd.append('--static')
# Force pkg-config to output -L fields even if they are system
# paths so we can do manual searching with cc.find_library() later.
--
2.25.1