The command-line options presented below are specific to
Build quietly, without displaying the build log; this is equivalent to
--verbosity=0. Upon completion, the build log is kept in /var
(or similar) and can always be retrieved using the --log-file option.
Build the package, derivation, or other file-like object that the code within file evaluates to (see file-like objects).
As an example, file might contain a package definition like this (see Defining Packages):
(use-modules (guix) (guix build-system gnu) (guix licenses)) (package (name "hello") (version "2.10") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/hello/hello-" version ".tar.gz")) (sha256 (base32 "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i")))) (build-system gnu-build-system) (synopsis "Hello, GNU world: An example GNU package") (description "Guess what GNU Hello prints!") (home-page "http://www.gnu.org/software/hello/") (license gpl3+))
Build all packages listed in the given manifest (see --manifest).
Build the package or derivation expr evaluates to.
For example, expr may be
(@ (gnu packages guile)
guile-1.8), which unambiguously designates this specific variant of
version 1.8 of Guile.
Alternatively, expr may be a G-expression, in which case it is used
as a build program passed to
Lastly, expr may refer to a zero-argument monadic procedure
(see The Store Monad). The procedure must return a derivation as a
monadic value, which is then passed through
Build the source derivations of the packages, rather than the packages themselves.
guix build -S gcc returns something like
/gnu/store/…-gcc-4.7.2.tar.bz2, which is the GCC
The returned source tarball is the result of applying any patches and
code snippets specified in the package
origin (see Defining Packages).
guix build -S compiles the sources only of the
specified packages. They do not include the sources of statically
linked dependencies and by themselves are insufficient for reproducing
Fetch and return the source of package-or-derivation and all their
dependencies, recursively. This is a handy way to obtain a local copy
of all the source code needed to build packages, allowing you to
eventually build them even without network access. It is an extension
--source option and can accept one of the following
optional argument values:
This value causes the
--sources option to behave in the same way
Build the source derivations of all packages, including any source that
might be listed as
inputs. This is the default value.
$ guix build --sources tzdata The following derivations will be built: /gnu/store/…-tzdata2015b.tar.gz.drv /gnu/store/…-tzcode2015b.tar.gz.drv
Build the source derivations of all packages, as well of all transitive inputs to the packages. This can be used e.g. to prefetch package source for later offline building.
$ guix build --sources=transitive tzdata The following derivations will be built: /gnu/store/…-tzcode2015b.tar.gz.drv /gnu/store/…-findutils-4.4.2.tar.xz.drv /gnu/store/…-grep-2.21.tar.xz.drv /gnu/store/…-coreutils-8.23.tar.xz.drv /gnu/store/…-make-4.1.tar.xz.drv /gnu/store/…-bash-4.3.tar.xz.drv …
Attempt to build for system—e.g.,
the system type of the build host. The
guix build command allows
you to repeat this option several times, in which case it builds for all the
specified systems; other commands ignore extraneous -s options.
--systemflag is for native compilation and must not be confused with cross-compilation. See
--targetbelow for information on cross-compilation.
An example use of this is on Linux-based systems, which can emulate
different personalities. For instance, passing
--system=i686-linux on an
x86_64-linux system or
--system=armhf-linux on an
aarch64-linux system allows you
to build packages in a complete 32-bit environment.
Note: Building for an
armhf-linuxsystem is unconditionally enabled on
aarch64-linuxmachines, although certain aarch64 chipsets do not allow for this functionality, notably the ThunderX.
Similarly, when transparent emulation with QEMU and
is enabled (see
qemu-binfmt-service-type), you can build for any system for
which a QEMU
binfmt_misc handler is installed.
Builds for a system other than that of the machine you are using can also be offloaded to a remote machine of the right architecture. See Daemon Offload Setup, for more information on offloading.
Cross-build for triplet, which must be a valid GNU triplet, such
"mips64el-linux-gnu" (see GNU
configuration triplets in Autoconf).
Rebuild package-or-derivation, which are already available in the store, and raise an error if the build results are not bit-for-bit identical.
This mechanism allows you to check whether previously installed substitutes are genuine (see Substitutes), or whether the build result of a package is deterministic. See Invoking guix challenge, for more background information and tools.
When used in conjunction with --keep-failed, the differing output is kept in the store, under /gnu/store/…-check. This makes it easy to look for differences between the two results.
Attempt to repair the specified store items, if they are corrupt, by re-downloading or rebuilding them.
This operation is not atomic and thus restricted to
Return the derivation paths, not the output paths, of the given packages.
Make file a symlink to the result, and register it as a garbage collector root.
Consequently, the results of this
guix build invocation are
protected from garbage collection until file is removed. When
that option is omitted, build results are eligible for garbage
collection as soon as the build completes. See Invoking guix gc, for
more on GC roots.
Return the build log file names or URLs for the given package-or-derivation, or raise an error if build logs are missing.
This works regardless of how packages or derivations are specified. For instance, the following invocations are equivalent:
guix build --log-file `guix build -d guile` guix build --log-file `guix build guile` guix build --log-file guile guix build --log-file -e '(@ (gnu packages guile) guile-2.0)'
If a log is unavailable locally, and unless
passed, the command looks for a corresponding log on one of the
substitute servers (as specified with
So for instance, imagine you want to see the build log of GDB on MIPS,
but you are actually on an
$ guix build --log-file gdb -s mips64el-linux https://ci.guix.gnu.org/log/…-gdb-7.10
You can freely access a huge library of build logs!