Skip to content

Compiler detection is flaky and spews errors #1505

@slipher

Description

@slipher

The hand-rolled compiler detection from #982 sometimes breaks and prints a lot of errors. Not sure why there are as many as 7 stack traces for only 2 toolchains. It doesn't happen every time; maybe there is some race condition. It is still possible for the build to finish afterward (which is good I guess, but would be bad if we actually needed the result).

The following log is from a MSYS MinGW 64-bit build. But it also happens to me with Linux + GCC + Make, so don't blame Windows.

$ make -j6 nacl-vms
[  0%] Performing configure step for 'nacl-vms'
You can safely ignore the following reported architecture, it is not used.
You can safely ignore the following reported compilers, they are unused.
-- Detected architecture: nacl
-- Enabling nacl architecture intrinsics
-- CMake generator: MSYS Makefiles
CMake Warning at daemon/cmake/DaemonCompiler.cmake:50 (message):
  Failed to build DaemonCompiler.c, relying on CMake builtin detection.
Call Stack (most recent call first):
  daemon/cmake/DaemonCompiler.cmake:192 (detect_daemon_compiler)
  daemon/cmake/DaemonPlatform.cmake:53 (include)
  daemon/CMakeLists.txt:80 (include)


CMake Warning at daemon/cmake/DaemonCompiler.cmake:94 (message):
  Unknown C compiler
Call Stack (most recent call first):
  daemon/cmake/DaemonCompiler.cmake:192 (detect_daemon_compiler)
  daemon/cmake/DaemonPlatform.cmake:53 (include)
  daemon/CMakeLists.txt:80 (include)


CMake Warning at daemon/cmake/DaemonCompiler.cmake:171 (message):
  Unknown C compiler version
Call Stack (most recent call first):
  daemon/cmake/DaemonCompiler.cmake:192 (detect_daemon_compiler)
  daemon/cmake/DaemonPlatform.cmake:53 (include)
  daemon/CMakeLists.txt:80 (include)


-- Detected C compiler: Unknown Unknown pnacl-clang.bat
-- Detected C++ compiler: PNaCl 4.2.1/clang-3.6.0 pnacl-clang++.bat
CMake Warning (dev) at C:/lang/msys2/mingw64/share/cmake/Modules/CMakeDependentOption.cmake:89 (message):
  Policy CMP0127 is not set: cmake_dependent_option() supports full Condition
  Syntax.  Run "cmake --help-policy CMP0127" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.
Call Stack (most recent call first):
  daemon/CMakeLists.txt:125 (cmake_dependent_option)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Enabling compiler intrinsics
-- Enabling compiler custom attributes and operators
-- Detected architecture: nacl
-- Enabling nacl architecture intrinsics
-- CMake generator: MSYS Makefiles
CMake Warning at daemon/cmake/DaemonCompiler.cmake:50 (message):
  Failed to build DaemonCompiler.c, relying on CMake builtin detection.
Call Stack (most recent call first):
  daemon/cmake/DaemonCompiler.cmake:192 (detect_daemon_compiler)
  daemon/cmake/DaemonPlatform.cmake:53 (include)
  daemon/cmake/DaemonGame.cmake:41 (include)
  CMakeLists.txt:72 (include)


CMake Warning at daemon/cmake/DaemonCompiler.cmake:94 (message):
  Unknown C compiler
Call Stack (most recent call first):
  daemon/cmake/DaemonCompiler.cmake:192 (detect_daemon_compiler)
  daemon/cmake/DaemonPlatform.cmake:53 (include)
  daemon/cmake/DaemonGame.cmake:41 (include)
  CMakeLists.txt:72 (include)


CMake Warning at daemon/cmake/DaemonCompiler.cmake:171 (message):
  Unknown C compiler version
Call Stack (most recent call first):
  daemon/cmake/DaemonCompiler.cmake:192 (detect_daemon_compiler)
  daemon/cmake/DaemonPlatform.cmake:53 (include)
  daemon/cmake/DaemonGame.cmake:41 (include)
  CMakeLists.txt:72 (include)


-- Detected C compiler: Unknown Unknown pnacl-clang.bat
-- Detected C++ compiler: PNaCl 4.2.1/clang-3.6.0 pnacl-clang++.bat
-- Enabling compiler intrinsics
-- Enabling compiler custom attributes and operators
-- Using CBSE Python executable: C:/lang/msys2/mingw64/bin/python3.10.exe
-- Configuring done (8.3s)
-- Generating done (0.8s)
-- Build files have been written to: C:/lang/msys2/home/dirac/unvb-nacl/nacl-vms
[  0%] Performing build step for 'nacl-vms'
[  0%] Built target srclibs-fastlz
[  4%] Built target srclibs-recast
...

This is a good example of why we should not merge a complex PR like #982 without any code review.

P.S. The messages about compilers/archs "not being used" also seem wrong.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions