wiki:fr/sources
developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Version 9 (modified by laurentj, 13 years ago) (diff)

--

Travailler avec les sources

Cette page contient des informations nécessaires à toutes personnes voulant, soit créer une version personnalisée de Jelix, soit proposer des patchs corrigeant des bugs ou apportant des amélioration.

principes

Travailler avec les sources de Jelix est assez différent des projets PHP traditionnels, en ce sens que les sources que l'on trouve dans le dépôt subversion, n'est pas directement utilisable par PHP. En clair, le contenu qui est proposé dans les archives en téléchargement, est légèrement différent de ce qui est dans le dépôt.

En effet, certains fichiers sources de Jelix contiennent des directives spéciales permettant à un pré-processeur, de générer un fichier source final qui sera différent selon des paramètres qu'on lui fournit. Ce pré-processeur est piloté par un script, que l'on appelera un "générateur" de sources finales (le résultat, les sources finales, sont appelées aussi un "build"). Cela permet de fournir des versions différentes de Jelix

  • en fonction d'une version de PHP
  • optimisée selon le context : optimisée pour un environnement en production, ou contenant des outils et fonctions supplémentaires pour aider au développement.
  • etc..

Et plus tard, on pourra aussi en générer en fonction de l'arborescence finale souhaitée : configuré pour fonctionner sans documentRoot, ou avec documentRoot.

Ainsi, le developpement de jelix suit ces étapes :

  1. récupération de la dernière version de jelix dans le dépôt subversion
  2. création d'un fichier de paramètres pour le générateur
  3. modification des fichiers sources de jelix (correction de bug, amélioration, nouvelle fonctionnalité etc..)
  4. lancement du générateur de sources finales. On obtient un "build"
  5. test du build avec une application
  6. si le test est ok, on enregistre les modifications dans subversion (ou alors on créer un patch), sinon on recommence à l'étape 2.

Pour ceux qui veulent juste avoir une version optimisée/personnalisée, seules ces étapes sont nécessaires :

  1. récupération de la dernière version de jelix dans le dépôt subversion
  2. création d'un fichier de paramètres pour le générateur afin d'obtenir la version souhaitée
  3. lancement du générateur de sources finales.
  4. On obtient un "build" que l'on peut utiliser sur son serveur.

Récupérer les sources

Il faut les récupérer à partir du dépôt Subversion. Il faut donc installer sur votre machine un client subversion. Puis ensuite le configurer pour accéder au dépôt.

Pour rappel, subversion est outil de contrôle de version : il permet d'enregistrer et d'historiser toutes les modifications faites sur les fichiers sources d'un projet.

Voici l'adresse du dépôt subversion de Jelix, pour les contributeurs "anonymes" :

   svn://svn.berlios.de/jelix/trunk

Addresse du dépot, pour les contributeurs "officiels" qui ont un accès en écriture sur le dépot :

   svn+ssh://''votre_login_berlios''@svn.berlios.de/svnroot/repos/jelix/trunk

Cela donne donc, avec un client subversion en ligne de commande :

svn checkout svn://svn.berlios.de/jelix/trunk

ou

svn checkout svn+ssh://''votre_login_berlios''@svn.berlios.de/svnroot/repos/jelix/trunk

jelix/trunk est pour récupérer uniquement la version en cours de développement de la branche principale. Si vous voulez récupérer d'autres branches ou versions officielles, indiquez juste jelix

   svn+ssh://''votre_login_berlios''@svn.berlios.de/svnroot/repos/jelix/

Arborescence

Voici les différents répertoires que vous récupérez :

  build/     les outils de génération de sources
  lib/       les bibliothèques de jelix
  myapp/     application simple (obsolète)
  temp/      repertoire temporaire pour les applications jelix
  testapp/   application qui permet de tester le framework

Les outils de constructions

Les sources obtenues via le dépot subversion ne peuvent pas être utilisable directement par PHP. Pour pouvoir utiliser Jelix, il faut générer les sources finales interpretables par PHP. Pour ce faire il y a un script build/buildjelix.php. C'est le fameux "générateur". C'est une sorte de makefile. Il prend en argument un nom de fichier ini qui déclare des paramètres de génération. Vous en avez quelques exemples dans le repertoire build/config/.

Générer une version de travail

Avant de faire des modifications, il faut préparer votre environnement. Vous devez avoir le répertoire contenant les sources du dépôt, et le répertoire qui contiendra une version utilisable du framework. Par exemple :

Pour le répertoire du dépot, et contenant donc trunk/lib etc. :

   /home/laurent/projets/jelix/svn/ 

Pour le répertoire cible, contenant la version interprétable/utilisable par php

   /home/laurent/projets/jelix/tests/ 

Créez un fichier monbuild.ini, sur le modèle de ceux que vous trouvez dans build/config (jelix-test.ini par ex). Il contiendra alors :

MAIN_TARGET_PATH = /home/laurent/projets/jelix/tests/
PHP_VERSION_TARGET =
ENABLE_PHP_FILTER =
ENABLE_PHP_JSON =
ENABLE_PHP_XMLRPC =
ENABLE_DEVELOPER = 1
PACKAGE_TAR_GZ =
PACKAGE_ZIP =
STRIP_COMMENT =
ENABLE_OPTIMIZE =

Ensuite, vous lancez la commande, dans une console :

  php build/buildjelix.php monbuild.ini

Même principe pour l'application de test testapp. Mais il faut utiliser un autre script build/buildapp.php avec le fichier de config adéquate, dont un modèle, testapp-test.ini, se trouve dans build/config/.

  php build/buildapp.php montestapp.ini

Note: il faut lancer le build à chaque modification dans les sources de jelix, avant de le tester.

Générer un package

Le principe est exactement le même que pour générer une version de travail. Vous avez par exemple : /home/laurent/projets/jelix/dist/ pour le répertoire qui contiendra les futurs zip/tar.gz

Créez un nouveau fichier ini mondist.ini sur le modèle de monbuild.ini, en indiquant ce repertoire et en activant les options PACKAGE_TAR_GZ et/ou PACKAGE_ZIP

MAIN_TARGET_PATH = /home/laurent/projets/jelix/dist/
PHP_VERSION_TARGET =
ENABLE_PHP_FILTER =
ENABLE_PHP_JSON =
ENABLE_PHP_XMLRPC =
ENABLE_DEVELOPER = 1
PACKAGE_TAR_GZ = 1
PACKAGE_ZIP = 1
STRIP_COMMENT =
ENABLE_OPTIMIZE =

et ensuite :

  php build/buildjelix.php mondist.ini

Vous aurez alors dans /home/laurent/projets/jelix/dist/ des archives prêtes à être distribuées.

Utilisation du Makefile

Il existe un fichier makefile, utilisable par la commande Make, qui appel les scripts de build pour jelix et autres applications stockées dans le dépot. Le Makefile accepte différentes cibles, qui permettent de générer des repertoires de travail ou des paquets à distribuer avec les paramètres standards. Tapez simplement make pour en avoir la liste.

Toutefois, il n'est en principe pas à utiliser et est surtout utile pour le serveur de jelix.org, pour générer chaque jour des paquets téléchargeables de la toute dernière version de Jelix, et générer la documentation de réference.


Retour au sommaire