abyss
abyss copied to clipboard
abyss-2.1.0: cannot enable sparsehash due to gcc-5.4.0 with gomp
Hi, I am trying older gcc versions and I received:
checking for tr1/functional... yes
checking boost/functional/hash.hpp usability... yes
checking boost/functional/hash.hpp presence... yes
checking for boost/functional/hash.hpp... yes
checking boost/property_map/property_map.hpp usability... yes
checking boost/property_map/property_map.hpp presence... yes
checking for boost/property_map/property_map.hpp... yes
checking google/sparse_hash_map usability... no
checking google/sparse_hash_map presence... yes
configure: WARNING: google/sparse_hash_map: present but cannot be compiled
configure: WARNING: google/sparse_hash_map: check for missing prerequisite headers?
configure: WARNING: google/sparse_hash_map: see the Autoconf documentation
configure: WARNING: google/sparse_hash_map: section "Present But Cannot Be Compiled"
configure: WARNING: google/sparse_hash_map: proceeding with the compiler's result
configure: WARNING: ## ----------------------------------- ##
configure: WARNING: ## Report this to [email protected] ##
configure: WARNING: ## ----------------------------------- ##
checking for google/sparse_hash_map... no
checking unordered_map usability... no
checking unordered_map presence... no
checking for unordered_map... no
checking tr1/unordered_map usability... yes
checking tr1/unordered_map presence... yes
checking for tr1/unordered_map... yes
checking unordered_set usability... no
checking unordered_set presence... no
checking for unordered_set... no
checking tr1/unordered_set usability... yes
checking tr1/unordered_set presence... yes
checking for tr1/unordered_set... yes
checking boost/unordered_set.hpp usability... yes
checking boost/unordered_set.hpp presence... yes
checking for boost/unordered_set.hpp... yes
checking sqlite3.h usability... yes
checking sqlite3.h presence... yes
checking for sqlite3.h... yes
checking for main in -lsqlite3... yes
checking for x86_64-pc-linux-gnu-g++ option to support OpenMP... -fopenmp
configure: error: ABySS should be compiled with Google sparsehash to
reduce memory usage. It may be downloaded here:
https://code.google.com/p/sparsehash/
If you do not wish to use sparsehash, specify --without-sparsehash.
Looking into config.log
I see:
configure:8241: checking for x86_64-pc-linux-gnu-g++ option to support OpenMP
configure:8256: x86_64-pc-linux-gnu-g++ -o conftest -O2 -pipe -O2 -pipe -march=native -ftree-vectorize -I/apps/gentoo/var/tmp/portage/sci-biology/abyss-2.1.0/work/abyss
-2.1.0 -isystem/apps/gentoo/var/tmp/portage/sci-biology/abyss-2.1.0/work/abyss-2.1.0/boost_1_56_0 -Wl,--as-needed conftest.cpp -ldl -lm >&5
conftest.cpp:78:2: error: 'choke' does not name a type
choke me
^
In file included from conftest.cpp:80:0:
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:39:3: error: 'omp_lock_t' does not name a type
} omp_lock_t;
^
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:86:28: error: variable or field 'omp_init_lock' declared void
extern void omp_init_lock (omp_lock_t *) __GOMP_NOTHROW;
^
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:86:28: error: 'omp_lock_t' was not declared in this scope
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:86:40: error: expected primary-expression before ')' token
extern void omp_init_lock (omp_lock_t *) __GOMP_NOTHROW;
^
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:87:31: error: variable or field 'omp_destroy_lock' declared void
extern void omp_destroy_lock (omp_lock_t *) __GOMP_NOTHROW;
^
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:87:31: error: 'omp_lock_t' was not declared in this scope
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:87:43: error: expected primary-expression before ')' token
extern void omp_destroy_lock (omp_lock_t *) __GOMP_NOTHROW;
^
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:88:27: error: variable or field 'omp_set_lock' declared void
extern void omp_set_lock (omp_lock_t *) __GOMP_NOTHROW;
^
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:88:27: error: 'omp_lock_t' was not declared in this scope
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:88:39: error: expected primary-expression before ')' token
extern void omp_set_lock (omp_lock_t *) __GOMP_NOTHROW;
^
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:89:29: error: variable or field 'omp_unset_lock' declared void
extern void omp_unset_lock (omp_lock_t *) __GOMP_NOTHROW;
^
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:89:29: error: 'omp_lock_t' was not declared in this scope
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:89:41: error: expected primary-expression before ')' token
extern void omp_unset_lock (omp_lock_t *) __GOMP_NOTHROW;
^
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:90:27: error: 'omp_lock_t' was not declared in this scope
extern int omp_test_lock (omp_lock_t *) __GOMP_NOTHROW;
^
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:90:39: error: expected primary-expression before ')' token
extern int omp_test_lock (omp_lock_t *) __GOMP_NOTHROW;
^
/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h:90:41: error: expected ',' or ';' before 'throw'
extern int omp_test_lock (omp_lock_t *) __GOMP_NOTHROW;
^
configure:8256: $? = 1
Hmm, I'm not sure what the issue is. It does indeed look like sparsehash fails to compile with that particular gcc.
I am wondering if sparsehash has changed its minimum requirements, or if you are somehow using a development/experimental version of sparsehash. Could you post any info you can find about the version of sparsehash on your system?
Below I have posted what I believe the relevant area of config.log
:
configure:8137: x86_64-pc-linux-gnu-g++ -c -O2 -pipe -O2 -pipe -march=native -ftree-vectorize -I/apps/gentoo/var/tmp/portage/sci-biology/abyss-2.1.0/work/abyss-2.1.0 -isystem/apps/gentoo/var/tmp/portage/sci-biology/abyss-2.1.0/work/abyss-2.1.0/boost_1_56_0 conftest.cpp >&5
In file included from /apps/gentoo/usr/include/sparsehash/sparsetable:227:0,
from /apps/gentoo/usr/include/sparsehash/internal/sparsehashtable.h:106,
from /apps/gentoo/usr/include/sparsehash/sparse_hash_map:93,
from /apps/gentoo/usr/include/google/sparse_hash_map:34,
from conftest.cpp:103:
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:98:27: error: 'hash' in namespace 'std' does not name a template type
class HashFcn = SPARSEHASH_HASH<Key>, // defined in sparseconfig.h
^
In file included from /apps/gentoo/usr/include/google/sparse_hash_map:34:0,
from conftest.cpp:103:
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:98:42: error: expected '>' before '<' token
class HashFcn = SPARSEHASH_HASH<Key>, // defined in sparseconfig.h
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:128:36: error: 'EqualKey' was not declared in this scope
SetKey, EqualKey, Alloc> ht;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:128:46: error: 'Alloc' was not declared in this scope
SetKey, EqualKey, Alloc> ht;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:128:51: error: template argument 6 is invalid
SetKey, EqualKey, Alloc> ht;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:128:51: error: template argument 7 is invalid
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:132:20: error: 'ht' is not a class or namespace
typedef typename ht::key_type key_type;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:135:20: error: 'ht' is not a class or namespace
typedef typename ht::value_type value_type;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:136:20: error: 'ht' is not a class or namespace
typedef typename ht::hasher hasher;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:137:20: error: 'ht' is not a class or namespace
typedef typename ht::key_equal key_equal;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:138:11: error: 'Alloc' does not name a type
typedef Alloc allocator_type;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:140:20: error: 'ht' is not a class or namespace
typedef typename ht::size_type size_type;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:141:20: error: 'ht' is not a class or namespace
typedef typename ht::difference_type difference_type;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:142:20: error: 'ht' is not a class or namespace
typedef typename ht::pointer pointer;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:143:20: error: 'ht' is not a class or namespace
typedef typename ht::const_pointer const_pointer;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:144:20: error: 'ht' is not a class or namespace
typedef typename ht::reference reference;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:145:20: error: 'ht' is not a class or namespace
typedef typename ht::const_reference const_reference;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:147:20: error: 'ht' is not a class or namespace
typedef typename ht::iterator iterator;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:148:20: error: 'ht' is not a class or namespace
typedef typename ht::const_iterator const_iterator;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:149:20: error: 'ht' is not a class or namespace
typedef typename ht::local_iterator local_iterator;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:150:20: error: 'ht' is not a class or namespace
typedef typename ht::const_local_iterator const_local_iterator;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:165:3: error: 'allocator_type' does not name a type
allocator_type get_allocator() const { return rep.get_allocator(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:175:34: error: 'allocator_type' does not name a type
const allocator_type& alloc = allocator_type())
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:184:25: error: 'allocator_type' does not name a type
const allocator_type& alloc = allocator_type())
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:305:20: error: 'ht' is not a class or namespace
typedef typename ht::NopointerSerializer NopointerSerializer;
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:175:73: error: there are no arguments to 'allocator_type' that depend on a template parameter, so a declaration of 'allocator_type' must be available [-fpermissive]
const allocator_type& alloc = allocator_type())
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:175:73: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:184:64: error: there are no arguments to 'allocator_type' that depend on a template parameter, so a declaration of 'allocator_type' must be available [-fpermissive]
const allocator_type& alloc = allocator_type())
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::iterator google::sparse_hash_map<Key, T, HashFcn>::begin()':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:153:63: error: request for member 'begin' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
iterator begin() { return rep.begin(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::iterator google::sparse_hash_map<Key, T, HashFcn>::end()':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:154:63: error: request for member 'end' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
iterator end() { return rep.end(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::const_iterator google::sparse_hash_map<Key, T, HashFcn>::begin() const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:155:63: error: request for member 'begin' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
const_iterator begin() const { return rep.begin(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::const_iterator google::sparse_hash_map<Key, T, HashFcn>::end() const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:156:63: error: request for member 'end' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
const_iterator end() const { return rep.end(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::local_iterator google::sparse_hash_map<Key, T, HashFcn>::begin(google::sparse_hash_map<Key, T, HashFcn>::size_type)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:159:63: error: request for member 'begin' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
local_iterator begin(size_type i) { return rep.begin(i); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::local_iterator google::sparse_hash_map<Key, T, HashFcn>::end(google::sparse_hash_map<Key, T, HashFcn>::size_type)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:160:63: error: request for member 'end' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
local_iterator end(size_type i) { return rep.end(i); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::const_local_iterator google::sparse_hash_map<Key, T, HashFcn>::begin(google::sparse_hash_map<Key, T, HashFcn>::size_type) const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:161:63: error: request for member 'begin' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
const_local_iterator begin(size_type i) const { return rep.begin(i); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::const_local_iterator google::sparse_hash_map<Key, T, HashFcn>::end(google::sparse_hash_map<Key, T, HashFcn>::size_type) const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:162:63: error: request for member 'end' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
const_local_iterator end(size_type i) const { return rep.end(i); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::hasher google::sparse_hash_map<Key, T, HashFcn>::hash_funct() const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:166:63: error: request for member 'hash_funct' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
hasher hash_funct() const { return rep.hash_funct(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::key_equal google::sparse_hash_map<Key, T, HashFcn>::key_eq() const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:168:63: error: request for member 'key_eq' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
key_equal key_eq() const { return rep.key_eq(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In constructor 'google::sparse_hash_map<Key, T, HashFcn>::sparse_hash_map(InputIterator, InputIterator, google::sparse_hash_map<Key, T, HashFcn>::size_type, const hasher&, const key_equal&, const int&)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:186:9: error: request for member 'insert' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
rep.insert(f, l);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'void google::sparse_hash_map<Key, T, HashFcn>::clear()':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:192:45: error: request for member 'clear' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
void clear() { rep.clear(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'void google::sparse_hash_map<Key, T, HashFcn>::swap(google::sparse_hash_map<Key, T, HashFcn>&)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:193:45: error: request for member 'swap' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
void swap(sparse_hash_map& hs) { rep.swap(hs.rep); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::size_type google::sparse_hash_map<Key, T, HashFcn>::size() const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:197:52: error: request for member 'size' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
size_type size() const { return rep.size(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::size_type google::sparse_hash_map<Key, T, HashFcn>::max_size() const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:198:52: error: request for member 'max_size' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
size_type max_size() const { return rep.max_size(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'bool google::sparse_hash_map<Key, T, HashFcn>::empty() const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:199:52: error: request for member 'empty' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
bool empty() const { return rep.empty(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::size_type google::sparse_hash_map<Key, T, HashFcn>::bucket_count() const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:200:52: error: request for member 'bucket_count' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
size_type bucket_count() const { return rep.bucket_count(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::size_type google::sparse_hash_map<Key, T, HashFcn>::max_bucket_count() const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:201:52: error: request for member 'max_bucket_count' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
size_type max_bucket_count() const { return rep.max_bucket_count(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::size_type google::sparse_hash_map<Key, T, HashFcn>::bucket_size(google::sparse_hash_map<Key, T, HashFcn>::size_type) const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:204:60: error: request for member 'bucket_size' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
size_type bucket_size(size_type i) const { return rep.bucket_size(i); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::size_type google::sparse_hash_map<Key, T, HashFcn>::bucket(const key_type&) const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:205:60: error: request for member 'bucket' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
size_type bucket(const key_type& key) const { return rep.bucket(key); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'float google::sparse_hash_map<Key, T, HashFcn>::max_load_factor() const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:211:9: error: request for member 'get_resizing_parameters' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
rep.get_resizing_parameters(&shrink, &grow);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'void google::sparse_hash_map<Key, T, HashFcn>::max_load_factor(float)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:216:9: error: request for member 'get_resizing_parameters' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
rep.get_resizing_parameters(&shrink, &grow);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:217:9: error: request for member 'set_resizing_parameters' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
rep.set_resizing_parameters(shrink, new_grow);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'float google::sparse_hash_map<Key, T, HashFcn>::min_load_factor() const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:222:9: error: request for member 'get_resizing_parameters' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
rep.get_resizing_parameters(&shrink, &grow);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'void google::sparse_hash_map<Key, T, HashFcn>::min_load_factor(float)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:227:9: error: request for member 'get_resizing_parameters' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
rep.get_resizing_parameters(&shrink, &grow);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:228:9: error: request for member 'set_resizing_parameters' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
rep.set_resizing_parameters(new_shrink, grow);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'void google::sparse_hash_map<Key, T, HashFcn>::set_resizing_parameters(float, float)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:232:9: error: request for member 'set_resizing_parameters' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
rep.set_resizing_parameters(shrink, grow);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'void google::sparse_hash_map<Key, T, HashFcn>::resize(google::sparse_hash_map<Key, T, HashFcn>::size_type)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:235:45: error: request for member 'resize' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
void resize(size_type hint) { rep.resize(hint); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::iterator google::sparse_hash_map<Key, T, HashFcn>::find(const key_type&)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:239:67: error: request for member 'find' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
iterator find(const key_type& key) { return rep.find(key); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::const_iterator google::sparse_hash_map<Key, T, HashFcn>::find(const key_type&) const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:240:67: error: request for member 'find' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
const_iterator find(const key_type& key) const { return rep.find(key); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::size_type google::sparse_hash_map<Key, T, HashFcn>::count(const key_type&) const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:249:67: error: request for member 'count' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
size_type count(const key_type& key) const { return rep.count(key); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'std::pair<int, int> google::sparse_hash_map<Key, T, HashFcn>::equal_range(const key_type&)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:252:16: error: request for member 'equal_range' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
return rep.equal_range(key);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'std::pair<int, int> google::sparse_hash_map<Key, T, HashFcn>::equal_range(const key_type&) const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:256:16: error: request for member 'equal_range' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
return rep.equal_range(key);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'std::pair<int, bool> google::sparse_hash_map<Key, T, HashFcn>::insert(const value_type&)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:261:16: error: request for member 'insert' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
return rep.insert(obj);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'void google::sparse_hash_map<Key, T, HashFcn>::insert(InputIterator, InputIterator)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:264:9: error: request for member 'insert' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
rep.insert(f, l);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'void google::sparse_hash_map<Key, T, HashFcn>::insert(google::sparse_hash_map<Key, T, HashFcn>::const_iterator, google::sparse_hash_map<Key, T, HashFcn>::const_iterator)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:267:9: error: request for member 'insert' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
rep.insert(f, l);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'void google::sparse_hash_map<Key, T, HashFcn>::set_deleted_key(const key_type&)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:279:9: error: request for member 'set_deleted_key' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
rep.set_deleted_key(key);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'void google::sparse_hash_map<Key, T, HashFcn>::clear_deleted_key()':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:281:53: error: request for member 'clear_deleted_key' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
void clear_deleted_key() { rep.clear_deleted_key(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::key_type google::sparse_hash_map<Key, T, HashFcn>::deleted_key() const':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:282:60: error: request for member 'deleted_key' in '((const google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'const ht {aka const int}'
key_type deleted_key() const { return rep.deleted_key(); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'google::sparse_hash_map<Key, T, HashFcn>::size_type google::sparse_hash_map<Key, T, HashFcn>::erase(const key_type&)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:285:67: error: request for member 'erase' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
size_type erase(const key_type& key) { return rep.erase(key); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'void google::sparse_hash_map<Key, T, HashFcn>::erase(google::sparse_hash_map<Key, T, HashFcn>::iterator)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:286:60: error: request for member 'erase' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
void erase(iterator it) { rep.erase(it); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'void google::sparse_hash_map<Key, T, HashFcn>::erase(google::sparse_hash_map<Key, T, HashFcn>::iterator, google::sparse_hash_map<Key, T, HashFcn>::iterator)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:287:60: error: request for member 'erase' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
void erase(iterator f, iterator l) { rep.erase(f, l); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'bool google::sparse_hash_map<Key, T, HashFcn>::serialize(ValueSerializer, OUTPUT*)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:317:16: error: request for member 'serialize' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
return rep.serialize(serializer, fp);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'bool google::sparse_hash_map<Key, T, HashFcn>::unserialize(ValueSerializer, INPUT*)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:336:16: error: request for member 'unserialize' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
return rep.unserialize(serializer, fp);
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'bool google::sparse_hash_map<Key, T, HashFcn>::write_metadata(OUTPUT*)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:342:54: error: request for member 'write_metadata' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
bool write_metadata(OUTPUT *fp) { return rep.write_metadata(fp); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'bool google::sparse_hash_map<Key, T, HashFcn>::read_metadata(INPUT*)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:345:54: error: request for member 'read_metadata' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
bool read_metadata(INPUT *fp) { return rep.read_metadata(fp); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'bool google::sparse_hash_map<Key, T, HashFcn>::write_nopointer_data(OUTPUT*)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:348:54: error: request for member 'write_nopointer_data' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
bool write_nopointer_data(OUTPUT *fp) { return rep.write_nopointer_data(fp); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In member function 'bool google::sparse_hash_map<Key, T, HashFcn>::read_nopointer_data(INPUT*)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:351:54: error: request for member 'read_nopointer_data' in '((google::sparse_hash_map<Key, T, HashFcn>*)this)->google::sparse_hash_map<Key, T, HashFcn>::rep', which is of non-class type 'google::sparse_hash_map<Key, T, HashFcn>::ht {aka int}'
bool read_nopointer_data(INPUT *fp) { return rep.read_nopointer_data(fp); }
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: At global scope:
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:356:66: error: wrong number of template arguments (5, should be at least 2)
inline void swap(sparse_hash_map<Key, T, HashFcn, EqualKey, Alloc>& hm1,
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:101:7: note: provided for 'template<class Key, class T, class HashFcn> class google::sparse_hash_map'
class sparse_hash_map {
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:357:66: error: wrong number of template arguments (5, should be at least 2)
sparse_hash_map<Key, T, HashFcn, EqualKey, Alloc>& hm2) {
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:101:7: note: provided for 'template<class Key, class T, class HashFcn> class google::sparse_hash_map'
class sparse_hash_map {
^
/apps/gentoo/usr/include/sparsehash/sparse_hash_map: In function 'void google::swap(int&, int&)':
/apps/gentoo/usr/include/sparsehash/sparse_hash_map:358:7: error: request for member 'swap' in 'hm1', which is of non-class type 'int'
hm1.swap(hm2);
^
configure:8137: $? = 1
configure: failed program was:
It is dev-cpp/sparsehash-2.0.3-r1::gentoo. I thought it could maybe be some issue with headers copied&fixed aside by gcc (it used to poke through headers in /usr/include and correct them in its own copies. Just in case:
$ equery belongs omp.h
* Searching for omp.h ...
sys-devel/gcc-4.2.4-r1 (/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.4/include/omp.h)
sys-devel/gcc-4.4.7 (/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.7/include/omp.h)
sys-devel/gcc-4.5.4 (/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.4/include/omp.h)
sys-devel/gcc-4.7.4 (/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.4/include/omp.h)
sys-devel/gcc-4.8.5 (/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/omp.h)
sys-devel/gcc-4.9.3 (/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/include/omp.h)
sys-devel/gcc-4.9.4 (/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/include/omp.h)
sys-devel/gcc-5.4.0-r4 (/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/omp.h)
sys-devel/gcc-6.3.0 (/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/omp.h)
sys-devel/gcc-7.1.0-r1 (/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/7.1.0/include/omp.h)
sys-devel/gcc-7.2.0-r1 (/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/7.2.0/include/omp.h)
sys-devel/gcc-7.3.0-r1 (/apps/gentoo/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/omp.h)
sys-libs/libomp-5.0.1 (/apps/gentoo/usr/include/omp.h)
$
Hmm. sparsehash-2.0.3 is the most recent release, which was published way back in Oct 2015. It is quite possible that there are some gentoo-specific patches to sparsehash that are breaking ABySS compilation.
My guess is that there is a gentoo patch to sparsehash that requires compiling in "C++11" mode (ABySS normally compiles in "C++98" mode). You could test that theory by adding the word CXXFLAGS=-std=c++11
to your configure
command. It might solve your issues, but if not, I'm really not sure what to do next.
If your goal is just to install ABySS, you may wish to try installing ABySS using Linuxbrew. See http://linuxbrew.sh/ then brew install abyss
.
If your goal is to fix the Gentoo portage package of ABySS, the Homebrew formula may be a useful reference: https://github.com/Homebrew/homebrew-core/blob/master/Formula/abyss.rb
Thanks, Shaun.
@benvvalk Yes, there is a patch at https://packages.gentoo.org/packages/dev-cpp/sparsehash distributed along 2.0.3-r1. True, the -std=c++11
helped to get the testcase compiled with gcc-5.4.0.
CXXFLAGS="-std=c++11" ...
...
checking google/sparse_hash_map usability... yes
checking google/sparse_hash_map presence... yes
checking for google/sparse_hash_map... yes
Thank you @sjackman , unfortunately the linuxbrew formula does not really help me. I am scratching my head what --disable-dependency-tracking
and --disable-silent-rules
are useful for but will not investigate now. Yes, I want to have the Gentoo abyss
package working, same way like 2.0.2 was.
As I see also with gcc-5.4.0 I am not getting ABYSS-P out, so this blind shot at using older gcc versions was not really helpful anyway.
Compiling ABYSS-P
requires installing the dependency Open-MPI.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.
keeping this one open until fixed
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.