Linter rules
Available categoriesโ
- CF: conda-forge specific rules
- FC: Feedstock configuration in conda-forge.yml
- R: All recipe versions
- R0: Recipe v0 (meta.yaml)
- R1: Recipe v1 (recipe.yaml)
- RC: All recipe variants files
Messagesโ
CF: conda-forge specific rulesโ
CF-001: MaintainerMissingโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Maintainers listed in extra.recipe-maintainers must be valid Github usernames
or @conda-forge/* teams.
Message or template
Recipe maintainer ${team_or}"${maintainer}" does not exist
Examples
Recipe maintainer "@banned-user" does not exist
Recipe maintainer team "@conda-forge/deleted-team" does not exist
CF-002: PackageToAvoidโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Some package names may not be used in recipes directly, or under some circumstances.
The full list of package names and their explanations can be found in
conda-forge-pinning-feedstock.
Message or template
${package_hint}
CF-003: NoVariantConfigsโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
.ci_support/*.yaml
No variant config files could be found in .ci_support/*.yaml , which means that
build matrix is empty and no packages will be built.
This is usually caused by a misconfiguration of your recipe file (e.g. build.skip is always
true, disabling all builds).
Message or template
The feedstock has no .ci_support files and thus will not build any packages.
CF-004: NoEmptyVariantsFileโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/conda_build_config.yaml
Variants files can't be empty.
Message or template
The recipe should not have an empty conda_build_config.yaml file.
CF-005: NoCustomGHAWorkflowsโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
.github/workflows/*.y*ml
Due to its stature in the open-source community, conda-forge has enhanced access to certain CI services. This access is a community resource entrusted to conda-forge for use in building packages. We thus cannot support third-party or "off-label" CI jobs in our feedstocks on any of our CI services. If we find such use, we will politely ask the maintainers to rectify the situation. We may take more serious actions, including archiving feedstocks or removing maintainers from the organization, if the situation cannot be rectified.
Message or template
conda-forge feedstocks cannot have custom Github Actions workflows. See https://github.com/conda-forge/conda-forge.github.io/issues/2750 for more information. If you didn't add any custom workflows, please consider rerendering your feedstock to remove deprecated workflows.
FC: Feedstock configuration in conda-forge.ymlโ
FC-001: NoDuplicateKeysโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
conda-forge.yml
conda-forge.yml must not contain duplicate keys.
Message or template
The conda-forge.yml file is not allowed to have duplicate keys.
R: All recipe versionsโ
R-000: UnexpectedSectionโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Recipe files must not contain unknown top-level keys.
For recipe version 0, the allowed keys are (in this order):
packagesourcebuildrequirementstestappoutputsaboutextra
For recipe version 1, it depends if you are generating one or multiple artifacts. For single artifacts, the expected keys are (in this order):
schema_versioncontextpackagesourcebuildrequirementstestsaboutextra
For multiple artifacts, the expected keys are (in this order):
schema_versioncontextrecipesourcebuildoutputsaboutextra
Message or template
The top level meta key ${section} is unexpected
R-001: SectionOrderโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
The top-level sections of a recipe file must always follow the same order.
Please refer to linter rule R-000 (RecipeUnexpectedSection) for more
details.
Message or template
The top level meta keys are in an unexpected order. Expecting ${order}.
R-002: MissingAboutItemโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
The about section requires three fields: homepage (home in v1), license, and summary.
Message or template
The ${item} item is expected in the about section.
R-003: NoMaintainersโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
All recipes must list at least one maintainer under extra/recipe-maintainers.
Message or template
The recipe could do with some maintainers listed in the extra/recipe-maintainers section.
R-004: MaintainersMustBeListโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
The extra/recipe-maintainers only accepts a list of strings as a value.
Message or template
Recipe maintainers should be a json list.
R-005: RequiredTestsโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
All recipes must have a non-empty test section.
Message or template
The recipe must have some tests.
R-006: RecommendedTestsโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
All recipes must have a non-empty test section.
Message or template
It looks like the '${output}' output doesn't have any tests.
R-007: UnknownLicenseโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
All recipes must have a license identifier, but it can't be "unknown".
Message or template
The recipe license cannot be unknown.
R-008: BuildNumberMissingโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
All recipes must define a build.number value.
Message or template
The recipe must have a build/number section.
R-009: RequirementsOrderโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
The different subcategories of the requirements section must follow
a strict order: build, host, run, run_constrained.
Message or template
The requirements/ sections should be defined in the following order: ${expected}; instead saw: ${seen}.
R-010: LicenseFieldMentionsLicenseโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Licenses should omit the term 'License' in its name.
Message or template
The recipe license should not include the word "License".
R-011: TooManyEmptyLinesโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Recipe files should end with a single empty line, not more.
Message or template
There are ${n_lines} too many lines. There should be one empty line at the end of the file.
R-012: TooFewEmptyLinesโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Recipe files should end with a single empty line.
Message or template
There are too few lines. There should be one empty line at the end of the file.
R-013: LicenseFamilyโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
The field license_file must be always present.
Message or template
license_file entry is missing, but is required.
R-014: InvalidPackageNameโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
The recipe name can only contain certain characters:
- lowercase ASCII letters (
a-z) - digits (
0-9) - underscores, hyphens and dots (
_,-,.)
Message or template
Recipe name has invalid characters. only lowercase alpha, numeric, underscores, hyphens and dots allowed
R-015: MissingVersionโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
The package version field is required.
Message or template
Package version is missing.
R-016: InvalidVersionโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
The package version field must be a valid version string.
Message or template
Package version ${version} doesn't match conda spec: ${error}
R-017: PinnedNumpyโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
See https://conda-forge.org/docs/maintainer/knowledge_base.html#linking-numpy
Message or template
Using pinned numpy packages is a deprecated pattern. Consider using the method outlined conda-forge.org > Docs > Maintainer Documentation > Knowledge Base > Building Against NumPy.
R-018: UnexpectedSubsectionโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
This check ensures that the passed recipe conforms to the expected recipe v0 schema.
See schema in conda_build.metadata.FIELDS
Message or template
The ${section} section contained an unexpected subsection name. ${subsection} is not a valid subsection name.
R-019: SourceHashโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
All recipe source URLs must have a hash checksum for integrity checks.
Message or template
When defining a source/url please add a sha256, sha1 or md5 checksum (sha256 preferably).
R-020: NoarchValueโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
The build.noarch field can only take python or generic as a value.
Message or template
Invalid noarch value ${given}. Should be one of ${valid}.
R-021: RequirementJoinVersionOperatorโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
conda recipes should use the three-field matchspec syntax to express requirements:
name [version [build]]. This means having no spaces between operator and version
literals.
Message or template
requirements: ${section}: ${requirement} should not contain a space between relational operator and the version, i.e. ${name} ${pin}
R-022: RequirementSeparateNameVersionโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
conda recipes should use the three-field matchspec syntax to express requirements:
name [version [build]]. This means having a space between name and version.
Message or template
requirements: ${section}: ${requirement} must contain a space between the name and the pin, i.e. ${name} ${pin}
R-023: LanguageHostRunโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Packages may depend on certain languages (e.g. Python, R) that require depending
on the language runtime both in host and run.
Message or template
If ${language} is a host requirement, it should be a run requirement.
R-024: LanguageHostRunUnpinnedโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Packages may depend on certain languages (e.g. Python, R) that require depending
on the language runtime both in host and run. They should not pin it to a
particular version when the package is not noarch.
Message or template
Non noarch packages should have ${language} requirement without any version constraints.
R-025: JinjaExpressionโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Jinja expressions should add a space between the double curly braces.
Message or template
Jinja2 variable references are suggested to take a ${dollar}{{<one space><variable name><one space>}} form. See lines ${lines}.
R-026: PythonLowerBoundโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Noarch Python recipes should always pin the lower bound on their python requirement.
Message or template
noarch: python recipes are required to have a lower bound on the python version. Typically this means putting python >={{ python_min }} in the run section of your recipe. You may also want to check the upstream source for the package's Python compatibility.
R-027: PinSubpackagePinCompatibleโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
The Jinja functions pin_subpackage and pin_compatible may be confused
because both would add version constraints to a package name. However, they
have different purposes.
pin_subpackage()must be used when the package to be pinned is a known output in the current recipe.pin_compatible()must be used when the package to be pinned is not an output of the current recipe.
Message or template
${should_use} should be used instead of ${in_use} for ${pin} because it is ${what} known outputs of this recipe: ${subpackages}.
R-028: CompiledWheelsNotAllowedโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Python wheels are often discouraged as package sources. This is especially the case for compiled wheels, which are forbidden.
Message or template
Detected compiled wheel(s) in source: ${urls}. This is disallowed. All packages should be built from source except in rare and exceptional cases.
R-029: PureWheelsNotAllowedโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Python wheels are often discouraged as package sources. This is also the case for pure Python wheels when building non-noarch packages.
Message or template
Detected pure Python wheel(s) in source: ${urls}. This is discouraged. Please consider using a source distribution (sdist) instead.
R-030: PureWheelsNotAllowedNoarchโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Python wheels are often discouraged as package sources. However, pure Python wheels may be used as a source for noarch Python packages, although sdists are preferred.
Message or template
Detected pure Python wheel(s) in source: ${urls}. This is generally ok for pure Python wheels and noarch=python packages but it's preferred to use a source distribution (sdist) if possible.
R-031: RustLicensesโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
https://conda-forge.org/docs/maintainer/adding_pkgs/#rust
Message or template
Rust packages must include the licenses of the Rust dependencies. For more info, visit: https://conda-forge.org/docs/maintainer/adding_pkgs/#rust
R-032: GoLicensesโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
https://conda-forge.org/docs/maintainer/adding_pkgs/#go
Message or template
Go packages must include the licenses of the Go dependencies. For more info, visit: https://conda-forge.org/docs/maintainer/adding_pkgs/#go
R-033: StdlibJinjaโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
https://github.com/conda-forge/conda-forge.github.io/issues/2102
Message or template
This recipe is using a compiler, which now requires adding a build dependence on ${dollar}{{ stdlib("c") }} as well. Note that this rule applies to each output of the recipe using a compiler. For further details, please see https://github.com/conda-forge/conda-forge.github.io/issues/2102.
R-034: StdlibSysrootโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
https://github.com/conda-forge/conda-forge.github.io/issues/2102
Message or template
You're setting a requirement on sysroot_linux-<arch> directly; this should now be done by adding a build dependence on ${dollar}{{ stdlib("c") }}, and overriding c_stdlib_version in recipe/conda_build_config.yaml for the respective platform as necessary. For further details, please see https://github.com/conda-forge/conda-forge.github.io/issues/2102.
R-035: StdlibMacOSโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
https://github.com/conda-forge/conda-forge.github.io/issues/2102
Message or template
You're setting a constraint on the __osx virtual package directly; this should now be done by adding a build dependence on ${dollar}{{ stdlib("c") }}, and overriding c_stdlib_version in recipe/conda_build_config.yaml for the respective platform as necessary. For further details, please see https://conda-forge.org/docs/maintainer/knowledge_base/#requiring-newer-macos-sdks.
R-036: NotParsableLintโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
The conda recipe should be parsable by at least one backend. If none can parse it, this constitutes an error that needs to be remediated.
Message or template
The recipe is not parsable by any of the known recipe parsers (${parsers}). Please check the logs for more information and ensure your recipe can be parsed.
R-037: NotParsableHintโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
The conda recipe should be parsable by at least one backend. Sometimes, only some backends fail, which is not critical, but should be looked into.
Message or template
(dynamic)
Examples
The recipe is not parsable by parser conda-recipe-manager. The recipe can only be automatically migrated to the new v1 format if it is parseable by conda-recipe-manager.
The recipe is not parsable by parser other. Your recipe may not receive automatic updates and/or may not be compatible with conda-forge's infrastructure. Please check the logs for more information and ensure your recipe can be parsed.
R-038: PythonIsAbi3Boolโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
https://github.com/conda-forge/conda-forge.github.io/issues/2102
Message or template
The is_abi3 variant variable is now a boolean value instead of a string (i.e., 'true' or 'false'). Please change syntax like is_abi3 == 'true' to is_abi3`.
R-039: ExtraFeedstockNameSuffixโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
https://github.com/conda-forge/conda-forge.github.io/issues/2102
Message or template
The feedstock-name in the extra section must not end with '-feedstock'. The '-feedstock' suffix is automatically appended during feedstock creation.
R-040: VersionParsedAsFloatโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
https://github.com/conda-forge/conda-forge.github.io/issues/2102
Message or template
${key} has a value that is interpreted as a floating-point number. Please quote it (like "${value}"${v0_hint}) to ensure that it is interpreted as string and preserved exactly.
R-041: SuggestNoarchโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
noarch packages are strongly preferred when possible.
See https://conda-forge.org/docs/maintainer/knowledge_base.html#noarch-builds.
Message or template
Whenever possible python packages should use noarch. See https://conda-forge.org/docs/maintainer/knowledge_base.html#noarch-builds
R-042: ScriptShellcheckReportโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
This issue is raised when shellcheck is enabled and detects problems
in your build .sh scripts.
See https://www.shellcheck.net/wiki/ for details on the shellcheck error codes.
Message or template
(dynamic)
Examples
Whenever possible fix all shellcheck findings ('' recipe/*.sh -f diff | git apply' helps)
R-043: ScriptShellcheckFailureโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
This issue is raised when shellcheck is enabled but could not
run successfully (something went wrong).
Message or template
There have been errors while scanning with shellcheck.
R-044: LicenseSPDXโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
The license field must be a valid SPDX identifier.
See list at licenses.txt.
Message or template
License is not an SPDX identifier (or a custom LicenseRef) nor an SPDX license expression.
Documentation on acceptable licenses can be found conda-forge.org > Docs > Maintainer Documentation > Contributing packages > SPDX Identifiers and Expressions.
R-045: InvalidLicenseExceptionโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
The license field may accept some SPDX exception expressions, as controlled
in this file
Message or template
License exception is not an SPDX exception.
Documentation on acceptable licenses can be found conda-forge.org > Docs > Maintainer Documentation > Contributing packages > SPDX Identifiers and Expressions.
R-046: PythonBuildBackendHostโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Build backends in Python packages must be explictly added to host.
Message or template
No valid build backend found for Python recipe for package ${package_name} using pip. Python recipes using pip need to explicitly specify a build backend in the host section. If your recipe has built with only pip in the host section in the past, you likely should add setuptools to the host section of your recipe.
R-047: PythonMinPinโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Python packages should depend on certain >={min_version} at runtime,
but build and test against {min_version}.*.
Message or template
noarch: python recipes should usually follow the syntax in our documentation for specifying the Python version.
${recommendations}
- If the package requires a newer Python version than the currently supported minimum version on
conda-forge, you can override thepython_minvariable by adding a Jinja2setstatement at the top of your recipe (or using an equivalentcontextvariable for v1 recipes).
R-048: SpaceSeparatedSpecsโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Prefer name [version [build]] match spec syntax.
Message or template
${output} output has some malformed specs:
${bad_specs_list}
Requirement spec fields should match the syntax name [version [build]]to avoid known issues in conda-build. For example, instead of name =version=build, use name version.* build. There should be no spaces between version operators and versions either: python >= 3.8 should be python >=3.8.
R-049: OSVersionโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Prefer name [version [build]] match spec syntax.
Message or template
The feedstock is lowering the image versions for one or more platforms: ${platforms} (the default is ${default}). Unless you are in the very rare case of repackaging binary artifacts, consider removing these overrides from conda-forge.yml in the top feedstock directory.
R-050: UsePipโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Python packages should be built with pip install ..., not python setup.py install,
which is deprecated.
Message or template
Whenever possible python packages should use pip. See https://conda-forge.org/docs/maintainer/adding_pkgs.html#use-pip
R-051: UsePyPIOrgโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/(meta|recipe).yaml
Grayskull and the conda-forge example recipe used to have pypi.io as a default, but the canonical URL is now PyPI.org.
See https://github.com/conda-forge/staged-recipes/pull/27946.
Message or template
PyPI default URL is now pypi.org, and not pypi.io. You may want to update the default source url.
R0: Recipe v0 (meta.yaml)โ
R0-001: FormattedSelectorsโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/meta.yaml
Recipe format v0 (meta.yaml) supports the notion of line selectors
as trailing comments:
build:
skip: true # [not win]
These must be formatted with two spaces before the # symbol, followed
by one space before the opening square bracket [, followed by no spaces.
The closing bracket must not be surrounded by spaces either.
Message or template
Selectors are suggested to take a <two spaces>#<one space>[<expression>] form. See lines ${lines}
R0-002: OldPythonSelectorsLintโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/meta.yaml
Recipe v0 selectors used to include one Python version selector
per release, like py27 for Python 2.7 and py35 for Python 3.5.
This was deprecated in favor of the py integer, which is preferred.
Message or template
Old-style Python selectors (py27, py35, etc) are only available for Python 2.7, 3.4, 3.5, and 3.6. Please use explicit comparisons with the integer py, e.g. # [py==37] or # [py>=37]. See lines ${lines}
R0-003: OldPythonSelectorsHintโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/meta.yaml
Recipe v0 selectors (see R0-002) used to include one Python
version selector per release, like py27 for Python 2.7 and py35 for Python 3.5.
This was deprecated in favor of the py integer, which is preferred.
Message or template
Old-style Python selectors (py27, py34, py35, py36) are deprecated. Instead, consider using the int py. For example: # [py>=36]. See lines ${lines}
R0-004: NoarchSelectorsV0โ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/meta.yaml
Noarch packages are not generally compatible with v0 selectors
Message or template
noarch packages can't have ${skips}selectors. If the selectors are necessary, please remove noarch: ${noarch}, or selector on line ${line_number}:
${line}
R0-005: JinjaDefinitionsโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/meta.yaml
In v0 recipes, Jinja definitions must follow a particular style.
Message or template
Jinja2 variable definitions are suggested to take a {%<one space>set<one space><variable name><one space>=<one space><expression><one space>%} form. See lines ${lines}
R0-006: LegacyToolchainโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/meta.yaml
The toolchain package is deprecated. Use compilers as outlined in
https://conda-forge.org/docs/maintainer/knowledge_base.html#compilers.
Message or template
Using toolchain directly in this manner is deprecated. Consider using the compilers outlined conda-forge.org > Docs > Maintainer Documentation > Knowledge Base > Compilers.
R1: Recipe v1 (recipe.yaml)โ
R1-001: NoCommentSelectorsโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/recipe.yaml
Recipe v0 selectors (see R0-002) are not supported in v1 recipes.
Message or template
Selectors in comment form no longer work in v1 recipes. Instead, if / then / else maps must be used. See lines ${lines}.
R1-002: NoarchSelectorsV1โ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/recipe.yaml
Noarch packages are not generally compatible with v1 conditional blocks.
Message or template
noarch packages can't have ${skips}selectors. If the selectors are necessary, please remove noarch: ${noarch}.
R1-003: RattlerBldBatโ
- โน๏ธ Hint
- Added in conda-smithy <3.56
- Affected path:
recipe/recipe.yaml
rattler-build does not use bld.bat scripts, but build.bat.
Message or template
Found bld.bat in recipe directory, but this is a recipe v1 (rattler-build recipe). rattler-build uses build.bat instead of bld.bat for Windows builds. Consider renaming bld.bat to build.bat.
RC: All recipe variants filesโ
RC-000: MacOSDeploymentTargetRenameโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(conda_build_config|variants).yaml
https://github.com/conda-forge/conda-forge.github.io/issues/2102
Message or template
The MACOSX_DEPLOYMENT_TARGET key in ${recipe_config_file} needs to be removed or replaced by c_stdlib_version, appropriately restricted to macOS.
RC-001: MacOSDeploymentTargetBelowโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(conda_build_config|variants).yaml
https://github.com/conda-forge/conda-forge.github.io/issues/2102
Message or template
You are setting c_stdlib_version on macOS below the current global baseline in conda-forge (${baseline_version}).
RC-002: MoreThanOneConfigFileโ
- ๐จ Lint
- Added in conda-smithy <3.56
- Affected path:
recipe/(conda_build_config|variants).yaml
Only one recipe variants file must be used in a feedstock.
Message or template
Found two recipe configuration files, but you may only use one! You may use conda_build_config.yaml for both v0 and v1 recipes, while variants.yaml may only be used with v1 recipes.