Skip to content

Commit

Permalink
Enable nightly uploads to PyPI (#1757)
Browse files Browse the repository at this point in the history
* Add Github Actions config

* Handle nightly versioning

* Fix typos in README and PyPI upload

* Make image URL global

* Attempt today's upload

* Install wheel

* Fix indentation

* Only run on schedule

* Use versioned action, add nightly to readme

* Retest upload w/ hard-coded version

* Apparently v1 doesn't parse

* Revert to only scheduled
  • Loading branch information
Eric Hennenfent committed Jun 30, 2020
1 parent 4712491 commit a2f072f
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 9 deletions.
22 changes: 21 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}


18 changes: 12 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Manticore
<p align="center">
<img src="docs/images/manticore.png?raw=true" width="256" title="Manticore">
<img src="https://raw.githubusercontent.com/trailofbits/manticore/master/docs/images/manticore.png" width="256" title="Manticore">
</p>
<br />

Expand Down Expand Up @@ -46,15 +46,21 @@ 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
cd manticore
pip install -e ".[native]"
```

Option 4: Install via Docker:
Option 5: Install via Docker:

```bash
docker pull trailofbits/manticore
Expand Down Expand Up @@ -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.
Expand Down
13 changes: 11 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
@@ -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"

Expand Down Expand Up @@ -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=[
Expand Down

0 comments on commit a2f072f

Please sign in to comment.