Next: , Previous: , Up: Contribuir   [Contents][Index]


22.4 Pautas de empaquetamiento

La distribución GNU es reciente y puede no disponer de alguno de sus paquetes favoritos. Esta sección describe cómo puede ayudar a hacer crecer la distribución.

Los paquetes de software libre habitualmente se distribuyen en forma de archivadores de código fuente—típicamente archivos tar.gz que contienen todos los archivos fuente. Añadir un paquete a la distribución significa esencialmente dos cosas: añadir una receta que describe cómo construir el paquete, la que incluye una lista de otros paquetes necesarios para la construcción, y añadir metadatos del paquete junto a dicha receta, como la descripción y la información de licencias.

En Guix toda esta información está contenida en definiciones de paquete. Las definiciones de paquete proporcionan una vista de alto nivel del paquete. Son escritas usando la sintaxis del lenguaje de programación Scheme; de hecho, definimos una variable por cada paquete enlazada a su definición y exportamos esa variable desde un módulo (see Módulos de paquetes). No obstante, un conocimiento profundo de Scheme no es un pre-requisito para la creación de paquetes. Para más información obre las definiciones de paquetes, see Definición de paquetes.

Una vez que una definición de paquete está en su lugar, almacenada en un archivo del árbol de fuentes de Guix, puede probarse usando la orden guix build (see Invocación de guix build). Por ejemplo, asumiendo que el nuevo paquete se llama gnuevo, puede ejecutar esta orden desde el árbol de construcción de Guix (see Ejecución de Guix antes de estar instalado):

./pre-inst-env guix build gnuevo --keep-failed

El uso de --keep-failed facilita la depuración de errores de construcción ya que proporciona acceso al árbol de la construcción fallida. Otra opción útil de línea de órdenes para la depuración es --log-file, para acceder al log de construcción.

Si el paquete resulta desconocido para la orden guix, puede ser que el archivo fuente contenga un error de sintaxis, o no tenga una cláusula define-public para exportar la variable del paquete. Para encontrar el problema puede cargar el módulo desde Guile para obtener más información sobre el error real:

./pre-inst-env guile -c '(use-modules (gnu packages gnuevo))'

Once your package builds correctly, please send us a patch (see Envío de parches). Well, if you need help, we will be happy to help you too. Once the patch is committed in the Guix repository, the new package automatically gets built on the supported platforms by our continuous integration system.

Users can obtain the new package definition simply by running guix pull (see Invocación de guix pull). When ci.guix.gnu.org is done building the package, installing the package automatically downloads binaries from there (see Sustituciones). The only place where human intervention is needed is to review and apply the patch.


Next: Estilo de codificación, Previous: La configuración perfecta, Up: Contribuir   [Contents][Index]