forked from lotia/homebrew-versions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
node08.rb
144 lines (119 loc) · 3.87 KB
/
node08.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
135
136
137
138
139
140
141
142
143
144
require 'formula'
class PythonVersion < Requirement
env :userpaths
satisfy { `python -c 'import sys;print(sys.version[:3])'`.strip.to_f >= 2.6 }
def message;
"Node's build system, gyp, requires Python 2.6 or newer."
end
end
class NpmNotInstalled < Requirement
fatal true
def modules_folder
"#{HOMEBREW_PREFIX}/lib/node_modules"
end
def message; <<-EOS.undent
The homebrew node recipe now (beginning with 0.8.0) comes with npm.
It appears you already have npm installed at #{modules_folder}/npm.
To use the npm that comes with this recipe,
first uninstall npm with `npm uninstall npm -g`.
Then run this command again.
If you would like to keep your installation of npm instead of
using the one provided with homebrew,
install the formula with the --without-npm option added.
EOS
end
satisfy :build_env => false do
begin
path = Pathname.new("#{modules_folder}/npm/bin/npm")
path.realpath.to_s.include?(HOMEBREW_CELLAR)
rescue Errno::ENOENT
true
end
end
end
class Node08 < Formula
homepage 'http://nodejs.org/'
url 'http://nodejs.org/dist/v0.8.26/node-v0.8.26.tar.gz'
sha1 '2ec960bcc8cd38da271f83c1b2007c12da5153b3'
option 'enable-debug', 'Build with debugger hooks'
option 'without-npm', 'npm will not be installed'
option 'with-shared-libs', 'Use Homebrew V8 and system OpenSSL, zlib'
depends_on NpmNotInstalled unless build.without? 'npm'
depends_on PythonVersion
depends_on 'v8' if build.with? 'shared-libs'
fails_with :llvm do
build 2326
end
# Fixes double-free issue. See https://github.com/joyent/node/issues/6427
# Should be fixed if they ever do a v0.8 release.
patch :p1, :DATA
def install
# Lie to `xcode-select` for now to work around a GYP bug that affects
# CLT-only systems:
#
# http://code.google.com/p/gyp/issues/detail?id=292
# joyent/node#3681
ENV['DEVELOPER_DIR'] = MacOS.dev_tools_path unless MacOS::Xcode.installed?
args = %W{--prefix=#{prefix}}
if build.with? 'shared-libs'
args << '--shared-openssl' unless MacOS.version == :leopard
args << '--shared-v8'
args << '--shared-zlib'
end
args << "--debug" if build.include? 'enable-debug'
args << "--without-npm" if build.include? 'without-npm'
system "./configure", *args
system "make install"
unless build.include? 'without-npm'
(lib/"node_modules/npm/npmrc").write(npmrc)
end
end
def npm_prefix
"#{HOMEBREW_PREFIX}/share/npm"
end
def npm_bin
"#{npm_prefix}/bin"
end
def modules_folder
"#{HOMEBREW_PREFIX}/lib/node_modules"
end
def npmrc
<<-EOS.undent
prefix = #{npm_prefix}
EOS
end
def caveats
if build.include? 'without-npm'
<<-EOS.undent
Homebrew has NOT installed npm. We recommend the following method of
installation:
curl https://npmjs.org/install.sh | sh
After installing, add the following path to your NODE_PATH environment
variable to have npm libraries picked up:
#{modules_folder}
EOS
elsif not ENV['PATH'].split(':').include? npm_bin
<<-EOS.undent
Homebrew installed npm.
We recommend prepending the following path to your PATH environment
variable to have npm-installed binaries picked up:
#{npm_bin}
EOS
end
end
end
__END__
diff --git a/deps/v8/src/spaces.h b/deps/v8/src/spaces.h
index b0ecc5d..d76d77d 100644
--- a/deps/v8/src/spaces.h
+++ b/deps/v8/src/spaces.h
@@ -321,7 +321,8 @@ class MemoryChunk {
Space* owner() const {
if ((reinterpret_cast<intptr_t>(owner_) & kFailureTagMask) ==
kFailureTag) {
- return reinterpret_cast<Space*>(owner_ - kFailureTag);
+ return reinterpret_cast<Space*>(reinterpret_cast<intptr_t>(owner_) -
+ kFailureTag);
} else {
return NULL;
}