qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v6 2/4] qapi: Use an explicit input file


From: Eric Blake
Subject: Re: [Qemu-devel] [PATCH v6 2/4] qapi: Use an explicit input file
Date: Mon, 31 Mar 2014 13:42:44 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0

On 03/31/2014 01:16 PM, Lluís Vilanova wrote:
> Use an explicit input file on the command-line instead of reading from 
> standard input
> 
> Signed-off-by: Lluís Vilanova <address@hidden>
> ---

> +++ b/Makefile
> @@ -238,33 +238,33 @@ qapi-py = $(SRC_PATH)/scripts/qapi.py 
> $(SRC_PATH)/scripts/ordereddict.py
>  qga/qapi-generated/qga-qapi-types.c qga/qapi-generated/qga-qapi-types.h :\
>  $(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-types.py $(qapi-py)
>       $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py \
> -             $(gen-out-type) -o qga/qapi-generated -p "qga-" < $<, \
> +             $(gen-out-type) -i "$<" -o qga/qapi-generated -p "qga-", \

I still wonder if:

-o qga/qapi-generated -p "qga-" -i "$<"

is easier to read than injecting -i up front.  But it's not something
that I will block the patch for.

> @@ -368,7 +368,8 @@ check-tests/test-qapi.py: tests/test-qapi.py
>  
>  .PHONY: $(patsubst %, check-%, $(check-qapi-schema-y))
>  $(patsubst %, check-%, $(check-qapi-schema-y)): check-%.json: 
> $(SRC_PATH)/%.json
> -     $(call quiet-command, PYTHONPATH=$(SRC_PATH)/scripts $(PYTHON) 
> $(SRC_PATH)/tests/qapi-schema/test-qapi.py <$^ >$*.test.out 2>$*.test.err; 
> echo $$? >$*.test.exit, "  TEST  $*.out")
> +     $(call quiet-command, PYTHONPATH=$(SRC_PATH)/scripts $(PYTHON) 
> $(SRC_PATH)/tests/qapi-schema/test-qapi.py "$^" >$*.test.out 2>$*.test.err; 
> echo $$? >$*.test.exit, "  TEST  $*.out")

Why is this line still long?  Shouldn't it have been split in 1/4?  And
why is this form using an argument of the input file, instead of adding
a -i option like all the others?

> +     @sed -i -e "s|$(SRC_PATH)/||g" $*.test.err

'sed -i' is a GNU-ism, and not portable to all sed.  It's not the first
use of 'sed -i' in the code base, but most of those uses so far are for
situations that are Linux-specific where GNU sed can be assumed.

>       @diff -q $(SRC_PATH)/$*.out $*.test.out
>       @diff -q $(SRC_PATH)/$*.err $*.test.err

You could instead have done:

        @sed "s|$(SRC_PATH)/||g" $*.test.err \
                | diff -q $(SRC_PATH_/$*.err -

to avoid the portability question.

> +++ b/tests/qapi-schema/test-qapi.py
> @@ -12,10 +12,11 @@
>  
>  from qapi import *
>  from pprint import pprint
> +import os
>  import sys
>  
>  try:
> -    exprs = parse_schema(sys.stdin)
> +    exprs = parse_schema(sys.argv[1])

Here's where I found it inconsistent with the rest of the patch.  It
seems it would be better to either use -i everywhere, or use sys.argv[1]
everywhere.

> +++ b/tests/qapi-schema/trailing-comma-list.err
> @@ -1 +1 @@
> -<stdin>:2:36: Expected "{", "[" or string
> +tests/qapi-schema/trailing-comma-list.json:2:36: Expected "{", "[" or string

These are some long error messages; is it also worth trimming the
leading "tests/qapi-schema/" in the sed script where you massage the
data before doing the diff on expected errors?

It's too late for this to go into 2.0, but I think we're getting close
to having a solution worth using at the start of the 2.1 devel cycle.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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