This PR addresses a few hiccups encountered by the brave souls who’ve been experimenting with the Guix scripts:
- Resolves confusion between
--cores=
and--max-jobs=
guix
’s--cores=
actually corresponds to make’s--jobs=
, so let’s just control--cores=
with our overridable env var
git-describe
will screamfatal: no tag exactly matches '<hash>'
when looking for a tag, but we don’t care, so silence thatwindeploy/unsigned
should be insidedistsrc-*
and created idempotently (sorry I know this one annoyed people)- Add troubleshooting documentation to
README.md
- Add early health check for
guix-daemon
in case user forgot to start aguix-daemon
- Depending on configuration, a
--fallback
flag may be needed to tell Guix to not fail if substitutes fail but fallback to building locally codesign_allocate
andpagestuff
are now unnecessary for codesigning as we’re now usingsignapple
A few robustness changes are also included:
- We supply the
--link-profile
flag, as some Guix packages may expect the profile to be available under$HOME/.guix-profile
- We now clear and manually set all toolchain-related env vars (e.g.
C*_INCLUDE_PATH
) ourselves, after patching a Qt::moc bug - We use the native
clang-toolchain
package for darwin builds instead ofclang
, lining up with all our other toolchain packages.
Finally, we restructure the guix building hierarchy such that it looks something like:
0guix-build-<short-hash-or-version-tag>
1├── distsrc-<short-hash-or-version-tag>-${HOST}
2│ ├── contrib
3│ ├── depends
4│ ├── src
5│ └── ...
6├── distsrc-<short-hash-or-version-tag>-...
7└── output
8 ├── dist-archive
9 │ └── bitcoin-<short-hash-or-version-tag>.tar.gz
10 ├── *-linux-*
11 │ ├── bitcoin-<short-hash-or-version-tag>-*-linux-*-debug.tar.gz
12 │ └── bitcoin-<short-hash-or-version-tag>-*-linux-*.tar.gz
13 ├── x86_64-apple-darwin18
14 │ ├── bitcoin-<short-hash-or-version-tag>-osx64.tar.gz
15 │ ├── bitcoin-<short-hash-or-version-tag>-osx-unsigned.dmg
16 │ └── bitcoin-<short-hash-or-version-tag>-osx-unsigned.tar.gz
17 └── x86_64-w64-mingw32
18 ├── bitcoin-<short-hash-or-version-tag>-win64-debug.zip
19 ├── bitcoin-<short-hash-or-version-tag>-win64-setup-unsigned.exe
20 ├── bitcoin-<short-hash-or-version-tag>-win64.zip
21 └── bitcoin-<short-hash-or-version-tag>-win-unsigned.tar.gz
Separating guix builds by their version identifier (basically namespacing them) allows us to change the layout in the future without worry about potential naming conflicts.