conan 2.9.3__tar.gz → 2.10.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {conan-2.9.3/conan.egg-info → conan-2.10.1}/PKG-INFO +1 -1
- {conan-2.9.3 → conan-2.10.1}/conan/__init__.py +1 -2
- {conan-2.9.3 → conan-2.10.1}/conan/api/conan_api.py +5 -4
- {conan-2.9.3 → conan-2.10.1}/conan/api/output.py +26 -20
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/cache.py +31 -32
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/config.py +3 -4
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/export.py +9 -5
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/install.py +5 -2
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/local.py +16 -10
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/new.py +4 -2
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/remotes.py +2 -2
- conan-2.10.1/conan/api/subapi/workspace.py +82 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/cli.py +2 -2
- {conan-2.9.3 → conan-2.10.1}/conan/cli/command.py +13 -4
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/build.py +0 -1
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/config.py +10 -1
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/list.py +1 -1
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/new.py +5 -3
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/remote.py +12 -2
- conan-2.10.1/conan/cli/commands/workspace.py +108 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/formatters/graph/build_order_html.py +3 -2
- {conan-2.9.3 → conan-2.10.1}/conan/cli/formatters/graph/graph.py +2 -2
- {conan-2.9.3 → conan-2.10.1}/conan/cli/formatters/graph/info_graph_html.py +1 -1
- {conan-2.9.3 → conan-2.10.1}/conan/cli/formatters/list/list.py +2 -2
- {conan-2.9.3 → conan-2.10.1}/conan/cli/printers/graph.py +1 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cps/cps.py +6 -6
- {conan-2.9.3 → conan-2.10.1}/conan/internal/__init__.py +3 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/detect/detect_vs.py +0 -1
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/export.py +3 -3
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/install/generators.py +2 -3
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/bazel_7_lib.py +4 -1
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/bazel_lib.py +4 -1
- {conan-2.9.3 → conan-2.10.1}/conan/internal/cache/db/cache_database.py +4 -8
- {conan-2.9.3 → conan-2.10.1}/conan/internal/cache/db/packages_table.py +42 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/cache/integrity_check.py +4 -4
- {conan-2.9.3 → conan-2.10.1}/conan/internal/conan_app.py +0 -10
- {conan-2.9.3 → conan-2.10.1}/conan/internal/deploy.py +1 -1
- conan-2.10.1/conan/internal/methods.py +159 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/runner/docker.py +6 -3
- conan-2.10.1/conan/internal/workspace.py +154 -0
- {conan-2.9.3 → conan-2.10.1}/conan/test/assets/genconanfile.py +2 -2
- {conan-2.9.3 → conan-2.10.1}/conan/test/utils/artifactory.py +1 -1
- {conan-2.9.3 → conan-2.10.1}/conan/test/utils/server_launcher.py +1 -1
- {conan-2.9.3 → conan-2.10.1}/conan/test/utils/tools.py +8 -111
- {conan-2.9.3 → conan-2.10.1}/conan/tools/build/flags.py +15 -4
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmake.py +2 -2
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps/cmakedeps.py +1 -1
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps2/cmakedeps.py +58 -6
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps2/config.py +34 -1
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps2/target_configuration.py +6 -1
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps2/targets.py +1 -1
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/toolchain/blocks.py +2 -2
- {conan-2.9.3 → conan-2.10.1}/conan/tools/files/patches.py +2 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/gnu/autotoolstoolchain.py +2 -2
- {conan-2.9.3 → conan-2.10.1}/conan/tools/gnu/gnutoolchain.py +2 -2
- {conan-2.9.3 → conan-2.10.1}/conan/tools/google/bazeldeps.py +45 -109
- {conan-2.9.3 → conan-2.10.1}/conan/tools/meson/toolchain.py +15 -12
- {conan-2.9.3 → conan-2.10.1}/conan/tools/microsoft/msbuild.py +2 -2
- {conan-2.9.3 → conan-2.10.1}/conan/tools/microsoft/nmaketoolchain.py +1 -1
- conan-2.10.1/conan/tools/premake/premake.py +17 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/premake/premakedeps.py +2 -4
- {conan-2.9.3 → conan-2.10.1}/conan/tools/ros/rosenv.py +7 -2
- {conan-2.9.3 → conan-2.10.1}/conan/tools/scm/git.py +1 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/system/package_manager.py +1 -2
- {conan-2.9.3 → conan-2.10.1/conan.egg-info}/PKG-INFO +1 -1
- {conan-2.9.3 → conan-2.10.1}/conan.egg-info/SOURCES.txt +4 -5
- {conan-2.9.3 → conan-2.10.1}/conans/client/graph/build_mode.py +4 -4
- {conan-2.9.3 → conan-2.10.1}/conans/client/graph/compute_pid.py +1 -1
- {conan-2.9.3 → conan-2.10.1}/conans/client/graph/graph.py +5 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/graph/graph_binaries.py +9 -9
- {conan-2.9.3 → conan-2.10.1}/conans/client/graph/graph_builder.py +15 -9
- {conan-2.9.3 → conan-2.10.1}/conans/client/graph/profile_node_definer.py +6 -4
- {conan-2.9.3 → conan-2.10.1}/conans/client/installer.py +16 -12
- {conan-2.9.3 → conan-2.10.1}/conans/client/loader.py +3 -6
- {conan-2.9.3 → conan-2.10.1}/conans/client/remote_manager.py +2 -2
- {conan-2.9.3 → conan-2.10.1}/conans/client/rest/conan_requester.py +2 -2
- {conan-2.9.3 → conan-2.10.1}/conans/client/rest/rest_client.py +5 -3
- {conan-2.9.3 → conan-2.10.1}/conans/client/rest/rest_client_v2.py +6 -2
- {conan-2.9.3 → conan-2.10.1}/conans/client/rest_client_local_recipe_index.py +5 -3
- {conan-2.9.3 → conan-2.10.1}/conans/client/source.py +3 -14
- {conan-2.9.3 → conan-2.10.1}/conans/model/build_info.py +109 -48
- {conan-2.9.3 → conan-2.10.1}/conans/model/conf.py +1 -1
- {conan-2.9.3 → conan-2.10.1}/conans/model/dependencies.py +11 -3
- {conan-2.9.3 → conan-2.10.1}/conans/model/requires.py +3 -1
- {conan-2.9.3 → conan-2.10.1}/conans/model/version_range.py +3 -3
- {conan-2.9.3 → conan-2.10.1}/setup.py +1 -1
- conan-2.9.3/conan/tools/premake/premake.py +0 -39
- conan-2.9.3/conans/__init__.py +0 -4
- conan-2.9.3/conans/client/conanfile/build.py +0 -18
- conan-2.9.3/conans/client/conanfile/configure.py +0 -54
- conan-2.9.3/conans/client/conanfile/implementations.py +0 -30
- conan-2.9.3/conans/client/conanfile/package.py +0 -51
- {conan-2.9.3 → conan-2.10.1}/LICENSE.md +0 -0
- {conan-2.9.3 → conan-2.10.1}/MANIFEST.in +0 -0
- {conan-2.9.3 → conan-2.10.1}/README.md +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/api/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/api/input.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/api/model.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/command.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/download.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/graph.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/list.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/lockfile.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/profiles.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/remove.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/search.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/api/subapi/upload.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/args.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/cache.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/create.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/download.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/editable.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/export.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/export_pkg.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/graph.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/inspect.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/install.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/lock.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/pkglist.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/profile.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/remove.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/search.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/source.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/test.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/upload.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/commands/version.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/exit_codes.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/formatters/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/formatters/graph/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/formatters/graph/graph_info_text.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/formatters/graph/info_graph_dot.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/formatters/list/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/formatters/list/binary_html_table.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/formatters/list/search_table_html.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cli/printers/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/cps/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/errors.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/config/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/config/config_installer.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/detect/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/detect/detect_api.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/install/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/list/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/list/query_parse.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/local/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/local/editable.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/alias_new.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/autoools_exe.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/autotools_lib.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/basic.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/bazel_7_exe.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/bazel_exe.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/cmake_exe.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/cmake_lib.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/local_recipes_index.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/meson_exe.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/meson_lib.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/msbuild_exe.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/msbuild_lib.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/new/qbs_lib.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/profile/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/profile/detect.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/profile/profile_loader.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/remotes/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/remotes/encrypt.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/remotes/localdb.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/api/uploader.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/cache/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/cache/cache.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/cache/conan_reference_layout.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/cache/db/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/cache/db/recipes_table.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/cache/db/table.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/cache/home_paths.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/default_settings.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/errors.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/internal_tools.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/paths.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/runner/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/runner/ssh.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/internal/runner/wsl.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/test/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/test/assets/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/test/assets/autotools.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/test/assets/cmake.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/test/assets/pkg_cmake.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/test/assets/sources.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/test/assets/visual_project_files.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/test/utils/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/test/utils/env.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/test/utils/file_server.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/test/utils/mocks.py +1 -1
- {conan-2.9.3 → conan-2.10.1}/conan/test/utils/profiles.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/test/utils/scm.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/test/utils/test_files.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/android/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/android/utils.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/apple/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/apple/apple.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/apple/xcodebuild.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/apple/xcodedeps.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/apple/xcodetoolchain.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/build/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/build/cppstd.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/build/cpu.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/build/cross_building.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/build/cstd.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/build/stdcpp_library.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps/templates/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps/templates/config.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps/templates/config_version.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps/templates/macros.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps/templates/target_configuration.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps/templates/target_data.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps/templates/targets.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps2/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/cmakedeps2/config_version.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/layout.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/presets.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/toolchain/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/toolchain/toolchain.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cmake/utils.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cps/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/cps/cps_deps.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/env/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/env/environment.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/env/virtualbuildenv.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/env/virtualrunenv.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/files/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/files/conandata.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/files/copy_pattern.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/files/files.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/files/packager.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/files/symlinks/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/files/symlinks/symlinks.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/gnu/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/gnu/autotools.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/gnu/autotoolsdeps.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/gnu/get_gnu_triplet.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/gnu/gnudeps_flags.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/gnu/makedeps.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/gnu/pkgconfig.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/gnu/pkgconfigdeps.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/google/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/google/bazel.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/google/layout.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/google/toolchain.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/intel/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/intel/intel_cc.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/layout/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/meson/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/meson/helpers.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/meson/meson.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/microsoft/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/microsoft/layout.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/microsoft/msbuilddeps.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/microsoft/nmakedeps.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/microsoft/subsystems.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/microsoft/toolchain.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/microsoft/visual.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/premake/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/qbs/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/qbs/common.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/qbs/qbs.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/qbs/qbsdeps.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/qbs/qbsprofile.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/ros/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/scm/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/scons/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/scons/sconsdeps.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan/tools/system/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan.egg-info/dependency_links.txt +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan.egg-info/entry_points.txt +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan.egg-info/requires.txt +0 -0
- {conan-2.9.3 → conan-2.10.1}/conan.egg-info/top_level.txt +0 -0
- {conan-2.9.3/conans/client → conan-2.10.1/conans}/__init__.py +0 -0
- {conan-2.9.3/conans/client/conanfile → conan-2.10.1/conans/client}/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/downloaders/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/downloaders/caching_file_downloader.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/downloaders/download_cache.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/downloaders/file_downloader.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/graph/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/graph/compatibility.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/graph/graph_error.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/graph/install_graph.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/graph/provides.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/graph/proxy.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/graph/python_requires.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/graph/range_resolver.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/hook_manager.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/loader_txt.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/migrations.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/pkg_sign.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/rest/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/rest/auth_manager.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/rest/client_routes.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/rest/file_uploader.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/rest/remote_credentials.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/client/subsystems.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/conan.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/conan_server.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/migrations.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/conan_file.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/conanfile_interface.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/graph_lock.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/info.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/layout.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/manifest.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/options.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/package_ref.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/pkg_type.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/profile.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/recipe_ref.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/rest_routes.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/settings.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/model/version.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/requirements.txt +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/requirements_dev.txt +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/requirements_runner.txt +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/requirements_server.txt +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/util/__init__.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/util/config_parser.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/util/dates.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/util/files.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/util/locks.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/util/runners.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/conans/util/thread.py +0 -0
- {conan-2.9.3 → conan-2.10.1}/pyproject.toml +0 -0
- {conan-2.9.3 → conan-2.10.1}/setup.cfg +0 -0
|
@@ -5,7 +5,8 @@ from conan.api.subapi.cache import CacheAPI
|
|
|
5
5
|
from conan.api.subapi.command import CommandAPI
|
|
6
6
|
from conan.api.subapi.local import LocalAPI
|
|
7
7
|
from conan.api.subapi.lockfile import LockfileAPI
|
|
8
|
-
from
|
|
8
|
+
from conan.api.subapi.workspace import WorkspaceAPI
|
|
9
|
+
from conan import conan_version
|
|
9
10
|
from conan.api.subapi.config import ConfigAPI
|
|
10
11
|
from conan.api.subapi.download import DownloadAPI
|
|
11
12
|
from conan.api.subapi.export import ExportAPI
|
|
@@ -20,7 +21,6 @@ from conan.api.subapi.search import SearchAPI
|
|
|
20
21
|
from conan.api.subapi.upload import UploadAPI
|
|
21
22
|
from conans.client.migrations import ClientMigrator
|
|
22
23
|
from conan.errors import ConanException
|
|
23
|
-
from conans.model.version import Version
|
|
24
24
|
from conan.internal.paths import get_conan_user_home
|
|
25
25
|
from conans.model.version_range import validate_conan_version
|
|
26
26
|
|
|
@@ -33,11 +33,12 @@ class ConanAPI:
|
|
|
33
33
|
raise ConanException("Conan needs Python >= 3.6")
|
|
34
34
|
|
|
35
35
|
init_colorama(sys.stderr)
|
|
36
|
-
self.
|
|
36
|
+
self.workspace = WorkspaceAPI(self)
|
|
37
|
+
self.cache_folder = self.workspace.home_folder() or cache_folder or get_conan_user_home()
|
|
37
38
|
self.home_folder = self.cache_folder # Lets call it home, deprecate "cache"
|
|
38
39
|
|
|
39
40
|
# Migration system
|
|
40
|
-
migrator = ClientMigrator(self.cache_folder,
|
|
41
|
+
migrator = ClientMigrator(self.cache_folder, conan_version)
|
|
41
42
|
migrator.migrate()
|
|
42
43
|
|
|
43
44
|
self.command = CommandAPI(self)
|
|
@@ -4,6 +4,7 @@ import sys
|
|
|
4
4
|
import time
|
|
5
5
|
from threading import Lock
|
|
6
6
|
|
|
7
|
+
import colorama
|
|
7
8
|
from colorama import Fore, Style
|
|
8
9
|
|
|
9
10
|
from conan.errors import ConanException
|
|
@@ -113,21 +114,26 @@ class ConanOutput:
|
|
|
113
114
|
|
|
114
115
|
:param v: `str` or `None`, where `None` is the same as `verbose`.
|
|
115
116
|
"""
|
|
117
|
+
env_level = os.getenv("CONAN_LOG_LEVEL")
|
|
118
|
+
v = env_level or v
|
|
119
|
+
levels = {"quiet": LEVEL_QUIET, # -vquiet 80
|
|
120
|
+
"error": LEVEL_ERROR, # -verror 70
|
|
121
|
+
"warning": LEVEL_WARNING, # -vwaring 60
|
|
122
|
+
"notice": LEVEL_NOTICE, # -vnotice 50
|
|
123
|
+
"status": LEVEL_STATUS, # -vstatus 40
|
|
124
|
+
None: LEVEL_VERBOSE, # -v 30
|
|
125
|
+
"verbose": LEVEL_VERBOSE, # -vverbose 30
|
|
126
|
+
"debug": LEVEL_DEBUG, # -vdebug 20
|
|
127
|
+
"v": LEVEL_DEBUG, # -vv 20
|
|
128
|
+
"trace": LEVEL_TRACE, # -vtrace 10
|
|
129
|
+
"vv": LEVEL_TRACE # -vvv 10
|
|
130
|
+
}
|
|
116
131
|
try:
|
|
117
|
-
level =
|
|
118
|
-
"error": LEVEL_ERROR, # -verror 70
|
|
119
|
-
"warning": LEVEL_WARNING, # -vwaring 60
|
|
120
|
-
"notice": LEVEL_NOTICE, # -vnotice 50
|
|
121
|
-
"status": LEVEL_STATUS, # -vstatus 40
|
|
122
|
-
None: LEVEL_VERBOSE, # -v 30
|
|
123
|
-
"verbose": LEVEL_VERBOSE, # -vverbose 30
|
|
124
|
-
"debug": LEVEL_DEBUG, # -vdebug 20
|
|
125
|
-
"v": LEVEL_DEBUG, # -vv 20
|
|
126
|
-
"trace": LEVEL_TRACE, # -vtrace 10
|
|
127
|
-
"vv": LEVEL_TRACE # -vvv 10
|
|
128
|
-
}[v]
|
|
132
|
+
level = levels[v]
|
|
129
133
|
except KeyError:
|
|
130
|
-
|
|
134
|
+
msg = " defined in CONAN_LOG_LEVEL environment variable" if env_level else ""
|
|
135
|
+
vals = "quiet, error, warning, notice, status, verbose, debug(v), trace(vv)"
|
|
136
|
+
raise ConanException(f"Invalid argument '-v{v}'{msg}.\nAllowed values: {vals}")
|
|
131
137
|
else:
|
|
132
138
|
cls._conan_output_level = level
|
|
133
139
|
|
|
@@ -283,15 +289,15 @@ def cli_out_write(data, fg=None, bg=None, endline="\n", indentation=0):
|
|
|
283
289
|
"""
|
|
284
290
|
Output to be used by formatters to dump information to stdout
|
|
285
291
|
"""
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
if (fg or bg) and _color_enabled(sys.stdout):
|
|
290
|
-
data = f"{' ' * indentation}{fg_}{bg_}{data}{Style.RESET_ALL}{endline}"
|
|
292
|
+
if (fg or bg) and _color_enabled(sys.stdout): # need color
|
|
293
|
+
data = f"{' ' * indentation}{fg or ''}{bg or ''}{data}{Style.RESET_ALL}{endline}"
|
|
294
|
+
sys.stdout.write(data)
|
|
291
295
|
else:
|
|
292
296
|
data = f"{' ' * indentation}{data}{endline}"
|
|
293
|
-
|
|
294
|
-
|
|
297
|
+
# https://github.com/conan-io/conan/issues/17245 avoid colorama crash and overhead
|
|
298
|
+
colorama.deinit()
|
|
299
|
+
sys.stdout.write(data)
|
|
300
|
+
colorama.reinit()
|
|
295
301
|
|
|
296
302
|
|
|
297
303
|
class TimedOutput:
|
|
@@ -8,7 +8,6 @@ from conan.api.model import PackagesList
|
|
|
8
8
|
from conan.api.output import ConanOutput
|
|
9
9
|
from conan.internal.cache.cache import PkgCache
|
|
10
10
|
from conan.internal.cache.home_paths import HomePaths
|
|
11
|
-
from conan.internal.conan_app import ConanApp
|
|
12
11
|
from conan.internal.cache.integrity_check import IntegrityChecker
|
|
13
12
|
from conans.client.downloaders.download_cache import DownloadCache
|
|
14
13
|
from conan.errors import ConanException
|
|
@@ -24,53 +23,53 @@ class CacheAPI:
|
|
|
24
23
|
self.conan_api = conan_api
|
|
25
24
|
|
|
26
25
|
def export_path(self, ref: RecipeReference):
|
|
27
|
-
|
|
26
|
+
cache = PkgCache(self.conan_api.cache_folder, self.conan_api.config.global_conf)
|
|
28
27
|
ref.revision = None if ref.revision == "latest" else ref.revision
|
|
29
|
-
ref_layout =
|
|
28
|
+
ref_layout = cache.recipe_layout(ref)
|
|
30
29
|
return _check_folder_existence(ref, "export", ref_layout.export())
|
|
31
30
|
|
|
32
31
|
def recipe_metadata_path(self, ref: RecipeReference):
|
|
33
|
-
|
|
34
|
-
ref = _resolve_latest_ref(
|
|
35
|
-
ref_layout =
|
|
32
|
+
cache = PkgCache(self.conan_api.cache_folder, self.conan_api.config.global_conf)
|
|
33
|
+
ref = _resolve_latest_ref(cache, ref)
|
|
34
|
+
ref_layout = cache.recipe_layout(ref)
|
|
36
35
|
return _check_folder_existence(ref, "metadata", ref_layout.metadata())
|
|
37
36
|
|
|
38
37
|
def export_source_path(self, ref: RecipeReference):
|
|
39
|
-
|
|
38
|
+
cache = PkgCache(self.conan_api.cache_folder, self.conan_api.config.global_conf)
|
|
40
39
|
ref.revision = None if ref.revision == "latest" else ref.revision
|
|
41
|
-
ref_layout =
|
|
40
|
+
ref_layout = cache.recipe_layout(ref)
|
|
42
41
|
return _check_folder_existence(ref, "export_sources", ref_layout.export_sources())
|
|
43
42
|
|
|
44
43
|
def source_path(self, ref: RecipeReference):
|
|
45
|
-
|
|
44
|
+
cache = PkgCache(self.conan_api.cache_folder, self.conan_api.config.global_conf)
|
|
46
45
|
ref.revision = None if ref.revision == "latest" else ref.revision
|
|
47
|
-
ref_layout =
|
|
46
|
+
ref_layout = cache.recipe_layout(ref)
|
|
48
47
|
return _check_folder_existence(ref, "source", ref_layout.source())
|
|
49
48
|
|
|
50
49
|
def build_path(self, pref: PkgReference):
|
|
51
|
-
|
|
52
|
-
pref = _resolve_latest_pref(
|
|
53
|
-
ref_layout =
|
|
50
|
+
cache = PkgCache(self.conan_api.cache_folder, self.conan_api.config.global_conf)
|
|
51
|
+
pref = _resolve_latest_pref(cache, pref)
|
|
52
|
+
ref_layout = cache.pkg_layout(pref)
|
|
54
53
|
return _check_folder_existence(pref, "build", ref_layout.build())
|
|
55
54
|
|
|
56
55
|
def package_metadata_path(self, pref: PkgReference):
|
|
57
|
-
|
|
58
|
-
pref = _resolve_latest_pref(
|
|
59
|
-
ref_layout =
|
|
56
|
+
cache = PkgCache(self.conan_api.cache_folder, self.conan_api.config.global_conf)
|
|
57
|
+
pref = _resolve_latest_pref(cache, pref)
|
|
58
|
+
ref_layout = cache.pkg_layout(pref)
|
|
60
59
|
return _check_folder_existence(pref, "metadata", ref_layout.metadata())
|
|
61
60
|
|
|
62
61
|
def package_path(self, pref: PkgReference):
|
|
63
|
-
|
|
64
|
-
pref = _resolve_latest_pref(
|
|
65
|
-
ref_layout =
|
|
62
|
+
cache = PkgCache(self.conan_api.cache_folder, self.conan_api.config.global_conf)
|
|
63
|
+
pref = _resolve_latest_pref(cache, pref)
|
|
64
|
+
ref_layout = cache.pkg_layout(pref)
|
|
66
65
|
if os.path.exists(ref_layout.finalize()):
|
|
67
66
|
return ref_layout.finalize()
|
|
68
67
|
return _check_folder_existence(pref, "package", ref_layout.package())
|
|
69
68
|
|
|
70
69
|
def check_integrity(self, package_list):
|
|
71
70
|
"""Check if the recipes and packages are corrupted (it will raise a ConanExcepcion)"""
|
|
72
|
-
|
|
73
|
-
checker = IntegrityChecker(
|
|
71
|
+
cache = PkgCache(self.conan_api.cache_folder, self.conan_api.config.global_conf)
|
|
72
|
+
checker = IntegrityChecker(cache)
|
|
74
73
|
checker.check(package_list)
|
|
75
74
|
|
|
76
75
|
def clean(self, package_list, source=True, build=True, download=True, temp=True,
|
|
@@ -87,11 +86,11 @@ class CacheAPI:
|
|
|
87
86
|
:return:
|
|
88
87
|
"""
|
|
89
88
|
|
|
90
|
-
|
|
89
|
+
cache = PkgCache(self.conan_api.cache_folder, self.conan_api.config.global_conf)
|
|
91
90
|
if temp:
|
|
92
|
-
rmdir(
|
|
91
|
+
rmdir(cache.temp_folder)
|
|
93
92
|
# Clean those build folders that didn't succeed to create a package and wont be in DB
|
|
94
|
-
builds_folder =
|
|
93
|
+
builds_folder = cache.builds_folder
|
|
95
94
|
if os.path.isdir(builds_folder):
|
|
96
95
|
for subdir in os.listdir(builds_folder):
|
|
97
96
|
folder = os.path.join(builds_folder, subdir)
|
|
@@ -105,17 +104,17 @@ class CacheAPI:
|
|
|
105
104
|
remove(f)
|
|
106
105
|
|
|
107
106
|
for ref, ref_bundle in package_list.refs().items():
|
|
108
|
-
ref_layout =
|
|
107
|
+
ref_layout = cache.recipe_layout(ref)
|
|
109
108
|
if source:
|
|
110
109
|
rmdir(ref_layout.source())
|
|
111
110
|
if download:
|
|
112
111
|
rmdir(ref_layout.download_export())
|
|
113
112
|
for pref, _ in package_list.prefs(ref, ref_bundle).items():
|
|
114
|
-
pref_layout =
|
|
113
|
+
pref_layout = cache.pkg_layout(pref)
|
|
115
114
|
if build:
|
|
116
115
|
rmdir(pref_layout.build())
|
|
117
116
|
# It is important to remove the "build_id" identifier if build-folder is removed
|
|
118
|
-
|
|
117
|
+
cache.remove_build_id(pref)
|
|
119
118
|
if download:
|
|
120
119
|
rmdir(pref_layout.download_package())
|
|
121
120
|
|
|
@@ -244,21 +243,21 @@ class CacheAPI:
|
|
|
244
243
|
return download_cache.get_backup_sources_files(excluded_urls, package_list, only_upload)
|
|
245
244
|
|
|
246
245
|
|
|
247
|
-
def _resolve_latest_ref(
|
|
246
|
+
def _resolve_latest_ref(cache, ref):
|
|
248
247
|
if ref.revision is None or ref.revision == "latest":
|
|
249
248
|
ref.revision = None
|
|
250
|
-
result =
|
|
249
|
+
result = cache.get_latest_recipe_reference(ref)
|
|
251
250
|
if result is None:
|
|
252
251
|
raise ConanException(f"'{ref}' not found in cache")
|
|
253
252
|
ref = result
|
|
254
253
|
return ref
|
|
255
254
|
|
|
256
255
|
|
|
257
|
-
def _resolve_latest_pref(
|
|
258
|
-
pref.ref = _resolve_latest_ref(
|
|
256
|
+
def _resolve_latest_pref(cache, pref):
|
|
257
|
+
pref.ref = _resolve_latest_ref(cache, pref.ref)
|
|
259
258
|
if pref.revision is None or pref.revision == "latest":
|
|
260
259
|
pref.revision = None
|
|
261
|
-
result =
|
|
260
|
+
result = cache.get_latest_package_reference(pref)
|
|
262
261
|
if result is None:
|
|
263
262
|
raise ConanException(f"'{pref.repr_notime()}' not found in cache")
|
|
264
263
|
pref = result
|
|
@@ -40,19 +40,18 @@ class ConfigAPI:
|
|
|
40
40
|
configuration_install(app, path_or_url, verify_ssl, config_type=config_type, args=args,
|
|
41
41
|
source_folder=source_folder, target_folder=target_folder)
|
|
42
42
|
|
|
43
|
-
def install_pkg(self, ref, lockfile=None, force=False, remotes=None):
|
|
43
|
+
def install_pkg(self, ref, lockfile=None, force=False, remotes=None, profile=None):
|
|
44
44
|
ConanOutput().warning("The 'conan config install-pkg' is experimental",
|
|
45
45
|
warn_tag="experimental")
|
|
46
46
|
conan_api = self.conan_api
|
|
47
47
|
remotes = conan_api.remotes.list() if remotes is None else remotes
|
|
48
|
-
|
|
49
|
-
profile_host = profile_build = conan_api.profiles.get_profile([])
|
|
48
|
+
profile_host = profile_build = profile or conan_api.profiles.get_profile([])
|
|
50
49
|
|
|
51
50
|
app = ConanApp(self.conan_api)
|
|
52
51
|
|
|
53
52
|
# Computation of a very simple graph that requires "ref"
|
|
54
53
|
conanfile = app.loader.load_virtual(requires=[RecipeReference.loads(ref)])
|
|
55
|
-
consumer_definer(conanfile,
|
|
54
|
+
consumer_definer(conanfile, profile_host, profile_build)
|
|
56
55
|
root_node = Node(ref=None, conanfile=conanfile, context=CONTEXT_HOST, recipe=RECIPE_VIRTUAL)
|
|
57
56
|
root_node.is_conf = True
|
|
58
57
|
update = ["*"]
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
from conan.api.output import ConanOutput
|
|
2
|
+
from conan.internal.cache.cache import PkgCache
|
|
3
|
+
from conan.internal.cache.home_paths import HomePaths
|
|
2
4
|
from conan.internal.conan_app import ConanApp
|
|
3
5
|
from conan.internal.api.export import cmd_export
|
|
4
|
-
from
|
|
6
|
+
from conan.internal.methods import run_package_method
|
|
5
7
|
from conans.client.graph.graph import BINARY_BUILD, RECIPE_INCACHE
|
|
8
|
+
from conans.client.hook_manager import HookManager
|
|
6
9
|
from conans.model.package_ref import PkgReference
|
|
7
10
|
from conans.util.files import mkdir
|
|
8
11
|
|
|
@@ -15,12 +18,13 @@ class ExportAPI:
|
|
|
15
18
|
def export(self, path, name, version, user, channel, lockfile=None, remotes=None):
|
|
16
19
|
ConanOutput().title("Exporting recipe to the cache")
|
|
17
20
|
app = ConanApp(self.conan_api)
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
hook_manager = HookManager(HomePaths(self.conan_api.home_folder).hooks_path)
|
|
22
|
+
return cmd_export(app, hook_manager, self.conan_api.config.global_conf, path, name, version,
|
|
23
|
+
user, channel, graph_lock=lockfile, remotes=remotes)
|
|
20
24
|
|
|
21
25
|
def export_pkg(self, deps_graph, source_folder, output_folder):
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
cache = PkgCache(self.conan_api.cache_folder, self.conan_api.config.global_conf)
|
|
27
|
+
hook_manager = HookManager(HomePaths(self.conan_api.home_folder).hooks_path)
|
|
24
28
|
|
|
25
29
|
# The graph has to be loaded with build_mode=[ref.name], so that node is not tried
|
|
26
30
|
# to be downloaded from remotes
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import os
|
|
2
2
|
|
|
3
3
|
from conan.internal.api.install.generators import write_generators
|
|
4
|
+
from conan.internal.cache.home_paths import HomePaths
|
|
4
5
|
from conan.internal.conan_app import ConanApp
|
|
5
6
|
from conan.internal.deploy import do_deploys
|
|
6
7
|
|
|
7
8
|
from conans.client.graph.install_graph import InstallGraph
|
|
9
|
+
from conans.client.hook_manager import HookManager
|
|
8
10
|
from conans.client.installer import BinaryInstaller
|
|
9
11
|
from conan.errors import ConanInvalidConfiguration
|
|
10
12
|
|
|
@@ -87,5 +89,6 @@ class InstallAPI:
|
|
|
87
89
|
if gen not in final_generators:
|
|
88
90
|
final_generators.append(gen)
|
|
89
91
|
conanfile.generators = final_generators
|
|
90
|
-
|
|
91
|
-
write_generators(conanfile,
|
|
92
|
+
hook_manager = HookManager(HomePaths(self.conan_api.home_folder).hooks_path)
|
|
93
|
+
write_generators(conanfile, hook_manager, self.conan_api.home_folder,
|
|
94
|
+
envs_generation=envs_generation)
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import os
|
|
2
2
|
|
|
3
3
|
from conan.cli import make_abs_path
|
|
4
|
+
from conan.internal.cache.home_paths import HomePaths
|
|
4
5
|
from conan.internal.conan_app import ConanApp
|
|
5
6
|
from conan.internal.api.local.editable import EditablePackages
|
|
6
|
-
from
|
|
7
|
+
from conan.internal.methods import run_build_method, run_source_method
|
|
7
8
|
from conans.client.graph.graph import CONTEXT_HOST
|
|
8
9
|
from conans.client.graph.profile_node_definer import initialize_conanfile_profile
|
|
9
|
-
from conans.client.source import run_source_method
|
|
10
10
|
from conan.internal.errors import conanfile_exception_formatter
|
|
11
11
|
from conan.errors import ConanException
|
|
12
|
+
from conans.client.hook_manager import HookManager
|
|
12
13
|
from conans.model.recipe_ref import RecipeReference
|
|
13
14
|
from conans.util.files import chdir
|
|
14
15
|
|
|
@@ -18,6 +19,9 @@ class LocalAPI:
|
|
|
18
19
|
def __init__(self, conan_api):
|
|
19
20
|
self._conan_api = conan_api
|
|
20
21
|
self.editable_packages = EditablePackages(conan_api.home_folder)
|
|
22
|
+
editables = conan_api.workspace.editables()
|
|
23
|
+
if editables:
|
|
24
|
+
self.editable_packages.edited_refs.update(editables)
|
|
21
25
|
|
|
22
26
|
@staticmethod
|
|
23
27
|
def get_conanfile_path(path, cwd, py):
|
|
@@ -56,17 +60,20 @@ class LocalAPI:
|
|
|
56
60
|
target_path = self._conan_api.local.get_conanfile_path(path=path, cwd=cwd, py=True)
|
|
57
61
|
output_folder = make_abs_path(output_folder) if output_folder else None
|
|
58
62
|
# Check the conanfile is there, and name/version matches
|
|
59
|
-
self.
|
|
63
|
+
editable_packages = EditablePackages(self._conan_api.home_folder)
|
|
64
|
+
editable_packages.add(ref, target_path, output_folder=output_folder)
|
|
60
65
|
return ref
|
|
61
66
|
|
|
62
67
|
def editable_remove(self, path=None, requires=None, cwd=None):
|
|
63
68
|
if path:
|
|
64
69
|
path = make_abs_path(path, cwd)
|
|
65
70
|
path = os.path.join(path, "conanfile.py")
|
|
66
|
-
|
|
71
|
+
editable_packages = EditablePackages(self._conan_api.home_folder)
|
|
72
|
+
return editable_packages.remove(path, requires)
|
|
67
73
|
|
|
68
74
|
def editable_list(self):
|
|
69
|
-
|
|
75
|
+
editable_packages = EditablePackages(self._conan_api.home_folder)
|
|
76
|
+
return editable_packages.edited_refs
|
|
70
77
|
|
|
71
78
|
def source(self, path, name=None, version=None, user=None, channel=None, remotes=None):
|
|
72
79
|
""" calls the 'source()' method of the current (user folder) conanfile.py
|
|
@@ -92,16 +99,16 @@ class LocalAPI:
|
|
|
92
99
|
conanfile.folders.set_base_build(None)
|
|
93
100
|
conanfile.folders.set_base_package(None)
|
|
94
101
|
|
|
95
|
-
|
|
96
|
-
run_source_method(conanfile,
|
|
102
|
+
hook_manager = HookManager(HomePaths(self._conan_api.home_folder).hooks_path)
|
|
103
|
+
run_source_method(conanfile, hook_manager)
|
|
97
104
|
|
|
98
105
|
def build(self, conanfile):
|
|
99
106
|
""" calls the 'build()' method of the current (user folder) conanfile.py
|
|
100
107
|
"""
|
|
101
|
-
|
|
108
|
+
hook_manager = HookManager(HomePaths(self._conan_api.home_folder).hooks_path)
|
|
102
109
|
conanfile.folders.set_base_package(conanfile.folders.base_build)
|
|
103
110
|
conanfile.folders.set_base_pkg_metadata(os.path.join(conanfile.build_folder, "metadata"))
|
|
104
|
-
run_build_method(conanfile,
|
|
111
|
+
run_build_method(conanfile, hook_manager)
|
|
105
112
|
|
|
106
113
|
@staticmethod
|
|
107
114
|
def test(conanfile):
|
|
@@ -117,4 +124,3 @@ class LocalAPI:
|
|
|
117
124
|
conanfile = app.loader.load_named(conanfile_path, name=name, version=version, user=user,
|
|
118
125
|
channel=channel, remotes=remotes, graph_lock=lockfile)
|
|
119
126
|
return conanfile
|
|
120
|
-
|
|
@@ -5,7 +5,7 @@ from jinja2 import Template, StrictUndefined, UndefinedError, Environment, meta
|
|
|
5
5
|
|
|
6
6
|
from conan.errors import ConanException
|
|
7
7
|
from conans.util.files import load
|
|
8
|
-
from
|
|
8
|
+
from conan import __version__
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class NewAPI:
|
|
@@ -93,9 +93,11 @@ class NewAPI:
|
|
|
93
93
|
@staticmethod
|
|
94
94
|
def render(template_files, definitions):
|
|
95
95
|
result = {}
|
|
96
|
-
name = definitions.get("name", "
|
|
96
|
+
name = definitions.get("name", "pkg")
|
|
97
97
|
if isinstance(name, list):
|
|
98
98
|
raise ConanException(f"name argument can't be multiple: {name}")
|
|
99
|
+
if name != name.lower():
|
|
100
|
+
raise ConanException(f"name argument must be lowercase: {name}")
|
|
99
101
|
definitions["conan_version"] = __version__
|
|
100
102
|
|
|
101
103
|
def ensure_list(key):
|
|
@@ -237,7 +237,7 @@ class RemotesAPI:
|
|
|
237
237
|
username = None
|
|
238
238
|
localdb.store(username, token=None, refresh_token=None, remote_url=remote.url)
|
|
239
239
|
|
|
240
|
-
def user_auth(self, remote: Remote, with_user=False):
|
|
240
|
+
def user_auth(self, remote: Remote, with_user=False, force=False):
|
|
241
241
|
# TODO: Review
|
|
242
242
|
app = ConanApp(self.conan_api)
|
|
243
243
|
if with_user:
|
|
@@ -247,7 +247,7 @@ class RemotesAPI:
|
|
|
247
247
|
user = os.getenv(var_name, None) or os.getenv("CONAN_LOGIN_USERNAME", None)
|
|
248
248
|
if not user:
|
|
249
249
|
return
|
|
250
|
-
app.remote_manager.check_credentials(remote)
|
|
250
|
+
app.remote_manager.check_credentials(remote, force)
|
|
251
251
|
user, token, _ = app.localdb.get_login(remote.url)
|
|
252
252
|
return user
|
|
253
253
|
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import shutil
|
|
3
|
+
|
|
4
|
+
from conan.cli import make_abs_path
|
|
5
|
+
from conan.internal.conan_app import ConanApp
|
|
6
|
+
from conan.internal.workspace import Workspace
|
|
7
|
+
from conan.tools.scm import Git
|
|
8
|
+
from conan.errors import ConanException
|
|
9
|
+
from conans.client.graph.graph import RECIPE_EDITABLE
|
|
10
|
+
from conans.client.source import retrieve_exports_sources
|
|
11
|
+
from conans.model.recipe_ref import RecipeReference
|
|
12
|
+
from conans.util.files import merge_directories
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class WorkspaceAPI:
|
|
16
|
+
|
|
17
|
+
def __init__(self, conan_api):
|
|
18
|
+
self._conan_api = conan_api
|
|
19
|
+
self._workspace = Workspace()
|
|
20
|
+
|
|
21
|
+
def home_folder(self):
|
|
22
|
+
return self._workspace.home_folder()
|
|
23
|
+
|
|
24
|
+
def folder(self):
|
|
25
|
+
return self._workspace.folder
|
|
26
|
+
|
|
27
|
+
def config_folder(self):
|
|
28
|
+
return self._workspace.config_folder()
|
|
29
|
+
|
|
30
|
+
def editables(self):
|
|
31
|
+
return self._workspace.editables()
|
|
32
|
+
|
|
33
|
+
def open(self, require, remotes, cwd=None):
|
|
34
|
+
app = ConanApp(self._conan_api)
|
|
35
|
+
ref = RecipeReference.loads(require)
|
|
36
|
+
recipe = app.proxy.get_recipe(ref, remotes, update=False, check_update=False)
|
|
37
|
+
|
|
38
|
+
layout, recipe_status, remote = recipe
|
|
39
|
+
if recipe_status == RECIPE_EDITABLE:
|
|
40
|
+
raise ConanException(f"Can't open a dependency that is already an editable: {ref}")
|
|
41
|
+
ref = layout.reference
|
|
42
|
+
conanfile_path = layout.conanfile()
|
|
43
|
+
conanfile, module = app.loader.load_basic_module(conanfile_path, remotes=remotes)
|
|
44
|
+
|
|
45
|
+
scm = conanfile.conan_data.get("scm") if conanfile.conan_data else None
|
|
46
|
+
dst_path = os.path.join(cwd or os.getcwd(), ref.name)
|
|
47
|
+
if scm is None:
|
|
48
|
+
conanfile.output.warning("conandata doesn't contain 'scm' information\n"
|
|
49
|
+
"doing a local copy!!!")
|
|
50
|
+
shutil.copytree(layout.export(), dst_path)
|
|
51
|
+
retrieve_exports_sources(app.remote_manager, layout, conanfile, ref, remotes)
|
|
52
|
+
export_sources = layout.export_sources()
|
|
53
|
+
if os.path.exists(export_sources):
|
|
54
|
+
conanfile.output.warning("There are export-sources, copying them, but the location"
|
|
55
|
+
" might be incorrect, use 'scm' approach")
|
|
56
|
+
merge_directories(export_sources, dst_path)
|
|
57
|
+
else:
|
|
58
|
+
git = Git(conanfile, folder=cwd)
|
|
59
|
+
git.clone(url=scm["url"], target=ref.name)
|
|
60
|
+
git.folder = ref.name # change to the cloned folder
|
|
61
|
+
git.checkout(commit=scm["commit"])
|
|
62
|
+
return dst_path
|
|
63
|
+
|
|
64
|
+
def add(self, path, name=None, version=None, user=None, channel=None, cwd=None,
|
|
65
|
+
output_folder=None, remotes=None):
|
|
66
|
+
path = self._conan_api.local.get_conanfile_path(path, cwd, py=True)
|
|
67
|
+
app = ConanApp(self._conan_api)
|
|
68
|
+
conanfile = app.loader.load_named(path, name, version, user, channel, remotes=remotes)
|
|
69
|
+
if conanfile.name is None or conanfile.version is None:
|
|
70
|
+
raise ConanException("Editable package recipe should declare its name and version")
|
|
71
|
+
ref = RecipeReference(conanfile.name, conanfile.version, conanfile.user, conanfile.channel)
|
|
72
|
+
ref.validate_ref()
|
|
73
|
+
output_folder = make_abs_path(output_folder) if output_folder else None
|
|
74
|
+
# Check the conanfile is there, and name/version matches
|
|
75
|
+
self._workspace.add(ref, path, output_folder=output_folder)
|
|
76
|
+
return ref
|
|
77
|
+
|
|
78
|
+
def remove(self, path):
|
|
79
|
+
return self._workspace.remove(path)
|
|
80
|
+
|
|
81
|
+
def info(self):
|
|
82
|
+
return self._workspace.serialize()
|
|
@@ -16,7 +16,7 @@ from conan.cli.command import ConanSubCommand
|
|
|
16
16
|
from conan.cli.exit_codes import SUCCESS, ERROR_MIGRATION, ERROR_GENERAL, USER_CTRL_C, \
|
|
17
17
|
ERROR_SIGTERM, USER_CTRL_BREAK, ERROR_INVALID_CONFIGURATION, ERROR_UNEXPECTED
|
|
18
18
|
from conan.internal.cache.home_paths import HomePaths
|
|
19
|
-
from
|
|
19
|
+
from conan import __version__
|
|
20
20
|
from conan.errors import ConanException, ConanInvalidConfiguration, ConanMigrationError
|
|
21
21
|
|
|
22
22
|
_CONAN_INTERNAL_CUSTOM_COMMANDS_PATH = "_CONAN_INTERNAL_CUSTOM_COMMANDS_PATH"
|
|
@@ -176,7 +176,7 @@ class Cli:
|
|
|
176
176
|
command = self._commands[command_argument]
|
|
177
177
|
except KeyError as exc:
|
|
178
178
|
if command_argument in ["-v", "--version"]:
|
|
179
|
-
cli_out_write("Conan version %s" %
|
|
179
|
+
cli_out_write("Conan version %s" % __version__)
|
|
180
180
|
return
|
|
181
181
|
|
|
182
182
|
if command_argument in ["-h", "--help"]:
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import argparse
|
|
2
|
-
import os
|
|
3
2
|
import textwrap
|
|
4
3
|
|
|
5
4
|
from conan.api.output import ConanOutput
|
|
@@ -98,13 +97,15 @@ class BaseConanCommand:
|
|
|
98
97
|
|
|
99
98
|
formatter(info)
|
|
100
99
|
|
|
101
|
-
|
|
100
|
+
@staticmethod
|
|
101
|
+
def _dispatch_errors(info):
|
|
102
102
|
if info and isinstance(info, dict):
|
|
103
103
|
if info.get("conan_error"):
|
|
104
104
|
raise ConanException(info["conan_error"])
|
|
105
105
|
if info.get("conan_warning"):
|
|
106
106
|
ConanOutput().warning(info["conan_warning"])
|
|
107
107
|
|
|
108
|
+
|
|
108
109
|
class ConanArgumentParser(argparse.ArgumentParser):
|
|
109
110
|
|
|
110
111
|
def __init__(self, conan_api, *args, **kwargs):
|
|
@@ -113,9 +114,10 @@ class ConanArgumentParser(argparse.ArgumentParser):
|
|
|
113
114
|
|
|
114
115
|
def parse_args(self, args=None, namespace=None):
|
|
115
116
|
args = super().parse_args(args)
|
|
116
|
-
ConanOutput.define_log_level(
|
|
117
|
+
ConanOutput.define_log_level(args.v)
|
|
117
118
|
if getattr(args, "lockfile_packages", None):
|
|
118
119
|
ConanOutput().error("The --lockfile-packages arg is private and shouldn't be used")
|
|
120
|
+
global_conf = self._conan_api.config.global_conf
|
|
119
121
|
if args.core_conf:
|
|
120
122
|
from conans.model.conf import ConfDefinition
|
|
121
123
|
confs = ConfDefinition()
|
|
@@ -124,7 +126,14 @@ class ConanArgumentParser(argparse.ArgumentParser):
|
|
|
124
126
|
raise ConanException(f"Only core. values are allowed in --core-conf. Got {c}")
|
|
125
127
|
confs.loads("\n".join(args.core_conf))
|
|
126
128
|
confs.validate()
|
|
127
|
-
|
|
129
|
+
global_conf.update_conf_definition(confs)
|
|
130
|
+
|
|
131
|
+
# TODO: This might be even better moved to the ConanAPI so users without doing custom
|
|
132
|
+
# commands can benefit from it
|
|
133
|
+
ConanOutput.set_warnings_as_errors(global_conf.get("core:warnings_as_errors",
|
|
134
|
+
default=[], check_type=list))
|
|
135
|
+
ConanOutput.define_silence_warnings(global_conf.get("core:skip_warnings",
|
|
136
|
+
default=[], check_type=list))
|
|
128
137
|
return args
|
|
129
138
|
|
|
130
139
|
|
|
@@ -61,7 +61,6 @@ def build(conan_api, parser, *args):
|
|
|
61
61
|
print_graph_packages(deps_graph)
|
|
62
62
|
|
|
63
63
|
out = ConanOutput()
|
|
64
|
-
out.title("Installing packages")
|
|
65
64
|
conan_api.install.install_binaries(deps_graph=deps_graph, remotes=remotes)
|
|
66
65
|
|
|
67
66
|
out.title("Finalizing install (deploy, generators)")
|
|
@@ -73,14 +73,23 @@ def config_install_pkg(conan_api, parser, subparser, *args):
|
|
|
73
73
|
subparser.add_argument("--url", action=OnceArgument,
|
|
74
74
|
help="(Experimental) Provide Conan repository URL "
|
|
75
75
|
"(for first install without remotes)")
|
|
76
|
+
subparser.add_argument("-pr", "--profile", help="Profile to install config")
|
|
77
|
+
subparser.add_argument("-s", "--settings", action="append", help="Settings to install config")
|
|
78
|
+
subparser.add_argument("-o", "--options", action="append", help="Options to install config")
|
|
76
79
|
args = parser.parse_args(*args)
|
|
77
80
|
|
|
78
81
|
lockfile = conan_api.lockfile.get_lockfile(lockfile=args.lockfile,
|
|
79
82
|
partial=args.lockfile_partial)
|
|
80
83
|
|
|
84
|
+
try:
|
|
85
|
+
default_profile = args.profile or conan_api.profiles.get_default_build()
|
|
86
|
+
except ConanException: # it can fail if the default profile doesn't exist yet
|
|
87
|
+
default_profile = None
|
|
88
|
+
profiles = [default_profile] if default_profile else []
|
|
89
|
+
profile = conan_api.profiles.get_profile(profiles, args.settings, args.options)
|
|
81
90
|
remotes = [Remote("_tmp_conan_config", url=args.url)] if args.url else None
|
|
82
91
|
config_pref = conan_api.config.install_pkg(args.item, lockfile=lockfile, force=args.force,
|
|
83
|
-
remotes=remotes)
|
|
92
|
+
remotes=remotes, profile=profile)
|
|
84
93
|
lockfile = conan_api.lockfile.add_lockfile(lockfile, config_requires=[config_pref.ref])
|
|
85
94
|
conan_api.lockfile.save_lockfile(lockfile, args.lockfile_out)
|
|
86
95
|
|