close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Changes between Initial Version and Version 1 of TolPackageRulesAndComments


Ignore:
Timestamp:
Jun 15, 2010, 5:23:24 PM (15 years ago)
Author:
Víctor de Buen Remiro
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TolPackageRulesAndComments

    v1 v1  
     1= Reglas de construcción y comentarios acerca de paquetes y repositorios =
     2
     3 * Un paquete es un tipo de NameBlock especial que se carga con la orden
     4   #Require nombre_de_paquete y que se carga directamente de un archivo .oza
     5   almacenado previamente en un directorio local predeterminado por el sistema.
     6 * Los paquetes están disponibles en repositorios remotos o locales desde los
     7   cuales es posible instalarlos y manejarlos mediante las utilidades de
     8   StdLib::TolPackage::Client
     9 * Las correspondientes funciones de creación y mantenirmiento de los
     10   respositorios están disponibles en StdLib::TolPackage::Server
     11 * Los nombres de los paquetes deben seguir el estilo CamelCase
     12 * Un paquete se crea como un NameBlock en un fichero principal del mismo
     13   nombre con extensión .tol y dentro de un directorio raíz llamado igual. El
     14   fichero principal puede cargar con #Embed los archivos auxiliares que
     15   necesite con nombre libre pero ubicación paralela o en subdirectorios del
     16   raíz.
     17 * Cuando un paquete requiere de otros se debe incluir las correspondientes
     18   sentencias #Require antes de la declaración del primer miembro.
     19 * Los miembros obligatorios del NameBlock de un paquete son:
     20  * Text _.autodoc.brief = "Descripción cortísima en una línea".
     21  * Text _.autodoc.description = "Descripción detallada";
     22  * Text _.autodoc.url = "http://.../";
     23  * Set _.autodoc.keys = [["Palabras","Clave", ...]];
     24  * Set _.autodoc.authors = [[ "fulanito@mail.tal", "menganito@mail.cual"]];
     25  * Text _.autodoc.minTolVersion = TolPackage::_.currentTolVersion;
     26  * Real _.autodoc.version.high = 1;
     27  * Real _.autodoc.version.low = 1;
     28  * Set _.autodoc.dependencies = [["paquete1","paquete2", ...]];
     29 * El nombre del archivo de una versión concreta de un paquete se obtiene
     30   como la concatenación del nombre del paquete seguido de un punto, el número
     31   _.autodoc.version.high, otro punto y el número _.autodoc.version.low
     32 * Si no se especifica números de versión el #Require cargará la versión más
     33   actual que corresponderá siempre al archivo con el nombre del paquete nada
     34   más. En este caso los paquetes que requiera directa o indirectamente serán
     35   también las últimas versiones y no hace falta hacer nada previamente.
     36 * Si se especifica una versión concreta entonces se debe cargar previamente
     37   cada uno de los paquetes requeridos directa o indirectamente mediante el método
     38   StdLib::TolPackage::Client::ForceExactRequirements, antes de que se llame al
     39   #Require de ninguno de ellos.
     40 * La definición del paquete siempre debe usar #Require sin especificar una
     41   versión concreta.
     42 * Obsérvese que los paquetes requeridos se deben especificar por duplicado:
     43   primero en los #Require sin comillas y luego en Set _.autodoc.dependencies
     44   entre comillas pues esta información la necesita el gestor de repositorios.
     45 * No puede haber paquetes con el mismo nombre de NameBlock ni en el mismo ni
     46   en distinto repositorio.
     47 * No está permitido el requerimiento cíclico directo ni indirecto entre
     48   paquetes, es decir, si A requiere a B directa o indirectamente B no puede
     49   requerir a A ni directa ni indirectamente. El sistema gestor de repositorios
     50   caería en un ciclo infinito y no hay forma de detectarlo luego es
     51   responsabilidad de los desarrollodares del repositorio el evitarlo.
     52 * Cada paquete debe estar dotado de documentación autocontenida de manera
     53   que cualquier usuario pueda aprender a usarlo por sí mismo. Queda por ver si
     54   esa documentación ha de ser WIKI, HTML, PDF, ASCII, o si puede ser opcional
     55   el formato. La documentación estará ubicada en cualquier caso dentro de
     56   un directorio doc colgando directamente de la raíz del paquete.
     57 * También debe tener una batería de tests estándar en un directorio test
     58   colgando directamente de la raíz del paquete.
     59 * El repositorio es un directorio plano con unos archivos obligatorios:
     60  * index.tol: Contiene características generales del repositorio como el
     61    nombre, el tipo ("Private" ó "Public") y la descripción de los objetivos.
     62  * index.csv: Listado de los paquetes y su información asociada: fecha,
     63    versión, dependencias, etc.
     64 * Debe haber un comité o alguien responsable de probar todos los paquetes de
     65   un repositorio antes de publicar las actualizaciones de los paquetes para
     66   asegurar la compatibilidad conjunta de todos ellos.