aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorsamueljohn2012-07-20 17:55:06 +0200
committerAdam Vandenberg2012-08-10 10:28:28 -0700
commit202119e0e3ee20c72940be5ff38bc36d3e331d41 (patch)
tree36ecd5cb16bedaac513c10d2f0142f716d2487a0 /Library
parente2c0d60ac766d5bb03bbb9a126e08c0ca97494b8 (diff)
downloadhomebrew-202119e0e3ee20c72940be5ff38bc36d3e331d41.tar.bz2
libxml2: Fix Python bindings for Xcode-only
- Since libxml2 is a dupe, we have to assure to link against it and not system's python. - Unless the CLT are present, apply a patch for the linking step. - Help libxml2/python/setup.py to find libiconv headers. Closes #13511. Signed-off-by: Adam Vandenberg <flangy@gmail.com>
Diffstat (limited to 'Library')
-rw-r--r--Library/Formula/libxml2.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/Library/Formula/libxml2.rb b/Library/Formula/libxml2.rb
index 31053a0dd..dcc0afcf9 100644
--- a/Library/Formula/libxml2.rb
+++ b/Library/Formula/libxml2.rb
@@ -19,6 +19,15 @@ class Libxml2 < Formula
]
end
+ def patches
+ # Libxml2 is a dupe and now we see why that's a bad idea.
+ # Python's distutils are so smart to remember the LD command from
+ # when python was built and therefore finds the libxml2 in Xcode first.
+ # The LDFLAGS don't help, because python puts them _after_ the remembered
+ # flags.
+ DATA unless MacOS::CLT.installed?
+ end
+
def install
ENV.universal_binary if ARGV.build_universal?
@@ -41,6 +50,11 @@ class Libxml2 < Formula
ENV.append 'CFLAGS', arch_flags
ENV.append 'LDFLAGS', arch_flags
+ unless MacOS::CLT.installed?
+ # For Xcode-only systems, the libiconv headers are inside of Xcode.
+ # We can replace /opt/include with our path to achieve that
+ inreplace 'setup.py', '"/opt/include",', "\"#{MacOS.sdk_path}/usr/include\","
+ end
system "python", "setup.py", "install_lib",
"--install-dir=#{python_lib}"
end
@@ -51,3 +65,19 @@ class Libxml2 < Formula
"python" + `python -c 'import sys;print(sys.version[:3])'`.strip
end
end
+
+__END__
+diff --git a/python/setup.py.in b/python/setup.py.in
+index b985979..d6ccf2e 100755
+--- a/python/setup.py.in
++++ b/python/setup.py.in
+@@ -13,6 +13,9 @@ ROOT = r'@prefix@'
+ # Thread-enabled libxml2
+ with_threads = @WITH_THREADS@
+
++import distutils.sysconfig as sc
++sc.get_config_vars()['LDSHARED']=os.environ['LD'] + ' -bundle -undefined dynamic_lookup -L' + ROOT + '/lib ' + os.environ['LDFLAGS']
++
+ # If this flag is set (windows only),
+ # a private copy of the dlls are included in the package.
+ # If this flag is not set, the libxml2 and libxslt