Como ajustar o arquivo de símbolos em um pacote para uma biblioteca compartilhada

1

Estou tentando atualizar o ktorrent no meu PPA para a versão mais recente do upstream. Também requer um pacote libktorrent atualizado. Parece que o libktorrent foi alterado de maneiras incompatíveis e, portanto, resulta em um novo pacote libktorrent5 em vez do libktorrent4 anteriormente disponível.

No entanto, quando tento criar o pacote no meu PPA, recebo erros sobre diferentes símbolos. Eu tentei algumas maneiras de consertá-lo, mas ele falha com saída diferente a cada vez.

Existe algum guia sobre como gerar corretamente o arquivo de símbolos?

A criação completa e o log de construção são aqui

dh_strip debug symbol extraction: disabling for PPA build dh_strip debug symbol extraction: not doing anything since NO_PKG_MANGLE is given    dh_makeshlibs -Xusr/lib/kde4/ -a -O--parallel -O--
-O--dbg-package=libktorrent-dbg dpkg-gensymbols: warning: some new symbols appeared in the symbols file: see diff output below dpkg-gensymbols: warning: some symbols or patterns disappeared in the symbols file: see diff output below dpkg-gensymbols: warning: debian/libktorrent5/DEBIAN/symbols doesn't match completely debian/libktorrent5.symbols
--- debian/libktorrent5.symbols (libktorrent5_1.3.0-0ubuntu0~ppa4_amd64)
+++ dpkg-gensymbolsNTCQU9   2012-09-30 02:21:19.000000000 +0000 @@ -2912,13 +2912,20 @@   _ZTVN3utp9UTPServer7PrivateE@Base 1.2.0   _ZTVN3utp9UTPServerE@Base 1.2.0   _ZTVN3utp9UTPSocketE@Base 1.2.0
- _ZThn12_N2bt5UTPex5visitE14QSharedPointerINS_4PeerEE@Base 1.3.0
- _ZThn52_N3dht11FindNodeRspD0Ev@Base 1.3.0
- _ZThn52_N3dht11FindNodeRspD1Ev@Base 1.3.0
- _ZThn52_N3dht11GetPeersRspD0Ev@Base 1.3.0
- _ZThn52_N3dht11GetPeersRspD1Ev@Base 1.3.0
- _ZThn8_N2bt4Peer12chunkAllowedEj@Base 1.3.0
- _ZThn8_N2bt4Peer12handlePacketEPKhj@Base 1.3.0
+#MISSING: 1.3.0-0ubuntu0~ppa4# _ZThn12_N2bt5UTPex5visitE14QSharedPointerINS_4PeerEE@Base 1.3.0
+ _ZThn16_N2bt4Peer12chunkAllowedEj@Base 1.3.0-0ubuntu0~ppa4
+ _ZThn16_N2bt4Peer12handlePacketEPKhj@Base 1.3.0-0ubuntu0~ppa4
+ _ZThn24_N2bt5UTPex5visitE14QSharedPointerINS_4PeerEE@Base 1.3.0-0ubuntu0~ppa4
+#MISSING: 1.3.0-0ubuntu0~ppa4# _ZThn52_N3dht11FindNodeRspD0Ev@Base 1.3.0
+#MISSING: 1.3.0-0ubuntu0~ppa4# _ZThn52_N3dht11FindNodeRspD1Ev@Base 1.3.0
+#MISSING: 1.3.0-0ubuntu0~ppa4# _ZThn52_N3dht11GetPeersRspD0Ev@Base 1.3.0
+#MISSING: 1.3.0-0ubuntu0~ppa4# _ZThn52_N3dht11GetPeersRspD1Ev@Base 1.3.0
+ _ZThn80_N3dht11FindNodeRspD0Ev@Base 1.3.0-0ubuntu0~ppa4
+ _ZThn80_N3dht11FindNodeRspD1Ev@Base 1.3.0-0ubuntu0~ppa4
+ _ZThn80_N3dht11GetPeersRspD0Ev@Base 1.3.0-0ubuntu0~ppa4
+ _ZThn80_N3dht11GetPeersRspD1Ev@Base 1.3.0-0ubuntu0~ppa4
+#MISSING: 1.3.0-0ubuntu0~ppa4# _ZThn8_N2bt4Peer12chunkAllowedEj@Base 1.3.0
+#MISSING: 1.3.0-0ubuntu0~ppa4# _ZThn8_N2bt4Peer12handlePacketEPKhj@Base 1.3.0   (c++)"non-virtual thunk to bt::ChunkDownload::getStats(bt::ChunkDownloadInterface::Stats&)@Base"
1.2.0   (c++)"non-virtual thunk to bt::ChunkDownload::~ChunkDownload()@Base" 1.2.0   (c++)"non-virtual thunk to bt::DataCheckerJob::acquired()@Base" 1.2.0 dh_makeshlibs: dpkg-gensymbols -plibktorrent5 -Idebian/libktorrent5.symbols
-Pdebian/libktorrent5 -edebian/libktorrent5/usr/lib/libktorrent.so.5.0.0  returned exit code 1
    
por centic 30.09.2012 / 09:06

1 resposta

2

A equipe Debian do KDE tem um guia para lidar com arquivos de símbolos :

  

Depois de construir uma nova versão da biblioteca, os símbolos podem ter sido   adicionado ou removido, e em ambos os casos você precisa verificar e atualizar o   arquivo de símbolos. Durante a construção, uma diferença entre os símbolos atuais   arquivo e aquele que deveria estar lá em vez disso, será impresso no   saída. Então, como primeiro passo, você precisa salvar o log de construção em um arquivo.   Você pode fazer isso canalizando a saída de seu comando de criação   tee, por exemplo:

     

dpkg-buildpackage -j4 | tee buildlog

     

Caso você tenha esquecido de canalizar o   saída e você quer evitar a reconstrução, você também pode copiar e colar o   parte da saída que contém o diff no novo arquivo.

     

Depois de salvar o diff em um arquivo, você pode corrigir o arquivo de símbolos   executando:

     

pkgkde-symbolshelper patch -p libfoo1 -v 1.8 < buildlog

     

Aqui supomos que seu pacote libfoo1 foi atualizado para a versão 1.8, então "-v   1.8 "no comando é o interruptor para especificar a nova versão.

Você precisará instalar pkg-kde-tools

    
por andrewsomething 06.10.2012 / 01:59