summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorFedor Indutny <fedor.indutny@gmail.com>2014-02-20 20:52:26 +0400
committerFedor Indutny <fedor.indutny@gmail.com>2014-02-21 00:46:26 +0400
commitb940e0fd86f29694c571e4fef5b49434eb1cbb8d (patch)
treedecb1a50389d504255a7c978a4122219b7b35f2f /tools
parent085db9dd6c1f3faf526c16170e9ffe89b8ec6211 (diff)
downloadnode-new-b940e0fd86f29694c571e4fef5b49434eb1cbb8d.tar.gz
gyp: specialize node.d for freebsd
`node.d` should use `psinfo.d` instead of `procfs.d` and have statically defined architecture on FreeBSD.
Diffstat (limited to 'tools')
-rwxr-xr-xtools/install.py2
-rwxr-xr-xtools/specialize_node_d.py32
2 files changed, 33 insertions, 1 deletions
diff --git a/tools/install.py b/tools/install.py
index 7249de36e9..f51d95a129 100755
--- a/tools/install.py
+++ b/tools/install.py
@@ -132,7 +132,7 @@ def files(action):
# install unconditionally, checking if the platform supports dtrace doesn't
# work when cross-compiling and besides, there's at least one linux flavor
# with dtrace support now (oracle's "unbreakable" linux)
- action(['src/node.d'], 'lib/dtrace/')
+ action(['out/Release/node.d'], 'lib/dtrace/node.d')
if 'freebsd' in sys.platform or 'openbsd' in sys.platform:
action(['doc/node.1'], 'man/man1/')
diff --git a/tools/specialize_node_d.py b/tools/specialize_node_d.py
new file mode 100755
index 0000000000..0ee505ae91
--- /dev/null
+++ b/tools/specialize_node_d.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+
+#
+# specialize_node_d.py output_file src/node.d flavor arch
+#
+# Specialize node.d for given flavor (`freebsd`) and arch (`x64` or `ia32`)
+#
+
+import re
+import subprocess
+import sys
+import errno
+
+if len(sys.argv) != 5:
+ print "usage: specialize_node_d.py outfile src/node.d flavor arch"
+ sys.exit(2);
+
+outfile = file(sys.argv[1], 'w');
+infile = file(sys.argv[2], 'r');
+flavor = sys.argv[3];
+arch = sys.argv[4];
+
+model = r'curpsinfo->pr_dmodel == PR_MODEL_ILP32'
+
+for line in infile:
+ if flavor == 'freebsd':
+ line = re.sub('procfs.d', 'psinfo.d', line);
+ if arch == 'x64':
+ line = re.sub(model, '0', line);
+ else:
+ line = re.sub(model, '1', line);
+ outfile.write(line);