Search code examples
cmakeyoctobitbake

Upgrading cmake in Yocto


I'm using Yocto and struggling to update cmake. The poky version that we are using provides cmake version 3.3.1, but one of the packages that I'm building requires cmake version 3.5 or greater.

Looking at the poky git repo, the latest provides version 3.8.2. I figured that the easiest way to upgrade cmake was to include the recipes for cmake from the current poky master branch within my own meta repo, in order to override the lesser version. So I copied the cmake directory, and expected the build to continue along...

Unfortunately, the cmake recipes that I copied in aren't working. The recipes won't even load, as they throw an error, saying "docker must contain prefix as its prefix." Printing the output of the prefix and docdir variables to the console, I see that docdir is set to "${datadir}/doc" -- the datadir variable is not expanded.

In summary, the questions that I have are:

  • What is the best way to upgrade cmake? Is the best way to copy in the updated recipes into my own meta repo?
  • Why isn't the datadir variable being expanded, and how can I fix that?

Solution

  • What is probably happening is that the recipe for cmake 3.8.2 (2.4) is not backward compatible with the poky version from 3.3.1 (Version 1.9). The reference is here. I guess some refactoring and important milestones happened meanwhile

    The easiest way is to upgrade the whole poky folder in your ecosystem, hoping it is not breaking your other recipes.