Created attachment 1921871 [details] abipkgdiff report Description of problem: The latest libxml2 update to 2.10.3 breaks ABI by removing 111 symbols. This has already broken xmlsec1 (and, transitively, openconnect) and GraphicsMagic. Version-Release number of selected component (if applicable): 2.10.3-1.fc36 How reproducible: Always Steps to Reproduce: 1. koji download-build --arch=x86_64 libxml2-2.9.14-1.fc36 2. koji download-build --arch=x86_64 libxml2-2.10.3-1.fc36 3. rpmsodiff libxml2-2.9.14-1.fc36.x86_64.rpm libxml2-2.10.3-1.fc36.x86_64.rpm Actual results: common sonames: libxml2.so.2 /usr/lib64/libxml2.so.2.9.14 /usr/lib64/libxml2.so.2.10.3 --- libxml2-2.9.14-1.fc36/libxml2.so.2 2022-11-02 23:45:52.255501082 +0100 +++ libxml2-2.10.3-1.fc36/libxml2.so.2 2022-11-02 23:46:25.111715153 +0100 @@ -45,3 +45,2 @@ UTF8Toisolat1@@LIBXML2_2.4.30 T -__docbDefaultSAXHandler T __htmlDefaultSAXHandler T @@ -92,25 +91,2 @@ __xmlTreeIndentString T -attribute@@LIBXML2_2.4.30 T -attributeDecl@@LIBXML2_2.4.30 T -cdataBlock@@LIBXML2_2.4.30 T -characters@@LIBXML2_2.4.30 T -checkNamespace@@LIBXML2_2.4.30 T -comment@@LIBXML2_2.4.30 T -docbDefaultSAXHandler@@LIBXML2_2.4.30 D -docbDefaultSAXHandlerInit@@LIBXML2_2.4.30 T -elementDecl@@LIBXML2_2.4.30 T -endDocument@@LIBXML2_2.4.30 T -endElement@@LIBXML2_2.4.30 T -entityDecl@@LIBXML2_2.4.30 T -externalSubset@@LIBXML2_2.4.30 T -getColumnNumber@@LIBXML2_2.4.30 T -getEntity@@LIBXML2_2.4.30 T -getLineNumber@@LIBXML2_2.4.30 T -getNamespace@@LIBXML2_2.4.30 T -getParameterEntity@@LIBXML2_2.4.30 T -getPublicId@@LIBXML2_2.4.30 T -getSystemId@@LIBXML2_2.4.30 T -globalNamespace@@LIBXML2_2.4.30 T -hasExternalSubset@@LIBXML2_2.4.30 T -hasInternalSubset@@LIBXML2_2.4.30 T htmlAttrAllowed@@LIBXML2_2.5.2 T @@ -127,3 +103,2 @@ htmlCtxtUseOptions@@LIBXML2_2.6.0 T -htmlDecodeEntities T htmlDefaultSAXHandler@@LIBXML2_2.4.30 D @@ -175,11 +150,5 @@ htmlTagLookup@@LIBXML2_2.4.30 T -ignorableWhitespace@@LIBXML2_2.4.30 T initGenericErrorDefaultFunc@@LIBXML2_2.4.30 T -initdocbDefaultSAXHandler@@LIBXML2_2.4.30 T -inithtmlDefaultSAXHandler@@LIBXML2_2.4.30 T -initxmlDefaultSAXHandler@@LIBXML2_2.4.30 T inputPop@@LIBXML2_2.4.30 T inputPush@@LIBXML2_2.4.30 T -internalSubset@@LIBXML2_2.4.30 T -isStandalone@@LIBXML2_2.4.30 T isolat1ToUTF8@@LIBXML2_2.4.30 T @@ -189,15 +158,5 @@ namePush@@LIBXML2_2.4.30 T -namespaceDecl@@LIBXML2_2.4.30 T nodePop@@LIBXML2_2.4.30 T nodePush@@LIBXML2_2.4.30 T -notationDecl@@LIBXML2_2.4.30 T oldXMLWDcompatibility@@LIBXML2_2.4.30 B -processingInstruction@@LIBXML2_2.4.30 T -reference@@LIBXML2_2.4.30 T -resolveEntity@@LIBXML2_2.4.30 T -setDocumentLocator@@LIBXML2_2.4.30 T -setNamespace@@LIBXML2_2.4.30 T -startDocument@@LIBXML2_2.4.30 T -startElement@@LIBXML2_2.4.30 T -unparsedEntityDecl@@LIBXML2_2.4.30 T valuePop@@LIBXML2_2.4.30 T @@ -253,3 +212,2 @@ xmlBufAdd T -xmlBufAddHead T xmlBufAddLen T @@ -272,3 +230,2 @@ xmlBufEnd@@LIBXML2_2.9.0 T -xmlBufErase T xmlBufFree T @@ -279,3 +236,2 @@ xmlBufGrow T -xmlBufInflate T xmlBufIsEmpty T @@ -290,4 +246,2 @@ xmlBufUse@@LIBXML2_2.9.0 T -xmlBufWriteCHAR T -xmlBufWriteChar T xmlBufWriteQuotedString T @@ -367,3 +321,2 @@ xmlCleanupParser@@LIBXML2_2.4.30 T -xmlCleanupPredefinedEntities@@LIBXML2_2.4.30 T xmlCleanupThreads@@LIBXML2_2.4.30 T @@ -429,3 +382,2 @@ xmlDebugDumpString@@LIBXML2_2.4.30 T -xmlDecodeEntities@@LIBXML2_2.4.30 T xmlDefaultBufferSize@@LIBXML2_2.4.30 D @@ -471,3 +423,2 @@ xmlEncodeAttributeEntities T -xmlEncodeEntities@@LIBXML2_2.4.30 T xmlEncodeEntitiesReentrant@@LIBXML2_2.4.30 T @@ -533,4 +484,2 @@ xmlGetExternalEntityLoader@@LIBXML2_2.4.30 T -xmlGetFeature@@LIBXML2_2.4.30 T -xmlGetFeaturesList@@LIBXML2_2.4.30 T xmlGetGlobalState@@LIBXML2_2.4.30 T @@ -552,3 +501,2 @@ xmlGetWarningsDefaultValue@@LIBXML2_2.4.30 D -xmlHandleEntity@@LIBXML2_2.4.30 T xmlHasFeature@@LIBXML2_2.6.21 T @@ -581,6 +529,2 @@ xmlHashUpdateEntry@@LIBXML2_2.4.30 T -xmlIOFTPClose@@LIBXML2_2.4.30 T -xmlIOFTPMatch@@LIBXML2_2.4.30 T -xmlIOFTPOpen@@LIBXML2_2.4.30 T -xmlIOFTPRead@@LIBXML2_2.4.30 T xmlIOHTTPClose@@LIBXML2_2.4.30 T @@ -602,3 +546,2 @@ xmlInitializeGlobalState@@LIBXML2_2.4.30 T -xmlInitializePredefinedEntities@@LIBXML2_2.4.30 T xmlInputReadCallbackNop T @@ -692,27 +635,2 @@ xmlMutexUnlock@@LIBXML2_2.4.30 T -xmlNamespaceParseNCName@@LIBXML2_2.4.30 T -xmlNamespaceParseNSDef@@LIBXML2_2.4.30 T -xmlNamespaceParseQName@@LIBXML2_2.4.30 T -xmlNanoFTPCheckResponse@@LIBXML2_2.4.30 T -xmlNanoFTPCleanup@@LIBXML2_2.4.30 T -xmlNanoFTPClose@@LIBXML2_2.4.30 T -xmlNanoFTPCloseConnection@@LIBXML2_2.4.30 T -xmlNanoFTPConnect@@LIBXML2_2.4.30 T -xmlNanoFTPConnectTo@@LIBXML2_2.4.30 T -xmlNanoFTPCwd@@LIBXML2_2.4.30 T -xmlNanoFTPDele@@LIBXML2_2.5.5 T -xmlNanoFTPFreeCtxt@@LIBXML2_2.4.30 T -xmlNanoFTPGet@@LIBXML2_2.4.30 T -xmlNanoFTPGetConnection@@LIBXML2_2.4.30 T -xmlNanoFTPGetResponse@@LIBXML2_2.4.30 T -xmlNanoFTPGetSocket@@LIBXML2_2.4.30 T -xmlNanoFTPInit@@LIBXML2_2.4.30 T -xmlNanoFTPList@@LIBXML2_2.4.30 T -xmlNanoFTPNewCtxt@@LIBXML2_2.4.30 T -xmlNanoFTPOpen@@LIBXML2_2.4.30 T -xmlNanoFTPProxy@@LIBXML2_2.4.30 T -xmlNanoFTPQuit@@LIBXML2_2.4.30 T -xmlNanoFTPRead@@LIBXML2_2.4.30 T -xmlNanoFTPScanProxy@@LIBXML2_2.4.30 T -xmlNanoFTPUpdateURL@@LIBXML2_2.4.30 T xmlNanoHTTPAuthHeader@@LIBXML2_2.4.30 T @@ -756,3 +674,2 @@ xmlNewEntityInputStream@@LIBXML2_2.4.30 T -xmlNewGlobalNs@@LIBXML2_2.4.30 T xmlNewIOInputStream@@LIBXML2_2.4.30 T @@ -866,3 +783,2 @@ xmlParseName@@LIBXML2_2.4.30 T -xmlParseNamespace@@LIBXML2_2.4.30 T xmlParseNmtoken@@LIBXML2_2.4.30 T @@ -874,3 +790,2 @@ xmlParsePubidLiteral@@LIBXML2_2.4.30 T -xmlParseQuotedString@@LIBXML2_2.4.30 T xmlParseReference@@LIBXML2_2.4.30 T @@ -893,3 +808,2 @@ xmlParserHandlePEReference@@LIBXML2_2.4.30 T -xmlParserHandleReference@@LIBXML2_2.4.30 T xmlParserInputBufferCreateFd@@LIBXML2_2.4.30 T @@ -1025,3 +939,2 @@ xmlSAX2InitDefaultSAXHandler@@LIBXML2_2.6.0 T -xmlSAX2InitDocbDefaultSAXHandler@@LIBXML2_2.6.0 T xmlSAX2InitHtmlDefaultSAXHandler@@LIBXML2_2.6.0 T @@ -1067,3 +980,2 @@ xmlSaveUri@@LIBXML2_2.4.30 T -xmlScanName@@LIBXML2_2.4.30 T xmlSchemaCheckFacet@@LIBXML2_2.5.8 T @@ -1146,5 +1058,3 @@ xmlSetDocCompressMode@@LIBXML2_2.4.30 T -xmlSetEntityReferenceFunc@@LIBXML2_2.4.30 T xmlSetExternalEntityLoader@@LIBXML2_2.4.30 T -xmlSetFeature@@LIBXML2_2.4.30 T xmlSetGenericErrorFunc@@LIBXML2_2.4.30 T @@ -1563,3 +1473,2 @@ xmlUnsetProp@@LIBXML2_2.4.30 T -xmlUpgradeOldNs T xmlValidBuildContentModel@@LIBXML2_2.4.30 T @@ -1762,23 +1671,3 @@ xmlXPatherror@@LIBXML2_2.4.30 T -xmlXPtrAdvanceNode T -xmlXPtrBuildNodeList@@LIBXML2_2.4.30 T xmlXPtrEval@@LIBXML2_2.4.30 T -xmlXPtrEvalRangePredicate@@LIBXML2_2.4.30 T -xmlXPtrFreeLocationSet@@LIBXML2_2.4.30 T -xmlXPtrLocationSetAdd@@LIBXML2_2.4.30 T -xmlXPtrLocationSetCreate@@LIBXML2_2.4.30 T -xmlXPtrLocationSetDel@@LIBXML2_2.4.30 T -xmlXPtrLocationSetMerge@@LIBXML2_2.4.30 T -xmlXPtrLocationSetRemove@@LIBXML2_2.4.30 T -xmlXPtrNewCollapsedRange@@LIBXML2_2.4.30 T xmlXPtrNewContext@@LIBXML2_2.4.30 T -xmlXPtrNewLocationSetNodeSet@@LIBXML2_2.4.30 T -xmlXPtrNewLocationSetNodes@@LIBXML2_2.4.30 T -xmlXPtrNewRange@@LIBXML2_2.4.30 T -xmlXPtrNewRangeNodeObject@@LIBXML2_2.4.30 T -xmlXPtrNewRangeNodePoint@@LIBXML2_2.4.30 T -xmlXPtrNewRangeNodes@@LIBXML2_2.4.30 T -xmlXPtrNewRangePointNode@@LIBXML2_2.4.30 T -xmlXPtrNewRangePoints@@LIBXML2_2.4.30 T -xmlXPtrRangeToFunction@@LIBXML2_2.4.30 T -xmlXPtrWrapLocationSet@@LIBXML2_2.4.30 T 111 symbols removed D docbDefaultSAXHandler@@LIBXML2_2.4.30 T __docbDefaultSAXHandler T attribute@@LIBXML2_2.4.30 T attributeDecl@@LIBXML2_2.4.30 T cdataBlock@@LIBXML2_2.4.30 T characters@@LIBXML2_2.4.30 T checkNamespace@@LIBXML2_2.4.30 T comment@@LIBXML2_2.4.30 T docbDefaultSAXHandlerInit@@LIBXML2_2.4.30 T elementDecl@@LIBXML2_2.4.30 T endDocument@@LIBXML2_2.4.30 T endElement@@LIBXML2_2.4.30 T entityDecl@@LIBXML2_2.4.30 T externalSubset@@LIBXML2_2.4.30 T getColumnNumber@@LIBXML2_2.4.30 T getEntity@@LIBXML2_2.4.30 T getLineNumber@@LIBXML2_2.4.30 T getNamespace@@LIBXML2_2.4.30 T getParameterEntity@@LIBXML2_2.4.30 T getPublicId@@LIBXML2_2.4.30 T getSystemId@@LIBXML2_2.4.30 T globalNamespace@@LIBXML2_2.4.30 T hasExternalSubset@@LIBXML2_2.4.30 T hasInternalSubset@@LIBXML2_2.4.30 T htmlDecodeEntities T ignorableWhitespace@@LIBXML2_2.4.30 T initdocbDefaultSAXHandler@@LIBXML2_2.4.30 T inithtmlDefaultSAXHandler@@LIBXML2_2.4.30 T initxmlDefaultSAXHandler@@LIBXML2_2.4.30 T internalSubset@@LIBXML2_2.4.30 T isStandalone@@LIBXML2_2.4.30 T namespaceDecl@@LIBXML2_2.4.30 T notationDecl@@LIBXML2_2.4.30 T processingInstruction@@LIBXML2_2.4.30 T reference@@LIBXML2_2.4.30 T resolveEntity@@LIBXML2_2.4.30 T setDocumentLocator@@LIBXML2_2.4.30 T setNamespace@@LIBXML2_2.4.30 T startDocument@@LIBXML2_2.4.30 T startElement@@LIBXML2_2.4.30 T unparsedEntityDecl@@LIBXML2_2.4.30 T xmlBufAddHead T xmlBufErase T xmlBufInflate T xmlBufWriteCHAR T xmlBufWriteChar T xmlCleanupPredefinedEntities@@LIBXML2_2.4.30 T xmlDecodeEntities@@LIBXML2_2.4.30 T xmlEncodeEntities@@LIBXML2_2.4.30 T xmlGetFeature@@LIBXML2_2.4.30 T xmlGetFeaturesList@@LIBXML2_2.4.30 T xmlHandleEntity@@LIBXML2_2.4.30 T xmlIOFTPClose@@LIBXML2_2.4.30 T xmlIOFTPMatch@@LIBXML2_2.4.30 T xmlIOFTPOpen@@LIBXML2_2.4.30 T xmlIOFTPRead@@LIBXML2_2.4.30 T xmlInitializePredefinedEntities@@LIBXML2_2.4.30 T xmlNamespaceParseNCName@@LIBXML2_2.4.30 T xmlNamespaceParseNSDef@@LIBXML2_2.4.30 T xmlNamespaceParseQName@@LIBXML2_2.4.30 T xmlNanoFTPCheckResponse@@LIBXML2_2.4.30 T xmlNanoFTPCleanup@@LIBXML2_2.4.30 T xmlNanoFTPClose@@LIBXML2_2.4.30 T xmlNanoFTPCloseConnection@@LIBXML2_2.4.30 T xmlNanoFTPConnect@@LIBXML2_2.4.30 T xmlNanoFTPConnectTo@@LIBXML2_2.4.30 T xmlNanoFTPCwd@@LIBXML2_2.4.30 T xmlNanoFTPDele@@LIBXML2_2.5.5 T xmlNanoFTPFreeCtxt@@LIBXML2_2.4.30 T xmlNanoFTPGet@@LIBXML2_2.4.30 T xmlNanoFTPGetConnection@@LIBXML2_2.4.30 T xmlNanoFTPGetResponse@@LIBXML2_2.4.30 T xmlNanoFTPGetSocket@@LIBXML2_2.4.30 T xmlNanoFTPInit@@LIBXML2_2.4.30 T xmlNanoFTPList@@LIBXML2_2.4.30 T xmlNanoFTPNewCtxt@@LIBXML2_2.4.30 T xmlNanoFTPOpen@@LIBXML2_2.4.30 T xmlNanoFTPProxy@@LIBXML2_2.4.30 T xmlNanoFTPQuit@@LIBXML2_2.4.30 T xmlNanoFTPRead@@LIBXML2_2.4.30 T xmlNanoFTPScanProxy@@LIBXML2_2.4.30 T xmlNanoFTPUpdateURL@@LIBXML2_2.4.30 T xmlNewGlobalNs@@LIBXML2_2.4.30 T xmlParseNamespace@@LIBXML2_2.4.30 T xmlParseQuotedString@@LIBXML2_2.4.30 T xmlParserHandleReference@@LIBXML2_2.4.30 T xmlSAX2InitDocbDefaultSAXHandler@@LIBXML2_2.6.0 T xmlScanName@@LIBXML2_2.4.30 T xmlSetEntityReferenceFunc@@LIBXML2_2.4.30 T xmlSetFeature@@LIBXML2_2.4.30 T xmlUpgradeOldNs T xmlXPtrAdvanceNode T xmlXPtrBuildNodeList@@LIBXML2_2.4.30 T xmlXPtrEvalRangePredicate@@LIBXML2_2.4.30 T xmlXPtrFreeLocationSet@@LIBXML2_2.4.30 T xmlXPtrLocationSetAdd@@LIBXML2_2.4.30 T xmlXPtrLocationSetCreate@@LIBXML2_2.4.30 T xmlXPtrLocationSetDel@@LIBXML2_2.4.30 T xmlXPtrLocationSetMerge@@LIBXML2_2.4.30 T xmlXPtrLocationSetRemove@@LIBXML2_2.4.30 T xmlXPtrNewCollapsedRange@@LIBXML2_2.4.30 T xmlXPtrNewLocationSetNodeSet@@LIBXML2_2.4.30 T xmlXPtrNewLocationSetNodes@@LIBXML2_2.4.30 T xmlXPtrNewRange@@LIBXML2_2.4.30 T xmlXPtrNewRangeNodeObject@@LIBXML2_2.4.30 T xmlXPtrNewRangeNodePoint@@LIBXML2_2.4.30 T xmlXPtrNewRangeNodes@@LIBXML2_2.4.30 T xmlXPtrNewRangePointNode@@LIBXML2_2.4.30 T xmlXPtrNewRangePoints@@LIBXML2_2.4.30 T xmlXPtrRangeToFunction@@LIBXML2_2.4.30 T xmlXPtrWrapLocationSet@@LIBXML2_2.4.30 vim:ft=diff Expected results: No removed symbols. Additional info: See also bug 2136800 and bug 2138022.
It looks like the best way to fix this might be to rebuild --with-ftp added to %configure call. https://gitlab.gnome.org/GNOME/libxml2/-/commit/a0a0f3be93753e387e31e7de95904a24b3c876dd
ImageMagick (and transitively rubygem-rmagick) is also broken
So --with-ftp is only for xmlXXXXFTPXXXX series, other removed symbols are still missing. Then additionally adding --with-legacy --with-ftp --with-xptr-locs (after reading include/libxml/xmlversion.h.in, configure.ac and their histories), the result scratch build is: https://koji.fedoraproject.org/scratch/mtasaka/task_93748005/ Now: ============================================================= [tasaka1@localhost x86_64]$ rpmsodiff libxml2-2.9.14-3.fc37.x86_64.rpm libxml2-2.10.3-1.fc37.bz2139546.x86_64.rpm common sonames: libxml2.so.2 /usr/lib64/libxml2.so.2.9.14 /usr/lib64/libxml2.so.2.10.3 10 symbols removed D docbDefaultSAXHandler@@LIBXML2_2.4.30 T __docbDefaultSAXHandler T docbDefaultSAXHandlerInit@@LIBXML2_2.4.30 T initdocbDefaultSAXHandler@@LIBXML2_2.4.30 T xmlBufAddHead T xmlBufErase T xmlBufInflate T xmlBufWriteCHAR T xmlBufWriteChar T xmlSAX2InitDocbDefaultSAXHandler@@LIBXML2_2.6.0 ============================================================= 111 -> 10, but still some symbols are missing. So xmlBufAddHead, xmlBufErase, xmlBufInflate, xmlBufInflate, xmlBufWriteChar are not shown in 2.9.14 headers file, so I guess no user for these symbols (functions) exists, just libxml2 "internal" symbols are exposed. On the other hand, docbDefaultSAXHandlerInit, initdocbDefaultSAXHandler, xmlSAX2InitDocbDefaultSAXHandler are: https://gitlab.gnome.org/GNOME/libxml2/-/blob/master/libxml2.syms ... so these symbols are __really__ removed. So I think in a strict sense, 2.10.x is ABI incompatible with 2.9.14.
Broken open-vm-tools: https://bugzilla.redhat.com/show_bug.cgi?id=2139849 Are we going to require that all dependent packages get rebuilt, or will we enable FTP support again in libxml2?
(I am not a maintainer for libxml2, and am not familiar with libxml2 upstream policy but anyway speaking) So if FTP related symbol erasion is the only problem, so perhaps simply adding --with-ftp for libxml2 is the best, I think. But I am not confident about if that modification is really sufficient... There are "really" removed symbols on 2.10.0 (as I wrote on comment 3).
https://gitlab.gnome.org/GNOME/libxml2/-/commit/4a8c71eb7cc1c9001afaeefbd454f06f5fdaa046 removed the docbook stuff. The justification was "Because of a bug in commit 961b535c, DOCBparser.c was never compiled since 2012. I couldn't find a Debian package using any of its symbols, so it seems safe to remove this module." The xmlBuf* functions were removed in https://gitlab.gnome.org/GNOME/libxml2/-/commit/fe9f76ebb8127e77cbbf25d9235ceb523d3a4a92 , claimed to be "unused".
Okay, then adding "--with-legacy --with-ftp --with-xptr-locs" in libxml2 2.10.0 spec file is perhaps the safe solution.
I can do a build that way if we think it's the best idea. Still, this seems like something we should discuss with upstream? It doesn't seem good if the ABI changes without the soname changing if you compile it the same way as before, right?
*** Bug 2138022 has been marked as a duplicate of this bug. ***
FEDORA-2022-d7349a124a has been submitted as an update to Fedora 36. https://bodhi.fedoraproject.org/updates/FEDORA-2022-d7349a124a
Please try with -2 , I added the options suggested by mtasaka.
*** Bug 2139849 has been marked as a duplicate of this bug. ***
FEDORA-2022-d7349a124a has been pushed to the Fedora 36 testing repository. Soon you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2022-d7349a124a` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2022-d7349a124a See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.
(In reply to Adam Williamson from comment #8) > I can do a build that way if we think it's the best idea. Still, this seems > like something we should discuss with upstream? It doesn't seem good if the > ABI changes without the soname changing if you compile it the same way as > before, right? Yes, this certainly needs to be reported upstream. A desire to be able to disable features at build time is perfectly OK, but that should never be allowed to affect the actual exported public APIs. The public API / library ABI should be invariant for any given release, regardless of build option selection. IOW, if FTP is disabled at build time, leave the FTP APIs present in the library, but stub the API implementation so it reports an error when used at runtime.
Curious, a GraphicsMagick update was pushed (not me) rebuilt against the libxml2 that removed symbols. Is that GM rebuild still ok now, or does it need rebuilding again against the "fixed" libxml2? (I'm guessing it's OK, but asking for clarification)
As far as I understand things I think it should be okay. Easiest thing would be to test it, though...
FEDORA-2022-d7349a124a has been pushed to the Fedora 36 stable repository. If problem still persists, please make note of it in this bug report.