qsimulate-open / bagel

Brilliantly Advanced General Electronic-structure Library
GNU General Public License v3.0
92 stars 44 forks source link

Issues compiling BAGEL in Fedora #228

Open susilehtola opened 3 years ago

susilehtola commented 3 years ago

I'm trying to see if it would make sense to package BAGEL for Fedora, as it is one of the rare open source programs that supports relativistic calculations.

The compile crashes in the following

make[4]: Entering directory '/home/susi/rpmbuild/BUILD/bagel-1.2.2/src/util/io'
/bin/sh ../../../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../..   -I/usr/include -I../../.. -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -c -o moldenin.lo moldenin.cc
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../../.. -I/usr/include -I../../.. -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -c moldenin.cc  -fPIC -DPIC -o .libs/moldenin.o
In file included from ../../../btas/generic/dot_impl.h:9,
                 from ../../../btas/btas.h:6,
                 from ../../../src/util/math/btas_interface.h:38,
                 from ../../../src/util/math/vectorb.h:30,
                 from ../../../src/util/math/matrix_base.h:33,
                 from ../../../src/util/math/matrix.h:32,
                 from ../../../src/util/math/zmatrix.h:30,
                 from ../../../src/molecule/shell.h:29,
                 from ../../../src/molecule/atom.h:29,
                 from ../../../src/molecule/molecule.h:29,
                 from ../../../src/wfn/hcoreinfo.h:29,
                 from ../../../src/mat1e/hcore.h:29,
                 from ../../../src/wfn/reference.h:30,
                 from ../../../src/util/io/moldenio.h:31,
                 from ../../../src/util/io/moldenin.h:28,
                 from moldenin.cc:25:
../../../btas/types.h:16:10: fatal error: cblas.h: No such file or directory
   16 | #include <cblas.h>
      |          ^~~~~~~~~
compilation terminated.

I am wondering if this include is even needed; after all, src/util/f77.h already appears to define interfaces to BLAS functions...

I am running on Fedora 34 x86_64 and compiling in non-MPI mode with ./configure --with-libxc --with-boost --disable-smith

susilehtola commented 3 years ago

Nevermind, looks like BAGEL also uses CBLAS. I solved this issue just by adding a missing include path.

susilehtola commented 3 years ago

The next issue is that there's a problem with boost

In file included from ../../../src/util/serialization.h:46,
                 from btas_interface.cc:25:
/usr/include/boost/property_tree/ptree_serialization.hpp: In function ‘void boost::property_tree::detail::load_children(Archive&, boost::property_tree::basic_ptree<K, D, C>&)’:
/usr/include/boost/property_tree/ptree_serialization.hpp:66:24: error: ‘library_version_type’ in namespace ‘bsa’ does not name a type
   66 |             const bsa::library_version_type library_version(
      |                        ^~~~~~~~~~~~~~~~~~~~
/usr/include/boost/property_tree/ptree_serialization.hpp:69:21: error: ‘library_version_type’ is not a member of ‘bsa’; did you mean ‘boost::serialization::library_version_type’?
   69 |             if(bsa::library_version_type(3) < library_version){
      |                     ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/boost/serialization/vector.hpp:28,
                 from ../../../src/util/serialization.h:39,
                 from btas_interface.cc:25:
/usr/include/boost/serialization/library_version_type.hpp:36:7: note: ‘boost::serialization::library_version_type’ declared here
   36 | class library_version_type {
      |       ^~~~~~~~~~~~~~~~~~~~
In file included from ../../../src/util/serialization.h:46,
                 from btas_interface.cc:25:
/usr/include/boost/property_tree/ptree_serialization.hpp:69:47: error: ‘library_version’ was not declared in this scope
   69 |             if(bsa::library_version_type(3) < library_version){
      |                                               ^~~~~~~~~~~~~~~

this is fixed by #229.