On Sun, May 05 2019, Matthias Kilian <[email protected]> wrote:
> Hi,
>
> On Sun, May 05, 2019 at 01:30:56PM +0200, Jeremie Courreges-Anglas wrote:
>> > Adding major bumps for poppler-qt5 and poppler-cpp because of
>> > incompatible changes in some "private" parts, even if the corresponding
>> > headers aren't included in the packages.
>> >
>> > I'm still waiting for my bulk update on amd64 to finish, but in case
>> > anyone want's to do some testing in advance...
>>
>> Builds fine on amd64 with ports-gcc and ld.bfd (can't test on sparc64
>> right now). Hopefully that test should be enough for ports-gcc archs.
>
> Thanks for that test.
>
>> Looks like symbols from poppler-qt5 didn't change yet there's a major
>> bump. I'm not saying this is a problem though (eg we have situations in
>> base where we bump both libA and libB when libB depends on libA).
>>
>> /usr/local/lib/libpoppler-qt5.so.7.1 -->
>> /usr/ports/pobj/poppler-0.76.0/fake-amd64/usr/local/lib/libpoppler-qt5.so.8.0
>> No dynamic export changes
>
> I usually just look at a diff of the old and new version of poppler
> to check wether upstream may have missed a (minor or major) bump.
>
> Honestly I even forgot the name of the tool for comparing shared
> library export ;-)
The FAQ still advises to use nm -g but these days I'm using
/usr/src/lib/check_sym, courtesy of guenther@. Note that check_sym
can't detect every change such as return / parameter types changes in
C code. It probably works better in C++ where final symbol names are
constructed using said types.
> In this case it was this chunk in qt5/src/poppler-private.h
>
> @@ -123,7 +125,7 @@ namespace Poppler {
> DocumentData(const DocumentData &) = delete;
> DocumentData& operator=(const DocumentData &) = delete;
>
> - void addTocChildren( QDomDocument * docSyn, QDomNode * parent, const
> GooList * items );
> + void addTocChildren( QDomDocument * docSyn, QDomNode * parent, const
> std::vector<::OutlineItem*> * items );
>
> void setPaperColor(const QColor &color)
> {
>
> That is the declaration of a public method in class DocumentData
> in the namespace Poppler. If i see such a change, I add a major
> bump (if upstream didn't already do).
>
> Since you didn't find any change in this case, I could drop the
> bump if you insist (but it would be a little mess on my build machine
> and in my package repository).
In this case, I would omit the bump since poppler-private.h is not
installed, thus probably not part of any public API.
russell /usr/ports/print/poppler$ readelf -Wa
/usr/local/lib/libpoppler-qt5.so.7.1 | grep addTocChildren | c++filt
2104: 0000000000094218 40 OBJECT LOCAL DEFAULT 16
Poppler::DocumentData::addTocChildren(QDomDocument*, QDomNode*, GooList
const*)::$_1::operator()() const::qstring_literal
2115: 000000000007ccf0 2590 FUNC LOCAL HIDDEN 12
Poppler::DocumentData::addTocChildren(QDomDocument*, QDomNode*, GooList const*)
russell /usr/ports/print/poppler$ readelf -Wa
/usr/local/lib/libpoppler-qt5.so.8.0 | grep addTocChildren | c++filt
2121: 0000000000094218 40 OBJECT LOCAL DEFAULT 16
Poppler::DocumentData::addTocChildren(QDomDocument*, QDomNode*,
std::__1::vector<OutlineItem*, std::__1::allocator<OutlineItem*> >
const*)::$_1::operator()() const::qstring_literal
2132: 000000000007cc00 2574 FUNC LOCAL HIDDEN 12
Poppler::DocumentData::addTocChildren(QDomDocument*, QDomNode*,
std::__1::vector<OutlineItem*, std::__1::allocator<OutlineItem*> > const*)
"LOCAL" and "HIDDEN" support this theory. I would not add a bump but
please choose the safe option if you have any doubt.
--
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE