qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]