Автоинструменты: конвертируйте x86_64 в amd64 и т. Д.

Я пытаюсь включить упаковку для моего C-проекта. Я знаю, что могу использовать AC_CANONICAL_BUILD макрос, чтобы получить @build_cpu@, Но проблема в том, что Debian control файл хочет amd64 вместо x86_64, Есть ли простой способ конвертировать эти uname выводит в формат, который dpkg хочет или мне нужно проверить каждую возможную архитектуру в операторе if?

2 ответа

Решение

Не совсем понятно, что вы пытаетесь сделать, и зачем вам нужно это отображение. У меня сложилось впечатление, что вы, вероятно, пытаетесь сделать что-то не так.

Для пакетов, которые являются переносимыми, вы должны просто использовать один из подстановочных знаков для поля Архитектура. Например, any или если по какой-то причине это специфично для ядра, то что-то вроде linux-any или kfreebsd-any.

Если вам действительно нужно отобразить триплеты или компоненты GNU и архитектуры dpkg, вы всегда можете использовать команду dpkg-Architecture (пожалуйста, проверьте ее man-страницу), но, опять же, это обычно пахнет неправильным способом, и особенно точка зрения выше по течению, которая должна быть нейтральной по отношению к распределению

Может быть, вы можете использовать sed в своем файле autotools для этих преобразований? Например,

      echo `uname -m | sed s/aarch64/arm64/ | sed s/x86_64/amd64/`

выведет arm64 в системе ARM aarch64 и amd64 в системе x86_64.

В данный момент я использую это для автоматизации установки Visual Studio Code Server для нескольких архитектур, например:

      export VERSION=3.12.0 \
&& export ARCH=`uname -m | sed s/aarch64/arm64/ | sed s/x86_64/amd64/` \
&& curl -fOL https://github.com/cdr/code-server/releases/download/v$VERSION/code-server_"$VERSION"_"$ARCH".deb \
&& dpkg -i code-server_"$VERSION"_"$ARCH".deb \
&& rm code-server_"$VERSION"_"$ARCH".deb
Другие вопросы по тегам