diff --git a/.ci_support/build_all.py b/.ci_support/build_all.py index 5065e502278f7..01d5d6c6209d6 100644 --- a/.ci_support/build_all.py +++ b/.ci_support/build_all.py @@ -1,5 +1,6 @@ from itertools import chain import json +from shutil import rmtree import tempfile import conda.base.context import conda.core.index @@ -23,6 +24,9 @@ from yaml import BaseLoader, load +EXAMPLE_RECIPE_FOLDERS = ["example", "example-new-recipe"] + + def get_host_platform(): from sys import platform if platform == "linux" or platform == "linux2": @@ -238,6 +242,10 @@ def build_folders(recipes_dir, folders, arch, channel_urls): def build_folders_rattler_build(recipes_dir: str, platform, arch, channel_urls: list[str]): config = get_config(arch, channel_urls) + + # Remove the example recipes to ensure that they are not also build. + for example_recipe in EXAMPLE_RECIPE_FOLDERS: + rmtree(os.path.join(recipes_dir, example_recipe), ignore_errors=True) # Determine the locations for the variant config files. specs = OrderedDict() @@ -291,7 +299,7 @@ def read_mambabuild(recipes_dir): folders = os.listdir(recipes_dir) conda_build_tools = [] for folder in folders: - if folder == "example": + if folder in EXAMPLE_RECIPE_FOLDERS: continue cf = os.path.join(recipes_dir, folder, "conda-forge.yml") if os.path.exists(cf): diff --git a/.github/workflows/correct_directory.yml b/.github/workflows/correct_directory.yml index 3eef316c92a78..9db47cbbf2d97 100644 --- a/.github/workflows/correct_directory.yml +++ b/.github/workflows/correct_directory.yml @@ -31,6 +31,7 @@ jobs: '\nUnfortunately, the recipe was added directly in the `recipes` folder without its own subfolder.\n' + 'Please move the recipe file into a folder with the name of the package you want to submit.\n\n' + 'For example: if your recipe is currently under `recipes/.yaml`, ' + - 'it should be moved to `recipes//meta.yaml`.\n' + + 'it should be moved to `recipes//meta.yaml` ' + + 'or, if you are using the new yaml based recipe format, `recipes//recipe.yaml`\n' + 'Thanks!' }) diff --git a/.github/workflows/scripts/create_feedstocks.py b/.github/workflows/scripts/create_feedstocks.py index ed9b5ffd7cf9c..e73d5f83d8d7a 100755 --- a/.github/workflows/scripts/create_feedstocks.py +++ b/.github/workflows/scripts/create_feedstocks.py @@ -61,7 +61,7 @@ def list_recipes() -> Iterator[tuple[str, str]]: # to be helpful. # .DS_Store is created by macOS to store custom attributes of its # containing folder. - if recipe_dir.name in ["example", ".DS_Store"]: + if recipe_dir.name in ["example", "example-new-recipe", ".DS_Store"]: continue # Try to look for a conda-build recipe. diff --git a/README.md b/README.md index 62cbd1a891352..7f7bcedc9e397 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ If the issue persists, support can be found [on Gitter](https://gitter.im/conda- ## Getting started 1. Fork this repository. -2. Make a new folder in `recipes` for your package. Look at the example recipe, our [documentation](http://conda-forge.org/docs/maintainer/adding_pkgs.html#) and the [FAQ](https://github.com/conda-forge/staged-recipes#faq) for help. +2. Make a new folder in `recipes` for your package. Look at the example recipes, our [documentation](http://conda-forge.org/docs/maintainer/adding_pkgs.html#) and the [FAQ](https://github.com/conda-forge/staged-recipes#faq) for help. 3. Open a pull request. Building of your package will be tested on Windows, Mac and Linux. 4. When your pull request is merged a new repository, called a feedstock, will be created in the github conda-forge organization, and build/upload of your package will automatically be triggered. Once complete, the package is available on conda-forge. diff --git a/recipes/example-new-recipe/recipe.yaml b/recipes/example-new-recipe/recipe.yaml new file mode 100644 index 0000000000000..a9929b6e17e4d --- /dev/null +++ b/recipes/example-new-recipe/recipe.yaml @@ -0,0 +1,90 @@ +# This example shows how to define a recipe using the new YAML based recipe format introduced by +# CEP 13. + +# For more information about this format see: https://prefix-dev.github.io/rattler-build/latest/reference/recipe_file/ + +# Note: there are many handy hints in comments in this example -- remove them when you've finalized your recipe + +# Define variables in this section that you can use in other parts. +context: + name: simplejson + version: "3.8.2" + +package: + name: ${{ name|lower }} + version: ${{ version }} + +source: + url: https://pypi.io/packages/source/${{ name[0] }}/${{ name }}/${{ name }}-${{ version }}.tar.gz + # If getting the source from GitHub, remove the line above, + # uncomment the line below, and modify as needed. Use releases if available: + # url: https://github.com/simplejson/simplejson/releases/download/${{ version }}/simplejson-${{ version }}.tar.gz + # and otherwise fall back to archive: + # url: https://github.com/simplejson/simplejson/archive/v${{ version }}.tar.gz + sha256: d58439c548433adcda98e695be53e526ba940a4b9c44fb9a05d92cd495cdd47f + # sha256 is the preferred checksum -- you can get it for a file with: + # `openssl sha256 `. + # You may need the openssl package, available on conda-forge: + # `conda install openssl -c conda-forge`` + +build: + # Uncomment the following line if the package is pure Python and the recipe is exactly the same for all platforms. + # It is okay if the dependencies are not built for all platforms/versions, although selectors are still not allowed. + # See https://conda-forge.org/docs/maintainer/knowledge_base.html#noarch-python for more details. + # noarch: python + # If the installation is complex, or different between Unix and Windows, use separate build.bat and build.sh files instead of this key. + # By default, the package will be built for the Python versions supported by conda-forge and for all major OSs. + # Add the line "skip: True # [py<35]" (for example) to limit to Python 3.5 and newer, or "skip: True # [not win]" to limit to Windows. + # More info about selectors can be found in the conda-build docs: + # https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#preprocessing-selectors + script: python -m pip install . -vv + number: 0 + +requirements: + build: + # If your project compiles code (such as a C extension) then add the required compilers as separate entries here. + # Compilers are named 'c', 'cxx' and 'fortran'. + - ${{ compiler('c') }} + host: + - python + - pip + run: + - python + +tests: + # Some packages might need a `test/commands` key to check CLI. + - python: + # A list of modules that the test will try to import + imports: + - simplejson + - simplejson.tests + # Also run `pip check` to verify the integrity + pip_check: true + +about: + homepage: https://github.com/simplejson/simplejson + summary: 'Simple, fast, extensible JSON encoder/decoder for Python' + description: | + simplejson is a simple, fast, complete, correct and extensible + JSON encoder and decoder for Python 2.5+ and + Python 3.3+. It is pure Python code with no dependencies, but includes + an optional C extension for a serious speed boost. + # Remember to specify the license variants for BSD, Apache, GPL, and LGPL. + # Use the SPDX identifier, e.g: GPL-2.0-only instead of GNU General Public License version 2.0 + # See https://spdx.org/licenses/ + license: MIT + # It is required to include a license file in the package, + # (even if the license doesn't require it) using the license_file entry. + # Please also note that some projects have multiple license files which all need to be added using a valid yaml list. + # See https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#license-file + license_file: LICENSE.txt + # The doc_url and dev_url are optional. + documentation: https://simplejson.readthedocs.io/ + repository: https://github.com/simplejson/simplejson + +extra: + recipe-maintainers: + # GitHub IDs for maintainers of the recipe. + # Always check with the people listed below if they are OK becoming maintainers of the recipe. (There will be spam!) + - LisaSimpson + - LandoCalrissian