Как определить правильный ввод для системного типа autoconf - build build option? - PullRequest
0 голосов
/ 19 мая 2019

В 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 для определения с помощью команд ОС, как получить эту информацию.

1 Ответ

0 голосов
/ 19 мая 2019

Учитывая мой вопрос, кажется, что из GNU конфигурирует и строит системную документацию раздел Имена конфигурации то, что я описываю, когда спрашиваю "[Linux «OS команды» в основном то, что config.guess уже предоставляет:

Сценарий оболочки config.guess обычно выводит правильное имя конфигурации для системы, в которой он запущен. Это происходит путем запуска uname и изучения других характеристик системы.

Поскольку config.guess обычно может определять имя конфигурации для компьютера, обычно необходимо указывать имя конфигурации только при сборке кросс-компилятора или при сборке с использованием кросс-компилятора.

Таким образом, ответ на мой вопрос, по-видимому, заключается в том, что configure уже поддерживает то, что я хотел сделать, и, пытаясь передать --build информацию, когда я собираюсь на той же машине, на которой буду работать, я ' Я не помогаю, если пытаюсь написать сценарий Shell для автоматизации процесса настройки и сборки.

Вопрос В чем разница с опциями «./configure» «--build», «--host» и «--target»? помогло прийти к такому выводу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...