diff options
Diffstat (limited to 'python/psutil/Makefile')
-rw-r--r-- | python/psutil/Makefile | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/python/psutil/Makefile b/python/psutil/Makefile new file mode 100644 index 000000000..1e4eb4b01 --- /dev/null +++ b/python/psutil/Makefile @@ -0,0 +1,122 @@ +# Shortcuts for various tasks (UNIX only). +# To use a specific Python version run: +# $ make install PYTHON=python3.3 + +# You can set these variables from the command line. +PYTHON = python +TSCRIPT = test/test_psutil.py + +all: test + +clean: + rm -f `find . -type f -name \*.py[co]` + rm -f `find . -type f -name \*.so` + rm -f `find . -type f -name .\*~` + rm -f `find . -type f -name \*.orig` + rm -f `find . -type f -name \*.bak` + rm -f `find . -type f -name \*.rej` + rm -rf `find . -type d -name __pycache__` + rm -rf *.core + rm -rf *.egg-info + rm -rf *\$testfile* + rm -rf .coverage + rm -rf .tox + rm -rf build + rm -rf dist + rm -rf docs/_build + rm -rf htmlcov + +build: clean + $(PYTHON) setup.py build + @# copies *.so files in ./psutil directory in order to allow + @# "import psutil" when using the interactive interpreter from within + @# this directory. + $(PYTHON) setup.py build_ext -i + +# useful deps which are nice to have while developing / testing +setup-dev-env: + python -c "import urllib2; \ + r = urllib2.urlopen('https://bootstrap.pypa.io/get-pip.py'); \ + open('/tmp/get-pip.py', 'w').write(r.read());" + $(PYTHON) /tmp/get-pip.py --user + rm /tmp/get-pip.py + $(PYTHON) -m pip install --user --upgrade pip + $(PYTHON) -m pip install --user --upgrade \ + coverage \ + flake8 \ + ipaddress \ + ipdb \ + mock==1.0.1 \ + nose \ + pep8 \ + pyflakes \ + sphinx \ + sphinx-pypi-upload \ + unittest2 \ + +install: build + $(PYTHON) setup.py install --user + +uninstall: + cd ..; $(PYTHON) -m pip uninstall -y -v psutil + +test: install + $(PYTHON) $(TSCRIPT) + +test-process: install + $(PYTHON) -m unittest -v test.test_psutil.TestProcess + +test-system: install + $(PYTHON) -m unittest -v test.test_psutil.TestSystemAPIs + +test-memleaks: install + $(PYTHON) test/test_memory_leaks.py + +# Run a specific test by name; e.g. "make test-by-name disk_" will run +# all test methods containing "disk_" in their name. +# Requires "pip install nose". +test-by-name: install + @$(PYTHON) -m nose test/test_psutil.py test/_* --nocapture -v -m $(filter-out $@,$(MAKECMDGOALS)) + +# Same as above but for test_memory_leaks.py script. +test-memleaks-by-name: install + @$(PYTHON) -m nose test/test_memory_leaks.py --nocapture -v -m $(filter-out $@,$(MAKECMDGOALS)) + +coverage: install + # Note: coverage options are controlled by .coveragerc file + rm -rf .coverage htmlcov + $(PYTHON) -m coverage run $(TSCRIPT) + $(PYTHON) -m coverage report + @echo "writing results to htmlcov/index.html" + $(PYTHON) -m coverage html + $(PYTHON) -m webbrowser -t htmlcov/index.html + +pep8: + @git ls-files | grep \\.py$ | xargs $(PYTHON) -m pep8 + +pyflakes: + @export PYFLAKES_NODOCTEST=1 && \ + git ls-files | grep \\.py$ | xargs $(PYTHON) -m pyflakes + +flake8: + @git ls-files | grep \\.py$ | xargs $(PYTHON) -m flake8 + +# Upload source tarball on https://pypi.python.org/pypi/psutil. +upload-src: clean + $(PYTHON) setup.py sdist upload + +# Build and upload doc on https://pythonhosted.org/psutil/. +# Requires "pip install sphinx-pypi-upload". +upload-doc: + cd docs; make html + $(PYTHON) setup.py upload_sphinx --upload-dir=docs/_build/html + +# git-tag a new release +git-tag-release: + git tag -a release-`python -c "import setup; print(setup.get_version())"` -m `git rev-list HEAD --count`:`git rev-parse --short HEAD` + echo "done; now run 'git push --follow-tags' to push the new tag on the remote repo" + +# install GIT pre-commit hook +install-git-hooks: + ln -sf ../../.git-pre-commit .git/hooks/pre-commit + chmod +x .git/hooks/pre-commit |