Create a Conda Feedstock¶
Warning
The following has not been tested for Windows development. Inconsistencies will be present. (i.e. the directory for token storage)
The following extract from the conda-feedstock is a quick summary on conda-forge and how this organisation relates to feedstocks.
conda-forge is a community-led conda channel of installable packages. In order to provide high-quality builds, the process has been automated into the conda-forge GitHub organization. The conda-forge organization contains one repository for each of the installable packages. Such a repository is known as a feedstock.
Installation of conda-smithy¶
Note
It is always advised to ensure conda is up to date when dealing
with conda-related tools. conda update conda
The most reliable way to install conda-smithy, as only one copy of the
package should exist across all environments:
conda install -n root -c conda-forge conda-smithy
Making a New Feedstock¶
Creating a new feedstock will make a new package available for installation through the conda package manager. The steps under Making a New Feedstock needs only to be carried out once in all cases. Everything else with regards to a feedstock falls under “feedstock maintenance”.
Note
The following guide follows the creation of a feedstock for
nrlmsise-00. This process should be adapted.
Setting up a basic recipe¶
Create a directory which will contain the recipe for the feedstock.
mkdir nrlmsise-00
Every conda-build recipe will generally require the three following files
to be present: 1) meta.yaml, 2) build.sh and 3) bld.bat.
Let’s create them.
touch nrlmsise-00/meta.yaml
The meta.yaml file requires the package name and version in
order to initialise the package.
{% set name = "NRLMSISE-00" %} {% set version = "0.1" %} package: name: {{ name|lower }} version: {{ version }}
Now there’s a concept present here which isn’t strictly necessary: templating
through the use of Jinja. This just allows for the definition of variables
which can be reused throughout the yaml file. The effect of the above will
be the following after template rendering:
package: name: nrlmsise-00 version: 0.1
Finally, create the last two required files for the feedstock initialisation.
touch nrlmsise-00/build.sh && touch nrlmsise-00/build.sh
We can now initialise the nrlmsise-00-feedstock:
conda smithy init nrlmsise-00(base) ggarrett@space-station:~/tudat-space$ conda smithy init nrlmsise-00/ No azure token. Create a token and put it in ~/.conda-smithy/azure.token No numpy version specified in conda_build_config.yaml. Falling back to default numpy value of 1.11 WARNING:conda_build.metadata:No numpy version specified in conda_build_config.yaml. Falling back to default numpy value of 1.11 Initialized empty Git repository in /home/ggarrett/tudat-space/nrlmsise-00-feedstock/.git/ [master (root-commit) 73bf19e] Initial feedstock commit with conda-smithy 3.7.4.dev54. 4 files changed, 4 insertions(+) create mode 100644 conda-forge.yml create mode 100644 recipe/bld.bat create mode 100644 recipe/build.sh create mode 100644 recipe/meta.yaml Repository created, please edit conda-forge.yml to configure the upload channels and afterwards call 'conda smithy register-github' (base) ggarrett@space-station:~/tudat-space$ ls nrlmsise-00 nrlmsise-00-feedstock
Success! We have initialised our first feedstock, although you can notice two
potential points of concerning numpy and the lack of an azure token.
This will be both addressed.
Generating Github token¶
If you’re familiar with retrieving a personal access token from Github, you
can skip ahead to Setting up the Github repo. The following screen capture
will give you your bearings on generating the access token:
Settings/Developer settings.
Setting up the Github repo¶
Note
Your personal access token from Github will provide conda-smithy
with the required permissions to register a repo in your organisation,
as long as your account has the correct permissions to the
organisation. Save the token in the file: ~/.conda-smithy/github.token
conda smithy register-github --organization tudat-team ./nrlmsise-00-feedstock
(base) ggarrett@space-station:~/tudat-space$ conda smithy register-github --organization tudat-team ./nrlmsise-00-feedstock
No azure token. Create a token and
put it in ~/.conda-smithy/azure.token
No numpy version specified in conda_build_config.yaml. Falling back to default numpy value of 1.11
WARNING:conda_build.metadata:No numpy version specified in conda_build_config.yaml. Falling back to default numpy value of 1.11
Adding in variants from internal_defaults
INFO:conda_build.variants:Adding in variants from internal_defaults
Created tudat-team/nrlmsise-00-feedstock on github
Repository registered at github, now call 'conda smithy register-ci'
git push upstream master
Generating Azure token¶
Now it’s time to generate our Azure token for the organisation.
Sign in to your organization in Azure DevOps (https://dev.azure.com/{yourorganization})
From your home page, open your user settings, and then select Personal access tokens.
And then select + New Token.
Name your token, select the organization where you want to use the token, and then choose a lifespan for your token.
When you’re done, make sure to copy the token. For your security, it won’t be shown again. Use this token as your password.
conda smithy register-ci --organization tudat-team --feedstock_directory ./nrlmsise-00-feedstock