[OE-core] [PATCH 21/22] pseudo: Rework target, native and nativesdk pseudo intergration

Mark Hatle mark.hatle at windriver.com
Thu Dec 6 17:28:58 UTC 2012


On 12/6/12 11:21 AM, Saul Wold wrote:
> On 12/06/2012 09:03 AM, Mark Hatle wrote:
>> On 12/5/12 11:06 PM, Saul Wold wrote:
>>> On 12/04/2012 09:14 AM, Mark Hatle wrote:
>>>> Pseudo was not building and installing properly for systems where
>>>> baselib
>>>> was not 'lib'.  This change reworks the three scenerios to work
>>>> properly.
>>>>
>>>> Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
>>>> ---
>>>>     meta/recipes-devtools/pseudo/pseudo.inc      |   58
>>>> ++++++++++++-------------
>>>>     meta/recipes-devtools/pseudo/pseudo_1.4.1.bb |    2 +-
>>>>     meta/recipes-devtools/pseudo/pseudo_git.bb   |    2 +-
>>>>     3 files changed, 30 insertions(+), 32 deletions(-)
>>>>
>>>> diff --git a/meta/recipes-devtools/pseudo/pseudo.inc
>>>> b/meta/recipes-devtools/pseudo/pseudo.inc
>>>> index 98f706c..8dc7d72 100644
>>>> --- a/meta/recipes-devtools/pseudo/pseudo.inc
>>>> +++ b/meta/recipes-devtools/pseudo/pseudo.inc
>>>> @@ -13,34 +13,28 @@ SRC_URI_append_class-nativesdk = "
>>>> file://symver.patch"
>>>>
>>>>     SRC_URI_append_class-native = " file://symver.patch"
>>>>
>>>> -FILES_${PN} = "${libdir}/pseudo/lib*/libpseudo.so ${bindir}/*
>>>> ${localstatedir}/pseudo ${prefix}/var/pseudo"
>>>> -FILES_${PN}-dbg += "${libdir}/pseudo/lib*/.debug"
>>>> +FILES_${PN} = "${prefix}/lib/pseudo/lib*/libpseudo.so ${bindir}/*
>>>> ${localstatedir}/pseudo ${prefix}/var/pseudo"
>>>> +FILES_${PN}-dbg += "${prefix}/lib/pseudo/lib*/.debug"
>>>>     PROVIDES += "virtual/fakeroot"
>>>>
>>>>     MAKEOPTS = ""
>>>>
>>>>     inherit siteinfo
>>>>
>>>> -do_configure () {
>>>> -    :
>>>> -}
>>>> -
>>>> -NO32LIBS ??= "1"
>>>> -
>>>> -# Compile for the local machine arch...
>>>> -do_compile () {
>>>> +do_configure_class-target () {
>>>>         if [ "${SITEINFO_BITS}" = "64" ]; then
>>>> -      ${S}/configure --prefix=${prefix}
>>>> --libdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS}
>>>> --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix}
>>>> --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --enable-static-sqlite
>>>> --without-rpath
>>>> +        mylibdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS}
>>>>         else
>>>> -      ${S}/configure --prefix=${prefix}
>>>> --libdir=${prefix}/lib/pseudo/lib
>>>> --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix}
>>>> --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --enable-static-sqlite
>>>> --without-rpath
>>>> +        mylibdir=${prefix}/lib/pseudo/lib
>>>>         fi
>>>> -    oe_runmake ${MAKEOPTS}
>>>> +    ${S}/configure --prefix=${prefix} --libdir=$mylibdir
>>>> --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --without-rpath
>>>
>>> You seem to have dropped the --with-sqlite and now it does not find
>>> sqlite3.h for the target build as can be seen in the build appliance
>>> failure.
>>
>> It should be sourcing it from the compiler with a #include.  It was
>> working on all of my test builds.
>>
> Not that I am aware of, the configure script defaults to /usr, is it
> possible you have a host contamination issue with sqlite3 installed on
> your machine?
>
>> But either way, there are two bugs here.. the first is pseudo isn't
>> building for the target -- it wasn't before either.
>>
> It has been building on the target in the past since we need it for the
> Build Appliance and it builds in world.

Enable multilibs, pseudo (target) will no longer build.  The integration is hard 
coded currently to be looking for things in the 'lib' directory, which may not 
exist.  In otherwords, it is broken -- and the autobuilds are missing any 
build-time tests for multilibs at this point.

>> But the real issue is -why on earth- are we building pseudo at all for
>> the target.  It serves no purpose that I am aware of.
>>
> Build Appliance needs it.

People keep telling me this, but honestly I can't figure out why it's needed. 
What actually uses pseudo in the build appliance?

I can easily build a system today, boot it, download OE-Core/Bitbake (or Poky) 
and build it on that system.  It's that the purpose of the build appliance?  Why 
is it needed?

>> I'd prefer if the fix was simply to disable pseudo for target-class
>> builds, and only build it for -native and -nativesdk cases.
>>
> Not really an option
>
>> Just drop this patch for now -- we can focus on fixing it a different
>> way if target builds of pseudo are needed for some reason.
>>
> consider it dropped.
>
> Sau!
>
>> --Mark
>>
>>> http://autobuilder.yoctoproject.org:8010/builders/build-appliance/builds/154/steps/shell_46/logs/stdio
>>>
>>>
>>> Sau!
>>>
>>>>     }
>>>>
>>>> -# Two below are the same
>>>> +NO32LIBS ??= "1"
>>>> +
>>>>     # If necessary compile for the alternative machine arch.  This is
>>>> only
>>>>     # necessary in a native build.
>>>> -do_compile_prepend_class-native () {
>>>> +do_compile_native() {
>>>>         if [ "${SITEINFO_BITS}" = "64" -a -e
>>>> "/usr/include/gnu/stubs-32.h" -a "${PN}" = "pseudo-native" -a
>>>> "${NO32LIBS}" != "1" ]; then
>>>>             # We need the 32-bit libpseudo on a 64-bit machine...
>>>>                     # ... and we really, really, hope that the native
>>>> host is
>>>> @@ -56,18 +50,20 @@ do_compile_prepend_class-native () {
>>>>             # prevent it from removing the lib, but remove everything
>>>> else
>>>>             make 'LIB=foo' ${MAKEOPTS} distclean
>>>>         fi
>>>> +    if [ "${SITEINFO_BITS}" = "64" ]; then
>>>> +      ${S}/configure --prefix=${prefix}
>>>> --libdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS}
>>>> --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix}
>>>> --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --enable-static-sqlite
>>>> --without-rpath
>>>> +    else
>>>> +      ${S}/configure --prefix=${prefix}
>>>> --libdir=${prefix}/lib/pseudo/lib
>>>> --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix}
>>>> --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --enable-static-sqlite
>>>> --without-rpath
>>>> +    fi
>>>> +    oe_runmake ${MAKEOPTS}
>>>>     }
>>>>
>>>> -do_compile_prepend_class-nativesdk () {
>>>> -    if [ "${SITEINFO_BITS}" = "64" -a -e
>>>> "/usr/include/gnu/stubs-32.h" -a "${PN}" = "pseudo-native" -a
>>>> "${NO32LIBS}" != "1" ]; then
>>>> -        # We need the 32-bit libpseudo on a 64-bit machine...
>>>> -                # ... and we really, really, hope that the native
>>>> host is
>>>> -                # x86, or else --bits may not work.
>>>> -        ./configure --prefix=${prefix}
>>>> --libdir=${prefix}/lib/pseudo/lib
>>>> --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32
>>>> --without-rpath
>>>> -        oe_runmake ${MAKEOPTS} libpseudo
>>>> -        # prevent it from removing the lib, but remove everything else
>>>> -        make 'LIB=foo' ${MAKEOPTS} distclean
>>>> -    fi
>>>> +do_compile_class-native () {
>>>> +    do_compile_native
>>>> +}
>>>> +
>>>> +do_compile_class-nativesdk () {
>>>> +    do_compile_native
>>>>     }
>>>>
>>>>     do_install () {
>>>> @@ -77,18 +73,20 @@ do_install () {
>>>>     # Two below are the same
>>>>     # If necessary install for the alternative machine arch.  This is
>>>> only
>>>>     # necessary in a native build.
>>>> -do_install_append_class-native () {
>>>> +do_install_native () {
>>>>         if [ "${SITEINFO_BITS}" = "64" -a -e
>>>> "/usr/include/gnu/stubs-32.h" -a "${PN}" = "pseudo-native" -a
>>>> "${NO32LIBS}" != "1" ]; then
>>>>             mkdir -p ${D}${prefix}/lib/pseudo/lib
>>>>             cp lib/pseudo/lib/libpseudo.so ${D}${prefix}/lib/pseudo/lib/.
>>>>         fi
>>>> +    oe_runmake 'DESTDIR=${D}' ${MAKEOPTS}
>>>> 'LIB=lib/pseudo/lib$(MARK64)' install
>>>> +}
>>>> +
>>>> +do_install_class-native () {
>>>> +    do_install_native
>>>>     }
>>>>
>>>>     do_install_append_class-nativesdk () {
>>>> -    if [ "${SITEINFO_BITS}" = "64" -a -e
>>>> "/usr/include/gnu/stubs-32.h" -a "${PN}" = "pseudo-native" -a
>>>> "${NO32LIBS}" != "1" ]; then
>>>> -        mkdir -p ${D}${prefix}/lib/pseudo/lib
>>>> -        cp lib/pseudo/lib/libpseudo.so ${D}${prefix}/lib/pseudo/lib/.
>>>> -    fi
>>>> +    do_install_native
>>>>     }
>>>>
>>>>     BBCLASSEXTEND = "native nativesdk"
>>>> diff --git a/meta/recipes-devtools/pseudo/pseudo_1.4.1.bb
>>>> b/meta/recipes-devtools/pseudo/pseudo_1.4.1.bb
>>>> index 70fe9c0..8367a34 100644
>>>> --- a/meta/recipes-devtools/pseudo/pseudo_1.4.1.bb
>>>> +++ b/meta/recipes-devtools/pseudo/pseudo_1.4.1.bb
>>>> @@ -1,6 +1,6 @@
>>>>     require pseudo.inc
>>>>
>>>> -PR = "r13"
>>>> +PR = "r14"
>>>>
>>>>     SRC_URI =
>>>> "http://www.yoctoproject.org/downloads/${BPN}/${BPN}-${PV}.tar.bz2"
>>>>
>>>> diff --git a/meta/recipes-devtools/pseudo/pseudo_git.bb
>>>> b/meta/recipes-devtools/pseudo/pseudo_git.bb
>>>> index e394ffb..c8ec5ad 100644
>>>> --- a/meta/recipes-devtools/pseudo/pseudo_git.bb
>>>> +++ b/meta/recipes-devtools/pseudo/pseudo_git.bb
>>>> @@ -2,7 +2,7 @@ require pseudo.inc
>>>>
>>>>     SRCREV = "398a264490713c912b4ce465251a8a82a7905f45"
>>>>     PV = "1.4.1+git${SRCPV}"
>>>> -PR = "r28"
>>>> +PR = "r29"
>>>>
>>>>     DEFAULT_PREFERENCE = "-1"
>>>>
>>>>
>>
>>
>>





More information about the Openembedded-core mailing list