Pacotes de extensão do Python para o Launchpad

1

Eu tenho um projeto autotools (c ++) para o qual eu construo pacotes em um launchpad ppa

Recentemente eu tentei adicionar um pacote python a esse arquivo. Eu testei localmente com bzr dh-make e também usando pbuilder . Ambos funcionam fantasticamente. Na barra de lançamento, embora sem alegria.

Um dos logs de compilações é aqui

Você verá que o problema está no destino de instalação gerado automaticamente. Quando vai instalar o módulo python, ele dá um aviso e, em seguida, liga novamente o módulo. Eu fiz uma pesquisa rápida e parecia completamente ok

Aqui está o Makefile.am com o alvo do módulo python adicionado: O erro no log de construção na barra de ativação acaba dizendo:

/usr/bin/ld: cannot find -lvalhalla
collect2: error: ld returned 1 exit status
libtool:   error: error: relink 'valhalla.la' with the above command before installing it
Makefile:2265: recipe for target 'install-pyexecLTLIBRARIES' failed
make[3]: *** [install-pyexecLTLIBRARIES] Error 1

O que é estranho é que nem todos falharam. Talvez seja algo a ver com a simultaneidade.

Percebi que o comando que ele executa é make -j4 install e, em seguida, ao se relinchar, parece não encontrar -lvalhalla , que é o nome da biblioteca principal que o projeto cria. Parece estar instalando várias coisas simultaneamente, talvez este seja o problema. Talvez eu possa substituir apenas o dh_auto_install target no arquivo debian/rules ?

Parece que alguém pode confirmar o mesmo que eu estou vendo neste lista .

    
por Kevin Kreiser 06.01.2017 / 17:25

1 resposta

1

Então, de fato, descobriu-se que o problema tinha a ver com compilações paralelas e, em particular, no final, quando o módulo python estava sendo religado, outras coisas ainda não haviam sido resolvidas. A correção também foi, na verdade, menos uma correção e mais uma solução e é exatamente o que eu propus.

Ou seja, simplesmente adicionei esse destino ao meu arquivo debian/rules :

#because python module depends on main library and somehow dependency is not known we must limit parallelism
override_dh_auto_install:
    dh_auto_install --max-parallel=1

O --max-parallel=1 bit limitará a execução de make -j1 install , o que evitará a condição de corrida em que a libtool está procurando uma biblioteca que ainda não esteja lá (descrita no link acima) ao reconectar o módulo python.

    
por Kevin Kreiser 07.01.2017 / 17:21