ApeWorX / py-solc-x

Python wrapper and version management tool for the solc Solidity compiler.
https://solcx.readthedocs.io/
MIT License
141 stars 49 forks source link

cross-platform installation #143

Open gsalzer opened 2 years ago

gsalzer commented 2 years ago

Overview

It seems that solcx is tied to the platform it is running on, meaning that it will load and install binaries for the current platform. For cross-platform use, it would be useful to request binaries for another platform, e.g. when preparing mounts for a virtual machine, or a docker image.

The following code achieves what I want (assuming that the target platform is Linux):

import solcx.install
solcx.install._get_os_name.__code__ = (lambda:"linux").__code__

The assignment patches the internal function _get_os_name to return always "linux". Obviously, this not a clean solution, as it breaks when the private function is changed. Is there a better solution?

gsalzer commented 2 years ago

Commit 486481dc461005d10e39660496720f8b11c75100 adds a function set_target_os. If the target os is different from the current host os, the images for the target os will be pulled, stored in .solx-targetos, and used.