[yocto] Trying to create OpenDDS recipe

Ourada, Paul Paul.Ourada at Covidien.com
Thu Jul 28 16:16:41 PDT 2011


Hi Darren -

Thanks for getting back to me. I have been able to get a lot further with the recipe. It turns out that the problem is in the makefiles for OpenDDS. I'll detail further below.

Paul E. Ourada
Sr. Principal Software Engineer
Covidien, Energy-based Devices
5920 Longbow Drive
Boulder, CO 80301
paul.ourada at covidien.com
www.covidien.com
Main: 303-530-2300
Ofc: 303-581-6940
Fax: 303-581-6741


> Hi Paul,

On 07/19/2011 07:41 AM, Ourada, Paul wrote:
>> I hope this is the correct place to post this. If not, please let me
>> know.

> This is the right place. In the future please don't reply to an existing
> post as your message then gets threaded with the one you replied to
> (likely why you didn't receive a response so far - that I see anyway).

I guess I thought that changing the subject would have fixed that. Guess the 
mail list s/w is smarter than that. :)

>> 
>> I'm trying to create a recipe for OpenDDS. The recipe works so far as
>> fetching, unpacking, and configuration. Or it seems to. :) Part of the
>> configuration piece is that it also pulls down ACE+TAO real-time CORBA.
>> This part works fine as well.
>> 
>> I set S as follows to match the unpacking directories enforced by the
>> tar file:
>> 
>> S = ${WORKINGDIR}/DDS
>> 
>> The package comes with a configuration script pre-built, and it expects
>> to be told where glibc is. So, I write do_configure as follows:
>> 
>> EXTRA_OECONF = "-glibc=${STAGING_DIR}/${MACHINE}/usr"
>> 
>> do_configure() {
>>     ${S}/configure ${EXTRA_OECONF}
>> }
>> 
>> The problem that I run into is during compilation. I write the following
>> for do_compile()
>> 
>> do_compile() {
>>     oenote ${STAGING_DIR}
>>     cd ${S} && make
>> }

> Is there a reason you are overriding configure and compile? These appear
> to be autoconf projects, which should just work for recipes using
> autotools.bbclass.

I had tried that initially. The configuration file is already supplied, so running autotools to create the configure script is not necessary, but running ./configure is. Is there a better way to do that?

	:
	:
<< most of the compiler command line gobblety-gook snipped>>

>> -DTAO_IDL_PREPROCESSOR=\"i586-poky-linux-g++
>> -march=i586 --sysroot=/opt/yocto/poky-5.0.1-build/tmp/sysroots/qemux86\"


>> The thing that is puzzling me is that --sysroot seems to be pointing in
>> the general direction of ${STAGING_DIR} and so the include directive,
>> #include <features.h>> should be good. I have checked, and features.h is
>> in the /usr/include subdirectory there.

> I see unistd.h missing, not features.h.

You're right, it was complaining about unistd.h, but it turns out that the real culprit was the TAO_IDL_PREPROCESSOR macro above. When I compared it to what was being emitted in the Ubuntu compile, I saw that the long, nasty, compound, double-quoted thing should have just been "i586-poky-linux-g++." TAO_ID_PREPROCESSOR was being assigned the value of ${CXX}. 

It appears that instead of pre-pending the ${CPPFLAGS} variable, yocto/poky recipes were appending the cross-compile build variables to ${CXX}. I patched the OpenDDS makefile(s) to look for the first word in the ${CXX} macro, and substituted that in the assignment of TAO_IDL_PREPROCESSOR. Dunno if that's the "right" way to do it, or if there's a bug in ${CXX} assignment?

Anyway, I think that I'm getting there w/the recipe. I'm sure that there are some things I'm doing wrong. For instance, I'm no longer cd'ing to ${S}, as OE already takes me there. I'm also using oe_runmake in do_compile().

I expect that I'll be running some version of "make install" at some point. 

I'm sure I'll have more questions as I go along.

Thanks for helping an OE/Yocto N00b!

Paul




More information about the yocto mailing list