Fonctionnement des scripts de mise--jour d'AlternC
===================================================

Il a t dcid que des mises--jour pourront tre "accroches" 
certaines versions en les mettant dans le dossier upgrades. Lors de
l'installation d'un paquet, un script (upggrade_check.sh) examine ce
dossier et applique les mises--jour ncessaires, en se basant sur les
numros de version. Les scripts considrs sont ceux termins par
.sql, .sh ou .php, et sont interprts avec mysql, /bin/sh ou php
respectivement, et dans cet ordre.

Pour tre considr, le script doit donc avoir un nom conforme,
c'est--dire sous la forme \d(\.\d+)* (en expression rgulire), par
exemple: 0.9.1.sh, 1.0.php, etc. De plus, le fichier est considr
seulement si la version avec laquelle il est nomm tombe entre la
version de dpart et d'arrive du package.

Voir ci-bas pour des exemples.

Description formelle du fonctionnement de upgrade_check.sh
----------------------------------------------------------

Soit un upgrade d'une version X  une version Y. Les fichiers du
dossier d'upgrade sont examins un  un. Pour chaque fichier dont le
nom N.php, N.sh ou N.sql est X >= N <= Y, le fichier est excut ou
pass  mysql, selon le cas appropri. Les versions sont compares
avec dpkg --compare-versions.  Les scripts sont excuts dans cet
ordre: *.sql *.sh *.php.

Il est donc capital de nommer correctement ce fichier.

Ces scripts devront tre idempotents, car ils peuvent tre excuts 
plusieurs reprises, comme tous les scripts postinst et config.

(Note: en ralit, on ne vrifie pas la condition N <= Y. On assume que
si le script est disponible, il est applicable  cette version. Ceci
signifie qu'il ne faut pas "packager" un script d'upgrade N dans un
package Y si N > Y. Exemple: ne pas inclure un script 1.0 dans un
package 0.9, car il sera excut, mme si la version installe est 1.0.)

Pour plus de dtails, consultez directement le script
../upgrade_check.sh, qui gre ces upgrades.

Mise en situation
-----------------

Exemple: 0.9.1 sera excut lors d'une mise  jour de 0.9  0.9.1 (ou
1.0), mais pas d'une mise  jour de 0.9.1  1.0.

Autre exemple: on procde  une mise  jour de alternc-0.9-20031009 vers
alternc-0.9.1. On trouve le script upgrades/0.9.1.sh. Celui-ci est
excut car 0.9-20031009 >= 0.9.1 <= 0.9.1. Il serait aussi excut pour
une mise  jour vers 0.9.2, 1.0, etc.
