Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/crytic/solc-select
Manage and switch between Solidity compiler versions
https://github.com/crytic/solc-select
ethereum solidity
Last synced: 27 days ago
JSON representation
Manage and switch between Solidity compiler versions
- Host: GitHub
- URL: https://github.com/crytic/solc-select
- Owner: crytic
- License: agpl-3.0
- Created: 2019-01-14T19:24:59.000Z (almost 6 years ago)
- Default Branch: dev
- Last Pushed: 2023-12-15T08:34:18.000Z (11 months ago)
- Last Synced: 2024-09-30T10:21:10.717Z (about 1 month ago)
- Topics: ethereum, solidity
- Language: Python
- Homepage:
- Size: 205 KB
- Stars: 747
- Watchers: 22
- Forks: 99
- Open Issues: 44
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
- awesome-solidity - crytic/solc-select - CLI to quickly switch between compiler versions. (Tools)
- awesome-solidity - crytic/solc-select - CLI to quickly switch between compiler versions. (Tools)
- awesome-web3-tools-and-dapps - Solidity Compiler Selector - This plugin helps you easily manage and switch between different versions of the Solidity compiler. (dApps directory / Solidity Developer Tools)
- awesome-solidity - crytic/solc-select - CLI to quickly switch between compiler versions. (Tools)
README
# solc-select
A tool to quickly switch between Solidity compiler versions.The tool is split into two CLI utilities:
- `solc-select`: manages installing and setting different `solc` compiler versions
- `solc`: wrapper around `solc` which picks the right version according to what was set via `solc-select`The `solc` binaries are downloaded from https://binaries.soliditylang.org/ which contains
official artifacts for many historial and modern `solc` versions for Linux and macOS.The versioned binaries are stored in `~/.solc-select/artifacts/`.
## Quickstart
```
pip3 install solc-select
```To automatically install and use a version, run `solc-select use --always-install`.
### Running on ARM (Mac M1/M2)
`solc` requires Rosetta to be installed. See the FAQ on [how to install Rosetta](#oserror-errno-86-bad-cpu-type-in-executable).
## Usage
By default, `solc-select` will install the most recent available Solidity file for your version. This will automatically be done when you run `solc` for the first time.
```bash
solc
```The global version of `solc` will automatically be set to to the latest version. You can reset this with the `solc-select use ` command:
```
$ solc --version
solc, the solidity compiler commandline interface
Version: 0.5.2+commit.1df8f40c.Linux.g++
$ solc-select use 0.4.24
Switched global version to 0.4.24
$ solc --version
solc, the solidity compiler commandline interface
Version: 0.4.24+commit.e67f0147.Linux.g++
```
Use `SOLC_VERSION` environment variable to override the global version:
```
$ solc --version
solc, the solidity compiler commandline interface
Version: 0.4.24+commit.e67f0147.Linux.g++
$ SOLC_VERSION=0.5.2 solc --version
solc, the solidity compiler commandline interface
Version: 0.5.2+commit.1df8f40c.Linux.g++
```By default, solc-select will halt if you try to use a version that you do not have installed already. Use the `--always-install` flags to bypass this.
```bash
solc-select use 0.8.1 --always-install
Installing '0.8.1'...
Version '0.8.1' installed.
```You can list all available versions with `solc-select install`:
```
$ solc-select install
Available versions to install:
0.3.6
0.4.0
...
0.8.0
0.8.1
```## Getting Help
Feel free to stop by our [Slack channel](https://empirehacking.slack.com/) for help on using or extending `solc-select`.
## FAQ
### OSError: [Errno 86] Bad CPU type in executable
On newer `solc-select` versions, this might show as `solc binaries for macOS are
Intel-only. Please install Rosetta on your Mac to continue.``solc` requires Rosetta to be installed. To see whether you have Rosetta
installed on your Mac, run```bash
pgrep -q oahd && echo Rosetta is installed || echo Rosetta is NOT installed
```If it is not installed, it can be installed with the command
```bash
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
```### solc-version not changing after running `solc-select use [version]` or setting `SOLC_VERSION`
Uninstall other installations of solc on your machine. `solc-select` re-installs solc binaries for your operating system and acts as a wrapper for solc. With duplicate solc installations, this may result in your `solc` version not being up to date.
### "Unsupported Platform" on Windows
The solc-select version that supports Windows is currently in beta. Uninstall `solc-select` through `pip3 uninstall solc-select` and run
```bash
pip install solc-select==1.0.0b1
```Alternatively, for the most up-to-date version, clone this repository and run
```bash
pip install . --user
```## Known Issues
### `SSL: CERTIFICATE_VERIFY_FAILED` on running `solc-select` commands [investigation ongoing]
**OS X**
```bash
pip3 install certifi
/Applications/Python\ 3.8/Install\ Certificates.command
```Python distributions on OS X has no certificates and cannot validate SSL connections, a breaking change introduced in Python 3.6. See [StackOverflow](https://stackoverflow.com/a/42334357) post for additional details.
### `Connection refused` [investigation ongoing]
```bash
pip3 uninstall solc-select
pip3 install solc-select==0.2.0
solc-select install
```Try downgrading to `solc-select version 0.2.0`.
Our `0.2.1` version of `solc-select` pulls older Linux binaries from [crytic/solc](https://github.com/crytic/solc) which seems to have introduced unexpected behavior in certain instances.
### `solc-select` version changes, but `solc --version does not match`
Users seem to be experiencing situations in which the following command is successful:
```
solc-select use
```
However, when running the following command, it points to an older version of Solidity.
```
solc --version
````solc-select` is intended to work with custom binaries. This means that Solidity installed through other means (i.e: `brew install solidity`) will _not_ work!.
Uninstall other versions Solidity from your computer.
## License
`solc-select` is licensed and distributed under the [AGPLv3](LICENSE) license. [Contact us](mailto:[email protected]) if you’re looking for an exception to the terms.