conan: test_package vs "--build missing"

Suppose I have a package pkg/1.0.0@user/channel (already uploaded to some remote) and the corresponding test_package inside. Local cache does not contain it. Now I try to modify the package recipe (not changing the version) and then test it running conan create . user/channel --build missing. Executed this way, conan doesn’t build pkg/1.0.0@user/channel locally but rather downloads an old package from the remote and uses it as a dependency for test_package (so test_package build fails) . Without --build missing it works as expected.

This bug looks like to be introduced in 1…9.0, 1.8.4 does not suffer from that.

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Comments: 22 (22 by maintainers)

Most upvoted comments

You don’t need to fork the recipes or re-build all the binaries, only your own ones (which you still need to build), you could do something like:

for pkg_ref in ("boost/1.60@user/channel", "poco/2.3@user/channel", ....):
    os.system("conan download %s -r=conan-center" % pkg_ref)
    os.system("conan install %s --build=%s -pr=myprofile" % (pkg_ref, pkg_ref.split("/")[0]))
    os.system("conan upload %s -r=myremote --all" % pkg_ref)

Being “myprofile” your own configuration. I think this should be fairly low maintenance, and it can save you some future problems.

I also ran into this same issue when upgrading to 1.9 when testing the Boost packages a few days ago (and mentioned it the bincrafters channel – that starts around here https://cpplang.slack.com/archives/C77T8CBFB/p1541036106068000). The behavior has definitely changed. And in the case for Boost packaging, changed for the worse. For reference the script setup I use is this https://github.com/grafikrobot/bincrafters-conan-boost/blob/testing/1.67.0/create_all.py