OpenAlea depends on a very large number of heterogeneous packages, in C++ and Python. Some of these packages are provided by Conda (MinGW, Qt, PyQt, sip, boost).
For the packages that aren't provided by conda, we use the recipes provided by this repository. We provide also some packages available in conda, to have homogeneous compiler flags (C++11, ...).
- Installing OpenAlea for development
- How to build these packages yourself
- Appendix: Writing a new recipe
Here's how to install everything you need to develop openalea.
- Prerequisite: Install Miniconda
# Install miniconda to the prefix of your choice, e.g. /my/miniconda
# LINUX:
wget https://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh
bash Miniconda-latest-Linux-x86_64.sh
# MAC:
wget https://repo.continuum.io/miniconda/Miniconda-latest-MacOSX-x86_64.sh
bash Miniconda-latest-MacOSX-x86_64.sh
# Windows:
powershell "$client = new-object System.Net.WebClient; $client.DownloadFile(\"https://repo.continuum.io/miniconda/Miniconda2-latest-Windows-x86_64.exe\", \"Miniconda2-latest-Windows-x86_64.exe\")"
Miniconda2-latest-Windows-x86_64.exe
# Activate conda
CONDA_ROOT=`conda info --root`
source ${CONDA_ROOT}/bin/activate root
The conda documentation explains in detail how to create a new package, but here's a quick summary:
- Prerequisite: Install
conda-build
source activate root
conda install conda-build
- Create recipe files
Add a directory to this repo:
cd openalea-recipes
mkdir somepackage
cd somepackage
A complete recipe has at least 3 files:
meta.yaml
build.sh
(used for both Mac and Linux)bld.bat
(used for Windows)
...additional files (such as patches) may be needed for some recipes.
Write meta.yaml:
$ cat meta.yaml
package:
name: somepackage
version: 1.2.3
source:
fn: somepackage-1.2.3.tar.bz2
url: http://www.randompackages.org/somepackage/somepackage-1.2.3.tar.bz2
md5: b060bb137d6bd8accf8f0c4c59d2746d
requirements:
build:
- zlib
- python
run:
- zlib
- python
about:
home: http://www.somepackage.com
license: WYSIWYG v3
Write build.sh:
$ cat build.sh
# configure, make, and install
configure --prefix=$PREFIX --with-zlib=$PREFIX
make -j${CPU_COUNT}
make install
Write bld.bat:
$ cat bld.bat
mkdir build
cd build
REM Configure step
cmake -DCMAKE_PREFIX_PATH=%LIBRARY_PREFIX% -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% -DCMAKE_BUILD_TYPE=Release %SRC_DIR%
REM Build step
devenv SomePackage.sln /Build "%RELEASE_TARGET%"
if errorlevel 1 exit 1
REM Install step
devenv SomePackage.sln /Build "%RELEASE_TARGET%" /Project INSTALL
if errorlevel 1 exit 1
- Build the package
# Switch back to the `openalea-recipes` directory
$ cd ../
# Build the package
$ conda build somepackage
- Upload the package to your anaconda channel.
conda install anaconda-client
# Upload to your personal channel:
anaconda upload /my/miniconda/conda-bld/osx-64/somepackage-1.2.3-0.tar.bz2
# Or to openalea's anaconda channel:
anaconda upload -u openalea /my/miniconda/conda-bld/osx-64/somepackage-1.2.3-0.tar.bz2