[Slackbuilds-users] bpp-phyl build fail

David Spencer baildon.research at googlemail.com
Sun Jan 14 23:16:11 UTC 2018


Hi Petar,

> i am planning a minor update of bppsuite and its deps. Everything
> compiles fine on Slackware64, however, compilation of bpp-phyl breaks
> on 32bit. Here's the build log:
>
> https://www.dropbox.com/s/23gel6zmv6ot91g/bpp-phyl.log?dl=0
>
> I contacted the developers and they said it is probably a compiler
> problem. Any ideas?

Ok I reproduced your problem here.
So, I tried replacing g++ with clang [1], and it failed.

The clang error messages are more helpful than the gcc error messages.
It looks like this is a coding error, *not* a compiler error. For
example:

In file included from
/tmp/SBo/bpp-phyl-2.3.2a/src/Bpp/Phyl/Io/BppOSubstitutionModelFormat.cpp:113:
/tmp/SBo/bpp-phyl-2.3.2a/src/Bpp/Phyl/Io/../Model/RegisterRatesSubstitutionModel.h:154:36:
error: virtual function 'getModelStates' has a different return type
      ('vector<unsigned long>') than the function it overrides (which
has return type 'vector<size_t>')
    std::vector<long unsigned int> getModelStates(int i) const
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
/tmp/SBo/bpp-phyl-2.3.2a/src/Bpp/Phyl/Io/../Model/AbstractWrappedModel.h:77:25:
note: overridden virtual function is here
    std::vector<size_t> getModelStates(int code) const { return
getModel().getModelStates(code); }
    ~~~~~~~~~~~~~~~~~~~ ^

and

In file included from
/tmp/SBo/bpp-phyl-2.3.2a/src/Bpp/Phyl/Io/BppOSubstitutionModelFormat.cpp:113:
/tmp/SBo/bpp-phyl-2.3.2a/src/Bpp/Phyl/Io/../Model/RegisterRatesSubstitutionModel.h:156:14:
error: no viable conversion from returned value of type
'vector<size_t>' to function
      return type 'vector<unsigned long>'
      return AbstractWrappedSubstitutionModel::getModelStates(i);
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib/gcc/i586-slackware-linux/5.3.0/../../../../include/c++/5.3.0/bits/stl_vector.h:318:7:
note: candidate constructor not viable: no known conversion from
      'std::vector<size_t>' (aka 'vector<unsigned int>') to 'const
std::vector<unsigned long, std::allocator<unsigned long> > &' for 1st
argument
      vector(const vector& __x)
      ^

Full log at https://pastebin.com/RXbpNcSN
Thanks for testing on 32 bit :-)
-D.

[1] 'export CXX=clang' before the cmake command


More information about the SlackBuilds-users mailing list