Skip to content

Commit d55a105

Browse files
committed
guix: Add troubleshooting documentation entries
1 parent 7f401c9 commit d55a105

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

contrib/guix/README.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,57 @@ To use dongcarl's substitute server for Bitcoin Core builds after having
265265
export SUBSTITUTE_URLS='https://guix.carldong.io https://ci.guix.gnu.org'
266266
```
267267

268+
## Troubleshooting
269+
270+
### Derivation failed to build
271+
272+
When you see a build failure like below:
273+
274+
```
275+
building /gnu/store/...-foo-3.6.12.drv...
276+
/ 'check' phasenote: keeping build directory `/tmp/guix-build-foo-3.6.12.drv-0'
277+
builder for `/gnu/store/...-foo-3.6.12.drv' failed with exit code 1
278+
build of /gnu/store/...-foo-3.6.12.drv failed
279+
View build log at '/var/log/guix/drvs/../...-foo-3.6.12.drv.bz2'.
280+
cannot build derivation `/gnu/store/...-qux-7.69.1.drv': 1 dependencies couldn't be built
281+
cannot build derivation `/gnu/store/...-bar-3.16.5.drv': 1 dependencies couldn't be built
282+
cannot build derivation `/gnu/store/...-baz-2.0.5.drv': 1 dependencies couldn't be built
283+
guix time-machine: error: build of `/gnu/store/...-baz-2.0.5.drv' failed
284+
```
285+
286+
It means that `guix` failed to build a package named `foo`, which was a
287+
dependency of `qux`, `bar`, and `baz`. Importantly, note that the last "failed"
288+
line is not necessarily the root cause, the first "failed" line is.
289+
290+
Most of the time, the build failure is due to a spurious test failure or the
291+
package's build system/test suite breaking when running multi-threaded. To
292+
rebuild _just_ this derivation in a single-threaded fashion:
293+
294+
```sh
295+
$ guix build --cores=1 /gnu/store/...-foo-3.6.12.drv
296+
```
297+
298+
If the single-threaded rebuild stil did not succeed, you may need to dig deeper.
299+
You may view `foo`'s build logs in `less` like so (please replace paths with the
300+
path you see in the build failure output):
301+
302+
```sh
303+
$ bzcat /var/log/guix/drvs/../...-foo-3.6.12.drv.bz2 | less
304+
```
305+
306+
`foo`'s build directory is also preserved and available at
307+
`/tmp/guix-build-foo-3.6.12.drv-0`. However, if you fail to build `foo` multiple
308+
times, it may be `/tmp/...drv-1` or `/tmp/...drv-2`. Always consult the build
309+
failure output for the most accurate, up-to-date information.
310+
311+
#### python(-minimal): [Errno 84] Invalid or incomplete multibyte or wide character
312+
313+
This error occurs when your `$TMPDIR` (default: /tmp) exists on a filesystem
314+
which rejects characters not present in the UTF-8 character code set. An example
315+
is ZFS with the utf8only=on option set.
316+
317+
More information: https://bugs.python.org/issue37584
318+
268319
## FAQ
269320

270321
### How can I trust the binary installation?

0 commit comments

Comments
 (0)