• Stars
    star
    137
  • Rank 266,121 (Top 6 %)
  • Language
    Python
  • License
    BSD 3-Clause "New...
  • Created over 9 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The tool for managing conda-forge feedstocks.

Overview

conda-smithy is a tool for combining a conda recipe with configurations to build using freely hosted CI services into a single repository, also known as a feedstock. conda-smithy is still a work-in-progress, but when complete, conda-smithy will:

  • Create a git repo with a conda recipe and the files to run conda builds via CI services.
  • Register the repo on github and push it.
  • Connect the repo to the CI services travis-ci.com, appveyor.com, circleci.com, dev.azure.com (For travis-ci.com, configure your org or user to enable the service for all repos)

tests Coverage Status Code style: black

Installation

The easiest way to install conda-smithy is to use conda and conda-forge:

conda install -n root -c conda-forge conda-smithy

To install conda-smithy from source, see the requirements file in requirements.txt, clone this repo, and python -m pip install ..

Setup

You need a token from github, travis-ci.com, appveyor.com and circleci.com to try out conda-smithy. The commands which need this will tell you where to get these tokens and where to place them. If you need help getting tokens please ask on the conda-forge google group.

You should be able to test parts of conda-smithy with whatever tokens you have. For example, you should be able to conda smithy register-github without the CI service tokens. Re-rendering an existing feedstock is also possible without CI service tokens set.

Re-rendering an existing feedstock

Periodically feedstocks need to be upgraded to include new features. To do this we use conda-smithy to go through a process called re-rendering. Make sure you have installed conda-smithy before proceeding. Re-rendering an existing feedstock is possible without CI service tokens set.

  1. cd <feedstock directory>
  2. conda smithy rerender [--commit]
  3. Commit and push all changes

Optionally one can commit the changes automatically with conda-smithy version 1.4.1+. To do this just use the --commit/-c option. By default this will open an editor to make a commit. It will provide a default commit message and show the changes to be added. If you wish to do this automatically, please just use --commit auto/-c auto and it will use the stock commit message.

Making a new feedstock

  1. Make the feedstock repo: conda smithy init <directory_of_conda_recipe>. For a recipe called foo, this creates a directory called foo-feedstock, populates it with CI setup skeletons, adds the recipe under recipe and initializes it as a git repo.

  2. Create a github repo: conda smithy register-github --organization conda-forge ./foo-feedstock. This requires a github token. You can try it out with a github user account instead of an organization by replacing the organization argument with --user github_user_name. If you are interested in adding teams for your feedstocks, you can provide the --add-teams option to create them. This can be done when creating the feedstock or after.

  3. Register the feedstock with CI services: conda smithy register-ci --organization conda-forge --feedstock_directory ./foo-feedstock. This requires tokens for the CI services. You can give the name of a user instead of organization with --user github_user_name. By default this command requires an Anaconda/Binstar token to be available in ~/.conda-smithy/anaconda.token, or as BINSTAR_TOKEN in the environment. This can be opted out of by specifying --without-anaconda-token, as such execpted package uploads will not be attempted.

    • For Azure, you will have to create a service connection with the same name as your github user or org https://dev.azure.com/YOUR_ORG/feedstock-builds/_settings/adminservices
    • For Azure builds, you will have to export the environment variable AZURE_ORG_OR_USER to point to your Azure org
    • If this is your first build on Azure, make sure to add Library Variable Group containing your BINSTAR_TOKEN for automated anaconda uploads.
  4. Specify the feedstock channel and label: Optionally, you can specify source channels and choose a channel to upload to in recipe/conda_build_config.yaml.

    channel_sources:
      - mysourcechannel1,mysourcechannel2,conda-forge,defaults
    channel_targets:
      - target_channel target_label

    Default source channels are conda-forge,defaults. Default for channel targets is conda-forge main.

  5. Specify your branding in the README.md: Optionally, you can specify the branding on the README.md file by adding the following the conda-forge.yml file:

    github:
      user_or_org: YOUR_GITHUB_USER_OR_ORG
    channels:
      targets:
      -
        - YOUR_ANACONDA_CHANNEL
    
  6. Re-render the feedstock: conda smithy rerender --feedstock_directory ./foo-feedstock

  7. Commit the changes: cd foo-feedstock && git commit, then push git push upstream master.

Running a build

When everything is configured you can trigger a build with a push to the feedstock repo on github.

Releasing conda-smithy

Before making a release, consult @conda-forge/core and wait some time for objections.

To release a new version of conda-smithy, you can use the rever release managment tool. Run rever in the root repo directory with the version number you want to release. For example,

$ rever 0.1.2

Conda-smithy in a nutshell

xkcd 1629: Tools

xkcd 1629: Tools

Titletext: I make tools for managing job-hunting sites for people who make tools for managing job-hunting sites for people who make tools for ...

More Repositories

1

miniforge

A conda-forge distribution.
Shell
3,613
star
2

staged-recipes

A place to submit conda recipes before they become fully fledged conda-forge feedstocks
Python
650
star
3

conda-forge.github.io

The conda-forge website.
Python
110
star
4

tensorflow-feedstock

A conda-smithy repository for tensorflow.
Shell
87
star
5

gh-feedstock

A conda-smithy repository for gh.
Shell
74
star
6

opencv-feedstock

A conda-smithy repository for opencv.
Batchfile
58
star
7

feedstocks

All conda-forge feedstocks, in one convenient place
56
star
8

conda-forge-pinning-feedstock

A conda-smithy repository for conda-forge-pinning.
Python
45
star
9

python-feedstock

A conda-smithy repository for python.
Shell
43
star
10

rasterio-feedstock

A conda-smithy repository for rasterio.
Python
42
star
11

docker-images

Repository to host the Docker images files used in conda-forge
Dockerfile
40
star
12

qgis-feedstock

A conda-smithy repository for qgis.
Shell
36
star
13

miniforge-images

Container images that include conda-forge's miniforge setup
Dockerfile
31
star
14

root-feedstock

A conda-smithy repository for root.
CMake
27
star
15

gdal-feedstock

A conda-smithy repository for gdal.
Shell
27
star
16

matplotlib-feedstock

A conda-smithy repository for matplotlib.
Batchfile
23
star
17

cudatoolkit-dev-feedstock

A conda-smithy repository for cudatoolkit-dev.
Python
23
star
18

python-spams-feedstock

A conda-smithy repository for python-spams.
Shell
22
star
19

admin-requests

Python
20
star
20

pyside2-feedstock

A conda-smithy repository for pyside2.
Shell
18
star
21

cfep

conda-forge's Enhancement Proposal
17
star
22

by-the-numbers

Data, notebooks and visualizations of the conda-forge ecosystem
Jupyter Notebook
15
star
23

julia-feedstock

A conda-smithy repository for julia.
Shell
15
star
24

gdb-feedstock

A conda-smithy repository for gdb.
Shell
15
star
25

geopandas-feedstock

A conda-smithy repository for geopandas.
Python
15
star
26

boost-feedstock

A conda-smithy repository for boost.
Shell
14
star
27

pytorch-cpu-feedstock

A conda-smithy repository for pytorch-cpu.
Shell
13
star
28

scipoptsuite-feedstock

A conda-smithy repository for scipoptsuite.
Batchfile
13
star
29

ffmpeg-feedstock

A conda-smithy repository for ffmpeg.
Shell
12
star
30

spacy-feedstock

A conda-smithy repository for spacy.
Shell
12
star
31

isce2-feedstock

A conda-smithy repository for isce2.
Shell
12
star
32

poppler-feedstock

A conda-smithy repository for poppler.
Shell
12
star
33

fenics-feedstock

A conda-smithy repository for fenics.
Shell
12
star
34

memory_profiler-feedstock

A conda-smithy repository for memory_profiler.
11
star
35

vtk-feedstock

A conda-smithy repository for vtk.
Shell
11
star
36

r-base-feedstock

A conda-smithy repository for r-base.
Shell
11
star
37

qt-feedstock

A conda-smithy repository for qt.
C++
11
star
38

implicit-feedstock

A conda-smithy repository for implicit.
11
star
39

jupyterlab-feedstock

A conda-smithy repository for jupyterlab.
11
star
40

nvcc-feedstock

A conda-smithy repository for nvcc.
Shell
10
star
41

ipopt-feedstock

A conda-smithy repository for ipopt.
CMake
10
star
42

cling-feedstock

A conda-smithy repository for cling.
Shell
10
star
43

ray-packages-feedstock

A conda-smithy repository for ray-packages.
Shell
10
star
44

ctng-compiler-activation-feedstock

A conda-smithy repository for ctng-compiler-activation.
Shell
10
star
45

earthengine-api-feedstock

A conda-smithy repository for earthengine-api.
10
star
46

conda-forge-ci-setup-feedstock

A conda-smithy repository for conda-forge-ci-setup.
Python
10
star
47

clangdev-feedstock

A conda-smithy repository for clangdev.
Shell
10
star
48

casadi-feedstock

A conda-smithy repository for casadi.
Batchfile
9
star
49

python-duckdb-feedstock

A conda-smithy repository for python-duckdb.
Python
9
star
50

scrapy-feedstock

A conda-smithy repository for scrapy.
9
star
51

ctng-compilers-feedstock

A conda-smithy repository for ctng-compilers.
Shell
9
star
52

basemap-feedstock

A conda-smithy repository for basemap.
Batchfile
9
star
53

osmnx-feedstock

A conda-smithy repository for osmnx.
8
star
54

go-feedstock

A conda-smithy repository for go.
Shell
8
star
55

petsc-feedstock

A conda-smithy repository for petsc.
Shell
8
star
56

openblas-feedstock

A conda-smithy repository for openblas.
Shell
8
star
57

uwsgi-feedstock

A conda-smithy repository for uwsgi.
Shell
8
star
58

rdkit-feedstock

A conda-smithy repository for rdkit.
Batchfile
8
star
59

openmpi-feedstock

A conda-smithy repository for openmpi.
Shell
8
star
60

caffe-feedstock

A conda-smithy repository for caffe.
Makefile
8
star
61

fiona-feedstock

A conda-smithy repository for fiona.
Shell
8
star
62

shapely-feedstock

A conda-smithy repository for shapely.
8
star
63

compilers-feedstock

A conda-smithy repository for compilers.
8
star
64

orekit-feedstock

A conda-smithy repository for orekit.
Shell
8
star
65

gazebo-feedstock

A conda-smithy repository for gazebo.
Shell
8
star
66

conda-forge-repodata-patches-feedstock

A conda-smithy repository for conda-forge-repodata-patches.
Python
7
star
67

rust-feedstock

A conda-smithy repository for rust.
Shell
7
star
68

pinocchio-feedstock

A conda-smithy repository for pinocchio.
Shell
7
star
69

lammps-feedstock

A conda-smithy repository for lammps.
Shell
7
star
70

conda-forge-webservices

the heroku app deployed to run conda-forge admin commands and linting
Python
7
star
71

boost-cpp-feedstock

A conda-smithy repository for boost-cpp.
Shell
7
star
72

conda-feedstock

A conda-smithy repository for conda.
Batchfile
7
star
73

fastapi-feedstock

A conda-smithy repository for fastapi.
7
star
74

pysoundfile-feedstock

A conda-smithy repository for pysoundfile.
7
star
75

pandas-feedstock

A conda-smithy repository for pandas.
7
star
76

gstreamer-feedstock

A conda-smithy repository for gstreamer.
Shell
7
star
77

h5py-feedstock

A conda-smithy repository for h5py.
Python
7
star
78

jaxlib-feedstock

A conda-smithy repository for jaxlib.
Shell
7
star
79

gmt-feedstock

A conda-smithy repository for gmt.
Shell
7
star
80

conda-ecosystem-user-package-isolation-feedstock

A conda-smithy repository for conda-ecosystem-user-package-isolation.
Shell
7
star
81

graph-tool-feedstock

A conda-smithy repository for graph-tool.
Shell
7
star
82

esmpy-feedstock

A conda-smithy repository for esmpy.
Shell
6
star
83

gnuradio-feedstock

A conda-smithy repository for gnuradio.
Batchfile
6
star
84

vega-cli-feedstock

A conda-smithy repository for vega-cli.
Shell
6
star
85

lapack-feedstock

A conda-smithy repository for lapack.
Shell
6
star
86

pyarrow-feedstock

Now part of https://github.com/conda-forge/arrow-cpp-feedstock / A conda-smithy repository for pyarrow.
Batchfile
6
star
87

qe-feedstock

A conda-smithy repository for qe.
Shell
6
star
88

snowflake-connector-python-feedstock

A conda-smithy repository for snowflake-connector-python.
Shell
6
star
89

openmc-feedstock

A conda-smithy repository for openmc.
Shell
6
star
90

nco-feedstock

A conda-smithy repository for nco.
Shell
6
star
91

lightgbm-feedstock

A conda-smithy repository for lightgbm.
Python
6
star
92

gsl-feedstock

A conda-smithy repository for gsl.
C
6
star
93

numpy-feedstock

A conda-smithy repository for numpy.
Batchfile
6
star
94

polars-feedstock

A conda-smithy repository for polars.
Batchfile
6
star
95

arrow-cpp-feedstock

A conda-smithy repository for arrow-cpp.
Shell
6
star
96

ruff-feedstock

A conda-smithy repository for ruff.
Batchfile
6
star
97

geant4-feedstock

A conda-smithy repository for geant4.
Shell
6
star
98

emacs-feedstock

A conda-smithy repository for emacs.
Shell
6
star
99

scikit-learn-feedstock

A conda-smithy repository for scikit-learn.
6
star
100

python-eccodes-feedstock

A conda-smithy repository for python-eccodes.
Shell
6
star