Compile

Running $ populus compile will compile all of the project contracts found in the ./contracts/ directory. The compiled assets are then written to ./build/contracts.json.

Basic Compilation

Basic usage to compile all of the contracts and libraries in your project can be done as follows.

$ populus compile
============ Compiling ==============
> Loading source files from: ./contracts

> Found 1 contract source files
- contracts/Greeter.sol

> Compiled 1 contracts
- Greeter

> Wrote compiled assets to: ./build/contracts.json

Watching

This command can be used with the flag --watch which will automatically recompile your contracts when the source code changes.

$ populus compile --watch
============ Compiling ==============
> Loading source files from: ./contracts

> Found 1 contract source files
- contracts/Greeter.sol

> Compiled 1 contracts
- Greeter

> Wrote compiled assets to: ./build/contracts.json
Change detected in: contracts/Greeter.sol
============ Compiling ==============
> Loading source files from: ./contracts

> Found 1 contract source files
- contracts/Greeter.sol

> Compiled 1 contracts
- Greeter

> Wrote compiled assets to: ./build/contracts.json

Build Output

Output is serialized as JSON and written to build/contracts.json relative to the root of your project. It will be a mapping of your contract names to the compiled assets for that contract.

{
    "Greeter": {
        "abi": [
            {
                "constant": true,
                "inputs": [
                    {
                        "name": "name",
                        "type": "bytes"
                    }
                ],
                "name": "greet",
                "outputs": [
                    {
                        "name": "",
                        "type": "bytes"
                    }
                ],
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    {
                        "name": "_greeting",
                        "type": "string"
                    }
                ],
                "name": "setGreeting",
                "outputs": [],
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [],
                "name": "greet",
                "outputs": [
                    {
                        "name": "",
                        "type": "string"
                    }
                ],
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [],
                "name": "greeting",
                "outputs": [
                    {
                        "name": "",
                        "type": "string"
                    }
                ],
                "type": "function"
            },
            {
                "inputs": [],
                "type": "constructor"
            }
        ],
        "code": "0x...",
        "code_runtime": "0x...",
        "meta": {
            "compilerVersion": "0.3.5-9da08ac3",
            "language": "Solidity",
            "languageVersion": "0"
        },
        "source": null
    }
}

Note

Populus currently only supports compilation of Solidity contracts.