Page MenuHome GnuPG

gpgme fails to build with gcc 7 (std::bind, etc)
Closed, DuplicatePublic

Description

over in https://bugs.debian.org/853431 we see this error reported when building gpgme 1.8.0 with gcc 7:

make[6]: *** [qgpgmebackend.lo] Error 1
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../lang/cpp/src -I../../../src -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/x86_64-linux-gnu/qt5 -fpic
-DBUILDING_QGPGME -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c multideletejob.cpp -o
multideletejob.o >/dev/null 2>&1
qgpgmechangeexpiryjob.cpp: In member function 'virtual GpgME::Error QGpgME::QGpgMEChangeExpiryJob::start(const GpgME::Key&, const QDateTime&)':
qgpgmechangeexpiryjob.cpp:81:14: error: 'bind' is not a member of 'std'
     run(std::bind(&change_expiry, std::placeholders::_1, key, expiry));
              ^~~~
qgpgmechangeexpiryjob.cpp:81:14: note: suggested alternative: 'find'
     run(std::bind(&change_expiry, std::placeholders::_1, key, expiry));
              ^~~~
              find
qgpgmechangeexpiryjob.cpp:81:40: error: 'std::placeholders' has not been declared
     run(std::bind(&change_expiry, std::placeholders::_1, key, expiry));
                                        ^~~~~~~~~~~~
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../lang/cpp/src -I../../../src -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/x86_64-linux-gnu/qt5 -fpic
-DBUILDING_QGPGME -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c qgpgmesecretkeyexportjob.cpp -o
qgpgmesecretkeyexportjob.o >/dev/null 2>&1
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../lang/cpp/src -I../../../src -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/x86_64-linux-gnu/qt5 -fpic
-DBUILDING_QGPGME -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c gpgme_backend_debug.cpp -o
gpgme_backend_debug.o >/dev/null 2>&1
In file included from qgpgmechangeexpiryjob.h:39:0,
                 from qgpgmechangeexpiryjob.cpp:38:
threadedjobmixin.h: In instantiation of 'void QGpgME::_detail::Thread<T_result>::run() [with T_result = std::tuple<GpgME::Error, QString, GpgME::Error>]':
qgpgmechangeexpiryjob.moc:111:1:   required from here
threadedjobmixin.h:113:30: error: 'm_function' was not declared in this scope
         m_result = m_function();
                    ~~~~~~~~~~^~
threadedjobmixin.h:113:30: note: suggested alternative: 'setFunction'
         m_result = m_function();
                    ~~~~~~~~~~^~
                    setFunction
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../lang/cpp/src -I../../../src -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/x86_64-linux-gnu/qt5 -fpic
-DBUILDING_QGPGME -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c qgpgmerefreshkeysjob.cpp -o
qgpgmerefreshkeysjob.o >/dev/null 2>&1
Makefile:830: recipe for target 'qgpgmechangeexpiryjob.lo' failed
make[6]: *** [qgpgmechangeexpiryjob.lo] Error 1
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../lang/cpp/src -I../../../src -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/x86_64-linux-gnu/qt5 -fpic
-DBUILDING_QGPGME -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c defaultkeygenerationjob.cpp -o
defaultkeygenerationjob.o >/dev/null 2>&1
make[6]: Leaving directory '/<<PKGBUILDDIR>>/lang/qt/src'
Makefile:690: recipe for target 'all' failed
make[5]: *** [all] Error 2
make[5]: Leaving directory '/<<PKGBUILDDIR>>/lang/qt/src'
Makefile:458: recipe for target 'all-recursive' failed
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory '/<<PKGBUILDDIR>>/lang/qt'
Makefile:457: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>/lang'
Makefile:522: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
Makefile:452: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
dh_auto_build: make -j64 returned exit code 2
debian/rules:8: recipe for target 'build' failed
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2

Details

External Link
https://bugs.debian.org/853431
Version
1.8.0