Bug #287
closedconditionnal PREFER issues
Description
Hello,
Ubuntu provides omniORB and its python 2 bindings. So by default, on that platform, we set PREFER to system.
But if we need python 3 bindings, we need to set a PREFER to robotpkg, as there are no system packages.
But then, if we build a package that need omniORB but not python (like hpp-template-corba), it will use the system version and link to libomniORB4.so.1 from /usr/lib.
And after that, building a package that need this one and python 3 (like hpp-corbaserver), it will link to libomniORB4.so.2 from /opt/openrobots/lib.
It doesn't hurt on 18.04, because both are libomniORB4.so.2, so at runtime, the dynamic link resolution works. But on 16.04 we get a segfault because of the double link to both .1 & .2:
$ ldd /opt/openrobots/bin/hppcorbaserver | grep omni libomniORB4.so.2 => /opt/openrobots/lib/libomniORB4.so.2 (0x00007f635e6c8000) libomnithread.so.4 => /opt/openrobots/lib/libomnithread.so.4 (0x00007f635e4c2000) libomniDynamic4.so.2 => /opt/openrobots/lib/libomniDynamic4.so.2 (0x00007f635c9ed000) libomniORB4.so.1 => /usr/lib/libomniORB4.so.1 (0x00007f6359e89000) libomnithread.so.3 => /usr/lib/libomnithread.so.3 (0x00007f6359c83000)
I find it strange that we didn't get this issue before.
Am I doing anything wrong ? Do we have a better way to do this ?
Otherwise, I think that the easiest workaround would be to use PREFER = robotpkg all the time.