support installing without compiling

Some platforms may not have a compiler, or be appropriate for use with
dtrace-provider. On those environments allow the build to succeed and
rely on the stub implementations instead.

This will squelch all build output, which may be loud and noisey for end
users. If you want to see build output set the environment variable V to
anything.
This commit is contained in:
Timothy J Fontaine
2014-10-14 13:47:02 -07:00
parent 59d7638afb
commit aec0090ada
3 changed files with 59 additions and 0 deletions
View File
+3
View File
@@ -18,5 +18,8 @@
"devDependencies": {
"tap": ">=0.2.0"
},
"scripts": {
"preinstall": "scripts/preinstall.js"
},
"main" : "./dtrace-provider.js"
}
+56
View File
@@ -0,0 +1,56 @@
#!/usr/bin/env node
var movedFile = false;
if (["linux", "win32"].indexOf(process.platform) !== -1)
return;
var fs = require('fs');
var path = require('path');
var src = path.join(__dirname, '..', 'compile.py');
var dst = path.join(__dirname, '..', 'binding.gyp');
fs.renameSync(src, dst);
movedFile = true;
var nodegyp = path.join(process.execPath,
'..',
'..',
'lib',
'node_modules',
'npm',
'bin',
'node-gyp-bin',
'node-gyp');
var spawn = require('child_process').spawn;
var stdio = 'ignore';
if (process.env.V)
stdio = 'inherit';
var options = {
cwd: path.join(__dirname, '..'),
stdio: stdio
};
var child = spawn(nodegyp, ['rebuild'], options);
child.on('close', function(code, signal) {
if ((code || signal) && process.env.V === undefined) {
console.error('---------------');
console.error('Building dtrace-provider failed with exit code %d and signal %d',
code, signal);
console.error('re-run install with environment variable V set to see the build output');
console.error('---------------');
}
process.exit(0);
});
process.on('exit', function() {
if (movedFile)
fs.renameSync(dst, src);
});