[cmake-developers] [CMake] BundleUtilities and @rpath

Clinton Stimpson clinton at elemtech.com
Sat Jun 1 01:34:48 EDT 2013


Jc,

I see some good things in this topic.

A few questions I have:

GP_RPATH_DIR is set to ${bundle}/Contents.  What about other platforms such as 
Linux?  And what about Windows where the executable directory could be 
considered an rpath directory along with a few other directories that the 
Windows loader looks at.

And what if there are multiple rpath directories?  I had a case where a plugin 
had 2 rpath directories for dependencies, as some dependencies could be local, 
and some in a common directory.
Even on Windows, the executable could be in the common directory, and the 
plugin and some of its dependencies in another.  The loader on Windows has 
builtin paths for finding dependencies that include the executable directory 
and the plugin directory.  The same layout can be done on Mac and Linux with 
rpaths.

So, I don't see how the topic fully captures rpath behavior, or is it meant to 
be specific to simpler use cases?  However, I will admit that BundleUtilities 
was already specific to simpler use cases when it was just @executable_path and 
@loader_path.


Perhaps related, is a topic of mine in stage/rpath-on-mac.  It gives rpath 
support in the build/install tree much like one gets on other Unix platforms.

With that, you can compile code on Mac such that it already has @rpath and 
there is less or zero fixup necessary at install time.  The hope is that CMake 
will adopt this as the default behavior on Mac.  The only potential fixup 
necessary is external libraries that are not system libraries, but only if 
they don't use @rpath.

For my 3rd party libraries, I could decide to run install_name_tool to change 
them to use @rpath before compiling my code.
Or a script could do the same at install time.  For one app, I had written 
some basic scripts to use instead of BundleUtilties.  This freed me from the 
complexity required to also support @executable_path and @loader_path, but it 
wasn't matured enough to validate the completeness of the package/bundle.

Have you seen this thread?
http://public.kitware.com/pipermail/cmake-developers/2011-November/002572.html

So, a question I have for you is how do you think stage/rpath-on-mac could 
affect your topic?

Clint

On Thursday, May 16, 2013 07:57:01 PM Jean-Christophe Fillion-Robin wrote:
> Hi Clinton,
> 
> This is to create bundle that use @rpath. Particularly useful when you want
> to support plugin.
> 
> Let me know what you think, I just updated my the toy project.
> Other list of changes have been pushed into CMake stage:
> http://cmake.org/gitweb?p=stage/cmake.git;a=shortlog;h=refs/heads/tweak-bund
> leutilities-for-rpath
> 
> Thanks
> Jc
> 
> On Thu, May 2, 2013 at 11:51 AM, Clinton Stimpson 
<clinton at elemtech.com>wrote:
> > On Wednesday, April 24, 2013 06:45:11 PM Jean-Christophe Fillion-Robin
> > 
> > wrote:
> > > Hi Folks,
> > > 
> > > I have been working on improving BundleUtilities and GetPrerequisites
> > > module so that it can be used to easily fixup a MacOSX bundle using
> > 
> > @rpath.
> > 
> > > The set of changes I would like to propose is here:
> > https://github.com/jcfr/CMakeBundleUtilitiesExample/compare/f7a594ffba72b8
> > cb> 
> > > 83df9a166d7887bedc49f38b...75fa538
> > > 
> > > To try out the change, you could build the small project I created for
> > 
> > that
> > 
> > > purpose: https://github.com/jcfr/CMakeBundleUtilitiesExample#readme
> > > 
> > > Let me know what you think.
> > > 
> > > Thanks
> > > Jc
> > 
> > Is it to help make the same @executable_path based bundles but support
> > copying
> > in libraries and frameworks that used @rpath and change them over to be
> > @executable_path based?
> > 
> > Or is this to help create bundles that result in the use of @rpath?
> > 
> > --
> > Clinton Stimpson
> > Elemental Technologies, Inc
> > Computational Simulation Software, LLC
> > www.csimsoft.com
> > --
> > 
> > Powered by www.kitware.com
> > 
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> > 
> > Please keep messages on-topic and check the CMake FAQ at:
> > http://www.cmake.org/Wiki/CMake_FAQ
> > 
> > Follow this link to subscribe/unsubscribe:
> > http://www.cmake.org/mailman/listinfo/cmake
-- 
Clinton Stimpson
Elemental Technologies, Inc
Computational Simulation Software, LLC
www.csimsoft.com



More information about the cmake-developers mailing list