Bug 487075

Summary: silent ABI change in qt breaks po2xml (renamed XML parser features)
Product: [Fedora] Fedora Reporter: Hans Ulrich Niedermann <rhbugs>
Component: qtAssignee: Than Ngo <than>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: rawhideCC: arbiter, jreznik, kevin, ltinkl, rdieter, than, tuxbrewr
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-03-03 14:02:43 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 486162, 487078    
Attachments:
Description Flags
UNTESTED patch trying to fix the issue none

Description Hans Ulrich Niedermann 2009-02-24 01:06:39 UTC
Description of problem:

  po2xml parses an XML file by constructing an QXmlSimpleReader object
  and setting the "http://trolltech.com/xml/features/report-start-end-entity"
  feature on it.

  Unfortunately, upstream Qt appear to have renamed that feature to
  "http://qtsoftware.com/xml/features/report-start-end-entity".

Version-Release number of selected component (if applicable):

  kdesdk-4.2.0-2.fc11
  qt-4.5.0-0.5.rc1.fc11

How reproducible:

  100%

Steps to Reproduce:
1. po2xml /dev/null /dev/null
  
Actual results:

  Unknown feature http://trolltech.com/xml/features/report-start-end-entity

Expected results:

  Some error about empty input or something similar.

Additional info:

  "po2xml /dev/null /dev/null" is just the most simple test case
  I could find. Ask me if you need a more elaborate test case
  involving actual XML and po files.

Comment 1 Kevin Kofler 2009-02-24 01:13:57 UTC
I'd blame Qt for breaking backwards compatibility there. They should be converting trolltech.com URLs to qtsoftware.com URLs automatically, it's pretty easy to do.

Comment 2 Kevin Kofler 2009-02-24 01:19:40 UTC
Something like:
feature.replace(QRegExp(QLatin1String("^http://trolltech.com/")), "http://qtsoftware.com/");
or, probably more efficient:
if (feature.startsWith(QLatin1String("http://trolltech.com/"))
  feature.replace(0, 21, "http://qtsoftware.com/");
at an appropriate place in Qt should fix it.

Comment 3 Hans Ulrich Niedermann 2009-02-24 01:38:09 UTC
For the record (and while I still have the file open in my editor)...

That would affect the methods

  QXmlSimpleReader::feature()
  QXmlSimpleReader::setFeature()
  QXmlSimpleReader::hasFeature()

in the file

  qt-x11-opensource-src-4.5.0-rc1/src/xml/sax/qxml.cpp

Comment 4 Hans Ulrich Niedermann 2009-02-27 00:19:35 UTC
Created attachment 333412 [details]
UNTESTED patch trying to fix the issue

I could not actually test this patch yet, as qt is taking ages to compile. However, someone else might want to so something with this in the mean time...

At the very least, someone with knowledge of C++, qt's string API and how to create and prevent memory leaks and similar fun things while using the two should take a good look at the patch before it is included in any packages or even upstream qt.

Comment 5 Rex Dieter 2009-02-27 18:04:50 UTC
Working on a newer qt snapshot (20090224), and it looks fixed upstream.

Comment 6 Rex Dieter 2009-02-27 19:50:58 UTC
ok, qt-4.5.0-0.8 should fix this, building now... should land soon in a friendly rawhide mirror near you.

Comment 7 Rex Dieter 2009-03-01 20:05:49 UTC
boo, the -0.8 build failed on the buildsys, more snapshot breakage.  I'll try to fix that asap.

Comment 8 Rex Dieter 2009-03-03 14:02:43 UTC
woo, qt-4.5.0-1 (final) released today, and than heroically built it for rawhide.