Como construir pressões de vários arcos

5

Eu tenho um clique que gostaria de criar para várias arquiteturas. No momento, no arquivo snapcraft.yaml , 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 pedaço 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 ARCH não é ideal, pois as compilações não-amd64 não funcionarão corretamente. No entanto, a detecção de arco usando dpkg-architecture não funcionará ao usar o Snapcraft.

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

O código está disponível como parte do desktop rápido exemplos .

    
por David Planella 15.04.2016 / 14:59

2 respostas

5

Os invólucros binários (e arquivos de serviço) definem a variável de ambiente SNAP_ARCH para você. Infelizmente não é uma solução ideal, uma vez que não são trigêmeos, mas deve ser informação suficiente para você chegar lá com uma declaração de caso ou algo assim.

    
por Kyle 15.04.2016 / 15:41
1

Por questão de perfeição, acabei usando o seguinte fragmento 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, como o wrapper começa a ficar complicado, prefiro criar um plug-in do Snapcraft .

    
por David Planella 20.04.2016 / 21:12