Closed jlemein closed 2 years ago
The options shouldn't change, because your are not changing the options by other means, if the profile is the same.
Another possible culprit could be using a different default_package_id_mode
in the different machines. That belongs to the conan.conf
, are you sure they are exactly the same in the 2 environments?
The conan.conf for both the build server and my machine are: default_package_id_mode = semver_direct_mode
The only option I have specified is "ros", since that is a build flag for that respective package. All the other options in the error message above are not specified by me, but probably derived from the requirements. It seems the package id is taking that into account. Those options are not part of the html table options column (as seen above). Can that be a reason of a mismatch?
Is it possible that some dependency version has changed upstream just between the 2 builds, and you are using version ranges in your recipe, so some dependency kicked in a new version and changed the package_id? This could also be done comparing the requires
section in the search
results table with the ones in the "missing" error message.
If you have the logs of the build of the package when you built it, that could maybe throw some light.
I did some more investigation. I am constantly generating a new build on the build server right now, so the versions have not changed between two builds. Also we are not using version ranges in the recipes. I don't know why the notation of the version range seem to popup in the logs though, assuming you mean assimp/5.Y.Z, fmt/7.Y.Z.
It seems though that the package assimp/5.0.1 is causing the problem. Without assimp, the package can be retrieved succesfully. If I make assimp/5.0.1 part of the requirements of package-a
, then whenever I add a requirement to this package in another conan project on my local machine, conan cannot find a prebuilt package of this package-a
. Assimp is only used within package-a
and not within any other (transitive) dependencies.
Can it be something in the recipe of assimp/5.0.1, e.g. https://conan.io/center/assimp?tab=recipe that is incompatible with proper use of conan?
I discovered the package that caused the failure though. It seems assimp/5.0.1
Hi @jlemein
No, assimp/5.Y.Z, fmt/7.Y.Z.
are the semver compatible versions to compute the package ID. When you are using version ranges you write something like requires =
assimp/[>5.0 <6.0]"``.
I have had a look at the assimp/5.0.1
recipe, but I cannot find anything there that could produce this.
I have also tried to reproduce in a small example of one package requiring assimp/5.0.1
, but I cannot reproduce this problem, once I built my binary, it keeps been resolved correctly.
I am not sure what to look for now. If you could try to reproduce the issue, in something smaller, maybe something that you can share (or if it is confidential, you can send it to info@conan.io privately). Please let me know, thanks!
I have taken another look at this issue. I cannot reproduce it locally on the same system. It seems to happen for builds on different systems and it happened only with this specific assimp revision. I was planning to send the build logs to the provided private email address, but now it for some reason works again. I have upgraded conan in the mean time. I am not sure if that resolved it. For all other packages that we are using, and we started using conan quite intensively already I experienced no issues at all.
I think the issue can be closed.
Thanks for following up and closing @jlemein
Don't hesitate to open new issue if you have any further question, or re-open this one if necessary. Thanks!
Our build server creates a package
package-a
containing an executable and some shared libraries. This package has a couple of requirements on existing third party dependencies, such as fmt, sqlite, etcetera. The conan build and package creation works fine and it is uploaded to the artifactory. Now I try toconan install
the package in a separate project on my local machine and for some reason it cannot find the package. The message is: ERROR: Missing prebuilt package for 'package-a/0.1.0-dev.125@company/stable'The usual culprit of this message is that my conan profile is different than the build server, eg. a different compiler version, or OS, etcetera. This is not the case. The profiles are the same. If I build the repository (producing package A) locally the package hash matches the one I am looking for. For some reason the build server creates a different package hash. Also I notice that there are a lot of options belonging to the dependencies of package A that seem to be matched against the stored package revision as well. Maybe that can have an influence?
The error message:
I did not expect so many options to be visible. I am only interested to match against the standard settigns ( "os", "compiler", "build_type", "arch") and the option "ros" in this case. Any idea what can cause the package hash/id to be different? My conan version is 1.39.0. See the screenshot for the list in the cache of the build server.
Conan profile on machine:
Conan profile of build server: