Skip to content
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

Conan 2.0 Migration Effort #12888

Closed
prince-chrismc opened this issue Sep 9, 2022 · 26 comments
Closed

Conan 2.0 Migration Effort #12888

prince-chrismc opened this issue Sep 9, 2022 · 26 comments
Labels
help wanted Need some help to be finish

Comments

@prince-chrismc
Copy link
Contributor

prince-chrismc commented Sep 9, 2022

Recipe Migration

One of the more important requirements for the Conan 2.0 adoptions strategy is to have a very strong showing of recipes that are ready to go.

Goal ~80% of most download recipes from August 2022

Criteria for "2.0 ready" currently is:

  • No import from conans
  • Build using new Toolchain/Deps/Helpers
  • Correctly exports targets for 2.0 generators
  • Always use a layout
  • Takes advantage of new conan.tools.files helpers
  • Has a test_v1_package/ to ensure 1.x is not broken (why?)
  • test_package/ has test_type, requires, can_run

Note: The standard for ready may change as final tweaks are put into place before the Conan 2.0 is released

Migration Effort

This list of just over 100 recipes hits just above the 80% mark.

  • Recipe - name of the recipe
  • Readiness
    • ❌ Has not been started, critical error
    • ⚠️ In progress, partial migration
    • ✅ Completed

Last updated: November 29th 2022 👻

Recipe Readiness Notes
zlib #12075 #13597
openssl 1.x ⚠️ #14066 Does not use new build helpers
openssl 3.x ⚠️ #14426 Does not use new build helpers
boost ⚠️ #14415 Uses a bunch of legacy tools
nlohmann_json #12413 #13120
bzip2 #12081 #12840 #13667
fmt #12847 #13727
gtest #12326 #12885
eigen #12348 #13721
catch2 #13037
libiconv #13263
rapidjson #12935
zstd #12825 missing test_type
sqlite3 #12578 missing test_type and can_run
libbacktrace #13498
spdlog #11981 #13618
pkgconf #12219
b2 #13758
libjpeg #13123
xz_utils #13038
expat #11969 #12059 missing test_type
m4 #12892 #13135
libpng #12386
libwebp #12109 missing test_type
opengl ⚠️ #13570 needs new PkgConfig tools
cli11 #13793
libcurl #12377 #12956 #13684
autoconf #12896
protobuf ⚠️ generate + toolchain
automake #12898
c-ares #12582 missing test_type and can_run
jbig #12263 missing test_type and can_run
libuuid #13130
xorg #11698 missing test_type and can_run
libtool #12916 #14466
ninja #12918
ms-gsl #12453 #13725
libpq
cpp-httplib #12544 missing test_type
libxml2 #13511
pybind11 #12327 #13283
brotli #12608 missing test_type and can_run
abseil #12056 missing test_type and can_run
freetype #13451 #13557 #13822
libffi #12904 #13355
pcre #12617
libdeflate #13759 #14028
wayland #12771 #13488 #13640
grpc ⚠️ #13817 needs generators + build helpers
pcre2 #12343 missing test_type and can_run
yaml-cpp #12352 13723 missing can_run
asio #12791 missing test_type
wayland-protocols #13487
opus #12276 missing test_type and can_run
gnu-config #13584
libtiff #13109
re2 #12320 missing test_type and can_run
meson #12727
poco #12868
xkbcommon #11636 #13612 #13668
ogg #12318 missing test_type and can_run
jasper #14291 #13285
jsoncpp #12632 #13027
glm #12546
libuv #13129
libsodium #13792
lz4 #12108
range-v3 #13919
vorbis #12414 See TODO
# TODO: Upstream VorbisConfig.cmake defines components 'Enc' and 'File',
flex 👈 Medium Autotools
benchmark #13080
fontconfig #13845
openjpeg #12378
openexr #12457
aws-c-common #12486
md4c #12977
magic_enum #12894
cppcodec #13110
glfw #12030
openh264 #13849 missing can_run
cyrus-sasl #13458
bison ⚠️ #13091 missing generate + toolchain
zulu-openjdk
cmake ⚠️ #13739 missing generate + toolchain
glib #12331 #12221 #13394 #13347
libunwind #13998 #14141
libjpeg-turbo #13123
ghc-filesystem #14054
nanoflann #12622 missing test_type
glu ⚠️ #13569 needs new PkgConfig tool
stb #13920
nasm #13485
libmysqlclient ⚠️ #13086 generate + toolchain
cxxopts #13922
odbc #13131
libcap #12241
mbedtls #13929
cereal #12542
cryptopp #12400 missing android
android_ndk_home = tools_legacy.get_env("ANDROID_NDK_HOME")
civetweb #12270
sdl ⚠️ #12805 #12186 #12472 generate + toolchain
xtl #12585
xtensor #14298
minizip #12707 #13863
icu ⚠️ #14156 few tools have not been migrated
from conans.tools import get_gnu_triplet, sha256sum, stdcpp_library
libalsa #12824 #13124
jwt-cpp #12735 #13306
@prince-chrismc prince-chrismc added the help wanted Need some help to be finish label Sep 9, 2022
@SpaceIm
Copy link
Contributor

SpaceIm commented Sep 10, 2022

pkgconf: #12219

@jellespijker
Copy link
Contributor

m4: Closed #12815 which is superseded by #12892

@jellespijker
Copy link
Contributor

autoconf; Closed #12777 which is superseded by #12896

@jellespijker
Copy link
Contributor

automake: #12898

@jellespijker
Copy link
Contributor

jellespijker commented Sep 12, 2022

libffi: #12904

@jellespijker
Copy link
Contributor

jellespijker commented Sep 12, 2022

libtool: #12916
The recipe and test_v1_package are mostly ported, still working on the test_package which holds a bit of a challenge since it tries to test 3 different scenario's with multiple tools, in non-standard installation locations

@prince-chrismc
Copy link
Contributor Author

rapidjson: #12935

@prince-chrismc

This comment was marked as resolved.

@AndreyMlashkin
Copy link
Contributor

AndreyMlashkin commented Sep 14, 2022

Is would be cool to update bison to 3.8.2 and upgrade it to conan v2, it will also close
#10381

@prince-chrismc
Copy link
Contributor Author

Libcurl #12956

@SpaceIm
Copy link
Contributor

SpaceIm commented Sep 23, 2022

benchmark: #13080
cppcodec: #13110
libjpeg: #13123
libtiff: #13109
libuuid: #13130
libuv: #13129
magic_enum: #12894
md4c: #12977
odbc: #13131

@prince-chrismc
Copy link
Contributor Author

October 5th update

  • 🟢 is 63
  • 🟡 is 15
  • 🔴 is 31 (there's a handful of easy header-only ones that can be done)

@SSE4
Copy link
Contributor

SSE4 commented Oct 25, 2022

Has a test_v1_package/ to ensure 1.x is not broken

I think it should be optional.

  • test_package is executed for both v1 and v2.
  • test_v1_package is executed just for v1.

therefore, if recipe has test_package and it passes CI, we ensure recipe can be successfully consumed with both v1 and v2.
however, test_v1_package might be used to test some legacy v1 generators, such generators v2 doesn't have and will not ever have (for instance, legacy cmake generator).
in reality, it's rarely needed, as both v1 and v2 can perfectly use modern generators (such as CMakeDeps), so test_v1_package should be an optional thing. so for most of new recipes, it should be enough to just have test_package using sub-set of features available in both v1 and v2.

@SpaceIm
Copy link
Contributor

SpaceIm commented Oct 25, 2022

I disagree. CCI recipes must still check both new & legacy genrators, because a PR may break legacy generators and therefore break consumers or other CCI recipes which are still relying on these legacy generators.

@prince-chrismc
Copy link
Contributor Author

You are both right and we are doing exactly that -- just in different words

  • test_package/ which is called by both 1.x and 2.0 pipelines uses CMakeDeps or equivalent
    • The goal is to ensure a smooth transition between 1.x and 2.0 for recipes (i.e recipes work with both major releases)
    • this is ran with conan create which what contributors are testing when they develop locally
  • test_v1_package/ is intended to be ran with 1.x pipeline to ensure that legacy generators are not broken
    • This is because downstream CCI recipes must still work (since they need a subsequent PR to be upgrade)
    • Added confidence for consumers (optional this is a freebie) which are slow to upgrade and upgrade their recipes during the migration processes

@Neustradamus
Copy link

To follow :)

@grafikrobot
Copy link
Contributor

B2: #13758

@prince-chrismc
Copy link
Contributor Author

October 31st update

  • 🟢 is 73
  • 🟡 is 15
  • 🔴 is 22 (does not include the ones with PRs that are already open)

@grafikrobot
Copy link
Contributor

@SSE4 , @SpaceIm , @prince-chrismc out of paranoia, for the B2 recipe I ended up adding all three test packages (test_package, test_v1_package, test_v2_package). Perhaps not the best approach. But it's hard to discern from my distant vantage point what should be done when. And would much rather just hope a single test package. But, whatever ;-)

@prince-chrismc
Copy link
Contributor Author

But it's hard to discern from my distant vantage point what should be done when

I commented on your PR trying to help :)

@PatSche PatSche mentioned this issue Nov 2, 2022
4 tasks
@grafikrobot
Copy link
Contributor

lyra: #13969

@datalogics-kam
Copy link
Contributor

flex: #14013 ...but I'm having a problem detailed in a comment there about flex_target not being defined, as it is with the built-in CMake module.

@prince-chrismc
Copy link
Contributor Author

November 29th update

  • 🟢 is 87
  • 🟡 is 12
  • 🔴 is 8 (maybe 3 without open PRs)

@prince-chrismc
Copy link
Contributor Author

I have not been maintaining this list but you can take a peak at my fork to see what's been cooking 🧑‍🍳

A complete list can be found in https://github.com/prince-chrismc/conan-center-index/blob/config/v2-top100/.github/top_100_recipes.yaml

@Croydon
Copy link
Contributor

Croydon commented May 25, 2024

Since this list is not maintained, maybe we can close this issue in favor of #20992 which is more up-to-date.

@prince-chrismc
Copy link
Contributor Author

Great suggestion!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Need some help to be finish
Projects
None yet
Development

No branches or pull requests

9 participants