[Paraview] Relocatable plugins on ParaView CVS for Mac?

Mike Jackson mike.jackson at bluequartz.net
Mon Sep 8 14:24:19 EDT 2008


Um No. Don't do that. If you remove any type of path from the  
"install_name" then OS X will look in the current directory for  
libraries. It is my understanding that the ParaView devs plan to put  
the libraries in Paraview.app/Contents/lib or somewhere like that. I  
still can not get an "install" to work so I can not figure out where  
everything is being put. The "official" places to put all these  
dependent libraries on OS X are within the bundle at
paraview.app/Contents/Frameworks/Qt*.framework
paraview.app/Contents/lib/*.dylib
paraview.app/Contents/plugins

Samuel was partially correct in that he ran intall_name_tool to start  
resetting install_name ids from the libraries. One thing that stands  
out is the fact that the Qt frameworks do NOT have any type of  
isntall_path on them. This is the first problem I see.

Next, none of the vtk and paraview libraries have the correct  
install_path on them either. That path should be something like:
  @executable_path/../lib/*.dylib

The plugin should NOT have any path for itself. This is an error/bug  
in the ParaView build system. On OS X (at least) the add_library()  
call within one of the macros should be with "module" and NOT  
"shared". This is causing problems for OS X with linking. I thought I  
put in a bug report on this, maybe not. Either way it needs to be fixed.

This brings up the next issue. With all of these paths and such what  
is the best way to really do this. I am reading up on the "@rpath" and  
"@loader_path" instead of @executable_path.


  _________________________________________________
| Mike Jackson - Principal Software Engineer      |
| BlueQuartz Software                             |
| mike.jackson at bluequartz.net                     |
| www.bluequartz.net                              |
---------------------------------------------------

On Sep 8, 2008, at 1:25 PM, clinton at elemtech.com wrote:

>
> Would it work to strip all the @executable_path's out, and fix the  
> id of it,
> so you get something like this:
>
> libLabReaderGUIPlugin.dylib:
>        libLabReaderGUIPlugin.dylib (compatibility version 0.0.0,  
> current
> version 0.0.0)
>        libpqComponents.dylib (compatibility version 0.0.0, current  
> version
> 0.0.0)
>        libpqCore.dylib (compatibility version 0.0.0, current version  
> 0.0.0)
>        libQtChart.dylib (compatibility version 0.0.0, current  
> version 0.0.0)
>        libQtTesting.dylib (compatibility version 0.0.0, current  
> version
> 0.0.0)
>        libpqWidgets.dylib (compatibility version 0.0.0, current  
> version
> 0.0.0)
>        QtAssistant.framework/Versions/4/QtAssistant (compatibility  
> version
> 4.3.0, current version 4.3.5)
>  .. and so on.
>
> With just library names, doesn't the Mac loader use the ones that  
> are already
> loaded?
> An exception to removing absolute paths might be if the plugin  
> depends on
> something that paraview doesn't depend on.
>
> Clint
>
> On Monday 08 September 2008 11:14:32 am Samuel Crow wrote:
>> Hello,
>>
>> The plugins are in paraview.app/Contents/MacOS/plugins/ and the  
>> output for
>> otool -L is as follows:
>>
>> libLabReaderGUIPlugin.dylib:
>> 	@executable_path/plugins/libLabReaderGUIPlugin.dylib (compatibility
>> version 0.0.0, current version 0.0.0)
>> @executable_path/libpqComponents.dylib (compatibility version 0.0.0,
>> current version 0.0.0) @executable_path/libpqCore.dylib  
>> (compatibility
>> version 0.0.0, current version 0.0.0) @executable_path/ 
>> libQtChart.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libQtTesting.dylib (compatibility version 0.0.0,  
>> current
>> version 0.0.0) @executable_path/libpqWidgets.dylib (compatibility  
>> version
>> 0.0.0, current version 0.0.0) @executable_path/libQVTK.pv3.3.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkPVServerManager.dylib (compatibility version  
>> 0.0.0,
>> current version 0.0.0) QtAssistant.framework/Versions/4/QtAssistant
>> (compatibility version 4.3.0, current version 4.3.5)
>> QtNetwork.framework/Versions/4/QtNetwork (compatibility version  
>> 4.3.0,
>> current version 4.3.5) @executable_path/libvtkPVFiltersCS.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkPVFilters.dylib (compatibility version 0.0.0,
>> current version 0.0.0) @executable_path/libvtkPVServerCommonCS.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkPVServerCommon.dylib (compatibility version  
>> 0.0.0,
>> current version 0.0.0) @executable_path/libvtkInfovisCS.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> QtGui.framework/Versions/4/QtGui (compatibility version 4.3.0,  
>> current
>> version 4.3.5) QtSql.framework/Versions/4/QtSql (compatibility  
>> version
>> 4.3.0, current version 4.3.5) @executable_path/libvtkXdmfCS.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkXdmf.dylib (compatibility version 0.0.0,  
>> current
>> version 0.0.0) @executable_path/libvtkParallelCS.dylib (compatibility
>> version 0.0.0, current version 0.0.0) @executable_path/ 
>> libvtkHybridCS.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkVolumeRenderingCS.dylib (compatibility version
>> 0.0.0, current version 0.0.0) @executable_path/libvtkWidgetsCS.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkRenderingCS.dylib (compatibility version  
>> 0.0.0,
>> current version 0.0.0) @executable_path/libvtkViews.pv3.3.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkInfovis.pv3.3.dylib (compatibility version  
>> 0.0.0,
>> current version 0.0.0) @executable_path/libvtkWidgets.pv3.3.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkHybrid.pv3.3.dylib (compatibility version  
>> 0.0.0,
>> current version 0.0.0) @executable_path/libvtkParallel.pv3.3.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkVolumeRendering.pv3.3.dylib (compatibility  
>> version
>> 0.0.0, current version 0.0.0) @executable_path/ 
>> libvtkRendering.pv3.3.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> /System/Library/Frameworks/AGL.framework/Versions/A/AGL  
>> (compatibility
>> version 1.0.0, current version 1.0.0)
>> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
>> (compatibility version 2.0.0, current version 136.0.0)
>> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
>> (compatibility version 45.0.0, current version 949.33.0)
>> QtXml.framework/Versions/4/QtXml (compatibility version 4.3.0,  
>> current
>> version 4.3.5) QtCore.framework/Versions/4/QtCore (compatibility  
>> version
>> 4.3.0, current version 4.3.5) @executable_path/libvtkGraphicsCS.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkGenericFilteringCS.dylib (compatibility  
>> version
>> 0.0.0, current version 0.0.0)
>> @executable_path/libvtkGenericFiltering.pv3.3.dylib (compatibility  
>> version
>> 0.0.0, current version 0.0.0) @executable_path/ 
>> libvtkGraphics.pv3.3.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkImagingCS.dylib (compatibility version 0.0.0,
>> current version 0.0.0) @executable_path/libvtkImaging.pv3.3.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkIOCS.dylib (compatibility version 0.0.0,  
>> current
>> version 0.0.0) @executable_path/libvtkFilteringCS.dylib  
>> (compatibility
>> version 0.0.0, current version 0.0.0) @executable_path/ 
>> libvtkCommonCS.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkClientServer.dylib (compatibility version  
>> 0.0.0,
>> current version 0.0.0) @executable_path/libKWCommon.dylib  
>> (compatibility
>> version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkPVCommandOptions.dylib (compatibility  
>> version 0.0.0,
>> current version 0.0.0) @executable_path/libvtkIO.pv3.3.dylib  
>> (compatibility
>> version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkFiltering.pv3.3.dylib (compatibility version  
>> 0.0.0,
>> current version 0.0.0) @executable_path/libvtkCommon.pv3.3.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkftgl.pv3.3.dylib (compatibility version 0.0.0,
>> current version 0.0.0) @executable_path/libvtkfreetype.pv3.3.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
>> (compatibility version 1.0.0, current version 1.0.0)
>> @executable_path/libvtkverdict.vtk5.3.0.dylib (compatibility  
>> version 0.0.0,
>> current version 0.0.0) @executable_path/libvtkDICOMParser.pv3.3.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkmetaio.pv3.3.dylib (compatibility version  
>> 0.0.0,
>> current version 0.0.0) @executable_path/libvtksqlite.pv3.3.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkexpat.pv3.3.dylib (compatibility version  
>> 0.0.0,
>> current version 0.0.0) @executable_path/libvtksys.pv3.3.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libXdmf.dylib (compatibility version 0.0.0, current
>> version 0.0.0) @executable_path/libvtklibxml2.pv3.3.dylib  
>> (compatibility
>> version 0.0.0, current version 0.0.0) /usr/lib/libSystem.B.dylib
>> (compatibility version 1.0.0, current version 111.1.1)
>> /usr/lib/libedit.2.dylib (compatibility version 2.0.0, current  
>> version
>> 2.9.0) @executable_path/libvtkexoIIc.pv3.3.dylib (compatibility  
>> version
>> 0.0.0, current version 0.0.0) @executable_path/ 
>> libvtkNetCDF.pv3.3.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkpng.pv3.3.dylib (compatibility version 0.0.0,
>> current version 0.0.0) @executable_path/libvtktiff.pv3.3.dylib
>> (compatibility version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkhdf5.dylib (compatibility version 0.0.0,  
>> current
>> version 0.0.0) @executable_path/libvtkzlib.pv3.3.dylib (compatibility
>> version 0.0.0, current version 0.0.0)
>> @executable_path/libvtkjpeg.pv3.3.dylib (compatibility version 0.0.0,
>> current version 0.0.0) /usr/lib/libstdc++.6.dylib (compatibility  
>> version
>> 7.0.0, current version 7.4.0) /usr/lib/libgcc_s.1.dylib  
>> (compatibility
>> version 1.0.0, current version 1.0.0)
>>
>> --- On Mon, 9/8/08, Mike Jackson <mike.jackson at bluequartz.net> wrote:
>>> From: Mike Jackson <mike.jackson at bluequartz.net>
>>> Subject: Re: [Paraview] Relocatable plugins on ParaView CVS for Mac?
>>> To: "ParaView" <paraview at paraview.org>
>>> Date: Monday, September 8, 2008, 4:33 PM
>>> Couple things come to mind that need to be checked.
>>>    Where exactly in relation to the paraview.app bundle
>>> are you
>>> trying to load the plugins from?
>>>    Also, what is the output of running "otool -L
>>> [plugin]".
>>>
>>> I have some ideas but let's see the answers to those
>>> first..
>>>
>>>  _________________________________________________
>>>
>>> | Mike Jackson - Principal Software Engineer      |
>>> | BlueQuartz Software                             |
>>> | mike.jackson at bluequartz.net                     |
>>> | www.bluequartz.net                              |
>>>
>>> ---------------------------------------------------
>>>
>>> On Sep 8, 2008, at 12:17 PM, Samuel Crow wrote:
>>>> Hello again,
>>>>
>>>> I've written a BASH script that translates the
>>>
>>> paths of any
>>>
>>>> libraries that have been accessing from the ParaView
>>>
>>> executable to
>>>
>>>> use @executable_path but unfortunately the GUI plugins
>>>
>>> don't work on
>>>
>>>> the destination computer.  I am using the RPath
>>>
>>> feature of MaxOSX to
>>>
>>>> generate the .Dylib files.  My goal is to make my
>>>
>>> plugins work on
>>>
>>>> any Mac running the 3.3.1 version of ParaView
>>>
>>> downloaded from the
>>>
>>>> ParaView website.
>>>>
>>>> On the build computer I'm getting the error
>>>
>>> message
>>>
>>>> "QObject::setParent: Cannot set parent, new
>>>
>>> parent is in a different
>>>
>>>> thread".  The plugins still work on this computer
>>>
>>> but if I copy them
>>>
>>>> to another machine that doesn't have the build
>>>
>>> environment, the
>>>
>>>> readers won't work.  The source plugin works since
>>>
>>> it only has a
>>>
>>>> server-manager plugin anyway.  I suspect the filter
>>>
>>> would work also
>>>
>>>> for similar reasons.
>>>>
>>>> My build machine is a MacPro with 2 quad-cord Xeon
>>>
>>> processors and 4
>>>
>>>> Gigs of RAM running MacOSX 10.5.4 .
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> ParaView mailing list
>>>> ParaView at paraview.org
>>>> http://www.paraview.org/mailman/listinfo/paraview
>>>
>>> _______________________________________________
>>> ParaView mailing list
>>> ParaView at paraview.org
>>> http://www.paraview.org/mailman/listinfo/paraview
>>
>> _______________________________________________
>> ParaView mailing list
>> ParaView at paraview.org
>> http://www.paraview.org/mailman/listinfo/paraview
>
>



More information about the ParaView mailing list