forked from lotia/homebrew-versions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnode010.rb
134 lines (107 loc) · 4.33 KB
/
node010.rb
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# Note that x.even are stable releases, x.odd are devel releases
class Node010 < Formula
desc "Platform built on V8 to build network applications"
homepage "https://nodejs.org/"
url "https://nodejs.org/dist/v0.10.41/node-v0.10.41.tar.gz"
sha256 "79f694e2a5c42543b75d0c69f6860499d7593136d0f6b59e7163b9e66fb2c995"
head "https://github.com/nodejs/node.git", :branch => "v0.10-staging"
bottle do
sha256 "3b809332664b36e68e4080c0565ff8840ff7b4201133ebff6edca851a9b8953e" => :el_capitan
sha256 "20a72b8fd7efb91914746ffba064fbf3d2e3f69cb095d02ef7b77b7b05bf9138" => :yosemite
sha256 "567366769ce4b435d1edcdd06de06c64ed9a8c8fb8c78df9f696190cd113e4b3" => :mavericks
end
deprecated_option "enable-debug" => "with-debug"
option "with-debug", "Build with debugger hooks"
option "without-npm", "npm will not be installed"
option "without-completion", "npm bash completion will not be installed"
depends_on :python => :build
depends_on "openssl" => :optional
fails_with :llvm do
build 2326
end
resource "npm" do
url "https://registry.npmjs.org/npm/-/npm-2.14.4.tgz"
sha256 "c8b602de5d51f956aa8f9c34d89be38b2df3b7c25ff6588030eb8224b070db27"
end
conflicts_with "node",
:because => "Differing versions of the same formulae."
def install
args = %W[--prefix=#{prefix} --without-npm]
args << "--debug" if build.with? "debug"
if build.with? "openssl"
args << "--shared-openssl"
else
args << "--without-ssl2" << "--without-ssl3"
end
system "./configure", *args
system "make", "install"
if build.with? "npm"
resource("npm").stage buildpath/"npm_install"
# make sure npm can find node
ENV.prepend_path "PATH", bin
# make sure user prefix settings in $HOME are ignored
ENV["HOME"] = buildpath/".brew_home"
# set log level temporarily for npm's `make install`
ENV["NPM_CONFIG_LOGLEVEL"] = "verbose"
cd buildpath/"npm_install" do
system "./configure", "--prefix=#{libexec}/npm"
system "make", "install"
end
if build.with? "completion"
bash_completion.install \
buildpath/"npm_install/lib/utils/completion.sh" => "npm"
end
end
end
def post_install
return if build.without? "npm"
node_modules = HOMEBREW_PREFIX/"lib/node_modules"
node_modules.mkpath
npm_exec = node_modules/"npm/bin/npm-cli.js"
# Kill npm but preserve all other modules across node updates/upgrades.
rm_rf node_modules/"npm"
cp_r libexec/"npm/lib/node_modules/npm", node_modules
# This symlink doesn't hop into homebrew_prefix/bin automatically so
# remove it and make our own. This is a small consequence of our bottle
# npm make install workaround. All other installs **do** symlink to
# homebrew_prefix/bin correctly. We ln rather than cp this because doing
# so mimics npm's normal install.
ln_sf npm_exec, "#{HOMEBREW_PREFIX}/bin/npm"
# Let's do the manpage dance. It's just a jump to the left.
# And then a step to the right, with your hand on rm_f.
["man1", "man3", "man5", "man7"].each do |man|
# Dirs must exist first: https://github.com/Homebrew/homebrew/issues/35969
mkdir_p HOMEBREW_PREFIX/"share/man/#{man}"
rm_f Dir[HOMEBREW_PREFIX/"share/man/#{man}/{npm.,npm-,npmrc.}*"]
ln_sf Dir[libexec/"npm/lib/node_modules/npm/man/#{man}/npm*"], HOMEBREW_PREFIX/"share/man/#{man}"
end
npm_root = node_modules/"npm"
npmrc = npm_root/"npmrc"
npmrc.atomic_write("prefix = #{HOMEBREW_PREFIX}\n")
end
def caveats
s = ""
if build.without? "npm"
s += <<-EOS.undent
Homebrew has NOT installed npm. If you later install it, you should supplement
your NODE_PATH with the npm module folder:
#{HOMEBREW_PREFIX}/lib/node_modules
EOS
end
s
end
test do
path = testpath/"test.js"
path.write "console.log('hello');"
output = shell_output("#{bin}/node #{path}").strip
assert_equal "hello", output
if build.with? "npm"
# make sure npm can find node
ENV.prepend_path "PATH", opt_bin
assert_equal which("node"), opt_bin/"node"
assert (HOMEBREW_PREFIX/"bin/npm").exist?, "npm must exist"
assert (HOMEBREW_PREFIX/"bin/npm").executable?, "npm must be executable"
system "#{HOMEBREW_PREFIX}/bin/npm", "--verbose", "install", "npm@latest"
end
end
end