Как построить многоархивную оснастку

У меня есть оснастка, которую я хотел бы построить для нескольких архитектур. Прямо сейчас в файле snapcraft.yaml я определяю оболочку как исполняемый двоичный файл, который устанавливает переменные среды, необходимые для запуска приложения.

Один фрагмент кода скрипта, который он содержит, состоит в следующем:

#!/bin/sh
ARCH='x86_64-linux-gnu'
export LD_LIBRARY_PATH=$SNAP/usr/lib/$ARCH:$LD_LIBRARY_PATH

Очевидно, что жесткое кодирование ARCH не является оптимальным, так как сборки, отличные от amd64, не будут работать правильно. Тем не менее, обнаружение арки с использованием dpkg-architecture не будет работать при использовании Snapcraft.

Как я могу динамически определять архитектуру хоста в моей оболочке, чтобы задавать правильные пути к библиотекам при создании оснастки с помощью Snapcraft?

Код доступен как часть примеров быстрого рабочего стола .

5
задан 15 April 2016 в 15:59

2 ответа

Двоичные обертки (и сервисные файлы) определяют SNAP_ARCH переменная среды для Вас. К сожалению, не идеальное решение, так как они не триплеты, но это должно быть достаточно информации для Вас для получения там с оператором выбора или чем-то.

0
ответ дан 16 April 2016 в 01:59
  • 1
    К сожалению, это дало мне Error! Your kernel headers for kernel 3.13.0-113-generic cannot be found., который I' ve, пытаясь зафиксировать с помощью askubuntu.com/questions/334136/… , но это дает мне список битых ссылок. – LOlliffe 26 August 2017 в 12:59

Ради полноты я закончил тем, что использовал следующий отрывок оболочки:

#!/bin/sh

case "$SNAP_ARCH" in
    "amd64") ARCH='x86_64-linux-gnu'
    ;;
    "i386") ARCH='i386-linux-gnu'
    ;;
    *)
        echo "Unsupported architecture for this clock app build"
        exit 1
    ;;
esac

Однако, поскольку обертка начинает быть сложной, я скорее смотрю создание плагина Snapcraft вместо этого.

0
ответ дан 16 April 2016 в 01:59

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

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