Bug#804768: eigen3: cause opencv ftbfs when LDBL_MANT_DIG greater than 112

YunQiang Su wzssyqa at gmail.com
Wed Nov 11 11:59:21 UTC 2015


Package: eigen3
Version: 3.3~alpha-1

When build opencv on mips64el and sparc64, we met

[ 28%] Building CXX object
modules/contrib/CMakeFiles/opencv_contrib.dir/src/rgbdodometry.cpp.o
cd /«BUILDDIR»/opencv-2.4.9.1+dfsg/obj-mips64el-linux-gnuabi64/modules/contrib
&& /usr/bin/c++   -DCVAPI_EXPORTS -g -O2 -fstack-protector-strong
-Wformat -Werror=format-security -D_FORTIFY_SOURCE=2    -fsigned-char
-W -Wall -Werror=return-type -Werror=address -Werror=sequence-point
-Wformat -Werror=format-security -Wmissing-declarations -Wundef
-Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing
-Wno-delete-non-virtual-dtor -fdiagnostics-show-option -pthread
-fomit-frame-pointer -ffunction-sections -g -O2
-fstack-protector-strong -Wformat -Werror=format-security  -DNDEBUG
-fPIC -isystem /«BUILDDIR»/opencv-2.4.9.1+dfsg/obj-mips64el-linux-gnuabi64
-isystem /usr/include/eigen3 -isystem
/«BUILDDIR»/opencv-2.4.9.1+dfsg/modules/contrib/include -isystem
/«BUILDDIR»/opencv-2.4.9.1+dfsg/modules/contrib/src -isystem
/«BUILDDIR»/opencv-2.4.9.1+dfsg/obj-mips64el-linux-gnuabi64/modules/contrib
-isystem /«BUILDDIR»/opencv-2.4.9.1+dfsg/modules/core/include -isystem
/«BUILDDIR»/opencv-2.4.9.1+dfsg/modules/flann/include -isystem
/«BUILDDIR»/opencv-2.4.9.1+dfsg/modules/imgproc/include -isystem
/«BUILDDIR»/opencv-2.4.9.1+dfsg/modules/highgui/include -isystem
/«BUILDDIR»/opencv-2.4.9.1+dfsg/modules/features2d/include -isystem
/«BUILDDIR»/opencv-2.4.9.1+dfsg/modules/calib3d/include -isystem
/«BUILDDIR»/opencv-2.4.9.1+dfsg/modules/ml/include -isystem
/«BUILDDIR»/opencv-2.4.9.1+dfsg/modules/objdetect/include -isystem
/«BUILDDIR»/opencv-2.4.9.1+dfsg/modules/video/include     -include
"/«BUILDDIR»/opencv-2.4.9.1+dfsg/obj-mips64el-linux-gnuabi64/modules/contrib/precomp.hpp"
-Winvalid-pch  -o CMakeFiles/opencv_contrib.dir/src/rgbdodometry.cpp.o
-c /«BUILDDIR»/opencv-2.4.9.1+dfsg/modules/contrib/src/rgbdodometry.cpp
In file included from
/usr/include/eigen3/unsupported/Eigen/MatrixFunctions:56:0,
                 from
/«BUILDDIR»/opencv-2.4.9.1+dfsg/modules/contrib/src/rgbdodometry.cpp:65:
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h:
In function 'void Eigen::internal::matrix_exp_compute(const
MatrixType&, ResultType&)':
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h:351:33:
error: 'StdStemFunctions' was not declared in this scope
     result = arg.matrixFunction(StdStemFunctions<ComplexScalar>::exp);
                                 ^
/usr/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h:351:63:
error: expected primary-expression before '>' token
     result = arg.matrixFunction(StdStemFunctions<ComplexScalar>::exp);

This is caused by
unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h, in it:

   void matrix_exp_compute(const MatrixType& arg, ResultType &result)
{
#if LDBL_MANT_DIG > 112 // rarely happens
  typedef typename traits<MatrixType>::Scalar Scalar;
  typedef typename NumTraits<Scalar>::Real RealScalar;
  typedef typename std::complex<RealScalar> ComplexScalar;
  if (sizeof(RealScalar) > 14) {
    result = arg.matrixFunction(StdStemFunctions<ComplexScalar>::exp);
    return;
  }
#endif

-- 
YunQiang Su



More information about the debian-science-maintainers mailing list