[Bug 1054] OCL's OS::InitFunction not executed on Mint 15

S Roderick <[email protected]> Fri, 21 Feb 2014 00:37:49 +0100
Newsgroups gmane.science.robotics.orocos.devel
Message-ID <[email protected]>
http://bugs.orocos.org/show_bug.cgi?id=1054

--- Comment #2 from S Roderick <[email protected]> 2014-02-21 00:37:48 CET ---
Created attachment 867
  --> http://bugs.orocos.org/attachment.cgi?id=867
bin: Add link definitions to restore pre-4.6 default link behaviour

This is partly a sequencing issue, and partly due to a shortcut taken in OCL.

The deployer sequence is
{{{
main()
   os_init()
      // this runs all OS::InitFunction's registered with the
RTT::StartStopManager
   <E2><80><A6>
   DeploymentComponent::kickStart() 
      // this actually processes the XML file contents and loads/processes any
libraries
}}}
The only way that an OS::InitFunction will be run in os_init() is if the
corresponding library is linked into the deployer; loading it via an XML import
function is too late, as the StartStopManager has already been run.

In Ubuntu 10.04 and OS X 10.8 the orocos-ocl-common library is a link
dependency of the deployer executables; in Mint 15 it is not. Hence the
loadOCL() function isn't available when os_init() is executed, and so the
"cheat" used in OCL to load the types into the RTT type registry does not work
(it's a cheat as it doesn't create a full plugin/typekit, which avoids this
issue).

In all O/S's the deployer executables are linked against the orocos-ocl-common
library, it simply appears to be dropped from the resultant dependencies (as
shown by ldd) in Mint 15. This is a known issue. Looks like gcc >=4.6 default
behaviour has changed:

http://stackoverflow.com/questions/11631161/force-to-link-against-unused-shared-library
http://www.bnikolic.co.uk/blog/gnu-ld-as-needed.html
https://wiki.gentoo.org/wiki/Project:Quality_Assurance/As-needed

The attached patch fixes the issue, and works in both Mint 15 w/ gcc 4.7 and
Ubuntu 10.04 w/ gcc 4.4

-- 
Configure bugmail: http://bugs.orocos.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
You are the assignee for the bug.
-- 
Orocos-Dev mailing list
[email protected]
http://lists.mech.kuleuven.be/mailman/listinfo/orocos-dev