v8_3_16_14: fix OS X build

Issues addressed:
- xcode build failed with
    ... was built for newer OSX version (10.10) than being linked (10.5)
  fixed by setting GYP mac deployment target to the nix value
- a gyp bug when SDKROOT is not set (and removed an orphaned gyp patch
- path to python in generated gyp-mac-tool
- noisy build due to static assert warnings, by silencing warnings
- use of system xcodebuild and libtool replaced by darwin.cctools
This commit is contained in:
Robert Vollmert 2017-06-22 21:18:47 +02:00
parent 2da82a1d19
commit c3da83cd40
4 changed files with 18 additions and 68 deletions

View file

@ -1,4 +1,4 @@
{ stdenv, lib, fetchurl, gyp, readline, python, which, icu, utillinux}:
{ stdenv, lib, fetchurl, gyp, readline, python, which, icu, utillinux, cctools }:
assert readline != null;
@ -24,9 +24,7 @@ stdenv.mkDerivation rec {
'';
configurePhase = stdenv.lib.optionalString stdenv.isDarwin ''
ln -s /usr/bin/xcodebuild $TMPDIR
ln -s /usr/bin/libtool $TMPDIR
export PATH=$TMPDIR:$PATH
export GYP_DEFINES="mac_deployment_target=$MACOSX_DEPLOYMENT_TARGET"
'' + ''
PYTHONPATH="tools/generate_shim_headers:$PYTHONPATH" \
${gyp}/bin/gyp \
@ -41,12 +39,16 @@ stdenv.mkDerivation rec {
${lib.optionalString armHardFloat "-Dv8_use_arm_eabi_hardfloat=true"} \
--depth=. -Ibuild/standalone.gypi \
build/all.gyp
'' + stdenv.lib.optionalString stdenv.isDarwin ''
sed -i 's@/usr/bin/env python@${python}/bin/python@g' out/gyp-mac-tool
'';
nativeBuildInputs = [ which ];
buildInputs = [ readline python icu ] ++ lib.optional stdenv.isLinux utillinux;
buildInputs = [ readline python icu ]
++ lib.optional stdenv.isLinux utillinux
++ lib.optional stdenv.isDarwin cctools;
NIX_CFLAGS_COMPILE = "-Wno-error";
NIX_CFLAGS_COMPILE = "-Wno-error -w";
buildFlags = [
"-C out"

View file

@ -1,66 +1,12 @@
Index: pylib/gyp/xcode_emulation.py
diff --git a/pylib/gyp/xcode_emulation.py b/pylib/gyp/xcode_emulation.py
index b2aab986a427d5285d70558bf97f0a42bfe1556e..20592c73fae660009aac621097cf3c4fb61d6cb6 100644
--- a/pylib/gyp/xcode_emulation.py
+++ b/pylib/gyp/xcode_emulation.py
@@ -236,8 +236,14 @@ class XcodeSettings(object):
if sdk_root.startswith('/'):
return sdk_root
if sdk_root not in XcodeSettings._sdk_path_cache:
- XcodeSettings._sdk_path_cache[sdk_root] = self._GetSdkVersionInfoItem(
- sdk_root, 'Path')
+ try:
+ XcodeSettings._sdk_path_cache[sdk_root] = self._GetSdkVersionInfoItem(
+ sdk_root, 'Path')
+ except:
+ # if this fails it's because xcodebuild failed, which means
+ # the user is probably on a CLT-only system, where there
+ # is no valid SDK root
+ XcodeSettings._sdk_path_cache[sdk_root] = None
return XcodeSettings._sdk_path_cache[sdk_root]
def _AppendPlatformVersionMinFlags(self, lst):
@@ -340,10 +346,11 @@ class XcodeSettings(object):
cflags += self._Settings().get('WARNING_CFLAGS', [])
- config = self.spec['configurations'][self.configname]
- framework_dirs = config.get('mac_framework_dirs', [])
- for directory in framework_dirs:
- cflags.append('-F' + directory.replace('$(SDKROOT)', sdk_root))
@@ -1470,7 +1470,8 @@
sdk_root = xcode_settings._SdkRoot(configuration)
if not sdk_root:
sdk_root = xcode_settings._XcodeSdkPath('')
- env['SDKROOT'] = sdk_root
+ if sdk_root:
+ config = self.spec['configurations'][self.configname]
+ framework_dirs = config.get('mac_framework_dirs', [])
+ for directory in framework_dirs:
+ cflags.append('-F' + directory.replace('$(SDKROOT)', sdk_root))
+ env['SDKROOT'] = sdk_root
self.configname = None
return cflags
@@ -573,10 +580,11 @@ class XcodeSettings(object):
for rpath in self._Settings().get('LD_RUNPATH_SEARCH_PATHS', []):
ldflags.append('-Wl,-rpath,' + rpath)
- config = self.spec['configurations'][self.configname]
- framework_dirs = config.get('mac_framework_dirs', [])
- for directory in framework_dirs:
- ldflags.append('-F' + directory.replace('$(SDKROOT)', self._SdkPath()))
+ if self._SdkPath():
+ config = self.spec['configurations'][self.configname]
+ framework_dirs = config.get('mac_framework_dirs', [])
+ for directory in framework_dirs:
+ ldflags.append('-F' + directory.replace('$(SDKROOT)', self._SdkPath()))
self.configname = None
return ldflags
@@ -701,7 +709,10 @@ class XcodeSettings(object):
l = '-l' + m.group(1)
else:
l = library
- return l.replace('$(SDKROOT)', self._SdkPath(config_name))
+ if self._SdkPath():
+ return l.replace('$(SDKROOT)', self._SdkPath(config_name))
+ else:
+ return l
def AdjustLibraries(self, libraries, config_name=None):
"""Transforms entries like 'Cocoa.framework' in libraries into entries like
if not additional_settings:
additional_settings = {}

View file

@ -10300,6 +10300,7 @@ with pkgs;
v8_3_16_14 = callPackage ../development/libraries/v8/3.16.14.nix {
inherit (python2Packages) python gyp;
cctools = darwin.cctools;
};
v8_3_24_10 = callPackage ../development/libraries/v8/3.24.10.nix {

View file

@ -11915,6 +11915,7 @@ in {
patches = optionals pkgs.stdenv.isDarwin [
../development/python-modules/gyp/no-darwin-cflags.patch
../development/python-modules/gyp/no-xcode.patch
];
disabled = isPy3k;