1 votos

Edificio de Extensión de Python Paquetes de Launchpad

Tengo una autotools proyecto (c++) que he construir paquetes para en un launchpad ppa

Recientemente he intentado agregar un paquete de python para ese archivo. Lo he probado localmente con bzr dh-make y también el uso de pbuilder. Ambos trabajan de manera fantástica. En launchpad aunque no hay alegría.

Una de las compilaciones de los registros está aquí

Verás, el problema es con el autogenerado instalar destino. Cuando se va a instalar el módulo de python que nos da una advertencia y, a continuación, re-conecta el módulo. Hice rápidamente un poco de investigación y parecía completamente ok

Aquí es el Makefile.am con el agregado módulo de python de destino: El error en el registro de generación en launchpad termina diciendo:

/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

Qué extraño es que no todos ellos fallaron. Tal vez sea algo que ver con la simultaneidad.

Me di cuenta de que el comando se ejecuta es make -j4 install y, a continuación, volver a vincular parece decir: no se puede encontrar -lvalhalla que es el nombre de la biblioteca principal, el proyecto genera. Parece ser que la instalación de varias cosas al mismo tiempo tal vez este es el problema. Tal vez yo pueda reemplazar sólo el dh_auto_install de destino en la debian/rules archivo?

Parece que alguien más puede confirmar la misma como lo que estoy viendo en esta lista.

1voto

Kevin Kreiser Puntos 55

Así que, de hecho, hizo que el problema era que hacer con el paralelo se construye y, en particular, al final, cuando el módulo de python está siendo re-ligado otras cosas no ha sido isntalled todavía. La revisión también fue, de hecho, menos de una corrección y más de un trabajo a su alrededor y es exactamente lo que he propuesto.

Es decir, yo simplemente agrega este destino para mi debian/rules archivo:

#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

El --max-parallel=1 poco se limite a la ejecución de make -j1 install que va a evitar la condición de carrera donde libtool está buscando una lib que no existe todavía (se describe en el enlace de arriba) para volver a vincular el módulo de python.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: