Control: reassign -1 src:libint2 Control: found -1 2.1.0~beta2-2 Control: affects -1 src:mpqc3
I've done some analysis of this build failure in Ubuntu, and it appears the problem is that libint2 is missing some header includes, which causes build failures of programs trying to include them. (Unfortunately, cmake is not good about showing the actual failing test or its output.) On arm64 with libint2-dev 2.1.0~beta2-2, I try to build the test case as follows: $ cat > /tmp/test.cxx #include <libint2.hpp> #include <libint2/boys.h> #if !(LIBINT_MAJOR_VERSION==2 && LIBINT_MINOR_VERSION==1 && LIBINT_MICRO_VERSION>=0) # error "Libint2 library is too old" #endif int main(int argc, char** argv) { libint2::GaussianGmEvalScratch<double,-1> scr; scr.init(5); // FmEval_Chebyshev3 converted to template in 30ea3cd4474c740bee7713bbc633d60f95b3a4c2 libint2::FmEval_Chebyshev3<double> cheb_boys_eval(12,1e-15); // libint2::finalize defined in 06be4d68a7b0da073469c40ccf49acb9ed62a18e libint2::finalize(); return 0; } ^D $ g++ -I/usr/include/eigen3 -I/usr/include/libint2 /tmp/test.cxx -o /tmp/test -lint2 And I see failures about math-related includes, which means this is probably triggered by a newer toolchain: In file included from /usr/include/libint2/basis.h:35:0, from /usr/include/libint2/cxxapi.h:30, from /usr/include/libint2.hpp:26, from /tmp/test.cxx:1: /usr/include/libint2/shell.h: In member function 'void libint2::Shell::renorm()': /usr/include/libint2/shell.h:130:65: error: 'pow' was not declared in this scope const auto two_alpha_to_am32 = pow(two_alpha,c.l+1) * sqrt(two_alpha); ^ /usr/include/libint2/shell.h:130:83: error: 'sqrt' was not declared in this scope const auto two_alpha_to_am32 = pow(two_alpha,c.l+1) * sqrt(two_alpha); ^ /usr/include/libint2/shell.h:143:66: error: call of overloaded 'abs(__gnu_cxx::__alloc_traits<std::allocator<double> >::value_type&)' is ambiguous max_ln_c = std::max(max_ln_c, log(std::abs(c.coeff[p]))); ^ In file included from /usr/include/c++/6/bits/stl_algo.h:59:0, from /usr/include/c++/6/algorithm:62, from /usr/include/libint2/vector.h:26, from /usr/include/libint2/libint2_types.h:4, from /usr/include/libint2.h:33, from /usr/include/libint2/cxxapi.h:26, from /usr/include/libint2.hpp:26, from /tmp/test.cxx:1: /usr/include/c++/6/cstdlib:172:3: note: candidate: long int std::abs(long int) abs(long __i) { return __builtin_labs(__i); } ^~~ In file included from /usr/include/c++/6/cstdlib:75:0, from /usr/include/c++/6/bits/stl_algo.h:59, from /usr/include/c++/6/algorithm:62, from /usr/include/libint2/vector.h:26, from /usr/include/libint2/libint2_types.h:4, from /usr/include/libint2.h:33, from /usr/include/libint2/cxxapi.h:26, from /usr/include/libint2.hpp:26, from /tmp/test.cxx:1: /usr/include/stdlib.h:735:12: note: candidate: int abs(int) extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur; ^~~ In file included from /usr/include/c++/6/bits/stl_algo.h:59:0, from /usr/include/c++/6/algorithm:62, from /usr/include/libint2/vector.h:26, from /usr/include/libint2/libint2_types.h:4, from /usr/include/libint2.h:33, from /usr/include/libint2/cxxapi.h:26, from /usr/include/libint2.hpp:26, from /tmp/test.cxx:1: /usr/include/c++/6/cstdlib:180:3: note: candidate: long long int std::abs(long long int) abs(long long __x) { return __builtin_llabs (__x); } ^~~ /usr/include/c++/6/cstdlib:185:3: note: candidate: __int128 std::abs(__int128) abs(__GLIBCXX_TYPE_INT_N_0 __x) { return __x >= 0 ? __x : -__x; } ^~~ In file included from /usr/include/libint2/basis.h:35:0, from /usr/include/libint2/cxxapi.h:30, from /usr/include/libint2.hpp:26, from /tmp/test.cxx:1: /usr/include/libint2/shell.h:143:67: error: 'log' was not declared in this scope max_ln_c = std::max(max_ln_c, log(std::abs(c.coeff[p]))); ^ /usr/include/libint2/shell.h: In member function 'void libint2::ShellPair::init(const libint2::Shell&, const libint2::Shell&, const real_t&)': /usr/include/libint2/shell.h:278:42: error: 'exp' was not declared in this scope p.K = exp(minus_rho_times_AB2) * oogamma; ^ In file included from /usr/include/libint2/cxxapi.h:31:0, from /usr/include/libint2.hpp:26, from /tmp/test.cxx:1: /usr/include/libint2/solidharmonics.h: In static member function 'static double libint2::solidharmonics::SolidHarmonicsCoefficients<Real>::coeff(int, int, int, int, int)': /usr/include/libint2/solidharmonics.h:191:20: error: 'M_SQRT2' was not declared in this scope return M_SQRT2*pfac*sum; ^~~~~~~ /usr/include/libint2/solidharmonics.h: In instantiation of 'static double libint2::solidharmonics::SolidHarmonicsCoefficients<Real>::coeff(int, int, int, int, int) [with Real = double]': /usr/include/libint2/solidharmonics.h:96:62: required from 'void libint2::solidharmonics::SolidHarmonicsCoefficients<Real>::init() [with Real = double]' /usr/include/libint2/solidharmonics.h:64:15: required from 'void libint2::solidharmonics::SolidHarmonicsCoefficients<Real>::init(unsigned char) [with Real = double]' /usr/include/libint2/solidharmonics.h:202:56: required from here /usr/include/libint2/solidharmonics.h:163:27: error: 'sqrt' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] Real pfac = sqrt(Real(fac[2*lx]*fac[2*ly]*fac[2*lz]*fac[l-abs_m])/(fac[2*l]*fac[l]*fac[lx]*fac[ly]*fac[lz]*fac[l+abs_m])); ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/features.h:364:0, from /usr/include/limits.h:25, from /usr/lib/gcc/aarch64-linux-gnu/6/include-fixed/limits.h:168, from /usr/lib/gcc/aarch64-linux-gnu/6/include-fixed/syslimits.h:7, from /usr/lib/gcc/aarch64-linux-gnu/6/include-fixed/limits.h:34, from /usr/include/libint2/intrinsic_types.h:24, from /usr/include/libint2.h:31, from /usr/include/libint2/cxxapi.h:26, from /usr/include/libint2.hpp:26, from /tmp/test.cxx:1: /usr/include/aarch64-linux-gnu/bits/mathcalls.h:156:1: note: 'double sqrt(double)' declared here, later in the translation unit __MATHCALL (sqrt,, (_Mdouble_ __x)); ^ In file included from /usr/include/libint2/cxxapi.h:31:0, from /usr/include/libint2.hpp:26, from /tmp/test.cxx:1: /usr/include/libint2/solidharmonics.h:186:22: error: 'sqrt' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] sum *= sqrt(Real(df_Kminus1[2*l])/(df_Kminus1[2*lx]*df_Kminus1[2*ly]*df_Kminus1[2*lz])); ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/features.h:364:0, from /usr/include/limits.h:25, from /usr/lib/gcc/aarch64-linux-gnu/6/include-fixed/limits.h:168, from /usr/lib/gcc/aarch64-linux-gnu/6/include-fixed/syslimits.h:7, from /usr/lib/gcc/aarch64-linux-gnu/6/include-fixed/limits.h:34, from /usr/include/libint2/intrinsic_types.h:24, from /usr/include/libint2.h:31, from /usr/include/libint2/cxxapi.h:26, from /usr/include/libint2.hpp:26, from /tmp/test.cxx:1: /usr/include/aarch64-linux-gnu/bits/mathcalls.h:156:1: note: 'double sqrt(double)' declared here, later in the translation unit __MATHCALL (sqrt,, (_Mdouble_ __x)); ^ So libint2 assumes that these math functions will be available, without explicitly including the correct headers. I don't know why this problem appears to affect every architecture except for amd64. It's possible this problem is fixed upstream in libint2 2.1.0-1.1 (I haven't had a chance yet to check), in which case this bug can be closed and the mpqc3 builds can be retried. However, it appears that the new libint2 is also FTBFS on several architectures with an unrelated problem, so that will also need to be resolved. -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer http://www.debian.org/ slanga...@ubuntu.com vor...@debian.org
signature.asc
Description: PGP signature