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