[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH ] [trivial] qapi: Build-depend on all json files
From: |
Lluís Vilanova |
Subject: |
Re: [Qemu-devel] [PATCH ] [trivial] qapi: Build-depend on all json files |
Date: |
Thu, 04 Feb 2016 19:23:05 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Lluís Vilanova writes:
> Daniel P Berrange writes:
>> On Thu, Feb 04, 2016 at 03:36:56PM +0000, Peter Maydell wrote:
>>> On 4 February 2016 at 15:32, Eric Blake <address@hidden> wrote:
>>> > On 02/04/2016 07:55 AM, Peter Maydell wrote:
>>> >> On 4 February 2016 at 14:39, Lluís Vilanova <address@hidden> wrote:
>>> >>> Dynamically detects the files used to generate QAPI code, thus ensuring
>>> >>> it's never out of sync with the sources.
>>> >>>
>>> >>> Signed-off-by: Lluís Vilanova <address@hidden>
>>> >>> ---
>>> >>> Makefile | 6 ++----
>>> >>> 1 file changed, 2 insertions(+), 4 deletions(-)
>>> >>>
>>> >>> diff --git a/Makefile b/Makefile
>>> >>> index d0de2d4..627f772 100644
>>> >>> --- a/Makefile
>>> >>> +++ b/Makefile
>>> >>> @@ -269,10 +269,8 @@ $(SRC_PATH)/qga/qapi-schema.json
>>> >>> $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py)
>>> >>> $(gen-out-type) -o qga/qapi-generated -p "qga-" $<, \
>>> >>> " GEN $@")
>>> >>>
>>> >>> -qapi-modules = $(SRC_PATH)/qapi-schema.json
>>> >>> $(SRC_PATH)/qapi/common.json \
>>> >>> - $(SRC_PATH)/qapi/block.json
>>> >>> $(SRC_PATH)/qapi/block-core.json \
>>> >>> - $(SRC_PATH)/qapi/event.json
>>> >>> $(SRC_PATH)/qapi/introspect.json \
>>> >>> - $(SRC_PATH)/qapi/crypto.json
>>> >>> +qapi-modules = $(SRC_PATH)/qapi-schema.json
>>> >>> +qapi-modules += $(shell find $(SRC_PATH)/qapi -name "*.json")
>>> >>
>>> >> All the .json files are in the same directory, so I don't think we should
>>> >> need to use find here. Does
>>> >>
>>> >> qapi-modules += $(wildcard $(SRC_PATH)/qapi/*.json))
>>> >>
>>> >> work ?
>>> >
>>> > Does this wildcard affect what goes into a tarball? I'm worried that we
>>> > may run the risk of a stale .json file on one developer's machine
>>> > causing an unreproducible build on other machines where the file is not
>>> > found; explicit lists tend to be safer than wildcards.
>>> >
>>> > I won't reject the patch if others like it, but I won't approve it myself.
>>>
>>> You need to ask Mike Roth about our tarball generation process, not me.
>>>
>>> I do agree that this patch needs to make the case for why .json source
>>> files are special and should be wildcarded, when for instance all our
>>> C source files are explicitly listed in makefiles.
>> Yes, normal practice is that the files are listed in a Makefile that lives
>> in the same dir as the file. The qapi json files are not following that
>> since they live in a dir above. I'd be inclined to say any patch should
>> take us in line with source files, and thus look more like this:
>> diff --git a/Makefile b/Makefile
>> index b7b0f24..5481b57 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -161,7 +161,8 @@ dummy := $(call unnest-vars,, \
>> qom-obj-y \
>> io-obj-y \
>> common-obj-y \
>> - common-obj-m)
>> + common-obj-m \
>> + qapi-modules)
>> ifneq ($(wildcard config-host.mak),)
>> include $(SRC_PATH)/tests/Makefile
>> @@ -269,10 +270,7 @@ $(SRC_PATH)/qga/qapi-schema.json
>> $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py)
>> $(gen-out-type) -o qga/qapi-generated -p "qga-" $<, \
>> " GEN $@")
>> -qapi-modules = $(SRC_PATH)/qapi-schema.json $(SRC_PATH)/qapi/common.json \
>> - $(SRC_PATH)/qapi/block.json $(SRC_PATH)/qapi/block-core.json
>> \
>> - $(SRC_PATH)/qapi/event.json $(SRC_PATH)/qapi/introspect.json
>> \
>> - $(SRC_PATH)/qapi/crypto.json
>> +qapi-modules += $(SRC_PATH)/qapi-schema.json
>> qapi-types.c qapi-types.h :\
>> $(qapi-modules) $(SRC_PATH)/scripts/qapi-types.py $(qapi-py)
>> diff --git a/qapi/Makefile.objs b/qapi/Makefile.objs
>> index 2278970..a644a69 100644
>> --- a/qapi/Makefile.objs
>> +++ b/qapi/Makefile.objs
>> @@ -4,3 +4,10 @@ util-obj-y += string-input-visitor.o string-output-visitor.o
>> util-obj-y += opts-visitor.o
>> util-obj-y += qmp-event.o
>> util-obj-y += qapi-util.o
>> +
>> +qapi-modules += common.json
>> +qapi-modules += block.json
>> +qapi-modules += block-core.json
>> +qapi-modules += event.json
>> +qapi-modules += introspect.json
>> +qapi-modules += crypto.json
> Moving it into the qapi directory is definitely an improvement (regardless of
> whether it uses an explicit list or find/wildcard).
For the record: I've played with this for a bit and it does not work. In your
example, it cannot find the source files (for some reason cannot find them in
vpath although I've changed VPATH_SUFFIXES in rules.mak to account for %.json),
and using an absolute path seems to break the makefile macro that recurses into
directories (unnest-vars).
Cheers,
Lluis
Re: [Qemu-devel] [PATCH ] [trivial] qapi: Build-depend on all json files, Lluís Vilanova, 2016/02/04
Re: [Qemu-devel] [PATCH ] [trivial] qapi: Build-depend on all json files, Lluís Vilanova, 2016/02/04