-
Notifications
You must be signed in to change notification settings - Fork 993
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[feature] missing prebuilt package should have capability to provide more details #6364
Comments
It is possible to do a couple of things:
The first is not added automatically to the output because it is too much to generate an html file and open a browser, will be more confusing to the user. |
Thats lovely. Closing. |
Hello @memsharded
Problem here turned out to be that i changed the default_package_id_mode. and Library was not build with this patch_mode version. However the issue is much greater than that, This is basically what I am doing every other day ( as we publish binaries into artifactory. ) Every other day I see missing prebuilt and conan is not good at all at telling me exactly why packages were not mismatch. Mind you I am now very very good at guessing the mismatch rootcause - however if anyone else would see these issues it would take them hours of frustration to understand what the hell is going on. I think conan should try to analyze available prebuild binaries and hint why its not wroking. Consider below example:
using global_package_id_mode patch_mode will error with:
Of course this is a trivial example, only dependencies has any entries. |
I would try to add in: def _raise_missing(self, missing):
...
dependencies = [str(dep.dst) for dep in node.dependencies]
raise_package_not_found_error(conanfile, ref, package_id, dependencies,
out=conanfile.output, recorder=self._recorder)
I think that might alleviate a bit this pain. |
Hm, not sure how exactly would that work but. I was thinking of looking into that and contributing but would definitlely need some help. |
Well, the problem is that What I was thinking above is to display not only the direct dependencies ( |
Signed-off-by: Uilian Ries <uilianries@gmail.com>
Signed-off-by: Uilian Ries <uilianries@gmail.com>
Signed-off-by: Uilian Ries <uilianries@gmail.com>
Hi @memsharded, @uilianries, I think displaying requires in the form of package id could definitely help, but what it is important here IMHO is that in the missing prebuilt package error message we miss comparison about requires for existing packages and expected package id. By expected I mean the one that was computed at the time of graph was computed during package creation. On the example below, translating it on language on conan commands, considering one more time error example generated from conan version based on @uilianries PR (I am using
Added string in the error Now to find out what happened, I need to compare manually using below commands:
Now I compare manually So the question is, is such comparison would be possible to implement in conan? |
This is part of the UI problem. With packages in the cache or in a remote? And if there are several remotes, in which one of them? Or in all of them? And then, what are the results? Which packages are the "closest" to compare? Because in terms of "distance", a package binary that only changes 1 option, for example So from different points of views, this seems a UX and functional challenge. I think instead of comparison, some kind of highlighting in the HTML table generated with |
That should operate on the same level as the command itself was invoked, I got kinda lost not sure if you are thinking of conan search or install in here, but if install then follow the behavior of the install. if -r specified search only in that remote otherwise everywhere.
In terms of distance I was always thinking of 'the number of the options that the build you requested has different from available packages. 1 difference counts as one. and sort on that, but this is an extra stuff really, just highlithing that this particular thing mismatches would be great.
Not sure how distance for versions fits in here? Its either a match or it is not a match 0/1. Unfortunatelly the
Together with options |
Signed-off-by: Uilian Ries <uilianries@gmail.com>
Signed-off-by: Uilian Ries <uilianries@gmail.com>
* #6364 Add initial test for case validation Signed-off-by: Uilian Ries <uilianries@gmail.com> * #6364 Update initial test for case validation Signed-off-by: Uilian Ries <uilianries@gmail.com> * #6364 Add dependencies to the raise missing Signed-off-by: Uilian Ries <uilianries@gmail.com> * #6364 Fix package id for transive test Signed-off-by: Uilian Ries <uilianries@gmail.com> * #6364 Fix package id for transive test Signed-off-by: Uilian Ries <uilianries@gmail.com>
Hello @jgsogo Do you want me to write: Into a new issue? |
I think whatever is done, cannot be coupled to the current graph resolution algorithm and error message, it will be too complicated. What I was suggesting is trying to improve over the |
thanks @memsharded Now I will proceed to request a feature to add Then in order to actually understand whats missing from available build matrix would be:
Its too bad that conan wont provide that functionality out of the box, but maybe after this is possible, something more elegant would unveil. |
This is somewhat a duplicate of:
#3316 which was closed by #3438
Its better now, but maybe it oculd be slightly better?
Its still guessing game for me:
Back story:
Right now due to a various choices we have made we do not encourage our users to use --build missing whenever they see it. instead we have prebuilt binaries in our artifactory.
We are often met with an error like:
Missing prebuilt library X.
Conans error is very cryptic here, it basically does not provide any diagnostic why the available binaries you have are not compatible with your package, its always guessing game.
It would be nice if there was an option to ask conan for verbose output where it would state:
You have available prebuilt bianry with following configs:
" now prints a matrix of all prebuilt binaries for that particular version"
Whereas you require this package to have a particular set of options:
" now prints a set of option that conan searched for."
Right now what it prints is soemthing like this:
Okay it prints the Options conan is looking for - but it does not highlight what are the available packages.
My way of solving this is to go to artifactory, and click through prebuilt binaries and compare each option by hand which particular option has not been found.
Couldnt it just dump that information straight out?
And actually I dont think its possible to list prebuilt binary options via conan CLI?
The text was updated successfully, but these errors were encountered: