Кросс-компиляция#
Кросс-компиляция — сложная тема, мы приводим здесь лишь некоторые, надеемся, полезные подсказки (пока). По состоянию на май 2023 года, кросс-компиляция на основе crossenv известно, что работает, как используется (например) в conda-forge. Кросс-компиляция без
crossenv требует некоторых ручных переопределений. Вы задаете эти переопределения, передавая параметры в meson setup через meson-python.
Все дистрибутивы, которые, как известно, успешно кросскомпилируют SciPy, используют
python -m build (pypa/build), но с использованием pip для этого должно быть
возможно также. Вот ссылки на «рецепты сборки» SciPy в этих
дистрибутивах:
Смотрите также Документация Meson по кросс-компиляции чтобы узнать, какие параметры вам может потребоваться передать Meson для успешной кросс-компиляции.
Одна распространенная проблема заключается в том, что numpy и pythran требуют
запуска кода Python для получения их каталогов включения. Это обычно
работает плохо, либо случайно выбирая пакеты из сборки
(нативной) Python вместо хостового (кросс) Python, либо требуя crossenv
или QEMU для запуска основного Python. Чтобы избежать этой проблемы, укажите пути к
соответствующим каталогам в вашем кросс-файл:
[constants]
sitepkg = '/abspath/to/host-pythons/site-packages/'
[properties]
numpy-include-dir = sitepkg + 'numpy/core/include'
pythran-include-dir = sitepkg + 'pythran'
Для получения дополнительных сведений и текущего статуса по кросскомпиляции см.:
Отслеживание проблемы для потребностей и вопросов кросс-компиляции SciPy: scipy#14812
Состояние кросскомпиляции в Python: страница ключевой проблемы pypackaging-native