diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..f6baf160 --- /dev/null +++ b/Makefile @@ -0,0 +1,99 @@ +#!/usr/bin/make +# WARN: gmake syntax +######################################################## +# Makefile for $(NAME) +# +# useful targets: +# make check -- manifest checks +# make clean -- clean distutils +# make coverage_report -- code coverage report +# make flake8 -- flake8 checks +# make pylint -- source code checks +# make rpm -- build RPM package +# make sdist -- build python source distribution +# make systest -- runs the system tests +# make tests -- run all of the tests +# make unittest -- runs the unit tests +# +# Notes: +# 1) flake8 is a wrapper around pep8, pyflakes, and McCabe. +######################################################## +# variable section + +NAME = "python_jenkinsfile_testing" + +PYTHON=python +COVERAGE=coverage +NOSE_OPTS = --with-coverage --cover-package=$(NAME) +SITELIB = $(shell $(PYTHON) -c "from distutils.sysconfig import get_python_lib; print get_python_lib()") + +VERSION := $(shell awk '/__version__/{print $$NF}' $(NAME)/__init__.py | sed "s/'//g") + +RPMSPECDIR = . +RPMSPEC = $(RPMSPECDIR)/$(NAME).spec +RPMRELEASE = 1 +RPMNVR = "$(NAME)-$(VERSION)-$(RPMRELEASE)" + +FLAKE8_IGNORE = E302,E203,E261 + +######################################################## + +all: clean check flake8 pylint tests + +flake8: + flake8 --ignore=$(FLAKE8_IGNORE) $(NAME)/ + flake8 --ignore=$(FLAKE8_IGNORE),E402 tests/ + +pylint: + find ./$(NAME) ./tests -name \*.py | xargs pylint --rcfile .pylintrc + +check: + @echo "Check-manifest disabled pending https://github.com/mgedmin/check-manifest/issues/68" + #check-manifest + +clean: + @echo "Cleaning up distutils stuff" + rm -rf build + rm -rf dist + rm -rf MANIFEST + rm -rf *.egg-info + @echo "Cleaning up byte compiled python stuff" + find . -type f -regex ".*\.py[co]$$" -delete + @echo "Cleaning up doc builds" + rm -rf docs/_build + rm -rf docs/api_modules + rm -rf docs/client_modules + @echo "Cleaning up test reports" + rm -rf report/* + +rpmcommon: sdist + @mkdir -p rpmbuild + @cp dist/*.gz rpmbuild/ + @cp -R conf/* rpmbuild/ + @sed -e 's#^Version:.*#Version: $(VERSION)#' -e 's#^Release:.*#Release: $(RPMRELEASE)#' $(RPMSPEC) >rpmbuild/$(NAME).spec + +rpm: rpmcommon + @rpmbuild --define "_topdir %(pwd)/rpmbuild" \ + --define "_builddir %{_topdir}" \ + --define "_rpmdir %{_topdir}" \ + --define "_srcrpmdir %{_topdir}" \ + --define "_specdir $(RPMSPECDIR)" \ + --define "_sourcedir %{_topdir}" \ + --define "_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm" \ + --define "__python /usr/bin/python" \ + -ba rpmbuild/$(NAME).spec + @rm -f rpmbuild/$(NAME).spec + +sdist: clean + $(PYTHON) setup.py sdist + +tests: unittest systest coverage_report + +unittest: clean + nosetests $(NOSE_OPTS) tests/unit/* + +systest: clean + nosetests $(NOSE_OPTS) tests/system/* + +coverage_report: + $(COVERAGE) report --rcfile=".coveragerc"