[Régression] Dernière version de CUPS (Résolu)

Mise à jour / Création /debug de paquetages
Avatar de l’utilisateur
liOnux
Hankyu
Messages : 41
Inscription : sam. 09 févr. 2019, 11:46
Localisation : Bordeaux

[Régression] Dernière version de CUPS (Résolu)

Message par liOnux »

Bonjour à tous,

Nous sommes au moins 2 utilisateurs d'imprimantes Samsung à avoir constaté un bug sur la version 2.2.11-1 de CUPS :
SPL-C ERROR - Please use the proper driver
POSITION : 0x0 (0)
SYSTEM : src_5.47/xl_image
LINE : 629
VERSION : SPL-C 5.47 01-15-2010
Si nous rétrogradons CUPS vers la version 2.2.10-2, nos imprimantes fonctionnent à nouveau.
J'ai constaté le même problème en installant directement le driver Samsung sans passer par un paquet :

https://aur.archlinux.org/pkgbase/samsu ... ent-688031

Christoph gysin, le mainteneur du paquet "samsung-unified-driver" (AUR) nous demande ceci :
This might be a regression in cups. Could you bisect the changes since v2.2.10 to see which commit caused it ?
https://github.com/apple/cups/compare/v2.2.10...v2.2.11
We could then report it upstream, and ask the maintainer of the cups package to revert the commit for now.
Comme c'est une première pour moi, y a t-il quelqu'un qui pourrait me donner des conseils pour aider à résoudre cette probable régression du paquet CUPS ?
Dernière modification par liOnux le jeu. 18 avr. 2019, 22:50, modifié 1 fois.
OpenBox et noyau LTS sur un HP-ENVY 17" de 2014
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Régression] Dernière version de CUPS

Message par FoolEcho »

Salut,

Ça va être un peu coton à expliquer selon si tu as ou pas quelque base en matière de construction de paquet et de git... :P

Le principe est de se servir de git et de la recherche par dichotomie pour déterminer quelle modification du code a engendré la régression.
Et donc, ici, de construire et tester autant de fois que nécessaire cups.

(la doc est bien fichue, je t'encourage à la parcourir à côté de mes explications rapides :rtfm: )

https://git-scm.com/book/fr/v1/Utilitai ... r-avec-Git
https://delicious-insights.com/fr/articles/git-bisect/

J'ai à peu près testé l'ensemble des commandes... en espérant pas en avoir oublié en recopiant (d'où une réponse un brin différée par rapport à ton post initial)... :corde:

Bref, c'est parti... :faq2:

Tu auras besoin du PKGBUILD et autres fichiers annexes utilisés lors de la construction de cups.
A télécharger via https://git.archlinux.org/svntogit/pack ... kages/cups
ou via un assistant AUR (yaourt -G cups, yay -G cups, etc.).
(installe également base-devel et évidemment git

(on pourrait aussi passer par cups-git sur aur, ça ne change pas grand-chose dans la mesure où on saute les sources par la suite)

Créer le répertoire source (au même niveau que là où se trouve le PKGBUILD), s'y positionner et récupérer les sources de cups:

Code : Tout sélectionner

mkdir -p src
cd src
git clone https://github.com/apple/cups.git
#renommage pour s'éviter des prises de tête lors de makepkg:
mv cups cups-2.2.11
#on copie également les fichiers externes au même niveau que le répertoire (.patch et autres accompagnant le PKGBUILD ; ici je ne fais pas le tri, on s'en fiche, le PKGBUILD reconnaîtra les siens):
cp ../* .
A partir de là, le fun commence... :)

Code : Tout sélectionner

cd cups-2.2.11
#Se positionner sur le commit qui plante :
git checkout v2.2.11
# Et débuter la procédure:
git bisect start 
# le courant présente le problème:
git bisect bad
# tandis que la version v2.2.10 était ok:
git bisect good v2.2.10
# dans le pire des cas, il faudra 4 constructions pour déterminer où la régression est apparue:
Bissection : 16 révisions à tester après ceci (à peu près 4 étapes)
[019198b76b1164cfad27cd4543acb08e7db01f9e] Missing printer-uri when enabling printer (mirror fix from master).
De là il te suffit de te positionner sur le commit indiqué:

Code : Tout sélectionner

git checkout 019198b76b1164cfad27cd4543acb08e7db01f9e
De construire, installer et tester la nouvelle version:

Code : Tout sélectionner

cd ../../
makepkg -sire
(on biaise en ne changeant pas la version et en indiquant à cups de ne pas télécharger le fichier source de cups -- option -e de makepkg-- mais de faire avec le contenu de src -- et donc la version git)

Une fois installé, tu testes.
Si la régression est présente, tu l'indiques à git (après t'être repositionné dans le répertoire cups-2.2.11) par git bisect bad ; sinon git bisect good.
Il te répondra en te proposant une nouvelle révision à tester (et donc se positionner dessus via git checkout <id> dans le répertoire src/cups-2.2.11, relancer makepkg, etc.) ou en t'indiquant que tel commit est le fautif (du style xxxxxxxxxxxxx is first bad commit) que tu pourras remonter à qui de droit (bug de cups ou du pilote...).

:tusors:

P.S.

Par prudence, avant de débuter, ça peut valoir le coup de faire un paquet sur le tag v2.2.10 et le v2.2.11 pour s'assurer qu'il y a bien respectivement ok et ko.
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
liOnux
Hankyu
Messages : 41
Inscription : sam. 09 févr. 2019, 11:46
Localisation : Bordeaux

Re: [Régression] Dernière version de CUPS

Message par liOnux »

Cool ! Merci FoolEcho :)
J'avais commencé à potasser cette doc en français :
https://delicious-insights.com/fr/articles/git-bisect/
Et je vais alors croiser avec tes explications.
Mais pour répondre good ou bad, faut que j'imprime une page de test à chaque interruption du git bisect, non ?
OpenBox et noyau LTS sur un HP-ENVY 17" de 2014
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Régression] Dernière version de CUPS

Message par FoolEcho »

liOnux a écrit : sam. 13 avr. 2019, 14:58 Mais pour répondre good ou bad, faut que j'imprime une page de test à chaque interruption du git bisect, non ?
Forcément, il faut installer et tester à chaque bisect, je l'ai dit.
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
liOnux
Hankyu
Messages : 41
Inscription : sam. 09 févr. 2019, 11:46
Localisation : Bordeaux

Re: [Régression] Dernière version de CUPS

Message par liOnux »

J'ai ce message d'erreur dés la première compilation/installation :
erreur : la validation de la transaction a échoué (conflit de fichiers)
cups : /var/run est déjà présent dans le système de fichiers (appartenant à filesystem)
Des erreurs se sont produites, aucun paquet n’a été mis à jour.
==> ATTENTION : Échec à l’installation des paquets.
Comme si makepkg -sire voulait créer le répertoire /var/run
OpenBox et noyau LTS sur un HP-ENVY 17" de 2014
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Régression] Dernière version de CUPS

Message par FoolEcho »

J'ai oublié un truc... :(
Le noextract (-e) ne joue pas la fonction prepare du PKGBUILD...

Avant chaque build tu auras besoin de faire ainsi:
Depuis cups-2.2.11

Code : Tout sélectionner

. ../../PKGBUILD
#chemin à adapter à chez toi, par exemple: ~/AUR/cups/src
export srcdir=/<là où tu as décompressé le PKGBUILD>/cups/src
prepare
puis le makepkg. Ça devrait corriger le souci.

Et avant de donner le résultat du bisect et éventuellement de checkout de nouveau, effectuer un git stash (pour t'éviter des embêtements potentiels).

P.S.

En fait c'est plus con que ça...
Et d'une partir du PKGBUILD cups n'est pas une bonne idée car les sources git ne sont pas faites exactement pareil...
Et de l'autre tu as peut-être un répertoire qui traîne pour rien (/var/run/cups/certs ... n'appartient à personne, il faudrait le supprimer).

Mieux vaut partir de cups-git. Je regarde...
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Régression] Dernière version de CUPS

Message par FoolEcho »

On la refait...
Je reprends les infos depuis mon premier post...



Tu auras besoin du PKGBUILD et autres fichiers annexes utilisés lors de la construction de cups.
A télécharger via https://aur.archlinux.org/packages/cups-git/
ou via un assistant AUR (yaourt -G cups-git, yay -G cups-git, etc.).
(installe également base-devel et évidemment git

0) Créer le répertoire source (au même niveau que là où se trouve le PKGBUILD), s'y positionner et récupérer les sources de cups:

Code : Tout sélectionner

mkdir -p src
cd src
git clone https://github.com/apple/cups.git
#on copie également les fichiers externes au même niveau que le répertoire (.patch et autres accompagnant le PKGBUILD ; ici je ne fais pas le tri, on s'en fiche, le PKGBUILD reconnaîtra les siens):
cp ../* .
1) A partir de là, le fun commence... :)

Code : Tout sélectionner

cd cups
#Se positionner sur le commit qui plante :
git checkout v2.2.11
# Et débuter la procédure:
git bisect start 
# le courant présente le problème:
git bisect bad
# tandis que la version v2.2.10 était ok:
git bisect good v2.2.10
# dans le pire des cas, il faudra 4 constructions pour déterminer où la régression est apparue:
Bissection : 16 révisions à tester après ceci (à peu près 4 étapes)
[019198b76b1164cfad27cd4543acb08e7db01f9e] Missing printer-uri when enabling printer (mirror fix from master).
2) De là il te suffit de te positionner sur le commit indiqué:

Code : Tout sélectionner

#lors de tes positionnements futurs, écarte les modifications en cours
git stash
#révision à construire
git checkout 019198b76b1164cfad27cd4543acb08e7db01f9e
3) Puis de construire, installer et tester la nouvelle version:

Code : Tout sélectionner

#récupérer la version à indiquer dans le PKGBUILD
git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
#résultat à placer dans le PKGBUILD au niveau du pkgver= , par exemple pkgver=2.2.10.r17.g019198b76 pour le premier bisect à tester
#jouer le prepare du PKGBUILD
#emplacement à adapter à chez toi, par exemple ~/AUR/cups-git/src/
export srcdir=~/<là où se trouve ton répertoire>/cups-git/src/
#attention au premier point, il s'agit de charger les fonctions du PKGBUILD
. ../../PKGBUILD
prepare

#jouer le makepkg sans téléchargement, à partir des sources courantes
cd ../../
makepkg -sire
Une fois installé, tu testes (tu ne devrais plus avoir de problèmes avec /var/run sur cette version).

Si la régression est présente, tu l'indiques à git (après t'être repositionné dans le répertoire cups-2.2.11) par git bisect bad ; sinon git bisect good.
Il te répondra en te proposant une nouvelle révision à tester (et donc se positionner dessus via git checkout <id> dans le répertoire src/cups-2.2.11, relancer makepkg, etc.) ou en t'indiquant que tel commit est le fautif (du style xxxxxxxxxxxxx is first bad commit) que tu pourras remonter à qui de droit (bug de cups ou du pilote...).
Répéter les étapes 2 et 3 jusqu'à trouver la révision fautive.
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
liOnux
Hankyu
Messages : 41
Inscription : sam. 09 févr. 2019, 11:46
Localisation : Bordeaux

Re: [Régression] Dernière version de CUPS (Résolu)

Message par liOnux »

Bilan :
Après recherche par plusieurs mainteneurs et utilisateurs, le problème vient des pilotes Samsung devenus obsolètes.
Le mainteneur en amont de CUPS a accepté de patcher les dernières versions de cups de manière temporaire.
Le mainteneur du même paquet sous Arch a sorti une nouvelle version : cups-2.2.11-2 qui permet de refaire fonctionner les imprimantes Samsung.
Merci à tous ! :bravo:
Bon maintenant, ça va être compliqué de demander à HP, le nouveau propriétaire des pilotes Samsung, de mettre à jour ces anciens pilotes...
OpenBox et noyau LTS sur un HP-ENVY 17" de 2014
Répondre