lvc / abi-compliance-checker

A tool for checking backward API/ABI compatibility of a C/C++ library
https://lvc.github.io/abi-compliance-checker/
GNU Lesser General Public License v2.1
621 stars 76 forks source link

Unsure about "Headers have been compiled with minor errors." (exit code 6) #86

Open hartwork opened 5 years ago

hartwork commented 5 years ago

Hi!

I get exit code 6 ("Headers have been compiled with minor errors.") without having any idea why, got code 0 with slightly different code until recently (with slightly different input). The full log is at https://travis-ci.org/cpptest/cpptest/builds/475375563 , it's the version of abi-compliance-checker from Ubuntu xenial. It would be great to understand what's really going on, how safe or unsafe it is to ignore that error as a flavor of compatibility, what I can do to fix it etc. Are there any more docs about it that I failed to find?

Thanks and best, Sebastian

lvc commented 5 years ago

The tool dumps header compilation errors to the logs sub-directory of the current execution directory.

To avoid compilation of header files please use a new approach with the help of the https://github.com/lvc/abi-tracker tool.

I've just added cpptest to the upstream tracker for automated analysis by latest upstream versions of tools: https://abi-laboratory.pro/?view=timeline&l=cpptest

cpptest-1

hartwork commented 5 years ago

The tool dumps header compilation errors to the logs sub-directory of the current execution directory.

I see!

That point led me to this error (full log at https://travis-ci.org/cpptest/cpptest/builds/481159334):

The GCC parameters:
  gcc -fdump-translation-unit -fkeep-inline-functions -c -x c++-header -fpermissive -w "/tmp/Dj6xt2Id2Y/dump1.h"  -I/home/travis/build/cpptest/cpptest/cpptest-1.1.2-19-gd12a088-git/cpptest/win -I/home/travis/build/cpptest/cpptest/cpptest-1.1.2-19-gd12a088-git/cpptest/config
In file included from /home/travis/build/cpptest/cpptest/cpptest-1.1.2-19-gd12a088-git/cpptest/src/cpptest.h:34:0,
                 from /tmp/Dj6xt2Id2Y/dump1.h:7:
/home/travis/build/cpptest/cpptest/cpptest-1.1.2-19-gd12a088-git/cpptest/src/cpptest-suite.h:58:17: error: ‘std::unique_ptr’ has not been declared
   void add(std::unique_ptr<Suite> suite);
                 ^
/home/travis/build/cpptest/cpptest/cpptest-1.1.2-19-gd12a088-git/cpptest/src/cpptest-suite.h:58:27: error: expected ‘,’ or ‘...’ before ‘<’ token
   void add(std::unique_ptr<Suite> suite);
                           ^

There is #include <memory> in cpptest-suite.h, already. Any ideas how to avoid that error? Do I need to pass -std=c++11 some way or so?

To avoid compilation of header files please use a new approach with the help of the https://github.com/lvc/abi-tracker tool.

From a quick look, that looks like hours to get it all running. Is there a sample Travis integration somewhere to speed things up?

I've just added cpptest to the upstream tracker for automated analysis by latest upstream versions of tools: https://abi-laboratory.pro/?view=timeline&l=cpptest

Nice! Also noticed you have Expat and uriparser in there, cool!

hartwork commented 5 years ago

PS: I notice gcc rather than g++ in that command line only now. Is that part of the problem?