py-solc-x icon indicating copy to clipboard operation
py-solc-x copied to clipboard

solcx wrapper misinterpreting solc --help return code

Open boxydog opened this issue 4 years ago • 1 comments

Environment information

  • py-solc-x Version: 1.1.1
  • solc Version: 0.8.10
  • Python Version: 3.9.7
  • OS: osx

What was wrong?

Code (pretty much straight from https://web3py.readthedocs.io/en/stable/contracts.html):

    source = open('solidity/contracts/Greeter.sol').read()
    compiled_sol = solcx.compile_source(source)

Expected output: no errors Actual output: solc returned 0, solc_wrapper expected 1 from help, so it throws an error

Abbreviated output:

solcx.exceptions.SolcError: An error occurred during execution
> command: `/Users/zzz/.solcx/solc-v0.8.10 --help -`
> return code: `0`
> stdout:
solc, the Solidity commandline compiler.

...

Test outside of solcx showing solc returns 0:

$ /Users/zzz/.solcx/solc-v0.8.10 --help -
solc, the Solidity commandline compiler.
...

$ echo $?
0

Full output attached: eth1.txt

How can it be fixed?

Change solc_wrapper to always expect 0 at this line?

boxydog avatar Nov 09 '21 18:11 boxydog

Just a heads up - older solc versions do return 1 from --help. The change is pretty fresh - it has been fixed in 0.8.10, which was just released (see https://github.com/ethereum/solidity/pull/12118).

It should have been 0 for --help all along since the compiler really does what is requested and it's not a failure. The only reason it was counted as one was that it was being handled by the same code that detects no arguments and prints help. No arguments on the command line is a case where we do want an error - it's still one, even on 0.8.10.

cameel avatar Nov 09 '21 20:11 cameel