Next: Estilo de codificación, Previous: Source Tree Structure, Up: Contribuir [Contents][Index]
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 bordeaux.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: Source Tree Structure, Up: Contribuir [Contents][Index]