+++ Loïc Minier [2010-08-24 19:25 +0200]:
So I gave a try to cross-compiling gstreamer0.10 and it some interesting issues.
me too, but I tried with pdebuild-cross too, to see how it worked.
First, I used an i386 chroot instead of an amd64 chroot since I thought that might help a bit with package names; I'm not actually sure that was needed, but it might influence results.
I'm using amd64 - hopefully it doesn't matter.
Next, the gstreamer0.10 cross-build started but promptly failed trying to link to libxml2; this was the PKG_CONFIG_LIBDIR issue you mentioned. I added: buildpackage.append('-ePKG_CONFIG_LIBDIR=/usr/%s/lib/pkgconfig' % deb_host_gnu_type)
This is LP #623478 which you filed.
I'm a biut confused about this. I got this error in pdebuild-cross because xapt was initially missing so the cross-deps simly weren't being installed. As soon as they were installed then this part went fine. Which is what I would expect. So there must be something different about the environment in the xdeb case. I'll try and work out what is going on.
Interestingly, the build broke because it couldn't find gtk-doc anymore; I didn't add /usr/share/pkgconfig, but it does show that host versus build pkg-config dependencies are a problem, and we need a $triplet-pkg-config to solve this!
So I patched the gstreamer build to turn off docs; I think gstreamer0.10 should --disable-gtk-doc when cross-compiling; in fact, this should be done in gtk-doc upstream.
I left docs on. It correspondingly pulls in a lot of deps (157 cross-deps, but lots of them are null so it doesn't actually waste _too_ much time). Nothing broke.
This got quite far in the build: make[4]: Entering directory `/home/lool/gstreamer0.10/gstreamer0.10/gst' [...] libtool: link: arm-linux-gnueabi-ranlib .libs/libgstreamer-0.10.a libtool: link: rm -fr .libs/libgstreamer-0.10.lax libtool: link: ( cd ".libs" && rm -f "libgstreamer-0.10.la" && ln -s "../libgstreamer-0.10.la" "libgstreamer-0.10.la" ) /usr/bin/g-ir-scanner -v --namespace Gst \ --nsversion=0.10 \ -I.. \ -I.. \ -DIN_GOBJECT_INTROSPECTION=1 \ --c-include='gst/gst.h' \ --library=libgstreamer-0.10.la \ --include=GLib-2.0 \ --include=GObject-2.0 \ --include=GModule-2.0 \ --include=libxml2-2.0 \ --libtool="../libtool" \ --pkg glib-2.0 \ --pkg gobject-2.0 \ --pkg gmodule-no-export-2.0 \ --pkg gthread-2.0 \ --pkg libxml-2.0 \ --output Gst-0.10.gir \ ./gst.h ./glib-compat.h ./gstobject.h ./gstbin.h ./gstbuffer.h ./gstbufferlist.h ./gstbus.h ./gstcaps.h ./gstchildproxy.h ./gstclock.h ./gstcompat.h ./gstdebugutils.h ./gstelement.h ./gstelementfactory.h ./gsterror.h ./gstevent.h ./gstfilter.h ./gstformat.h ./gstghostpad.h ./gstindex.h ./gstindexfactory.h ./gstinfo.h ./gstinterface.h ./gstiterator.h ./gstmacros.h ./gstmessage.h ./gstminiobject.h ./gstpad.h ./gstpadtemplate.h ./gstparamspecs.h ./gstpipeline.h ./gstplugin.h ./gstpluginfeature.h ./gstpoll.h ./gstpreset.h ./gstquery.h ./gstsegment.h ./gststructure.h ./gstsystemclock.h ./gsttaglist.h ./gsttagsetter.h ./gsttask.h ./gsttaskpool.h ./gsttrace.h ./gsttypefind.h ./gsttypefindfactory.h ./gsturi.h ./gstutils.h ./gstvalue.h ./gstregistry.h ./gstparse.h ./gstxml.h \ ./gst.c ./gstobject.c ./gstbin.c ./gstbuffer.c ./gstbufferlist.c ./gstbus.c ./gstcaps.c ./gstchildproxy.c ./gstclock.c ./gstdebugutils.c ./gstelement.c ./gstelementfactory.c ./gsterror.c ./gstevent.c ./gstfilter.c ./gstformat.c ./gstghostpad.c ./gstindex.c ./gstindexfactory.c ./gstinfo.c ./gstinterface.c ./gstiterator.c ./gstmessage.c ./gstminiobject.c ./gstpad.c ./gstpadtemplate.c ./gstparamspecs.c ./gstpipeline.c ./gstplugin.c ./gstpluginfeature.c ./gstpluginloader.c ./gstpoll.c ./gstpreset.c ./gstquark.c ./gstquery.c ./gstregistry.c ./gstregistrychunks.c ./gstsegment.c ./gststructure.c ./gstsystemclock.c ./gsttaglist.c ./gsttagsetter.c ./gsttask.c ./gsttaskpool.c ./gsttrace.c ./gsttypefind.c ./gsttypefindfactory.c ./gsturi.c ./gstutils.c ./gstvalue.c ./gstparse.c ./gstregistrybinary.c ./gstxml.c /usr/lib/gcc/arm-linux-gnueabi/4.4.5/../../../../arm-linux-gnueabi/bin/ld: warning: libxml2.so.2, needed by ./.libs/libgstreamer-0.10.so, not found (try using -rpath or -rpath-link) /usr/lib/gcc/arm-linux-gnueabi/4.4.5/../../../../arm-linux-gnueabi/bin/ld: warning: libm.so.6, needed by ./.libs/libgstreamer-0.10.so, not found (try using -rpath or -rpath-link) [...]
Yep. pdebuild-cross+xapt dies in the same place, but not with the same error
dies with: ./gst.c ./gstobject.c ./gstbin.c ./gstbuffer.c ./gstbufferlist.c ./gstbus.c ./gstcaps.c ./gstchildproxy.c ./gstclock.c ./gstdebugutils.c ./gstelement.c ./gstelementfactory.c ./gsterror.c ./gstevent.c ./gstfilter.c ./gstformat.c ./gstghostpad.c ./gstindex.c ./gstindexfactory.c ./gstinfo.c ./gstinterface.c ./gstiterator.c ./gstmessage.c ./gstminiobject.c ./gstpad.c ./gstpadtemplate.c ./gstparamspecs.c ./gstpipeline.c ./gstplugin.c ./gstpluginfeature.c ./gstpluginloader.c ./gstpoll.c ./gstpreset.c ./gstquark.c ./gstquery.c ./gstregistry.c ./gstregistrychunks.c ./gstsegment.c ./gststructure.c ./gstsystemclock.c ./gsttaglist.c ./gsttagsetter.c ./gsttask.c ./gsttaskpool.c ./gsttrace.c ./gsttypefind.c ./gsttypefindfactory.c ./gsturi.c ./gstutils.c ./gstvalue.c ./gstparse.c ./gstregistrybinary.c ./gstxml.c /tmp/buildd/gstreamer0.10-0.10.30/gst/tmp-introspect8V8qNL/Gst-0.10: line 136: /tmp/buildd/gstreamer0.10-0.10.30/gst/tmp-introspect8V8qNL/.libs/lt-Gst-0.10: No such file or directory /tmp/buildd/gstreamer0.10-0.10.30/gst/tmp-introspect8V8qNL/Gst-0.10: line 136: /tmp/buildd/gstreamer0.10-0.10.30/gst/tmp-introspect8V8qNL/.libs/lt-Gst-0.10: Success g-ir-scanner: compile: arm-linux-gnueabi-gcc -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gobject-introspection-1.0 -g -O2 -g -Wall -O2 -Wno-error -I.. -I.. -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2 -I.. -I.. -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2 -c -o /tmp/buildd/gstreamer0.10-0.10.30/gst/tmp-introspect8V8qNL/Gst-0.10.o /tmp/buildd/gstreamer0.10-0.10.30/gst/tmp-introspect8V8qNL/Gst-0.10.c g-ir-scanner: link: ../libtool --mode=link --tag=CC --silent arm-linux-gnueabi-gcc -o /tmp/buildd/gstreamer0.10-0.10.30/gst/tmp-introspect8V8qNL/Gst-0.10 -g -O2 -g -Wall -O2 -Wno-error -L. -Wl,--export-dynamic -pthread -lgirepository-1.0 -lgobject-2.0 -lgmodule-2.0 -lffi -lgthread-2.0 -lrt -lglib-2.0 libgstreamer-0.10.la -pthread -Wl,--export-dynamic -lgio-2.0 -lgirepository-1.0 -lgobject-2.0 -lgmodule-2.0 -lffi -lgthread-2.0 -lrt -lglib-2.0 /tmp/buildd/gstreamer0.10-0.10.30/gst/tmp-introspect8V8qNL/Gst-0.10.o Command '['/tmp/buildd/gstreamer0.10-0.10.30/gst/tmp-introspect8V8qNL/Gst-0.10', '--introspect-dump=/tmp/buildd/gstreamer0.10-0.10.30/gst/tmp-introspect8V8qNL/types.txt,/tmp/buildd/gstreamer0.10-0.10.30/gst/tmp-introspect8V8qNL/dump.xml']' returned non-zero exit status 1
So the issue is that g-ir-scanner is broken for cross-builds.
Yep. I think we can agree on that. It's interesting that the two build methods don't quite give the same behaviour. I'll poke it some more to see what's going on.
I stopped looking into it at this point
Just when it gets interesting :-)
Wookey