| Summary: | qpid libraries API compatibility issue with qpid::types::Variant::fromString() and qpid::types::from_string<>() | ||
|---|---|---|---|
| Product: | Red Hat Enterprise MRG | Reporter: | Frantisek Reznicek <freznice> |
| Component: | qpid-cpp | Assignee: | Justin Ross <jross> |
| Status: | CLOSED CURRENTRELEASE | QA Contact: | Frantisek Reznicek <freznice> |
| Severity: | high | Docs Contact: | |
| Priority: | high | ||
| Version: | 2.1 | CC: | esammons, jross |
| Target Milestone: | 2.1.2 | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | qpid-cpp-mrg-0.14-5 | Doc Type: | Bug Fix |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | Type: | --- | |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
The API changed and if we want to guarantee backward compatibility we need to add above missing symbols. The decision has to be made. Raising NEEDINFO for Justin. AFAIK, we plan to maintain compatibility until for this item until a major version change. I'll ensure it goes into our patch. The above patch was applied, but there are still two problems on following builds:
qpid-cpp-mrg-0.14-5.el5
qpid-cpp-0.14-6.el6.x86_64
Linked test still highlights that following symbols (from B] case) are missing:
[12:51:55] Comparing library libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-5.el5.i386 vs. libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-22.el5.i386.current
Short API check summary between libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-22.el5.i386.current and libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-5.el5.i386: (198 matching, 2 new and 3 missing symbols)
.following symbols are MISSING: (cnt:2, cnt before exclusion:3)
bool qpid::types::from_string<int>(int&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
bool qpid::types::from_string<double>(double&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
[12:51:55] .ERROR:failed! (ecode:2)
[12:51:55] Comparing library libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-5.el5.i386 vs. libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-28.el5.i386.current
Short API check summary between libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-28.el5.i386.current and libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-5.el5.i386: (198 matching, 2 new and 3 missing symbols)
.following symbols are MISSING: (cnt:2, cnt before exclusion:3)
bool qpid::types::from_string<int>(int&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
bool qpid::types::from_string<double>(double&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
[12:51:55] .ERROR:failed! (ecode:2)
[12:51:55] Comparing library libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-5.el5.i386 vs. libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-34.el5.i386.current
Short API check summary between libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-34.el5.i386.current and libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-5.el5.i386: (198 matching, 2 new and 3 missing symbols)
.following symbols are MISSING: (cnt:2, cnt before exclusion:3)
bool qpid::types::from_string<int>(int&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
bool qpid::types::from_string<double>(double&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
The patch fixes just part of the issues (not all template ool qpid::types::from_string<> methods are available).
-> ASSIGNED
Case B is not a regression in 0.14 but in 0.10. It's also not a practical difficulty; therefore, we'll proceed without repairing this for 2.1.2/0.14-mrg. Case A is fixed, so I'm moving this to modified. Thanks for check. Retested. The issue has been partially fixed and partially waived. Tested on RHEL 5.7 / 6.2 i[36]86 / x86_64 on packages: python-qpid-0.14-4.el5 python-qpid-qmf-0.14-3.el5 qpid-cpp-client-0.14-7.el5 qpid-cpp-client-devel-0.14-7.el5 qpid-cpp-client-devel-docs-0.14-7.el5 qpid-cpp-client-rdma-0.14-7.el5 qpid-cpp-client-ssl-0.14-7.el5 qpid-cpp-mrg-debuginfo-0.14-7.el5 qpid-cpp-server-0.14-7.el5 qpid-cpp-server-cluster-0.14-7.el5 qpid-cpp-server-devel-0.14-7.el5 qpid-cpp-server-rdma-0.14-7.el5 qpid-cpp-server-ssl-0.14-7.el5 qpid-cpp-server-store-0.14-7.el5 qpid-cpp-server-xml-0.14-7.el5 qpid-java-client-0.14-3.el5 qpid-java-common-0.14-3.el5 qpid-java-example-0.14-3.el5 qpid-qmf-0.14-3.el5 qpid-qmf-debuginfo-0.14-3.el5 qpid-qmf-devel-0.14-3.el5 qpid-tests-0.14-1.el5 qpid-tools-0.14-1.el5 rh-qpid-cpp-tests-0.14-7.el5 ruby-qpid-qmf-0.14-3.el5 -> VERIFIED |
Description of problem: The API compatibility checker highlighted following issues: [A] Short API check summary between libqpidtypes.qpid-cpp-mrg-debuginfo-0.10-8.el5.i386.current and libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-4.el5.i386: (199 matching, 0 new and 1 missing symbols) .following symbols are MISSING: (cnt:1, cnt before exclusion:1) qpid::types::Variant::fromString(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) [13:38:00] .ERROR:failed! (ecode:1) [B] [13:38:00] Comparing library libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-4.el5.i386 vs. libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-22/28/34.el5.i386.current Short API check summary between libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-22/28/34.el5.i386.current and libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-4.el5.i386: (197 matching, 2 new and 4 missing symbols) .following symbols are MISSING: (cnt:3, cnt before exclusion:4) qpid::types::Variant::fromString(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) bool qpid::types::from_string<int>(int&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) bool qpid::types::from_string<double>(double&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) [13:38:00] .ERROR:failed! (ecode:3) The API changed and if we want to guarantee backward compatibility we need to add above missing symbols. Version-Release number of selected component (if applicable): libqpidtypes.qpid-cpp-mrg-debuginfo-0.14* How reproducible: 100% Steps to Reproduce: 1. nm or readelf on libqpidtypes on versions 0.7.946106-* / 0.10-* /0.14-* 2. compare Actual results: Some public exports from libqpidtypes are missing. Expected results: No public exports from libqpidtypes should be missing. Additional info: