building minimo Re: PyGTK- installation?

Cesar Eduardo Barros cesarb at cesarb.net
Mon Aug 4 00:56:39 CEST 2008


arne anka escreveu:
> to the existing bb recipe. (the next make update will fail because  
> mokomakefile or oe fails to either respect or simply overwrite the recipe,  
> for what reason ever).

To make mokomakefile respect your change (including automatically 
merging it when needed), just commit it (the openembedded directory is a 
normal git working tree). Mokomakefile does a sequence where it will 
merge your local changes instead of overwriting them, but it fails 
without a clean working tree (i.e. you cannot have uncommited changes; 
see http://www.kernel.org/pub/software/scm/git/docs/gitglossary.html for 
details).

> this will immediately make you hit another snag:
> 
> In file included from js/jsarena.c:49:
> js/jsbit.h:173: error: size of array 'js_static_assert_line_173' is  
> negative
> make[1]: *** [js/jsarena.o] Error 1
> make: *** [src] Error 2
> 
> go to jsbit.h line 173 and kill one long from [2]
> JS_STATIC_ASSERT(sizeof(unsigned long long) == sizeof(JSUword));
> 
> i am no c genius but i suppose minimo/firefox defines "unsigned long long"  
> in some incompatible way -- i sincerely hope "unsigned long" is still long  
> enough (can somebody shed some light?)
> anyway, after this minimo builds even on amd64.

Defeating a static assert is not a good idea ("size of array is 
negative" is what happens when a static assert fails). The assert being 
there probably means the programmers assumed sizeof(unsigned long long) 
== sizeof(JSUword) in the code, and wanted the build to abort in case 
something went wrong and that wasn't true.

The real error should be elsewhere, in the definition of JSUword (it 
should have the same size as unsigned long long (i.e. 64 bits), but not 
necessarily the same type). Since you are on arm, unsigned long is 
probably 32 bits, which means the variable has half the size it should have.

I'm guessing it's confusing native and cross compilers; it is using the 
native compiler to find out that "unsigned long" is enough (64 bits on 
the AMD64 architecture), but using the cross compiler to actually 
compile the code (where "unsigned long" is 32 bits).

-- 
Cesar Eduardo Barros
cesarb at cesarb.net
cesar.barros at gmail.com




More information about the community mailing list