diff options
Diffstat (limited to 'python-idf-component-manager.spec')
-rw-r--r-- | python-idf-component-manager.spec | 576 |
1 files changed, 576 insertions, 0 deletions
diff --git a/python-idf-component-manager.spec b/python-idf-component-manager.spec new file mode 100644 index 0000000..7af42ad --- /dev/null +++ b/python-idf-component-manager.spec @@ -0,0 +1,576 @@ +%global _empty_manifest_terminate_build 0 +Name: python-idf-component-manager +Version: 1.2.2 +Release: 1 +Summary: The component manager for ESP-IDF +License: Apache License 2.0 +URL: https://github.com/espressif/idf-component-manager +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/76/17/04fbb8fad81791e84cefe343db7c5674fd7b56c495460a9abb6e600efb11/idf_component_manager-1.2.2.tar.gz +BuildArch: noarch + +Requires: python3-future +Requires: python3-packaging +Requires: python3-requests +Requires: python3-requests-file +Requires: python3-requests-toolbelt +Requires: python3-schema +Requires: python3-six +Requires: python3-tqdm +Requires: python3-click +Requires: python3-pathlib +Requires: python3-cachecontrol[filecache] +Requires: python3-cffi +Requires: python3-contextlib2 +Requires: python3-colorama +Requires: python3-pyyaml +Requires: python3-click +Requires: python3-pyyaml +Requires: python3-click +Requires: python3-click +Requires: python3-colorama +Requires: python3-pyyaml +Requires: python3-cachecontrol[filecache] +Requires: python3-contextlib2 +Requires: python3-click + +%description +# IDF Component Manager + +The IDF Component manager is a tool that downloads dependencies for any [ESP-IDF](https://www.espressif.com/en/products/sdks/esp-idf) CMake project. It makes sure that the right versions of all components required for a successful build of your project are in place. The download happens automatically during a run of CMake. It can source components either from [the component registry](https://components.espressif.com/) or from a git repository. + +**A list of components can be found at https://components.espressif.com/** + +## Installing the IDF Component Manager + +IDF component manager can be used with ESP-IDF v4.1 and later. +It is installed by default with ESP-IDF v4.4+ and recent bug-fix releases of ESP-IDF 4.1+. + +To check the installed version of the IDF component manager, first, activate [ESP-IDF environment](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html#installation). On macOS and Linux: + +```bash +source $IDF_PATH/export.sh +``` + +Then run the command: + +```bash +python -m idf_component_manager -h +``` + +To update to the most recent version: + +```bash +pip install idf-component-manager --upgrade +``` + +## Disabling the Component Manager + +The component manager can be explicitly disabled by setting `IDF_COMPONENT_MANAGER` environment variable to `0`. + +## Using with a project + +You can add `idf_component.yml` manifest files with the list of dependencies to any component in your project. + +IDF Component Manager will download dependencies automatically during the project build process. + +When CMake configures the project (e.g. `idf.py reconfigure`) component manager does a few things: + +- Processes `idf_component.yml` manifests for every component in the project +- Creates a `dependencies.lock` file in the root of the project with a full list of dependencies +- Downloads all dependencies to the `managed_components` directory + +The component manager won't try to regenerate `dependencies.lock` or download any components if manifests, lock file, and content of `managed_component` directory weren't modified since the last successful build. + +## Defining dependencies in the manifest + +All dependencies are defined in the manifest file. + +```yaml +dependencies: + # Required IDF version + idf: ">=4.1" + # For components maintained by Espressif only name can be used. + # Same as `espressif/component` + component: + version: "~2.0.0" + # Or in a shorter form + component2: ">=1.0.0" + # For 3rd party components : + username/component: + version: "~1.0.0" + # For transient dependencies `public` flag can be set. + public: true + anotheruser/component: "<3.2.20" + # For components hosted on non-default registry: + company_user/component: + version: "~1.0.0" + service_url: "https://componentregistry.company.com" + # For components in git repository: + test_component: + path: test_component + git: ssh://git@gitlab.com/user/components.git + # For test projects during component development + # components can be used from a local directory + # with relative or absolute path + some_local_component: + path: ../../projects/component + # For optional dependencies + optional_component: + version: "~1.0.0" + rules: # will add "optional_component" only when all if clauses are True + - if: "idf_version >=3.3,<5.0" # supports all SimpleSpec grammars (https://python-semanticversion.readthedocs.io/en/latest/reference.html#semantic_version.SimpleSpec) + - if: "target in [esp32, esp32c3]" # supports boolean operator ==, !=, in, not in. + # For example of the component + namespace/component_with_example: + version: "~1.0.0" # if there is no `override_path` field, use component from registry + override_path: "../../" # use component in a local directory, not from registry + namespace/no_required_component: + version: "*" + require: no # Download component but don't add it as a requirement + namespace/pre_release_component: + version: "*" + pre_release: true # Allow downloading of pre-release versions +``` + +## Environment variables in manifest + +You can use environment variables in values in `idf_component.yml` manifests. `$VAR` or `${VAR}` is replaced with the value of the `VAR` environment variable. If the environment variable is not defined, the component manager will raise an error. + +Variable name should be ASCII alphanumeric string (including underscores) and start with an underscore or ASCII letter. The first non-identifier character after the `$` terminates this placeholder specification. You can escape `$` with one more`$` character, i.e., `$$` is replaced with `$`. + +One possible use-case is providing authentication to git repositories accessed through HTTPS: + +```yaml +dependencies: + my_component: + git: https://git:${ACCESS_TOKEN}@git.my_git.com/my_component.git +``` + +## Component metadata caching + +By default information about available versions of components is cached for 5 minutes. You can adjust caching period by setting the duration in minutes to `IDF_COMPONENT_API_CACHE_EXPIRATION_MINUTES` environment variable or disable the cache entirely by setting it to 0. + +## External links + +You can add links to the `idf_component.yml` file to the root of the manifest: + +```yaml +url: "https://example.com/homepage" # URL of the component homepage +repository: "https://gitexample.com/test_project" # URL of the public repository with component source code, i.e GitHub, GitLab, etc. +documentation: "https://example.com/documentation" # URL of the component documentation +issues: "https://git.example.com/test_project/tracker" # URL of the issue tracker +discussion: "https://discord.example.com/test_project" # URL of the component discussion, i.e. Discord, Gitter, forum, etc. +``` + +A link should be a correct HTTP(S) URL like `https://example.com/path` except the `repository` field, +it is expected to be a valid [Git remote](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) URL. + +## Add examples to the component + +To add examples to your component place them in the `examples` directory inside your component. +Examples are discovered recursively in subdirectories at this path. +A directory with `CMakeLists.txt` that registers a project is considered as an example. + +## Custom example paths + +You can specify custom example paths for uploading them to the component registry. +For that, add `examples` field to the root of the manifest: + +```yaml +examples: + - path: ../some/path + - path: ../some/other_path +``` + +## Contributions Guide + +We welcome all contributions to the Component Manager project. + +You can contribute by fixing bugs, adding features, adding documentation, or reporting an [issue](https://github.com/espressif/idf-component-manager/issues). We accept contributions via [Github Pull Requests](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). + +Before reporting an issue, make sure you've searched for a similar one that was already created. If you are reporting a new issue, please follow the Issue Template. + +## Resources + +- The Python Package Index project page https://pypi.org/project/idf-component-manager/ +- The Component Manager section in the [ESP-IDF Programming Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-component-manager.html) + + +%package -n python3-idf-component-manager +Summary: The component manager for ESP-IDF +Provides: python-idf-component-manager +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-idf-component-manager +# IDF Component Manager + +The IDF Component manager is a tool that downloads dependencies for any [ESP-IDF](https://www.espressif.com/en/products/sdks/esp-idf) CMake project. It makes sure that the right versions of all components required for a successful build of your project are in place. The download happens automatically during a run of CMake. It can source components either from [the component registry](https://components.espressif.com/) or from a git repository. + +**A list of components can be found at https://components.espressif.com/** + +## Installing the IDF Component Manager + +IDF component manager can be used with ESP-IDF v4.1 and later. +It is installed by default with ESP-IDF v4.4+ and recent bug-fix releases of ESP-IDF 4.1+. + +To check the installed version of the IDF component manager, first, activate [ESP-IDF environment](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html#installation). On macOS and Linux: + +```bash +source $IDF_PATH/export.sh +``` + +Then run the command: + +```bash +python -m idf_component_manager -h +``` + +To update to the most recent version: + +```bash +pip install idf-component-manager --upgrade +``` + +## Disabling the Component Manager + +The component manager can be explicitly disabled by setting `IDF_COMPONENT_MANAGER` environment variable to `0`. + +## Using with a project + +You can add `idf_component.yml` manifest files with the list of dependencies to any component in your project. + +IDF Component Manager will download dependencies automatically during the project build process. + +When CMake configures the project (e.g. `idf.py reconfigure`) component manager does a few things: + +- Processes `idf_component.yml` manifests for every component in the project +- Creates a `dependencies.lock` file in the root of the project with a full list of dependencies +- Downloads all dependencies to the `managed_components` directory + +The component manager won't try to regenerate `dependencies.lock` or download any components if manifests, lock file, and content of `managed_component` directory weren't modified since the last successful build. + +## Defining dependencies in the manifest + +All dependencies are defined in the manifest file. + +```yaml +dependencies: + # Required IDF version + idf: ">=4.1" + # For components maintained by Espressif only name can be used. + # Same as `espressif/component` + component: + version: "~2.0.0" + # Or in a shorter form + component2: ">=1.0.0" + # For 3rd party components : + username/component: + version: "~1.0.0" + # For transient dependencies `public` flag can be set. + public: true + anotheruser/component: "<3.2.20" + # For components hosted on non-default registry: + company_user/component: + version: "~1.0.0" + service_url: "https://componentregistry.company.com" + # For components in git repository: + test_component: + path: test_component + git: ssh://git@gitlab.com/user/components.git + # For test projects during component development + # components can be used from a local directory + # with relative or absolute path + some_local_component: + path: ../../projects/component + # For optional dependencies + optional_component: + version: "~1.0.0" + rules: # will add "optional_component" only when all if clauses are True + - if: "idf_version >=3.3,<5.0" # supports all SimpleSpec grammars (https://python-semanticversion.readthedocs.io/en/latest/reference.html#semantic_version.SimpleSpec) + - if: "target in [esp32, esp32c3]" # supports boolean operator ==, !=, in, not in. + # For example of the component + namespace/component_with_example: + version: "~1.0.0" # if there is no `override_path` field, use component from registry + override_path: "../../" # use component in a local directory, not from registry + namespace/no_required_component: + version: "*" + require: no # Download component but don't add it as a requirement + namespace/pre_release_component: + version: "*" + pre_release: true # Allow downloading of pre-release versions +``` + +## Environment variables in manifest + +You can use environment variables in values in `idf_component.yml` manifests. `$VAR` or `${VAR}` is replaced with the value of the `VAR` environment variable. If the environment variable is not defined, the component manager will raise an error. + +Variable name should be ASCII alphanumeric string (including underscores) and start with an underscore or ASCII letter. The first non-identifier character after the `$` terminates this placeholder specification. You can escape `$` with one more`$` character, i.e., `$$` is replaced with `$`. + +One possible use-case is providing authentication to git repositories accessed through HTTPS: + +```yaml +dependencies: + my_component: + git: https://git:${ACCESS_TOKEN}@git.my_git.com/my_component.git +``` + +## Component metadata caching + +By default information about available versions of components is cached for 5 minutes. You can adjust caching period by setting the duration in minutes to `IDF_COMPONENT_API_CACHE_EXPIRATION_MINUTES` environment variable or disable the cache entirely by setting it to 0. + +## External links + +You can add links to the `idf_component.yml` file to the root of the manifest: + +```yaml +url: "https://example.com/homepage" # URL of the component homepage +repository: "https://gitexample.com/test_project" # URL of the public repository with component source code, i.e GitHub, GitLab, etc. +documentation: "https://example.com/documentation" # URL of the component documentation +issues: "https://git.example.com/test_project/tracker" # URL of the issue tracker +discussion: "https://discord.example.com/test_project" # URL of the component discussion, i.e. Discord, Gitter, forum, etc. +``` + +A link should be a correct HTTP(S) URL like `https://example.com/path` except the `repository` field, +it is expected to be a valid [Git remote](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) URL. + +## Add examples to the component + +To add examples to your component place them in the `examples` directory inside your component. +Examples are discovered recursively in subdirectories at this path. +A directory with `CMakeLists.txt` that registers a project is considered as an example. + +## Custom example paths + +You can specify custom example paths for uploading them to the component registry. +For that, add `examples` field to the root of the manifest: + +```yaml +examples: + - path: ../some/path + - path: ../some/other_path +``` + +## Contributions Guide + +We welcome all contributions to the Component Manager project. + +You can contribute by fixing bugs, adding features, adding documentation, or reporting an [issue](https://github.com/espressif/idf-component-manager/issues). We accept contributions via [Github Pull Requests](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). + +Before reporting an issue, make sure you've searched for a similar one that was already created. If you are reporting a new issue, please follow the Issue Template. + +## Resources + +- The Python Package Index project page https://pypi.org/project/idf-component-manager/ +- The Component Manager section in the [ESP-IDF Programming Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-component-manager.html) + + +%package help +Summary: Development documents and examples for idf-component-manager +Provides: python3-idf-component-manager-doc +%description help +# IDF Component Manager + +The IDF Component manager is a tool that downloads dependencies for any [ESP-IDF](https://www.espressif.com/en/products/sdks/esp-idf) CMake project. It makes sure that the right versions of all components required for a successful build of your project are in place. The download happens automatically during a run of CMake. It can source components either from [the component registry](https://components.espressif.com/) or from a git repository. + +**A list of components can be found at https://components.espressif.com/** + +## Installing the IDF Component Manager + +IDF component manager can be used with ESP-IDF v4.1 and later. +It is installed by default with ESP-IDF v4.4+ and recent bug-fix releases of ESP-IDF 4.1+. + +To check the installed version of the IDF component manager, first, activate [ESP-IDF environment](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html#installation). On macOS and Linux: + +```bash +source $IDF_PATH/export.sh +``` + +Then run the command: + +```bash +python -m idf_component_manager -h +``` + +To update to the most recent version: + +```bash +pip install idf-component-manager --upgrade +``` + +## Disabling the Component Manager + +The component manager can be explicitly disabled by setting `IDF_COMPONENT_MANAGER` environment variable to `0`. + +## Using with a project + +You can add `idf_component.yml` manifest files with the list of dependencies to any component in your project. + +IDF Component Manager will download dependencies automatically during the project build process. + +When CMake configures the project (e.g. `idf.py reconfigure`) component manager does a few things: + +- Processes `idf_component.yml` manifests for every component in the project +- Creates a `dependencies.lock` file in the root of the project with a full list of dependencies +- Downloads all dependencies to the `managed_components` directory + +The component manager won't try to regenerate `dependencies.lock` or download any components if manifests, lock file, and content of `managed_component` directory weren't modified since the last successful build. + +## Defining dependencies in the manifest + +All dependencies are defined in the manifest file. + +```yaml +dependencies: + # Required IDF version + idf: ">=4.1" + # For components maintained by Espressif only name can be used. + # Same as `espressif/component` + component: + version: "~2.0.0" + # Or in a shorter form + component2: ">=1.0.0" + # For 3rd party components : + username/component: + version: "~1.0.0" + # For transient dependencies `public` flag can be set. + public: true + anotheruser/component: "<3.2.20" + # For components hosted on non-default registry: + company_user/component: + version: "~1.0.0" + service_url: "https://componentregistry.company.com" + # For components in git repository: + test_component: + path: test_component + git: ssh://git@gitlab.com/user/components.git + # For test projects during component development + # components can be used from a local directory + # with relative or absolute path + some_local_component: + path: ../../projects/component + # For optional dependencies + optional_component: + version: "~1.0.0" + rules: # will add "optional_component" only when all if clauses are True + - if: "idf_version >=3.3,<5.0" # supports all SimpleSpec grammars (https://python-semanticversion.readthedocs.io/en/latest/reference.html#semantic_version.SimpleSpec) + - if: "target in [esp32, esp32c3]" # supports boolean operator ==, !=, in, not in. + # For example of the component + namespace/component_with_example: + version: "~1.0.0" # if there is no `override_path` field, use component from registry + override_path: "../../" # use component in a local directory, not from registry + namespace/no_required_component: + version: "*" + require: no # Download component but don't add it as a requirement + namespace/pre_release_component: + version: "*" + pre_release: true # Allow downloading of pre-release versions +``` + +## Environment variables in manifest + +You can use environment variables in values in `idf_component.yml` manifests. `$VAR` or `${VAR}` is replaced with the value of the `VAR` environment variable. If the environment variable is not defined, the component manager will raise an error. + +Variable name should be ASCII alphanumeric string (including underscores) and start with an underscore or ASCII letter. The first non-identifier character after the `$` terminates this placeholder specification. You can escape `$` with one more`$` character, i.e., `$$` is replaced with `$`. + +One possible use-case is providing authentication to git repositories accessed through HTTPS: + +```yaml +dependencies: + my_component: + git: https://git:${ACCESS_TOKEN}@git.my_git.com/my_component.git +``` + +## Component metadata caching + +By default information about available versions of components is cached for 5 minutes. You can adjust caching period by setting the duration in minutes to `IDF_COMPONENT_API_CACHE_EXPIRATION_MINUTES` environment variable or disable the cache entirely by setting it to 0. + +## External links + +You can add links to the `idf_component.yml` file to the root of the manifest: + +```yaml +url: "https://example.com/homepage" # URL of the component homepage +repository: "https://gitexample.com/test_project" # URL of the public repository with component source code, i.e GitHub, GitLab, etc. +documentation: "https://example.com/documentation" # URL of the component documentation +issues: "https://git.example.com/test_project/tracker" # URL of the issue tracker +discussion: "https://discord.example.com/test_project" # URL of the component discussion, i.e. Discord, Gitter, forum, etc. +``` + +A link should be a correct HTTP(S) URL like `https://example.com/path` except the `repository` field, +it is expected to be a valid [Git remote](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) URL. + +## Add examples to the component + +To add examples to your component place them in the `examples` directory inside your component. +Examples are discovered recursively in subdirectories at this path. +A directory with `CMakeLists.txt` that registers a project is considered as an example. + +## Custom example paths + +You can specify custom example paths for uploading them to the component registry. +For that, add `examples` field to the root of the manifest: + +```yaml +examples: + - path: ../some/path + - path: ../some/other_path +``` + +## Contributions Guide + +We welcome all contributions to the Component Manager project. + +You can contribute by fixing bugs, adding features, adding documentation, or reporting an [issue](https://github.com/espressif/idf-component-manager/issues). We accept contributions via [Github Pull Requests](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). + +Before reporting an issue, make sure you've searched for a similar one that was already created. If you are reporting a new issue, please follow the Issue Template. + +## Resources + +- The Python Package Index project page https://pypi.org/project/idf-component-manager/ +- The Component Manager section in the [ESP-IDF Programming Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-component-manager.html) + + +%prep +%autosetup -n idf-component-manager-1.2.2 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-idf-component-manager -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 1.2.2-1 +- Package Spec generated |