diff --git a/lib/warehouse.js b/lib/warehouse.js index 12f93d25b3..ea3cd1c406 100644 --- a/lib/warehouse.js +++ b/lib/warehouse.js @@ -145,16 +145,19 @@ var warehouse = module.exports = { var engineTarballFilename = "meteor-engine-" + releaseManifest.engine + "-" + warehouse._unameAndArch() + ".tar.gz"; + var engineTarballPath = "/engines/" + releaseManifest.engine + "/" + + engineTarballFilename; var engineTarball = Future.wrap(files.getUrl)({ - url: PACKAGES_URLBASE + "/engines/" + engineTarballFilename, + url: PACKAGES_URLBASE + engineTarballPath, encoding: null }).wait(); var engineDir = warehouse.getEngineDir(engineVersion); - // we don't end up with a corrupt warehouse - var tmpEngineDir = engineDir + ".tmp" + warehouse._randomToken(); + // use a temp dir to avoid getting a corrupt warehouse + var tmpEngineDir = warehouse.getEngineDir( + ".tmp" + warehouse._randomToken()); files.mkdir_p(tmpEngineDir); files.extractTarGz(engineTarball, tmpEngineDir); - fs.renameSync(tmpEngineDir, engineDir); + fs.renameSync(path.join(tmpEngineDir, releaseManifest.engine), engineDir); } catch (e) { console.error("Failed to load engine for release " + releaseVersion); throw e;