| # 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 |