aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Formula/node.rb90
1 files changed, 83 insertions, 7 deletions
diff --git a/Library/Formula/node.rb b/Library/Formula/node.rb
index 805278203..7f2a27d13 100644
--- a/Library/Formula/node.rb
+++ b/Library/Formula/node.rb
@@ -63,14 +63,10 @@ class Node < Formula
build 2326
end
- def install
- # Lie to `xcode-select` for now to work around a GYP bug that affects
- # CLT-only systems:
- #
- # http://code.google.com/p/gyp/issues/detail?id=292
- # joyent/node#3681
- ENV['DEVELOPER_DIR'] = MacOS.dev_tools_path unless MacOS::Xcode.installed?
+ # fixes gyp's detection of system paths on CLT-only systems
+ def patches; DATA; end
+ def install
args = %W{--prefix=#{prefix}}
if build.with? 'shared-libs'
@@ -129,3 +125,83 @@ class Node < Formula
end
end
end
+
+__END__
+diff --git a/tools/gyp/pylib/gyp/xcode_emulation.py b/tools/gyp/pylib/gyp/xcode_emulation.py
+index 806f92b..5256856 100644
+--- a/tools/gyp/pylib/gyp/xcode_emulation.py
++++ b/tools/gyp/pylib/gyp/xcode_emulation.py
+@@ -224,8 +224,7 @@ class XcodeSettings(object):
+
+ def _GetSdkVersionInfoItem(self, sdk, infoitem):
+ job = subprocess.Popen(['xcodebuild', '-version', '-sdk', sdk, infoitem],
+- stdout=subprocess.PIPE,
+- stderr=subprocess.STDOUT)
++ stdout=subprocess.PIPE)
+ out = job.communicate()[0]
+ if job.returncode != 0:
+ sys.stderr.write(out + '\n')
+@@ -234,9 +233,17 @@ class XcodeSettings(object):
+
+ def _SdkPath(self):
+ sdk_root = self.GetPerTargetSetting('SDKROOT', default='macosx')
++ 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):
+@@ -339,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))
++ if 'SDKROOT' in self._Settings():
++ 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))
+
+ self.configname = None
+ return cflags
+@@ -572,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 'SDKROOT' in self._Settings():
++ 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
+@@ -700,7 +709,10 @@ class XcodeSettings(object):
+ l = '-l' + m.group(1)
+ else:
+ l = library
+- return l.replace('$(SDKROOT)', self._SdkPath())
++ if self._SdkPath():
++ return l.replace('$(SDKROOT)', self._SdkPath())
++ else:
++ return l
+
+ def AdjustLibraries(self, libraries):
+ """Transforms entries like 'Cocoa.framework' in libraries into entries like