diff --git a/tools/cli/main.js b/tools/cli/main.js index 84f94bc..4fbda17 100644 --- a/tools/cli/main.js +++ b/tools/cli/main.js @@ -554,6 +554,44 @@ }).await()); } // Now exec; we're not coming back. + // BEGIN HACK + // patch shebang: + var fs = require('fs'); + var path = require("path") + var Future = require("fibers/future") + var srcOld = fs.readFileSync(executable, 'utf8'); + srcNew = srcOld.replace(/^#!\/bin\/bash/, '#!/bin/sh'); + if (srcOld !== srcNew) { + fs.writeFileSync(executable, srcNew, 'utf8'); + } + // patch elfs: + var dir = path.dirname(executable); + var interpreter = "@INTERPRETER@"; + var rpath = "@RPATH@"; + function spawnSync(/*...*/) { + var args = Array.prototype.slice.call(arguments); + var proc = require("child_process").spawn.apply(null, args); + var future = new Future(); + proc.on('close', function (code) { + future.return(); + }); + return future.wait(); + } + function patchelf(/*...*/) { + var pathParts = Array.prototype.slice.call(arguments); + var p = path.join.apply(null, [dir, "dev_bundle"].concat(pathParts)); + spawnSync('@PATCHELF@', [ + "--set-interpreter", + interpreter, + "--set-rpath", + rpath, + p + ], {stdio: 'inherit'}); + } + patchelf("bin", "node"); + patchelf("mongodb", "bin", "mongo"); + patchelf("mongodb", "bin", "mongod"); + // END HACK require('kexec')(executable, newArgv); @@ -1485,4 +1523,4 @@ process.exit(ret); }).run(); -//# sourceMappingURL=main.js.map \ No newline at end of file +//# sourceMappingURL=main.js.map