Как я представляю $ARCH-pc-linux-gnu в файле установки Debian?

Я в настоящее время работаю над Октавой GNU PPA. Мой octave.install файл (чтобы к моему знанию следует тем же конвенциям форматирования файлов правил) должен включать файлы от:

usr/lib/${DEB_HOST_MULTIARCH}/octave/${DEB_VERSION_UPSTREAM}/exec/x86_64-pc-linux-gnu/*

для 64-разрядного (или amd64) сборка и:

usr/lib/${DEB_HOST_MULTIARCH}/octave/${DEB_VERSION_UPSTREAM}/exec/i386-pc-linux-gnu/*

для 32-разрядной сборки. Как я пишу свой файл установки так, чтобы он включал эти файлы в эти соответствующие системы? Я попробовал:

ARCH=$(uname -m)
usr/lib/${DEB_HOST_MULTIARCH}/octave/${DEB_VERSION_UPSTREAM}/exec/$ARCH-pc-linux-gnu/*

в надежде, что общие черты между файлами правил и сценарием оболочки, с точки зрения их синтаксиса, позволили бы этой строке работать. Но $ARCH переменную оставили неоцененной (т.е. это оставили как $ARCH, и не замененный значение я определил в строке, прежде чем) и отказавшая сборка (вот будет журнал сборки).

Править: Панель запуска только что закончила пытаться создать предложение для использования ${ARCH} вместо $ARCH в предпринятом вышеупомянутом фиксируют. Вот ошибка:

find debian/tmp -name '*.la' -delete
make[1]: Leaving directory `/<<PKGBUILDDIR>>'
   dh_install -a -O--parallel
    install -d debian/octave//usr/bin
    cp -a debian/tmp/usr/bin/octave-4.2.0 debian/octave//usr/bin/
    cp -a debian/tmp/usr/bin/octave-cli debian/octave//usr/bin/
    cp -a debian/tmp/usr/bin/octave-cli-4.2.0 debian/octave//usr/bin/
    cp -a debian/tmp/usr/share/applications debian/octave//usr/share/
    install -d debian/octave/-m\)
    cp -a debian/tmp/ARCH=\$\(uname debian/octave/-m\)/
cp: cannot stat ‘debian/tmp/ARCH=$(uname’: No such file or directory
dh_install: cp -a debian/tmp/ARCH=$(uname debian/octave/-m)/ returned exit code 1
make: *** [binary-arch] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary-arch gave error exit status 2
--------------------------------------------------------------------------------
Build finished at 20161117-1936
3
задан 17 November 2016 в 22:40

1 ответ

Как ${DEB_HOST_MULTIARCH}, существуют другие переменные для деталей информации об архитектуре. Как зарегистрировано ниже из руководства политики Debian:

4,9 Основных сценария здания: debian/rules

архитектура мы основываемся и создаем для, определяются make переменные с помощью утилиты dpkg-architecture. Можно определить архитектуру Debian и строку спецификации архитектуры стиля GNU для архитектуры сборки, а также для архитектуры хоста. Архитектура сборки является архитектурой, на которой debian/rules выполняется, и сборка пакета выполняется. Архитектура хоста является архитектурой, на которой получающийся пакет будет установлен и выполнен. Они обычно - то же, но могут отличаться в случае кросс-компиляции (создающий пакеты для одной архитектуры на машинах другой архитектуры).

Вот список поддерживаемых, делают переменные:

DEB_*_ARCH (the Debian architecture)    
DEB_*_ARCH_CPU (the Debian CPU name)
DEB_*_ARCH_OS (the Debian System name)
DEB_*_GNU_TYPE (the GNU style architecture specification string)
DEB_*_GNU_CPU (the CPU part of DEB_*_GNU_TYPE)
DEB_*_GNU_SYSTEM (the System part of DEB_*_GNU_TYPE)

, где * или BUILD для спецификации архитектуры сборки или HOST для спецификации архитектуры хоста.

Обратная совместимость может быть обеспечена в файле правил путем установки необходимых переменных на подходящие значения по умолчанию; обратитесь к документации dpkg-architecture для деталей.

важно понять, что DEB_*_ARCH строка только определяет, для какой архитектуры Debian мы основываемся или. Это не должно использоваться для получения информации о системе или ЦП; DEB_*_ARCH_CPU и DEB_*_ARCH_OS переменные должны использоваться для этого. Переменные стиля GNU должны обычно только использоваться с восходящими системами сборки.

Источник: https://www.debian.org/doc/debian-policy/ch-source.html

тот, который Вы ищете, DEB_HOST_GNU_CPU. Таким образом, новая строка установки должна быть:

usr/lib/${DEB_HOST_MULTIARCH}/octave/${DEB_VERSION_UPSTREAM}/exec/${DEB_HOST_GNU_CPU}-pc-linux-gnu/*

можно взглянуть на значения этих переменных в локальной машине путем выполнения:

~$ dpkg-architecture
DEB_BUILD_ARCH=amd64
DEB_BUILD_ARCH_BITS=64
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_ARCH_ENDIAN=little
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=x86_64-linux-gnu
DEB_BUILD_MULTIARCH=x86_64-linux-gnu
DEB_HOST_ARCH=amd64
DEB_HOST_ARCH_BITS=64
DEB_HOST_ARCH_CPU=amd64
DEB_HOST_ARCH_ENDIAN=little
DEB_HOST_ARCH_OS=linux
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=x86_64-linux-gnu
DEB_HOST_MULTIARCH=x86_64-linux-gnu
DEB_TARGET_ARCH=amd64
DEB_TARGET_ARCH_BITS=64
DEB_TARGET_ARCH_CPU=amd64 
2
ответ дан 1 December 2019 в 16:56

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

Похожие вопросы: