For 1: I think it's good enough to have a machine-friendly version of the contents of XrdVersionPlugin.hh. So, the snippet of the header looks like this:

#define XrdVERSIONPLUGINRULES \
        XrdVERSIONPLUGIN_Rule(Required,  4,  0, XrdAccAuthorizeObject         )\
        XrdVERSIONPLUGIN_Rule(Optional,  4,  0, XrdBwmPolicyObject            )\
        XrdVERSIONPLUGIN_Rule(Required,  4,  0, XrdCksCalcInit                )\

I think a corresponding output from the tool would be along the lines of:

XrdAccAuthorizeObject 4.0 Required
XrdBwmPolicyObject 4.0 Optional
XrdCksCalcInit 4.0 Required

The first column is the unmangled symbol name; the second is the minimum required Xrootd version the object must be built against to work with the current Xrootd; the third is whether the version info is required or optional.

This would be translated to RPM "Provides" (in the xrootd RPM) of the form:

Provides: xrootd(XrdAccAuthorizeObject) = 4.0
Provides: xrootd(XrdBwmPolicyObject) = 4.0
Provides: xrootd(XrdCksCalcInit) = 4.0

For 2: For the Xrootd-HDFS RPM, we have:

XrdVERSIONINFO(XrdOssGetStorageSystem,"hdfs");

This creates two symbols in the output binary:

00000000000011c0 T XrdOssGetStorageSystem
00000000002020c0 D XrdOssGetStorageSystem_

I assume, in the latter symbol, we actually set the version info. Thus, for libXrdHdfs-4.so, I'd like some output along the lines of:

XrdOssGetStorageSystem 4.9.1

where 4.9.1 was the version of the Xrootd headers the binary was built against. This would allow us to add the following to the xrootd-hdfs package:

Requires: xrootd(XrdOssGetStorageSystem) <= 4.9.1

The logic indeed looks a bit backwards. I think of it as the xrootd RPM saying "I provide compatibility with the XrdOssGetStorageSystem ABI starting with 4.0.0" and the xrootd-hdfs RPM saying "I require a version of xrootd with the XrdOssGetStorageSystem ABI that supports at least 4.9.1".


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/xrootd/xrootd","title":"xrootd/xrootd","subtitle":"GitHub repository","main_image_url":"https://github.githubassets.com/images/email/message_cards/header.png","avatar_image_url":"https://github.githubassets.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/xrootd/xrootd"}},"updates":{"snippets":[{"icon":"PERSON","message":"@bbockelm in #926: For 1: I think it's good enough to have a machine-friendly version of the contents of `XrdVersionPlugin.hh`. So, the snippet of the header looks like this:\r\n\r\n```\r\n#define XrdVERSIONPLUGINRULES \\\r\n XrdVERSIONPLUGIN_Rule(Required, 4, 0, XrdAccAuthorizeObject )\\\r\n XrdVERSIONPLUGIN_Rule(Optional, 4, 0, XrdBwmPolicyObject )\\\r\n XrdVERSIONPLUGIN_Rule(Required, 4, 0, XrdCksCalcInit )\\\r\n```\r\n\r\nI think a corresponding output from the tool would be along the lines of:\r\n\r\n```\r\nXrdAccAuthorizeObject 4.0 Required\r\nXrdBwmPolicyObject 4.0 Optional\r\nXrdCksCalcInit 4.0 Required\r\n```\r\n\r\nThe first column is the unmangled symbol name; the second is the minimum required Xrootd version the object must be built against to work with the current Xrootd; the third is whether the version info is required or optional.\r\n\r\nThis would be translated to RPM \"Provides\" (in the `xrootd` RPM) of the form:\r\n```\r\nProvides: xrootd(XrdAccAuthorizeObject) = 4.0\r\nProvides: xrootd(XrdBwmPolicyObject) = 4.0\r\nProvides: xrootd(XrdCksCalcInit) = 4.0\r\n```\r\n\r\nFor 2: For the Xrootd-HDFS RPM, we have:\r\n\r\n```\r\nXrdVERSIONINFO(XrdOssGetStorageSystem,\"hdfs\");\r\n```\r\n\r\nThis creates two symbols in the output binary:\r\n\r\n```\r\n00000000000011c0 T XrdOssGetStorageSystem\r\n00000000002020c0 D XrdOssGetStorageSystem_\r\n```\r\n\r\nI assume, in the latter symbol, we actually set the version info. Thus, for `libXrdHdfs-4.so`, I'd like some output along the lines of:\r\n\r\n```\r\nXrdOssGetStorageSystem 4.9.1\r\n```\r\n\r\nwhere `4.9.1` was the version of the Xrootd headers the binary was built against. This would allow us to add the following to the `xrootd-hdfs` package:\r\n\r\n```\r\nRequires: xrootd(XrdOssGetStorageSystem) \u003c= 4.9.1\r\n```\r\n\r\nThe logic indeed looks a bit backwards. I think of it as the xrootd RPM saying \"I provide compatibility with the XrdOssGetStorageSystem ABI starting with 4.0.0\" and the xrootd-hdfs RPM saying \"I require a version of xrootd with the XrdOssGetStorageSystem ABI that supports at least 4.9.1\"."}],"action":{"name":"View Issue","url":"https://github.com/xrootd/xrootd/issues/926#issuecomment-481352869"}}} [ { "@context": "http://schema.org", "@type": "EmailMessage", "potentialAction": { "@type": "ViewAction", "target": "https://github.com/xrootd/xrootd/issues/926#issuecomment-481352869", "url": "https://github.com/xrootd/xrootd/issues/926#issuecomment-481352869", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { "@type": "Organization", "name": "GitHub", "url": "https://github.com" } } ]

Use REPLY-ALL to reply to list

To unsubscribe from the XROOTD-DEV list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1