CoatiSoftware / Sourcetrail

Sourcetrail - free and open-source interactive source explorer
https://www.sourcetrail.com/
GNU General Public License v3.0
14.86k stars 1.4k forks source link

Build failure on Exherbo #806

Open zaufi opened 4 years ago

zaufi commented 4 years ago
$ cmake -DCMAKE_BUILD_TYPE=Release -DBoost_USE_STATIC_LIBS=OFF -DBUILD_CXX_LANGUAGE_PACKAGE=ON -DClang_DIR=/usr/x86_64-pc-linux-gnu/lib/llvm/9/lib/cmake/clang -DBUILD_PYTHON_LANGUAGE_PACKAGE=ON -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9 ..
-- Found Git: /usr/host/bin/git (found version "2.24.0") 
-- Version: 2020.1.26
-- setting up the buildtype for versioning
-- The C compiler identification is GNU 9.2.0
-- The CXX compiler identification is GNU 9.2.0
-- Check for working C compiler: /usr/host/bin/gcc-9
-- Check for working C compiler: /usr/host/bin/gcc-9 -- 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/host/bin/g++-9
-- Check for working CXX compiler: /usr/host/bin/g++-9 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found LLVM 9.0.0
-- Found Boost: /usr/host/lib64/cmake/Boost-1.71.0/BoostConfig.cmake (found suitable version "1.71.0", minimum required is "1.67") found components:  system program_options filesystem date_time 
-- Found Qt 5.13.2
-- Building the Java indexer will be skipped. You can enable building this target by setting 'BUILD_JAVA_LANGUAGE_PACKAGE' to 'ON'.
-- create symlink: /work/Sourcetrail/bin/app/data ->/work/Sourcetrail/build/app/data
-- create icons
sourcedir: /work/Sourcetrail
builddir : /work/Sourcetrail/build
hicolor  : /work/Sourcetrail/build/share/icons/hicolor
icon     : /work/Sourcetrail/bin/app/data/gui/icon/logo_1024_1024.png
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libicui18n.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libicudata.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libicuuc.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libudev.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libpng.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libEGL.so
-- lib: libselinux.so
CMake Warning at cmake/linux_package.cmake:28 (message):
  libselinux.so not found
Call Stack (most recent call first):
  cmake/linux_package.cmake:73 (GetAndInstallLibrary)
  cmake/linux_package.cmake:115 (AddSharedToComponent)
  CMakeLists.txt:776 (include)

-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libXrender.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libX11-xcb.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libXi.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libxcb.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libfontconfig.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libfreetype.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libXext.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libX11.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libudev.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libGL.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libxcb-dri2.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libxcb-xfixes.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libxcb-render.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libxcb-shape.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libgbm.so.1
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libdrm.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libglapi.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libXdamage.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libXfixes.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libxcb-glx.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libXxf86vm.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libdrm.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libXau.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libssl.so
-- lib: /usr/x86_64-pc-linux-gnu/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../libcrypto.so
-- Configuring done
-- Generating done
-- Build files have been written to: /work/Sourcetrail/build

$ make VERBOSE=1
/usr/x86_64-pc-linux-gnu/bin/cmake -S/work/Sourcetrail -B/work/Sourcetrail/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/x86_64-pc-linux-gnu/bin/cmake -E cmake_progress_start /work/Sourcetrail/build/CMakeFiles /work/Sourcetrail/build/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/work/Sourcetrail/build'
make -f CMakeFiles/Sourcetrail_lib_utility.dir/build.make CMakeFiles/Sourcetrail_lib_utility.dir/depend
make[2]: Entering directory '/work/Sourcetrail/build'
cd /work/Sourcetrail/build && /usr/x86_64-pc-linux-gnu/bin/cmake -E cmake_depends "Unix Makefiles" /work/Sourcetrail /work/Sourcetrail /work/Sourcetrail/build /work/Sourcetrail/build /work/Sourcetrail/build/CMakeFiles/Sourcetrail_lib_utility.dir/DependInfo.cmake --color=
Dependee "/work/Sourcetrail/build/CMakeFiles/Sourcetrail_lib_utility.dir/DependInfo.cmake" is newer than depender "/work/Sourcetrail/build/CMakeFiles/Sourcetrail_lib_utility.dir/depend.internal".
Dependee "/work/Sourcetrail/build/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/work/Sourcetrail/build/CMakeFiles/Sourcetrail_lib_utility.dir/depend.internal".
Scanning dependencies of target Sourcetrail_lib_utility
make[2]: Leaving directory '/work/Sourcetrail/build'
make -f CMakeFiles/Sourcetrail_lib_utility.dir/build.make CMakeFiles/Sourcetrail_lib_utility.dir/build
make[2]: Entering directory '/work/Sourcetrail/build'
[  0%] Building CXX object CMakeFiles/Sourcetrail_lib_utility.dir/src/lib_utility/utility/TextCodec.cpp.o
/usr/host/bin/g++-9  -DBOOST_ALL_NO_LIB -DBOOST_DATE_TIME_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBUILD_TYPE=\"Release\" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_WIDGETS_LIB -I/work/Sourcetrail/build -I/work/Sourcetrail -I/work/Sourcetrail/src/lib_utility/utility -isystem /usr/host/include -isystem /usr/host/include/qt5 -isystem /usr/host/include/qt5/QtWidgets -isystem /usr/host/include/qt5/QtGui -isystem /usr/host/include/qt5/QtCore -isystem /usr/host/lib/qt5/mkspecs/linux-g++ -isystem /usr/host/include/qt5/QtNetwork  -O3 -DNDEBUG -fPIC   -fPIC -std=gnu++14 -o CMakeFiles/Sourcetrail_lib_utility.dir/src/lib_utility/utility/TextCodec.cpp.o -c /work/Sourcetrail/src/lib_utility/utility/TextCodec.cpp
In file included from /usr/x86_64-pc-linux-gnu/include/c++/9.2.0/ext/string_conversions.h:41,
                 from /usr/x86_64-pc-linux-gnu/include/c++/9.2.0/bits/basic_string.h:6493,
                 from /usr/x86_64-pc-linux-gnu/include/c++/9.2.0/string:55,
                 from /usr/x86_64-pc-linux-gnu/include/c++/9.2.0/stdexcept:39,
                 from /usr/x86_64-pc-linux-gnu/include/c++/9.2.0/array:39,
                 from /usr/x86_64-pc-linux-gnu/include/c++/9.2.0/tuple:39,
                 from /usr/x86_64-pc-linux-gnu/include/c++/9.2.0/bits/unique_ptr.h:37,
                 from /usr/x86_64-pc-linux-gnu/include/c++/9.2.0/memory:80,
                 from /work/Sourcetrail/src/lib_utility/utility/TextCodec.h:4,
                 from /work/Sourcetrail/src/lib_utility/utility/TextCodec.cpp:1:
/usr/x86_64-pc-linux-gnu/include/c++/9.2.0/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
   75 | #include_next <stdlib.h>
      |               ^~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/Sourcetrail_lib_utility.dir/build.make:63: CMakeFiles/Sourcetrail_lib_utility.dir/src/lib_utility/utility/TextCodec.cpp.o] Error 1
make[2]: Leaving directory '/work/Sourcetrail/build'
make[1]: *** [CMakeFiles/Makefile2:129: CMakeFiles/Sourcetrail_lib_utility.dir/all] Error 2
make[1]: Leaving directory '/work/Sourcetrail/build'
make: *** [Makefile:152: all] Error 2
zaufi commented 4 years ago

I also, tried to build w/ GCC 8.3.0 and Clang 9.0.0 → same result.

egraether commented 4 years ago

This is not a Sourcetrail related issue. I think you most likely have multiple C standard libraries installed and the compiler has issues choosing the right one. I'm not an expert on these issues, try searching online for a solution.

zaufi commented 4 years ago

@egraether,

Exherbo is a source-based distro. I built tons of various packages for it and also I do tons of builds using CMake at my job for several platforms. Having multiple compilers all the time is quite normal practice for me. And I would say Sourcetrail is the second package w/ this problem. The first one was IWYU (include-what-you-use) when it's built w/another version of clang than currently installed/active. But I have no idea why Sourcetrail behaves incorrectly like this.

dwlsalmeida commented 4 years ago

@zaufi see if this helps https://github.com/machinekit/QtQuickVcp/issues/278

specifically:

This occurs throughout Qt in later versions with newer compilers.

The way to fix it is to edit mkspecs/common/gcc-base.conf

Change QMAKE_CFLAGS_ISYSTEM = -isystem to QMAKE_CFLAGS_ISYSTEM = -I (capital i)

I have been doing this since Qt 5.10.0 at least

Notice this line on your excerpt:

/usr/host/bin/g++-9 -DBOOST_ALL_NO_LIB -DBOOST_DATE_TIME_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBUILD_TYPE=\"Release\" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_WIDGETS_LIB -I/work/Sourcetrail/build -I/work/Sourcetrail -I/work/Sourcetrail/src/lib_utility/utility -isystem /usr/host/include -isystem /usr/host/include/qt5 -isystem /usr/host/include/qt5/QtWidgets -isystem /usr/host/include/qt5/QtGui -isystem /usr/host/include/qt5/QtCore -isystem /usr/host/lib/qt5/mkspecs/linux-g++ -isystem /usr/host/include/qt5/QtNetwork -O3 -DNDEBUG -fPIC -fPIC -std=gnu++14 -o CMakeFiles/Sourcetrail_lib_utility.dir/src/lib_utility/utility/TextCodec.cpp.o -c /work/Sourcetrail/src/lib_utility/utility/TextCodec.cpp


I was having issues with stdlib.h when indexing projects with Sourcetrail, which I fixed after removing /usr/include from the global include path in Project > Edit Project.

From the tooltip in Sourcetrail:

These paths are usually passed to the compiler with the '-isystem' flag.

But as mentioned in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129

/usr/include is already a system include dir, so -isystem /usr/include serves no useful purpose.