[PATCH v1 0/4] Add 'version' to other exported types
Victor Toso
victortoso at redhat.com
Tue Apr 5 15:35:02 UTC 2022
Hi,
On Tue, Apr 05, 2022 at 04:52:10PM +0200, Michal Prívozník wrote:
> On 4/5/22 13:43, Victor Toso wrote:
> > Hi,
> >
> > This series is an extension of what Daniel did in e0e0bf6628 "scripts:
> > include function versions in API definition".
> >
> > The main motivation behind this is to help code generators to consider
> > if a given symbol is present in a given version of libvirt that they are
> > either running/building against, more specifically:
> >
> > https://gitlab.com/libvirt/libvirt-go-module/-/merge_requests/7
> >
> > As headers are already a great source of documentation for developers,
> > I'm suggesting to add a specific comment to each of this exported types:
> >
> > /* ... Since <version> */
> >
> > For the use case I mentioned above, I'm adding small parsing function in
> > apibuild.py to fetch the above metadata and included it on the generated
> > XML API.
> >
> > To avoid adding too much noise in the githistory, I'm proposing the
> > addition of symbols.versions.allowlist file, that apibuild.py can use to
> > fetch the first git tag that a given symbol appeared in. I did a small
> > script to generate it, but it sums up to calling the bellow command for
> > any tag that starts with 'v' and has not '-rc'.
> >
> > git grep $symbol $tag ./include
>
> This gives you the latest tag that a symbol was touched in. You
> need to look at the very first commit that introduced the
> symbol.
Looking to each commit takes a few hours, that's why I took the
approach at looking per tag instead.
> For instance, in your allowlist file you have:
>
> virConnectDomainEventDeregister v0.10.0
>
> but src/libvirt_public.syms lists this symbol in 0.5.0 release:
>
> LIBVIRT_0.5.0 {
> global:
> ...
> virConnectDomainEventDeregister;
Good catch! I think the problem here is that when I run:
git tag --list 'v*' | grep -v 'rc'
the order that I got was
...
v0.1.8
v0.1.9
v0.10.0
v0.10.1
v0.10.2
v0.10.2.1
v0.10.2.2
v0.10.2.3
v0.10.2.4
v0.10.2.5
v0.10.2.6
v0.10.2.7
v0.10.2.8
v0.2.0
v0.2.1
v0.2.2
...
And I tested in that order, so v0.10.0 was tested prior to
v0.5.0.
I can see that git grep works with v0.5.0. but not with v0.4.6,
as expected.
I'll fix it and send a v2 later. Many thanks!
> > I'm trying the simples approach I could find but I'm happy to improve
> > this further based on your suggestions.
> >
> > Ah, the diff in the generated XMLs, per patch (sadly, pasteben drops it
> > after a single day). The initial reference is current master 67c77744d7
> > 'tests: Fixing compiler warning in cputest'
> >
> > 0001 (enums) ... https://paste.centos.org/view/e9137ef0
> > 0002 (typedefs) https://paste.centos.org/view/76f0b397
> > 0003 (macros) .. https://paste.centos.org/view/b68fb03a
> > 0004 (variables) https://paste.centos.org/view/4a20d9bb
> >
> > Cheers,
> > Victor
> >
> > Victor Toso (4):
> > scripts: apibuild: parse 'Since' version for enums
> > scripts: apibuild: parse 'Since' for typedefs
> > scripts: apibuild: parse 'Since' for macros
> > scripts: apibuild: add 'version' to variables
> >
> > scripts/apibuild.py | 68 +-
> > symbols.versions.allowlist | 2144 ++++++++++++++++++++++++++++++++++++
> > 2 files changed, 2199 insertions(+), 13 deletions(-)
> > create mode 100644 symbols.versions.allowlist
> >
>
> I like this. It's not only for Golang bindings, but other bindings might
> benefit from this as well. And also developers reading the docs (they
> see immediately what version was the symbol they are looking at
> introduced in).
>
> Having said that, maybe we should just add 'Since ...' to every symbol
> in include/**\.h instead of having it on a side then? If not, then I
> think scripts/ or docs/ is better location for the allowlist file.
>
> Moreover, the allowlist file now contains
>
> Michal
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20220405/2f06a044/attachment.sig>
More information about the libvir-list
mailing list