On Thu, 2017-03-30 at 11:07 +0100, [email protected]
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.h
> > > cp 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.stamp
> > glib-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.c
> > > cp 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
> > \
> >       export
> 
> GI_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}; \
> >       export
> 
> LD_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
> > class
> 
> for 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

_______________________________________________
networkmanager-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to