Error with binary search
Opened this issue · 7 comments
I tried project yalov/cmake_min_test1 while downloading more versions of CMake.
First run:
./cmake_min_version.py ~/Downloads/cmake_min_test1/
Found 118 CMake binaries from directory tools
[ 0%] CMake 3.11.3 ✔ works
[ 12%] CMake 3.4.1 ✘ error
[ 25%] CMake 3.8.2 ✔ works
[ 38%] CMake 3.6.1 ✘ error
[ 50%] CMake 3.7.1 ✘ error
[ 62%] CMake 3.8.0 ✔ works
[ 86%] CMake 3.7.2 ✘ error
[100%] Minimal working version: CMake 3.8.0
cmake_minimum_required(VERSION 3.8.0)
Second run:
./cmake_min_version.py ~/Downloads/cmake_min_test1/
Found 125 CMake binaries from directory tools
[ 0%] CMake 3.12.2 ✔ works
[ 12%] CMake 3.4.3 ✘ error
[ 25%] CMake 3.9.2 ✘ error
[ 38%] CMake 3.10.3 ✔ works
[ 50%] CMake 3.9.6 ✔ works
[ 62%] CMake 3.9.4 ✔ works
[ 86%] CMake 3.9.3 ✘ error
[100%] Minimal working version: CMake 3.9.4
cmake_minimum_required(VERSION 3.9.4)
I need to check why CMake 3.9.3 failed here.
After deleting CMake 3.9.3, it works again:
./cmake_min_version.py ~/Downloads/cmake_min_test1/
Found 129 CMake binaries from directory tools
[ 0%] CMake 3.13.0 ✔ works
[ 12%] CMake 3.5.0 ✘ error
[ 25%] CMake 3.9.4 ✔ works
[ 38%] CMake 3.7.1 ✘ error
[ 50%] CMake 3.8.2 ✔ works
[ 62%] CMake 3.8.0 ✔ works
[ 86%] CMake 3.7.2 ✘ error
[100%] Minimal working version: CMake 3.8.0
cmake_minimum_required(VERSION 3.8.0)
Interesting:
[ 83%] CMake 3.8.2 ✔ works
[ 83%] CMake 3.9.0 ✘ error
[ 83%] CMake 3.9.1 ✔ works
[ 84%] CMake 3.9.2 ✘ error
[ 84%] CMake 3.9.3 ✘ error
More output:
[ 83%] CMake 3.8.2 ✔ works
[ 83%] CMake 3.9.0 ✘ error
Boost found.
Found Boost components:
system;thread
CMake Error in /Users/niels/Code/repositories/cmake_min_version/tools/cmake-3.9.0-Darwin-x86_64/CMake.app/Contents/share/cmake-3.9/Modules/FindBoost.cmake:
cmake_policy PUSH without matching POP
Call Stack (most recent call first):
CMakeLists.txt:27 (find_package)
[ 83%] CMake 3.9.1 ✔ works
[ 84%] CMake 3.9.2 ✘ error
Boost found.
Found Boost components:
system;thread
CMake Error in /Users/niels/Code/repositories/cmake_min_version/tools/cmake-3.9.2-Darwin-x86_64/CMake.app/Contents/share/cmake-3.9/Modules/FindBoost.cmake:
cmake_policy POP without matching PUSH
Call Stack (most recent call first):
CMakeLists.txt:27 (find_package)
[ 84%] CMake 3.9.3 ✘ error
Boost found.
Found Boost components:
system;thread
CMake Error in /Users/niels/Code/repositories/cmake_min_version/tools/cmake-3.9.3-Darwin-x86_64/CMake.app/Contents/share/cmake-3.9/Modules/FindBoost.cmake:
cmake_policy POP without matching PUSH
Call Stack (most recent call first):
CMakeLists.txt:27 (find_package)
[ 84%] CMake 3.9.4 ✔ works
There seem to be a bug in CMake 3.9.0, 3.9.2, and 3.9.3 when it comes to Boost.
I leave this open as concept bug - the binary search assumes monotonous behavior; that is, if a project can be built by version x, then it should also be buildable with any higher version. This issue shows that this is not the case.
With #26, I changed the behavior of the full search to return the latest version such that this and all later version can successfully build the project.
Does the last cmake_min_test1 also have the same problems on 3.9.0, 3.9.2, and 3.9.3?
I replace lib names to autopath target_link_libraries(${PROJECT_NAME} PRIVATE ${Boost_LIBRARY_DIRS})
There are different problems now:
[ 0%] CMake 3.16.1 ✔ works
[ 11%] CMake 3.8.2 ✘ error
CMake Error at CMakeLists.txt:8 (message):
CMAKE_PROJECT_VERSION is not defined
[ 22%] CMake 3.13.0 ✔ works
[ 33%] CMake 3.10.3 ✘ error
CMake Error at CMakeLists.txt:8 (message):
CMAKE_PROJECT_VERSION is not defined
[ 44%] CMake 3.11.4 ✘ error
CMake Error at CMakeLists.txt:8 (message):
CMAKE_PROJECT_VERSION is not defined
[ 56%] CMake 3.12.2 ✔ works
[ 75%] CMake 3.12.0 ✔ works
[100%] Minimal working version: CMake 3.12.0
cmake_minimum_required(VERSION 3.12.0)