-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
spdlog spdlog/1.11.0: implicitly changed required fmt without change of own version - broken builds #18134
Comments
This is true and stops the development of other libraries/apps that are using libraries that have Now I get the error and it is a show-stopper:
This bug shall have a high priority. |
Hi @yshurik - thank you for raising this issue.
Would you be able to provide us with build logs, and, better yet, a set of reproducible commands where this is happening, so that we can troubleshoot this? The change is not expected to cause those issues, and if there is a version conflict Conan would error out a lot earlier than a build proceeding to linking stage. Hi @Seadex-GmbH - thank you for reporting this. We are trying to improve our process such that when dependencies are bumped like this, downstream consumers (such as @jwidauer and @yshurik - version bumps of dependencies are allowed in Conan Center and they do not regularly require changing the version of the recipe that has the dependency, thus, it's perfectly commonplace in Conan Center for different revisions of the same recipe (such as If you would like to protect yourselves from changes in the recipes that affect the dependencies, keep in mind that recipe revisions do change for these sort of changes, and you can always use Conan lockfiles (docs here) to pin this down to a recipe revision where spdlog was using an earlier version of fmt - this is is strongly advised in production scenarios. The conflict errors by Conan are correct - you need to help Conan choose which version to use to resolve the conflict - which can be done with an override as the error suggests. Conan can then take care of ensuring the packages in your dependency graph are all built with the specific version of @yshurik - any additional information you can provide regardling linker errors due to mismatching symbols we can look into. @Seadex-GmbH we will ensure the conflict is resolved in the @jwidauer - please let me know if you need more information or guidance regarding different strategies to ensure a safe landing of upstream changes in recipe revisions in Conan Center. |
+1 on this. Took me a while to figure the reason for my CI failing was because I see this in my log:
Event though all |
Hi @aunsbjerg - do you have any logs or details on how to reproduce these compilation errors? It would be greatly helpful for us to troubleshoot the issue. The conflicts and the overrides work in such a way that Conan should ensure that everything is built with compatible versions, precisely to avoid issues at the compilation or linking stage. |
@jcar87 a minimal reproducible setup which compiles fine, but uses the wrong Conanfile.txt:
CMakeLists.txt: cmake_minimum_required(VERSION 3.12)
find_package(spdlog REQUIRED)
add_executable(test
main.cpp
)
target_link_libraries(test
PRIVATE
spdlog::spdlog
) main.cpp: #include <spdlog/spdlog.h>
int main()
{
spdlog::info("Hello, {}!", "World");
return 0;
} And build output:
|
Hi @aunsbjerg, thank you for your prompt reply. I can see that this is using the same version of fmt that the spdlog recipe currently requires, so it would appear correct, especially if it builds and runs fine. What were you expecting instead, or what issues were you experiencing in CI? |
Well, I would expect
The issue I saw in CI was the my build was suddenly breaking because of a compiler error caused by the bump in |
@jcar87 can we use version range for fmt? |
This is still not fixed, causing weird behaviour where in the pipeline build the dependency is The recipe revision it was trying to use locally was: I'm using Artifactory virtual repository as my default remote, this might have something to do with the matter. I just wonder where does this recipe version come from as it is not present in conan center. EDIT: Per conan-center-index the fmt 10.0.0 dependency is correct, and conan.io has outdated information, meaning that we all must bump fmt-> 10.0.0 |
Hi @Shogutora - I can try to look this up for you. Which reference has a recipe revision of Edit: from what I can see,
|
Hi @jcar87 yes, so the disparency is with the recipes available in https://conan.io/center/spdlog and conan-center index. |
The main issue about this is that we can not reproduce exactly same builds - to get libraries and executables which were successfully produced just weeks ago. Because before it was strict dependency on It is an obstacle to rebuild all chain and re-release and re-test all modules which were explicitly and implicitly dependent to Yes conan has But this is |
These are the logs I'm asking about. We really can't investigate any further without actual logs, and we can only speculate what the issue is.
We really need to see actual build logs with the errors to ascertain what is happening, so that we can provide guidance and if there is something wrong on our part, avoid it in the future. We have already explained above that you can use an override to make sure I can see two possible issues here:
|
The typical linking errors were like this (just showing first 3, there is a long list): |
Hi @yshurik , thank you for providing logs.
Thanks! |
As a workaround you can override the fmt version in your project with this: self.requires("fmt/9.1.0", override=True) |
So, I haven't touch a project with explicit dependencies to This is absolutely cursed, I must say. |
Description
spdlog 1.11.0 quietly applied change to change the requirement require from fmt/9.1.0 to fmt/10.0.0 without the upgrade of the version (like 1.11.1)
Now old build recipes become invalid - forced fmt update while a lot was depending on 9.1.0, a lot of object files got linking errors. Old artifacts become invalid.
Can the change be reverted and spd/1.11.1 be introduced with such changed requirement?
conan.io still have wrong dependency referent to 9.1.0 - https://conan.io/center/spdlog?version=1.11.0&revision=d0fdbaa523550b89156084bf42b41c90&tab=dependencies&os
Package and Environment Details
Conan profile
[settings]
os=Macos
os_build=Macos
arch=armv8
arch_build=armv8
compiler=apple-clang
compiler.version=14
compiler.libcxx=libc++
build_type=Release
[options]
[conf]
[build_requires]
[env]
Steps to reproduce
Try to rebuild existing package which was already successfully built with spdlog/1.11.0
ERROR: Conflict in spdlog/1.11.0:
'spdlog/1.11.0' requires 'fmt/10.0.0' while 'Application/1.0.0@Common+Application/stable' requires 'fmt/9.1.0'.
To fix this conflict you need to override the package 'fmt' in your root package.
Logs
Click to expand log
The text was updated successfully, but these errors were encountered: