gyp: specialize node.d for freebsd
`node.d` should use `psinfo.d` instead of `procfs.d` and have statically defined architecture on FreeBSD.
This commit is contained in:
parent
085db9dd6c
commit
b940e0fd86
34
node.gyp
34
node.gyp
@ -159,8 +159,12 @@
|
|||||||
}],
|
}],
|
||||||
[ 'node_use_dtrace=="true"', {
|
[ 'node_use_dtrace=="true"', {
|
||||||
'defines': [ 'HAVE_DTRACE=1' ],
|
'defines': [ 'HAVE_DTRACE=1' ],
|
||||||
'dependencies': [ 'node_dtrace_header' ],
|
'dependencies': [
|
||||||
|
'node_dtrace_header',
|
||||||
|
'specialize_node_d',
|
||||||
|
],
|
||||||
'include_dirs': [ '<(SHARED_INTERMEDIATE_DIR)' ],
|
'include_dirs': [ '<(SHARED_INTERMEDIATE_DIR)' ],
|
||||||
|
|
||||||
#
|
#
|
||||||
# DTrace is supported on solaris, mac, and bsd. There are three
|
# DTrace is supported on solaris, mac, and bsd. There are three
|
||||||
# object files associated with DTrace support, but they're not all
|
# object files associated with DTrace support, but they're not all
|
||||||
@ -482,10 +486,36 @@
|
|||||||
]
|
]
|
||||||
} ],
|
} ],
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
]
|
]
|
||||||
} ],
|
} ],
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'target_name': 'specialize_node_d',
|
||||||
|
'type': 'none',
|
||||||
|
'conditions': [
|
||||||
|
[ 'node_use_dtrace=="true"', {
|
||||||
|
'actions': [
|
||||||
|
{
|
||||||
|
'action_name': 'specialize_node_d',
|
||||||
|
'inputs': [
|
||||||
|
'src/node.d'
|
||||||
|
],
|
||||||
|
'outputs': [
|
||||||
|
'<(PRODUCT_DIR)/node.d',
|
||||||
|
],
|
||||||
|
'action': [
|
||||||
|
'tools/specialize_node_d.py',
|
||||||
|
'<@(_outputs)',
|
||||||
|
'<@(_inputs)',
|
||||||
|
'<@(OS)',
|
||||||
|
'<@(target_arch)',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
} ],
|
||||||
|
]
|
||||||
}
|
}
|
||||||
] # end targets
|
] # end targets
|
||||||
}
|
}
|
||||||
|
@ -132,7 +132,7 @@ def files(action):
|
|||||||
# install unconditionally, checking if the platform supports dtrace doesn't
|
# install unconditionally, checking if the platform supports dtrace doesn't
|
||||||
# work when cross-compiling and besides, there's at least one linux flavor
|
# work when cross-compiling and besides, there's at least one linux flavor
|
||||||
# with dtrace support now (oracle's "unbreakable" linux)
|
# 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:
|
if 'freebsd' in sys.platform or 'openbsd' in sys.platform:
|
||||||
action(['doc/node.1'], 'man/man1/')
|
action(['doc/node.1'], 'man/man1/')
|
||||||
|
32
tools/specialize_node_d.py
Executable file
32
tools/specialize_node_d.py
Executable file
@ -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);
|
Loading…
x
Reference in New Issue
Block a user