aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Formula/mercurial.rb
blob: f61753d6db91558609338e088567f429ea7903a2 (plain)
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
require 'formula'

class Mercurial < Formula
  url 'http://mercurial.selenic.com/release/mercurial-2.1.tar.gz'
  homepage 'http://mercurial.selenic.com/'
  sha1 'f649a0b33e0cafb3e5867a2e970f41eb887d3fab'
  head 'http://selenic.com/repo/hg', :using => :hg

  depends_on 'docutils' => :python if ARGV.build_head? or ARGV.include? "--doc"

  def options
    [
      ["--doc", "build the documentation. Depends on 'docutils' module."],
    ]
  end

  def install
    # Don't add compiler specific flags so we can build against
    # System-provided Python.
    ENV.minimal_optimization

    # Force the binary install path to the Cellar
    inreplace "Makefile",
      "setup.py $(PURE) install",
      "setup.py $(PURE) install --install-scripts=\"#{libexec}\""

    # Make Mercurial into the Cellar.
    # The documentation must be built when using HEAD
    if ARGV.build_head? or ARGV.include? "--doc"
      system "make", "doc"
    end
    system "make", "PREFIX=#{prefix}", "build"
    system "make", "PREFIX=#{prefix}", "install-bin"

    # Now we have lib/python2.x/site-packages/ with Mercurial
    # libs in them. We want to move these out of site-packages into
    # a self-contained folder. Let's choose libexec.
    bin.mkpath
    libexec.mkpath

    libexec.install Dir["#{lib}/python*/site-packages/*"]

    # Symlink the hg binary into bin
    ln_s libexec+'hg', bin+'hg'

    # Remove the hard-coded python invocation from hg
    inreplace bin+'hg', %r[#!/.*/python/.*], '#!/usr/bin/env python'

    # Install some contribs
    bin.install 'contrib/hgk'

    # Install man pages
    man1.install 'doc/hg.1'
    man5.install ['doc/hgignore.5', 'doc/hgrc.5']
  end

  def caveats
    s = ""
    if ARGV.build_head?
      s += <<-EOS.undent
        As mercurial is required to get its own repository, there are now two
        installations of mercurial on this machine.
        If the previous installation has been done through Homebrew, the old version
        needs to be removed and the new one needs to be linked :

          brew cleanup mercurial && brew link mercurial

      EOS
    end
    return s
  end
end