View Single Post
Old 03-23-2017, 09:59 AM   #27
KevinH
Sigil Developer
KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.
 
Posts: 8,937
Karma: 6361444
Join Date: Nov 2009
Device: many
Just so you know, Apple really messed up on this ... their command line tools add a /usr/include/sys/random.h that defines getentropy but it is not protected by any of the MacOSX availability macros. So any header based test for existence of getentropy will pass in "configure" even though it did not exist prior to OSX 10.12 (Sierra)

Then to top it off, Apple in their infinite stupidity has defined some weak symbols in Mac OSX 10.11 that include the following:

Code:
'$ld$weak$os10.11$_basename_r', 
'$ld$weak$os10.11$_clock_getres', 
'$ld$weak$os10.11$_clock_gettime', 
'$ld$weak$os10.11$_clock_settime', 
'$ld$weak$os10.11$_dirname_r', 
'$ld$weak$os10.11$_getentropy', 
'$ld$weak$os10.11$_mkostemp',
'$ld$weak$os10.11$_mkostemps',
Which means that any linking based test for availability of specific functions done by any "configure" tests will pass even though the damn function is not actually available until Mac OSX 10.12

Setting the MACOSX_DEPLOYMENT_TARGET=10.9 (and none of these exist in 10.9) and running Python configure will say that **all** of these will exist.

So if we use XCode 8 and build on Sierra, the resulting binary will ONLY work on Sierra if it uses any of these specific functions.

That really sucks...

So I have to modify the Python "configure"/"configure.ac" to hard code these to undefined to get something to build on 10.12 using XCode 8 and run on 10.9.

That is doable for Python but not doable for Qt given its huge configuration complexity. I just have to hope and pray that Qt does not make use of any of these new "symbols" during the build.

I should have kept an older Mac OSX 10.9 build machine around but I had faith the Apple would handle XCode properly to maintain the ability to build things backwards compatible.

Sad ...

KevinH


Quote:
Originally Posted by KevinH View Post
The official build will only work on OSX 12 (Sierra) by mistake.

Just got access to a OSX 10.11.6 and it SystemB library is missing a symbol getentropy that should not be needed by my official build since it was configured for OSX 10.9 and later.

So give me a day or two and I will rebuild the Mac release to actually not use that missing symbol (it is used in Python). The problem is that the Python 3.5 configure switch is NOT MACOSX_DEPLOYMENT_TARGET aware and so decides to use features that do not exist in 10.9, 10.10, and 10.11 that do exist in 10.12 (which is what I use to build the release).

So stay tuned for a new Mac Package that will work all the way back to 10.9

Sorry about that.

KevinH
KevinH is offline   Reply With Quote