[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Package variant defined in manifest not visible by Guix
From: |
Ricardo Wurmus |
Subject: |
Re: Package variant defined in manifest not visible by Guix |
Date: |
Mon, 16 Aug 2021 16:34:55 +0200 |
User-agent: |
mu4e 1.4.15; emacs 27.2 |
Hi,
I'm trying to use a manifest file to define a package variant
which adds
an option to the configure phase:
```
(use-modules (inria storm))
(define starpu-maxnodes1
(package
(inherit starpu)
(arguments
(substitute-keyword-arguments (package-arguments starpu)
((#:configure-flags flags
'())
`(cons
"--enable-maxnodes=1"
,flags))))))
```
When I'm trying to build this variant, guix can't find it:
```
% guix build -c 2 -m starpu-maxnodes1.scm starpu-maxnodes1
guix build: erreur : starpu-maxnodes1 : paquet inconnu
```
I don't see what I'm doing wrong. Any idea ?
There seems to be a small misunderstanding. You defined a package
variant, but that’s not a manifest. A manifest describes the
complete contents of a profile; i.e. it’s a list of packages that
Guix should install.
Here are three different ways that should work for you:
1) Build a single package from a file.
Here we define the package variant in a file and make sure that
the file evaluates to the package value:
--8<---------------cut here---------------start------------->8---
(use-modules (inria storm))
(define starpu-maxnodes1
(package
(inherit starpu)
(arguments
(substitute-keyword-arguments (package-arguments starpu)
((#:configure-flags flags '())
`(cons "--enable-maxnodes=1"
,flags))))))
;; Make sure the file evaluates to the package value.
;; The definition alone has no specified return value.
starpu-maxnodes1
--8<---------------cut here---------------end--------------->8---
Now we can build the package specified in the file:
guix build --file=this-file.scm
2) Build a whole manifest from a file.
Here the file must evaluate to a manifest value, not just a single
package.
--8<---------------cut here---------------start------------->8---
(use-modules (inria storm))
(define starpu-maxnodes1
(package
(inherit starpu)
(arguments
(substitute-keyword-arguments (package-arguments starpu)
((#:configure-flags flags '())
`(cons "--enable-maxnodes=1"
,flags))))))
(packages->manifest (list starpu-maxnodes1))
--8<---------------cut here---------------end--------------->8---
Then build the profile from the manifest file:
guix build --manifest=this-file.scm
3) Create a module and use it however you want.
You can make the custom package available to any Guix command by
putting it into a Guile module and then informing Guix about the
module. This is a little more effort as you need more boilerplate
code to define the module (and the file name needs to match the
moule header, etc).
--8<---------------cut here---------------start------------->8---
(define-module (my packages storm)
#:use-module (gnu packages)
#:use-module (guix packages)
#:use-module (guix utils)
;; …
#:use-module (inria storm)
#:export (starpu-maxnodes1))
(define starpu-maxnodes1
(package
(inherit starpu)
(arguments
(substitute-keyword-arguments (package-arguments starpu)
((#:configure-flags flags '())
`(cons "--enable-maxnodes=1"
,flags))))))
--8<---------------cut here---------------end--------------->8---
Put this in a file “my/packages/storm.scm” and then set the
GUIX_PACKAGE_PATH environment variable to the directory containing
“my” (e.g. $HOME/code/guix/custom containing
$HOME/code/guix/custom/my/packages/storm.scm).
Note that you haven’t overridden the “name” field of the original
“starpu” package, so on the command line the package cannot be
distinguished (unless you use “-e '(@ (my packages storm)
starpu-maxnodes1)'”). Do this to also change the name on the
command line:
--8<---------------cut here---------------start------------->8---
(define starpu-maxnodes1
(package
(inherit starpu)
(name "starpu-maxnodes1")
(arguments
(substitute-keyword-arguments (package-arguments starpu)
((#:configure-flags flags '())
`(cons "--enable-maxnodes=1"
,flags))))))
--8<---------------cut here---------------end--------------->8---
Hope this helps!
--
Ricardo