[PULL,11/20] docker: filter out linux-user builds for mingw

Message ID 20180703101444.23778-12-alex.bennee@linaro.org
State New
Headers show
Series
  • Travis, Code Coverage and Cross Build updates
Related show

Commit Message

Alex Bennée July 3, 2018, 10:14 a.m.
The recent change from TARGET_DIRS to TARGET_LIST (208ecb3e1) had the
effect of defaulting all docker builds to the current configured set
of targets. This is actually reasonable behaviour but does run into
problems if you have linux-user builds configured and you want to test
the windows cross builds. This commit fixes that by adding a
DOCKER_FILTER_TARGETS variable which is special-cased for mingw builds
so we don't pass the whole set down.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

Cc: Paolo Bonzini <pbonzini@redhat.com>

-- 
2.17.1

Comments

Paolo Bonzini July 3, 2018, 1:44 p.m. | #1
On 03/07/2018 12:14, Alex Bennée wrote:
> The recent change from TARGET_DIRS to TARGET_LIST (208ecb3e1) had the

> effect of defaulting all docker builds to the current configured set

> of targets. This is actually reasonable behaviour but does run into

> problems if you have linux-user builds configured and you want to test

> the windows cross builds. This commit fixes that by adding a

> DOCKER_FILTER_TARGETS variable which is special-cased for mingw builds

> so we don't pass the whole set down.


> +# Special cases

> +#  mingw/windows builds cannot build linux-user

> +docker-%-win32-cross: DOCKER_FILTER_TARGETS = %-linux-user

> +docker-%-win64-cross: DOCKER_FILTER_TARGETS = %-linux-user

> +docker-test-mingw@%: DOCKER_FILTER_TARGETS = %-linux-user


Some questions:

1) Any reason to keep all three?

2) Can we do it in the test script instead?

3) DEF_TARGET_LIST in the test script becomes meaningless.

4) You now have to override TARGET_LIST with "make
TARGET_LIST=foo-softmmu docker-test-mingw@fedora".  Does this interact
badly with other uses of TARGET_LIST in the Makefile?

Thanks,

Paolo
Alex Bennée July 3, 2018, 7:45 p.m. | #2
Paolo Bonzini <pbonzini@redhat.com> writes:

> On 03/07/2018 12:14, Alex Bennée wrote:

>> The recent change from TARGET_DIRS to TARGET_LIST (208ecb3e1) had the

>> effect of defaulting all docker builds to the current configured set

>> of targets. This is actually reasonable behaviour but does run into

>> problems if you have linux-user builds configured and you want to test

>> the windows cross builds. This commit fixes that by adding a

>> DOCKER_FILTER_TARGETS variable which is special-cased for mingw builds

>> so we don't pass the whole set down.

>

>> +# Special cases

>> +#  mingw/windows builds cannot build linux-user

>> +docker-%-win32-cross: DOCKER_FILTER_TARGETS = %-linux-user

>> +docker-%-win64-cross: DOCKER_FILTER_TARGETS = %-linux-user

>> +docker-test-mingw@%: DOCKER_FILTER_TARGETS = %-linux-user

>

> Some questions:

>

> 1) Any reason to keep all three?


We could prune but it doesn't hurt.

>

> 2) Can we do it in the test script instead?

>

> 3) DEF_TARGET_LIST in the test script becomes meaningless.


Good point.

>

> 4) You now have to override TARGET_LIST with "make

> TARGET_LIST=foo-softmmu docker-test-mingw@fedora".  Does this interact

> badly with other uses of TARGET_LIST in the Makefile?


Yeah I originally thought this made sense from the "docker builds the
same as my configured setup" sense but your right that's overkill.

>

> Thanks,

>

> Paolo



--
Alex Bennée

Patch

diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index 91d9665517..1813ec0781 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -20,6 +20,9 @@  DOCKER_SCRIPT=$(SRC_PATH)/tests/docker/docker.py
 TESTS ?= %
 IMAGES ?= %
 
+# This is used to filter targets from some docker builds
+DOCKER_FILTER_TARGETS ?=
+
 CUR_TIME := $(shell date +%Y-%m-%d-%H.%M.%S.$$$$)
 DOCKER_SRC_COPY := $(BUILD_DIR)/docker-src.$(CUR_TIME)
 
@@ -108,6 +111,12 @@  $(foreach i,$(DOCKER_IMAGES) $(DOCKER_DEPRECATED_IMAGES), \
 	) \
 )
 
+# Special cases
+#  mingw/windows builds cannot build linux-user
+docker-%-win32-cross: DOCKER_FILTER_TARGETS = %-linux-user
+docker-%-win64-cross: DOCKER_FILTER_TARGETS = %-linux-user
+docker-test-mingw@%: DOCKER_FILTER_TARGETS = %-linux-user
+
 docker:
 	@echo 'Build QEMU and run tests inside Docker containers'
 	@echo
@@ -174,7 +183,7 @@  docker-run: docker-qemu-src
 			$(if $V,,--rm) 					\
 			$(if $(DEBUG),-ti,)				\
 			$(if $(NETWORK),$(if $(subst $(NETWORK),,1),--net=$(NETWORK)),--net=none) \
-			-e TARGET_LIST=$(subst $(SPACE),$(COMMA),$(TARGET_LIST))	\
+			-e TARGET_LIST=$(subst $(SPACE),$(COMMA),$(filter-out $(DOCKER_FILTER_TARGETS),$(TARGET_LIST)))	\
 			-e EXTRA_CONFIGURE_OPTS="$(EXTRA_CONFIGURE_OPTS)" \
 			-e V=$V -e J=$J -e DEBUG=$(DEBUG)		\
 			-e SHOW_ENV=$(SHOW_ENV) 			\
@@ -195,7 +204,8 @@  docker-run: docker-qemu-src
 docker-run-%: CMD = $(shell echo '$@' | sed -e 's/docker-run-\([^@]*\)@\(.*\)/\1/')
 docker-run-%: IMAGE = $(shell echo '$@' | sed -e 's/docker-run-\([^@]*\)@\(.*\)/\2/')
 docker-run-%:
-	@$(MAKE) docker-run TEST=$(CMD) IMAGE=qemu:$(IMAGE)
+	@$(MAKE) docker-run TEST=$(CMD) IMAGE=qemu:$(IMAGE) DOCKER_FILTER_TARGETS=$(DOCKER_FILTER_TARGETS)
+
 
 docker-clean:
 	$(call quiet-command, $(DOCKER_SCRIPT) clean)