One way to think about the dependency is to look into the default cmake version shipped by ubuntu LTS so most users can build from source with minimum effort:
If a Linux release is EOL do we no longer support it? Building cmake from source is easy. If someone wants to build TVM on an old, unsupported OS building cmake from source is an option.
Tend to agree too. I manage a fleet of heterogeneous development boards, many of which are on vendor-slightly customised versions of Ubuntu. Most of their apt repos point to cmake 3.10.
There are a couple that are outdated now, but I think it makes sense to go by minimum default on the oldest Ubuntu LTS, given its probably going to be the lowest common denominator. CMake fails clearly and quickly when the version is too old anyway.
The oldest currently support Ubuntu LTS is 16.04 which is EOL in April, 2021.
16.04 defaults to 3.5.1.
18.04 defaults to 3.10.2.
TVM CI uses 3.5.11.
If we use the rule “default provided by oldest supported Ubuntu LTS” then we are at 3.5.1 but we will be updating to 3.10.2 in 5 months. Would anyone object if we jumped right to 3.10.2 and then start following the rule from there?
makes sense. one detail: how do we propose to pin the CI to a specific CMake version? I think the kitware apt repo has a bunch of versions, don’t know how far back they go.
@areusch We do need to have some way to pin the cmake version but I think that is a whole different discussion we need to have. The problem I have is how do we update CI to use the new version of cmake? That should be pinned in the repo so all we should have to do is to update that pinned version and CI magically starts using the new version. As things stand now we need to get coordination with CI, or at least CI must upgrade the cmake version before we commit any code which uses the updated version.
@kevinthesun I think we want CI to use the exact version that is set as the TVM minimum required version. The reason for this is to check that no cmake features that are more modern than cmake_minimum_required are checked into the repo which would break the build for people actually using the minimum version. This assumes that CI actually builds all TVM configurations which it currently does not.
@rkimball I guess it is a bit different, but it’s fairly related to this proposal as we currently don’t explicitly pin almost anything in the CI. we achieve reproducibility by using the same docker container run-to-run, but we aren’t guaranteed much reproducibility between builds of the docker containers.
I think we can probably solve this with the kitware apt repo, but i’m not sure how long they maintain releases. I used it for µTVM reference vm. here are the versions it sees: