(#14491) Docs: split up reviewing into new file sections

* cleanup patches from #14377

* subfolder dont exist with new generators

* styling is not enforced

* move attribute to new home + fix FAQ spelling

* delete out date CMake docs from older generators

* move test package docs

* delete empty file :)

* fix links

* wording + remove duplicated sections

* improve mention of future work

* [docs] Regenerate tables of contents

Co-authored-by: prince-chrismc <prince-chrismc@users.noreply.github.com>

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: prince-chrismc <prince-chrismc@users.noreply.github.com>
This commit is contained in:
Chris Mc
2022-12-02 05:25:04 -08:00
committed by GitHub
parent d6ca74951a
commit 073a9a9909
7 changed files with 155 additions and 227 deletions

View File

@@ -73,7 +73,7 @@ Conan has an abstraction over the packages build system and description by using
In the past, we have found that the logic of some of the CMake's find/config or pkg-config files can lead to broken scenarios due to issues with:
- Transitive dependencies: The find logic of CMake can lead to link libraries with system libraries instead of the ones specified in the conanfile.
- Different build type configurations: Usually those files are not prepared to handle multiconfiguration development while switching between release/debug build types for example.
- Different build type configurations: Usually those files are not prepared to handle multi-configuration development while switching between release/debug build types for example.
- Absolute paths: Usually, those files include absolute paths that would make the package broken when shared and consumed.
- Hardcoded versions of dependencies as well as build options that make overriding dependencies from the consumer not possible.
@@ -172,7 +172,7 @@ def package_id(self):
```
This is the safest way, users will be warned of deprecation and their projects will not risk breaking.
As aditional examples, take a look on follow recipes: [dcmtk](https://github.com/conan-io/conan-center-index/blob/5e6089005f0bb66cd16db7b0e5f37f5081c7820c/recipes/dcmtk/all/conanfile.py#L24), [gtsam](https://github.com/conan-io/conan-center-index/blob/f7f18ab050e5d97fac70932b0ba4c115a930958c/recipes/gtsam/all/conanfile.py#L40)
As additional examples, take a look on follow recipes: [dcmtk](https://github.com/conan-io/conan-center-index/blob/5e6089005f0bb66cd16db7b0e5f37f5081c7820c/recipes/dcmtk/all/conanfile.py#L24), [gtsam](https://github.com/conan-io/conan-center-index/blob/f7f18ab050e5d97fac70932b0ba4c115a930958c/recipes/gtsam/all/conanfile.py#L40)
and [libcurl](https://github.com/conan-io/conan-center-index/blob/f834ee1c82564199fdd9ca2f95231693c1a7136a/recipes/libcurl/all/conanfile.py#L24).
However, if logic is too complex (this is subjective and depends on the Conan review team) then just remove the option.
@@ -184,17 +184,16 @@ No. Some projects provide more than a simple library, but also applications. For
## What license should I use for Public Domain?
[The Public Domain](https://fairuse.stanford.edu/overview/public-domain/welcome/) is not a license by itself. Thus, we have [equivalent licenses](https://en.wikipedia.org/wiki/Public-domain-equivalent_license) to be used instead. By default, if a project uses Public Domain and there is no official license listed, you should use [Unlicense](https://spdx.org/licenses/Unlicense).
See [License Attribute](adding_packages/conanfile_attributes.md#license-attribute) for details.
## What license should I use for a custom project specific license?
When a non standard open-source license is used, we have decided to use `LicenseRef-` as a prefix, followed by the name of the file which contains a custom license.
See [the reviewing guidlines](adding_packages/reviewing.md#license-attribute) for more details.
See [License Attribute](adding_packages/conanfile_attributes.md#license-attribute) for details.
## How do I flag a problem to a recipe consumer?
Regardless of why, if the recipe detects a problem where binaries might not be generated correctly, an exception must be raised. This to prevent the publishing
incorrect packages which do not work as intented. Use `ConanInvalidConfiguration` which is specially support in ConanCenter.
incorrect packages which do not work as intended. Use `ConanInvalidConfiguration` which is specially support in ConanCenter.
```py
raise ConanInvalidConfiguration(f"The project {self.ref} requires liba.enable_feature=True.")
@@ -228,16 +227,11 @@ As a result, all calls to `build.check_min_cppstd` must be guarded by a check fo
## What is the policy for adding older versions of a package?
We defer adding older versions without a direct requirement. We love to hear why in the opening description of the PR.
Adding versions that are not used by consumer only requires more resources and time from the CI servers.
See [Adding older versions](adding_packages/sources_and_patches.md#adding-old-versions) for details.
## What is the policy for removing older versions of a package?
Older versions can be removed from packages given the considerations below. When removing those version, remove everything
that is specific to them: logic from the recipe and references in `config.yml` and `conandata.yml`. In any case, packages
are never removed from ConanCenter remote.
When removing older versions, please take into account [these considerations](adding_packages/reviewing.md#supported-versions).
See [Removing older versions](adding_packages/sources_and_patches.md#removing-old-versions) for details.
## Can I install packages from the system package manager?
@@ -306,7 +300,7 @@ these Intel libraries are widely used by various well-known open-source projects
Unfortunately, these Intel libraries cannot be accepted into ConanCenter due to several important reasons:
* they are closed-source and commercial products, ConanCenter cannot redistribute their binaries due to the license restrictions
* registration on the Intel portal is required in order to dowload the libraries, there are no permanent public direct download links
* registration on the Intel portal is required in order to download the libraries, there are no permanent public direct download links
* they use graphical installers which are hard to automate within conan recipe
instead, the libraries that depend on *MKL*, *IPP* or *DNN* should use the following references:
@@ -347,7 +341,7 @@ intel-mkl/2021@mycompany/stable
## How to protect my project from breaking changes in recipes?
This repository and the CI building recipes is continuosly pushing to new Conan versions,
This repository and the CI building recipes is continuously pushing to new Conan versions,
sometimes adopting new features as soon as they are released
([Conan client changelog](https://docs.conan.io/en/latest/changelog.html)).
@@ -362,7 +356,7 @@ Keep reading in the [consuming recipes section](consuming_recipes.md#isolate-you
Version ranges are a useful Conan feature, find the documentation [here](https://docs.conan.io/en/latest/versioning/version_ranges.html). However, in the context of ConanCenter they pose a few key challenges, most notably:
- Non-Determinstic `package-id`
- Non-Deterministic `package-id`
With version ranges the newest compatible package may yield a different package-id than the one built and published by ConanCenter resulting in frustrating error "no binaries found". For more context see [this excellent explanation](https://github.com/conan-io/conan-center-index/pull/8831#issuecomment-1024526780).