[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PULL 02/33] qapi: Clean up cgen() and mcgen()
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PULL 02/33] qapi: Clean up cgen() and mcgen() |
Date: |
Mon, 07 Sep 2015 16:55:39 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Laurent Desnogues <address@hidden> writes:
> Hello Markus,
>
> I found some Python issue with this commit.
>
> On Fri, Sep 4, 2015 at 4:21 PM, Markus Armbruster <address@hidden> wrote:
>> Commit 05dfb26 added eatspace stripping to mcgen(). Move it to
>> cgen(), just in case somebody gets tempted to use cgen() directly
>> instead of via mcgen().
>>
>> cgen() indents blank lines. No such lines get generated right now,
>> but fix it anyway.
>>
>> We use triple-quoted strings for program text, like this:
>>
>> '''
>> Program text
>> any number of lines
>> '''
>>
>> Keeps the program text relatively readable, but puts an extra newline
>> at either end. mcgen() "fixes" that by dropping the first and last
>> line outright. Drop only the newlines.
>>
>> This unmasks a bug in qapi-commands.py: four quotes instead of three.
>> Fix it up.
>>
>> Output doesn't change
[...]
>> index 06d7fc2..e656beb 100644
>> --- a/scripts/qapi.py
>> +++ b/scripts/qapi.py
>> @@ -943,16 +943,21 @@ def pop_indent(indent_amount=4):
>> global indent_level
>> indent_level -= indent_amount
>>
>> +# Generate @code with @kwds interpolated.
>> +# Obey indent_level, and strip eatspace.
>> def cgen(code, **kwds):
>> - indent = genindent(indent_level)
>> - lines = code.split('\n')
>> - lines = map(lambda x: indent + x, lines)
>> - return '\n'.join(lines) % kwds + '\n'
>> -
>> -def mcgen(code, **kwds):
>> - raw = cgen('\n'.join(code.split('\n')[1:-1]), **kwds)
>> + raw = code % kwds
>> + if indent_level:
>> + indent = genindent(indent_level)
>> + raw = re.subn("^.", indent + r'\g<0>', raw, 0, re.MULTILINE)
>
> subn with 5 parameters requires Python 2.7 which isn't part of CentOS/RHEL 6.
You're right. I guess I need to fall back to re.compile().
[...]
- [Qemu-devel] [PULL 07/33] qapi: Fix generated code when flat union has member 'kind', (continued)
- [Qemu-devel] [PULL 07/33] qapi: Fix generated code when flat union has member 'kind', Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 14/33] qapi: Document that input visitor semantics are prone to leaks, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 13/33] tests/qapi-schema: Document events with base don't work, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 15/33] qapi: Document shortcoming with union 'data' branch, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 06/33] qapi: Drop unused and useless parameters and variables, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 23/33] qapi-commands: Inline gen_marshal_output_call(), Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 27/33] qapi: Drop one of two "simple union must not have base" checks, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 25/33] qapi-commands: Drop useless initialization, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 02/33] qapi: Clean up cgen() and mcgen(), Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 22/33] qapi-commands: Fix gen_err_check(e) for e and e != 'local_err', Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 08/33] qapi: Generate a nicer struct for flat unions, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 12/33] tests/qapi-schema: Document alternate's enum lacks visit function, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 16/33] qapi: Document flaws in checking of names, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 30/33] qapi: Fix errors for non-string, non-dictionary members, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 29/33] tests/qapi-schema: Cover non-string, non-dictionary members, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 24/33] qapi-commands: Don't feed output of mcgen() to mcgen() again, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 28/33] tests/qapi-schema: Cover two more syntax errors, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 19/33] qapi-tests: New tests for union, alternate command arguments, Markus Armbruster, 2015/09/04
- [Qemu-devel] [PULL 09/33] qapi-visit: Fix generated code when schema has forward refs, Markus Armbruster, 2015/09/04