Message ID | 20210608120723.2268181-1-marcandre.lureau@redhat.com |
---|---|
Headers | show
Return-Path: <qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org> X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=<UNKNOWN>) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=Fh+TigGw; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Fzpsh0fNqz9sSn for <incoming@patchwork.ozlabs.org>; Tue, 8 Jun 2021 22:08:06 +1000 (AEST) Received: from localhost ([::1]:44914 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>) id 1lqaWY-0005xR-Q3 for incoming@patchwork.ozlabs.org; Tue, 08 Jun 2021 08:08:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54736) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <marcandre.lureau@redhat.com>) id 1lqaWB-0005wc-93 for qemu-devel@nongnu.org; Tue, 08 Jun 2021 08:07:39 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:40327) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <marcandre.lureau@redhat.com>) id 1lqaW6-00012p-IZ for qemu-devel@nongnu.org; Tue, 08 Jun 2021 08:07:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1623154051; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/6IAZRSazQA/kxf2lqo1GrVWyJ1X7I0sHdApaNsVN7U=; b=Fh+TigGwbOEqJJCnpQ2KNU9Wd+jCNzSKRKbgMAv3vrbmgm26YjZ2PgD/3xA7NQlZPCr6f/ npaTp567HErBFRWRI9fbB2C4SD16eqezl9pZvZg0tvOD8IP//Jbovhwozwawvb5iUmT2Kr TQdDw/1sH9TViHtnx9TvrHtMZjKrR7c= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-363-Btl3pm_jP96M8Ejk8LaB9A-1; Tue, 08 Jun 2021 08:07:29 -0400 X-MC-Unique: Btl3pm_jP96M8Ejk8LaB9A-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 61E4E101962F for <qemu-devel@nongnu.org>; Tue, 8 Jun 2021 12:07:28 +0000 (UTC) Received: from localhost (unknown [10.36.110.2]) by smtp.corp.redhat.com (Postfix) with ESMTP id 37F8219C66; Tue, 8 Jun 2021 12:07:26 +0000 (UTC) From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Subject: [PATCH v5 0/9] qapi: untie 'if' conditions from C preprocessor Date: Tue, 8 Jun 2021 16:07:14 +0400 Message-Id: <20210608120723.2268181-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=marcandre.lureau@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=216.205.24.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -29 X-Spam_score: -3.0 X-Spam_bar: --- X-Spam_report: (-3.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.197, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: <qemu-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe> List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel> List-Post: <mailto:qemu-devel@nongnu.org> List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help> List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=subscribe> Cc: Eric Blake <eblake@redhat.com>, jsnow@redhat.com, Markus Armbruster <armbru@redhat.com>, =?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com> Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" <qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org> |
Series |
qapi: untie 'if' conditions from C preprocessor
|
expand
|
Done, except for the tests in PATCH 7. I agree with the QAPI schema language change. Having this many classes just for conditionals feels tiresome. I'm tempted to try axing all but one just to see how it comes out. This is not a demand. Let's discuss my review comments, and then figure out what still needs to be done to get merged.
From: Marc-André Lureau <marcandre.lureau@redhat.com> Hi, This series makes the 'if' conditions less liberal, by formalizing a simple expression tree based on bare boolean logic of configure option identifiers. (this allows to express conditions in Rust in my QAPI-Rust PoC series) thanks v5: - drop the [ COND, ... ] sugar form - move documentation update as first patch - documentation and commit message tweaks v4: - keep gen_if/gen_endif in common.py, reducing C codegen in schema.py - raise NotImplemented instead of False for unhandled __eq__ - change check_if() to keep the json/raw form, add _make_if() to build a QAPISchemaIfCond - improve __repr__ usage - drop ABC usage - tweaks here and there - add various commit tags v3: - rebasing on queued pt4 (after waiting for it to land) - improve documentation generation, to be more human-friendly - drop typing annotations from schema.py (not yet queued) - commit message tweaks v2: - fix the normalization step to handle recursive expr - replace IfCond by QAPISchemaIf (JohnS) - commit message and documentation tweaks - mypy/flake8/isort Marc-André Lureau (9): docs: update the documentation about schema configuration qapi: replace List[str] by QAPISchemaIfCond qapi: make gen_if/gen_endif take a simple string qapi: start building an 'if' predicate tree qapi: introduce IfPredicateList and IfAny qapi: add IfNot qapi: normalize 'if' condition to IfPredicate tree qapi: convert 'if' C-expressions to the new syntax tree qapi: make 'if' condition strings simple identifiers docs/devel/qapi-code-gen.txt | 30 +++-- docs/sphinx/qapidoc.py | 6 +- qapi/block-core.json | 16 +-- qapi/block-export.json | 6 +- qapi/char.json | 12 +- qapi/machine-target.json | 28 +++-- qapi/migration.json | 10 +- qapi/misc-target.json | 40 +++--- qapi/qom.json | 10 +- qapi/sockets.json | 4 +- qapi/ui.json | 48 ++++---- qga/qapi-schema.json | 8 +- tests/unit/test-qmp-cmds.c | 1 + scripts/qapi/commands.py | 4 +- scripts/qapi/common.py | 116 ++++++++++++++++-- scripts/qapi/events.py | 5 +- scripts/qapi/expr.py | 51 +++++--- scripts/qapi/gen.py | 14 +-- scripts/qapi/introspect.py | 26 ++-- scripts/qapi/schema.py | 112 +++++++++++++---- scripts/qapi/types.py | 33 ++--- scripts/qapi/visit.py | 23 ++-- .../alternate-branch-if-invalid.err | 2 +- tests/qapi-schema/bad-if-empty-list.json | 2 +- tests/qapi-schema/bad-if-empty.err | 2 +- tests/qapi-schema/bad-if-list.err | 2 +- tests/qapi-schema/bad-if-list.json | 2 +- tests/qapi-schema/bad-if.err | 3 +- tests/qapi-schema/bad-if.json | 2 +- tests/qapi-schema/doc-good.json | 6 +- tests/qapi-schema/doc-good.out | 12 +- tests/qapi-schema/doc-good.txt | 6 +- tests/qapi-schema/enum-if-invalid.err | 3 +- tests/qapi-schema/features-if-invalid.err | 2 +- tests/qapi-schema/features-missing-name.json | 2 +- tests/qapi-schema/qapi-schema-test.json | 60 +++++---- tests/qapi-schema/qapi-schema-test.out | 67 +++++----- .../qapi-schema/struct-member-if-invalid.err | 2 +- tests/qapi-schema/test-qapi.py | 2 +- tests/qapi-schema/union-branch-if-invalid.err | 2 +- .../qapi-schema/union-branch-if-invalid.json | 2 +- 41 files changed, 498 insertions(+), 286 deletions(-)