1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
  | 
require 'formula'
class Libvirt < Formula
  homepage 'http://www.libvirt.org'
  url 'http://libvirt.org/sources/libvirt-1.1.3.tar.gz'
  sha256 'af83e65b4b26520662ddd183c1358be0d05138dba3e66745419f06441eff5a7c'
  option 'without-libvirtd', 'Build only the virsh client and development libraries'
  depends_on 'pkg-config' => :build
  depends_on 'gnutls'
  depends_on 'libgcrypt'
  depends_on 'yajl'
  depends_on :python => :recommended
  if MacOS.version <= :leopard
    # Definitely needed on Leopard, but not on Snow Leopard.
    depends_on "readline"
    depends_on "libxml2"
  end
  fails_with :llvm do
    build 2326
    cause "Undefined symbols when linking"
  end
  def patches
    {
      :p1 => [
        # getsockopt() on Mac OS X requires using SOL_LOCAL instead of
        # SOL_SOCKET for LOCAL_PEERCRED. This corrects that for Mac OS X
        "http://libvirt.org/git/?p=libvirt.git;a=commitdiff_plain;h=5a468b38b6b9ac66c1db5d8ed5d5a122a9cf01cd",
        # sysctlbyname() requires a different name on Mac OS X for CPU
        # frequency than FreeBSD does. This patch corrects the name.
        "http://libvirt.org/git/?p=libvirt.git;a=commitdiff_plain;h=2d74822a9eb4856c7f5216bb92bcb76630660f72",
        # Fix Snow Leopard and lower broken by the 1st patch
        "http://libvirt.org/git/?p=libvirt.git;a=commitdiff_plain;h=2f776d49796fe34dcf5a876f4c4e34f79b66f705",
      ]
    }
  end
  def install
    args = ["--prefix=#{prefix}",
            "--localstatedir=#{var}",
            "--mandir=#{man}",
            "--sysconfdir=#{etc}",
            "--with-esx",
            "--with-init-script=none",
            "--with-remote",
            "--with-test",
            "--with-vbox",
            "--with-vmware",
            "--with-yajl",
            "--without-qemu"]
    args << "--without-libvirtd" if build.without? 'libvirtd'
    args << "--without-python" if build.without? 'python'
    system "./configure", *args
    # Compilation of docs doesn't get done if we jump straight to "make install"
    system "make"
    system "make install"
    # Update the SASL config file with the Homebrew prefix
    inreplace "#{etc}/sasl2/libvirt.conf" do |s|
      s.gsub! "/etc/", "#{HOMEBREW_PREFIX}/etc/"
    end
    # If the libvirt daemon is built, update its config file to reflect
    # the Homebrew prefix
    unless build.include? 'without-libvirtd'
      inreplace "#{etc}/libvirt/libvirtd.conf" do |s|
        s.gsub! "/etc/", "#{HOMEBREW_PREFIX}/etc/"
        s.gsub! "/var/", "#{HOMEBREW_PREFIX}/var/"
      end
    end
  end
  test do
    python do
      # Testing to import the mod because that is a .so file where linking
      # can break.
      system python, '-c', "import libvirtmod"
    end
  end
end
  |