CentOS 6 SciDB-15.7 Compile Error


#1

Found several errors while doing a “./run.py make” in file SystemCatalog.cpp. I’m using gcc-4.9.1 in CentOS 6. Any help is truly appreciated. Copying the first few compile messages:

[kushald@c5 scidb-15.7.0.9267]$ ./run.py make
[ 0%] Built target json_lib
[ 0%] Built target MurmurHash_lib
[ 8%] Built target util_lib
[ 9%] Built target scidb_msg_lib
[ 9%] Built target genmeta
[ 9%] Building CXX object src/system/catalog/CMakeFiles/catalog_lib.dir/SystemCatalog.cpp.o
/home/kushald/scidb-15.7.0.9267/src/system/catalog/SystemCatalog.cpp: In member function ‘void scidb::SystemCatalog::_invalidateTempArray(const string&)’:
/home/kushald/scidb-15.7.0.9267/src/system/catalog/SystemCatalog.cpp:158:13: error: ‘declaration’ is not a member of ‘pqxx::prepare’
pqxx::prepare::declaration decl = _connection->prepare(sql,sql)
^
/home/kushald/scidb-15.7.0.9267/src/system/catalog/SystemCatalog.cpp:163:33: error: ‘treat_string’ was not declared in this scope
decl(“varchar”, treat_string);
^
/home/kushald/scidb-15.7.0.9267/src/system/catalog/SystemCatalog.cpp:163:45: error: ‘decl’ was not declared in this scope
decl(“varchar”, treat_string);
^
/home/kushald/scidb-15.7.0.9267/src/system/catalog/SystemCatalog.cpp: In function ‘void scidb::fillArrayIdentifiers(pqxx::connection*, pqxx::basic_transaction*, const string&, scidb::ArrayID, scidb::ArrayUAID&, scidb::VersionID&)’:
/home/kushald/scidb-15.7.0.9267/src/system/catalog/SystemCatalog.cpp:325:68: error: ‘treat_string’ was not declared in this scope
connection->prepare(“find-by-name2”, sql_u)(“varchar”, treat_string);
^
/home/kushald/scidb-15.7.0.9267/src/system/catalog/SystemCatalog.cpp:325:55: error: void value not ignored as it ought to be
connection->prepare(“find-by-name2”, sql_u)(“varchar”, treat_string);
^
/home/kushald/scidb-15.7.0.9267/src/system/catalog/SystemCatalog.cpp: In member function ‘void scidb::SystemCatalog::_addArray(const scidb::NamespaceDesc&, const scidb::ArrayDesc&, pqxx::basic_transaction*)’:
/home/kushald/scidb-15.7.0.9267/src/system/catalog/SystemCatalog.cpp:470:24: error: ‘treat_direct’ was not declared in this scope
(“bigint”, treat_direct)
^
/home/kushald/scidb-15.7.0.9267/src/system/catalog/SystemCatalog.cpp:469:40: error: void value not ignored as it ought to be
_connection->prepare(sql1, sql1)
^
/home/kushald/scidb-15.7.0.9267/src/system/catalog/SystemCatalog.cpp:471:25: error: ‘treat_string’ was not declared in this scope


#2

This is an issue with the libpqxx library, which is the C++ binding for Postgres. The package changed during 15.12 development. If you try with 15.12, the problem should be fixed… or you can look at the 15.12 source for SystemCatalog.cpp and use it as a guide for modifying 15.7 (Hmmm, risky.).

This link about the changes to the libpqxx API should be helpful: http://lists.pgfoundry.org/pipermail/libpqxx-general/2012-July/000680.html


#3

Of course 15.12 isn’t officially out yet - but should be in a couple of days…


#4

I found a recipe to fix 15.7 installation problems on CentOS6. Here it is:

  1. yum reinstall all rpms from rpms directory – I had to manually download all scidb-15.7 rpm packages from downloads.paradigm4.com webpage
  2. use sudo export http_proxy=proxyhost:proxyport setup|make etc…
  3. run prepare_toolchain
  4. uninstall libpqxx-4.0 and reinstall libpqxx-3.1.16.3 and libpqxx-devel-3.1.16.3
  5. Manually download scalapack, build and copy libscalapack.a to /scidbtrunk/stage/build/src/mpi/local_scalapack/container/src/scalapackForMPICH2-build/install/lib/libscalapack.a

This finally completed the build and install. SciDB-15.7 runs now!