HomeFreeBSD

Using ports libc++ on non-leaf ports is problematic, as the requirement

Description

Using ports libc++ on non-leaf ports is problematic, as the requirement
basically flows to all ports that depend on gpgme-{cpp,qt5}. In particular,
sysutils/kf5-kwallet was breaking in FreeBSD 9.x because mismatches between
libc++ and libstdc++ from gcc48 were causing a gpgme symbol not to be found:

backendpersisthandler.cpp:(.text+0xf61): undefined reference to
`GpgME::Context::encrypt(std::vector<GpgME::Key, std::allocator<GpgME::Key> >
const&, GpgME::Data const&, GpgME::Data&, GpgME::Context::EncryptionFlags)'

Switch the build of both ports to lang/gcc on FreeBSD 9 and the system compiler
on FreeBSD 10:

  • Use USES:compiler-c++11-lib instead of compiler-c++11-lang, as we do need a

C++11-compatible standard library. This causes the right compiler to be chosen
as described above.

  • Set _GLIBCXX_USE_C99 so that gpgme-cpp builds with GCC 4.8 (std::to_string()

is not exposed by default on FreeBSD). Several other ports need to do the same.

  • Add a few patches to fix the gpgme-qt5:
    • patch-git_b4658f6a1 is a backport from an upstream commit to make the port build with GCC 4.8 without errors.
    • patch-lang_qt_src_qgpgmeencryptjob.cpp is a local workaround for the std::bind() bug mentioned in ports r424451.

PR: 214575
Submitted by: rakuco

Details

Provenance
jhaleAuthored on
Parents
rP426283: net-im/pecl-stomp: Pass maintainership to Danilo G. Baio (dbaio)
Branches
Unknown
Tags
Unknown