forked from ethereum/hexbytes
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
129 lines (98 loc) · 3.96 KB
/
Makefile
File metadata and controls
129 lines (98 loc) · 3.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
CURRENT_SIGN_SETTING := $(shell git config commit.gpgSign)
.PHONY: clean-pyc clean-build docs
help:
@echo "clean-build - remove build artifacts"
@echo "clean-pyc - remove Python file artifacts"
@echo "clean - run clean-build and clean-pyc"
@echo "dist - build package and cat contents of the dist directory"
@echo "lint - fix linting issues with pre-commit"
@echo "test - run tests quickly with the default Python"
@echo "docs - generate docs and open in browser (linux-docs for version on linux)"
@echo "autobuild-docs - live update docs when changes are saved"
@echo "package-test - build package and install it in a venv for manual testing"
@echo "notes - consume towncrier newsfragments and update release notes in docs - requires bump to be set"
@echo "release - package and upload a release (does not run notes target) - requires bump to be set"
clean-build:
rm -fr build/
rm -fr dist/
rm -fr *.egg-info
clean-pyc:
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} +
find . -name '__pycache__' -exec rm -rf {} +
clean: clean-build clean-pyc
dist: clean
python -m build
ls -l dist
lint:
@pre-commit run --all-files --show-diff-on-failure || ( \
echo "\n\n\n * pre-commit should have fixed the errors above. Running again to make sure everything is good..." \
&& pre-commit run --all-files --show-diff-on-failure \
)
test:
python -m pytest tests
# docs commands
docs: check-docs
open docs/_build/html/index.html
linux-docs: check-docs
xdg-open docs/_build/html/index.html
autobuild-docs:
sphinx-autobuild --open-browser docs docs/_build/html
# docs helpers
validate-newsfragments:
python ./newsfragments/validate_files.py
towncrier build --draft --version preview
check-docs: build-docs validate-newsfragments
build-docs:
sphinx-apidoc -o docs/ . setup.py "*conftest*"
$(MAKE) -C docs clean
$(MAKE) -C docs html
$(MAKE) -C docs doctest
check-docs-ci: build-docs build-docs-ci validate-newsfragments
build-docs-ci:
$(MAKE) -C docs latexpdf
$(MAKE) -C docs epub
# release commands
package-test: clean
python -m build
python scripts/release/test_package.py
notes: check-bump
# Let UPCOMING_VERSION be the version that is used for the current bump
$(eval UPCOMING_VERSION=$(shell bump-my-version bump --dry-run $(bump) -v | awk -F"'" '/New version will be / {print $$2}'))
# Now generate the release notes to have them included in the release commit
towncrier build --yes --version $(UPCOMING_VERSION)
# Before we bump the version, make sure that the towncrier-generated docs will build
make build-docs
git commit -m "Compile release notes for v$(UPCOMING_VERSION)"
release: check-bump check-git clean
# verify that notes command ran correctly
./newsfragments/validate_files.py is-empty
CURRENT_SIGN_SETTING=$(git config commit.gpgSign)
git config commit.gpgSign true
bump-my-version bump $(bump)
python -m build
git config commit.gpgSign "$(CURRENT_SIGN_SETTING)"
git push upstream && git push upstream --tags
twine upload dist/*
# release helpers
check-bump:
ifndef bump
$(error bump must be one of: major, minor, patch, stage, or devnum)
endif
check-git:
# require that upstream is configured for ethereum/hexbytes
@if ! git remote -v | grep "upstream[[:space:]]git@github.com:ethereum/hexbytes.git (push)\|upstream[[:space:]]https://github.com/ethereum/hexbytes (push)"; then \
echo "Error: You must have a remote named 'upstream' that points to 'hexbytes'"; \
exit 1; \
fi
benchmark: run-benchmarks benchmark-results
run-benchmarks:
pytest --benchmark-only --benchmark-json=benchmark.json benchmarks/
benchmark-parse:
python scripts/benchmark/parse_benchmark_output.py benchmark.json pytest_benchmark_results.json
benchmark-compare:
python scripts/benchmark/compare_benchmark_results.py pytest_benchmark_results.json pytest_benchmark_diff.json
benchmark-markdown:
python scripts/benchmark/generate_benchmark_markdown.py
benchmark-results: benchmark-parse benchmark-compare benchmark-markdown