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

Reply via email to