Использование правильных переменных среды при использовании conda build

Я хотел бы отправить пакет C++ ( https://github.com/modsim/cadet) в виде пакета anaconda с оболочкой Python. Пакет зависит от hdf5, LAPACK и пакета солнечных часов. Все они доступны в виде пакета 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++ с общими библиотеками.

РЕДАКТИРОВАТЬ

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

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

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

пакет: имя: pycadet версия: 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

Есть намеки?

0 ответов

Другие вопросы по тегам