diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 73188c3c5..7bc009862 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -75,5 +75,25 @@ jobs: file: ./coverage.xml yml: ./codecov.yml # Disabled this line because Codecov has been extra flaky lately, and having to re-run the entire -# test suite until every coverage upload step succeeds is more of a hassle than it's worth. +# test suite until every coverage upload step succeeds is more of a hassle than it's worth. # fail_ci_if_error: true + upload: + runs-on: ubuntu-latest + if: github.event_name == 'schedule' + needs: tests + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.6 + uses: actions/setup-python@v1 + with: + python-version: 3.6 + - name: Build Dist + run: | + python3 -m pip install wheel + python3 setup.py --dev_release sdist bdist_wheel + - name: Upload to PyPI + uses: pypa/gh-action-pypi-publish@v1.2.2 + with: + password: ${{ secrets.PYPI_UPLOAD }} + + diff --git a/README.md b/README.md index bc65bb997..15e92ad20 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Manticore

- +


@@ -46,7 +46,13 @@ Option 2: Installing from PyPI, with extra dependencies needed to execute native pip install "manticore[native]" ``` -Option 3: Installing from the `master` branch: +Option 3: Installing a nightly development build (fill in the latest version from [the PyPI history](https://pypi.org/project/manticore/#history)): + +```bash +pip install "manticore[native]==0.x.x.devYYMMDD" +``` + +Option 4: Installing from the `master` branch: ```bash git clone https://github.com/trailofbits/manticore.git @@ -54,7 +60,7 @@ cd manticore pip install -e ".[native]" ``` -Option 4: Install via Docker: +Option 5: Install via Docker: ```bash docker pull trailofbits/manticore @@ -216,9 +222,9 @@ for idx, val_list in enumerate(m.collect_returns()): * We're still in the process of implementing full support for the EVM Istanbul instruction semantics, so certain opcodes may not be supported. In a pinch, you can try compiling with Solidity 0.4.x to avoid generating those instructions. -## Using a different solverr (Z3, Yices, CVC4) -Manticore relies on an external solver supporting smtlib2. Curently Z3, Yices and CVC4 are supported and can be selected via commandline or configuration settings. -By default Manticore will use Z3. Once you installed a different solver you can choose a different solver like this: +## Using a different solver (Z3, Yices, CVC4) +Manticore relies on an external solver supporting smtlib2. Currently Z3, Yices and CVC4 are supported and can be selected via commandline or configuration settings. +By default Manticore will use Z3. Once you've installed a different solver, you can choose which one to use like this: ```manticore --smt.solver yices``` ### Installing CVC4 For more details go to https://cvc4.github.io/. Otherwise just get the binary and use it. diff --git a/setup.py b/setup.py index b644c87a2..a5076da94 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,7 @@ import os +import sys from setuptools import setup, find_packages +from datetime import date on_rtd = os.environ.get("READTHEDOCS") == "True" @@ -41,14 +43,21 @@ def rtd_dependent_deps(): with open(os.path.join(this_directory, "README.md"), encoding="utf-8") as f: long_description = f.read() + +# https://stackoverflow.com/a/4792601 grumble grumble +dev_extension = "" +if "--dev_release" in sys.argv: + dev_extension = ".dev" + date.today().strftime("%y%m%d") + sys.argv.remove("--dev_release") + setup( name="manticore", description="Manticore is a symbolic execution tool for analysis of binaries and smart contracts.", - long_description=long_description, long_description_content_type="text/markdown", + long_description=long_description, url="https://github.com/trailofbits/manticore", author="Trail of Bits", - version="0.3.4", + version="0.3.4" + dev_extension, packages=find_packages(exclude=["tests", "tests.*"]), python_requires=">=3.6", install_requires=[