On Thu, 2017-03-30 at 11:07 +0100, colin helliwell ln-systems com wrote:
I was able to build NM 1.4.2 with G-I enabled, and have now moved up to 1.8/master. But hitting a build failure (cross-compiling, in Yocto):make[2]: Entering directory`/home/colin/100051-karo/fsl-community-bsp/build/tmp/work/cortexa9hf- neon-po ky-linux-gnueabi/networkmanager/1.8-r0/build'glib-mkenums --fhead "/* Generated by glib-mkenums. Do not edit*/\n\n#ifndef __NM_VPN_ENUM_TYPES_H__\n#define __NM_VPN_ENUM_TYPES_H__\n\n" --identifier-prefix NM --fhead "#include <glib-object.h>\n\nG_BEGIN_DECLS\n" --vhead "GType @enum_name@_get_type (void) G_GNUC_CONST;\n#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())\n" --ftail "G_END_DECLS\n\n#endif /* __NM_VPN_ENUM_TYPES_H__ */" ../git/libnm-glib/nm-vpn-plugin.h ../git/libnm-glib/nm-vpn-plugin-ui-interface.h ../git/libnm-glib/nm-vpn-plugin-utils.h > libnm-glib/nm-vpn-enum- types.h.tmp && (cmp -s libnm-glib/nm-vpn-enum-types.h.tmp libnm-glib/nm-vpn-enum- types.hcp libnm-glib/nm-vpn-enum-types.h.tmp libnm-glib/nm-vpn-enum- types.h) &&rm -f libnm-glib/nm-vpn-enum-types.h.tmp && echo timestamp > libnm-glib/nm-vpn-enum-types.h.stampglib-mkenums --fhead "/* Generated by glib-mkenums. Do not edit*/\n\n#include \"config.h\"\n\n#include \"nm-vpn-enum-types.h\"\n" --identifier-prefix NM --fhead "\n#include \"nm-vpn-plugin.h\" \n#include \"nm-vpn-plugin-ui-interface.h\" \n#include \"nm-vpn-plugin- utils.h\"\n\n" --vhead "GType\n@enum_name@_get_type (void)\n{\n static volatile gsize g_define_type_id__volatile = 0;\n\n if (g_once_init_enter (&g_define_type_id__volatile))\n {\n static const G@Type@Valu e values[] = {\n" --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" },\n" --vtail " { 0, NULL, NULL }\n };\n GType g_define_type_id =\n g_@type@_register_static (g_intern_static_string (\"@EnumName@\"), values);\n g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);\n }\n\n return g_define_type_id__volatile;\n}\n" ../git/libnm-glib/nm-vpn-plugin.h ../git/libnm-glib/nm-vpn-plugin-ui-interface.h ../git/libnm-glib/nm-vpn-plugin-utils.h > libnm-glib/nm-vpn-enum- types.c.tmp && (cmp -s libnm-glib/nm-vpn-enum-types.c.tmp libnm-glib/nm-vpn-enum- types.ccp libnm-glib/nm-vpn-enum-types.c.tmp libnm-glib/nm-vpn-enum- types.c) &&rm -f libnm-glib/nm-vpn-enum-types.c.tmp && echo timestamp > libnm-glib/nm-vpn-enum-types.c.stamp\ exportGI_TYPELIB_PATH=/home/colin/100051-karo/fsl-community- bsp/build/tmp/work/cor texa9hf-neon-poky-linux-gnueabi/networkmanager/1.8- r0/build/libnm${GI_TYPELI B_PATH:+:$GI_TYPELIB_PATH}; \exportLD_LIBRARY_PATH=/home/colin/100051-karo/fsl-community- bsp/build/tmp/work/cor texa9hf-neon-poky-linux-gnueabi/networkmanager/1.8- r0/build/libnm/.libs${LD_ LIBRARY_PATH:+:$LD_LIBRARY_PATH}; \[ -n "" ] && export ; if [ -n"/home/colin/100051-karo/fsl-community-bsp/build/tmp/work/cortexa9hf- neon-po ky-linux-gnueabi/networkmanager/1.8-r0/build/libnm/.libs/libnm.so" ] && echo -fdata-sections -ffunction-sections -Wl,--gc-sections -O2 -pipe -g -feliminate-unused-debug-types -fdebug-prefix-map=/home/colin/100051-karo/fsl-community- bsp/build/tmp/work/ cortexa9hf-neon-poky-linux-gnueabi/networkmanager/1.8- r0=/usr/src/debug/netw orkmanager/1.8-r0 -fdebug-prefix-map=/home/colin/100051-karo/fsl-community- bsp/build/tmp/sysro ots/x86_64-linux= -fdebug-prefix-map=/home/colin/100051-karo/fsl-community- bsp/build/tmp/sysro ots/wg2xx-tx6s= -fno-strict-aliasing | grep -e -fsanitize=address ; then export LD_PRELOAD="${LD_PRELOAD}:$(ldd /home/colin/100051-karo/fsl-community-bsp/build/tmp/work/cortexa9hf- neon-pok y-linux-gnueabi/networkmanager/1.8-r0/build/libnm/.libs/libnm.so | grep libasan\.so\.. -o | head -n 1)"; fi; \"/usr/bin/python" \ ../git/libnm/generate-setting-docs.py \ --gir ./libnm/NM-1.0.gir \ --output libnm/nm-property-docs.xml ** (process:13095): WARNING **: Failed to load shared library 'libnm.so.0'referenced by the typelib: libnm.so.0: wrong ELF class: ELFCLASS32../git/libnm/generate-setting-docs.py:217: Warning: cannot retrieve classfor invalid (unclassed) type 'void'setting = new_func() Traceback (most recent call last): File "../git/libnm/generate-setting-docs.py", line 217, in <module> setting = new_func() TypeError: could not get a reference to type class make[2]: *** [libnm/nm-property-docs.xml] Error 1 make[2]: *** Deleting file `libnm/nm-property-docs.xml' make[2]: Leaving directory`/home/colin/100051-karo/fsl-community-bsp/build/tmp/work/cortexa9hf- neon-po ky-linux-gnueabi/networkmanager/1.8-r0/build' I imagine something is objecting to the cross-compiled library, but I've not been able to figure out who is actually throwing the error. (A python module?)
The python script generate-setting-docs.py uses pygobject to eventually load libnm.so. Seems like the wrong libnm.so is loaded. Maybe it helps to set "LD_DEBUG=all" to see from where the shared library comes?
The issue may ultimately be better discussed on the yocto mailing list, but I first wanted to pin down exactly where in NM it arises. Yocto does appear to create/configure 'wrappers' for g-ir-scanner-* I also notice that 'ldd' is being used above (to check for address sanitizer being enabled?) - but this isn't going to work for cross-compiling; needs some form of modification e.g. '[cross-tools]-readelf -a'?
patches welcome :) Thomas
Attachment:
signature.asc
Description: This is a digitally signed message part