Como construir snaps de vários arcos

Como construir snaps de vários arcos

Tenho uma ideia que gostaria de construir para várias arquiteturas. No momento, no snapcraft.yamlarquivo eu defino um wrapper como o binário a ser executado, que configura as variáveis ​​de ambiente necessárias para a execução do aplicativo.

Um trecho do código de script que ele contém é o seguinte:

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

Obviamente, a codificação ARCHnão é ideal, pois compilações que não sejam AMD64 não funcionarão corretamente. No entanto, a detecção de arco dpkg-architecturenão funcionará ao usar o Snapcraft.

Como posso detectar dinamicamente a arquitetura do host em meu wrapper para definir os caminhos corretos da biblioteca ao criar o snap com o Snapcraft?

O código está disponível como parte doexemplos de desktop rápidos.

Responder1

Os wrappers binários (e arquivos de serviço) definem a SNAP_ARCHvariável de ambiente para você. Infelizmente, não é uma solução ideal, já que eles não são trigêmeos, mas deve haver informações suficientes para você chegar lá com uma declaração de caso ou algo assim.

Responder2

Para completar, acabei usando o seguinte snippet de shell:

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

No entanto, à medida que o invólucro começa a ficar complicado, estou olhando paracriando um plugin Snapcraftem vez de.

informação relacionada