Как создать многоэкранные привязки

5

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

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

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

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

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

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

задан David Planella 15.04.2016 в 14:59
источник

2 ответа

5

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

    
ответ дан Kyle 15.04.2016 в 15:41
источник
1

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

#!/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 .     

ответ дан David Planella 20.04.2016 в 21:12