Encontré la tarea de compilación de OpenStack en el sitio Ubuntu QA, pero estoy un poco confundido acerca de los pasos de compilación.
Aquí está el enlace para los pasos de compilación: https://jenkins.qa.ubuntu.com/view/Openstack_Testing/view/Grizzly/job/precise_grizzly_keystone_stable/275/consoleText
Del registro de compilación de jenkins, conozco los pasos de cómo Ubuntu construye un paquete Openstack:
- obtener el código de openstack de github, usar
git clone
- construir
openstack tar.gz
archivo usandopython setup.py sdist
- se usa
bzr
para obtener los archivos de control de Debian, que es mantenimiento por canonical - use el
dch
comando para generar una nueva versión de compilación y confirmarlo en local - se usa
bzr builddeb -S -- -sa -us -uc
para generar el paquete fuente y el archivo de control relacionado, comodsc
- firma el paquete
- utilizar
mk-build-deps
para instalar dependencia - utilizar
sbuild
para generar los paquetes deb reales - subir a repositorios de prueba
Mi pregunta es:
- En el paso 5, ya podemos generar los paquetes deb sin
-S
, pero ¿por qué finalmente lo usamossbuild
para generarlo? ¿Esto es solo para la firma? - ¿Cuál es la diferencia entre
bzr builddeb
ysbuild
? Encontré que los scripts de compilación que usaba jenkins se encuentran aquí:
~openstack-ubuntu-testing/openstack-ubuntu-testing
pero cuando trato de ejecutar cualquier comandobin
, siempre obtengo:root@demo:~/openstack-ubuntu-testing/bin# ./build-package Traceback (most recent call last): File "./build-package", line 14, in <module> from openstack_ubuntu_testing.build.component_build import ComponentBuild File "/home/sysadmin/openstack-ubuntu-testing/bin/openstack_ubuntu_testing/build/component_build.py", line 11, in <module> from schroot.executor import SchrootExecutor ImportError: No module named schroot.executor
Intenté usar pip para instalar schroot, pero parece que no tienen un ejecutor.
Por favor ayuda.
package-management
packaging
openstack
Rayo Sol
fuente
fuente
Respuestas:
sbuild
construye un paquete en un entorno aislado usandoschroot
. En este entorno, solo se instalan las dependencias de compilación declaradas por el paquete fuente, y nada más. Esto ayuda a garantizar que la compilación no esté influenciada por el desarrollador o el entorno de CI desde el que se ejecuta. Por ejemplo, sin sbuild, la presencia de un paquete en el entorno de CI puede hacer que parezca que la compilación tiene éxito cuando en realidad era una dependencia de compilación no declarada y, por lo tanto, falla en cualquier otro lugar. Por razones de reproducibilidad y estabilidad, es mejor usar sbuild.fuente