[yocto] Recursions problem with pre-built versioned libraries and oe_soinstall

John McCabe john at mccabe.org.uk
Fri Jun 28 03:25:20 PDT 2019


Hi Chen,

I'm a little confused by your message.

You've replied to my email to the Yocto mailing list, regarding a problem I'm having with Yocto, by suggesting I email this list if I have a problem with Yocto.

Unless I'm missing something, that doesn't make a lot of sense. Can you please clarify?

Thanks

John

(PS - changed my subscription email address as my company's Outlook forces a load of random nonsense in the sig!).

> On 28 June 2019 at 10:47 ChenQi <Qi.Chen at windriver.com> wrote: 
>  
> 
> Hi John, 
>  
>  When you have problems regarding yocto, please send email to this mailing list. 
>  
>  Regards, 
>  Chen Qi 
>  
>  On 06/28/2019 12:53 AM, John McCabe wrote: 
> > Hi, 
> >  
> >  (Sorry for the long post, but....) 
> >  
> >  I'm new to Yocto etc and I'm struggling with configuring a recipe to install some library files that I've built. The libraries in question are part of OpenDDS, which I've cross-compiled for a Zynq-7000 target. At this point I don't want to include the build of the libraries in the Yocto (actually PetaLinux) configuration as it takes hours to build, so I just want to add the shared libraries that are needed into the image. However I haven't managed to get this to work in hours, if not days, of trying. Despite multiple attempts at an opendds.bb file, I continue to get issues with: 
> >  
> >  === 
> >  Exception: OSError: [Errno 40] too much recursions while resolving '<project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds/usr/lib/libTAO_PI_Server.so.2.2a_p15'; loop in '<project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds/usr/lib/libTAO_PI_Server.so.2.2a_p15' 
> >  === 
> >  
> >  Essentially there are a set of binaries and a set of shared libraries that I want to go into the image. If you look at the current version of the opendds.bb file I'm using, below, you should see a list of the files in question. 
> >  
> >  === 
> >  # 
> >  # This file is the OpenDDS libraries recipe. 
> >  # 
> >  
> >  SUMMARY = "OpenDDS Libraries" 
> >  SECTION = "PETALINUX/apps" 
> >  LICENSE = "MIT" 
> >  LIC_FILES_CHKSUM = ["file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"](file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302) 
> >  
> >  SRC_URI = " [file://DCPSInfoRepo]() \ 
> >  [file://tao_cosnaming]() \ 
> >  [file://tao_imr]() \ 
> >  [file://tao_imr_activator]() \ 
> >  [file://tao_imr_locator]() \ 
> >  [file://tao_nsadd]() \ 
> >  [file://tao_nsdel]() \ 
> >  [file://tao_nslist]() \ 
> >  [file://libACE.so.6.2a_p15]() \ 
> >  [file://libACEXML.so.6.2a_p15]() \ 
> >  [file://libACEXML_Parser.so.6.2a_p15]() \ 
> >  [file://libOpenDDS_Dcps.so.3.13.2]() \ 
> >  [file://libOpenDDS_FACE.so.3.13.2]() \ 
> >  [file://libOpenDDS_Federator.so.3.13.2]() \ 
> >  [file://libOpenDDS_InfoRepoDiscovery.so.3.13.2]() \ 
> >  [file://libOpenDDS_InfoRepoLib.so.3.13.2]() \ 
> >  [file://libOpenDDS_InfoRepoServ.so.3.13.2]() \ 
> >  [file://libOpenDDS_Model.so.3.13.2]() \ 
> >  [file://libOpenDDS_Multicast.so.3.13.2]() \ 
> >  [file://libOpenDDS_Rtps.so.3.13.2]() \ 
> >  [file://libOpenDDS_Rtps_Udp.so.3.13.2]() \ 
> >  [file://libOpenDDS_Shmem.so.3.13.2]() \ 
> >  [file://libOpenDDS_Tcp.so.3.13.2]() \ 
> >  [file://libOpenDDS_Udp.so.3.13.2]() \ 
> >  [file://libOpenDDS_monitor.so.3.13.2]() \ 
> >  [file://libTAO.so.2.2a_p15]() \ 
> >  [file://libTAO_AnyTypeCode.so.2.2a_p15]() \ 
> >  [file://libTAO_Async_IORTable.so.2.2a_p15]() \ 
> >  [file://libTAO_Async_ImR_Client_IDL.so.2.2a_p15]() \ 
> >  [file://libTAO_BiDirGIOP.so.2.2a_p15]() \ 
> >  [file://libTAO_CSD_Framework.so.2.2a_p15]() \ 
> >  [file://libTAO_CSD_ThreadPool.so.2.2a_p15]() \ 
> >  [file://libTAO_CodecFactory.so.2.2a_p15]() \ 
> >  [file://libTAO_Codeset.so.2.2a_p15]() \ 
> >  [file://libTAO_CosNaming.so.2.2a_p15]() \ 
> >  [file://libTAO_CosNaming_Serv.so.2.2a_p15]() \ 
> >  [file://libTAO_CosNaming_Skel.so.2.2a_p15]() \ 
> >  [file://libTAO_DynamicInterface.so.2.2a_p15]() \ 
> >  [file://libTAO_FTORB_Utils.so.2.2a_p15]() \ 
> >  [file://libTAO_FT_ClientORB.so.2.2a_p15]() \ 
> >  [file://libTAO_FT_ServerORB.so.2.2a_p15]() \ 
> >  [file://libTAO_IDL_FE.so.2.2a_p15]() \ 
> >  [file://libTAO_IORManip.so.2.2a_p15]() \ 
> >  [file://libTAO_IORTable.so.2.2a_p15]() \ 
> >  [file://libTAO_ImR_Activator.so.2.2a_p15]() \ 
> >  [file://libTAO_ImR_Activator_IDL.so.2.2a_p15]() \ 
> >  [file://libTAO_ImR_Client.so.2.2a_p15]() \ 
> >  [file://libTAO_ImR_Locator.so.2.2a_p15]() \ 
> >  [file://libTAO_ImR_Locator_IDL.so.2.2a_p15]() \ 
> >  [file://libTAO_Messaging.so.2.2a_p15]() \ 
> >  [file://libTAO_PI.so.2.2a_p15]() \ 
> >  [file://libTAO_PI_Server.so.2.2a_p15]() \ 
> >  [file://libTAO_PortableGroup.so.2.2a_p15]() \ 
> >  [file://libTAO_PortableServer.so.2.2a_p15]() \ 
> >  [file://libTAO_Strategies.so.2.2a_p15]() \ 
> >  [file://libTAO_Svc_Utils.so.2.2a_p15]() \ 
> >  [file://libTAO_Valuetype.so.2.2a_p15]() \ 
> >  " 
> >  
> >  S = "${WORKDIR}" 
> >  
> >  do_install() { 
> >  install -d ${D}${bindir} 
> >  install -d ${D}${libdir} 
> >  install -m 0755 DCPSInfoRepo ${D}${bindir} 
> >  install -m 0755 tao_cosnaming ${D}${bindir} 
> >  install -m 0755 tao_imr ${D}${bindir} 
> >  install -m 0755 tao_imr_activator ${D}${bindir} 
> >  install -m 0755 tao_imr_locator ${D}${bindir} 
> >  install -m 0755 tao_nsadd ${D}${bindir} 
> >  install -m 0755 tao_nsdel ${D}${bindir} 
> >  install -m 0755 tao_nslist ${D}${bindir} 
> >  oe_soinstall libACE.so.6.2a_p15 ${D}${libdir} 
> >  oe_soinstall libACEXML.so.6.2a_p15 ${D}${libdir} 
> >  oe_soinstall libACEXML_Parser.so.6.2a_p15 ${D}${libdir} 
> >  oe_soinstall libOpenDDS_Dcps.so.3.13.2 ${D}${libdir} 
> >  oe_soinstall libOpenDDS_FACE.so.3.13.2 ${D}${libdir} 
> >  oe_soinstall libOpenDDS_Federator.so.3.13.2 ${D}${libdir} 
> >  oe_soinstall libOpenDDS_InfoRepoDiscovery.so.3.13.2 ${D}${libdir} 
> >  oe_soinstall libOpenDDS_InfoRepoLib.so.3.13.2 ${D}${libdir} 
> >  oe_soinstall libOpenDDS_InfoRepoServ.so.3.13.2 ${D}${libdir} 
> >  oe_soinstall libOpenDDS_Model.so.3.13.2 ${D}${libdir} 
> >  oe_soinstall libOpenDDS_Multicast.so.3.13.2 ${D}${libdir} 
> >  oe_soinstall libOpenDDS_Rtps.so.3.13.2 ${D}${libdir} 
> >  oe_soinstall libOpenDDS_Rtps_Udp.so.3.13.2 ${D}${libdir} 
> >  oe_soinstall libOpenDDS_Shmem.so.3.13.2 ${D}${libdir} 
> >  oe_soinstall libOpenDDS_Tcp.so.3.13.2 ${D}${libdir} 
> >  oe_soinstall libOpenDDS_Udp.so.3.13.2 ${D}${libdir} 
> >  oe_soinstall libOpenDDS_monitor.so.3.13.2 ${D}${libdir} 
> >  oe_soinstall libTAO.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_AnyTypeCode.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_Async_IORTable.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_Async_ImR_Client_IDL.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_BiDirGIOP.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_CSD_Framework.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_CSD_ThreadPool.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_CodecFactory.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_Codeset.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_CosNaming.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_CosNaming_Serv.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_CosNaming_Skel.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_DynamicInterface.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_FTORB_Utils.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_FT_ClientORB.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_FT_ServerORB.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_IDL_FE.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_IORManip.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_IORTable.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_ImR_Activator.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_ImR_Activator_IDL.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_ImR_Client.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_ImR_Locator.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_ImR_Locator_IDL.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_Messaging.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_PI.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_PI_Server.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_PortableGroup.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_PortableServer.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_Strategies.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_Svc_Utils.so.2.2a_p15 ${D}${libdir} 
> >  oe_soinstall libTAO_Valuetype.so.2.2a_p15 ${D}${libdir} 
> >  } 
> >  
> >  # Don't bother trying to build the debug package, at least for now! 
> >  INHIBIT_PACKAGE_STRIP = "1" 
> >  INHIBIT_SYSROOT_STRIP = "1" 
> >  INHIBIT_PACKAGE_DEBUG_SPLIT = "1" 
> >  
> >  # Inhibit warnings about files being stripped 
> >  INSANE_SKIP_${PN} = "ldflags" 
> >  INSANE_SKIP_${PN} = "already-stripped" 
> >  
> >  # No .h files to be packaged, so only list .so stuff 
> >  FILES_${PN} = "${bindir}/* ${libdir}/*.so.*" 
> >  FILES_${PN}-dev = "${bindir}/* ${libdir}/*.so" 
> >  === 
> >  
> >  The files were all built in another folder but I've copied them into the project-spec/meta-user/recipes-apps/opendds/files folder so that they can be picked up ok. I uses the normal install to do the binaries, and oe_soinstall to work with the versioned shared libraries, as described in various places. 
> >  
> >  I added a print statement into package.bbclass at line 1233 (see below) to try to get a bit more information into the log file about the point where it's breaking). The log then shows this below (I presume that the stderr output being in the middle of that lot is just some sequencing effect): 
> >  
> >  === 
> >  DEBUG: Executing python function package_fixsymlinks 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_Svc_Utils.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_FT_ClientORB.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_CSD_Framework.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libOpenDDS_Rtps_Udp.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libOpenDDS_Rtps.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_Async_ImR_Client_IDL.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_DynamicInterface.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_AnyTypeCode.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libOpenDDS_Tcp.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_ImR_Activator_IDL.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libOpenDDS_InfoRepoDiscovery.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libOpenDDS_InfoRepoLib.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libACEXML.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_Valuetype.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_BiDirGIOP.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_Messaging.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_IORManip.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_CosNaming_Serv.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_PortableServer.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_ImR_Activator.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_Async_IORTable.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_IDL_FE.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libACEXML_Parser.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libOpenDDS_monitor.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libOpenDDS_Multicast.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_PI_Server.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_Strategies.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libOpenDDS_Federator.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libOpenDDS_Shmem.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libOpenDDS_Model.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_PI.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_CodecFactory.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_FT_ServerORB.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_ImR_Locator.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libACE.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_CosNaming.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libOpenDDS_Dcps.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_IORTable.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_CosNaming_Skel.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_ImR_Locator_IDL.so, pkg: opendds-devERROR: Error executing a python function in exec_python_func() autogenerated: 
> >  
> >  The stack trace of python calls that resulted in this exception/failure was: 
> >  File: 'exec_python_func() autogenerated', lineno: 2, function:  
> >  0001: 
> >  *** 0002:package_fixsymlinks(d) 
> >  0003: 
> >  File: '/opt/pkg/petalinux/components/yocto/source/arm/layers/core/meta/classes/package.bbclass', lineno: 1236, function: package_fixsymlinks 
> >  1232: for path in pkgfiles[pkg]: 
> >  1233: print('path: %s, pkg: %s' % (path, pkg)) 
> >  1234: rpath = path[len(inst_root):] 
> >  1235: pkg_files[pkg].append(rpath) 
> >  *** 1236: rtarget = cpath.realpath(path, inst_root, True, assume_dir = True) 
> >  1237: if not cpath.lexists(rtarget): 
> >  1238: dangling_links[pkg].append(os.path.normpath(rtarget[len(inst_root):])) 
> >  1239: 
> >  1240: newrdepends = {} 
> >  File: '/opt/pkg/petalinux/components/yocto/source/arm/layers/core/meta/lib/oe/cachedpath.py', lineno: 229, function: realpath 
> >  0225: # be printed a backtrace with 100s of OSError exceptions 
> >  0226: # else 
> >  0227: raise OSError(errno.ELOOP, 
> >  0228: "too much recursions while resolving '%s'; loop in '%s'" % 
> >  *** 0229: (file, e.strerror)) 
> >  0230: 
> >  0231: raise 
> >  0232: 
> >  0233: return file 
> >  Exception: OSError: [Errno 40] too much recursions while resolving '<project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds/usr/lib/libTAO_PI_Server.so.2.2a_p15'; loop in '<project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds/usr/lib/libTAO_PI_Server.so.2.2a_p15' 
> >  
> >  DEBUG: Python function package_fixsymlinks finished 
> >  DEBUG: Python function do_package finished 
> >  ERROR: Function failed: package_fixsymlinks 
> >  
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libOpenDDS_InfoRepoServ.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_CSD_ThreadPool.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_FTORB_Utils.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_PortableGroup.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_ImR_Client.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libOpenDDS_FACE.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libTAO_Codeset.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/lib/libOpenDDS_Udp.so, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/bin/tao_imr_locator, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/bin/tao_cosnaming, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/bin/tao_nsdel, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/bin/tao_nsadd, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/bin/tao_nslist, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/bin/tao_imr_activator, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/bin/DCPSInfoRepo, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds-dev/usr/bin/tao_imr, pkg: opendds-dev 
> >  path: <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/packages-split/opendds/usr/lib/libTAO_PI_Server.so.2.2a_p15, pkg: opendds 
> >  === 
> >  
> >  In addition, I get a batch of the following messages coming out: 
> >  
> >  === 
> >  1: opendds-1.0-r0 do_package - 0s (pid 23258) 
> >  link recursion too deep, not expanding path '<project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/package/usr/lib/libTAO_Svc_Utils.so.2.2a_p15'. 
> >  link recursion too deep, not expanding path '<project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/package/usr/lib/libTAO_PI_Server.so.2.2a_p15'. 
> >  link recursion too deep, not expanding path '<project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/opendds/1.0-r0/package/usr/lib/libTAO_PI.so.2.2a_p15'. 
> >  === 
> >  
> >  And, when I go into the lib folder and list the contents, I see: 
> >  
> >  === 
> >  : 
> >  lrwxrwxrwx 1 jmccabe jmccabe 28 Jun 27 17:38 libTAO_PI_Server.so -> libTAO_PI_Server.so.2.2a_p15 
> >  lrwxrwxrwx 1 jmccabe jmccabe 28 Jun 27 17:38 libTAO_PI_Server.so.2.2a_p15 -> libTAO_PI_Server.so.2.2a_p15 
> >  : 
> >  === 
> >  
> >  With (on Ubuntu), all the filenames in red with a grey (or black?) background, i.e. broken links. 
> >  
> >  I have a couple of questions about all this: 
> >  
> >  1) The oe_soinstall function (see here - https://git.yoctoproject.org/cgit.cgi/poky/plain/meta/classes/utils.bbclass) includes a line that installs (using "install") the xxx.so.x.y file, which causes a copy of the file from ${WORKDIR} to go into the <project-base>/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi.opendds/1.0-r0/image/usr/lib directory. It then generates sonamelink and solink from the library details and creates symbolic links that point back to the copies of the library files in ${WORKDIR}. In doing that, the copy of the file that was placed there by the install line is overwritten with the symbolic link; is that normal? (I presume it must be otherwise no one would be getting oe_soinstall to work!). 
> >  
> >  2) Is there anything in the shared library filenames' version part that could be causing something to get confused? I've seen mention of zzz.so.a.b.c etc where a, b and c are normally numeric, which is different to the version information in the DDS files, but... 
> >  
> >  3) I can understand why there could be a recursion issue detected, but it's not met who's putting those weird links into the package/usr/lib folder. Is there something in the .bb file that I need to change to make that work properly? 
> >  
> >  4) Can anyone see whether I'm just simply doing something wrong and clarify what I need to do to put it right? 
> >  
> >  Any help will be very, very gratefully appreciated. As I said, I'm new to Yocto and have spent hours looking for help/example of the use of oe_soinstall. Each time round the loop of updating my .bb file and building it takes quite a long time so... 
> >  
> >  Many thanks, 
> >  John 
> > 
> > John McCabe​


More information about the yocto mailing list