
Tenho uma ideia que gostaria de construir para várias arquiteturas. No momento, no snapcraft.yaml
arquivo 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 ARCH
não é ideal, pois compilações que não sejam AMD64 não funcionarão corretamente. No entanto, a detecção de arco dpkg-architecture
nã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_ARCH
variá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.