Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to compile gtrib due to missing #include #61

Open
fsgmhoward opened this issue Mar 30, 2023 · 2 comments
Open

Unable to compile gtrib due to missing #include #61

fsgmhoward opened this issue Mar 30, 2023 · 2 comments

Comments

@fsgmhoward
Copy link

Hi,

I tried to compile the latest commit (40c9b83) and it fails. The compiler points out that AuxData.hpp used std::set without including it.

Error:

In file included from /root/gtirb/src/AuxData.cpp:15:
/root/gtirb/include/gtirb/AuxData.hpp:389:53: error: 'set' is not a member of 'std'
  389 | template <class... Args> struct auxdata_traits<std::set<Args...>> {
      |                                                     ^~~
/root/gtirb/include/gtirb/AuxData.hpp:25:1: note: 'std::set' is defined in header '<set>'; did you forget to '#include <set>'?
   24 | #include <list>
  +++ |+#include <set>
   25 | #include <map>
/root/gtirb/include/gtirb/AuxData.hpp:389:61: error: expected parameter pack before '...'
  389 | template <class... Args> struct auxdata_traits<std::set<Args...>> {
      |                                                             ^~~
/root/gtirb/include/gtirb/AuxData.hpp:389:61: error: template argument 1 is invalid
/root/gtirb/include/gtirb/AuxData.hpp:389:64: error: expected unqualified-id before '>' token
  389 | template <class... Args> struct auxdata_traits<std::set<Args...>> {
      |                                                                ^~
make[2]: *** [src/CMakeFiles/gtirb.dir/build.make:63: src/CMakeFiles/gtirb.dir/AuxData.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:449: src/CMakeFiles/gtirb.dir/all] Error 2
make: *** [Makefile:163: all] Error 2

Compilation command (used in dockerfile):

RUN git clone https://github.com/GrammaTech/gtirb.git && \
    cd gtirb && \
    git checkout 40c9b835c2982d57f6c33f506fe87f660c7f93db && \
    cmake -B build -DGTIRB_JAVA_API=OFF -DGTIRB_PY_API=OFF -DGTIRB_CL_API=OFF . && \
    cd build && \
    make install && \
    ldconfig && \
    cd ~
Full compilation log:
Cloning into 'gtirb'...
Note: switching to '282161cd1e9f81da6a31eddb2d2e7ed746d41274'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 282161cd No need to explicitly install libgtirb
-- The C compiler identification is GNU 9.4.0
-- The CXX compiler identification is GNU 9.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Boost: /usr/local/lib/cmake/Boost-1.81.0/BoostConfig.cmake (found suitable version "1.81.0", minimum required is "1.67")  
-- Configuring done
-- Generating done
-- Build files have been written to: /root/gtirb/build/googletest-download
Scanning dependencies of target googletest
[ 11%] Creating directories for 'googletest'
[ 22%] Performing download step (git clone) for 'googletest'
Cloning into 'googletest-src'...
Note: switching to 'release-1.10.0'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 703bd9ca Googletest export
[ 33%] No patch step for 'googletest'
[ 44%] Performing update step for 'googletest'
[ 55%] No configure step for 'googletest'
[ 66%] No build step for 'googletest'
[ 77%] No install step for 'googletest'
[ 88%] No test step for 'googletest'
[100%] Completed 'googletest'
[100%] Built target googletest
-- Found PythonInterp: /usr/bin/python (found version "2.7.18") 
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Found Protobuf: /usr/local/lib/libprotobuf.so;-lpthread (found suitable version "3.20.3", minimum required is "3.0.0") 
-- clang-tidy not found.
-- Looking for include file sys/resource.h
-- Looking for include file sys/resource.h - found
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.17") found components: doxygen missing components: dot
-- Found Python3: /usr/bin/python3.8 (found version "3.8.10") found components: Interpreter 
-- Found Doxygen: /usr/bin/doxygen (found suitable version "1.8.17", minimum required is "1.8.11") found components: doxygen missing components: dot
APIs to be built:
    C++     ON
    Python  OFF
    Lisp    OFF
    Java    OFF
-- Configuring done
-- Generating done
-- Build files have been written to: /root/gtirb/build
[  1%] Running cpp protocol buffer compiler on /root/gtirb/proto/SymbolicExpression.proto
[  2%] Generating ../../../include/gtirb/proto/SymbolicExpression.pb.h
[  4%] Running cpp protocol buffer compiler on /root/gtirb/proto/AuxData.proto
[  4%] Running cpp protocol buffer compiler on /root/gtirb/proto/ByteInterval.proto
[  5%] Running cpp protocol buffer compiler on /root/gtirb/proto/CFG.proto
[  7%] Running cpp protocol buffer compiler on /root/gtirb/proto/CodeBlock.proto
[  7%] Running cpp protocol buffer compiler on /root/gtirb/proto/DataBlock.proto
[  8%] Running cpp protocol buffer compiler on /root/gtirb/proto/IR.proto
[ 10%] Running cpp protocol buffer compiler on /root/gtirb/proto/Module.proto
[ 10%] Running cpp protocol buffer compiler on /root/gtirb/proto/Offset.proto
[ 11%] Running cpp protocol buffer compiler on /root/gtirb/proto/ProxyBlock.proto
[ 12%] Running cpp protocol buffer compiler on /root/gtirb/proto/Section.proto
[ 12%] Running cpp protocol buffer compiler on /root/gtirb/proto/Symbol.proto
[ 14%] Generating ../../../include/gtirb/proto/AuxData.pb.h
[ 14%] Generating ../../../include/gtirb/proto/ByteInterval.pb.h
[ 15%] Generating ../../../include/gtirb/proto/CFG.pb.h
[ 17%] Generating ../../../include/gtirb/proto/CodeBlock.pb.h
[ 17%] Generating ../../../include/gtirb/proto/DataBlock.pb.h
[ 18%] Generating ../../../include/gtirb/proto/IR.pb.h
[ 20%] Generating ../../../include/gtirb/proto/Module.pb.h
[ 20%] Generating ../../../include/gtirb/proto/Offset.pb.h
[ 21%] Generating ../../../include/gtirb/proto/ProxyBlock.pb.h
[ 21%] Generating ../../../include/gtirb/proto/Section.pb.h
[ 22%] Generating ../../../include/gtirb/proto/Symbol.pb.h
Scanning dependencies of target gtirb_proto
[ 22%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/AuxData.pb.cc.o
[ 24%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/ByteInterval.pb.cc.o
[ 25%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/CFG.pb.cc.o
[ 25%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/CodeBlock.pb.cc.o
[ 27%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/DataBlock.pb.cc.o
[ 28%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/IR.pb.cc.o
[ 28%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/Module.pb.cc.o
[ 30%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/Offset.pb.cc.o
[ 31%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/ProxyBlock.pb.cc.o
[ 31%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/Section.pb.cc.o
[ 32%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/Symbol.pb.cc.o
[ 34%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/SymbolicExpression.pb.cc.o
[ 34%] Linking CXX static library ../../../lib/libgtirb_proto.a
[ 34%] Built target gtirb_proto
Scanning dependencies of target gtirb
[ 35%] Building CXX object src/CMakeFiles/gtirb.dir/AuxData.cpp.o
In file included from /root/gtirb/src/AuxData.cpp:15:
/root/gtirb/include/gtirb/AuxData.hpp:389:53: error: 'set' is not a member of 'std'
  389 | template <class... Args> struct auxdata_traits<std::set<Args...>> {
      |                                                     ^~~
/root/gtirb/include/gtirb/AuxData.hpp:25:1: note: 'std::set' is defined in header '<set>'; did you forget to '#include <set>'?
   24 | #include <list>
  +++ |+#include <set>
   25 | #include <map>
/root/gtirb/include/gtirb/AuxData.hpp:389:61: error: expected parameter pack before '...'
  389 | template <class... Args> struct auxdata_traits<std::set<Args...>> {
      |                                                             ^~~
/root/gtirb/include/gtirb/AuxData.hpp:389:61: error: template argument 1 is invalid
/root/gtirb/include/gtirb/AuxData.hpp:389:64: error: expected unqualified-id before '>' token
  389 | template <class... Args> struct auxdata_traits<std::set<Args...>> {
      |                                                                ^~
make[2]: *** [src/CMakeFiles/gtirb.dir/build.make:63: src/CMakeFiles/gtirb.dir/AuxData.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:449: src/CMakeFiles/gtirb.dir/all] Error 2
make: *** [Makefile:163: all] Error 2

I checked the issue tracker and it seems that no one else reported this previously. Is it due to my dependency versions being too new or something? Thanks.

@tjohnson-gt
Copy link
Contributor

Yes, this is a known issue (though not in our public issue tracker) - it crops up (along with a couple others) when one tries to compile with a newer install of the C++ libraries and/or compiler.

I'll try to see if we can get an expedited fix here soon.

@fyrie6870
Copy link

Any update? Still seeing this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants