#! /usr/bin/env node // -*- js -*- "use strict"; var site = "https://browserbench.org/JetStream1.1"; if (typeof phantom == "undefined") { require("../tools/exit"); var args = process.argv.slice(2); var debug = args.indexOf("--debug"); if (debug < 0) { debug = false; } else { args.splice(debug, 1); debug = true; } if (!args.length) args.push("-mcb", "beautify=false,webkit"); args.unshift("bin/uglifyjs"); args.push("--validate", "--timings"); var child_process = require("child_process"); var fetch = require("./fetch"); var http = require("http"); var server = http.createServer(function(request, response) { request.resume(); var url = site + request.url; fetch(url, function(err, res) { if (err) { if (typeof err != "number") throw err; response.writeHead(err); response.end(); } else { response.writeHead(200, { "Content-Type": { css: "text/css", js: "application/javascript", png: "image/png" }[url.slice(url.lastIndexOf(".") + 1)] || "text/html; charset=utf-8" }); if (/\.js$/.test(url)) { var stderr = ""; var uglifyjs = child_process.spawn(process.argv[0], args, { silent: true }).on("exit", function(code) { console.log("uglifyjs", url.slice(site.length + 1), args.slice(1).join(" ")); console.log(stderr); if (code) throw new Error("uglifyjs failed with code " + code); }); uglifyjs.stderr.on("data", function(data) { stderr += data; }).setEncoding("utf8"); uglifyjs.stdout.pipe(response); res.pipe(uglifyjs.stdin); } else { res.pipe(response); } } }); }).listen(); server.on("listening", function() { var port = server.address().port; if (debug) { console.log("http://localhost:" + port + "/"); } else (function install() { child_process.spawn(process.platform == "win32" ? "npm.cmd" : "npm", [ "install", "phantomjs-prebuilt@2.1.14", "--no-audit", "--no-optional", "--no-save", "--no-update-notifier", ], { stdio: [ "ignore", 1, 2 ] }).on("exit", function(code) { if (code) { console.log("npm install failed with code", code); return install(); } var program = require("phantomjs-prebuilt").exec(process.argv[1], port); program.stdout.pipe(process.stdout); program.stderr.pipe(process.stderr); program.on("exit", function(code) { server.close(); if (code) throw new Error("JetStream failed!"); console.log("JetStream completed successfully."); process.exit(0); }); }); })(); }); server.timeout = 0; } else { var page = require("webpage").create(); page.onError = function(msg, trace) { var body = [ msg ]; if (trace) trace.forEach(function(t) { body.push(" " + (t.function || "Anonymous function") + " (" + t.file + ":" + t.line + ")"); }); console.error(body.join("\n")); phantom.exit(1); }; var url = "http://localhost:" + require("system").args[1] + "/"; page.onConsoleMessage = function(msg) { if (/Error:/i.test(msg)) { console.error(msg); phantom.exit(1); } console.log(msg); if (~msg.indexOf("Raw results:")) { phantom.exit(); } }; page.open(url, function(status) { if (status != "success") phantom.exit(1); page.evaluate(function() { JetStream.switchToQuick(); JetStream.start(); }); }); } u/packages/gnunet.scm, gnu/packages/gnupg.scm, gnu/packages/gtk.scm, gnu/packages/guile-wm.scm, gnu/packages/guile-xyz.scm, gnu/packages/haskell-apps.scm, gnu/packages/haskell-check.scm, gnu/packages/haskell-crypto.scm, gnu/packages/haskell-xyz.scm, gnu/packages/haskell.scm, gnu/packages/image-viewers.scm, gnu/packages/image.scm, gnu/packages/irc.scm, gnu/packages/language.scm, gnu/packages/libcanberra.scm, gnu/packages/linux.scm, gnu/packages/lisp-xyz.scm, gnu/packages/lisp.scm, gnu/packages/lolcode.scm, gnu/packages/lxde.scm, gnu/packages/lxqt.scm, gnu/packages/mail.scm, gnu/packages/markup.scm, gnu/packages/mate.scm, gnu/packages/maths.scm, gnu/packages/mc.scm, gnu/packages/messaging.scm, gnu/packages/music.scm, gnu/packages/ncurses.scm, gnu/packages/networking.scm, gnu/packages/nickle.scm, gnu/packages/openbox.scm, gnu/packages/pdf.scm, gnu/packages/perl-check.scm, gnu/packages/perl.scm, gnu/packages/python-compression.scm, gnu/packages/python-crypto.scm, gnu/packages/python-web.scm, gnu/packages/python-xyz.scm, gnu/packages/python.scm, gnu/packages/qt.scm, gnu/packages/ruby.scm, gnu/packages/rust.scm, gnu/packages/scheme.scm, gnu/packages/serialization.scm, gnu/packages/shells.scm, gnu/packages/ssh.scm, gnu/packages/suckless.scm, gnu/packages/tbb.scm, gnu/packages/telephony.scm, gnu/packages/text-editors.scm, gnu/packages/textutils.scm, gnu/packages/time.scm, gnu/packages/tls.scm, gnu/packages/tor.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/vim.scm, gnu/packages/web.scm, gnu/packages/wm.scm, gnu/packages/xdisorg.scm, gnu/packages/xfce.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm, gnu/services/certbot.scm, gnu/services/desktop.scm, gnu/services/version-control.scm, gnu/services/web.scm, guix/import/hackage.scm, guix/licenses.scm: Likewise. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> nikita