Siguiente: Sinopsis y descripciones, Anterior: Nombrado de paquetes, Subir: Pautas de empaquetamiento [Índice general][Índice]
Normalmente empaquetamos únicamente la última versión de un proyecto dado de
software libre. Pero a veces, por ejemplo para versiones de bibliotecas
incompatibles, se necesitan dos (o más) versiones del mismo paquete. Estas
necesitan nombres diferentes para las variables Scheme. Usamos el nombre
como se define en Nombrado de paquetes para la versión más reciente; las
versiones previas usan el mismo nombre, añadiendo un -
y el prefijo
menor del número de versión que permite distinguir las dos versiones.
El nombre dentro de la definición de paquete es el mismo para todas las versiones de un paquete y no contiene ningún número de versión.
Por ejemplo, las versiones 2.24.20 y 3.9.12 de GTK+ pueden empaquetarse como sigue:
(define-public gtk+ (package (name "gtk+") (version "3.9.12") ...)) (define-public gtk+-2 (package (name "gtk+") (version "2.24.20") ...))
Si también deseásemos GTK+3.8.2, se empaquetaría como
De manera ocasional, empaquetamos instantáneas del sistema de control de
versiones (VCS) de las desarrolladoras originales en vez de publicaciones
formales. Esto debería permanecer como algo excepcional, ya que son las
desarrolladoras originales quienes deben clarificar cual es la entrega
estable. No obstante, a veces es necesario. Por tanto, ¿qué deberíamos poner
en el campo version
?
Claramente, tenemos que hacer visible el identificador de la revisión en el
VCS en la cadena de versión, pero también debemos asegurarnos que la cadena
de versión incrementa monotónicamente de manera que guix package
--upgrade
pueda determinar qué versión es más moderna. Ya que los
identificadores de revisión, notablemente en Git, no incrementan
monotónicamente, añadimos un número de revisión que se incrementa cada vez
que actualizamos a una nueva instantánea. La versión que resulta debería ser
así:
2.0.11-3.cabba9e ^ ^ ^ | | `-- ID de revisión original | | | `--- revisión del paquete Guix | última versión de publicación
Es una buena idea recortar los identificadores de revisión en el campo
version
a, digamos, 7 dígitos. Esto evita una molestia estética
(asumiendo que la estética tiene importancia aquí) así como problemas
relacionados con los límites del sistema operativo como la longitud máxima
de una cadena de ejecución #! (127 bytes en el núcleo Linux). Es mejor usar
el identificador de revisión completo en origin
, no obstante, para
evitar ambigüedades. Una definición típica de paquete sería así:
(define mi-paquete
(let ((commit "c3f29bc928d5900971f65965feaae59e1272a3f7")
(revision "1")) ;Revisión Guix del paquete
(package
(version (git-version "0.9" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "git://example.org/mi-paquete.git")
(commit commit)))
(sha256 (base32 "1mbikn…"))
(file-name (git-file-name name version))))
;; …
)))
Siguiente: Sinopsis y descripciones, Anterior: Nombrado de paquetes, Subir: Pautas de empaquetamiento [Índice general][Índice]