-
-
Notifications
You must be signed in to change notification settings - Fork 66
Add conan support #68
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
Conversation
Firstly, wow thanks for adding this. It's literally on the list of things I must do before the next peer review, so this is a big help.
That's a known problem with the GCC 7 series. Outcome makes it corrupt its memory. GCC 6 has the same problem, but the memory corruption doesn't appear anything like as frequently. clang and MSVC work correctly.
Yeah, I know, and I'm sorry about that. I need to go finish bashing cmake with a stick regarding correct make install headers installation. It's part implemented, I really ought to finish it. In the meantime, the source tarball at https://dedi4.nedprod.com/static/files/outcome-v2.0-source-latest.tar.xz is always master branch with all submodules correctly bundled in. Conan could use that. What do you think? Do Conan's users just want the library, or do they want to see if it works first? If the tarball is useful, it's trivial for me to have the cronjob upload the tarball to anywhere else too so long as it speaks curl. Do advise on what you think is best. And once again thanks for this, it's a big help. |
I think we should add an option to build unit tests, defaulted to
I don't believe this is needed, if the I'll let you know if I'm mistaken, I need to make some changes to the recipe, the tarball might become useful after all. |
|
I have a question: Do you wish to keep Conan files inside your repo? This has some implications. In order to provide a "latest" mechanism, one can define a However, I don't think it makes a lot of sense when the recipe is inside the repo, since you usually don't fetch the source in that case (I did that in the first commit though...). I believe it would be easier if the recipe was outside, in fact the first version of the Plus, providing a What do you think about it? |
|
Be aware that the tests require quickcpplib to compile, plus do not run against the single file include. Therefore I'd say running the tests is only practical on the tarball edition. |
|
Regarding the "conan-recipes" idea, would those live in a separate repo on github? If so I'm good with that, my nightly cronjob which decides when to merge develop branch into master can also push an update to a "conan-recipes" repo. |
We could also completely skip unit tests, since every commit in master is tested.
Yes, and you will not have to update it, I'll update the recipe in a few minutes that you should be able to copy/paste in a separate repo. |
|
It should work fine now, the Note that you have to copy the EDIT: You can add the |
|
Very cool, thank you. I'll try to find some time after the kids are in bed tonight to give this a test run with conan. If it works, I will indeed submit it to the central Conan repository. Thank you very much for your work on this. |
|
No problem, thanks for your efforts on this lib and your proposals ;) |
|
Ok, so your pr is in develop branch in the conan directory. I have had quite a few problems:
... which is not helpful.
... which is also unhelpful. I have created a conan repo on bintray though, so if we can get the above working, I can push it. |
|
Yeah errors are sometimes cryptic... The first one is because I removed the settings Also, recipes should not add constraints on the compiler/version, nor add flags like At least that's what I've seen in Github issues/documentation/other Conan recipes. |
|
Ok, that hint of yours led to lots more progress. I now get this:
My thanks to you for putting up with these no doubt silly questions. |
To only upload the recipe you have to remove the
A conan reference has the following form: project_name/version@user/channel In this case you might want to use About the channel, I would keep There is no strict rule about the channel name, although No problem, glad to help! EDIT: About consumers of your package, they will simply add the reference to their recipe/project: |
|
Ok, can you test for me |
|
I've tried to download the recipe with
I'll upload the recipe on my own server, to see if this is a Bintray-specific problem. One minor thing, you might want to rename the top-level |
|
I've filed an issue on Conan repo, which is unrelated to the Bintray one we're having right now. I did manage to download the recipe from my own server, so something is certainly up with you Bintray settings. The aforementioned Conan issue is quite blocking though, since it fails on Windows every time... I should have checked that earlier, sorry about that. |
|
The issue is fixed, once Conan 0.29 is out, I will test again on Windows. |
|
Ok thanks. Been busy preparing for Meeting C++ this week, will return my attention to this issue upon return. |
|
I've tried again on Windows, it works (the Closing the PR |
|
@theodelrieu where's the recipe maintained? I want to release a package with a stable version (v2.0). |
|
Oh, didn't see the folder, sorry. Could you please release an stable package? That is, one with Note that changing the recipe that way and uploading the new package doesn't invalidate your previous always-up-to-date package |
|
I have no experience with Conan. Its support was donated. If it isn't working, I can remove it entirely. |
|
The recipe is working, but it's written in a way that it always fetch the latest version from master, which could potentially break user code. Instead, I suggest changing the recipe so it points to the latest stable release (v2.0 iirc). Changing the recipe and releasing a new package tagged with v2.0 will not invalidate the previous distribution pointing to latest master content, both packages will coexist and users will be free to pick whatever version of the package they want. If you have no experience with conan I will be glad to send a PR with the changes. |
|
Then the recipe is correct. master branch reflects the last commit on develop branch to pass all tests on all platforms. Whilst expected to be mostly stable bar the constant workarounding for breakage of certain compiler versions, master branch won't be written into stone until 2020 after which any API or ABI breakage will be disallowed. Until then, all there is is "v2.1-master". I appreciate this is annoying, but quite literally most of the changes to Outcome in the past six months have been new compiler workarounds for newly released compilers. There seems no point in choosing a specific SHA until compiler vendors stop breaking Outcome. |
Hi!
I've added basic Conan support for Outcome, there are some issues left:
ninja install.I didn't want to change the
CMakeLists.txtbefore having your feedback, let me know if you want to support more than the single-header.