aboutsummaryrefslogtreecommitdiffstats
path: root/packages/sol-compiler
diff options
context:
space:
mode:
Diffstat (limited to 'packages/sol-compiler')
-rw-r--r--packages/sol-compiler/CHANGELOG.json7
-rw-r--r--packages/sol-compiler/CHANGELOG.md6
-rw-r--r--packages/sol-compiler/package.json20
-rw-r--r--packages/sol-compiler/src/compiler.ts16
-rw-r--r--packages/sol-compiler/src/index.ts1
-rw-r--r--packages/sol-compiler/src/utils/types.ts1
-rw-r--r--packages/sol-compiler/test/compiler_test.ts9
-rw-r--r--packages/sol-compiler/test/util/provider.ts3
8 files changed, 42 insertions, 21 deletions
diff --git a/packages/sol-compiler/CHANGELOG.json b/packages/sol-compiler/CHANGELOG.json
index a1b53fb9e..33fd99e4f 100644
--- a/packages/sol-compiler/CHANGELOG.json
+++ b/packages/sol-compiler/CHANGELOG.json
@@ -5,8 +5,13 @@
{
"note": "Properly export the executable binary",
"pr": 588
+ },
+ {
+ "note": "Add the ability to define a specific solidity version",
+ "pr": 589
}
- ]
+ ],
+ "timestamp": 1527009133
},
{
"timestamp": 1525477860,
diff --git a/packages/sol-compiler/CHANGELOG.md b/packages/sol-compiler/CHANGELOG.md
index 4eb0ed453..ee9b53f4e 100644
--- a/packages/sol-compiler/CHANGELOG.md
+++ b/packages/sol-compiler/CHANGELOG.md
@@ -5,7 +5,11 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
-## v0.4.3 - _May 5, 2018_
+## v0.5.0 - _May 22, 2018_
+
+ * Properly export the executable binary (#588)
+
+## v0.4.3 - _May 4, 2018_
* Dependencies updated
diff --git a/packages/sol-compiler/package.json b/packages/sol-compiler/package.json
index 31a10f8b7..c94e59eb4 100644
--- a/packages/sol-compiler/package.json
+++ b/packages/sol-compiler/package.json
@@ -1,6 +1,6 @@
{
"name": "@0xproject/sol-compiler",
- "version": "0.4.3",
+ "version": "0.5.0",
"engines": {
"node": ">=6.12"
},
@@ -49,9 +49,9 @@
},
"homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-compiler/README.md",
"devDependencies": {
- "@0xproject/dev-utils": "^0.4.1",
- "@0xproject/monorepo-scripts": "^0.1.19",
- "@0xproject/tslint-config": "^0.4.17",
+ "@0xproject/dev-utils": "^0.4.2",
+ "@0xproject/monorepo-scripts": "^0.1.20",
+ "@0xproject/tslint-config": "^0.4.18",
"@types/mkdirp": "^0.5.2",
"@types/require-from-string": "^1.2.0",
"@types/semver": "^5.5.0",
@@ -72,12 +72,12 @@
"zeppelin-solidity": "1.8.0"
},
"dependencies": {
- "@0xproject/json-schemas": "^0.7.23",
- "@0xproject/sol-resolver": "^0.0.4",
- "@0xproject/types": "^0.6.3",
- "@0xproject/typescript-typings": "^0.3.1",
- "@0xproject/utils": "^0.6.1",
- "@0xproject/web3-wrapper": "^0.6.3",
+ "@0xproject/json-schemas": "^0.7.24",
+ "@0xproject/sol-resolver": "^0.0.5",
+ "@0xproject/types": "^0.7.0",
+ "@0xproject/typescript-typings": "^0.3.2",
+ "@0xproject/utils": "^0.6.2",
+ "@0xproject/web3-wrapper": "^0.6.4",
"@types/yargs": "^11.0.0",
"chalk": "^2.3.0",
"ethereumjs-util": "^5.1.1",
diff --git a/packages/sol-compiler/src/compiler.ts b/packages/sol-compiler/src/compiler.ts
index efb30091b..2ebc5228e 100644
--- a/packages/sol-compiler/src/compiler.ts
+++ b/packages/sol-compiler/src/compiler.ts
@@ -74,6 +74,7 @@ export class Compiler {
private _contractsDir: string;
private _compilerSettings: solc.CompilerSettings;
private _artifactsDir: string;
+ private _solcVersionIfExists: string | undefined;
private _specifiedContracts: string[] | TYPE_ALL_FILES_IDENTIFIER;
/**
* Instantiates a new instance of the Compiler class.
@@ -85,6 +86,7 @@ export class Compiler {
? JSON.parse(fs.readFileSync(CONFIG_FILE).toString())
: {};
this._contractsDir = opts.contractsDir || config.contractsDir || DEFAULT_CONTRACTS_DIR;
+ this._solcVersionIfExists = opts.solcVersion || config.solcVersion;
this._compilerSettings = opts.compilerSettings || config.compilerSettings || DEFAULT_COMPILER_SETTINGS;
this._artifactsDir = opts.artifactsDir || config.artifactsDir || DEFAULT_ARTIFACTS_DIR;
this._specifiedContracts = opts.contracts || config.contracts || ALL_CONTRACTS_IDENTIFIER;
@@ -139,9 +141,12 @@ export class Compiler {
if (!shouldCompile) {
return;
}
- const solcVersionRange = parseSolidityVersionRange(contractSource.source);
- const availableCompilerVersions = _.keys(binPaths);
- const solcVersion = semver.maxSatisfying(availableCompilerVersions, solcVersionRange);
+ let solcVersion = this._solcVersionIfExists;
+ if (_.isUndefined(solcVersion)) {
+ const solcVersionRange = parseSolidityVersionRange(contractSource.source);
+ const availableCompilerVersions = _.keys(binPaths);
+ solcVersion = semver.maxSatisfying(availableCompilerVersions, solcVersionRange);
+ }
const fullSolcVersion = binPaths[solcVersion];
const compilerBinFilename = path.join(SOLC_BIN_DIR, fullSolcVersion);
let solcjs: string;
@@ -152,7 +157,8 @@ export class Compiler {
logUtils.log(`Downloading ${fullSolcVersion}...`);
const url = `${constants.BASE_COMPILER_URL}${fullSolcVersion}`;
const response = await fetch(url);
- if (response.status !== 200) {
+ const SUCCESS_STATUS = 200;
+ if (response.status !== SUCCESS_STATUS) {
throw new Error(`Failed to load ${fullSolcVersion}`);
}
solcjs = await response.text();
@@ -228,7 +234,7 @@ export class Compiler {
sourceTreeHashHex,
compiler: {
name: 'solc',
- version: solcVersion,
+ version: fullSolcVersion,
settings: this._compilerSettings,
},
};
diff --git a/packages/sol-compiler/src/index.ts b/packages/sol-compiler/src/index.ts
index 4b4c51de2..15c166992 100644
--- a/packages/sol-compiler/src/index.ts
+++ b/packages/sol-compiler/src/index.ts
@@ -1,2 +1,3 @@
export { Compiler } from './compiler';
+export { CompilerOptions } from './utils/types';
export { ContractArtifact, ContractNetworks } from './utils/types';
diff --git a/packages/sol-compiler/src/utils/types.ts b/packages/sol-compiler/src/utils/types.ts
index b12a11b79..d43347fa6 100644
--- a/packages/sol-compiler/src/utils/types.ts
+++ b/packages/sol-compiler/src/utils/types.ts
@@ -55,6 +55,7 @@ export interface CompilerOptions {
artifactsDir?: string;
compilerSettings?: solc.CompilerSettings;
contracts?: string[] | '*';
+ solcVersion?: string;
}
export interface ContractSourceData {
diff --git a/packages/sol-compiler/test/compiler_test.ts b/packages/sol-compiler/test/compiler_test.ts
index dc8eb1c4e..991965caa 100644
--- a/packages/sol-compiler/test/compiler_test.ts
+++ b/packages/sol-compiler/test/compiler_test.ts
@@ -39,8 +39,13 @@ describe('#Compiler', function(): void {
const exchangeArtifactString = await fsWrapper.readFileAsync(exchangeArtifactPath, opts);
const exchangeArtifact: ContractArtifact = JSON.parse(exchangeArtifactString);
// The last 43 bytes of the binaries are metadata which may not be equivalent
- const unlinkedBinaryWithoutMetadata = exchangeArtifact.compilerOutput.evm.bytecode.object.slice(2, -86);
- const exchangeBinaryWithoutMetadata = exchange_binary.slice(0, -86);
+ const metadataByteLength = 43;
+ const metadataHexLength = metadataByteLength * 2;
+ const unlinkedBinaryWithoutMetadata = exchangeArtifact.compilerOutput.evm.bytecode.object.slice(
+ 2,
+ -metadataHexLength,
+ );
+ const exchangeBinaryWithoutMetadata = exchange_binary.slice(0, -metadataHexLength);
expect(unlinkedBinaryWithoutMetadata).to.equal(exchangeBinaryWithoutMetadata);
});
});
diff --git a/packages/sol-compiler/test/util/provider.ts b/packages/sol-compiler/test/util/provider.ts
index e0fcb362a..2bd178129 100644
--- a/packages/sol-compiler/test/util/provider.ts
+++ b/packages/sol-compiler/test/util/provider.ts
@@ -3,7 +3,6 @@ import { Provider } from '@0xproject/types';
import * as Web3 from 'web3';
const providerConfigs = { shouldUseInProcessGanache: true };
-const web3Instance = web3Factory.create(providerConfigs);
-const provider: Provider = web3Instance.currentProvider;
+const provider: Provider = web3Factory.getRpcProvider(providerConfigs);
export { provider };