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:
parent
1c4f04e85e
commit
782f530b1d
1 changed files with 30 additions and 0 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue