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.

Version 2 (modified by Víctor de Buen Remiro, 15 years ago) (diff)

--

Reglas de construcción y comentarios acerca de paquetes y repositorios

  • Un paquete es un tipo de NameBlock especial que se carga con la orden #Require nombre_de_paquete y que se lee directamente de un archivo .oza almacenado previamente en un directorio local predeterminado por el sistema.
  • Los paquetes están disponibles en repositorios remotos o locales desde los cuales es posible instalarlos y manejarlos mediante las utilidades de StdLib::TolPackage::Client
  • Las correspondientes funciones de creación y mantenirmiento de los respositorios están disponibles en StdLib::TolPackage::Server
  • Los nombres de los paquetes deben seguir el estilo CamelCase
  • Un paquete se crea como un NameBlock en un fichero principal del mismo nombre con extensión .tol y dentro de un directorio raíz llamado igual. El fichero principal puede cargar con #Embed los archivos auxiliares que necesite con nombre libre pero ubicación paralela o en subdirectorios del raíz.
  • Cuando un paquete requiere de otros se debe incluir las correspondientes sentencias #Require antes de la declaración del primer miembro.
  • Los miembros obligatorios del NameBlock de un paquete son:
  • El nombre del archivo de una versión concreta de un paquete se obtiene como la concatenación del nombre del paquete seguido de un punto, el número _.autodoc.version.high, otro punto y el número _.autodoc.version.low
  • Si no se especifica números de versión el #Require cargará la versión más actual que corresponderá siempre al archivo con el nombre del paquete nada más. En este caso los paquetes que requiera directa o indirectamente serán también las últimas versiones y no hace falta hacer nada previamente.
  • Si se especifica una versión concreta entonces se debe cargar previamente cada uno de los paquetes requeridos directa o indirectamente mediante el método StdLib::TolPackage::Client::ForceExactRequirements, antes de que se llame al #Require de ninguno de ellos.
  • La definición del paquete siempre debe usar #Require sin especificar una versión concreta.
  • Obsérvese que los paquetes requeridos se deben especificar por duplicado: primero en los #Require sin comillas y luego en Set _.autodoc.dependencies entre comillas pues esta información la necesita el gestor de repositorios.
  • No puede haber paquetes con el mismo nombre de NameBlock ni en el mismo ni en distinto repositorio.
  • No está permitido el requerimiento cíclico directo ni indirecto entre paquetes, es decir, si A requiere a B directa o indirectamente B no puede requerir a A ni directa ni indirectamente. El sistema gestor de repositorios caería en un ciclo infinito y no hay forma de detectarlo luego es responsabilidad de los desarrollodares del repositorio el evitarlo.
  • Cada paquete debe estar dotado de documentación autocontenida de manera que cualquier usuario pueda aprender a usarlo por sí mismo. Queda por ver si esa documentación ha de ser WIKI, HTML, PDF, ASCII, o si puede ser opcional el formato. La documentación estará ubicada en cualquier caso dentro de un directorio doc colgando directamente de la raíz del paquete.
  • También debe tener una batería de tests estándar en un directorio test colgando directamente de la raíz del paquete.
  • El repositorio es un directorio plano con unos archivos obligatorios:
    • index.tol: Contiene características generales del repositorio como el nombre, el tipo ("Private" ó "Public") y la descripción de los objetivos.
    • index.csv: Listado de los paquetes y su información asociada: fecha, versión, dependencias, etc.
  • Debe haber un comité o alguien responsable de probar todos los paquetes de un repositorio antes de publicar las actualizaciones de los paquetes para asegurar la compatibilidad conjunta de todos ellos.