more helpful "PCH file built from a different branch" message
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 238
- Forks
- 106
- Avg merge
- 2h 29m
- Merged PRs (30d)
- 6
Description
Summary:
The PCH file built from a different branch error does not provide a hint on how to fix it. Add such a hint.
Description:
When I try to build with the wrong precompiled header (PCH), I get this:
~/github/stan-dev/cmdstan (develop)$ make ~/temp2/simple
--- Translating Stan model to C++ code ---
bin/stanc --o=/Users/bcarpenter/temp2/simple.hpp /Users/bcarpenter/temp2/simple.stan
--- Compiling, linking C++ code ---
clang++ -std=c++1y -Wno-unknown-warning-option -Wno-tautological-compare -Wno-sign-compare -D_REENTRANT -Wno-ignored-attributes -I stan/lib/stan_math/lib/tbb_2020.3/include -O3 -I src -I stan/src -I lib/rapidjson_1.1.0/ -I lib/CLI11-1.9.1/ -I stan/lib/stan_math/ -I stan/lib/stan_math/lib/eigen_3.3.9 -I stan/lib/stan_math/lib/boost_1.78.0 -I stan/lib/stan_math/lib/sundials_6.1.1/include -I stan/lib/stan_math/lib/sundials_6.1.1/src/sundials -DBOOST_DISABLE_ASSERTS -c -include-pch stan/src/stan/model/model_header.hpp.gch -x c++ -o /Users/bcarpenter/temp2/simple.o /Users/bcarpenter/temp2/simple.hpp
error: PCH file built from a different branch ((clang-1316.0.21.2.5)) than the compiler ((clang-1400.0.29.102))
1 error generated.
make: *** [/Users/bcarpenter/temp2/simple] Error 1
This is great that it says what's wrong, but it would be even better if it suggested how to fix the problem. I'm pretty sure I need to just delete a .pch file, but I don't know where it's at. A recursive search didn't work:
~/github/stan-dev/cmdstan (develop)$ ls -R -l | grep pch
-rw-r--r-- 1 bcarpenter 1595 3773 Aug 10 12:07 pchip.hpp
-rw-r--r-- 1 bcarpenter 1595 340 Aug 10 12:07 pch.hpp
-rwxr-xr-x 1 bcarpenter 1595 1175 Aug 10 12:07 cppcheck.sh
-rw-r--r-- 1 bcarpenter 1595 537 Aug 10 12:07 pch.hpp
-rw-r--r-- 1 bcarpenter 1595 2717 Aug 10 12:07 pch.jam
-rw-r--r-- 1 bcarpenter 1595 2848 Aug 10 12:07 pch.py
~/github/stan-dev/cmdstan (develop)$
Reproducible Steps:
See above, but to reproduce it, you need to have two compilers, one of which built the pch file and a different one to tickle this error.
Current Output:
See above.
Expected Output:
Some hint as to where the pch file is that I need to delete. Even better, just automatically delete and rebuild after detecting this error.
Additional Information:
There are a lot of pages where people brought up this problem on our forums or in issues. The advice in the first hit on the forums didn't work, which suggested just running make clean. Here's what I get:
~/github/stan-dev/cmdstan (develop)$ make clean
rm -f -r test
rm -f
rm -f
rm -f
rm -f
~/github/stan-dev/cmdstan (develop)$ make ~/temp2/simple
--- Compiling, linking C++ code ---
clang++ -std=c++1y -Wno-unknown-warning-option -Wno-tautological-compare -Wno-sign-compare -D_REENTRANT -Wno-ignored-attributes -I stan/lib/stan_math/lib/tbb_2020.3/include -O3 -I src -I stan/src -I lib/rapidjson_1.1.0/ -I lib/CLI11-1.9.1/ -I stan/lib/stan_math/ -I stan/lib/stan_math/lib/eigen_3.3.9 -I stan/lib/stan_math/lib/boost_1.78.0 -I stan/lib/stan_math/lib/sundials_6.1.1/include -I stan/lib/stan_math/lib/sundials_6.1.1/src/sundials -DBOOST_DISABLE_ASSERTS -c -include-pch stan/src/stan/model/model_header.hpp.gch -x c++ -o /Users/bcarpenter/temp2/simple.o /Users/bcarpenter/temp2/simple.hpp
error: PCH file built from a different branch ((clang-1316.0.21.2.5)) than the compiler ((clang-1400.0.29.102))
1 error generated.
make: *** [/Users/bcarpenter/temp2/simple] Error 1
Current Version:
v2.30.1
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the make invocation and the compile command shown in the report, especially the -include-pch argument referencing stan/src/stan/model/model_header.hpp.gch. Reproduce the compiler-mismatch failure, then trace where this error is surfaced. Done means the output identifies the PCH location or automatically rebuilds it, with the failure behavior covered by a test.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- build-system, cli
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100