В CPython есть опция конфигурации для типа системы сборочной машины
$ wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
$ tar -xzvf Python-3.7.3.tgz
$ cd Python-3.7.3
$ ./configure --help | grep -A 3 "System types"
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
--target=TARGET configure for building compilers for TARGET [HOST]
Как правильно определить, что BUILD
должно быть здесь для любого дистрибутива Linux? В результате поиска я обнаружил CPython Issue 3754 (поддержка кросс-компиляции для сборки Python) Я вижу, что действительными значениями BUILD
являются --build=x86_64-linux-gnu
и --build=x86_64-redhat-linux-gnu
. Я также могу видеть из CPython Dockerfile для Python 3.7 , что --build
устанавливается на вывод $(dpkg-architecture --query DEB_BUILD_GNU_TYPE)
, что в Debian stretch дает
$ docker run --rm debian:stretch /bin/bash -c "echo '$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)'"
x86_64-linux-gnu
но если я нахожусь на чем-то вроде CentOS 7, то как мне правильно определить это с помощью команд ОС?
В идеале мне нужна документация, которая лучше описывает параметр --build
. Так что, если это известно и может быть связано с этим, достаточно ответить на вопрос.
Редактировать: Благодаря Энтони Шоу я узнал , что это не проблема CPython, а связанная с autoconf. Исходя из предоставленной мне информации, я вижу в руководстве autoconf (Раздел 16.7 Указание типа системы) , что
... укажите опцию --build=type
. type
может быть кратким именем для типа системы, таким как «sun4», или каноническим именем, имеющим форму:
cpu-company-system
где система может иметь одну из следующих форм:
os
kernel-os
Смотрите в файле config.sub
возможные значения каждого поля. Если config.sub
не входит в этот пакет, то этот пакет не должен знать тип машины.
CPython имеет config.sub
$ wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
$ tar -xzvf Python-3.7.3.tgz
$ cd Python-3.7.3
$ ./config.sub --help
Usage: ./config.sub [OPTION] CPU-MFR-OPSYS or ALIAS
Canonicalize a configuration name.
Options:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
Report bugs and patches to <config-patches@gnu.org>.
, но мне все еще не очень понятно, существует ли общее решение для Linux для определения с помощью команд ОС, как получить эту информацию.