[oe] libatasmart_0.13.bb: `No package 'libudev' found` and `./strpool: ./strpool: cannot execute binary file`

Steffen Sledz sledz at dresearch.de
Fri Sep 24 09:03:39 UTC 2010


Am 23.09.2010 16:13, schrieb Steffen Sledz:
> On 09/23/2010 03:36 PM, Steffen Sledz wrote:
>> Am 23.09.2010 13:30, schrieb Paul Menzel:
>>> Using Ȧngström 2008.1 this error was not met though. But `do_compile()`
>>> fails with `./strpool: cannot execute binary file`.
>>>
>>>         Log data follows:
>>>         | NOTE: make
>>>         |   CC     strpool.o
>>>         |   CCLD   strpool
>>>         | ./strpool atasmart.c atasmart.strpool.c
>>>         | ./strpool: ./strpool: cannot execute binary file
>>>         | make: *** [atasmart.strpool.c] Error 126
>>>         | FATAL: oe_runmake failed
>>>         | ERROR: Function do_compile failed
>>>         NOTE: package libatasmart-0.13-r1: task do_compile: Failed
>>>
>>> But as far as I understand the recipe takes care of that by compiling
>>> `strpool` for the build host [2].
>>>
>>>         do_compile_prepend() {
>>>         	rm strpool -f
>>>         	${BUILD_CC} -o strpool strpool.c
>>>         	chmod +x strpool
>>>         }
>>> ...
>>> [2] http://cgit.openembedded.org/cgit.cgi/openembedded/tree/recipes/devicekit/libatasmart_0.13.bb?id=67ab615dac83b0460fa1b88dfb11c72d7c93e259
>>
>> I hit the same problem. But just when building libatasmart for the first time. A second build succeeds.
> 
> I tried the following to find the cause for this.
> 
> First i added
> 
>   pwd
>   file strpool
> 
> to the do_compile_prepend().
> 
> Aftre running
> 
>   bitbake libatasmart -c clean
>   bitbake libatasmart
> 
> i saw
> 
>   ERROR: log data follows (/home/sledz/work/HydraIP/OE/tmp.6/work/armv5te-angstrom-linux-gnueabi/libatasmart-0.13-r1/temp/log.do_compile.29576)
>   | /home/sledz/work/HydraIP/OE/tmp.6/work/armv5te-angstrom-linux-gnueabi/libatasmart-0.13-r1/git
>   | strpool: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped
>   ...
> 
> Then i called a devshell
> 
>   bitbake libatasmart -c devshell
> 
> Within it
> 
>   > pwd
>   /home/sledz/work/HydraIP/OE/tmp.6/work/armv5te-angstrom-linux-gnueabi/libatasmart-0.13-r1/git
>   > file strpool
>   strpool: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped
> 
> So the binary has changed in between.

I did some deeper research. The do_compile_prepend code from Koen(?) did not help here.

Makefile.am contains a target "noinst_PROGRAMS = strpool" which is used to create atasmart.strpool.c.

For the creation of this target strpool there are no special rules. Therefor it is build for the target (and overwrites the strpool built from do_compile_prepend) instead of the build host. :(

Is anybody able to write down a rule for strpool fixing this?

Steffen





More information about the Openembedded-devel mailing list