kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #34289
Re: RPATH issue on _pcbnew.so
Hello Wayne,
Am 24.02.18 um 21:44 schrieb Wayne Stambaugh:
> Carsten,
>
> On 02/24/2018 02:08 PM, Carsten Schoenert wrote:
>> Hi,
>>
>> I guess it's not intended that the library / shared object _pcbnew.so
>> build in pcbnew/ set up a RPATH based on the build directory?
>
> This is the kicad python scripting shared object which should get
> installed in the correct python library path. CMake installs it in the
> correct place on both my Debian and Ubuntu builds so I don't understand
> what the issue is here.
the build and installation is just fine, the issue is that this file has
a RUNPATH set to folder there it was compiled. It should have *no* RUNPATH.
>>> root@i5:/# ldd build/kicad-5.0.0~rc0+dfsg1/debian/build/pcbnew/_pcbnew.so | grep build
>>> libkicad_3dsg.so.2.0.0 => /build/kicad-5.0.0~rc0+dfsg1/debian/build/3d-viewer/3d_cache/sg/libkicad_3dsg.so.2.0.0 (0x00007f8188148000)
>>
>> This causes that lintian (a big QS tool for Debian packaging) is writing
>> a error out on this. This package wouldn't be accepted from the FTP
>> master if I'd do a upload to NEW. And I need to upload to NEW as the
>> package structure will change.
>
> This is the build path not the install path.
Partially correct. :-)
In Debian the build folder is created by '/build/$PACKAGE_$VERSION', the
out of tree build is typically done within the folder debian/build so
the root for building all is
/build/kicad-5.0.0~rc0+dfsg1/debian/build/...
So yes, the the first line from my paste is the build path, the second
line is just the output of 'ldd' with a grepped 'build' as argument.
_pcbnew.so is looking for libkicad_3dsg.so.2.0.0 in the path which is
shown there. And this is obviously wrong.
> By default on linux builds the shared object gets installed in
> /usr/local/lib/libkicad_3dsg.so.2.0.0. This is the 3D viewer plugin so
> I don't know if this the correct convention for plugins but as it is a
> shared object, it will get recognized by the os and load properly. If
> plugins should be installed in a different path, please let me know what
> that path should be and we can change the cmake install path for this
> shared object.
The installation of this private library is no problem, kicad does here
exactly what the standard folder is if the INSTALL_PATH isn't given. No
need something to change here.
...
>> I don't know what has to be changed here so I'd like to ask someone who
>> is more experienced with the cmake world.
>> I could change this with chrpath but it's better if upstream would fix
>> this. Surprisingly the library _pcbnew.kiface hasn't this issue so I'm a
>> bit clueless.
>
> I don't know that anything changed that I am aware of with _pcbnew.so.
> The 3D viewer plugin was introduced during this development cycle but I
> have been successfully building and installing from source on Debian
> during the entire current development cycle so I don't have any good
> answers for you.
I have really no knowledge about cmake, but I can see some information
of setting the RUNPATH to an empty string while installing binaries or
shared objects in opposite of this Python library.
> -- Installing: /build/kicad-5.0.0~rc0+dfsg1/debian/tmp/usr/share/kicad/scripting/kicad_pyshell/__init__.py
> -- Installing: /build/kicad-5.0.0~rc0+dfsg1/debian/tmp/usr/lib/python2.7/dist-packages/_pcbnew.so <------- no modification here
> -- Installing: /build/kicad-5.0.0~rc0+dfsg1/debian/tmp/usr/bin/pl_editor
> ....> -- Installing:
/build/kicad-5.0.0~rc0+dfsg1/debian/tmp/usr/bin/_pcb_calculator.kiface
> -- Installing: /build/kicad-5.0.0~rc0+dfsg1/debian/tmp/usr/lib/x86_64-linux-gnu/kicad/plugins/3d/libs3d_plugin_idf.so
> -- Set runtime path of "/build/kicad-5.0.0~rc0+dfsg1/debian/tmp/usr/lib/x86_64-linux-gnu/kicad/plugins/3d/libs3d_plugin_idf.so" to "" <------
> -- Installing: /build/kicad-5.0.0~rc0+dfsg1/debian/tmp/usr/lib/x86_64-linux-gnu/kicad/plugins/3d/libs3d_plugin_vrml.so
> -- Set runtime path of "/build/kicad-5.0.0~rc0+dfsg1/debian/tmp/usr/lib/x86_64-linux-gnu/kicad/plugins/3d/libs3d_plugin_vrml.so" to "" <------
> -- Installing: /build/kicad-5.0.0~rc0+dfsg1/debian/tmp/usr/lib/x86_64-linux-gnu/kicad/plugins/3d/libs3d_plugin_oce.so
> -- Set runtime path of "/build/kicad-5.0.0~rc0+dfsg1/debian/tmp/usr/lib/x86_64-linux-gnu/kicad/plugins/3d/libs3d_plugin_oce.so" to "" <------
It's probably just a small thing that is needed to add $SOMETHERE to the
installation of this Python library.
--
Regards
Carsten Schoenert
Follow ups
References