[Rsbackup-maint] Bug#897852: Bug#897852: rsbackup: ftbfs with GCC-8

Matthew Vernon matthew at debian.org
Sat Jul 21 12:03:21 BST 2018


reassign 897852 src:pangomm
quit

Hi,

I think this is a pangomm bug - see the errors below about incompatible 
function type casts.

I was misled by the final error message, but actually, that's because 
the autoconfery for rsbackup does:

# 1. Glibmm uses C++14 features
# 2. Which Clang moans about even in gnu++11 mode.
# 3. But you can disable the moan with a -Wno... option.
# 4. But GCC errors if it encounters some _other_ warning.
#
# 2 and 4 are probably bugs. Anyway the fix is:
AC_CACHE_CHECK([whether Glibmm uses features from the future],
   [rjk_cv_glibmm_future],
   [save_CXXFLAGS="${CXXFLAGS}"
    CXXFLAGS="${CXXFLAGS} ${rjk_cv_pangomm_cflags}"
    AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <glibmm/object.h>]])],
      [rjk_cv_glibmm_future=no],
      [rjk_cv_glibmm_future=yes])
    CXXGLAGS="${save_CXXFLAGS}"
])
if test $rjk_cv_glibmm_future = yes; then
   CXXFLAGS="${CXXFLAGS} -Wno-c++14-extensions"
fi

And you can see in the build log:
checking whether Glibmm uses features from the future... yes

...but I think in fact what happened is that the compile failed 
(probably due to the function cast that gcc complains about here), and 
that causes the build to append the -Wno-C++14-extensions argument.

But the package would have FTBFS anyway, because of the pangomm error, 
hence my reassigning this bug.

> In file included from /usr/include/sigc++-2.0/sigc++/sigc++.h:104,
>                   from /usr/include/pangomm-1.4/pangomm/layout.h:7,
>                   from Render.h:23,
>                   from Render.cc:16:
> /usr/include/sigc++-2.0/sigc++/signal.h: In static member function ‘static sigc::internal::signal_emit0<void, sigc::nil>::result_type sigc::internal::signal_emit0<void, sigc::nil>::emit(sigc::internal::signal_impl*)’:
> /usr/include/sigc++-2.0/sigc++/signal.h:798:56: error: cast between incompatible function types from ‘sigc::internal::hook’ {aka ‘void* (*)(void*)’} to ‘sigc::internal::signal_emit0<void, sigc::nil>::call_type’ {aka ‘void (*)(sigc::internal::slot_rep*)’} [-Werror=cast-function-type]
>             (reinterpret_cast<call_type>(slot.rep_->call_))(slot.rep_);
>                                                          ^
> /usr/include/sigc++-2.0/sigc++/signal.h: In static member function ‘static sigc::internal::signal_emit0<void, sigc::nil>::result_type sigc::internal::signal_emit0<void, sigc::nil>::emit_reverse(sigc::internal::signal_impl*)’:
> /usr/include/sigc++-2.0/sigc++/signal.h:825:55: error: cast between incompatible function types from ‘sigc::internal::hook’ {aka ‘void* (*)(void*)’} to ‘sigc::internal::signal_emit0<void, sigc::nil>::call_type’ {aka ‘void (*)(sigc::internal::slot_rep*)’} [-Werror=cast-function-type]
>             (reinterpret_cast<call_type>(it->rep_->call_))(it->rep_);
>                                                         ^
> At global scope:
> cc1plus: error: unrecognized command line option ‘-Wno-c++14-extensions’ [-Werror]
> cc1plus: all warnings being treated as errors

Sorry, I should have looked at this sooner.

Regards,

Matthew



More information about the Rsbackup-maint mailing list