Hop,
je ne sais pas si le bug est dans SPIP ou plus probablement entre la chaise et le clavier. Mais il m’est arrivé une mésaventure et je ne sais pas par quel bout prendre, car c’est lié je pense aux changements en cours dans le processus de dev de SPIP, que je ne suis plus tout à fait.
J’ai voulu sur demande de @JamesRezo tester une branche du plugin-dist archiviste
« dans un contexte spip 5 ». #4435 - zipper à plat - archiviste - SPIP on GIT. En l’occurence la branche zipper-a-plat
Et c’est là que les ennuis ont commencé.
- J’avais une install qui correspond en gros à mon spip bac à sable. C’était installé via checkout, sur le tage 4.2.2
- J’ai donc fait
checkout spip .
- Tout semble bien se passer a priori : bascule sur
master
, et j’obtiens ceci :
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Package operations: 20 installs, 0 updates, 0 removals
- Downloading spip/mediabox (dev-master acbae3c)
etc pour l’ensemble des plugins-dist
SAUF QUE je ne fais pas attention que les plugins-dist ne sont plus dans plugins-dist
mais dans plugins-dist
mais dans plugins-dist/spip
.
Alors du coup question n°1 : est-ce normal ce changement de chemin ? Si oui pourquoi
Bref, ne m’apercevant pas de cela, je me rend sur plugins-dist/archiviste
(qui existe bel et bien, puisque je partais d’une install historique).
Du coup question n°2 : n’y a-t-il pas un bug dans le script checkout
qui aurait du effacer ces plugins-dist
à la racine ?
Pour comprendre ces 2 questions, rappelons l’état du dossier plugins-dist
après mon appel du script checkout
.
plugins-dist/
| - aide/
| - archiviste/
| - bigup/
| ...
| - spip/
| - aide/
| - archiviste/
| -bigup/
| ...
| ....
Bref une fois dans plugin-dist/archiviste
je fais un git pull
puis git co zipper-a-plat
. Je me rend ensuite dans mon plugin pas dist zippeur
et je teste les fonctionnalités de la branche.
Et j’arrive à obtenir ce que je veux… à quelques limites près. Le code auquel j’aboutit se trouve ici https://git.spip.net/spip-contrib-extensions/zippeur/commit/40cebd3e6991307d4201d80159e58307aead90c7
.
Sauf que je vois passer un message de warning
Deprecated: inc/archives is deprecated. use Spip\Archiver\SpipArchiver instead. in /home/mrouquet/Sites/dev/spip-dev.test/plugins-dist/archiviste/inc/archives.php on line 25
J’attire votre attention : l’erreur est pointé dans plugins-dist/archiviste
et non pas dans plugins-dist/spip/archiviste
.
Je modifie le code de zippeur avec ceci
c’est à dire en obéissant scrupuleusement au code qui me dit de changer de classe .
Et j’obtiens alors l’erreur suivante :
Warning: ZipArchive::addFile(): No such file or directory in /home/mrouquet/Sites/dev/spip-dev.test/plugins-dist/spip/archiviste/src/ZipArchive.php on line *60*
Et là je ne comprend pas… je regarde le code, je vois que normalement l’ancienne classe a été mappé sur la nouvelle, donc ce qui marchait avec l’ancienne devait marcher avec la nouvelle.
(Question n°3 (subsidiaire) : pourquoi ces changements de nom entre Archives
et Archiver
?)
Et je finis par comprendre : le fichier appelé est dans plugins-dist/spip/archiviste
et non pas plugins-dist/archiviste
.
D’où ma question n°4 : commencent cela se fait-il, alors que l’interface graphique de svp me dit que archiviste c’est plugins-dist/archiviste
et pas plugins-dist/spip-archiviste
. J’imagine que c’est une histoire d’autoloader, mais est-ce que cela ne traduirait pas un bug ou un tout cas un comportement différent entre l’autoloader et le find_in_path()
habituel ?
Ayant compris cela je me rend dans plugins-dist/spip/archiviste
pour me dire "il suffit que je bascule sur la branche zipper-a-plat
dans le bon dossier et cela devrait marcher.
Mais impossible de le faire puisque plugins-dist/spip/archiviste
ne pas un clone de spip/archiviste - archiviste - SPIP on GIT.
D’où ma question n°5 : comment est-ce que l’on tests une branche de dev d’un plugin lorsqu’on a utilisé le script checkout
?
Je me suis dit : supprimer plugins-dist/spip/archiviste
au moins pour le teste, sauf que patatra Erreur d’exécution ../plugins/zippeur/modeles/zip_doc_article.html | File […]/plugins/zippeur/zippeur_fonctions.php Line 141 : Class "Spip\Archiver\SpipArchiver" not found
.
J’imagine que l’autoloader ne marche pas…