Bestiaire Jelix – numéro 2

Mettre à jour sa version de Jelix ET son dépôt en une fois

Dans ce numéro nous allons voir comment mettre à jour le dossier lib de son site/application, directement depuis les sources Jelix, en passant par un type de makefile.

Vous me direz « oui c’est facile, pas besoin de faire un build pour si peu ; je prends le dernier tar.gz stable et je remplace le dossier lib et voilà »

Oui !

mais non…

Si vos sources sont sur un dépôt (j’espère pour vous;) … vous voyez où je veux en venir, le patacaisse pour gérer ce qui est là / plus là, etc…

Donc le process de build va s’occuper, certes de produire une version de Jelix prête à l’emploi, mais également effectuer le ménage parmi les fichiers qui doivent être supprimés, ajoutés, modifiés afin qu’il ne vous reste plus qu’à faire un commit et push tout beau tout propre. Oui madame !

Partons d’un dépôt git que l’on va cloner :

foxmask@home:~$ git clone github/foxmask-havefnubb 
Cloning into foxmask-havefnubb...
done.

vérifions que rien n’a été modifié

foxmask@home:~$ cd foxmask-havefnubb
foxmask@home:~/foxmask-havefnubb$ git status
# On branch master
nothing to commit (working directory clean)

dans ce dossier je dispose du dossier lib contenant jelix

foxmask@home:~/foxmask-havefnubb$ ls -1
cache
[...]
lib
migration.php
[...]

à présent, depuis un clone git du projet jelix, je lance la mise à jour comme suit :

foxmask@home:~/github/jelix-original$ php build/buildjelix.php foxmask-dev.ini 
foxmask@home:~/github/jelix-original$

à présent dans mon dossier ~/foxmask-havefnubb retournons voir ce qui a changé

foxmask@home:~/foxmask-havefnubb$ git status|wc -l
1057

ca rigole pas hein ;) bon aller juste quelques lignes parce que je sens que vous n’y croyez pas :

foxmask@home:~/foxmask-havefnubb$ git status|more
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	new file:   lib/jelix-admin-modules/jpref_admin/classes/jpref_admin.listener.php
#	new file:   lib/jelix-admin-modules/jpref_admin/controllers/prefs.classic.php
[...]

Donc on parachèvera par un git commit -a -m « update to jelix x.y » suivi d’un push et voilà !

Vous allez me dire « hey mais ho ; comment tu fais tout ce mic mac ? on a rien vu ! »
Ah ba oui grand balot que je suis, je ne vous ai pas montré l’essentiel : le contenu du fichier foxmask-dev.ini ; mon fichier de config pour builder jelix !

le voici :

MAIN_TARGET_PATH = /home/foxmask/foxmask-havefnubb/
EDITION_NAME = 
PHP_VERSION_TARGET = 5.2
 
ENABLE_PHP_XMLRPC =
ENABLE_PHP_JELIX =
ENABLE_DEVELOPER = 1
WITH_BYTECODE_CACHE = auto
 
INCLUDE_ALL_FONTS = 
 
STRIP_COMMENT =
ENABLE_OPTIMIZED_SOURCE =
 
PACKAGE_TAR_GZ = 
PACKAGE_ZIP = 
 
DELETE_DEPRECATED_FILES = 1
 
TARGET_REPOSITORY=git

le paramètre qui permet de gérer vos sources est bien évidement le dernier : TARGET_REPOSITORY qui peut aussi être hg ou svn.

Quant au premier paramètre MAIN_TARGET_PATH , il doit contenir le chemin vers le dossier de votre application, celui « contenant » le répertoire lib (celui de jelix bien sûr).

A présent vous êtes fin prêt pour obtenir les versions stables directement des sources de Jelix et faire votre mise à jour de Jelix au sein de vos applications/sites sans aucun effort. Pas belle la vie ? ;)

Bonnes mises à jour ;)

8 réflexions au sujet de « Bestiaire Jelix – numéro 2 »

  1. Bon, je viens d’essayer la méthode, mais ça ne marche plus après la mise à jour de la lib. Je me retrouve avec l’erreur apache suivante à l’ouverture de l’index de mon application :

    Call to a member function getPlugin() on a non-object in /home/victor/site/lib/jelix/auth/jAuth.class.php on line 34

    Evidemment, rien ne s’affiche et il ne se passe plus rien derrière…

    J’ai tenté par la suite d’écraser à la main le répertoire lib avec celui de la version 1.3.2 que j’ai téléchargée et là tout fonctionne correctement.

    Une idée ?

  2. avez vous vidé le cache de votre application ?

    si vous activez la debugbar vous devriez etre en mesure de voir ce qui se passe dans le dossier var/log en même temps que dans la debugbar dans votre browser.

  3. Oui j’ai vidé le cache et le problème c’est que la debugbar ne s’affiche même pas :/.

    Dans le var/log j’ai ceci :

    2012-05-22 16:17:03 127.0.0.1 notice 2012-05-22 16:17:03 127.0.0.1 [8] Trying to get property of non-object /home/victor/site/lib/jelix/core/jSession.class.php 32
    /

    0 jSession::start() /home/victor/site/lib/jelix/core/jCoordinator.class.php : 135
    1 jCoordinator->process() /home/victor/site/admin/www/index.php : 19

    Et puis plus rien, page blanche.
    J’ai peut-être loupé quelque chose…

  4. Il me semble que je l’ai fait à partir de la branche master, serait-ce le problème ?

    J’avoue ne pas encore avoir une grande maîtrise de git, pourriez-vous m’indiquer les bonnes commandes pour être sur d’utiliser la bonne version de jelix ?

  5. Oui il aurait fallu ne prendre que la branche 1.3. Sur la ligne de commandes à la place de master indiquez jelix-1.3.x . Si vous n’y parvenez pas je vous donnerai la ligne exact depuis mon PC (suis sur mobile;)

  6. Je viens de refaire un git clone de jelix en précisant l’option « -b jelix-1.3.x », ce qui semble être bon puisqu’une fois cloné, un « git status » me renvoie « On branch jelix-1.3.x ».

    J’ai donc essayé de faire un build, et là surprise : « jBuildTools error : bad value setting for the variable TARGET_REPOSITORY ».

    Je suis allé faire une petit tour dans le fichier buildjelix.php, et j’ai vu ça :
    ‘TARGET_REPOSITORY’=> array(
    « The type of the version control system you use on the target directory : none (default), svn or hg »,
     »,
    ‘/^(svn|hg|none)?$/’,
    )

    Git ne fait manifestement pas partie des options disponible pour le type de dépôt !
    Comme j’aime bien bidouiller, je l’ai rajouté à la main en modifiant « (svn|hg|none) » par « (svn|hg|none|git) ».

    Je relance le build et là… Tout fonctionne à merveille !

    Je pense qu’il y a manifestement un oubli de git dans les options de dépôt, je ne vois pas pourquoi il ne serait plus supporté, étant donné que jelix lui-même est sur du Git.

    Cela étant dit, merci pour les conseils, je pense qu’il serait utile de préciser dans le tuto qu’il faut bien choisir la branche 1.3.x de jelix en clonant le dépôt, ce qui éviterait les erreurs rencontrées par les novices en la matière comme moi :)

    Il faudra peut-être également veiller à corriger le fichier buildjelix.php pour git, sinon d’autres que moi risquent de tomber sur la même erreur.

Les commentaires sont fermés.