Próximo: , Anterior: , Acima: Desenvolvimento de software X   [Conteúdo][Índice]


7.4 Bônus: Variantes do pacote

Agora temos um canal real, mas ele contém apenas um pacote (veja Nível 2: O Repositório como Canal). Enquanto estamos nisso, podemos definir variantes de pacote (veja Definindo variantes de pacote em Manual de Referência do GNU Guix) em nosso arquivo guile-package.scm, variantes que queremos poder testar como desenvolvedores Guile—semelhante ao que fizemos acima com opções de transformação. Podemos adicioná-las assim:

;; Este é o arquivo ‘.guix/modules/guile-package.scm’.

(define-module (guile-package)
  )

(define-public guile
  )

(define (package-with-configure-flags p flags)
  "Retorna P com FLAGS como sinalizadores 'configure' adicionais."
  (package/inherit p
    (arguments
     (substitute-keyword-arguments (package-arguments p)
       ((#:configure-flags original-flags #~(list))
        #~(append #$original-flags #$flags))))))

(define-public guile-without-threads
  (package
    (inherit (package-with-configure-flags guile
                                           #~(list "--without-threads")))
    (name "guile-without-threads")))

(define-public guile-without-networking
  (package
    (inherit (package-with-configure-flags guile
                                           #~(list "--disable-networking")))
    (name "guile-without-networking")))


;; Retorna o objeto do pacote definido acima no final do módulo.
guile

Podemos construir essas variantes como pacotes regulares assim que tivermos puxado o canal. Alternativamente, a partir de um checkout do Guile, podemos executar um comando como este do nível superior:

guix build -L $PWD/.guix/modules guile-without-threads