Como puxar / construir partes depois de atualizar o arquivo stage-packages / snapcraft.yaml sem excluir o cache antigo, snapcraft?

0

Eu estava escrevendo a receita snapcraft e eu pensei que estou pronto para escrever isso, emita o comando snapcraft no diretório base que resulta em um arquivo .snap, instalei e executei o aplicativo, app retornado com algum erro como * lib faltando etc etc Eu adicionei essa lib no meu arquivo snapcraft.yaml e executei novamente o snapcraft no diretório base, que novamente resultou em um arquivo .snap que testei, mas as alterações não foram incluídas nele.

Agora, não quero limpar toda a etapa da parte, pois seria melhor fazer o download dessa única biblioteca em vez de limpá-la e baixar novamente todo o cache.

se eu emitir o comando snapcraft pull para a parte específica que já foi feita, significa que a ferramenta não reconhece as alterações feitas pelo usuário no arquivo snapcraft quando ele o editou.

Existe algo que eu posso fazer para concluir o trabalho ou a ferramenta precisa de mais algumas correções.

    
por ktechpit.org 05.12.2016 / 21:01

1 resposta

0

Como você sabe, você diz ao snapcraft como construir usando uma coleção de peças. Em cada parte, você tem a opção de usar stage-packages , que essencialmente diz "o conteúdo desses debs e suas dependências devem ser incluídos junto com esta parte". Esses pacotes podem ser apenas alguns dados ou libs necessários em tempo de execução, ou eles podem ser algo necessário no momento da construção (ou mesmo puxar!). Para habilitar pacotes de estágio que são necessários no momento do pull ou build, o snapcraft faz o download e descompacta-os na etapa pull . Isso significa que, se você adicionar um novo pacote de estágio a uma peça que já foi puxada, deverá puxá-lo novamente.

Concedido, o snapcraft deve saber que você adicionou um pacote de estágio que torna a etapa pull dessa parte desatualizada. Atualmente, não (como você observou), mas em 2.23 .

Se o pacote de estágio não é realmente necessário para essa parte (ou necessário apenas em tempo de execução) e você realmente não quer voltar a puxar (e reconstruir) a peça em questão, você pode considerar dividir a novos pacotes de estágio em outra parte independente:

extra-debs:
  plugin: nil
  stage-packages: [foo]
    
por Kyle 05.12.2016 / 21:23