From 24f3657afa74d87d97a36f3a09ce0bbb16c3f773 Mon Sep 17 00:00:00 2001 From: FrantiĊĦek Zatloukal Date: Jan 25 2019 09:53:46 +0000 Subject: Use qa-make --- diff --git a/Makefile b/Makefile index f8d1b3c..28fde3b 100644 --- a/Makefile +++ b/Makefile @@ -1,87 +1,133 @@ -# -# Copyright 2013, Red Hat, Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -# - -.PHONY: test test-ci pylint pep8 docs clean virtualenv - -# general variables -VENV=test_env -SRC=oraculum +# Copyright 2018, Red Hat, Inc. +# License: GPL-2.0+ +# See the LICENSE file for more details on Licensing + +####################################################################### +# _____ _ _ _ _ _ # +# / ____| | | (_) | | | (_) # +# | | ___ _ __ | |_ _ __ _| |__ _ _| |_ _ _ __ __ _ # +# | | / _ \| '_ \| __| '__| | '_ \| | | | __| | '_ \ / _` | # +# | |___| (_) | | | | |_| | | | |_) | |_| | |_| | | | | (_| | # +# \_____\___/|_| |_|\__|_| |_|_.__/ \__,_|\__|_|_| |_|\__, | # +# __/ | # +# If you want to add/fix anything here, please create |___/ # +# PR at qa-make https://pagure.io/fedora-qa/qa-make # +# # +####################################################################### + +# Allows to print variables, eg. make print-SRC +print-% : ; @echo $* = $($*) + +# Get variables from Makefile.cfg +SRC=$(shell grep -s SRC Makefile.cfg | sed 's/SRC=//') +VENV=$(shell grep -s VENV Makefile.cfg | sed 's/VENV=//') +MODULENAME=$(shell grep -s MODULENAME Makefile.cfg | sed 's/MODULENAME=//') + +# Try to detect SRC in case we didn't find Makefile.cfg +ifeq ($(SRC),) +SRC=$(shell rpmspec -q --queryformat="%{NAME}\n" *.spec | head -1) +SPECNUM=$(shell ls -1 *.spec | wc -l) +ifneq ($(SPECNUM),1) +$(error Make sure you have either one spec file in the directory or configure it in Makefile.cfg) +endif +endif # Variables used for packaging SPECFILE=$(SRC).spec BASEARCH:=$(shell uname -i) DIST:=$(shell rpm --eval '%{dist}') -VERSION:=$(shell rpmspec -q --queryformat="%{VERSION}\n" $(SPECFILE) | uniq) -RELEASE:=$(subst $(DIST),,$(shell rpmspec -q --queryformat="%{RELEASE}\n" $(SPECFILE) | uniq)) +TARGETVER:=$(shell lsb_release -r |grep -o '[0-9]*') +TARGETDIST:=fc$(TARGETVER) +VERSION:=$(shell rpmspec -q --queryformat="%{VERSION}\n" $(SPECFILE) | head -1) +RELEASE:=$(shell rpmspec -q --queryformat="%{RELEASE}\n" $(SPECFILE) | head -1 | sed 's/$(DIST)/\.$(TARGETDIST)/g') NVR:=$(SRC)-$(VERSION)-$(RELEASE) GITBRANCH:=$(shell git rev-parse --abbrev-ref HEAD) -TARGETDIST:=fc20 -BUILDTARGET=fedora-20-x86_64 +BUILDTARGET:=fedora-$(TARGETVER)-x86_64 +KOJITARGET:=$(shell echo $(TARGETDIST) | sed 's/c//' | sed 's/el/epel-/') +.PHONY: update-makefile +update-makefile: + curl --fail https://pagure.io/fedora-qa/qa-make/raw/master/f/Makefile -o Makefile.new + if ! cmp Makefile Makefile.new ; then mv Makefile.new Makefile ; fi + +.PHONY: test +.ONESHELL: test test: $(VENV) - sh -c "TEST='true' . $(VENV)/bin/activate; py.test --cov $(SRC) testing/; deactivate" + set -e + source $(VENV)/bin/activate; + TEST='true' py.test --cov-report=term-missing --cov $(MODULENAME); + deactivate +.PHONY: test-ci +.ONESHELL: test-ci test-ci: $(VENV) - sh -c "TEST='true' . $(VENV)/bin/activate; py.test --cov-report xml --cov $(SRC) testing/; deactivate" + set -e + source $(VENV)/bin/activate + TEST='true' py.test --cov-report=xml --cov $(MODULENAME) + deactivate +.PHONY: pylint pylint: pylint -f parseable $(SRC) | tee pylint.out +.PHONY: pep8 pep8: pep8 $(SRC)/*.py $(SRC)/*/*.py | tee pep8.out +.PHONY: ci ci: test-ci pylint pep8 +.PHONY: docs docs: sphinx-build -b html -d docs/_build/doctrees docs/source docs/_build/html +.PHONY: clean clean: rm -rf dist - rm -rf oraculum.egg-info + rm -rf $(SRC).egg-info rm -rf build rm -f pep8.out rm -f pylint.out +.PHONY: archive archive: $(SRC)-$(VERSION).tar.gz +.PHONY: $(SRC)-$(VERSION).tar.gz $(SRC)-$(VERSION).tar.gz: git archive $(GITBRANCH) --prefix=$(SRC)-$(VERSION)/ | gzip -c9 > $@ + mkdir -p build/$(VERSION)-$(RELEASE) + mv $(SRC)-$(VERSION).tar.gz build/$(VERSION)-$(RELEASE)/ -mocksrpm: archive - mock -r $(BUILDTARGET) --buildsrpm --spec $(SPECFILE) --sources . - cp /var/lib/mock/$(BUILDTARGET)/result/$(NVR).$(TARGETDIST).src.rpm . +.PHONY: srpm +srpm: archive + mock -r $(BUILDTARGET) --buildsrpm --spec $(SPECFILE) --sources build/$(VERSION)-$(RELEASE)/ + cp /var/lib/mock/$(BUILDTARGET)/result/$(NVR).src.rpm build/$(VERSION)-$(RELEASE)/ -mockbuild: mocksrpm - mock -r $(BUILDTARGET) --no-clean --rebuild $(NVR).$(TARGETDIST).src.rpm - cp /var/lib/mock/$(BUILDTARGET)/result/$(NVR).$(TARGETDIST).noarch.rpm . +.PHONY: build +build: srpm + mock -r $(BUILDTARGET) --no-clean --rebuild build/$(VERSION)-$(RELEASE)/$(NVR).src.rpm + cp /var/lib/mock/$(BUILDTARGET)/result/*.rpm build/$(VERSION)-$(RELEASE)/ -#kojibuild: mocksrpm -# koji build --scratch dist-6E-epel-testing-candidate $(NVR).$(TARGETDIST).src.rpm +.PHONY: scratch +scratch: srpm + koji build --scratch $(KOJITARGET) build/$(VERSION)-$(RELEASE)/$(NVR).src.rpm +.PHONY: nvr nvr: @echo $(NVR) +.PHONY: cleanvenv cleanvenv: rm -rf $(VENV) +.PHONY: virtualenv virtualenv: $(VENV) +.PHONY: $(VENV) +.ONESHELL: $(VENV) $(VENV): - virtualenv --distribute --system-site-packages $(VENV) - sh -c ". $(VENV)/bin/activate; pip install --force-reinstall -r requirements.txt; deactivate" - + virtualenv --system-site-packages $(VENV) + set -e + source $(VENV)/bin/activate + pip install -r requirements.txt + deactivate