Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • CMake CMake
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 3,810
    • Issues 3,810
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 9
    • Merge requests 9
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • External wiki
    • External wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar

An update will be applied May 24th, between 12PM and 1PM EDT (UTC -400). The site may be slow during that time.

  • CMake
  • CMakeCMake
  • Issues
  • #19590

Closed
Open
Created Aug 11, 2019 by q66@q66

cmake relies on inherently racey g++ output to figure out implicit include dirs, which sometimes breaks build

See CMakeOutput.txt: https://gist.github.com/q66/540d6d99c0b02af24d572d6841d71064

Notably this part:

#include <...> search starts here:
 /usr/lib/gcc/powerpc64-linux-musl/9.1.0/../../../../include/c++/9.1.0
GNU assembler version 2.32 (powerpc64-linux-musl) using BFD version (GNU Binutils) 2.32 /usr/lib/gcc/powerpc64-linux-musl/9.1.0/../../../../include/c++/9.1.0/powerpc64-linux-musl

 /usr/lib/gcc/powerpc64-linux-musl/9.1.0/../../../../include/c++/9.1.0/backward
 /usr/local/include
 /usr/include
 /usr/lib/gcc/powerpc64-linux-musl/9.1.0/include
End of search list.

On this particular setup, the race results in the assembler info merging with the actual include path (/usr/lib/gcc/powerpc64-linux-musl/9.1.0/../../../../include/c++/9.1.0/powerpc64-linux-musl) which later makes cmake skip it:

  collapse include dir [/usr/lib/gcc/powerpc64-linux-musl/9.1.0/../../../../include/c++/9.1.0] ==> [/usr/include/c++/9.1.0]
  skipping relative include dir [GNU assembler version 2.32 (powerpc64-linux-musl) using BFD version (GNU Binutils) 2.32 /usr/lib/gcc/powerpc64-linux-musl/9.1.0/../../../../include/c++/9.1.0/powerpc64-linux-musl]
  skipping relative include dir []
  collapse include dir [/usr/lib/gcc/powerpc64-linux-musl/9.1.0/../../../../include/c++/9.1.0/backward] ==> [/usr/include/c++/9.1.0/backward]
  collapse include dir [/usr/local/include] ==> [/usr/local/include]
  collapse include dir [/usr/include] ==> [/usr/include]
  collapse include dir [/usr/lib/gcc/powerpc64-linux-musl/9.1.0/include] ==> [/usr/lib/gcc/powerpc64-linux-musl/9.1.0/include]

This notably affects projects using Qt and cmake's automoc, as then moc can't find the right includes and fails to parse.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking