Использование правильных переменных среды при использовании conda build - PullRequest
0 голосов
/ 03 ноября 2018

Я бы хотел отправить пакет c ++ (https://github.com/modsim/cadet) как пакет anaconda с оболочкой python. Пакет зависит от hdf5, LAPACK и пакета sundials. Все они доступны в виде пакета anaconda, что делает его очень удобным .

В настоящее время я собираю пакет (без conda), используя следующий маленький скрипт:

#!bin/bash
export SUNDIALS_ROOT=~/anaconda3/include/sundials
cmake -DCMAKE_INSTALL_PREFIX="~/Dokumente/projects/pycadet/cadet" -DCMAKE_LIBRARY_PATH="~/anaconda3/lib" -DBLA_VENDOR=Intel10_64lp ../code/
make
make install

Я застрял над чем-то очень простым, но чтение всей документации и просмотр руководств на YouTube не помогают. Как я могу сделать этот код универсальным, используя conda-build? Я хотел бы установить пути к солнечным часам, mkl, hdf5 и т. Д. Таким образом, чтобы он работал в любой системе.

Если я правильно понял, я создаю пакет conda в моей системе, например linux64. Это включает вызов cmake в сценарии setup.sh. Но как система узнает, где все библиотеки расположены на другом компьютере (например, если кто-то захочет установить мой пакет с помощью conda install)? Например:

export SUNDIALS_ROOT = ~ / anaconda3 / include / sundials

эта строка, очевидно, работает только на моем компьютере или любом другом, на котором anaconda установлена ​​в домашнем каталоге и называется anaconda3.

Любые намеки высоко ценятся. Я просматриваю примеры рецептов сборки conda и надеюсь найти подходящий пример, но не могу представить, что я единственный, кто пытается доставить оболочку Python для пакета c ++ с общими библиотеками.

EDIT

Я немного приблизился к тому, чего хочу достичь, используя следующие шаги:

Я добавил: Конда Конфиг - дополнительные каналы Конда-Фордж

А потом отредактировал meta.yaml:

пакет: имя: пикадет версия: 3.1.2

build:
    number: 0
source:
    url: https://github.com/modsim/CADET/archive/v3.1.2.zip

requirements:
    build:
    - sundials
about:
    home: https://github.com/modsim/CADET
    license: GPL
summary: A package for numerical simulation of chromatography

Все требования загружаются автоматически, и все работает, пока не произойдет сбой make. Build.sh:

#!bin/bash
#
# The build receipy for conda 
#
#
#
#
# You can run build.sh with bash -x -e. The -x makes it echo each command that is run
# and the -e makes it exit whenever a command in the script returns nonzero exit status.
set -x -e

INCLUDE_PATH="${PREFIX}/include"
LIBRARY_PATH="${PREFIX}/lib"
CADET_PATH="${PREFIX}/cadet"

# get out of the work directory (contains downloaded cadet)
cd ..

# make the build directory (in source builds are prohibited)
mkdir build

# get into it
cd build

#export SUNDIALS_ROOT=${PREFIX}/include/sundials
cmake -DCMAKE_INSTALL_PREFIX="${CADET_PATH}" -DCMAKE_LIBRARY_PATH="${LIBRARY_PATH}"-DBLA_VENDOR=Intel10_64lp ${SRC_DIR} ../work/
make
make install

Есть подсказки?

...