diff options
| author | samueljohn | 2012-07-20 17:55:06 +0200 |
|---|---|---|
| committer | Adam Vandenberg | 2012-08-10 10:28:28 -0700 |
| commit | 202119e0e3ee20c72940be5ff38bc36d3e331d41 (patch) | |
| tree | 36ecd5cb16bedaac513c10d2f0142f716d2487a0 /Library | |
| parent | e2c0d60ac766d5bb03bbb9a126e08c0ca97494b8 (diff) | |
| download | homebrew-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.rb | 30 |
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 |
