# Building Cyclus With Conda¶

Warning

In the cyclus ecosystem, only versions whose micro or patch number (the third and last number) are zero are considered stable. Other releases where the version number is greater than zero are bugfix and maintainence releases and are considered unstable. For example, a release number of 1.42.0 is stable, while 1.42.3 is unstable.

The process of building Conda packages involves a system called Conda Recipes . A Conda Recipe is a directory containing at least two files, meta.yaml and build.sh. Version information, build and run dependencies, the location of the source code, and other information about the package are stored in meta.yaml, while build.sh contains a script to build from source. Packages are built from recipes using the conda build <recipe dir> command. Necessary dependency packages will be automatically downloaded and installed before the build.sh script is run and installed. The final output is a tar.bz2 file which is a Conda package containing the necessary binaries, libraries, etc. This package can then be installed or can be uploaded to Binstar, which is a service provided to store and distribute Conda packages. Notice that Conda requires all dependencies explicitly listed in meta.yaml must have an available Conda package to install.

All associated Conda recipes can be found in the Ciclus Repo. As part of installing and maintaining Cyclus with Conda, recipes for a number of dependencies have also been created. All lowercase directories in this repo (except fetch) are Conda recipes. Additionally, this repo contains a stock .condarc file which automatically points to the Cyclus Binstar Account.

## How to work with Conda¶

There are many ways to customize the files in Ciclus repo.

1) Push a package to Binstar Once you have successfully built a Conda recipe, it can be uploaded to Binstar with the command

binstar upload -u cyclus anaconda/conda-bld/linux-64/cyclus-<VERSION>.tar.bz2


binstar upload -u cyclus anaconda/conda-bld/linux-64/cyclus-1.0.tar.bz2

2) Change the repository to build: Say you want to test your fork of Cyclus before making a pull request. To customize what repos Cyclus and Cycamore are pulled from, look in cyclus/meta.yaml and cycamore/meta.yaml respectively. In these files you can change the git_url field to point to the repo of your choice.
3) Change the branch to build: In cyclus/meta.yaml (or Cycamore), alter the git_tag field to the branch or tag you want to use.
4) Test a new build process for Cyclus and Cycamore: To alter Cyclus or Cycamore’s build process, look at build.sh in Cyclus or Cycamore respectively.
5) Create/upload a new version of a dependency: Alter the dependency’s meta.yaml file to point to the correct version of dependency source code. Build the package, follow instructions in 1 to upload to Binstar.