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 Homebrew/homebrew#13511.

Signed-off-by: Adam Vandenberg <flangy@gmail.com>
This commit is contained in:
samueljohn 2012-07-20 17:55:06 +02:00 committed by Adam Vandenberg
parent 1c4f04e85e
commit 782f530b1d

View file

@ -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