-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathMakefile
123 lines (100 loc) · 3.93 KB
/
Makefile
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
# Makefile for Python project
.DELETE_ON_ERROR:
.PHONY: FORCE
.SUFFIXES:
SHELL:=/bin/bash -o pipefail
SELF:=$(firstword $(MAKEFILE_LIST))
############################################################################
#= BASIC USAGE
default: help
#=> help -- display this help message
help:
@sbin/makefile-extract-documentation "${SELF}"
############################################################################
#= SETUP, INSTALLATION, PACKAGING
#=> venv: make a Python 2 (for now) virtual environment
.PHONY: venv
venv:
virtualenv -p python2 venv; \
source venv/bin/activate; \
pip install --upgrade pip setuptools
#=> setup: setup/upgrade packages *in current environment*
.PHONY: setup
setup: etc/develop.reqs etc/install.reqs
if [ -s "$(word 1,$^)" ]; then pip install --upgrade -r $(word 1,$^); fi
if [ -s "$(word 2,$^)" ]; then pip install --upgrade -r $(word 2,$^); fi
#=> devready: create venv, install prerequisites, install pkg in develop mode
.PHONY: devready
devready:
make venv && source venv/bin/activate && make setup develop
@echo '#############################################################################'
@echo '### Do not forget to `source venv/bin/activate` to use this environment ###'
@echo '#############################################################################'
#=> develop: install package in develop mode
#=> install: install package
#=> bdist bdist_egg bdist_wheel build sdist: distribution options
.PHONY: bdist bdist_egg bdist_wheel build build_sphinx sdist install develop
bdist bdist_egg bdist_wheel build sdist install develop: %:
python setup.py $@
#=> upload: upload to pypi
#=> upload_*: upload to named pypi service (requires config in ~/.pypirc)
.PHONY: upload upload_%
upload: upload_pypi
upload_%:
python setup.py bdist_egg bdist_wheel sdist upload -r $*
############################################################################
#= TESTING
# see test configuration in setup.cfg
#=> test: execute tests
.PHONY: test
test:
python setup.py pytest --addopts="--cov=biocommons biocommons tests"
#=> tox: execute tests via tox
.PHONY: tox
tox:
tox
############################################################################
#= UTILITY TARGETS
# N.B. Although code is stored in github, I use hg and hg-git on the command line
#=> reformat: reformat code with yapf and commit
.PHONY: reformat
reformat:
@if hg sum | grep -qL '^commit:.*modified'; then echo "Repository not clean" 1>&2; exit 1; fi
@if hg sum | grep -qL ' applied'; then echo "Repository has applied patches" 1>&2; exit 1; fi
yapf -i -r seqrepo tests
hg commit -m "reformatted with yapf"
#=> docs -- make sphinx docs
.PHONY: doc docs
doc docs: develop
# RTD makes json. Build here to ensure that it works.
make -C doc html json
#=> clean: remove temporary and backup files
.PHONY: clean
clean:
find . \( -name \*~ -o -name \*.bak \) -print0 | xargs -0r rm
#=> cleaner: remove files and directories that are easily rebuilt
.PHONY: cleaner
cleaner: clean
rm -f devready.log
rm -fr .cache *.egg-info build dist doc/_build htmlcov
find . \( -name \*.pyc -o -name \*.orig -o -name \*.rej \) -print0 | xargs -0r rm
find . -name __pycache__ -print0 | xargs -0r rm -fr
#=> cleaner: remove files and directories that require more time/network fetches to rebuild
.PHONY: cleanest distclean
cleanest distclean: cleaner
rm -fr .eggs .tox venv
## <LICENSE>
## Copyright 2016 Source Code Committers
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
## </LICENSE>