On 01/22/2014 12:14 AM, Michael Haberler wrote:
> 
> Am 20.01.2014 um 15:53 schrieb Sebastian Kuzminsky <s...@highlab.com>:
> 
>> On 01/20/2014 07:47 AM, Michael Haberler wrote:
>>>
>>> Am 20.01.2014 um 09:47 schrieb Sebastian Kuzminsky <s...@highlab.com>:
>>>
>>>> On 01/20/2014 01:23 AM, Michael Haberler wrote:
>>>>>
>>>>> Seb: can you see what chrpath -l says? this should give a clue:
>>>>>
>>>>> $ chrpath -l bin/halcmd
>>>>> bin/halcmd: RPATH=/bighome/mah/emc2-rtos/lib
>>>>
>>>> Here's what i get on the rip build and the packaged version:
>>>>
>>>>> 1 02:45:52 seb@precise-rtai-x86 /home/seb/linuxcnc.git> chrpath 
>>>>> /usr/bin/halcmd 
>>>>> /usr/bin/halcmd: no rpath or runpath tag found.
>>>>> 2 02:45:55 seb@precise-rtai-x86 /home/seb/linuxcnc.git> chrpath -l 
>>>>> bin/halcmd 
>>>>> bin/halcmd: RPATH=/home/seb/linuxcnc.git/lib
> 
> The RIP runpaths are ok, the non-RIP ones are off insofar as none are set. 
> 
> looks like the cause is your commit 4b75c00e in src/Makefile:
> 
> 6a0031c6      320     ifeq ($(RUN_IN_PLACE),yes)
> ac9c1f70      321     LDFLAGS := -L$(LIB_DIR) -Wl,-rpath,$(LIB_DIR)
> 7c64e012      322     else
> 4b75c00e      323     LDFLAGS := -Wl,-rpath-link,../lib
> 6a0031c6      324     endif
> 
> The non-RIP LDFLAGS evidently need another -Wl,-rpath,$(<wherever linuxcnc 
> libs eventually go>), in which case the rpath is set accordingly. Otherwise 
> this will work only if the LD_LIBRARY_PATH happens to hit the right 
> directories by accident, which might be why this worked so far.

Before ubc, all .so files were installed in directories that are
included in the standard search path:

> 0 08:48:30 seb@precise-rtai-x86 /home/seb> dpkg -L linuxcnc | egrep '\.so'
> /usr/lib/libcanterp.so.0
> /usr/lib/libnml.so.0
> /usr/lib/libposemath.so.0
> /usr/lib/libpyplugin.so.0
> /usr/lib/liblinuxcnchal.so.0
> /usr/lib/liblinuxcncini.so.0
> /usr/lib/tcltk/linuxcnc/linuxcnc.so
> /usr/lib/tcltk/linuxcnc/hal.so
> /usr/lib/pyshared/python2.7/_hal.so
> /usr/lib/pyshared/python2.7/linuxcnc.so
> /usr/lib/pyshared/python2.7/minigl.so
> /usr/lib/pyshared/python2.7/_togl.so
> /usr/lib/pyshared/python2.7/gcode.so
> /usr/lib/librs274.so.0
> 0 08:48:33 seb@precise-rtai-x86 /home/seb> dpkg -s linuxcnc | grep Vers
> Version: 1:2.6.0~pre0.5134.g60f248b

So I stand by that commit in our main line.

However, in ubc new .so files get installed in application-specific
places, so we need to deal with that somehow.  Either by setting the
rpath, or by passing a path to dlopen, as appropriate.

The posix flavor's rtapi_app_posix uses rpath to find the components:

> 0 09:16:13 seb@precise-rtai-x86 /home/seb> dpkg -s linuxcnc-posix | grep Vers
> Version: 1:2.6.0~pre~seb.ubc3.deb~07e9d60
> 0 09:17:05 seb@precise-rtai-x86 /home/seb> dpkg -L linuxcnc-posix | grep 
> rtapi_app
> /usr/libexec/linuxcnc/rtapi_app_posix
> 0 09:17:15 seb@precise-rtai-x86 /home/seb> chrpath 
> /usr/libexec/linuxcnc/rtapi_app_posix
> /usr/libexec/linuxcnc/rtapi_app_posix: RPATH=/usr/lib/linuxcnc/posix
> 0 09:17:23 seb@precise-rtai-x86 /home/seb> 

I think either method is fine, i don't have a strong preference either way.

I slightly prefer giving dlopen() a full path because it makes it clear
when reading the code what's happening, whereas with the rpath method
you have to decode our buildsystem to learn what's going on.

I'm fine with dropping my commit "give dlopen the path to the ulapi
library", and using rpath for that binary instead.

Whatever is deemed more appropriate by y'all.


> debian/configure -r still breaks with xenomai running, works with rt-preempt:

Yeah, i have not made the xenomai flavor packages yet, because the
xenomai kernel & dev packages are not available in the linuxcnc.org deb
archive yet.  I've been using John Morris's excellent xenomai kernel
builder system to recompile all the packages we need, i'll put them up
when they're ready and add the xenomai flavor debs.


-- 
Sebastian Kuzminsky

------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to