qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates
@ 2018-07-05 16:03 Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 01/20] Revert "Makefile: Rename TARGET_DIRS to TARGET_LIST" Alex Bennée
                   ` (20 more replies)
  0 siblings, 21 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell; +Cc: qemu-devel, Alex Bennée

The following changes since commit 6cf495be0b445789eeb7e88a6015c8cf74d4c1cf:

  Merge remote-tracking branch 'remotes/jnsnow/tags/bitmaps-pull-request' into staging (2018-07-05 13:33:52 +0100)

are available in the Git repository at:

  https://github.com/stsquad/qemu.git tags/pull-code-coverage-and-build-tweaks-050718-3

for you to fetch changes up to 19c9a18f45fc8d8b8e96a6b8ea6074d08b6a8612:

  docker: add linux-user powered cross builder for QEMU (2018-07-05 16:57:39 +0100)

----------------------------------------------------------------
Code coverage and other build tweaks

  - revert 208ecb3e (and drop filter for mingw, tweak for check-tcg)
  - some travis speed-ups
  - modernise code coverage support
  - docker image cleanups
  - clean-up binfmt_misc docker infrastructure
  - add debian-powerpc-user-cross image for ppc32 build

----------------------------------------------------------------
Alex Bennée (14):
      Revert "Makefile: Rename TARGET_DIRS to TARGET_LIST"
      build-system: remove per-test GCOV reporting
      .gitignore: add .gcov files
      docker: add gcovr to travis image
      travis: add gcovr summary for GCOV build
      build-system: add clean-coverage target
      build-system: add coverage-report target
      linux-user: introduce preexit_cleanup
      linux-user: add gcov support to preexit_cleanup
      docker: drop QEMU build-dep from bootstrap
      docker: debian-bootstrap.pre allow customising of variant/url
      docker: add special handling for FROM:debian-%-user targets
      docker: add special rule for deboostrapped images
      docker: add linux-user powered cross builder for QEMU

Philippe Mathieu-Daudé (6):
      travis: do not waste time cloning unused submodules
      travis: test out-of-tree builds
      docker: ubuntu: Update the package list before installing new ones
      docker: ubuntu: Use SDL2
      docker: Clean the MXE base image
      docker: Do not run tests in 'intermediate' images

 .gitignore                                         |  1 +
 .travis.yml                                        | 14 ++++--
 MAINTAINERS                                        |  1 +
 Makefile                                           | 44 +++++++++++++-----
 configure                                          |  2 +-
 docs/devel/testing.rst                             | 21 ++++++---
 linux-user/Makefile.objs                           |  2 +-
 linux-user/exit.c                                  | 35 +++++++++++++++
 linux-user/qemu.h                                  |  8 ++++
 linux-user/syscall.c                               | 10 +----
 scripts/create_config                              |  2 +-
 scripts/travis/coverage-summary.sh                 | 27 +++++++++++
 tests/Makefile.include                             | 16 ++-----
 tests/docker/Makefile.include                      | 52 ++++++++++++++++++++--
 tests/docker/docker.py                             |  4 ++
 tests/docker/dockerfiles/debian-bootstrap.docker   |  2 -
 tests/docker/dockerfiles/debian-bootstrap.pre      | 11 ++++-
 .../dockerfiles/debian-powerpc-user-cross.docker   | 15 +++++++
 tests/docker/dockerfiles/debian8-mxe.docker        |  2 +-
 tests/docker/dockerfiles/travis.docker             |  2 +-
 tests/docker/dockerfiles/ubuntu.docker             |  8 ++--
 21 files changed, 223 insertions(+), 56 deletions(-)
 create mode 100644 linux-user/exit.c
 create mode 100755 scripts/travis/coverage-summary.sh
 create mode 100644 tests/docker/dockerfiles/debian-powerpc-user-cross.docker

-- 
2.17.1

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 01/20] Revert "Makefile: Rename TARGET_DIRS to TARGET_LIST"
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 02/20] travis: do not waste time cloning unused submodules Alex Bennée
                   ` (19 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell; +Cc: qemu-devel, Alex Bennée, Paolo Bonzini

This reverts commit 208ecb3e1acc8d55dab49fdf721a86d513691688. This was
causing problems by making DEF_TARGET_LIST pointless and having to
jump through hoops to build on mingw with a dully enabled config.
This includes a change to fix the per-guest TCG test probe which was
added after 208ecb3 and used TARGET_LIST.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>

diff --git a/Makefile b/Makefile
index 7ed9cc4a21..39fd4c0546 100644
--- a/Makefile
+++ b/Makefile
@@ -60,8 +60,8 @@ seems to have been used for an in-tree build. You can fix this by running \
 endif
 endif
 
-CONFIG_SOFTMMU := $(if $(filter %-softmmu,$(TARGET_LIST)),y)
-CONFIG_USER_ONLY := $(if $(filter %-user,$(TARGET_LIST)),y)
+CONFIG_SOFTMMU := $(if $(filter %-softmmu,$(TARGET_DIRS)),y)
+CONFIG_USER_ONLY := $(if $(filter %-user,$(TARGET_DIRS)),y)
 CONFIG_XEN := $(CONFIG_XEN_BACKEND)
 CONFIG_ALL=y
 -include config-all-devices.mak
@@ -365,8 +365,8 @@ DOCS=
 endif
 
 SUBDIR_MAKEFLAGS=$(if $(V),,--no-print-directory --quiet) BUILD_DIR=$(BUILD_DIR)
-SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(TARGET_LIST))
-SUBDIR_DEVICES_MAK_DEP=$(patsubst %, %-config-devices.mak.d, $(TARGET_LIST))
+SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(TARGET_DIRS))
+SUBDIR_DEVICES_MAK_DEP=$(patsubst %, %-config-devices.mak.d, $(TARGET_DIRS))
 
 ifeq ($(SUBDIR_DEVICES_MAK),)
 config-all-devices.mak:
@@ -469,7 +469,7 @@ config-host.h-timestamp: config-host.mak
 qemu-options.def: $(SRC_PATH)/qemu-options.hx $(SRC_PATH)/scripts/hxtool
 	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"GEN","$@")
 
-SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_LIST))
+SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
 SOFTMMU_SUBDIR_RULES=$(filter %-softmmu,$(SUBDIR_RULES))
 
 $(SOFTMMU_SUBDIR_RULES): $(block-obj-y)
@@ -513,7 +513,7 @@ ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS))
 romsubdir-%:
 	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C pc-bios/$* V="$(V)" TARGET_DIR="$*/" CFLAGS="$(filter -O% -g%,$(CFLAGS))",)
 
-ALL_SUBDIRS=$(TARGET_LIST) $(patsubst %,pc-bios/%, $(ROMS))
+ALL_SUBDIRS=$(TARGET_DIRS) $(patsubst %,pc-bios/%, $(ROMS))
 
 recurse-all: $(SUBDIR_RULES) $(ROMSUBDIR_RULES)
 
@@ -770,7 +770,7 @@ distclean: clean
 	rm -f docs/interop/qemu-qmp-ref.pdf docs/interop/qemu-ga-ref.pdf
 	rm -f docs/interop/qemu-qmp-ref.html docs/interop/qemu-ga-ref.html
 	rm -f docs/qemu-block-drivers.7
-	for d in $(TARGET_LIST); do \
+	for d in $(TARGET_DIRS); do \
 	rm -rf $$d || exit 1 ; \
         done
 	rm -Rf .sdk
@@ -871,7 +871,7 @@ endif
 		$(INSTALL_DATA) $(SRC_PATH)/pc-bios/keymaps/$$x "$(DESTDIR)$(qemu_datadir)/keymaps"; \
 	done
 	$(INSTALL_DATA) $(BUILD_DIR)/trace-events-all "$(DESTDIR)$(qemu_datadir)/trace-events-all"
-	for d in $(TARGET_LIST); do \
+	for d in $(TARGET_DIRS); do \
 	$(MAKE) $(SUBDIR_MAKEFLAGS) TARGET_DIR=$$d/ -C $$d $@ || exit 1 ; \
         done
 
@@ -1066,9 +1066,9 @@ endif
 	@echo  '  ctags/TAGS      - Generate tags file for editors'
 	@echo  '  cscope          - Generate cscope index'
 	@echo  ''
-	@$(if $(TARGET_LIST), \
+	@$(if $(TARGET_DIRS), \
 		echo 'Architecture specific targets:'; \
-		$(foreach t, $(TARGET_LIST), \
+		$(foreach t, $(TARGET_DIRS), \
 		printf "  %-30s - Build for %s\\n" $(patsubst %,subdir-%,$(t)) $(t);) \
 		echo '')
 	@echo  'Cleaning targets:'
diff --git a/configure b/configure
index b99ebdde24..2a7796ea80 100755
--- a/configure
+++ b/configure
@@ -6212,7 +6212,7 @@ qemu_version=$(head $source_path/VERSION)
 echo "VERSION=$qemu_version" >>$config_host_mak
 echo "PKGVERSION=$pkgversion" >>$config_host_mak
 echo "SRC_PATH=$source_path" >> $config_host_mak
-echo "TARGET_LIST=$target_list" >> $config_host_mak
+echo "TARGET_DIRS=$target_list" >> $config_host_mak
 if [ "$docs" = "yes" ] ; then
   echo "BUILD_DOCS=yes" >> $config_host_mak
 fi
diff --git a/scripts/create_config b/scripts/create_config
index 58948a67a4..d727e5e36e 100755
--- a/scripts/create_config
+++ b/scripts/create_config
@@ -107,7 +107,7 @@ case $line in
     target_name=${line#*=}
     echo "#define TARGET_NAME \"$target_name\""
     ;;
- TARGET_LIST=*)
+ TARGET_DIRS=*)
     # do nothing
     ;;
  TARGET_*=y) # configuration
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 1affc49ca3..0c0f9509f5 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -874,7 +874,7 @@ endif
 
 # QTest rules
 
-TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGET_LIST)))
+TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGET_DIRS)))
 ifeq ($(CONFIG_POSIX),y)
 QTEST_TARGETS = $(TARGETS)
 check-qtest-y=$(foreach TARGET,$(TARGETS), $(check-qtest-$(TARGET)-y))
@@ -938,14 +938,14 @@ check-report.html: check-report.xml
 
 # Per guest TCG tests
 
-LINUX_USER_TARGETS=$(filter %-linux-user,$(TARGET_LIST))
+LINUX_USER_TARGETS=$(filter %-linux-user,$(TARGET_DIRS))
 BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%, $(LINUX_USER_TARGETS))
 CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(LINUX_USER_TARGETS))
 RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(LINUX_USER_TARGETS))
 
 ifeq ($(HAVE_USER_DOCKER),y)
 # Probe for the Docker Builds needed for each build
-$(foreach PROBE_TARGET,$(TARGET_LIST), 				\
+$(foreach PROBE_TARGET,$(TARGET_DIRS), 				\
 	$(eval -include $(SRC_PATH)/tests/tcg/Makefile.probe) 	\
 	$(if $(DOCKER_PREREQ), 					\
 		$(eval build-tcg-tests-$(PROBE_TARGET): $(DOCKER_PREREQ))))
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 02/20] travis: do not waste time cloning unused submodules
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 01/20] Revert "Makefile: Rename TARGET_DIRS to TARGET_LIST" Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 03/20] travis: test out-of-tree builds Alex Bennée
                   ` (18 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell
  Cc: qemu-devel, Philippe Mathieu-Daudé, Alex Bennée,
	Fam Zheng

From: Philippe Mathieu-Daudé <f4bug@amsat.org>

Builds only require:
- dtc
- keycodemapdb
- capstone

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
[AJB: drop wget cache]
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

diff --git a/.travis.yml b/.travis.yml
index bd66c18fed..134d5331fe 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -66,8 +66,7 @@ git:
 before_install:
   - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew update ; fi
   - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install libffi gettext glib pixman ; fi
-  - wget -O - http://people.linaro.org/~alex.bennee/qemu-submodule-git-seed.tar.xz | tar -xvJ
-  - git submodule update --init --recursive
+  - git submodule update --init --recursive capstone dtc ui/keycodemapdb
 before_script:
   - ./configure ${CONFIG} || { cat config.log && exit 1; }
 script:
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 03/20] travis: test out-of-tree builds
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 01/20] Revert "Makefile: Rename TARGET_DIRS to TARGET_LIST" Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 02/20] travis: do not waste time cloning unused submodules Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 04/20] build-system: remove per-test GCOV reporting Alex Bennée
                   ` (17 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell
  Cc: qemu-devel, Philippe Mathieu-Daudé, Alex Bennée,
	Fam Zheng

From: Philippe Mathieu-Daudé <f4bug@amsat.org>

Force one config to build 'out-of-tree' (object files and executables
are created in a tree outside the project source code).

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

diff --git a/.travis.yml b/.travis.yml
index 134d5331fe..32188d51f1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -50,6 +50,8 @@ notifications:
     on_failure: always
 env:
   global:
+    - SRC_DIR="."
+    - BUILD_DIR="."
     - TEST_CMD="make check"
     - MAKEFLAGS="-j3"
   matrix:
@@ -68,11 +70,15 @@ before_install:
   - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install libffi gettext glib pixman ; fi
   - git submodule update --init --recursive capstone dtc ui/keycodemapdb
 before_script:
-  - ./configure ${CONFIG} || { cat config.log && exit 1; }
+  - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
+  - ${SRC_DIR}/configure ${CONFIG} || { cat config.log && exit 1; }
 script:
   - make ${MAKEFLAGS} && ${TEST_CMD}
 matrix:
   include:
+    # Test out-of-tree builds
+    - env: CONFIG="--enable-debug --enable-debug-tcg"
+           BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.."
     # Test with Clang for compile portability (Travis uses clang-5.0)
     - env: CONFIG="--disable-system"
       compiler: clang
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 04/20] build-system: remove per-test GCOV reporting
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (2 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 03/20] travis: test out-of-tree builds Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 05/20] .gitignore: add .gcov files Alex Bennée
                   ` (16 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell; +Cc: qemu-devel, Alex Bennée

I'm not entirely sure who's using this information and certainly in a
CI environment it just washes over as additional noise. Later patches
will provide new reporting options so a user who wants to analyse
individual tests will be able to use that to get the information.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst
index f33e5a8423..66ef219f69 100644
--- a/docs/devel/testing.rst
+++ b/docs/devel/testing.rst
@@ -158,12 +158,11 @@ rarely used. See "QEMU iotests" section below for more information.
 GCC gcov support
 ----------------
 
-``gcov`` is a GCC tool to analyze the testing coverage by instrumenting the
-tested code. To use it, configure QEMU with ``--enable-gcov`` option and build.
-Then run ``make check`` as usual. There will be additional ``gcov`` output as
-the testing goes on, showing the test coverage percentage numbers per analyzed
-source file. More detailed reports can be obtained by running ``gcov`` command
-on the output files under ``$build_dir/tests/``, please read the ``gcov``
+``gcov`` is a GCC tool to analyze the testing coverage by
+instrumenting the tested code. To use it, configure QEMU with
+``--enable-gcov`` option and build. Then run ``make check`` as usual.
+Reports can be obtained by running ``gcov`` command on the output
+files under ``$build_dir/tests/``, please read the ``gcov``
 documentation for more information.
 
 QEMU iotests
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 0c0f9509f5..a49282704e 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -897,26 +897,16 @@ GCOV_OPTIONS = -n $(if $(V),-f,)
 
 .PHONY: $(patsubst %, check-qtest-%, $(QTEST_TARGETS))
 $(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: subdir-%-softmmu $(check-qtest-y)
-	$(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
 	$(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
 		QTEST_QEMU_IMG=qemu-img$(EXESUF) \
 		MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$(( $${RANDOM:-0} % 255 + 1))} \
 		gtester $(GTESTER_OPTIONS) -m=$(SPEED) $(check-qtest-$*-y) $(check-qtest-generic-y),"GTESTER","$@")
-	$(if $(CONFIG_GCOV),@for f in $(gcov-files-$*-y) $(gcov-files-generic-y); do \
-	  echo Gcov report for $$f:;\
-	  $(GCOV) $(GCOV_OPTIONS) $$f -o `dirname $$f`; \
-	done,)
 
 .PHONY: $(patsubst %, check-%, $(check-unit-y) $(check-speed-y))
 $(patsubst %, check-%, $(check-unit-y) $(check-speed-y)): check-%: %
-	$(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
 	$(call quiet-command, \
 		MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$(( $${RANDOM:-0} % 255 + 1))} \
 		gtester $(GTESTER_OPTIONS) -m=$(SPEED) $*,"GTESTER","$*")
-	$(if $(CONFIG_GCOV),@for f in $(gcov-files-$(subst tests/,,$*)-y) $(gcov-files-generic-y); do \
-	  echo Gcov report for $$f:;\
-	  $(GCOV) $(GCOV_OPTIONS) $$f -o `dirname $$f`; \
-	done,)
 
 # gtester tests with XML output
 
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 05/20] .gitignore: add .gcov files
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (3 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 04/20] build-system: remove per-test GCOV reporting Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 06/20] docker: add gcovr to travis image Alex Bennée
                   ` (15 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell; +Cc: qemu-devel, Alex Bennée

These are temporary files generated on gcov runs and shouldn't be
included in the source tree.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

diff --git a/.gitignore b/.gitignore
index 9da3b3e626..5668d02782 100644
--- a/.gitignore
+++ b/.gitignore
@@ -155,6 +155,7 @@
 .sdk
 *.gcda
 *.gcno
+*.gcov
 /pc-bios/bios-pq/status
 /pc-bios/vgabios-pq/status
 /pc-bios/optionrom/linuxboot.asm
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 06/20] docker: add gcovr to travis image
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (4 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 05/20] .gitignore: add .gcov files Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 07/20] travis: add gcovr summary for GCOV build Alex Bennée
                   ` (14 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell
  Cc: qemu-devel, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé

Useful for debugging if nothing else as the gcovr on the Travis images
are a little old.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

diff --git a/tests/docker/dockerfiles/travis.docker b/tests/docker/dockerfiles/travis.docker
index c5ad39b533..03ebfb0ef2 100644
--- a/tests/docker/dockerfiles/travis.docker
+++ b/tests/docker/dockerfiles/travis.docker
@@ -5,7 +5,7 @@ ENV LC_ALL en_US.UTF-8
 RUN cat /etc/apt/sources.list | sed "s/# deb-src/deb-src/" >> /etc/apt/sources.list
 RUN apt-get update
 RUN apt-get -y build-dep qemu
-RUN apt-get -y install device-tree-compiler python2.7 python-yaml dh-autoreconf gdb strace lsof net-tools
+RUN apt-get -y install device-tree-compiler python2.7 python-yaml dh-autoreconf gdb strace lsof net-tools gcovr
 # Travis tools require PhantomJS / Neo4j / Maven accessible
 # in their PATH (QEMU build won't access them).
 ENV PATH /usr/local/phantomjs/bin:/usr/local/phantomjs:/usr/local/neo4j-3.2.7/bin:/usr/local/maven-3.5.2/bin:/usr/local/cmake-3.9.2/bin:/usr/local/clang-5.0.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 07/20] travis: add gcovr summary for GCOV build
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (5 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 06/20] docker: add gcovr to travis image Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 08/20] build-system: add clean-coverage target Alex Bennée
                   ` (13 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell
  Cc: qemu-devel, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé

This gives a more useful summary, sorted by descending % coverage,
after the tests have run. The final numbers will give an idea if our
coverage is getting better or worse.

To keep the width sane we need to post process the file that the old
gcovr tool generates. This is done with a mix of sed, awk and column
in the scripts/coverage-summary.sh script.

As quite a lot of lines don't get covered at all we filter out all the
0% lines. If the file doesn't appear it is not being exercised.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

diff --git a/.travis.yml b/.travis.yml
index 32188d51f1..95be6ec59f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -38,6 +38,7 @@ addons:
       - libvte-2.90-dev
       - sparse
       - uuid-dev
+      - gcovr
 
 # The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
 # to prevent IRC notifications from forks. This was created using:
@@ -86,6 +87,8 @@ matrix:
       compiler: clang
     # gprof/gcov are GCC features
     - env: CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
+      after_success:
+        - ${SRC_DIR}/scripts/travis/coverage-summary.sh
       compiler: gcc
     # We manually include builds which we disable "make check" for
     - env: CONFIG="--enable-debug --enable-tcg-interpreter"
diff --git a/MAINTAINERS b/MAINTAINERS
index 6630d691d1..6a13f70f99 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2166,6 +2166,7 @@ R: Philippe Mathieu-Daudé <f4bug@amsat.org>
 L: qemu-devel@nongnu.org
 S: Maintained
 F: .travis.yml
+F: scripts/travis/
 F: .shippable.yml
 F: tests/docker/
 F: tests/vm/
diff --git a/scripts/travis/coverage-summary.sh b/scripts/travis/coverage-summary.sh
new file mode 100755
index 0000000000..d7086cf9ca
--- /dev/null
+++ b/scripts/travis/coverage-summary.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+#
+# Author: Alex Bennée <alex.bennee@linaro.org>
+#
+# Summerise the state of code coverage with gcovr and tweak the output
+# to be more sane on Travis hosts. As we expect to be executed on a
+# throw away CI instance we do spam temp files all over the shop. You
+# most likely don't want to execute this script but just call gcovr
+# directly. See also "make coverage-report"
+#
+# This code is licensed under the GPL version 2 or later.  See
+# the COPYING file in the top-level directory.
+
+# first generate the coverage report
+gcovr -p -o raw-report.txt
+
+# strip the full-path and line markers
+sed s@$PWD\/@@ raw-report.txt | sed s/[0-9]\*[,-]//g > simplified.txt
+
+# reflow lines that got split
+awk '/.[ch]$/ { printf("%s", $0); next } 1' simplified.txt > rejoined.txt
+
+# columnify
+column -t rejoined.txt > final.txt
+
+# and dump, stripping out 0% coverage
+grep -v "0%" final.txt
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 08/20] build-system: add clean-coverage target
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (6 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 07/20] travis: add gcovr summary for GCOV build Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 09/20] build-system: add coverage-report target Alex Bennée
                   ` (12 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell; +Cc: qemu-devel, Alex Bennée

This can be used to remove any stale coverage data before any
particular test run. This is useful for analysing individual tests.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>---

diff --git a/Makefile b/Makefile
index 39fd4c0546..9731ec1bb7 100644
--- a/Makefile
+++ b/Makefile
@@ -723,6 +723,14 @@ module_block.h: $(SRC_PATH)/scripts/modules/module_block.py config-host.mak
 	$(addprefix $(SRC_PATH)/,$(patsubst %.mo,%.c,$(block-obj-m))), \
 	"GEN","$@")
 
+ifdef CONFIG_GCOV
+.PHONY: clean-coverage
+clean-coverage:
+	$(call quiet-command, \
+		find . \( -name '*.gcda' -o -name '*.gcov' \) -type f -exec rm {} +, \
+		"CLEAN", "coverage files")
+endif
+
 clean:
 # avoid old build problems by removing potentially incorrect old files
 	rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
@@ -1073,6 +1081,9 @@ endif
 		echo '')
 	@echo  'Cleaning targets:'
 	@echo  '  clean           - Remove most generated files but keep the config'
+ifdef CONFIG_GCOV
+	@echo  '  clean-coverage  - Remove coverage files'
+endif
 	@echo  '  distclean       - Remove all generated files'
 	@echo  '  dist            - Build a distributable tarball'
 	@echo  ''
diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst
index 66ef219f69..7f04ca104e 100644
--- a/docs/devel/testing.rst
+++ b/docs/devel/testing.rst
@@ -161,9 +161,14 @@ GCC gcov support
 ``gcov`` is a GCC tool to analyze the testing coverage by
 instrumenting the tested code. To use it, configure QEMU with
 ``--enable-gcov`` option and build. Then run ``make check`` as usual.
-Reports can be obtained by running ``gcov`` command on the output
-files under ``$build_dir/tests/``, please read the ``gcov``
-documentation for more information.
+
+If you want to gather coverage information on a single test the ``make
+clean-coverage`` target can be used to delete any existing coverage
+information before running a single test.
+
+Reports can be obtained by running ``gcov`` command
+on the output files under ``$build_dir/tests/``, please read the
+``gcov`` documentation for more information.
 
 QEMU iotests
 ============
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 09/20] build-system: add coverage-report target
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (7 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 08/20] build-system: add clean-coverage target Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 10/20] linux-user: introduce preexit_cleanup Alex Bennée
                   ` (11 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell; +Cc: qemu-devel, Alex Bennée

This will build a coverage report under the current directory in
reports/coverage. At the users option a report can be generated by
directly invoking something like:

  make foo/bar/coverage-report.html

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

diff --git a/Makefile b/Makefile
index 9731ec1bb7..2da686be33 100644
--- a/Makefile
+++ b/Makefile
@@ -986,6 +986,16 @@ docs/interop/qemu-qmp-ref.dvi docs/interop/qemu-qmp-ref.html \
     docs/interop/qemu-qmp-ref.txt docs/interop/qemu-qmp-ref.7: \
 	docs/interop/qemu-qmp-ref.texi docs/interop/qemu-qmp-qapi.texi
 
+# Reports/Analysis
+
+%/coverage-report.html:
+	@mkdir -p $*
+	$(call quiet-command,\
+		gcovr -p --html --html-details -o $@, \
+		"GEN", "coverage-report.html")
+
+.PHONY: coverage-report
+coverage-report: $(CURDIR)/reports/coverage/coverage-report.html
 
 ifdef CONFIG_WIN32
 
@@ -1095,6 +1105,9 @@ endif
 	@echo  'Documentation targets:'
 	@echo  '  html info pdf txt'
 	@echo  '                  - Build documentation in specified format'
+ifdef CONFIG_GCOV
+	@echo  '  coverage-report - Create code coverage report'
+endif
 	@echo  ''
 ifdef CONFIG_WIN32
 	@echo  'Windows targets:'
diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst
index 7f04ca104e..5e19cd50da 100644
--- a/docs/devel/testing.rst
+++ b/docs/devel/testing.rst
@@ -166,9 +166,14 @@ If you want to gather coverage information on a single test the ``make
 clean-coverage`` target can be used to delete any existing coverage
 information before running a single test.
 
-Reports can be obtained by running ``gcov`` command
-on the output files under ``$build_dir/tests/``, please read the
-``gcov`` documentation for more information.
+You can generate a HTML coverage report by executing ``make
+coverage-report`` which will create
+./reports/coverage/coverage-report.html. If you want to create it
+elsewhere simply execute ``make /foo/bar/baz/coverage-report.html``.
+
+Further analysis can be conducted by running the ``gcov`` command
+directly on the various .gcda output files. Please read the ``gcov``
+documentation for more information.
 
 QEMU iotests
 ============
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 10/20] linux-user: introduce preexit_cleanup
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (8 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 09/20] build-system: add coverage-report target Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 11/20] linux-user: add gcov support to preexit_cleanup Alex Bennée
                   ` (10 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell; +Cc: qemu-devel, Alex Bennée, Riku Voipio, Laurent Vivier

To avoid repeating ourselves move our preexit clean-up code into a
helper function. I figured the continuing effort to split of the
syscalls made it worthwhile creating a new file for it now.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>

diff --git a/linux-user/Makefile.objs b/linux-user/Makefile.objs
index 59a5c17354..b5dfb71f25 100644
--- a/linux-user/Makefile.objs
+++ b/linux-user/Makefile.objs
@@ -1,7 +1,7 @@
 obj-y = main.o syscall.o strace.o mmap.o signal.o \
 	elfload.o linuxload.o uaccess.o uname.o \
 	safe-syscall.o $(TARGET_ABI_DIR)/signal.o \
-        $(TARGET_ABI_DIR)/cpu_loop.o
+        $(TARGET_ABI_DIR)/cpu_loop.o exit.o
 
 obj-$(TARGET_HAS_BFLT) += flatload.o
 obj-$(TARGET_I386) += vm86.o
diff --git a/linux-user/exit.c b/linux-user/exit.c
new file mode 100644
index 0000000000..aed8713fae
--- /dev/null
+++ b/linux-user/exit.c
@@ -0,0 +1,28 @@
+/*
+ *  exit support for qemu
+ *
+ *  Copyright (c) 2018 Alex Bennée <alex.bennee@linaro.org>
+ *
+ *  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, see <http://www.gnu.org/licenses/>.
+ */
+#include "qemu/osdep.h"
+#include "qemu.h"
+
+void preexit_cleanup(CPUArchState *env, int code)
+{
+#ifdef TARGET_GPROF
+        _mcleanup();
+#endif
+        gdb_exit(env, code);
+}
diff --git a/linux-user/qemu.h b/linux-user/qemu.h
index 793cd4df04..bb85c81aa4 100644
--- a/linux-user/qemu.h
+++ b/linux-user/qemu.h
@@ -623,6 +623,14 @@ static inline int is_error(abi_long ret)
     return (abi_ulong)ret >= (abi_ulong)(-4096);
 }
 
+/**
+ * preexit_cleanup: housekeeping before the guest exits
+ *
+ * env: the CPU state
+ * code: the exit code
+ */
+void preexit_cleanup(CPUArchState *env, int code);
+
 /* Include target-specific struct and function definitions;
  * they may need access to the target-independent structures
  * above, so include them last.
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 50e20fb659..5822e03e28 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -8022,10 +8022,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
         }
 
         cpu_list_unlock();
-#ifdef TARGET_GPROF
-        _mcleanup();
-#endif
-        gdb_exit(cpu_env, arg1);
+        preexit_cleanup(cpu_env, arg1);
         _exit(arg1);
         ret = 0; /* avoid warning */
         break;
@@ -10131,10 +10128,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
 #ifdef __NR_exit_group
         /* new thread calls */
     case TARGET_NR_exit_group:
-#ifdef TARGET_GPROF
-        _mcleanup();
-#endif
-        gdb_exit(cpu_env, arg1);
+        preexit_cleanup(cpu_env, arg1);
         ret = get_errno(exit_group(arg1));
         break;
 #endif
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 11/20] linux-user: add gcov support to preexit_cleanup
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (9 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 10/20] linux-user: introduce preexit_cleanup Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 12/20] docker: ubuntu: Update the package list before installing new ones Alex Bennée
                   ` (9 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell; +Cc: qemu-devel, Alex Bennée, Riku Voipio, Laurent Vivier

As we don't always take the normal exit path when running a guest we
can skip the normal exit destructors where gcov normally dumps it's
info. The GCC manual suggests long running programs use __gcov_dump()
to flush out the coverage state periodically so we use that here.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

diff --git a/linux-user/exit.c b/linux-user/exit.c
index aed8713fae..14e94e28fa 100644
--- a/linux-user/exit.c
+++ b/linux-user/exit.c
@@ -19,10 +19,17 @@
 #include "qemu/osdep.h"
 #include "qemu.h"
 
+#ifdef CONFIG_GCOV
+extern void __gcov_dump(void);
+#endif
+
 void preexit_cleanup(CPUArchState *env, int code)
 {
 #ifdef TARGET_GPROF
         _mcleanup();
+#endif
+#ifdef CONFIG_GCOV
+        __gcov_dump();
 #endif
         gdb_exit(env, code);
 }
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 12/20] docker: ubuntu: Update the package list before installing new ones
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (10 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 11/20] linux-user: add gcov support to preexit_cleanup Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 13/20] docker: ubuntu: Use SDL2 Alex Bennée
                   ` (8 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell
  Cc: qemu-devel, Philippe Mathieu-Daudé, Alex Bennée,
	Fam Zheng

From: Philippe Mathieu-Daudé <f4bug@amsat.org>

Since docker caches the different layers, updating the package
list does not invalidate the previous "apt-get update" layer,
and it is likely "apt-get install" hits an outdated repository.

See https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#apt-get

This fixes:

  $ make docker-image-ubuntu V=1
  ./tests/docker/docker.py build qemu:ubuntu tests/docker/dockerfiles/ubuntu.docker   --add-current-user
  Sending build context to Docker daemon  3.072kB
  [...]
  E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/m/mesa/libgles2-mesa_17.0.7-0ubuntu0.16.04.2_amd64.deb  404  Not Found
  E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/m/mesa/libgles2-mesa-dev_17.0.7-0ubuntu0.16.04.2_amd64.deb  404  Not Found
  E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
  The command '/bin/sh -c apt-get -y install $PACKAGES' returned a non-zero code: 100
  tests/docker/Makefile.include:40: recipe for target 'docker-image-ubuntu' failed
  make: *** [docker-image-ubuntu] Error 1

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

diff --git a/tests/docker/dockerfiles/ubuntu.docker b/tests/docker/dockerfiles/ubuntu.docker
index dabbf2a8a4..c03520ce3f 100644
--- a/tests/docker/dockerfiles/ubuntu.docker
+++ b/tests/docker/dockerfiles/ubuntu.docker
@@ -1,7 +1,6 @@
 FROM ubuntu:16.04
 RUN echo "deb http://archive.ubuntu.com/ubuntu/ trusty universe multiverse" >> \
     /etc/apt/sources.list
-RUN apt-get update
 ENV PACKAGES flex bison \
     libusb-1.0-0-dev libiscsi-dev librados-dev libncurses5-dev libncursesw5-dev \
     libseccomp-dev libgnutls-dev libssh2-1-dev  libspice-server-dev \
@@ -13,6 +12,7 @@ ENV PACKAGES flex bison \
     libjemalloc-dev libcacard-dev libusbredirhost-dev libnfs-dev libcap-dev libattr1-dev \
     texinfo \
     gettext git make ccache python-yaml gcc clang sparse
-RUN apt-get -y install $PACKAGES
+RUN apt-get update && \
+    apt-get -y install $PACKAGES
 RUN dpkg -l $PACKAGES | sort > /packages.txt
 ENV FEATURES clang pyyaml
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 13/20] docker: ubuntu: Use SDL2
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (11 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 12/20] docker: ubuntu: Update the package list before installing new ones Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 14/20] docker: Clean the MXE base image Alex Bennée
                   ` (7 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell
  Cc: qemu-devel, Philippe Mathieu-Daudé, Alex Bennée,
	Fam Zheng

From: Philippe Mathieu-Daudé <f4bug@amsat.org>

Do not test the deprecated API versions (see cabd35840749d).
Debian MXE MinGW cross images are already using SDL2.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

diff --git a/tests/docker/dockerfiles/ubuntu.docker b/tests/docker/dockerfiles/ubuntu.docker
index c03520ce3f..7d724e7f53 100644
--- a/tests/docker/dockerfiles/ubuntu.docker
+++ b/tests/docker/dockerfiles/ubuntu.docker
@@ -5,7 +5,7 @@ ENV PACKAGES flex bison \
     libusb-1.0-0-dev libiscsi-dev librados-dev libncurses5-dev libncursesw5-dev \
     libseccomp-dev libgnutls-dev libssh2-1-dev  libspice-server-dev \
     libspice-protocol-dev libnss3-dev libfdt-dev \
-    libgtk-3-dev libvte-2.91-dev libsdl1.2-dev libpng12-dev libpixman-1-dev \
+    libgtk-3-dev libvte-2.91-dev libsdl2-dev libpng12-dev libpixman-1-dev \
     libvdeplug-dev liblzo2-dev libsnappy-dev libbz2-dev libxen-dev librdmacm-dev libibverbs-dev \
     libsasl2-dev libjpeg-turbo8-dev xfslibs-dev libcap-ng-dev libbrlapi-dev libcurl4-gnutls-dev \
     libbluetooth-dev librbd-dev libaio-dev glusterfs-common libnuma-dev libepoxy-dev libdrm-dev libgbm-dev \
@@ -15,4 +15,4 @@ ENV PACKAGES flex bison \
 RUN apt-get update && \
     apt-get -y install $PACKAGES
 RUN dpkg -l $PACKAGES | sort > /packages.txt
-ENV FEATURES clang pyyaml
+ENV FEATURES clang pyyaml sdl2
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 14/20] docker: Clean the MXE base image
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (12 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 13/20] docker: ubuntu: Use SDL2 Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 15/20] docker: Do not run tests in 'intermediate' images Alex Bennée
                   ` (6 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell
  Cc: qemu-devel, Philippe Mathieu-Daudé, Alex Bennée,
	Fam Zheng

From: Philippe Mathieu-Daudé <f4bug@amsat.org>

Using the duplicated same package is confusing.

Reported-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

diff --git a/tests/docker/dockerfiles/debian8-mxe.docker b/tests/docker/dockerfiles/debian8-mxe.docker
index 9b8e577b03..2df4cc8c5c 100644
--- a/tests/docker/dockerfiles/debian8-mxe.docker
+++ b/tests/docker/dockerfiles/debian8-mxe.docker
@@ -14,6 +14,6 @@ RUN apt-get update
 RUN DEBIAN_FRONTEND=noninteractive eatmydata \
     apt-get install -y --no-install-recommends \
         libpython2.7-stdlib \
-        $(apt-get -s install -y --no-install-recommends gw32.shared-mingw-w64 gw32.shared-mingw-w64 | egrep "^Inst mxe-x86-64-unknown-" | cut -d\  -f2)
+        $(apt-get -s install -y --no-install-recommends gw32.shared-mingw-w64 | egrep "^Inst mxe-x86-64-unknown-" | cut -d\  -f2)
 
 ENV PATH $PATH:/usr/lib/mxe/usr/bin/ 
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 15/20] docker: Do not run tests in 'intermediate' images
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (13 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 14/20] docker: Clean the MXE base image Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 16/20] docker: drop QEMU build-dep from bootstrap Alex Bennée
                   ` (5 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell
  Cc: qemu-devel, Philippe Mathieu-Daudé, Alex Bennée,
	Fam Zheng

From: Philippe Mathieu-Daudé <f4bug@amsat.org>

We can still build the DOCKER_INTERMEDIATE_IMAGES images,
but they won't appear in 'make test*@$IMAGE'.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index 91d9665517..942d05649f 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -5,6 +5,8 @@
 DOCKER_SUFFIX := .docker
 DOCKER_FILES_DIR := $(SRC_PATH)/tests/docker/dockerfiles
 DOCKER_DEPRECATED_IMAGES := debian
+# we don't run tests on intermediate images (used as base by another image)
+DOCKER_INTERMEDIATE_IMAGES := debian8 debian9 debian8-mxe debian-ports debian-sid
 DOCKER_IMAGES := $(filter-out $(DOCKER_DEPRECATED_IMAGES),$(sort $(notdir $(basename $(wildcard $(DOCKER_FILES_DIR)/*.docker)))))
 DOCKER_TARGETS := $(patsubst %,docker-image-%,$(DOCKER_IMAGES))
 # Use a global constant ccache directory to speed up repetitive builds
@@ -98,7 +100,7 @@ docker-image-travis: NOUSER=1
 docker-image-tricore-cross: docker-image-debian9
 
 # Expand all the pre-requistes for each docker image and test combination
-$(foreach i,$(DOCKER_IMAGES) $(DOCKER_DEPRECATED_IMAGES), \
+$(foreach i,$(filter-out $(DOCKER_INTERMEDIATE_IMAGES),$(DOCKER_IMAGES) $(DOCKER_DEPRECATED_IMAGES)), \
 	$(foreach t,$(DOCKER_TESTS) $(DOCKER_TOOLS), \
 		$(eval .PHONY: docker-$t@$i) \
 		$(eval docker-$t@$i: docker-image-$i docker-run-$t@$i) \
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 16/20] docker: drop QEMU build-dep from bootstrap
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (14 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 15/20] docker: Do not run tests in 'intermediate' images Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 17/20] docker: debian-bootstrap.pre allow customising of variant/url Alex Bennée
                   ` (4 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell
  Cc: qemu-devel, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé

This is best done with any child images that actually need it.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

diff --git a/tests/docker/dockerfiles/debian-bootstrap.docker b/tests/docker/dockerfiles/debian-bootstrap.docker
index 3a9125e497..14212b9cf4 100644
--- a/tests/docker/dockerfiles/debian-bootstrap.docker
+++ b/tests/docker/dockerfiles/debian-bootstrap.docker
@@ -17,5 +17,3 @@ RUN /debootstrap/debootstrap --second-stage
 # At this point we can install additional packages if we want
 # Duplicate deb line as deb-src
 RUN cat /etc/apt/sources.list | sed "s/deb/deb-src/" >> /etc/apt/sources.list
-RUN apt-get update
-RUN apt-get -y build-dep qemu
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 17/20] docker: debian-bootstrap.pre allow customising of variant/url
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (15 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 16/20] docker: drop QEMU build-dep from bootstrap Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 18/20] docker: add special handling for FROM:debian-%-user targets Alex Bennée
                   ` (3 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell
  Cc: qemu-devel, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé

We default to the buildd variant as most of our images are for
building. However lets give the user the ability to specify "minbase"
if they want to create a simple base image for experimentation.

Allowing the tweaking of DEB_URL means we can also bootstrap other
Debian based OS's. For example:

  make docker-binfmt-image-debian-ubuntu-bionic-arm64 \
       DEB_ARCH=arm64 DEB_TYPE=bionic \
       DEB_VARIANT=minbase DEB_URL=http://ports.ubuntu.com/ \
       EXECUTABLE=./aarch64-linux-user/qemu-aarch64

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

diff --git a/tests/docker/dockerfiles/debian-bootstrap.pre b/tests/docker/dockerfiles/debian-bootstrap.pre
index 7c76dce663..56e1aa7a21 100755
--- a/tests/docker/dockerfiles/debian-bootstrap.pre
+++ b/tests/docker/dockerfiles/debian-bootstrap.pre
@@ -32,6 +32,15 @@ if [ -z "${DEB_TYPE}" ]; then
 
 fi
 
+# The following allow finer grain control over the defaults
+if [ -z "${DEB_VARIANT}" ]; then
+    DEB_VARIANT=buildd
+fi
+
+if [ -z "${DEB_URL}" ]; then
+    DEB_URL="http://httpredir.debian.org/debian"
+fi
+
 # We check in order for
 #
 #  - DEBOOTSTRAP_DIR pointing at a development checkout
@@ -107,5 +116,5 @@ fi
 
 echo "Building a rootfs using ${FAKEROOT} and ${DEBOOTSTRAP} ${DEB_ARCH}/${DEB_TYPE}"
 
-${FAKEROOT} ${DEBOOTSTRAP} --variant=buildd --foreign --arch=$DEB_ARCH $DEB_TYPE . http://httpredir.debian.org/debian || exit 1
+${FAKEROOT} ${DEBOOTSTRAP} --variant=$DEB_VARIANT --foreign --arch=$DEB_ARCH $DEB_TYPE . $DEB_URL || exit 1
 exit 0
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 18/20] docker: add special handling for FROM:debian-%-user targets
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (16 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 17/20] docker: debian-bootstrap.pre allow customising of variant/url Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 19/20] docker: add special rule for deboostrapped images Alex Bennée
                   ` (2 subsequent siblings)
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell
  Cc: qemu-devel, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé

These will have been build with debootstrap so we need to check
against the debian-bootstrap dockerfile. This does mean sticking to
debian-FOO-user as the naming conventions for boot-strapped images.
The actual cross image is built on top.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

diff --git a/tests/docker/docker.py b/tests/docker/docker.py
index b279836154..69e7130db7 100755
--- a/tests/docker/docker.py
+++ b/tests/docker/docker.py
@@ -113,6 +113,10 @@ def _copy_binary_with_libs(src, dest_dir):
             _copy_with_mkdir(l , dest_dir, so_path)
 
 def _read_qemu_dockerfile(img_name):
+    # special case for Debian linux-user images
+    if img_name.startswith("debian") and img_name.endswith("user"):
+        img_name = "debian-bootstrap"
+
     df = os.path.join(os.path.dirname(__file__), "dockerfiles",
                       img_name + ".docker")
     return open(df, "r").read()
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 19/20] docker: add special rule for deboostrapped images
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (17 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 18/20] docker: add special handling for FROM:debian-%-user targets Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 20/20] docker: add linux-user powered cross builder for QEMU Alex Bennée
  2018-07-05 18:10 ` [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Peter Maydell
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell
  Cc: qemu-devel, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé

We might as well have a custom rule for this. For one thing the
dependencies are different. As the primary dependency for
docker-image-% could never be docker-image-debian-bootstrap we can
drop that test in the main rule as well.

Missing EXECUTABLE, DEB_ARCH and DEB_TYPE are treated as hard faults
now. We also error out if the EXECUTABLE file isn't there. We should
really do this with a dependency on any source rules but currently
subdir-FOO-linux-user isn't enough on a clean build.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index 942d05649f..7b99df5464 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -46,9 +46,6 @@ docker-image-%: $(DOCKER_FILES_DIR)/%.docker
 		"CHECK", "$*")
 else
 docker-image-%: $(DOCKER_FILES_DIR)/%.docker
-	@if test "$@" = docker-image-debian-bootstrap -a -z "$(EXECUTABLE)"; then \
-		echo WARNING: EXECUTABLE is not set, debootstrap may fail. 2>&1 ; \
-	fi
 	$(call quiet-command,\
 		$(DOCKER_SCRIPT) build qemu:$* $< \
 		$(if $V,,--quiet) $(if $(NOCACHE),--no-cache) \
@@ -56,6 +53,27 @@ docker-image-%: $(DOCKER_FILES_DIR)/%.docker
 		$(if $(EXTRA_FILES),--extra-files $(EXTRA_FILES))\
 		$(if $(EXECUTABLE),--include-executable=$(EXECUTABLE)),\
 		"BUILD","$*")
+
+# Special rule for debootstraped binfmt linux-user images
+docker-binfmt-image-debian-%: $(DOCKER_FILES_DIR)/debian-bootstrap.docker
+	$(if $(EXECUTABLE),,\
+		$(error EXECUTABLE not set, debootstrap of debian-$* would fail))
+	$(if $(wildcard $(EXECUTABLE)),,\
+		$(error Please build $(EXECUTABLE) first))
+	$(if $(DEB_ARCH),,\
+		$(error DEB_ARCH not set, debootstrap of debian-$* would fail))
+	$(if $(DEB_TYPE),,\
+		$(error DEB_TYPE not set, debootstrap of debian-$* would fail))
+	$(call quiet-command,						\
+		DEB_ARCH=$(DEB_ARCH)					\
+		DEB_TYPE=$(DEB_TYPE)					\
+		$(DOCKER_SCRIPT) build qemu:debian-$* $< 		\
+		$(if $V,,--quiet) $(if $(NOCACHE),--no-cache) 		\
+		$(if $(NOUSER),,--add-current-user) 			\
+		$(if $(EXTRA_FILES),--extra-files $(EXTRA_FILES))	\
+		$(if $(EXECUTABLE),--include-executable=$(EXECUTABLE)), \
+		"BUILD","binfmt debian-$* (debootstrapped)")
+
 endif
 
 # Enforce dependencies for composite images
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PULL v3 20/20] docker: add linux-user powered cross builder for QEMU
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (18 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 19/20] docker: add special rule for deboostrapped images Alex Bennée
@ 2018-07-05 16:03 ` Alex Bennée
  2018-07-05 18:10 ` [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Peter Maydell
  20 siblings, 0 replies; 22+ messages in thread
From: Alex Bennée @ 2018-07-05 16:03 UTC (permalink / raw)
  To: peter.maydell
  Cc: qemu-devel, Alex Bennée, Fam Zheng,
	Philippe Mathieu-Daudé

We can't use cross compilers in the current Debian stable and Debian
sid is sketchy as hell. So for powerpc fall back to dog-fooding our
own linux-user to do the build.

As we can only build the base image with a suitably configured
source tree we fall back to checking for its existence when we can't
build it from scratch. However this does mean you don't have to keep
a static powerpc-linux-user in your active configuration just to
update the cross build image.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index 7b99df5464..b2a7e761cc 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -64,15 +64,19 @@ docker-binfmt-image-debian-%: $(DOCKER_FILES_DIR)/debian-bootstrap.docker
 		$(error DEB_ARCH not set, debootstrap of debian-$* would fail))
 	$(if $(DEB_TYPE),,\
 		$(error DEB_TYPE not set, debootstrap of debian-$* would fail))
-	$(call quiet-command,						\
-		DEB_ARCH=$(DEB_ARCH)					\
-		DEB_TYPE=$(DEB_TYPE)					\
-		$(DOCKER_SCRIPT) build qemu:debian-$* $< 		\
-		$(if $V,,--quiet) $(if $(NOCACHE),--no-cache) 		\
-		$(if $(NOUSER),,--add-current-user) 			\
-		$(if $(EXTRA_FILES),--extra-files $(EXTRA_FILES))	\
-		$(if $(EXECUTABLE),--include-executable=$(EXECUTABLE)), \
-		"BUILD","binfmt debian-$* (debootstrapped)")
+	$(if $(filter $(QEMU_TARGET),$(TARGET_DIRS)),				\
+		$(call quiet-command,						\
+			DEB_ARCH=$(DEB_ARCH)					\
+			DEB_TYPE=$(DEB_TYPE)					\
+			$(DOCKER_SCRIPT) build qemu:debian-$* $< 		\
+			$(if $V,,--quiet) $(if $(NOCACHE),--no-cache) 		\
+			$(if $(NOUSER),,--add-current-user) 			\
+			$(if $(EXTRA_FILES),--extra-files $(EXTRA_FILES))	\
+			$(if $(EXECUTABLE),--include-executable=$(EXECUTABLE)), \
+			"BUILD","binfmt debian-$* (debootstrapped)"),		\
+		$(call quiet-command,						\
+			$(DOCKER_SCRIPT) check --quiet qemu:debian-$* $<,	\
+			"CHECK", "debian-$* exists"))
 
 endif
 
@@ -117,6 +121,21 @@ docker-image-travis: NOUSER=1
 # Specialist build images, sometimes very limited tools
 docker-image-tricore-cross: docker-image-debian9
 
+# Rules for building linux-user powered images
+#
+# These are slower than using native cross compiler setups but can
+# work around issues with poorly working multi-arch systems and broken
+# packages.
+
+# Jessie is the last supported release for powerpc, but multi-arch is
+# broken so we need a qemu-linux-user for this target
+docker-binfmt-image-debian-powerpc-user: DEB_ARCH = powerpc
+docker-binfmt-image-debian-powerpc-user: DEB_TYPE = jessie
+docker-binfmt-image-debian-powerpc-user: QEMU_TARGET = ppc-linux-user
+docker-binfmt-image-debian-powerpc-user: EXECUTABLE = ${BUILD_DIR}/ppc-linux-user/qemu-ppc
+docker-image-debian-powerpc-user-cross: docker-binfmt-image-debian-powerpc-user
+DOCKER_USER_IMAGES += debian-powerpc-user
+
 # Expand all the pre-requistes for each docker image and test combination
 $(foreach i,$(filter-out $(DOCKER_INTERMEDIATE_IMAGES),$(DOCKER_IMAGES) $(DOCKER_DEPRECATED_IMAGES)), \
 	$(foreach t,$(DOCKER_TESTS) $(DOCKER_TOOLS), \
@@ -146,6 +165,11 @@ docker:
 	@echo
 	@echo 'Available container images:'
 	@echo '    $(DOCKER_IMAGES)'
+ifneq ($(DOCKER_USER_IMAGES),)
+	@echo
+	@echo 'Available linux-user images (docker-binfmt-image-debian-%):'
+	@echo '    $(DOCKER_USER_IMAGES)'
+endif
 	@echo
 	@echo 'Available tests:'
 	@echo '    $(DOCKER_TESTS)'
diff --git a/tests/docker/dockerfiles/debian-powerpc-user-cross.docker b/tests/docker/dockerfiles/debian-powerpc-user-cross.docker
new file mode 100644
index 0000000000..6938a845ee
--- /dev/null
+++ b/tests/docker/dockerfiles/debian-powerpc-user-cross.docker
@@ -0,0 +1,15 @@
+#
+# Docker powerpc cross-compiler target for QEMU
+#
+# We can't use current Debian stable cross-compilers to build powerpc
+# as it has been dropped as a release architecture. Using Debian Sid
+# is just far too sketchy a build environment. This leaves us the
+# final option of using linux-user. This image is based of the
+# debootstrapped qemu:debian-powerpc-user but doesn't need any extra
+# magic once it is setup.
+#
+FROM qemu:debian-powerpc-user
+
+RUN echo man-db man-db/auto-update boolean false | debconf-set-selections
+RUN apt-get update && \
+    DEBIAN_FRONTEND=noninteractive apt-get build-dep -yy qemu
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates
  2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
                   ` (19 preceding siblings ...)
  2018-07-05 16:03 ` [Qemu-devel] [PULL v3 20/20] docker: add linux-user powered cross builder for QEMU Alex Bennée
@ 2018-07-05 18:10 ` Peter Maydell
  20 siblings, 0 replies; 22+ messages in thread
From: Peter Maydell @ 2018-07-05 18:10 UTC (permalink / raw)
  To: Alex Bennée; +Cc: QEMU Developers

On 5 July 2018 at 17:03, Alex Bennée <alex.bennee@linaro.org> wrote:
> The following changes since commit 6cf495be0b445789eeb7e88a6015c8cf74d4c1cf:
>
>   Merge remote-tracking branch 'remotes/jnsnow/tags/bitmaps-pull-request' into staging (2018-07-05 13:33:52 +0100)
>
> are available in the Git repository at:
>
>   https://github.com/stsquad/qemu.git tags/pull-code-coverage-and-build-tweaks-050718-3
>
> for you to fetch changes up to 19c9a18f45fc8d8b8e96a6b8ea6074d08b6a8612:
>
>   docker: add linux-user powered cross builder for QEMU (2018-07-05 16:57:39 +0100)
>
> ----------------------------------------------------------------
> Code coverage and other build tweaks
>
>   - revert 208ecb3e (and drop filter for mingw, tweak for check-tcg)
>   - some travis speed-ups
>   - modernise code coverage support
>   - docker image cleanups
>   - clean-up binfmt_misc docker infrastructure
>   - add debian-powerpc-user-cross image for ppc32 build
>
> ----------------------------------------------------------------


Applied, thanks.

-- PMM

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2018-07-05 18:11 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-05 16:03 [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 01/20] Revert "Makefile: Rename TARGET_DIRS to TARGET_LIST" Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 02/20] travis: do not waste time cloning unused submodules Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 03/20] travis: test out-of-tree builds Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 04/20] build-system: remove per-test GCOV reporting Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 05/20] .gitignore: add .gcov files Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 06/20] docker: add gcovr to travis image Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 07/20] travis: add gcovr summary for GCOV build Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 08/20] build-system: add clean-coverage target Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 09/20] build-system: add coverage-report target Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 10/20] linux-user: introduce preexit_cleanup Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 11/20] linux-user: add gcov support to preexit_cleanup Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 12/20] docker: ubuntu: Update the package list before installing new ones Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 13/20] docker: ubuntu: Use SDL2 Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 14/20] docker: Clean the MXE base image Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 15/20] docker: Do not run tests in 'intermediate' images Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 16/20] docker: drop QEMU build-dep from bootstrap Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 17/20] docker: debian-bootstrap.pre allow customising of variant/url Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 18/20] docker: add special handling for FROM:debian-%-user targets Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 19/20] docker: add special rule for deboostrapped images Alex Bennée
2018-07-05 16:03 ` [Qemu-devel] [PULL v3 20/20] docker: add linux-user powered cross builder for QEMU Alex Bennée
2018-07-05 18:10 ` [Qemu-devel] [PULL v3 00/20] Travis, Code Coverage and Cross Build updates Peter Maydell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).