View Issue Details

IDProjectCategoryView StatusLast Update
0004681Slicer4Core: Building (CMake, Superbuild)public2019-03-29 21:08
ReporterpieperAssigned Tojcfr 
PriorityhighSeverityblockReproducibilityalways
Status assignedResolutionopen 
Product VersionSlicer 4.11.0 
Target VersionSlicer 4.10.2Fixed in Version 
Summary0004681: No /usr/include on macOS Mojave
Description

It seems that with macOS 10.14 and beyond, Apple is deprecating the use of /usr/include and instead puts the corresponding files in the os-version-specific SDK directories: https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes#3035623

(note that xcode-select --install does not fix this)

This breaks OpenSSL and Python with the errors shown in Additional Information below. Probably other things break too.

A workaround is setting the SDKROOT, like this, which allows the build to succeed:

SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk make -j20

We should find a way to send the correct SDKROOT to the SuperBuild dependencies, e.g. via cmake as a byproduct of setting the CMAKE_OSX_DEPLOYMENT_TARGET.

Additional Information

=======================================================================================
build error compiling OpenSSL

[ 20%] Performing update step for 'zlib'
[ 20%] Performing configure step for 'zlib'
loading initial cache file /q5r/zlib-prefix/tmp/zlib-cache-Debug.cmake
-- Configuring done
-- Generating done
-- Build files have been written to: /q5r/zlib-build
[ 20%] Performing build step for 'zlib'
[100%] Built target zlib
[ 20%] Performing install step for 'zlib'
[100%] Built target zlib
Install the project...
-- Install configuration: "Debug"
-- Up-to-date: /q5r/zlib-install/lib/libzlib.a
-- Up-to-date: /q5r/zlib-install/include/zlib.h
-- Up-to-date: /q5r/zlib-install/include/zconf.h
-- Up-to-date: /q5r/zlib-install/include/zlib_mangle.h
-- Up-to-date: /q5r/zlib-install/include/zlibDllConfig.h
-- Up-to-date: /q5r/zlib-install/doc/zlib-1.2.3/Copyright.txt
[ 40%] Completed 'zlib'
[ 60%] Built target zlib
[ 60%] No configure step for 'OpenSSL'
[ 60%] Performing build step for 'OpenSSL'
making all in crypto...
In file included from cryptlib.c:117:
./cryptlib.h:62:11: fatal error: 'stdlib.h' file not found

include <stdlib.h>

      ^~~~~~~~~~

1 error generated.
make[5]: [cryptlib.o] Error 1
make[4]:
[build_crypto] Error 1
make[3]: [OpenSSL-prefix/src/OpenSSL-stamp/OpenSSL-build] Error 2
make[2]:
[CMakeFiles/OpenSSL.dir/all] Error 2
make[1]: [CMakeFiles/OpenSSL.dir/rule] Error 2
make:
[OpenSSL] Error 2

=======================================================================================
later, after setting SDKROOT and compiling Python

In file included from _configtest.c:1:
/q5r/python-install/include/python2.7/Python.h:33:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
^~~~~
1 error generated.
Traceback (most recent call last):
File "setup.py", line 415, in <module>
setup_package()
File "setup.py", line 407, in setup_package
setup(metadata)
File "/q5r/NUMPY/numpy/distutils/core.py", line 171, in setup
return old_setup(
new_attr)
File "/q5r/python-install/lib/python2.7/site-packages/setuptools-40.8.0.post20190329-py2.7.egg/setuptools/init.py", line 145, in setup
return distutils.core.setup(*attrs)
File "/q5r/python-install/lib/python2.7/distutils/core.py", line 151, in setup
dist.run_commands()
File "/q5r/python-install/lib/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/q5r/python-install/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/q5r/NUMPY/numpy/distutils/command/build.py", line 47, in run
old_build.run(self)
File "/q5r/python-install/lib/python2.7/distutils/command/build.py", line 127, in run
self.run_command(cmd_name)
File "/q5r/python-install/lib/python2.7/distutils/cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "/q5r/python-install/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/q5r/NUMPY/numpy/distutils/command/build_src.py", line 148, in run
self.build_sources()
File "/q5r/NUMPY/numpy/distutils/command/build_src.py", line 165, in build_sources
self.build_extension_sources(ext)
File "/q5r/NUMPY/numpy/distutils/command/build_src.py", line 322, in build_extension_sources
sources = self.generate_sources(sources, ext)
File "/q5r/NUMPY/numpy/distutils/command/build_src.py", line 375, in generate_sources
source = func(extension, build_dir)
File "numpy/core/setup.py", line 423, in generate_config_h
moredefs, ignored = cocache.check_types(config_cmd, ext, build_dir)
File "numpy/core/setup.py", line 47, in check_types
out = check_types(
a, **kw)
File "numpy/core/setup.py", line 281, in check_types
"install {0}-dev|{0}-devel.".format(python))
SystemError: Cannot compile 'Python.h'. Perhaps you need to install python-dev|python-devel.

CMake Error at /Users/pieper/slicer4/latest/Slicer/CMake/ExternalProjectForNonCMakeProject.cmake:104 (message):
NUMPY: build step failed with exit code '1'.

Outputs also captured in /q5r/NUMPY_build_step_output.txt and
/q5r/NUMPY_build_step_error.txt.

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

TagsNo tags attached.

Activities

pieper

pieper

2019-03-29 21:08

administrator   ~0016253

Reminder sent to: jcfr

@jcfr - would be happy to hear your thoughts on this.

Issue History

Date Modified Username Field Change
2019-03-29 21:07 pieper New Issue
2019-03-29 21:07 pieper Status new => assigned
2019-03-29 21:07 pieper Assigned To => jcfr
2019-03-29 21:08 pieper Note Added: 0016253