030793c988
Allow `build.with?` and similar methods to be used during the test phase. The BuildOptions (`build`) are initialized with the `Tab.used_options` unless explicitly overwritten on the command line. So basically `build.with?` works in `def install` and in `test do` as one would naively expect. (For the test, gramatically it should be `built.with?` but who cares) If a formula was installed `--with-python`, now the tests are also run `--with-python`. This enables us to use the `python do ... end` in a meaningful manner. Using `python do ... end` blocks for the tests, because the bot.brew.sh has system python per default and we need to set the PYTHONPATH for the test. Potentially to different values for Python 2.x and 3.x.
82 lines
2.3 KiB
Ruby
82 lines
2.3 KiB
Ruby
require 'formula'
|
|
|
|
class Libxml2 < Formula
|
|
homepage 'http://xmlsoft.org'
|
|
url 'ftp://xmlsoft.org/libxml2/libxml2-2.9.1.tar.gz'
|
|
mirror 'http://xmlsoft.org/sources/libxml2-2.9.1.tar.gz'
|
|
sha256 'fd3c64cb66f2c4ea27e934d275904d92cec494a8e8405613780cbc8a71680fdb'
|
|
|
|
head 'https://git.gnome.org/browse/libxml2', :using => :git
|
|
|
|
keg_only :provided_by_osx
|
|
|
|
option :universal
|
|
|
|
if build.head?
|
|
depends_on :python => :recommended # satisfied by Python 2.6+
|
|
depends_on :autoconf
|
|
depends_on :automake
|
|
depends_on :libtool
|
|
else
|
|
# 2.9.1 cannot build with Python 2.6: https://github.com/mxcl/homebrew/issues/20249
|
|
if MacOS.version <= :snow_leopard
|
|
depends_on :python => ["2.7", :optional]
|
|
else
|
|
depends_on :python => ["2.7", :recommended]
|
|
end
|
|
end
|
|
|
|
fails_with :llvm do
|
|
build 2326
|
|
cause "Undefined symbols when linking"
|
|
end
|
|
|
|
def install
|
|
ENV.universal_binary if build.universal?
|
|
if build.head?
|
|
inreplace 'autogen.sh', 'libtoolize', 'glibtoolize'
|
|
system './autogen.sh'
|
|
end
|
|
|
|
system "./configure", "--disable-dependency-tracking",
|
|
"--prefix=#{prefix}",
|
|
"--without-python"
|
|
system "make"
|
|
ENV.deparallelize
|
|
system "make install"
|
|
|
|
python do
|
|
# This python do block sets up the site-packages in the Cellar.
|
|
cd 'python' do
|
|
# We need to insert our include dir first
|
|
inreplace 'setup.py', 'includes_dir = [', "includes_dir = ['#{include}', '#{MacOS.sdk_path}/usr/include',"
|
|
system python, 'setup.py', "install", "--prefix=#{prefix}"
|
|
end
|
|
# This is keg_only but it makes sense to have the python bindings:
|
|
ohai 'Linking python bindings'
|
|
Dir["#{python.site_packages}/*"].each{ |f|
|
|
path = python.global_site_packages/(Pathname.new(f).basename)
|
|
puts path
|
|
rm path if path.exist?
|
|
ln_s f, path
|
|
}
|
|
end if build.with? 'python'
|
|
end
|
|
|
|
def caveats
|
|
if build.with? 'python'
|
|
<<-EOS.undent
|
|
Even if this formula is keg_only, the python bindings have been linked
|
|
into Homebrew's global site-packages for your convenience.
|
|
#{python.global_site_packages}
|
|
|
|
EOS
|
|
end
|
|
end
|
|
|
|
test do
|
|
python do
|
|
system python, '-c', "import libxml2"
|
|
end
|
|
end
|
|
end
|