Am 05.06.2016 um 11:13 schrieb Georg Baum <georg.b...@post.rwth-aachen.de>:
> 
> Scott Kostyshak wrote:
> 
>> On Sat, Jun 04, 2016 at 07:55:28PM +0200, Stephan Witt wrote:
>>> 
>>>> Am 04.06.2016 um 10:15 schrieb Liviu Andronic <landronim...@gmail.com>:
>>>> 
>>>> If moving to cmake definitively would imply losing version suffix
>>>> functionality, this would be a big issue for my packaging arrangements
>>>> for Ubuntu builds.
>>> 
>>> +1
>>> 
>>> On Mac the version suffix is essential too.
>> 
>> I just want to make sure you saw Kornel's reply to that. I don't know if
>> it addresses your needs or not.
> 
> IMHO it does. Livius builds could be done using their current names if the 
> boolean switch is replaced by a string version, which is easy to do as 
> Kornel wrote.

Yes. I think so.

> 
>>> I just tried to build a Mac application with cmake and failed.
>> 
>> What was the error?
>> 
>>> It looks like a lot of work or to learn to make this working.
>> 
>> This might be a reason to stop this discussion here. You already do a
>> huge favor by taking care of the Mac builds. It would not make sense to
>> make it more difficult. I was hoping that in the long-run it would
>> actually be easier for you, but perhaps the transition would be too
>> frustrating and time-consuming.
> 
> We should not yet stop the discussion. We need more information about the 
> problems.

I didn’t want to put the discussion on hold. I hadn’t the time to write
a mail with enough details at the moment.

I use cmake to create Xcode projects for debugging purpose. So, it’s possible
to create a working binary with cmake. To do the packaging with cmake is another
story and - at least on Mac - not done with LyX yet. No surprise it’s not
working though.

The packaging is done in three steps with autotools + scripts:
1. make install with the appropriate directory structure for Mac
2. adding the 3rd party components required to run LyX
3. create a mountable disk image and put the LyX app and some
decorative stuff there and compress the final result.

To get the first impression how difficult it is with cmake I tried two ways:
1. standard cmake install (the naive way) results in a Linux like directory
structure without an usable application.
2. LYX_DMG=ON cmake install (marked as experimental) is better as it copies
the components of LyX to the appropriate directory structure for Mac.
Therefore the 2nd one should be the default on Mac.

Nevertheless it doesn’t work ATM because of the type of the dependency on Qt.
This is not easy to explain - but I’ll try it.

The runtime linker knows of the usual LD_LIBRARY_PATH mechanism like Unix.
An more secure and more advanced approach is the modified RPATH mechanism.
For system libraries one uses hard coded library references.

The problem is the RPATH mechanism. Qt frameworks (a collection of header
files, shared libraries and documentation) are build with these. To distribute
these frameworks they have to be placed on a fixed location for system wide use
or inside the LyX application as so called private frameworks. LyX is using
the latter and I cannot see why this should be changed. The cmake build
for LyX needs to be extended to copy the Qt libraries into the LyX application
in or before the „fixup_bundle“ phase of the packaging step. I’m almost sure
this can be done in a reliable and clean way with cmake. That’s why I said
there is something to learn and to spend some time with.

Finally I want to add the concrete error log - it ends with:
===============
-- fixup_bundle: preparing…
...
-- warning: gp_resolved_file_type non-absolute file 
'@rpath/QtCore.framework/Versions/5/QtCore' returning type 'other' -- possibly 
incorrect
-- 
warning: cannot resolve item '@rpath/QtCore.framework/Versions/5/QtCore'

  possible problems:
    need more directories?
    need to use InstallRequiredSystemLibraries?
    run in install tree instead of build tree?

warning: target '@rpath/QtGui.framework/Versions/5/QtGui' is not absolute...
warning: target '@rpath/QtGui.framework/Versions/5/QtGui' does not exist...
CMake Error at /opt/local/share/cmake-3.4/Modules/GetPrerequisites.cmake:800 
(message):
  
  
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool
  failed: 1

  error:
  
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool:
  can't open file: @rpath/QtGui.framework/Versions/5/QtGui (No such file or
  directory)

Call Stack (most recent call first):
  /opt/local/share/cmake-3.4/Modules/GetPrerequisites.cmake:925 
(get_prerequisites)
  /opt/local/share/cmake-3.4/Modules/BundleUtilities.cmake:555 
(get_prerequisites)
  /opt/local/share/cmake-3.4/Modules/BundleUtilities.cmake:804 (get_bundle_keys)
  development/cmake/post_install/cmake_install.cmake:52 (fixup_bundle)
  cmake_install.cmake:2703 (include)
  


make: *** [install_buildpart_0] Error 1

================

I tried to find a log file of the build but didn’t find any.

Stephan

Reply via email to