dpkg: é possível dividir $ {shlibs: Depends}?

0

Estou construindo um projeto que consiste no binário principal e um número de plugins .so. Todo plugin .so está vinculado a um determinado biblioteca, e todos eles exportam o "genérico" API para o binário principal, que dlopen () eles.

Por exemplo, se a distribuição básica do linux tem mais de 10 libs diferentes para saída de som, Eu vou ter 10 plugins .so para saída de som, fornecendo a mesma API para o binário principal, então não importa se 9 deles falharão para dlopen () porque sua lib não está instalada: sucesso dlopen () 'ing apenas 1 seria suficiente. É por isso que coloquei $ {shlibs: Depends} em 'Recommends:' ao invés de 'Depende:'.

Infelizmente isso coloca também os deps do binário principal para 'Recomenda:', que não é o que eu realmente quero. Existe alguma maneira de dividir $ {shlibs: Depends} em partes? Ajudaria se eu pudesse dividir pelo nome binário, digamos $ {shlibs: Depende (main_binary)}, $ {shlibs: Depende (solib1.so)} etc. Mas a divisão por padrões pode funcionar também.

Então, há alguma maneira de dividir essas variáveis?

    
por stsp 15.07.2017 / 19:06

2 respostas

0

Você pode fazer isso especificando os argumentos apropriados para dpkg-shlibdeps ; no seu caso, algo como

dpkg-shlibdeps -dDepends -emain_binary \
               -dRecommends -esolib1.so -esolib2.so ...

Em seguida, use ${shlibs:Depends} e ${shlibs:Recommends} nos locais apropriados.

Se você estiver usando dh overrides, use

override_dh_shlibdeps:
        dpkg-shlibdeps ...

Você encontrará um exemplo (um pouco mais complexo) disso em o pacote de vinho . Isso é executado dh_shlibdeps novamente porque sua substituição dpkg-shlibdeps manipula apenas um pacote.

    
por Stephen Kitt 15.07.2017 / 21:32
0

Com base na resposta de Stephen Kitt, fiz a seguinte substituição:

override_dh_shlibdeps:
    dh_shlibdeps -X.so
    dh_shlibdeps -- -dRecommends -pshlibs-

O primeiro cria $ {shlibs: Depends} para o binário principal excluindo os arquivos do plugin .so, e o segundo cria $ {shlibs-: Recommends}.

Note que eu tive que mangle o prefixo var para "shlibs-", então que a segunda invocação do dpkg-shlibdeps para não Sobrescrever os resultados da primeira invocação. Parece que apenas especificar novo sufixo com -d não é suficiente para evite a sobregravação: antes de gerar $ {shlibs: Recommends} Por algum motivo, removeria todos os $ {shlibs: *}. Mas mutilando o prefixo com -p corrige o problema.

    
por stsp 16.07.2017 / 19:59