Compiling and using master on macOS

Stephan Witt st.witt at gmx.net
Wed Jul 8 06:28:30 UTC 2020


Am 07.07.2020 um 07:35 schrieb Daniel <xracoonx at gmx.de>:
> 
> On 2020-07-07 07:30, Daniel wrote:
>> On 2020-07-07 00:24, Stephan Witt wrote:
>>> Am 06.07.2020 um 09:59 schrieb Daniel <xracoonx at gmx.de>:
>>>> 
>>>> On 2020-03-15 21:37, Stephan Witt wrote:
>>>>> Am 15.03.2020 um 17:16 schrieb Daniel <xracoonx at gmx.de>:
>>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>> I am about to try compiling and using master on macOS. I just has a look at INSTALL.MacOSX. It mentions Qt version 4. That seems a bit outdated. But I guess that I am looking at the latest guide to compile on macOS, right?
>>>>> Yes, it’s outdated. It should work with Qt4 - but Qt4 cannot be used on recent macOS.
>>>>> Basically I’m using the script LyX-Mac-binary-release.sh in development folder. That’s much easier than other options, IMO.
>>>>> First step is to install Xcode and the automake and/or cmake utilities. This can be done with macports or homebrew. I’m using macports.
>>>>> Second step is to get Qt5 - as source or binary distribution. I’m using the source tarball and build Qt5 myself.
>>>>> Optional components are the spell checker and libmagic frameworks.
>>>>> Finally I start development/LyX-Mac-binary-release.sh with
>>>>> --enable-cxx11
>>>>> --with-qt-dir=/path/to/qt5
>>>>> Stephan
>>>> 
>>>> Thanks. Finally came around trying it on macOS. I take it one has to run the last command with sh, right? So, from the lyx directory (in the lyxgit directory) I execute
>>>> 
>>>> sh development/LyX-Mac-binary-release.sh --enable-cxx11 --with-qt-dir=/Users/<username>/Qt/5.9.9
>>>> 
>>>> (where I replace <username> by my macOS user name. Unfortunately, I get the following:
>>>> 
>>>> : command not found-binary-release.sh: line 2:
>>>> : command not found-binary-release.sh: line 4:
>>>> : command not found-binary-release.sh: line 9:
>>>> : command not found-binary-release.sh: line 19:
>>>> : command not found-binary-release.sh: line 23:
>>>> : command not found-binary-release.sh: line 27:
>>>> ': not a valid identifiery-release.sh: line 28: unset: `LD_LIBRARY_PATH
>>>> : command not found-binary-release.sh: line 29:
>>>> : command not found-binary-release.sh: line 44:
>>>> : command not found-binary-release.sh: line 49:
>>>> development/LyX-Mac-binary-release.sh: line 53: syntax error near unexpected tok'n `in
>>>> 'evelopment/LyX-Mac-binary-release.sh: line 53: `case "${QtVersion}:${QtAPI}" in
>>>> 
>>>> By the way, if finally successful, where will this put the LyX.app?
>>>> 
>>>> Daniel
>>> 
>>> I’ve made a protocol of the steps I took to build the package on a new system. See the attached log. Probably the crucial thing is the mklyx-2.3.4.3.sh script.
>>> 
>>> I’m used to configure and build LyX out of source. I have a working directory with one or more versions of LyX source code and a directory lyx-build for the results. For Qt I have a source directory and an install target in parallel, the build directory is in lyx-build.
>>> 
>>> $ ls /Users/Shared/LyX
>>> lyx-2.3.4.3 (source)
>>> lyx-2.3.5.2 (source)
>>> lyx-build (directory)
>>> qt-5.9.9-frameworks-cocoa-x86_64  (QTDIR for 5.9.9)
>>> qt-everywhere-opensource-src-5.9.9 (source)
>>> 
>>> The lyx-build contains the build directory, the installed package (LyX.app) and the resulting disk image.
>>> 
>>> $ ls /Users/Shared/LyX/
>>> LyX-2.3.4.3+qt5-x86_64-cocoa.dmg (disk image)
>>> LyX-2.3.4.3.app (working app)
>>> LyX-2.3.4.3.build (binaries)
>>> LyX-2.3.5.2+qt5-x86_64-cocoa.dmg (disk image)
>>> LyX-2.3.5.2.app (working app)
>>> LyX-2.3.5.2.build (binaries)
>>> qt-5.9.9-build-x86_64 (binaries)
>>> 
>>> The /bin/sh on a Mac is in fact a bash, IMO.
>>> 
>>> Stephan
>>> 
>>> 
>> I am using git to download the lyx source and qt installer. But the steps should be the same except for the unpacking and setting my own directories, right?
>> Also what does
>> osascript -e 'tell application "Finder" to display notification "LyX is great stuff"'
>> do? It looks strange.
>> Daniel
> 
> Okay, I guess it can't be the same because there is a specific LyX version mentioned (2.3.4.3). What would I use if I want to compile from git (master)?

Yes, that’s true - this is the build from the shipped tar file for 2.3.4.3. But it works for git clones too.

The difference to master is the name of the directory and this is your choice. I’m using „lyx“ for it. I have another git clone for stable named „lyx-2.3.x“.

The resulting applications are placed in lyx-build and named according to the AC_INIT macro in configure.ac (e.g. LyX,2.4.0dev => LyX-2.4.0dev.app).

In case you want to do the single steps w/o the build script you may try the following:

1. create a dedicated build dir - e.g. lyx-build/master

2. create or update the configure script - run autogen.sh in your git checkout (in place)

3. prepare your environment variables

export CPPFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -arch x86_64 -mmacosx-version-min=10.10"
export CXXFLAGS=-std=c++11
export CPPFLAGS="${CPPFLAGS}"
export LDFLAGS="${CPPFLAGS}"

The path names are subject to change. Depending on Apples choice where to place the SDKs.

4. run configure with your build directory as working dir (with explicit given relative path name)

(cd lyx-build/master;sh ../../lyx/configure --enable-warnings --enable-optimization=-Os --with-x=no --disable-stdlib-debug --with-qt-dir=/Users/Shared/LyX/qt-5.9.9-frameworks-cocoa-x86_64 --prefix=/path/to/application-directory/application-name)

This should produce multiple lines of „checking for something“ and finally

Configuration
  Host type:               x86_64-apple-darwin18.7.0
  Special build flags:      build=development std-regex warnings assertions
  Bundled libraries:        boost mythes
  C++ Compiler:            g++ (11.0.0)
  C++ Compiler flags:       -Wall -Wextra -g -Os -std=c++14  -Wno-deprecated-register
  C++ Compiler user flags:  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -arch x86_64 -mmacosx-version-min=10.10 -std=c++14  -std=c++11
  Linker flags:            
  Linker user flags:       -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -arch x86_64 -mmacosx-version-min=10.10
  Qt Frontend:
      Qt version:	   5.9.9
  Packaging:               macosx
  LyX binary dir:          /path/to/application-directory/application-name/Contents/MacOS
  LyX files dir:           /path/to/application-directory/application-name/Contents/Resources

=== The following minor problems have been detected by configure.
=== Please check the messages below before running 'make'.
=== (see the section 'Problems' in the INSTALL file)

== cannot find magic.h. Please check that the libmagic library
   is correctly installed on your system.
   Falling back to builtin file format detection.


Configuration of LyX was successful.
Type 'make' to compile the program,
and then 'make install' to install it.

5. run make and make install

Note: this creates an application ready to use on your system. You cannot distribute it - this will not work because of the hard coded path names in your application.

Stephan


More information about the lyx-devel mailing list