On 1/22/16 11:17 AM, Richard Purdie wrote:
> Currently this code installs into the standard sysroot, however this causes
> some conflicts when linking since the linker can look specifically for
> versioned .so files (e.g. like libpthreads.so.0). This breaks builds
> of util-linux-native for example.
> 
> The easiest solution is to install uninative into its own separate sysroot.
> 
> Signed-off-by: Richard Purdie <richard.pur...@linuxfoundation.org>
> 
> diff --git a/meta/classes/uninative.bbclass b/meta/classes/uninative.bbclass
> index fe1e89b..8686159 100644
> --- a/meta/classes/uninative.bbclass
> +++ b/meta/classes/uninative.bbclass
> @@ -1,6 +1,6 @@
>  NATIVELSBSTRING = "universal"
>  
> -UNINATIVE_LOADER ?= "${@bb.utils.contains('BUILD_ARCH', 'x86_64', 
> '${STAGING_DIR_NATIVE}/lib/ld-linux-x86-64.so.2', 
> '${STAGING_DIR_NATIVE}/lib/ld-linux.so.2', d)}"
> +UNINATIVE_LOADER ?= 
> "${STAGING_DIR}-uninative/${BUILD_ARCH}-linux/lib/${@bb.utils.contains('BUILD_ARCH',
>  'x86_64', 'ld-linux-x86-64.so.2', 'ld-linux.so.2', d)}"

Have you considered changing the name of the ld.so for the uninative so that
there is no way it can conflict with the host system.

This would require a minor patch to the uninative linker/compiler to use the new
name -- and of course above to know it as well.

This might be a useful safety to prevent the system from every falling back to
the /lib/... version.

--Mark

>  UNINATIVE_URL ?= "unset"
>  UNINATIVE_TARBALL ?= "${BUILD_ARCH}-nativesdk-libc.tar.bz2"
> @@ -41,7 +41,8 @@ python uninative_eventhandler() {
>                  fetcher.download()
>              except Exception as exc:
>                  bb.fatal("Unable to download uninative tarball: %s" % 
> str(exc))
> -        cmd = e.data.expand("mkdir -p ${STAGING_DIR}; cd ${STAGING_DIR}; tar 
> -xjf ${UNINATIVE_DLDIR}/${UNINATIVE_TARBALL}; ${STAGING_DIR}/relocate_sdk.py 
> ${STAGING_DIR_NATIVE} ${UNINATIVE_LOADER} ${UNINATIVE_LOADER} 
> ${STAGING_BINDIR_NATIVE}/patchelf-uninative")
> +
> +        cmd = e.data.expand("mkdir -p ${STAGING_DIR}-uninative; cd 
> ${STAGING_DIR}-uninative; tar -xjf ${UNINATIVE_DLDIR}/${UNINATIVE_TARBALL}; 
> ${STAGING_DIR}-uninative/relocate_sdk.py 
> ${STAGING_DIR}-uninative/${BUILD_ARCH}-linux ${UNINATIVE_LOADER} 
> ${UNINATIVE_LOADER} 
> ${STAGING_DIR}-uninative/${BUILD_ARCH}-linux/patchelf-uninative")
>          try:
>              subprocess.check_call(cmd, shell=True)
>          except subprocess.CalledProcessError as exc:
> @@ -51,6 +52,8 @@ python uninative_eventhandler() {
>  
>  SSTATEPOSTUNPACKFUNCS_append = " uninative_changeinterp"
>  
> +PATH_prepend = 
> "${STAGING_DIR}-uninative/${BUILD_ARCH}-linux${bindir_native}:"
> +
>  python uninative_changeinterp () {
>      import subprocess
>      import stat
> 
> 

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to