abyss icon indicating copy to clipboard operation
abyss copied to clipboard

abyss-2.1.0: cannot enable sparsehash due to gcc-5.4.0 with gomp

Open mmokrejs opened this issue 6 years ago • 10 comments

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

build.log.txt config.log.txt

mmokrejs avatar May 07 '18 11:05 mmokrejs

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:

benvvalk avatar May 07 '18 16:05 benvvalk

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)
$

mmokrejs avatar May 07 '18 17:05 mmokrejs

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.

benvvalk avatar May 07 '18 20:05 benvvalk

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

sjackman avatar May 07 '18 20:05 sjackman

Thanks, Shaun.

benvvalk avatar May 07 '18 21:05 benvvalk

@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.

mmokrejs avatar May 07 '18 22:05 mmokrejs

Compiling ABYSS-P requires installing the dependency Open-MPI.

sjackman avatar May 14 '18 19:05 sjackman

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

stale[bot] avatar Jun 04 '18 19:06 stale[bot]

keeping this one open until fixed

benvvalk avatar Jun 04 '18 20:06 benvvalk

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

stale[bot] avatar Jun 25 '18 20:06 stale[bot]