[maemo-developers] Survey about Maemo porting problems

From: Eero Tamminen eero.tamminen at nokia.com
Date: Fri Nov 28 11:25:44 EET 2008
Hi,

ext tz wrote:
>>> Something wrong in pkgconfig hard to diagnose
>>>
>>> Cross compiling hopelessly broken (does the gcc produce i386
>>> executables?  No, well use --host,
>> Scratchbox should handle fine packages that can be built only natively.
> 
> It doesn't, at least not the version I have to install with unaltered
> ./configure scripts which insist on testing if "gcc -o x x.c" will
> produce something that runs as "x".  This is not uncommon!

This is what Scratchbox is specifically made to handle.

It actually handled that even before v1.0 which added mainly things
needed for supporting building of Debian packages (like TCP/IP support
to fakeroot).


> It is probably why ubuntu has a big set of ARM computers to build things
> instead of using scratchbox.

This is probably because:
- Updating Scratchbox base (host tools) is a bit awkward and
   and they would need to do that because their tools are newer
   than what Scratchbox currently provides.  This would include
   building newer SB toolchain versions
- Their package set is larger which means more potential issues with
   Qemu user-space emulation, especially in regards to its threading
   support (which cannot be fixed completely due it being user-space
   emulation).  They would need to set CPU transparency stuff with
   real devices (works fine with Scratchbox, but more hassle to set
   up than using qemu)
- To rebuild Python, they would need to remove it from Scratchbox
   host tools (building dynamic extensions for languages provided both
   by Scratchbox and SB target confuses the language build tools)
- They think the speed up provided by Scratchbox builds isn't
   enough to offset above issues and they have enough suitable ARM
   devices for native building


> There are less common (and probably
> erroneous) tests for specific versions or library features, but I
> don't expect them to be handled and I can usually work around them.
> The ./configure may be broken in not picking up the --host from the
> gcc specs, but that is unfortunately common when they do a "can I run
> executables" test.  This might be another point where Nokia/maemo
> could work with Ubuntu and Debian to upstream fixes to ./configure
> scripts which prevent cross compiling.

By definition this won't work automatically (configure cannot test
whether things work).  Because upstream doesn't test  cross-building, 
their build scripts would also get regularly broken.  Another approach
is the one used by OpenEmbedded where also each package needs "changes",
but those are external to the package source (so called "recipes" for
seeding configure scripts with suitable values etc).

The purpose of Scratchbox is that you don't need to do *any* change to
the software (internal or external to it) to cross-build it.  You just
need to have the -dev packages required by it installed.


> configure:2258: checking whether the C compiler works
> configure:2264: ./a.out
> ./configure: line 1: ./a.out: cannot execute binary file
> configure:2267: $? = 126
> configure:2276: error: cannot run C compiled programs.

Please check that you've setup your Scratchbox target properly.
It seems that there's some problem with your CPU transparency setup.


	- Eero

More information about the maemo-developers mailing list