Re: [CMake] Packaging dylibs into app bundles

2018-07-20 Thread Harry Mallon
Hi all,

Fixup_bundle works very well for app bundles and seems to be the way to go! The 
problem I was previously seeing was fixed by setting 
CMAKE_INSTALL_RPATH_USE_LINK_PATH to True. This fills in the rpath on the 
installed executable with enough paths to resolve all the dylibs.

I also added a merge request to cmake to fail more obviously if the file cannot 
be found as in previous message.

My next question is: Is there a way to do a fixup bundle without a bundle?

i.e. I want to fixup (copy required dylibs, fix otool ids and rpaths etc) a 
structure like this:

/usr/local/myapp/bin/myapp
/usr/local/myapp/lib/libA.dylib
/usr/local/myapp/lib/libB.dylib # etc


Is there a sensible way to do this without rewriting a lot of Bundle Utilities?

Best,
Harry


From: Harry Mallon 
Date: Thursday, 19 July 2018 at 19:04
To: Stephen McDowell 
Cc: CMake MailingList 
Subject: Re: [CMake] Packaging dylibs into app bundles

Hi,

I have been messing arounds with fixup_bundle (which seems to be the correct 
function). It worked for a small test case, but only if the dylibs required had 
otool ids of their full path. Ours currently have rpath based ones (e.g. 
@rpath/libcrypto.dylib). So I get a lot of:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/objdump:
 '@rpath/ libcrypto.dylib’: No such file or directory

Hmm, seems like the stuff is there somewhere to make this work…

Best,
Harry

From: Stephen McDowell 
Date: Thursday, 19 July 2018 at 17:35
To: Harry Mallon 
Cc: CMake MailingList 
Subject: Re: [CMake] Packaging dylibs into app bundles

Hi Harry,

I don't know how useful this will be, but the Instant Meshes application 
creates an app bundle that has always worked reliably for me. Looking at the 
code, it doesn't appear like there's much custom stuff going on either. It 
starts here

https://github.com/wjakob/instant-meshes/blob/011fa44ab72037cbc16535090a63ead41963c1e5/CMakeLists.txt#L151

And there's an if APPLE block below that appears to be the core.

Hope that is useful :) I've never actually done this for any of my own projects 
though. And I'm pretty sure them setting the underlying GUI library and TBB to 
be static (as opposed to shared) is skirting around the issue that you are 
trying to solve (dylib stuff)...

-Stephen

On Thu, Jul 19, 2018, 9:03 AM Harry Mallon  wrote:
Hello all,

Is there a good tutorial/article on getting CMake to package required dylibs 
and frameworks into an app bundle for you on mac. We have a lot of custom stuff 
to do it and it is fragile and breaks a lot.

Thanks,
Harry

Harry Mallon

Senior Software Engineer

[Image removed by sender.]<https://codex.online/>

T +44 203 7000 989

60 Poland Street | London | England | W1F 7NT
[Image removed by sender.]

Three Billboards

Blade Runner 2049

 I, Tonya


--

Powered by www.kitware.com<http://www.kitware.com>

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake


Re: [CMake] Packaging dylibs into app bundles

2018-07-19 Thread Michael Jackson
You need to pass in more paths to the “fixup_bundle()” method. Those paths are 
the paths where the libraries are located so CMake has somewhere else to look 
in case the absolute path is not encoded in the dylib itself. I could point you 
to our project but it is pretty scary in there. We use a custom generated CMake 
script that does a bunch of extra stuff that Qt requires (qt.conf) and stuff 
like that. Does work reliably for use once we got it setup.

 

https://github.com/BlueQuartzSoftware/CMP/tree/develop/OSX_Tools

https://github.com/BlueQuartzSoftware/CMP/blob/develop/OSX_Tools/CompleteBundle.cmake.in

https://github.com/BlueQuartzSoftware/CMP/blob/develop/OSX_Tools/MacOSXBundleInfo.plist.in

 

They probably are not an “exemplar” of how to do things as they were created 
when CMake 3.1 was new so there are probably better ways to get the same thing 
done but this works in our environment. I have a whole separate bash script 
that lets us create a signed .dmg file.

 

--

Mike Jackson

 

On 7/19/18, 2:04 PM, "CMake on behalf of Harry Mallon"  wrote:

 

Hi,

 

I have been messing arounds with fixup_bundle (which seems to be the correct 
function). It worked for a small test case, but only if the dylibs required had 
otool ids of their full path. Ours currently have rpath based ones (e.g. 
@rpath/libcrypto.dylib). So I get a lot of:

 

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/objdump:
 '@rpath/ libcrypto.dylib’: No such file or directory  

 

Hmm, seems like the stuff is there somewhere to make this work…

 

Best,

Harry

 

From: Stephen McDowell 
Date: Thursday, 19 July 2018 at 17:35
To: Harry Mallon 
Cc: CMake MailingList 
Subject: Re: [CMake] Packaging dylibs into app bundles

 

Hi Harry, 

 

I don't know how useful this will be, but the Instant Meshes application 
creates an app bundle that has always worked reliably for me. Looking at the 
code, it doesn't appear like there's much custom stuff going on either. It 
starts here

 

https://github.com/wjakob/instant-meshes/blob/011fa44ab72037cbc16535090a63ead41963c1e5/CMakeLists.txt#L151

 

And there's an if APPLE block below that appears to be the core.

 

Hope that is useful :) I've never actually done this for any of my own projects 
though. And I'm pretty sure them setting the underlying GUI library and TBB to 
be static (as opposed to shared) is skirting around the issue that you are 
trying to solve (dylib stuff)...

 

-Stephen

 

On Thu, Jul 19, 2018, 9:03 AM Harry Mallon  wrote:

Hello all,

 

Is there a good tutorial/article on getting CMake to package required dylibs 
and frameworks into an app bundle for you on mac. We have a lot of custom stuff 
to do it and it is fragile and breaks a lot.

 

Thanks,

Harry

Harry Mallon

Senior Software Engineer

T +44 203 7000 989 

60 Poland Street | London | England | W1F 7NT 

Three BillboardsBlade Runner 2049  I, Tonya

 

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake

-- Powered by www.kitware.com Please keep messages on-topic and check the CMake 
FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to 
support the CMake community. For more information on each offering, please 
visit: CMake Support: http://cmake.org/cmake/help/support.html CMake 
Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: 
http://cmake.org/cmake/help/training.html Visit other Kitware open-source 
projects at http://www.kitware.com/opensource/opensource.html Follow this link 
to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake 

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake


Re: [CMake] Packaging dylibs into app bundles

2018-07-19 Thread Harry Mallon
Hi,

I have been messing arounds with fixup_bundle (which seems to be the correct 
function). It worked for a small test case, but only if the dylibs required had 
otool ids of their full path. Ours currently have rpath based ones (e.g. 
@rpath/libcrypto.dylib). So I get a lot of:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/objdump:
 '@rpath/ libcrypto.dylib’: No such file or directory

Hmm, seems like the stuff is there somewhere to make this work…

Best,
Harry

From: Stephen McDowell 
Date: Thursday, 19 July 2018 at 17:35
To: Harry Mallon 
Cc: CMake MailingList 
Subject: Re: [CMake] Packaging dylibs into app bundles

Hi Harry,

I don't know how useful this will be, but the Instant Meshes application 
creates an app bundle that has always worked reliably for me. Looking at the 
code, it doesn't appear like there's much custom stuff going on either. It 
starts here

https://github.com/wjakob/instant-meshes/blob/011fa44ab72037cbc16535090a63ead41963c1e5/CMakeLists.txt#L151

And there's an if APPLE block below that appears to be the core.

Hope that is useful :) I've never actually done this for any of my own projects 
though. And I'm pretty sure them setting the underlying GUI library and TBB to 
be static (as opposed to shared) is skirting around the issue that you are 
trying to solve (dylib stuff)...

-Stephen

On Thu, Jul 19, 2018, 9:03 AM Harry Mallon  wrote:
Hello all,

Is there a good tutorial/article on getting CMake to package required dylibs 
and frameworks into an app bundle for you on mac. We have a lot of custom stuff 
to do it and it is fragile and breaks a lot.

Thanks,
Harry

Harry Mallon

Senior Software Engineer

[Image removed by sender.]<https://codex.online/>

T +44 203 7000 989

60 Poland Street | London | England | W1F 7NT
[Image removed by sender.]

Three Billboards

Blade Runner 2049

 I, Tonya


--

Powered by www.kitware.com<http://www.kitware.com>

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake


Re: [CMake] Packaging dylibs into app bundles

2018-07-19 Thread Stephen McDowell
Hi Harry,

I don't know how useful this will be, but the Instant Meshes application
creates an app bundle that has always worked reliably for me. Looking at
the code, it doesn't appear like there's much custom stuff going on either.
It starts here

https://github.com/wjakob/instant-meshes/blob/011fa44ab72037cbc16535090a63ead41963c1e5/CMakeLists.txt#L151

And there's an if APPLE block below that appears to be the core.

Hope that is useful :) I've never actually done this for any of my own
projects though. And I'm pretty sure them setting the underlying GUI
library and TBB to be static (as opposed to shared) is skirting around the
issue that you are trying to solve (dylib stuff)...

-Stephen

On Thu, Jul 19, 2018, 9:03 AM Harry Mallon 
wrote:

> Hello all,
>
>
>
> Is there a good tutorial/article on getting CMake to package required
> dylibs and frameworks into an app bundle for you on mac. We have a lot of
> custom stuff to do it and it is fragile and breaks a lot.
>
>
>
> Thanks,
>
> Harry
>
> Harry Mallon
>
> Senior Software Engineer
>
> 
>
> T +44 203 7000 989 
>
> 60 Poland Street | London | England | W1F 7NT
> Three Billboards Blade Runner 2049  I, Tonya
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> https://cmake.org/mailman/listinfo/cmake
>
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake


[CMake] Packaging dylibs into app bundles

2018-07-19 Thread Harry Mallon
Hello all,

Is there a good tutorial/article on getting CMake to package required dylibs 
and frameworks into an app bundle for you on mac. We have a lot of custom stuff 
to do it and it is fragile and breaks a lot.

Thanks,
Harry

Harry Mallon

Senior Software Engineer

[http://codex.online/?action=asset=E3D62C3D-A12C-447D-87A5-F36E7C2AA9A4]

T +44 203 7000 989

60 Poland Street | London | England | W1F 7NT

[http://codex.online/?action=asset=6F42BDF2-3C6D-4054-A5D2-277E0E535942]
Three BillboardsBlade Runner 2049I, Tonya


-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake