nixpkgs/pkgs/servers/meteor/main.patch
2017-09-13 19:35:36 +00:00

57 lines
1.6 KiB
Diff

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