Message ID | 1455626399-7111-16-git-send-email-famz@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Fam Zheng <famz@redhat.com> writes: > From: Alex Bennée <alex.bennee@linaro.org> > > Instead of providing a live version of the source tree to the docker > container we snapshot it with git-archive. This ensure the tree is in a > pristine state for whatever operations the container is going to run on > them. > > Uncommitted changes known to files known by the git index will be > included in the snapshot if there are any. > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > [Generate an unique directory under /tmp/ - Fam Zheng] But the docker-run-% rule never uses the source copy we just made. > Signed-off-by: Fam Zheng <famz@redhat.com> > --- > tests/docker/Makefile.include | 22 ++++++++++++++++++---- > 1 file changed, 18 insertions(+), 4 deletions(-) > > diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include > index aaf7d23..7cc2130 100644 > --- a/tests/docker/Makefile.include > +++ b/tests/docker/Makefile.include > @@ -2,7 +2,7 @@ > > $(if $(quiet-command),,$(eval include $(SRC_PATH)/rules.mak)) > > -.PHONY: docker docker-test docker-clean docker-image > +.PHONY: docker docker-test docker-clean docker-image docker-qemu-src > > DOCKER_SUFFIX := .docker > > @@ -16,6 +16,21 @@ DOCKER_TOOLS := travis > > TESTS ?= % > IMAGES ?= % > +SRC_COPY := $(shell mktemp -u /tmp/qemu-src.XXXXX) > + > +.PHONY: $(SRC_COPY) > + > +$(SRC_COPY): > + @mkdir -p $@ > + $(call quiet-command, \ > + mkdir -p $@ && (if git diff-index --quiet HEAD -- &>/dev/null; then \ > + git archive -1 HEAD --format=tar.gz; \ > + else \ > + git archive -1 $$(git stash create) --format=tar.gz; \ > + fi) | tar -xz -C $@, \ > + " COPY SRC $@") > + > +docker-qemu-src: $(SRC_COPY) > > $(foreach i,$(DOCKER_IMAGES), \ > $(eval docker-image: docker-image-$i) \ > @@ -23,8 +38,7 @@ $(foreach i,$(DOCKER_IMAGES), \ > $(eval .PHONY: docker-image-$i docker-@$i) \ > $(foreach t,$(DOCKER_TESTS) $(DOCKER_TOOLS), \ > $(eval .PHONY: docker-$t@$i) \ > - $(eval docker-$t@$i: docker-image-$i) \ > - $(eval docker-$t@$i: docker-run-$t@$i) \ > + $(eval docker-$t@$i: docker-image-$i docker-run-$t@$i) \ > $(eval docker-@$i: docker-$t@$i) \ > $(eval docker-test: docker-run-$t@$i) \ > ) \ > @@ -73,7 +87,7 @@ docker-image-%: > > docker-run-%: CMD = $(shell echo '$@' | sed -e 's/docker-run-\([^@]*\)@\(.*\)/\1/') > docker-run-%: IMAGE = $(shell echo '$@' | sed -e 's/docker-run-\([^@]*\)@\(.*\)/\2/') > -docker-run-%: > +docker-run-%: docker-qemu-src > @if test -z "$(IMAGE)" || test -z "$(CMD)"; \ > then echo "Invalid target"; exit 1; \ > fi -- Alex Bennée
On Tue, 03/01 20:16, Alex Bennée wrote: > > Fam Zheng <famz@redhat.com> writes: > > > From: Alex Bennée <alex.bennee@linaro.org> > > > > Instead of providing a live version of the source tree to the docker > > container we snapshot it with git-archive. This ensure the tree is in a > > pristine state for whatever operations the container is going to run on > > them. > > > > Uncommitted changes known to files known by the git index will be > > included in the snapshot if there are any. > > > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > > [Generate an unique directory under /tmp/ - Fam Zheng] > > But the docker-run-% rule never uses the source copy we just made. I failed in Makefile magic: pattern rules and dynamically generated rules mustn't be used mixed, otherwise the former will be ignored. Will fix. Fam
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index aaf7d23..7cc2130 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -2,7 +2,7 @@ $(if $(quiet-command),,$(eval include $(SRC_PATH)/rules.mak)) -.PHONY: docker docker-test docker-clean docker-image +.PHONY: docker docker-test docker-clean docker-image docker-qemu-src DOCKER_SUFFIX := .docker @@ -16,6 +16,21 @@ DOCKER_TOOLS := travis TESTS ?= % IMAGES ?= % +SRC_COPY := $(shell mktemp -u /tmp/qemu-src.XXXXX) + +.PHONY: $(SRC_COPY) + +$(SRC_COPY): + @mkdir -p $@ + $(call quiet-command, \ + mkdir -p $@ && (if git diff-index --quiet HEAD -- &>/dev/null; then \ + git archive -1 HEAD --format=tar.gz; \ + else \ + git archive -1 $$(git stash create) --format=tar.gz; \ + fi) | tar -xz -C $@, \ + " COPY SRC $@") + +docker-qemu-src: $(SRC_COPY) $(foreach i,$(DOCKER_IMAGES), \ $(eval docker-image: docker-image-$i) \ @@ -23,8 +38,7 @@ $(foreach i,$(DOCKER_IMAGES), \ $(eval .PHONY: docker-image-$i docker-@$i) \ $(foreach t,$(DOCKER_TESTS) $(DOCKER_TOOLS), \ $(eval .PHONY: docker-$t@$i) \ - $(eval docker-$t@$i: docker-image-$i) \ - $(eval docker-$t@$i: docker-run-$t@$i) \ + $(eval docker-$t@$i: docker-image-$i docker-run-$t@$i) \ $(eval docker-@$i: docker-$t@$i) \ $(eval docker-test: docker-run-$t@$i) \ ) \ @@ -73,7 +87,7 @@ docker-image-%: docker-run-%: CMD = $(shell echo '$@' | sed -e 's/docker-run-\([^@]*\)@\(.*\)/\1/') docker-run-%: IMAGE = $(shell echo '$@' | sed -e 's/docker-run-\([^@]*\)@\(.*\)/\2/') -docker-run-%: +docker-run-%: docker-qemu-src @if test -z "$(IMAGE)" || test -z "$(CMD)"; \ then echo "Invalid target"; exit 1; \ fi