<HTML><BODY>travis-ci: added fix for mojave mac build<br>    <br>Corrected the minimum version of OSX image on which the target<br>binaries are to be deployed. CMake uses this value for the<br>-mmacosx-version-min flag and to help choose the default SDK.<br>The CMAKE_OSX_DEPLOYMENT_TARGET depends on DARWIN_VERSION:<br>DARWIN_VERSION <= 10.12 -> CMAKE_OSX_DEPLOYMENT_TARGET = 10.6<br>DARWIN_VERSION >= 10.13 -> CMAKE_OSX_DEPLOYMENT_TARGET = 10.14<br><br><span style="white-space: pre-wrap;" data-mce-style="white-space: pre-wrap;">Fixes #3797</span><br>---<br>Travis-CI: <a href="https://travis-ci.org/tarantool/tarantool/builds/496394051" data-mce-href="https://travis-ci.org/tarantool/tarantool/builds/496394051">https://travis-ci.org/tarantool/tarantool/builds/496394051</a> <br>Branch: remotes/origin/avtikhon/gh-3797-fix-target-mojave-mac-build<br><br> cmake/luajit.cmake | 25 ++++++++++++++++++++++---<br> 1 file changed, 22 insertions(+), 3 deletions(-)<br><br>diff --git a/cmake/luajit.cmake b/cmake/luajit.cmake<br>index ea4878a93..d2253a0f9 100644<br>--- a/cmake/luajit.cmake<br>+++ b/cmake/luajit.cmake<br>@@ -194,9 +194,28 @@ macro(luajit_build)<br>         endif()<br>         # Pass deployment target<br>         if ("${CMAKE_OSX_DEPLOYMENT_TARGET}" STREQUAL "")<br>-            # Default to 10.6 since @rpath support is NOT available in<br>-            # earlier versions, needed by AddressSanitizer.<br>-            set (luajit_osx_deployment_target 10.6)<br>+            # DARWIN_VERSION <= 10.12 -> CMAKE_OSX_DEPLOYMENT_TARGET = 10.6<br>+            # DARWIN_VERSION >= 10.13 -> CMAKE_OSX_DEPLOYMENT_TARGET = 10.14<br>+            execute_process(COMMAND sw_vers -productVersion<br>+                OUTPUT_VARIABLE PRODUCT_VERSION)<br>+            message(STATUS "PRODUCT_VERSION=${PRODUCT_VERSION}")<br>+            string(REGEX MATCH "[0-9]+.[0-9]+" DARWIN_VERSION ${PRODUCT_VERSION})<br>+            message(STATUS "DARWIN_VERSION=${DARWIN_VERSION}")<br>+            string(REGEX MATCH "^[0-9]+" MAJOR_VERSION ${DARWIN_VERSION})<br>+            message(STATUS "MAJOR_VERSION=${MAJOR_VERSION}")<br>+            if (MAJOR_VERSION GREATER 10)<br>+                set (luajit_osx_deployment_target 10.14)<br>+            elseif (MAJOR_VERSION LESS 10)<br>+                set (luajit_osx_deployment_target 10.6)<br>+            elseif (MAJOR_VERSION EQUAL 10)<br>+                string(REGEX MATCH "[0-9]+$" MINOR_VERSION ${DARWIN_VERSION})<br>+                message(STATUS "MINOR_VERSION=${MINOR_VERSION}")<br>+                if (MINOR_VERSION GREATER 12)<br>+                    set (luajit_osx_deployment_target 10.14)<br>+                else ()<br>+                    set (luajit_osx_deployment_target 10.6)<br>+                endif ()<br>+            endif ()<br>         else()<br>             set (luajit_osx_deployment_target ${CMAKE_OSX_DEPLOYMENT_TARGET})<br>         endif()<br>-- <br>2.17.1<br><br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
        Среда, 20 февраля 2019, 17:58 +03:00 от Alexander Turenko <alexander.turenko@tarantool.org>:<br>
        <br>
        <div id="">






<div class="js-helper js-readmsg-msg">
        <style type="text/css"></style>
        <div>
                <base target="_self" href="https://e.mail.ru/">
                
            <div id="style_15506747050000000980_BODY">Hi!<br>
<br>
Common notes:<br>
<br>
* Please, squash your patches before send (into 1, 2, several meaningful<br>
  patches, w/o temporary commits).<br>
* Your branch is named<br>
  remotes/origin/avtikhon/gh-3797-fix-mojave-mac-build (with extra<br>
  'remotes/origin/' prefix).<br>
* Please, add me to 'To' or 'CC' header when ask a review from me, so<br>
  I'll not miss it.<br>
* Work hard to fit a commit message header within 50 symbols and a<br>
  commit message within 72 symbols (see our guidelines).<br>
<br>
Other comments are below.<br>
<br>
Feel free to engage me into discussions / investigations if needed.<br>
<br>
WBR, Alexander Turenko.<br>
<br>
On Tue, Feb 19, 2019 at 05:05:35PM +0300, Alexander Tikhonov wrote:<br>
                                 > <br>
> 1. Changed the Travis-CI testing default OSX image from 'xcode9' to 'xcode10.1',<br>
> also added Travis-CI's default 'xcode9.4' image to the '2.1' branch testing.<br>
> 2. Corrected virtualenv setup for OSX images where it is not installed by default.<br>
> 3. Corrected the minimum version of OSX image on which the target binaries are to be<br>
> deployed. CMake uses this value for the -mmacosx-version-min flag and to help choose the<br>
> default SDK. The CMAKE_OSX_DEPLOYMENT_TARGET depends on DARWIN_VERSION:<br>
> DARWIN_VERSION <= 10.12 -> CMAKE_OSX_DEPLOYMENT_TARGET = 10.6<br>
> DARWIN_VERSION >= 10.13 -> CMAKE_OSX_DEPLOYMENT_TARGET = 10.14<br>
> <br>
> Closes #3797<br>
> ---<br>
> Travis-CI:  <a href="https://travis-ci.org/tarantool/tarantool/builds/495448673" target="_blank">https://travis-ci.org/tarantool/tarantool/builds/495448673</a>  <br>
> Travis-CI(checked all OSX):  <a href="https://travis-ci.org/tarantool/tarantool/builds/495415195" target="_blank">https://travis-ci.org/tarantool/tarantool/builds/495415195</a>  <br>
> Branch:  <a href="https://github.com/tarantool/tarantool/tree/remotes/origin/avtikhon/gh-3797-fix-mojave-mac-build" target="_blank">https://github.com/tarantool/tarantool/tree/remotes/origin/avtikhon/gh-3797-fix-mojave-mac-build</a><br>
> <br>
> diff --git a/.travis.mk b/.travis.mk<br>
> index edd94cd7d..181bab438 100644<br>
> --- a/.travis.mk<br>
> +++ b/.travis.mk<br>
> @@ -47,6 +47,10 @@ test_ubuntu: deps_ubuntu<br>
>  deps_osx:<br>
>      brew update<br>
>      brew install openssl readline curl icu4c --force<br>
> +    virtualenv -h >/dev/null 2>&1 || \<br>
> +        ( pip -h >/dev/null 2>&1 || ( curl --silent --show-error --retry 5 <a href="https://bootstrap.pypa.io/get-pip.py" target="_blank">https://bootstrap.pypa.io/get-pip.py</a> | python && pip --version ) && \<br>
> +        brew install pyenv-virtualenv --force && \<br>
> +        pip install virtualenv )<br>
      <br>
It seems that we install pip twice: here and in test_osx.<br>
<br>
I wonder whether all problems are resolved if we just add<br>
pyenv-virtualenv into 'brew install' command in deps_osx?<br>
<br>
>  <br>
>  test_osx: deps_osx<br>
>      cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfoWError ${CMAKE_EXTRA_PARAMS}<br>
> diff --git a/.travis.yml b/.travis.yml<br>
> index ffe2e8247..e03bd3185 100644<br>
> --- a/.travis.yml<br>
> +++ b/.travis.yml<br>
> @@ -8,7 +8,7 @@ language: cpp<br>
>  os: linux<br>
>  compiler: gcc<br>
>  <br>
> -osx_image: xcode9<br>
> +osx_image: xcode10.1<br>
>  <br>
>  cache:<br>
>      directories:<br>
> @@ -27,6 +27,11 @@ jobs:<br>
>        - name: RelWithDebInfoWError build + test (OS X)<br>
>          env: TARGET=test<br>
>          os: osx<br>
> +      - name: RelWithDebInfoWError build + test (OS X 9.4)<br>
> +        env: TARGET=test<br>
> +        os: osx<br>
> +        osx_image: xcode9.4<br>
> +        if: branch = "2.1"<br>
<br>
9.4 is not OS X version, it is xcode version. Proposed name:<br>
<br>
RelWithDebInfoWError build + test (OS X 10.13 High Sierra)<br>
<br>
See the following links to match os_image values into OS X versions and<br>
names:<br>
<br>
<a href="https://docs.travis-ci.com/user/reference/osx/#macos-version" target="_blank">https://docs.travis-ci.com/user/reference/osx/#macos-version</a><br>
<a href="https://en.wikipedia.org/wiki/MacOS_version_history#toc" target="_blank">https://en.wikipedia.org/wiki/MacOS_version_history#toc</a><br>
<br>
Now I see both versions are High Sierra. I don't see a reason to have<br>
two target of the same Mac OS versions (even despite different xcode<br>
versions).<br>
<br>
Also consider: Travis-CI added Mojave builds:<br>
<a href="https://blog.travis-ci.com/2019-02-12-xcode-10-2-beta-2-is-now-available" target="_blank">https://blog.travis-ci.com/2019-02-12-xcode-10-2-beta-2-is-now-available</a><br>
<br>
Also I still think fix cmakes for Mojave and tweak travis targets should<br>
be in the separate commits.<br>
<br>
>        - name: Debug build + test + coverage (Linux, gcc)<br>
>          env: TARGET=coverage<br>
>        - name: LTO build + test (Linux, gcc)<br>
> diff --git a/cmake/luajit.cmake b/cmake/luajit.cmake<br>
> index ea4878a93..d2253a0f9 100644<br>
> --- a/cmake/luajit.cmake<br>
> +++ b/cmake/luajit.cmake<br>
> @@ -194,9 +194,28 @@ macro(luajit_build)<br>
>          endif()<br>
>          # Pass deployment target<br>
>          if ("${CMAKE_OSX_DEPLOYMENT_TARGET}" STREQUAL "")<br>
> -            # Default to 10.6 since @rpath support is NOT available in<br>
> -            # earlier versions, needed by AddressSanitizer.<br>
> -            set (luajit_osx_deployment_target 10.6)<br>
<br>
Since we set 10.6 for some targets, the comment seems to be still<br>
actual. I don't think we should remove it.<br>
<br>
> +            # DARWIN_VERSION <= 10.12 -> CMAKE_OSX_DEPLOYMENT_TARGET = 10.6<br>
> +            # DARWIN_VERSION >= 10.13 -> CMAKE_OSX_DEPLOYMENT_TARGET = 10.14<br>
> +            execute_process(COMMAND sw_vers -productVersion<br>
> +                OUTPUT_VARIABLE PRODUCT_VERSION)<br>
> +            message(STATUS "PRODUCT_VERSION=${PRODUCT_VERSION}")<br>
> +            string(REGEX MATCH "[0-9]+.[0-9]+" DARWIN_VERSION ${PRODUCT_VERSION})<br>
> +            message(STATUS "DARWIN_VERSION=${DARWIN_VERSION}")<br>
> +            string(REGEX MATCH "^[0-9]+" MAJOR_VERSION ${DARWIN_VERSION})<br>
> +            message(STATUS "MAJOR_VERSION=${MAJOR_VERSION}")<br>
> +            if (MAJOR_VERSION GREATER 10)<br>
> +                set (luajit_osx_deployment_target 10.14)<br>
> +            elseif (MAJOR_VERSION LESS 10)<br>
> +                set (luajit_osx_deployment_target 10.6)<br>
> +            elseif (MAJOR_VERSION EQUAL 10)<br>
> +                string(REGEX MATCH "[0-9]+$" MINOR_VERSION ${DARWIN_VERSION})<br>
> +                message(STATUS "MINOR_VERSION=${MINOR_VERSION}")<br>
> +                if (MINOR_VERSION GREATER 12)<br>
> +                    set (luajit_osx_deployment_target 10.14)<br>
> +                else ()<br>
> +                    set (luajit_osx_deployment_target 10.6)<br>
> +                endif ()<br>
> +            endif ()<br>
<br>
Can we use VERSION_LESS operation to simplify the code?<br>
<br>
I think only the first 'message' directive is useful, others are<br>
redundant.<br>
<br>
Why the edge is between 10.12-10.13, while a problem we trying to solve<br>
appears only on 10.14 (Mojave)?<br>
<br>
>          else()<br>
>              set (luajit_osx_deployment_target ${CMAKE_OSX_DEPLOYMENT_TARGET})<br>
>          endif()<br>
> <br>
> <br>
> -- <br>
> Alexander Tikhonov<br>
<br>
</div>
            
        
                <base target="_self" href="https://e.mail.ru/">
        </div>

        
</div>


</div>
</blockquote>
<br>
<br>-- <br>Alexander Tikhonov<br></BODY></HTML>