Estoy trabajando en un software que crea paquetes Pacman (que básicamente son tarballs con algunos archivos especiales de metadatos). El conjunto de pruebas crea algunos paquetes, luego compara el paquete resultante con un resultado esperado registrado.
Uno de los campos en los metadatos registrados en el paquete es el tamaño instalado del paquete, determinado al ejecutarse du -s --apparent-size
en el directorio raíz antes de tar' taring.
Todo esto funciona perfectamente en mis cuadros locales de Arch Linux donde desarrollo. Los paquetes, incluido su tamaño instalado en bytes (¡ni siquiera kilobytes, bytes!) Se reproducen exactamente cada vez que ejecuto la prueba.
Ahora también he habilitado esta prueba en Travis, donde se ejecuta (hasta donde yo entiendo de los documentos de Travis) en un contenedor basado en Ubuntu-12.04. Allí, la prueba pasa la mayoría de las veces. La mayoría de las veces A veces, calcula los tamaños instalados que están apagados en un 80-99%.
Aquí hay un ejemplo de una prueba que falla: https://travis-ci.org/holocm/holo/builds/89326780 (La prueba justo antes de eso tuvo éxito). Una de las diferencias relevantes es
@@ -37,7 +37,7 @@
pkgdesc = my foo bar package
url =
packager = Unknown Packager
- size = 37728
+ size = 1464
arch = any
license = custom:none
replaces = foo-bar<2.1
Lo sorprendente de esto es que solo sucede algunas veces, sin un patrón aparente. La prueba organiza los mismos archivos de siempre, se ejecuta du -s --apparent-size
en el árbol resultante y llega a un resultado completamente incorrecto. Intenté reproducir esto en una VM Ubuntu 12.04, y aunque lo vi aparecer allí una o dos veces, tampoco pude ver ningún patrón que me ayudara a reproducir el problema.
Tal vez alguien aquí tiene una idea de qué podría causar este problema.
EDITAR: Oh, hay un patrón que observé, en realidad. du
se ejecuta una vez para cada caso de prueba. Cuando falla para el primer caso de prueba, fallará para todos los casos de prueba en esta ejecución.