Re: [Xen-devel] [Qemu-devel] [PATCH v2 2/6] qdict: Add convenience helpers for wrapped puts
On Wed, Apr 05, 2017 at 10:38:37AM +0200, Julia Lawall wrote: > OK, there is nothing special about g_assert_cmpint, but Coccinelle expects > expressions or types in function argument lists, so it gives a parse error > on finding an ==. I should have checked the coccinelle mailing list before asking you, because I see that Eric already asked this question and you answered it. For reference, that is here: https://systeme.lip6.fr/pipermail/cocci/2017-April/004107.html Thanks again, Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org ___ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel
Re: [Xen-devel] [Qemu-devel] [PATCH v2 2/6] qdict: Add convenience helpers for wrapped puts
On Tue, Apr 04, 2017 at 05:41:08PM -0500, Eric Blake wrote: > On 01/19/2017 08:38 AM, Eric Blake wrote: > > On 01/19/2017 03:25 AM, Markus Armbruster wrote: > >> Eric Blake writes: > >> > >>> Quite a few users of qdict_put() were manually wrapping a > >>> non-QObject. We can make such call-sites shorter, by providing > >>> common macros to do the tedious work. Also shorten nearby > >>> qdict_put_obj(,,QOBJECT()) sequences. > >>> > >>> Signed-off-by: Eric Blake > >>> Reviewed-by: Alberto Garcia > >>> > >>> --- > >>> > >>> v2: rebase to current master > >>> > >>> I'm okay if you want me to break this patch into smaller pieces. > >> > >> I guess I'm okay with a single piece, but I'd like to know how you did > >> the conversion. Coccinelle? Manually? > > > > Manual, via grepping for put_obj.*QOBJECT. I'll see if I can do the same > > under Coccinelle (at which point, committing the script will make it > > easier to rerun cleanups if later code reintroduces poor usage > > patterns), so maybe I have a v3 coming up. > > I've got a Coccinelle patch (mostly) working now - but it has one > shortfall - I found places in tests/check-qdict.c that coccinelle > didn't, and traced it to the fact that our use of g_assert_cmpint(expr, > ==, expr) throws off the coccinelle parser so badly that it silently > ignores the entire function body containing the use of that macro. Julia ^ is this a known issue? If Eric is using the Fedora version of coccinelle, then he would be using either 1.0.6 or 1.0.5. > v3 will be posted soon, with the best of both worlds (coccinelle > caught spots that I missed, not to mention recent code base changes; > and my manual search found the spots in tests/ that coccinelle > missed). Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html ___ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel
Re: [Xen-devel] [Qemu-devel] [PATCH v2 2/6] qdict: Add convenience helpers for wrapped puts
On Wed, Apr 05, 2017 at 10:21:13AM +0200, Julia Lawall wrote: > > > On Wed, 5 Apr 2017, Richard W.M. Jones wrote: > > > On Tue, Apr 04, 2017 at 05:41:08PM -0500, Eric Blake wrote: > > > On 01/19/2017 08:38 AM, Eric Blake wrote: > > > > On 01/19/2017 03:25 AM, Markus Armbruster wrote: > > > >> Eric Blake writes: > > > >> > > > >>> Quite a few users of qdict_put() were manually wrapping a > > > >>> non-QObject. We can make such call-sites shorter, by providing > > > >>> common macros to do the tedious work. Also shorten nearby > > > >>> qdict_put_obj(,,QOBJECT()) sequences. > > > >>> > > > >>> Signed-off-by: Eric Blake > > > >>> Reviewed-by: Alberto Garcia > > > >>> > > > >>> --- > > > >>> > > > >>> v2: rebase to current master > > > >>> > > > >>> I'm okay if you want me to break this patch into smaller pieces. > > > >> > > > >> I guess I'm okay with a single piece, but I'd like to know how you did > > > >> the conversion. Coccinelle? Manually? > > > > > > > > Manual, via grepping for put_obj.*QOBJECT. I'll see if I can do the same > > > > under Coccinelle (at which point, committing the script will make it > > > > easier to rerun cleanups if later code reintroduces poor usage > > > > patterns), so maybe I have a v3 coming up. > > > > > > I've got a Coccinelle patch (mostly) working now - but it has one > > > shortfall - I found places in tests/check-qdict.c that coccinelle > > > didn't, and traced it to the fact that our use of g_assert_cmpint(expr, > > > ==, expr) throws off the coccinelle parser so badly that it silently > > > ignores the entire function body containing the use of that macro. > > > > Julia ^ is this a known issue? > > Yes, it's completely standard. If there is a problem parsing a top-level > code unit, then the whole top-level code unit is ignored. Actually I meant about g_assert_cmpint, but this is also good to know too. Thanks, Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org ___ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel