On Sun, May 05 2019, Matthias Kilian <k...@outback.escape.de> 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