conan-server 2.0.17__tar.gz → 2.2.0__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-server-2.0.17 → conan-server-2.2.0}/PKG-INFO +1 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/conan_api.py +2 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/model.py +37 -10
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/output.py +27 -4
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/cache.py +37 -13
- conan-server-2.2.0/conan/api/subapi/command.py +24 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/config.py +71 -4
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/download.py +43 -6
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/export.py +4 -3
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/graph.py +6 -6
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/install.py +25 -10
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/list.py +126 -45
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/local.py +12 -10
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/lockfile.py +6 -4
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/new.py +5 -2
- conan-server-2.2.0/conan/api/subapi/remotes.py +329 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/remove.py +3 -3
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/search.py +1 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/upload.py +47 -16
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/args.py +5 -7
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/cli.py +4 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/command.py +47 -6
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/build.py +3 -2
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/cache.py +15 -5
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/config.py +28 -2
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/create.py +12 -14
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/download.py +5 -36
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/export_pkg.py +4 -3
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/graph.py +171 -18
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/install.py +0 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/list.py +24 -6
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/lock.py +9 -2
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/new.py +1 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/remote.py +31 -13
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/test.py +7 -2
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/upload.py +5 -10
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/formatters/graph/graph.py +14 -10
- conan-server-2.2.0/conan/cli/formatters/graph/info_graph_html.py +316 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/printers/graph.py +11 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/detect_api.py +122 -3
- conan-server-2.2.0/conan/internal/api/new/local_recipes_index.py +113 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/new/msbuild_lib.py +1 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/cache/conan_reference_layout.py +23 -28
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/cache/home_paths.py +8 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/conan_app.py +6 -4
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/deploy.py +12 -5
- conan-server-2.2.0/conan/internal/internal_tools.py +24 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/apple/xcodebuild.py +0 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/apple/xcodetoolchain.py +1 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/build/__init__.py +1 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/build/cross_building.py +6 -2
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/build/flags.py +18 -5
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/cmake.py +22 -12
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/cmakedeps/templates/macros.py +1 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/cmakedeps/templates/target_configuration.py +37 -40
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/cmakedeps/templates/target_data.py +6 -6
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/cmakedeps/templates/targets.py +2 -4
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/layout.py +16 -2
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/presets.py +18 -8
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/toolchain/blocks.py +144 -20
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/toolchain/toolchain.py +52 -13
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/env/environment.py +22 -10
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/env/virtualbuildenv.py +12 -8
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/env/virtualrunenv.py +10 -6
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/files/conandata.py +7 -3
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/files/copy_pattern.py +24 -11
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/files/patches.py +6 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/gnu/autotoolstoolchain.py +23 -6
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/gnu/get_gnu_triplet.py +1 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/gnu/pkgconfigdeps.py +121 -123
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/google/toolchain.py +4 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/meson/helpers.py +1 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/meson/meson.py +11 -11
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/meson/toolchain.py +18 -11
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/microsoft/msbuilddeps.py +4 -3
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/microsoft/nmaketoolchain.py +1 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/microsoft/visual.py +46 -9
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/scm/git.py +67 -12
- {conan-server-2.0.17 → conan-server-2.2.0}/conan_server.egg-info/PKG-INFO +1 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conan_server.egg-info/SOURCES.txt +11 -3
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/__init__.py +1 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/cache/cache.py +3 -5
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/cmd/export.py +16 -18
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/cmd/uploader.py +6 -9
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/conanfile/configure.py +5 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/conf/__init__.py +4 -3
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/conf/config_installer.py +35 -73
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/conf/detect_vs.py +30 -37
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/downloaders/download_cache.py +37 -19
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/downloaders/file_downloader.py +8 -8
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/generators/__init__.py +19 -6
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/graph/build_mode.py +0 -4
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/graph/compatibility.py +3 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/graph/compute_pid.py +5 -3
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/graph/graph.py +4 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/graph/graph_binaries.py +94 -35
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/graph/graph_builder.py +73 -33
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/graph/graph_error.py +11 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/graph/install_graph.py +190 -10
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/graph/provides.py +7 -2
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/graph/proxy.py +34 -23
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/graph/python_requires.py +7 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/graph/range_resolver.py +9 -4
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/installer.py +13 -15
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/loader.py +31 -8
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/remote_manager.py +27 -6
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/rest/auth_manager.py +1 -4
- conan-server-2.2.0/conans/client/rest_client_local_recipe_index.py +228 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/store/localdb.py +17 -24
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/errors.py +1 -9
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/conan_file.py +2 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/conf.py +24 -15
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/graph_lock.py +16 -2
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/info.py +47 -5
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/options.py +18 -5
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/pkg_type.py +1 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/requires.py +12 -7
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/settings.py +14 -8
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/version_range.py +1 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/bottle_plugins/return_handler.py +0 -2
- conan-server-2.2.0/conans/test/assets/__init__.py +16 -0
- conan-server-2.2.0/conans/test/assets/autotools.py +68 -0
- conan-server-2.2.0/conans/test/assets/cmake.py +107 -0
- conan-server-2.2.0/conans/test/assets/genconanfile.py +482 -0
- conan-server-2.2.0/conans/test/assets/pkg_cmake.py +156 -0
- conan-server-2.2.0/conans/test/assets/sources.py +265 -0
- conan-server-2.2.0/conans/test/assets/visual_project_files.py +289 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/test/conftest.py +5 -4
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/test/utils/mocks.py +5 -4
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/test/utils/profiles.py +0 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/test/utils/test_files.py +5 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/test/utils/tools.py +14 -9
- conan-server-2.2.0/conans/util/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/util/dates.py +1 -1
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/util/files.py +4 -2
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/util/runners.py +2 -2
- {conan-server-2.0.17 → conan-server-2.2.0}/setup.py +2 -1
- conan-server-2.0.17/conan/api/subapi/remotes.py +0 -110
- conan-server-2.0.17/conan/cli/formatters/graph/info_graph_html.py +0 -194
- conan-server-2.0.17/conans/client/cache/remote_registry.py +0 -186
- conan-server-2.0.17/conans/client/cmd/user.py +0 -32
- conan-server-2.0.17/conans/pylint_plugin.py +0 -85
- conan-server-2.0.17/conans/test/__init__.py +0 -7
- {conan-server-2.0.17 → conan-server-2.2.0}/LICENSE.md +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/MANIFEST.in +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/README.md +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/api/subapi/profiles.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/editable.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/export.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/inspect.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/profile.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/remove.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/search.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/source.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/commands/version.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/exit_codes.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/formatters/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/formatters/graph/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/formatters/graph/graph_info_text.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/formatters/graph/info_graph_dot.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/formatters/list/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/formatters/list/binary_html_table.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/formatters/list/list.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/formatters/list/search_table_html.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/cli/printers/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/errors.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/new/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/new/alias_new.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/new/autoools_exe.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/new/autotools_lib.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/new/basic.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/new/bazel_exe.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/new/bazel_lib.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/new/cmake_exe.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/new/cmake_lib.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/new/meson_exe.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/new/meson_lib.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/api/new/msbuild_exe.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/cache/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/cache/cache.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/cache/db/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/cache/db/cache_database.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/cache/db/packages_table.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/cache/db/recipes_table.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/cache/db/table.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/integrity_check.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/internal/upload_metadata.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/android/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/android/utils.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/apple/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/apple/apple.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/apple/xcodedeps.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/build/cppstd.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/build/cpu.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/build/stdcpp_library.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/cmakedeps/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/cmakedeps/cmakedeps.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/cmakedeps/templates/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/cmakedeps/templates/config.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/cmakedeps/templates/config_version.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/toolchain/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/cmake/utils.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/env/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/files/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/files/files.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/files/packager.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/files/symlinks/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/files/symlinks/symlinks.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/gnu/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/gnu/autotools.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/gnu/autotoolsdeps.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/gnu/gnudeps_flags.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/gnu/makedeps.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/gnu/pkgconfig.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/google/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/google/bazel.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/google/bazeldeps.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/google/layout.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/intel/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/intel/intel_cc.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/layout/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/meson/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/microsoft/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/microsoft/layout.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/microsoft/msbuild.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/microsoft/nmakedeps.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/microsoft/subsystems.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/microsoft/toolchain.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/premake/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/premake/premake.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/premake/premakedeps.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/qbs/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/qbs/qbs.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/qbs/qbsprofile.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/scm/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/scons/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/scons/sconsdeps.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/system/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan/tools/system/package_manager.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan_server.egg-info/dependency_links.txt +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan_server.egg-info/entry_points.txt +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan_server.egg-info/requires.txt +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conan_server.egg-info/top_level.txt +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/cache/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/cache/editable.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/cmd/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/conanfile/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/conanfile/build.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/conanfile/implementations.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/conanfile/package.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/conf/detect.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/conf/required_version.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/downloaders/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/downloaders/caching_file_downloader.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/graph/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/graph/profile_node_definer.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/hook_manager.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/loader_txt.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/migrations.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/pkg_sign.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/profile_loader.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/rest/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/rest/client_routes.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/rest/conan_requester.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/rest/file_uploader.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/rest/remote_credentials.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/rest/rest_client.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/rest/rest_client_common.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/rest/rest_client_v2.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/source.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/store/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/subsystems.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/client/userio.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/conan.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/conan_server.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/migrations.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/build_info.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/conanfile_interface.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/dependencies.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/layout.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/manifest.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/package_ref.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/profile.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/recipe_ref.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/rest_routes.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/model/version.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/paths/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/requirements.txt +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/requirements_dev.txt +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/requirements_server.txt +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/search/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/search/query_parse.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/search/search.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/conf/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/conf/default_server_conf.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/crypto/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/crypto/jwt/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/crypto/jwt/jwt_credentials_manager.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/crypto/jwt/jwt_manager.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/launcher.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/migrate.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/migrations.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/plugin_loader.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/api_v2.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/bottle_plugins/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/bottle_plugins/authorization_header.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/bottle_plugins/http_basic_authentication.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/bottle_plugins/jwt_authentication.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/bottle_routes.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/controller/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/controller/v2/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/controller/v2/conan.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/controller/v2/delete.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/controller/v2/ping.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/controller/v2/revisions.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/controller/v2/search.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/controller/v2/users.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/rest/server.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/revision_list.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/server_launcher.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/service/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/service/authorize.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/service/mime.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/service/user_service.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/service/v2/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/service/v2/search.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/service/v2/service_v2.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/store/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/store/disk_adapter.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/store/server_store.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/utils/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/server/utils/files.py +0 -0
- {conan-server-2.0.17/conans/test/utils → conan-server-2.2.0/conans/test}/__init__.py +0 -0
- {conan-server-2.0.17/conans/util → conan-server-2.2.0/conans/test/utils}/__init__.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/test/utils/artifactory.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/test/utils/file_server.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/test/utils/scm.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/test/utils/server_launcher.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/util/config_parser.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/util/encrypt.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/util/env.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/util/locks.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/util/sha.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/util/thread.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/conans/util/windows.py +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/pyproject.toml +0 -0
- {conan-server-2.0.17 → conan-server-2.2.0}/setup.cfg +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import sys
|
|
2
2
|
|
|
3
3
|
from conan.api.subapi.cache import CacheAPI
|
|
4
|
+
from conan.api.subapi.command import CommandAPI
|
|
4
5
|
from conan.api.subapi.local import LocalAPI
|
|
5
6
|
from conan.api.subapi.lockfile import LockfileAPI
|
|
6
7
|
from conans import __version__ as client_version
|
|
@@ -39,6 +40,7 @@ class ConanAPI(object):
|
|
|
39
40
|
migrator = ClientMigrator(self.cache_folder, Version(client_version))
|
|
40
41
|
migrator.migrate()
|
|
41
42
|
|
|
43
|
+
self.command = CommandAPI(self)
|
|
42
44
|
self.remotes = RemotesAPI(self)
|
|
43
45
|
# Search recipes by wildcard and packages filtering by configuracion
|
|
44
46
|
self.search = SearchAPI(self)
|
|
@@ -3,24 +3,25 @@ import json
|
|
|
3
3
|
|
|
4
4
|
from conans.client.graph.graph import RECIPE_EDITABLE, RECIPE_CONSUMER, RECIPE_PLATFORM, \
|
|
5
5
|
RECIPE_VIRTUAL, BINARY_SKIP, BINARY_MISSING, BINARY_INVALID
|
|
6
|
-
from conans.errors import ConanException
|
|
6
|
+
from conans.errors import ConanException, NotFoundException
|
|
7
7
|
from conans.model.package_ref import PkgReference
|
|
8
8
|
from conans.model.recipe_ref import RecipeReference
|
|
9
9
|
from conans.util.files import load
|
|
10
10
|
from conans.model.version_range import VersionRange
|
|
11
11
|
|
|
12
|
+
LOCAL_RECIPES_INDEX = "local-recipes-index"
|
|
13
|
+
|
|
12
14
|
|
|
13
15
|
class Remote:
|
|
14
16
|
|
|
15
|
-
def __init__(self, name, url, verify_ssl=True, disabled=False
|
|
16
|
-
|
|
17
|
+
def __init__(self, name, url, verify_ssl=True, disabled=False, allowed_packages=None,
|
|
18
|
+
remote_type=None):
|
|
19
|
+
self.name = name # Read only, is the key
|
|
17
20
|
self.url = url
|
|
18
21
|
self.verify_ssl = verify_ssl
|
|
19
22
|
self.disabled = disabled
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def name(self):
|
|
23
|
-
return self._name
|
|
23
|
+
self.allowed_packages = allowed_packages
|
|
24
|
+
self.remote_type = remote_type
|
|
24
25
|
|
|
25
26
|
def __eq__(self, other):
|
|
26
27
|
if other is None:
|
|
@@ -29,8 +30,14 @@ class Remote:
|
|
|
29
30
|
self.verify_ssl == other.verify_ssl and self.disabled == other.disabled)
|
|
30
31
|
|
|
31
32
|
def __str__(self):
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
allowed_msg = ""
|
|
34
|
+
if self.allowed_packages:
|
|
35
|
+
allowed_msg = ", Allowed packages: {}".format(", ".join(self.allowed_packages))
|
|
36
|
+
if self.remote_type == LOCAL_RECIPES_INDEX:
|
|
37
|
+
return "{}: {} [{}, Enabled: {}{}]".format(self.name, self.url, LOCAL_RECIPES_INDEX,
|
|
38
|
+
not self.disabled, allowed_msg)
|
|
39
|
+
return "{}: {} [Verify SSL: {}, Enabled: {}{}]".format(self.name, self.url, self.verify_ssl,
|
|
40
|
+
not self.disabled, allowed_msg)
|
|
34
41
|
|
|
35
42
|
def __repr__(self):
|
|
36
43
|
return str(self)
|
|
@@ -128,6 +135,7 @@ class MultiPackagesList:
|
|
|
128
135
|
if any(b == "*" or b == binary for b in binaries):
|
|
129
136
|
cache_list.add_refs([ref]) # Binary listed forces recipe listed
|
|
130
137
|
cache_list.add_prefs(ref, [pref])
|
|
138
|
+
cache_list.add_configurations({pref: node["info"]})
|
|
131
139
|
return pkglist
|
|
132
140
|
|
|
133
141
|
|
|
@@ -135,6 +143,25 @@ class PackagesList:
|
|
|
135
143
|
def __init__(self):
|
|
136
144
|
self.recipes = {}
|
|
137
145
|
|
|
146
|
+
def split(self):
|
|
147
|
+
"""
|
|
148
|
+
Returns a list of PackageList, splitted one per reference.
|
|
149
|
+
This can be useful to parallelize things like upload, parallelizing per-reference
|
|
150
|
+
"""
|
|
151
|
+
result = []
|
|
152
|
+
for r, content in self.recipes.items():
|
|
153
|
+
subpkglist = PackagesList()
|
|
154
|
+
subpkglist.recipes[r] = content
|
|
155
|
+
result.append(subpkglist)
|
|
156
|
+
return result
|
|
157
|
+
|
|
158
|
+
def only_recipes(self):
|
|
159
|
+
result = {}
|
|
160
|
+
for ref, ref_dict in self.recipes.items():
|
|
161
|
+
for rrev_dict in ref_dict.get("revisions", {}).values():
|
|
162
|
+
rrev_dict.pop("packages", None)
|
|
163
|
+
return result
|
|
164
|
+
|
|
138
165
|
def add_refs(self, refs):
|
|
139
166
|
# RREVS alreday come in ASCENDING order, so upload does older revisions first
|
|
140
167
|
for ref in refs:
|
|
@@ -258,7 +285,7 @@ class ListPattern:
|
|
|
258
285
|
|
|
259
286
|
def check_refs(self, refs):
|
|
260
287
|
if not refs and self.ref and "*" not in self.ref:
|
|
261
|
-
raise
|
|
288
|
+
raise NotFoundException(f"Recipe '{self.ref}' not found")
|
|
262
289
|
|
|
263
290
|
def filter_rrevs(self, rrevs):
|
|
264
291
|
if self._only_latest(self.rrev):
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import fnmatch
|
|
2
2
|
import sys
|
|
3
|
+
import time
|
|
4
|
+
from threading import Lock
|
|
3
5
|
|
|
4
6
|
from colorama import Fore, Style
|
|
5
7
|
|
|
@@ -53,6 +55,7 @@ class ConanOutput:
|
|
|
53
55
|
_conan_output_level = LEVEL_STATUS
|
|
54
56
|
_silent_warn_tags = []
|
|
55
57
|
_warnings_as_errors = []
|
|
58
|
+
lock = Lock()
|
|
56
59
|
|
|
57
60
|
def __init__(self, scope=""):
|
|
58
61
|
self.stream = sys.stderr
|
|
@@ -126,8 +129,11 @@ class ConanOutput:
|
|
|
126
129
|
|
|
127
130
|
if newline:
|
|
128
131
|
data = "%s\n" % data
|
|
129
|
-
|
|
130
|
-
self.
|
|
132
|
+
|
|
133
|
+
with self.lock:
|
|
134
|
+
self.stream.write(data)
|
|
135
|
+
self.stream.flush()
|
|
136
|
+
|
|
131
137
|
return self
|
|
132
138
|
|
|
133
139
|
def rewrite_line(self, line):
|
|
@@ -161,8 +167,9 @@ class ConanOutput:
|
|
|
161
167
|
else:
|
|
162
168
|
ret += "{}".format(msg)
|
|
163
169
|
|
|
164
|
-
self.
|
|
165
|
-
|
|
170
|
+
with self.lock:
|
|
171
|
+
self.stream.write("{}\n".format(ret))
|
|
172
|
+
self.stream.flush()
|
|
166
173
|
|
|
167
174
|
def trace(self, msg):
|
|
168
175
|
if self._conan_output_level <= LEVEL_TRACE:
|
|
@@ -252,3 +259,19 @@ def cli_out_write(data, fg=None, bg=None, endline="\n", indentation=0):
|
|
|
252
259
|
data = f"{' ' * indentation}{data}{endline}"
|
|
253
260
|
|
|
254
261
|
sys.stdout.write(data)
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
class TimedOutput:
|
|
265
|
+
def __init__(self, interval, out=None, msg_format=None):
|
|
266
|
+
self._interval = interval
|
|
267
|
+
self._msg_format = msg_format
|
|
268
|
+
self._t = time.time()
|
|
269
|
+
self._out = out or ConanOutput()
|
|
270
|
+
|
|
271
|
+
def info(self, msg, *args, **kwargs):
|
|
272
|
+
t = time.time()
|
|
273
|
+
if t - self._t > self._interval:
|
|
274
|
+
self._t = t
|
|
275
|
+
if self._msg_format:
|
|
276
|
+
msg = self._msg_format(msg, *args, **kwargs)
|
|
277
|
+
self._out.info(msg)
|
|
@@ -6,14 +6,16 @@ from io import BytesIO
|
|
|
6
6
|
|
|
7
7
|
from conan.api.model import PackagesList
|
|
8
8
|
from conan.api.output import ConanOutput
|
|
9
|
+
from conan.internal.cache.home_paths import HomePaths
|
|
9
10
|
from conan.internal.conan_app import ConanApp
|
|
10
11
|
from conan.internal.integrity_check import IntegrityChecker
|
|
11
12
|
from conans.client.cache.cache import ClientCache
|
|
13
|
+
from conans.client.downloaders.download_cache import DownloadCache
|
|
12
14
|
from conans.errors import ConanException
|
|
13
15
|
from conans.model.package_ref import PkgReference
|
|
14
16
|
from conans.model.recipe_ref import RecipeReference
|
|
15
17
|
from conans.util.dates import revision_timestamp_now
|
|
16
|
-
from conans.util.files import rmdir, gzopen_without_timestamps, mkdir
|
|
18
|
+
from conans.util.files import rmdir, gzopen_without_timestamps, mkdir, remove
|
|
17
19
|
|
|
18
20
|
|
|
19
21
|
class CacheAPI:
|
|
@@ -22,66 +24,68 @@ class CacheAPI:
|
|
|
22
24
|
self.conan_api = conan_api
|
|
23
25
|
|
|
24
26
|
def export_path(self, ref: RecipeReference):
|
|
25
|
-
app = ConanApp(self.conan_api
|
|
27
|
+
app = ConanApp(self.conan_api)
|
|
26
28
|
ref.revision = None if ref.revision == "latest" else ref.revision
|
|
27
29
|
ref_layout = app.cache.recipe_layout(ref)
|
|
28
30
|
return _check_folder_existence(ref, "export", ref_layout.export())
|
|
29
31
|
|
|
30
32
|
def recipe_metadata_path(self, ref: RecipeReference):
|
|
31
|
-
app = ConanApp(self.conan_api
|
|
33
|
+
app = ConanApp(self.conan_api)
|
|
32
34
|
ref = _resolve_latest_ref(app, ref)
|
|
33
35
|
ref_layout = app.cache.recipe_layout(ref)
|
|
34
36
|
return _check_folder_existence(ref, "metadata", ref_layout.metadata())
|
|
35
37
|
|
|
36
38
|
def export_source_path(self, ref: RecipeReference):
|
|
37
|
-
app = ConanApp(self.conan_api
|
|
39
|
+
app = ConanApp(self.conan_api)
|
|
38
40
|
ref.revision = None if ref.revision == "latest" else ref.revision
|
|
39
41
|
ref_layout = app.cache.recipe_layout(ref)
|
|
40
42
|
return _check_folder_existence(ref, "export_sources", ref_layout.export_sources())
|
|
41
43
|
|
|
42
44
|
def source_path(self, ref: RecipeReference):
|
|
43
|
-
app = ConanApp(self.conan_api
|
|
45
|
+
app = ConanApp(self.conan_api)
|
|
44
46
|
ref.revision = None if ref.revision == "latest" else ref.revision
|
|
45
47
|
ref_layout = app.cache.recipe_layout(ref)
|
|
46
48
|
return _check_folder_existence(ref, "source", ref_layout.source())
|
|
47
49
|
|
|
48
50
|
def build_path(self, pref: PkgReference):
|
|
49
|
-
app = ConanApp(self.conan_api
|
|
51
|
+
app = ConanApp(self.conan_api)
|
|
50
52
|
pref = _resolve_latest_pref(app, pref)
|
|
51
53
|
ref_layout = app.cache.pkg_layout(pref)
|
|
52
54
|
return _check_folder_existence(pref, "build", ref_layout.build())
|
|
53
55
|
|
|
54
56
|
def package_metadata_path(self, pref: PkgReference):
|
|
55
|
-
app = ConanApp(self.conan_api
|
|
57
|
+
app = ConanApp(self.conan_api)
|
|
56
58
|
pref = _resolve_latest_pref(app, pref)
|
|
57
59
|
ref_layout = app.cache.pkg_layout(pref)
|
|
58
60
|
return _check_folder_existence(pref, "metadata", ref_layout.metadata())
|
|
59
61
|
|
|
60
62
|
def package_path(self, pref: PkgReference):
|
|
61
|
-
app = ConanApp(self.conan_api
|
|
63
|
+
app = ConanApp(self.conan_api)
|
|
62
64
|
pref = _resolve_latest_pref(app, pref)
|
|
63
65
|
ref_layout = app.cache.pkg_layout(pref)
|
|
64
66
|
return _check_folder_existence(pref, "package", ref_layout.package())
|
|
65
67
|
|
|
66
68
|
def check_integrity(self, package_list):
|
|
67
69
|
"""Check if the recipes and packages are corrupted (it will raise a ConanExcepcion)"""
|
|
68
|
-
app = ConanApp(self.conan_api
|
|
70
|
+
app = ConanApp(self.conan_api)
|
|
69
71
|
checker = IntegrityChecker(app)
|
|
70
72
|
checker.check(package_list)
|
|
71
73
|
|
|
72
|
-
def clean(self, package_list, source=True, build=True, download=True, temp=True
|
|
74
|
+
def clean(self, package_list, source=True, build=True, download=True, temp=True,
|
|
75
|
+
backup_sources=False):
|
|
73
76
|
"""
|
|
74
77
|
Remove non critical folders from the cache, like source, build and download (.tgz store)
|
|
75
78
|
folders.
|
|
76
79
|
:param package_list: the package lists that should be cleaned
|
|
77
80
|
:param source: boolean, remove the "source" folder if True
|
|
78
81
|
:param build: boolean, remove the "build" folder if True
|
|
79
|
-
:param download:
|
|
82
|
+
:param download: boolean, remove the "download (.tgz)" folder if True
|
|
80
83
|
:param temp: boolean, remove the temporary folders
|
|
84
|
+
:param backup_sources: boolean, remove the "source" folder if True
|
|
81
85
|
:return:
|
|
82
86
|
"""
|
|
83
87
|
|
|
84
|
-
app = ConanApp(self.conan_api
|
|
88
|
+
app = ConanApp(self.conan_api)
|
|
85
89
|
if temp:
|
|
86
90
|
rmdir(app.cache.temp_folder)
|
|
87
91
|
# Clean those build folders that didn't succeed to create a package and wont be in DB
|
|
@@ -93,6 +97,10 @@ class CacheAPI:
|
|
|
93
97
|
info = os.path.join(folder, "p", "conaninfo.txt")
|
|
94
98
|
if not os.path.exists(manifest) or not os.path.exists(info):
|
|
95
99
|
rmdir(folder)
|
|
100
|
+
if backup_sources:
|
|
101
|
+
backup_files = self.conan_api.cache.get_backup_sources(package_list, exclude=False, only_upload=False)
|
|
102
|
+
for f in backup_files:
|
|
103
|
+
remove(f)
|
|
96
104
|
|
|
97
105
|
for ref, ref_bundle in package_list.refs().items():
|
|
98
106
|
ref_layout = app.cache.recipe_layout(ref)
|
|
@@ -111,7 +119,7 @@ class CacheAPI:
|
|
|
111
119
|
|
|
112
120
|
def save(self, package_list, tgz_path):
|
|
113
121
|
cache_folder = self.conan_api.cache_folder
|
|
114
|
-
app = ConanApp(
|
|
122
|
+
app = ConanApp(self.conan_api)
|
|
115
123
|
out = ConanOutput()
|
|
116
124
|
mkdir(os.path.dirname(tgz_path))
|
|
117
125
|
name = os.path.basename(tgz_path)
|
|
@@ -183,6 +191,22 @@ class CacheAPI:
|
|
|
183
191
|
|
|
184
192
|
return package_list
|
|
185
193
|
|
|
194
|
+
def get_backup_sources(self, package_list=None, exclude=True, only_upload=True):
|
|
195
|
+
"""Get list of backup source files currently present in the cache,
|
|
196
|
+
either all of them if no argument, or filtered by those belonging to the references in the package_list
|
|
197
|
+
|
|
198
|
+
@param package_list: a PackagesList object to filter backup files from (The files should have been downloaded form any of the references in the package_list)
|
|
199
|
+
@param exclude: if True, exclude the sources that come from URLs present the core.sources:exclude_urls global conf
|
|
200
|
+
@param only_upload: if True, only return the files for packages that are set to be uploaded
|
|
201
|
+
"""
|
|
202
|
+
config = self.conan_api.config.global_conf
|
|
203
|
+
download_cache_path = config.get("core.sources:download_cache")
|
|
204
|
+
download_cache_path = download_cache_path or HomePaths(
|
|
205
|
+
self.conan_api.cache_folder).default_sources_backup_folder
|
|
206
|
+
excluded_urls = config.get("core.sources:exclude_urls", check_type=list, default=[]) if exclude else []
|
|
207
|
+
download_cache = DownloadCache(download_cache_path)
|
|
208
|
+
return download_cache.get_backup_sources_files(excluded_urls, package_list, only_upload)
|
|
209
|
+
|
|
186
210
|
|
|
187
211
|
def _resolve_latest_ref(app, ref):
|
|
188
212
|
if ref.revision is None or ref.revision == "latest":
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from conans.errors import ConanException
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class CommandAPI:
|
|
5
|
+
|
|
6
|
+
def __init__(self, conan_api):
|
|
7
|
+
self.conan_api = conan_api
|
|
8
|
+
self.cli = None
|
|
9
|
+
|
|
10
|
+
def run(self, cmd):
|
|
11
|
+
if isinstance(cmd, str):
|
|
12
|
+
cmd = cmd.split()
|
|
13
|
+
if isinstance(cmd, list):
|
|
14
|
+
current_cmd = cmd[0]
|
|
15
|
+
args = cmd[1:]
|
|
16
|
+
else:
|
|
17
|
+
raise ConanException("Input of conan_api.command.run() should be a list or a string")
|
|
18
|
+
commands = getattr(self.cli, "_commands") # to no make it public to users of Cli class
|
|
19
|
+
try:
|
|
20
|
+
command = commands[current_cmd]
|
|
21
|
+
except KeyError:
|
|
22
|
+
raise ConanException(f"Command {current_cmd} does not exist")
|
|
23
|
+
|
|
24
|
+
return command.run_cli(self.conan_api, args)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import json
|
|
1
2
|
import os
|
|
2
3
|
import platform
|
|
3
4
|
import textwrap
|
|
@@ -5,12 +6,18 @@ import yaml
|
|
|
5
6
|
from jinja2 import Environment, FileSystemLoader
|
|
6
7
|
|
|
7
8
|
from conan import conan_version
|
|
9
|
+
from conan.api.output import ConanOutput
|
|
8
10
|
from conans.client.conf import default_settings_yml
|
|
9
11
|
from conan.internal.api import detect_api
|
|
10
12
|
from conan.internal.cache.home_paths import HomePaths
|
|
11
13
|
from conan.internal.conan_app import ConanApp
|
|
14
|
+
from conans.client.graph.graph import CONTEXT_HOST, RECIPE_VIRTUAL, Node
|
|
15
|
+
from conans.client.graph.graph_builder import DepsGraphBuilder
|
|
16
|
+
from conans.client.graph.profile_node_definer import consumer_definer
|
|
12
17
|
from conans.errors import ConanException
|
|
13
18
|
from conans.model.conf import ConfDefinition, BUILT_IN_CONFS
|
|
19
|
+
from conans.model.pkg_type import PackageType
|
|
20
|
+
from conans.model.recipe_ref import RecipeReference
|
|
14
21
|
from conans.model.settings import Settings
|
|
15
22
|
from conans.util.files import load, save
|
|
16
23
|
|
|
@@ -28,10 +35,69 @@ class ConfigAPI:
|
|
|
28
35
|
source_folder=None, target_folder=None):
|
|
29
36
|
# TODO: We probably want to split this into git-folder-http cases?
|
|
30
37
|
from conans.client.conf.config_installer import configuration_install
|
|
31
|
-
app = ConanApp(self.conan_api
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
38
|
+
app = ConanApp(self.conan_api)
|
|
39
|
+
configuration_install(app, path_or_url, verify_ssl, config_type=config_type, args=args,
|
|
40
|
+
source_folder=source_folder, target_folder=target_folder)
|
|
41
|
+
|
|
42
|
+
def install_pkg(self, ref, lockfile=None, force=False):
|
|
43
|
+
ConanOutput().warning("The 'conan config install-pkg' is experimental",
|
|
44
|
+
warn_tag="experimental")
|
|
45
|
+
conan_api = self.conan_api
|
|
46
|
+
remotes = conan_api.remotes.list() # ready to use remotes arguments
|
|
47
|
+
# Ready to use profiles as inputs, but NOT using profiles yet, empty ones
|
|
48
|
+
profile_host = profile_build = conan_api.profiles.get_profile([])
|
|
49
|
+
|
|
50
|
+
app = ConanApp(self.conan_api)
|
|
51
|
+
|
|
52
|
+
# Computation of a very simple graph that requires "ref"
|
|
53
|
+
conanfile = app.loader.load_virtual(requires=[RecipeReference.loads(ref)])
|
|
54
|
+
consumer_definer(conanfile, profile_build, profile_host)
|
|
55
|
+
root_node = Node(ref=None, conanfile=conanfile, context=CONTEXT_HOST, recipe=RECIPE_VIRTUAL)
|
|
56
|
+
root_node.is_conf = True
|
|
57
|
+
update = ["*"]
|
|
58
|
+
builder = DepsGraphBuilder(app.proxy, app.loader, app.range_resolver, app.cache, remotes,
|
|
59
|
+
update, update, self.conan_api.config.global_conf)
|
|
60
|
+
deps_graph = builder.load_graph(root_node, profile_host, profile_build, lockfile)
|
|
61
|
+
|
|
62
|
+
# Basic checks of the package: correct package_type and no-dependencies
|
|
63
|
+
deps_graph.report_graph_error()
|
|
64
|
+
pkg = deps_graph.root.dependencies[0].dst
|
|
65
|
+
ConanOutput().info(f"Configuration from package: {pkg}")
|
|
66
|
+
if pkg.conanfile.package_type is not PackageType.CONF:
|
|
67
|
+
raise ConanException(f'{pkg.conanfile} is not of package_type="configuration"')
|
|
68
|
+
if pkg.dependencies:
|
|
69
|
+
raise ConanException(f"Configuration package {pkg.ref} cannot have dependencies")
|
|
70
|
+
|
|
71
|
+
# The computation of the "package_id" and the download of the package is done as usual
|
|
72
|
+
# By default we allow all remotes, and build_mode=None, always updating
|
|
73
|
+
conan_api.graph.analyze_binaries(deps_graph, None, remotes, update=update, lockfile=lockfile)
|
|
74
|
+
conan_api.install.install_binaries(deps_graph=deps_graph, remotes=remotes)
|
|
75
|
+
|
|
76
|
+
# We check if this specific version is already installed
|
|
77
|
+
config_pref = pkg.pref.repr_notime()
|
|
78
|
+
config_versions = []
|
|
79
|
+
config_version_file = HomePaths(conan_api.home_folder).config_version_path
|
|
80
|
+
if os.path.exists(config_version_file):
|
|
81
|
+
config_versions = json.loads(load(config_version_file))
|
|
82
|
+
config_versions = config_versions["config_version"]
|
|
83
|
+
if config_pref in config_versions:
|
|
84
|
+
if force:
|
|
85
|
+
ConanOutput().info(f"Package '{pkg}' already configured, "
|
|
86
|
+
"but re-installation forced")
|
|
87
|
+
else:
|
|
88
|
+
ConanOutput().info(f"Package '{pkg}' already configured, "
|
|
89
|
+
"skipping configuration install")
|
|
90
|
+
return pkg.pref # Already installed, we can skip repeating the install
|
|
91
|
+
|
|
92
|
+
from conans.client.conf.config_installer import configuration_install
|
|
93
|
+
configuration_install(app, uri=pkg.conanfile.package_folder, verify_ssl=False,
|
|
94
|
+
config_type="dir", ignore=["conaninfo.txt", "conanmanifest.txt"])
|
|
95
|
+
# We save the current package full reference in the file for future
|
|
96
|
+
# And for ``package_id`` computation
|
|
97
|
+
config_versions = {ref.split("/", 1)[0]: ref for ref in config_versions}
|
|
98
|
+
config_versions[pkg.pref.ref.name] = pkg.pref.repr_notime()
|
|
99
|
+
save(config_version_file, json.dumps({"config_version": list(config_versions.values())}))
|
|
100
|
+
return pkg.pref
|
|
35
101
|
|
|
36
102
|
def get(self, name, default=None, check_type=None):
|
|
37
103
|
return self.global_conf.get(name, default=default, check_type=check_type)
|
|
@@ -62,6 +128,7 @@ class ConfigAPI:
|
|
|
62
128
|
if platform.system() in ["Linux", "FreeBSD"]:
|
|
63
129
|
import distro
|
|
64
130
|
template = Environment(loader=FileSystemLoader(home_folder)).from_string(text)
|
|
131
|
+
home_folder = home_folder.replace("\\", "/")
|
|
65
132
|
content = template.render({"platform": platform, "os": os, "distro": distro,
|
|
66
133
|
"conan_version": conan_version,
|
|
67
134
|
"conan_home_folder": home_folder,
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import time
|
|
2
|
+
from multiprocessing.pool import ThreadPool
|
|
3
|
+
from typing import Optional, List
|
|
4
|
+
|
|
5
|
+
from conan.api.model import Remote, PackagesList
|
|
2
6
|
from conan.api.output import ConanOutput
|
|
3
7
|
from conan.internal.conan_app import ConanApp
|
|
4
8
|
from conans.errors import ConanException
|
|
@@ -11,9 +15,12 @@ class DownloadAPI:
|
|
|
11
15
|
def __init__(self, conan_api):
|
|
12
16
|
self.conan_api = conan_api
|
|
13
17
|
|
|
14
|
-
def recipe(self, ref: RecipeReference, remote: Remote, metadata=None):
|
|
18
|
+
def recipe(self, ref: RecipeReference, remote: Remote, metadata: Optional[List[str]] = None):
|
|
19
|
+
"""Download the recipe specified in the ref from the remote.
|
|
20
|
+
If the recipe is already in the cache it will be skipped,
|
|
21
|
+
but the specified metadata will be downloaded."""
|
|
15
22
|
output = ConanOutput()
|
|
16
|
-
app = ConanApp(self.conan_api
|
|
23
|
+
app = ConanApp(self.conan_api)
|
|
17
24
|
assert ref.revision, f"Reference '{ref}' must have revision"
|
|
18
25
|
try:
|
|
19
26
|
app.cache.recipe_layout(ref) # raises if not found
|
|
@@ -40,9 +47,13 @@ class DownloadAPI:
|
|
|
40
47
|
app.remote_manager.get_recipe_sources(ref, recipe_layout, remote)
|
|
41
48
|
return True
|
|
42
49
|
|
|
43
|
-
def package(self, pref: PkgReference, remote: Remote, metadata=None):
|
|
50
|
+
def package(self, pref: PkgReference, remote: Remote, metadata: Optional[List[str]] = None):
|
|
51
|
+
"""Download the package specified in the pref from the remote.
|
|
52
|
+
The recipe for this package binary must already exist in the cache.
|
|
53
|
+
If the package is already in the cache it will be skipped,
|
|
54
|
+
but the specified metadata will be downloaded."""
|
|
44
55
|
output = ConanOutput()
|
|
45
|
-
app = ConanApp(self.conan_api
|
|
56
|
+
app = ConanApp(self.conan_api)
|
|
46
57
|
try:
|
|
47
58
|
app.cache.recipe_layout(pref.ref) # raises if not found
|
|
48
59
|
except ConanException:
|
|
@@ -56,7 +67,7 @@ class DownloadAPI:
|
|
|
56
67
|
app.remote_manager.get_package_metadata(pref, remote, metadata)
|
|
57
68
|
return False
|
|
58
69
|
|
|
59
|
-
if pref.timestamp is None: # we
|
|
70
|
+
if pref.timestamp is None: # we didn't obtain the timestamp before (in general it should be)
|
|
60
71
|
# Respect the timestamp of the server
|
|
61
72
|
server_pref = app.remote_manager.get_package_revision_reference(pref, remote)
|
|
62
73
|
assert server_pref == pref
|
|
@@ -65,3 +76,29 @@ class DownloadAPI:
|
|
|
65
76
|
output.info(f"Downloading package '{pref.repr_notime()}'")
|
|
66
77
|
app.remote_manager.get_package(pref, remote, metadata)
|
|
67
78
|
return True
|
|
79
|
+
|
|
80
|
+
def download_full(self, package_list: PackagesList, remote: Remote,
|
|
81
|
+
metadata: Optional[List[str]] = None):
|
|
82
|
+
"""Download the recipes and packages specified in the package_list from the remote,
|
|
83
|
+
parallelized based on `core.download:parallel`"""
|
|
84
|
+
def _download_pkglist(pkglist):
|
|
85
|
+
for ref, recipe_bundle in pkglist.refs().items():
|
|
86
|
+
self.recipe(ref, remote, metadata)
|
|
87
|
+
for pref, _ in pkglist.prefs(ref, recipe_bundle).items():
|
|
88
|
+
self.package(pref, remote, metadata)
|
|
89
|
+
|
|
90
|
+
t = time.time()
|
|
91
|
+
parallel = self.conan_api.config.get("core.download:parallel", default=1, check_type=int)
|
|
92
|
+
thread_pool = ThreadPool(parallel) if parallel > 1 else None
|
|
93
|
+
if not thread_pool or len(package_list.refs()) <= 1:
|
|
94
|
+
_download_pkglist(package_list)
|
|
95
|
+
else:
|
|
96
|
+
ConanOutput().subtitle(f"Downloading with {parallel} parallel threads")
|
|
97
|
+
thread_pool.map(_download_pkglist, package_list.split())
|
|
98
|
+
|
|
99
|
+
if thread_pool:
|
|
100
|
+
thread_pool.close()
|
|
101
|
+
thread_pool.join()
|
|
102
|
+
|
|
103
|
+
elapsed = time.time() - t
|
|
104
|
+
ConanOutput().success(f"Download completed in {int(elapsed)}s\n")
|
|
@@ -2,7 +2,7 @@ from conan.api.output import ConanOutput
|
|
|
2
2
|
from conan.internal.conan_app import ConanApp
|
|
3
3
|
from conans.client.cmd.export import cmd_export
|
|
4
4
|
from conans.client.conanfile.package import run_package_method
|
|
5
|
-
from conans.client.graph.graph import BINARY_BUILD
|
|
5
|
+
from conans.client.graph.graph import BINARY_BUILD, RECIPE_INCACHE
|
|
6
6
|
from conans.model.package_ref import PkgReference
|
|
7
7
|
from conans.util.files import mkdir
|
|
8
8
|
|
|
@@ -14,12 +14,12 @@ class ExportAPI:
|
|
|
14
14
|
|
|
15
15
|
def export(self, path, name, version, user, channel, lockfile=None, remotes=None):
|
|
16
16
|
ConanOutput().title("Exporting recipe to the cache")
|
|
17
|
-
app = ConanApp(self.conan_api
|
|
17
|
+
app = ConanApp(self.conan_api)
|
|
18
18
|
return cmd_export(app, self.conan_api.config.global_conf, path, name, version, user, channel,
|
|
19
19
|
graph_lock=lockfile, remotes=remotes)
|
|
20
20
|
|
|
21
21
|
def export_pkg(self, deps_graph, source_folder, output_folder):
|
|
22
|
-
app = ConanApp(self.conan_api
|
|
22
|
+
app = ConanApp(self.conan_api)
|
|
23
23
|
cache, hook_manager = app.cache, app.hook_manager
|
|
24
24
|
|
|
25
25
|
# The graph has to be loaded with build_mode=[ref.name], so that node is not tried
|
|
@@ -52,6 +52,7 @@ class ExportAPI:
|
|
|
52
52
|
cache.assign_prev(pkg_layout)
|
|
53
53
|
pkg_node.prev = prev
|
|
54
54
|
pkg_node.pref_timestamp = pref.timestamp # assigned by assign_prev
|
|
55
|
+
pkg_node.recipe = RECIPE_INCACHE
|
|
55
56
|
pkg_node.binary = BINARY_BUILD
|
|
56
57
|
# Make sure folder is updated
|
|
57
58
|
final_folder = pkg_layout.package()
|
|
@@ -18,7 +18,7 @@ class GraphAPI:
|
|
|
18
18
|
name=None, version=None, user=None, channel=None,
|
|
19
19
|
update=None, remotes=None, lockfile=None,
|
|
20
20
|
is_build_require=False):
|
|
21
|
-
app = ConanApp(self.conan_api
|
|
21
|
+
app = ConanApp(self.conan_api)
|
|
22
22
|
|
|
23
23
|
if path.endswith(".py"):
|
|
24
24
|
conanfile = app.loader.load_consumer(path,
|
|
@@ -62,7 +62,7 @@ class GraphAPI:
|
|
|
62
62
|
:return: a graph Node, recipe=RECIPE_CONSUMER
|
|
63
63
|
"""
|
|
64
64
|
|
|
65
|
-
app = ConanApp(self.conan_api
|
|
65
|
+
app = ConanApp(self.conan_api)
|
|
66
66
|
# necessary for correct resolution and update of remote python_requires
|
|
67
67
|
|
|
68
68
|
loader = app.loader
|
|
@@ -88,7 +88,7 @@ class GraphAPI:
|
|
|
88
88
|
lockfile, remotes, update, check_updates=False, python_requires=None):
|
|
89
89
|
if not python_requires and not requires and not tool_requires:
|
|
90
90
|
raise ConanException("Provide requires or tool_requires")
|
|
91
|
-
app = ConanApp(self.conan_api
|
|
91
|
+
app = ConanApp(self.conan_api)
|
|
92
92
|
conanfile = app.loader.load_virtual(requires=requires,
|
|
93
93
|
tool_requires=tool_requires,
|
|
94
94
|
python_requires=python_requires,
|
|
@@ -151,7 +151,7 @@ class GraphAPI:
|
|
|
151
151
|
return deps_graph
|
|
152
152
|
|
|
153
153
|
def load_graph(self, root_node, profile_host, profile_build, lockfile=None, remotes=None,
|
|
154
|
-
update=
|
|
154
|
+
update=None, check_update=False):
|
|
155
155
|
""" Compute the dependency graph, starting from a root package, evaluation the graph with
|
|
156
156
|
the provided configuration in profile_build, and profile_host. The resulting graph is a
|
|
157
157
|
graph of recipes, but packages are not computed yet (package_ids) will be empty in the
|
|
@@ -169,7 +169,7 @@ class GraphAPI:
|
|
|
169
169
|
:param check_update: For "graph info" command, check if there are recipe updates
|
|
170
170
|
"""
|
|
171
171
|
ConanOutput().title("Computing dependency graph")
|
|
172
|
-
app = ConanApp(self.conan_api
|
|
172
|
+
app = ConanApp(self.conan_api)
|
|
173
173
|
|
|
174
174
|
assert profile_host is not None
|
|
175
175
|
assert profile_build is not None
|
|
@@ -196,7 +196,7 @@ class GraphAPI:
|
|
|
196
196
|
:param tested_graph: In case of a "test_package", the graph being tested
|
|
197
197
|
"""
|
|
198
198
|
ConanOutput().title("Computing necessary packages")
|
|
199
|
-
conan_app = ConanApp(self.conan_api
|
|
199
|
+
conan_app = ConanApp(self.conan_api)
|
|
200
200
|
binaries_analyzer = GraphBinariesAnalyzer(conan_app, self.conan_api.config.global_conf)
|
|
201
201
|
binaries_analyzer.evaluate_graph(graph, build_mode, lockfile, remotes, update,
|
|
202
202
|
build_modes_test, tested_graph)
|