diff --git a/app.js b/app.js index 77da25936d..de5642e515 100644 --- a/app.js +++ b/app.js @@ -117,6 +117,17 @@ function loadConfig(callback) { nconf.set('url_parsed', url.parse(nconf.get('url'))); } + // Explicitly cast 'jobsDisabled' as Bool + var castAsBool = ['jobsDisabled']; + nconf.stores.env.readOnly = false; + castAsBool.forEach(function (prop) { + var value = nconf.get(prop); + if (value) { + nconf.set(prop, typeof value === 'boolean' ? value : String(value).toLowerCase() === 'true'); + } + }); + nconf.stores.env.readOnly = true; + if (typeof callback === 'function') { callback(); } diff --git a/src/meta/build.js b/src/meta/build.js index 2d89abaf5a..3f2feb8a2a 100644 --- a/src/meta/build.js +++ b/src/meta/build.js @@ -45,6 +45,9 @@ exports.build = function build(targets, callback) { exports.buildTargets = function (targets, callback) { var cacheBuster = require('./cacheBuster'); var meta = require('../meta'); + var numCpus = require('os').cpus().length; + var strategy = (targets.length > 1 && numCpus > 1); + buildStart = buildStart || Date.now(); var step = function (startTime, target, next, err) { @@ -56,7 +59,13 @@ exports.buildTargets = function (targets, callback) { next(); }; - async.parallel([ + if (strategy) { + winston.verbose('[build] Utilising multiple cores/processes'); + } else { + winston.verbose('[build] Utilising single-core'); + } + + async[strategy ? 'parallel' : 'series']([ function (next) { if (targets.indexOf('js') !== -1) { winston.info('[build] Building javascript');