Next: Level 3: Setting Up Continuous Integration, Previous: Level 2: The Repository as a Channel, Up: Software Development [Contents][Index]
We now have an actual channel, but it contains only one package (see Level 2: The Repository as a Channel). While we’re at it, we can define package variants (see Defining Package Variants in GNU Guix Reference Manual) in our guile-package.scm file, variants that we want to be able to test as Guile developers—similar to what we did above with transformation options. We can add them like so:
;; This is the ‘.guix/modules/guile-package.scm’ file. (define-module (guile-package) …) (define-public guile …) (define (package-with-configure-flags p flags) "Return P with FLAGS as additional 'configure' flags." (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"))) ;; Return the package object defined above at the end of the module. guile
We can build these variants as regular packages once we’ve pulled the channel. Alternatively, from a checkout of Guile, we can run a command like this one from the top level:
guix build -L $PWD/.guix/modules guile-without-threads