Makefile
author Pierre-Yves David <pierre-yves.david@octobus.net>
Tue, 07 Nov 2017 12:10:22 +0100
branchstable
changeset 3172 aed2cac9edc3
parent 2270 b53343c8d692
permissions -rw-r--r--
wireproto: avoid exposing pushkey abort for server without evolution Client with evolution enabled will query the 'obsolete' pushley namespace if no other way to request obsmarkers have been found. They will do this unconditionally as long as no other obsolescence related capabilities have been advertised by the server. The call is "harmless" since the namespace will be empty if obsmarkers exchange is disabled. However, since we forbid the use of pushkey for obsmarkers this lead to unexpected crash report for up to date client talking to a server with the evolve extensions but exchange disabled. We fix the issue by serving the expected empty namespace in this case. We keep forbidding the query if obsmarker exchange is enabled since new client should have picked another more effective was to fetch the data first. We also add some tests for this logic.

VERSION=$(shell python setup.py --version)

PYTHON=python

all: help

deb-prepare:
	python setup.py sdist --dist-dir ..
	mv -f ../hg-evolve-$(VERSION).tar.gz ../mercurial-evolve_$(VERSION).orig.tar.gz
	tar xf ../mercurial-evolve_$(VERSION).orig.tar.gz
	rm -rf ../mercurial-evolve_$(VERSION).orig
	mv hg-evolve-$(VERSION) ../mercurial-evolve_$(VERSION).orig
	cp -r debian/ ../mercurial-evolve_$(VERSION).orig/
	@cd ../mercurial-evolve_$(VERSION).orig && echo 'debian build directory ready at' `pwd`

install-home:
	$(PYTHON) setup.py install --home="$(HOME)" --prefix="" --force

# test targets
TESTFLAGS ?= $(shell echo $$HGTESTFLAGS)

HGTESTS=$(HGROOT)/tests

help:
	@echo 'Commonly used make targets:'
	@echo '  deb-prepare        - prepare the build of a debian package'
	@echo '  tests              - run all tests in the automatic test suite'
	@echo '  all-version-tests - run all tests against many hg versions'
	@echo '  tests-%s           - run all tests in the specified hg version'

all: help

_check_hgroot:
ifeq ($(HGROOT),)
	$(error HGROOT is not set to the root of the hg source tree)
endif

tests: _check_hgroot
	cd tests && $(PYTHON) $(HGTESTS)/run-tests.py $(TESTFLAGS)

# /!\ run outside of the compatibility branch output test will likely fails

test-%: _check_hgroot
	cd tests && $(PYTHON) $(HGTESTS)/run-tests.py $(TESTFLAGS) $@

tests-%: _check_hgroot
	hg -R $(HGROOT) checkout $$(echo $@ | sed s/tests-//) && \
	(cd $(HGROOT) ; $(MAKE) clean ) && \
	cd tests && $(PYTHON) $(HGTESTS)/run-tests.py $(TESTFLAGS)

# build a script to extract declared version
all-version-tests: tests-@

.PHONY: tests all-version-tests