Bug #25129
jenkins: erreur eobuilder sur calcul numéro de version
0%
Description
Au moins la deuxième fois que j'observe cette erreur (qui disparaît toute seule sur le build d'après qui teste le même commit) :
https://jenkins2.entrouvert.org/job/authentic2/7/console
+ sudo -H -u eobuilder /usr/local/bin/eobuilder -d jessie authentic HEAD est maintenant à fb42e8d8 api: fix message raised to unauthorized user trying to remove a role (#25096) Déjà à jour. + Init EO Builder CALL: git checkout --quiet master CALL: git reset --hard origin/master Depuis git+ssh://repos.entrouvert.org/authentic * [nouvelle branche] wip/newpassword -> origin/wip/newpassword + Updating git repository and parsing configuration ... CALL: git checkout --quiet master CALL: git pull CALL: git checkout --quiet master + Building from debian-jessie debian folder CALL: git submodule init CALL: git submodule update Traceback (most recent call last): File "/usr/bin/eobuilder-ctl", line 467, in <module> main() File "/usr/bin/eobuilder-ctl", line 445, in main package = prepare_build(dist, project, options, new) File "/usr/bin/eobuilder-ctl", line 226, in prepare_build new_inc = int(last_debian_package_version.split('+')[1]) + 1 ValueError: invalid literal for int() with base 10: 'gfb42e8d8-1~eob80' CALL: git stash --quiet
Historique
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
Hmm, essaye de déduire ce qu'était last_debian_package_versoin dans le build qui foire puis dans le suivant.
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
Nouvelle occurrence : https://jenkins2.entrouvert.org/job/authentic2/11
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
Je pense que je viens de comprendre un bout du problème, en début de script eobuilder-ctl (dans main()
) on a :
new = 1 ... if not output("git fetch", True): new = 0 ... package = prepare_build(dist, project, options, new) ... def prepare_build(..., new): ... if last_version == project['version'] and new \ and "~eob" in last_debian_package_version: new_inc = int(last_debian_package_version.split('+')[1]) + 1 version_suffix = "%s~eob%s+%s" % (debian_revision_number, settings.DEBIAN_VERSIONS[dist], new_inc) else: version_suffix = "%s~eob%s+1" % (debian_revision_number, settings.DEBIAN_VERSIONS[dist])
Ce bout de code est sensé gérer le cas ou la version affichée par le paquet ne change pas mais la branche a changé (et donc dans ce cas on ajoute un versionning local au paquet debian), sauf qu'ici sur authentic2 et la plupart de nos autres projets ça n'arrive plus jamais puisque qu'on génère le numéro de version directement depuis l'identifiant du commit. Ce qui se passe c'est que la façon de détecter si la branche a changé est nulle, git fetch
peut parfaitement retourner un contenu non-vide sans que master
ait changé, genre on a poussé sur une nouvelle branche, un tag, whatever.
Donc en gros eobuilder n'est toujours pas compatible PEP440 (il faudrait faire .rsplit('+', 1)
et pas juste .split('+')
mais aussi on détecte des nouveautés là ou il n'y en a pas, il faudrait stocker le numéro de commit du dernier build et comparer ça avec le numéro actuel, je ne vois que ça.