[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 3/3] tests/tcg: move configuration to a sub-shel
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [PATCH 3/3] tests/tcg: move configuration to a sub-shell script |
Date: |
Wed, 07 Aug 2019 14:10:42 +0100 |
User-agent: |
mu4e 1.3.4; emacs 27.0.50 |
Paolo Bonzini <address@hidden> writes:
> Avoid the repeated inclusions of config-target.mak, which have
> risks of namespace pollution, and instead build minimal configuration
> files in a configuration script. The same configuration files can
> also be included in Makefile and Makefile.qemu
>
<snip>
> if [ "$fdt" = "git" ]; then
> echo "config-host.h: dtc/all" >> $config_host_mak
> fi
> @@ -7923,15 +7799,14 @@ fi
> # so the build tree will be missing the link back to the new file, and
> # tests might fail. Prefer to keep the relevant files in their own
> # directory and symlink the directory instead.
> -DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos
> tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
> +DIRS="tests tests/tcg tests/tcg/lm32 tests/libqos tests/qapi-schema
> tests/qemu-iotests tests/vm"
> DIRS="$DIRS tests/fp tests/qgraph"
> DIRS="$DIRS docs docs/interop fsdev scsi"
> DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
> DIRS="$DIRS roms/seabios roms/vgabios"
> -LINKS="Makefile tests/tcg/Makefile"
> -LINKS="$LINKS tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
> -LINKS="$LINKS tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
> -LINKS="$LINKS tests/fp/Makefile"
> +LINKS="Makefile"
> +LINKS="$LINKS tests/tcg/lm32/Makefile po/Makefile"
> +LINKS="$LINKS tests/tcg/Makefile.target tests/fp/Makefile"
Is this why I get complaints on a clean tree:
libpmem support no
libudev yes
default devices yes
/home/alex/lsrc/qemu.git/tests/tcg/configure.sh: 179:
/home/alex/lsrc/qemu.git/tests/tcg/configure.sh: cannot create
tests/tcg/config-aarch64-linux-user.mak: Directory nonexistent
/home/alex/lsrc/qemu.git/tests/tcg/configure.sh: 180:
/home/alex/lsrc/qemu.git/tests/tcg/configure.sh: cannot create
tests/tcg/config-aarch64-linux-user.mak: Directory nonexistent
/home/alex/lsrc/qemu.git/tests/tcg/configure.sh: 183:
/home/alex/lsrc/qemu.git/tests/tcg/configure.sh: cannot create
tests/tcg/config-aarch64-linux-user.mak: Directory nonexistent
/home/alex/lsrc/qemu.git/tests/tcg/configure.sh: 184:
/home/alex/lsrc/qemu.git/tests/tcg/configure.sh: cannot create
tests/tcg/config-aarch64-linux-user.mak: Directory nonexistent
/home/alex/lsrc/qemu.git/tests/tcg/configure.sh: 193:
/home/alex/lsrc/qemu.git/tests/tcg/configure.sh: cannot create
tests/tcg/config-aarch64-linux-user.mak: Directory nonexistent
/home/alex/lsrc/qemu.git/tests/tcg/configure.sh: 213:
/home/alex/lsrc/qemu.git/tests/tcg/configure.sh: cannot create
tests/tcg/config-aarch64-linux-user.mak: Directory nonexistent
/home/alex/lsrc/qemu.git/tests/tcg/configure.sh: 179:
/home/alex/lsrc/qemu.git/tests/tcg/configure.sh: cannot create
tests/tcg/config-arm-linux-user.mak: Directory nonexist
...
> LINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
> LINKS="$LINKS pc-bios/spapr-rtas/Makefile"
> LINKS="$LINKS pc-bios/s390-ccw/Makefile"
> diff --git a/tests/Makefile.include b/tests/Makefile.include
> index 8bb5c97..a3ee649 100644
> --- a/tests/Makefile.include
> +++ b/tests/Makefile.include
> @@ -1058,30 +1058,28 @@ BUILD_TCG_TARGET_RULES=$(patsubst
> %,build-tcg-tests-%, $(TARGET_DIRS))
> CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(TARGET_DIRS))
> RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(TARGET_DIRS))
>
> -ifeq ($(HAVE_USER_DOCKER),y)
> # Probe for the Docker Builds needed for each build
> $(foreach PROBE_TARGET,$(TARGET_DIRS), \
> $(eval -include $(SRC_PATH)/tests/tcg/Makefile.prereqs))
> -endif
>
> build-tcg-tests-%:
> $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \
> -f $(SRC_PATH)/tests/tcg/Makefile.qemu \
> SRC_PATH=$(SRC_PATH) \
> - V="$(V)" TARGET_DIR="$*/" guest-tests, \
> + V="$(V)" TARGET="$*" guest-tests, \
> "BUILD", "TCG tests for $*")
>
> run-tcg-tests-%: build-tcg-tests-% %/all
> $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \
> -f $(SRC_PATH)/tests/tcg/Makefile.qemu \
> SRC_PATH=$(SRC_PATH) SPEED="$(SPEED)" \
> - V="$(V)" TARGET_DIR="$*/" run-guest-tests, \
> + V="$(V)" TARGET="$*" run-guest-tests, \
> "RUN", "TCG tests for $*")
>
> clean-tcg-tests-%:
> $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \
> -f $(SRC_PATH)/tests/tcg/Makefile.qemu \
> - SRC_PATH=$(SRC_PATH) TARGET_DIR="$*/" clean-guest-tests, \
> + SRC_PATH=$(SRC_PATH) TARGET="$*" clean-guest-tests, \
> "RUN", "TCG tests for $*")
>
> .PHONY: build-tcg
> diff --git a/tests/tcg/Makefile.prereqs b/tests/tcg/Makefile.prereqs
> index 53b0196..7494b31 100644
> --- a/tests/tcg/Makefile.prereqs
> +++ b/tests/tcg/Makefile.prereqs
> @@ -7,24 +7,12 @@
> # selection of required docker targets before we invoke a sub-make for
> # each target.
>
> -# First we need the target makefile which tells us the target architecture
> -CROSS_CC_GUEST:=
> --include $(BUILD_DIR)/$(PROBE_TARGET)/config-target.mak
> -
> -# Then we load up the target architecture makefiles which tell us
> -# about the compilers
> DOCKER_IMAGE:=
>
> --include $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.include
> --include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.include
> +-include $(BUILD_DIR)/tests/tcg/config-$(PROBE_TARGET).mak
>
> -ifndef CROSS_CC_GUEST
> ifneq ($(DOCKER_IMAGE),)
> build-tcg-tests-$(PROBE_TARGET): docker-image-$(DOCKER_IMAGE)
> +$(BUILD_DIR)/tests/tcg/config_$(PROBE_TARGET).mak: config-host.mak
> +config-host.mak: $(SRC_PATH)/tests/tcg/configure.sh
> endif
> -endif
> -
> -# Clean-up
> -# undefine TARGET_NAME
> -# undefine TARGET_BASE_ARCH
> -# undefine TARGET_ABI_DIR
> diff --git a/tests/tcg/Makefile.qemu b/tests/tcg/Makefile.qemu
> index d3f3437..c8bec7b 100644
> --- a/tests/tcg/Makefile.qemu
> +++ b/tests/tcg/Makefile.qemu
> @@ -8,17 +8,22 @@
> # to do it for us.
> #
>
> -# The per ARCH makefile, if it exists, holds extra information about
> +include $(SRC_PATH)/rules.mak
> +
> +# The configure script fills in extra information about
> # useful docker images or alternative compiler flags.
>
> -include $(TARGET_DIR)config-target.mak
> -include $(SRC_PATH)/rules.mak
> -include $(wildcard \
> - $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.include \
> - $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.include)
> +CROSS_CC_GUEST:=
> +DOCKER_IMAGE:=
> +-include $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak
>
> GUEST_BUILD=
> TCG_MAKE=../Makefile.target
> +
> +# We also need the Docker make rules to depend on
> +SKIP_DOCKER_BUILD=1
> +include $(SRC_PATH)/tests/docker/Makefile.include
> +
> # Support installed Cross Compilers
>
> ifdef CROSS_CC_GUEST
> @@ -26,11 +31,11 @@ ifdef CROSS_CC_GUEST
> .PHONY: cross-build-guest-tests
> cross-build-guest-tests:
> $(call quiet-command, \
> - (mkdir -p tests/tcg/$(TARGET_DIR) && cd tests/tcg/$(TARGET_DIR) && \
> - $(MAKE) -f $(TCG_MAKE) TARGET_DIR="$(TARGET_DIR)"
> CC="$(CROSS_CC_GUEST)" \
> + (mkdir -p tests/tcg/$(TARGET) && cd tests/tcg/$(TARGET) && \
> + $(MAKE) -f $(TCG_MAKE) TARGET="$(TARGET)" CC="$(CROSS_CC_GUEST)" \
> SRC_PATH="$(SRC_PATH)"
> BUILD_STATIC=$(CROSS_CC_GUEST_STATIC) \
> - EXTRA_CFLAGS=$(CROSS_CC_GUEST_CFLAGS)), \
I expect given we need config-FOO.mak files before that these mkdir's are in
the wrong place.
<snip>
Otherwise I think this is going in the right direction.
--
Alex Bennée