Objetivo
Se quieren realizar cambios al paquete supercat para hacerlo reproducible en debian testing (buster).
Como no se desean instalar las dependencias de construcción en el sistema
(apt-get build-dep
), se quiere utilizar un entorno schroot para crear el
source del paquete utilizando sbuild
.
En lo que sigue se supone familiaridad con el [nuevo método para probar la reproducibilidad de un paquete en debian][wdo rb howto new method].
Esto está asociado al post setup del nuevo método de pruebas para paquetes reproducibles en debian.
Nota: en lo que sigue se intentará disminuir el tiempo utilizado por sbuild
para construir el paquete fuente
Creación de schroot
Se desea generar un nuevo schroot, distinto al utilizado con reprotest
, ya que
se desea que las dependencias queden instaladas para así acelerar la
construcción del paquete fuente.
Para ello se creará un segundo schroot a partir de buster (testing), cuyo nombre será devel-buster:
$ sudo sbuild-createchroot --chroot-prefix=devel-buster \
--include=eatmydata,ccache,gnupg \
buster \
/srv/chroot/devel-buster-amd64-sbuild \
http://localhost:3142/deb.debian.org/debian
Aquí se agregaron los paquetes eatmydata
, ccache
y gnupg
ya que estos son
incluidos en el schroot
utilizado para construir el paquete de forma
reproducible.
Para agregar las dependencias de construcción del paquete supercat
se
realizará un rebuild de dicho paquete fuente (sin modificarlo):
$ mkdir -p ~/workspace-rb; cd ~/workspace-rb
$ apt-get source supercat/buster
$ sbuild -c devel-buster-amd64-sbuild --purge-deps=never \
--source --no-arch-any --no-arch-all supercat-0.5.5/
Nota: la opcion --purge-deps=never
es la que se utiliza para acelerar las
ejecuciones subsiguientes de sbuild al crear un nuevo paquete fuente.
Nota: si bien el reconstruir el paquete fuente parece superfluo, la ventaja radica en que si existe algún error este se detecta enseguida y este puede atribuirse a la creación del entorno de schroot, ya que no se realizaron cambios al paquete.
Creación del paquete fuente luego de realizar cambios
Para construir una nueva versión del paquete fuente se utilizan los archivos descargados en el paso previo.
Para realizar una prueba se modifica solamente el changelog:
$ cd ~/workspace-rb/supercat-0.5.5/
$ dch -i "Change for test 'build source package'"
$ dch -r ''
$ cd ..
y se vuelve a generar el fuente:
$ sbuild -c devel-buster-amd64-sbuild --purge-deps=never \
--source --no-arch-any --no-arch-all supercat-0.5.5/
En las pruebas realizadas se pasó de utilizar alrededor de 4m30s en el primer build a 55s en los subsiguientes, por lo que se reconoce la utilidad de utilizar un schroot alternativo.
Anexo
Actualización del schroot
Para actualizar el schroot se puede utilizar:
$ sudo sbuild-update --update --upgrade --clean devel-buster-amd64-sbuild
$ sudo schroot --end-session --all-sessions
Cerrar sesiones abiertas
Hay veces que al cancelar el comando sbuild
quedan sesiones colgadas. Para
listarlas y eliminarlas se puede utilizar:
$ schroot --all-sessions --list
$ sudo schroot --end-session --all
Nota: el comando anterior elimina todas las sesiones, por lo cual al
ejecutarlo no se debe estar utilizando sbuild
.