Fix race condition

This commit is contained in:
Amir Bandeali
2018-02-17 18:51:19 -07:00
parent d770e46208
commit 6685cb3fba
3 changed files with 14 additions and 11 deletions

View File

@@ -9,10 +9,10 @@
},
"scripts": {
"build:watch": "tsc -w",
"prebuild": "run-s clean copy_artifacts generate_contract_wrappers",
"prebuild": "run-s clean compile copy_artifacts generate_contract_wrappers",
"copy_artifacts": "copyfiles './src/artifacts/**/*' ./lib",
"build": "tsc",
"test": "run-s compile build run_mocha",
"test": "run-s build run_mocha",
"run_mocha": "mocha 'lib/test/**/*.js' --timeout 10000 --bail --exit",
"compile:comment": "Yarn workspaces do not link binaries correctly so we need to reference them directly https://github.com/yarnpkg/yarn/issues/3846",
"compile": "node ../deployer/lib/src/cli.js compile --contracts ${npm_package_config_contracts} --contracts-dir src/contracts --artifacts-dir src/artifacts",

View File

@@ -168,7 +168,6 @@ export class Compiler {
: Array.from(this._specifiedContracts.values());
await Promise.all(_.map(fileNames, async fileName => this._setCompileActionAsync(fileName)));
await Promise.all(_.map(fileNames, async fileName => this._compileContractAsync(fileName)));
this._solcErrors.forEach(errMsg => {
utils.consoleLog(errMsg);
});
@@ -185,10 +184,6 @@ export class Compiler {
if (!contractSpecificSourceData.shouldCompile) {
return;
}
const source = this._contractSourcesIfExists[fileName];
const input = {
[fileName]: source,
};
const fullSolcVersion = binPaths[contractSpecificSourceData.solc_version];
const solcBinPath = `./solc/solc_bin/${fullSolcVersion}`;
@@ -196,6 +191,10 @@ export class Compiler {
const solcInstance = solc.setupMethods(solcBin);
utils.consoleLog(`Compiling ${fileName}...`);
const source = this._contractSourcesIfExists[fileName];
const input = {
[fileName]: source,
};
const sourcesToCompile = {
sources: input,
};
@@ -271,10 +270,14 @@ export class Compiler {
contractNetworkData.solc_version !== contractSpecificSourceData.solc_version;
}
}
_.forEach(contractSpecificSourceData.dependencies, async dependency => {
await this._setCompileActionAsync(dependency);
await Promise.all(
_.map(contractSpecificSourceData.dependencies, async dependency => this._setCompileActionAsync(dependency)),
);
_.forEach(contractSpecificSourceData.dependencies, dependency => {
contractSpecificSourceData.shouldCompile =
contractSpecificSourceData.shouldCompile || this._contractSourceData[dependency].shouldCompile;
contractSpecificSourceData.shouldCompile ||
(this._contractSourceData[dependency].shouldCompile &&
(this._specifiedContracts.has('*') || this._specifiedContracts.has(dependency)));
});
}
/**