On 05/07/2010 02:05 AM, Jim Meyering wrote:
> There's a way out.
>
> - maintain a textual representation of these structs and their members
> (including type names, but not sizes) and make pdwtags a requirement
> for running "make syntax-check", which would perform the verification.
> I.e., keep a copy of the output of pdwtags, but without the comments.
FYI, here's code to generate the latter:
pdwtags src/libvirt_driver_remote_la-remote_protocol.o \
|perl -0777 -n \
-e 'foreach my $p (split m!\n\n/\* \d+ \*/\n!)' \
-e ' { if ($p =~ /^struct remote_/) {' \
-e ' $p =~ s!\t*/\*.*?\*/!!sg;' \
-e ' $p =~ s!\s+\n!\n!sg;' \
-e ' print "$p\n" } }' \
> remote-protocol-structs
IMHO, it would be sufficient to enable a check comparing
this output to a version-controlled reference file, and
making it part of "make check".
I like it!
Of course, this would add a dependency on pdwtags/dwarves,
but it would be fine/easy to skip the check on non-Linux systems.
The same as we do for cppi - make it an optional 'make syntax-check', so
that those who have dwarves installed run it, and those who don't get a
warning that they should consider installing dwarves.
Any objection to requiring the dwarves package for development on Linux?
No objection to an optional dependency from me.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org