[PATCH v3 27/30] scripts: apibuild: parse 'Since' for functions
Victor Toso
victortoso at redhat.com
Thu Apr 21 18:03:02 UTC 2022
On Thu, Apr 21, 2022 at 01:56:19PM +0200, Peter Krempa wrote:
> On Wed, Apr 20, 2022 at 21:08:16 +0200, Victor Toso wrote:
> > This patch adds 'version' parameter to generated XML API for functions
> > and functypes.
> >
> > The 'version' metadata has been added with e0e0bf6628 by parsing .syms
> > files. This commit does not override that but it will warn if there is
> > not 'Since' metadata with new additions.
> >
> > There is not clear benefit for keeping both. For now, I've added a
> > warning in case there is a mismatch between the version provided by
> > .syms and docstring.
> >
> > Signed-off-by: Victor Toso <victortoso at redhat.com>
> > ---
> > scripts/apibuild.py | 126 +++++++++++++++++++++++++++++++++++++++-----
> > 1 file changed, 113 insertions(+), 13 deletions(-)
>
> Let's review the outliers and then the script which generated the rest:
>
> > diff --git a/scripts/apibuild.py b/scripts/apibuild.py
> > index b77eea0624..ec10931151 100755
> > --- a/scripts/apibuild.py
> > +++ b/scripts/apibuild.py
> > @@ -111,6 +111,73 @@ ignored_functions = {
> > "virErrorCopyNew": "private",
> > }
> >
> > +# The version in the .sym file might differnt from
> > +# the real version that the function was introduced.
> > +# This dict's value is the correct version, as it should
> > +# be in the docstrings.
> > +ignored_function_versions = {
> > + 'virDomainSetBlockThreshold': '3.2.0',
>
> We've discussed this one.
>
> > + 'virGetLastErrorMessage': '1.0.5.2',
>
> Your script seems to have picked a stable release which we did at some
> point. The v1.0.6 where the symbol is exported is correct. This
> would be also the only outlier which has a 4 digit version
> string.
>
> So the Since tag needs to be fixed and this removed.
Ack!
> > + 'virNodeDeviceCreate': '0.5.0',
>
> This is an unfortunate side-effect of grepping in the
> repository rather than looking for actual code.
>
> 'virNodeDeviceCreate' was indeed mentioned in a comment in the
> version you've added here, but was in fact implemented at the
> time it was actually exported.
Ack!
> This entry needs to be removed and the Since tag fixed.
>
>
> > + 'virAdmClientClose': '1.3.5',
> > + 'virAdmClientFree': '1.3.5',
> > + 'virAdmClientGetID': '1.3.5',
> > + 'virAdmClientGetInfo': '1.3.5',
> > + 'virAdmClientGetTimestamp': '1.3.5',
> > + 'virAdmClientGetTransport': '1.3.5',
> > + 'virAdmConnectClose': '1.2.17',
> > + 'virAdmConnectGetLibVersion': '1.3.1',
> > + 'virAdmConnectGetURI': '1.3.1',
> > + 'virAdmConnectIsAlive': '1.3.1',
> > + 'virAdmConnectListServers': '1.3.2',
> > + 'virAdmConnectLookupServer': '1.3.3',
> > + 'virAdmConnectOpen': '1.2.17',
> > + 'virAdmConnectRef': '1.2.17',
> > + 'virAdmConnectRegisterCloseCallback': '1.3.1',
> > + 'virAdmConnectUnregisterCloseCallback': '1.3.1',
> > + 'virAdmGetVersion': '1.3.0',
> > + 'virAdmServerFree': '1.3.2',
> > + 'virAdmServerGetClientLimits': '1.3.5',
> > + 'virAdmServerGetName': '1.3.2',
> > + 'virAdmServerGetThreadPoolParameters': '1.3.4',
> > + 'virAdmServerListClients': '1.3.5',
> > + 'virAdmServerLookupClient': '1.3.5',
> > + 'virAdmServerSetClientLimits': '1.3.5',
> > + 'virAdmServerSetThreadPoolParameters': '1.3.4',
>
> All of the above should be removed and the Since tag should say v2.0.0
> to match the symbol as that's the first point at which we've exported
> these.
Ack!
>
> > + 'virAdmServerUpdateTlsFiles': '6.2.0',
>
> This one is needed as it's a mistake in the symbol export.
Ack!
> > + 'virConnectFindStoragePoolSources': '0.4.6',
>
> This is a mistake in our repo. The 'v0.4.5' tag is missing but the
> function was added and exported in time of v0.4.5.
>
> Remove this entry and fix the since tag.
Yes, this was more an issue in my side as I saw no v0.4.5 tag, I
probably adjusted it myself. I'll fix it.
> > + 'virConnectNumOfDefinedDomains': '0.1.6',
> > + 'virConnectOpenAuth': '0.4.1',
>
> Same as above.
>
> > + 'virDomainBlockPeek': '0.4.4',
> > + 'virDomainMemoryPeek': '0.4.4',
>
> So in this case the code was added indeed post v0.4.2 release but the
> symbol was exported in the previous one, although it happened prior to
> v0.4.3 was released, but our repo is missing the tag.
>
> So correctly both should be 0.4.3.
Ack.
>
> > + 'virNetworkUpdate': '1.0.0',
>
> Not sure what happened here, but v0.10.2 what the script
> detects in the symbol seems to be correct.
Likely a leftover from fixing the 1.0.0 versions. I'll fix it.
> > + 'virConnectClose': '0.0.1',
> > + 'virConnectGetType': '0.0.1',
> > + 'virConnectGetVersion': '0.0.1',
> > + 'virConnectListDomains': '0.0.1',
> > + 'virConnectNumOfDomains': '0.0.1',
> > + 'virConnectOpen': '0.0.1',
> > + 'virConnectOpenReadOnly': '0.0.1',
> > + 'virDomainCreateLinux': '0.0.1',
> > + 'virDomainDestroy': '0.0.1',
> > + 'virDomainFree': '0.0.1',
> > + 'virDomainGetID': '0.0.1',
> > + 'virDomainGetInfo': '0.0.1',
> > + 'virDomainGetMaxMemory': '0.0.1',
> > + 'virDomainGetName': '0.0.1',
> > + 'virDomainGetOSType': '0.0.1',
> > + 'virDomainGetXMLDesc': '0.0.1',
> > + 'virDomainLookupByID': '0.0.1',
> > + 'virDomainLookupByName': '0.0.1',
> > + 'virDomainRestore': '0.0.2',
> > + 'virDomainResume': '0.0.1',
> > + 'virDomainSave': '0.0.2',
> > + 'virDomainSetMaxMemory': '0.0.1',
> > + 'virDomainShutdown': '0.0.1',
> > + 'virDomainSuspend': '0.0.1',
> > + 'virGetVersion': '0.0.1',
>
> Now for these you should follow again when the symbol was exported, many
> of these functions are mentioned in TODO first and implemented later.
>
> As noted previously the Since tag should be the maximum version of
> following two:
> 1) when the symbol was exported
> 2) when it was implemented.
>
> In the end I expect this list to be only contain:
>
> 'virDomainSetBlockThreshold'
> 'virAdmServerUpdateTlsFiles'
> 'virDomainBlockPeek'
> 'virDomainMemoryPeek'
Many thanks for the careful review.
I'll have all those fixes by v4.
Cheers,
Victor
-------------- 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/20220421/c3119bda/attachment.sig>
More information about the libvir-list
mailing list