Guile-JSON 3.x is incompatible with Guile-JSON 1.x, which we relied on
until now: it maps JSON dictionaries to alists (instead of hash tables),
and JSON arrays to vectors (instead of lists). This commit is about
adjusting all the existing code to this new mapping.
* m4/guix.m4 (GUIX_CHECK_GUILE_JSON): New macro.
* configure.ac: Use it.
* doc/guix.texi (Requirements): Mention the Guile-JSON version.
* guix/git-download.scm (git-fetch)[guile-json]: Use GUILE-JSON-3.
* guix/import/cpan.scm (string->license): Expect vectors instead of
lists.
(module->dist-name): Use 'json-fetch' instead of 'json-fetch-alist'.
(cpan-fetch): Likewise.
* guix/import/crate.scm (crate-fetch): Likewise, and call 'vector->list'
for DEPS.
* guix/import/gem.scm (rubygems-fetch): Likewise.
* guix/import/json.scm (json-fetch-alist): Remove.
* guix/import/pypi.scm (pypi-fetch): Use 'json-fetch' instead of
'json-fetch-alist'.
(latest-source-release, latest-wheel-release): Call 'vector->list' on
RELEASES.
* guix/import/stackage.scm (stackage-lts-info-fetch): Use 'json-fetch'
instead of 'json-fetch-alist'.
(lts-package-version): Use 'vector->list'.
* guix/import/utils.scm (hash-table->alist): Remove.
(alist->package): Pass 'vector->list' on the inputs fields, and default
to the empty vector.
* guix/scripts/import/json.scm (guix-import-json): Remove call to
'hash-table->alist'.
* guix/swh.scm (define-json-reader): Expect pair? or null? instead of
hash-table?.
[extract-field]: Use 'assoc-ref' instead of 'hash-ref'.
(json->branches): Use 'map' instead of 'hash-map->list'.
(json->checksums): Likewise.
(json->directory-entries, origin-visits): Call 'vector->list' on the
result of 'json->scm'.
* tests/import-utils.scm ("alist->package with dependencies"): New test.
* gnu/installer.scm (build-compiled-file)[builder]: Use GUILE-JSON-3.
* gnu/installer.scm (installer-program)[installer-builder]: Likewise.
* gnu/installer/locale.scm (iso639->iso639-languages): Use 'assoc-ref'
instead of 'hash-ref', and pass vectors through 'vector->list'.
(iso3166->iso3166-territories): Likewise.
* gnu/system/vm.scm (system-docker-image)[build]: Use GUILE-JSON-3.
* guix/docker.scm (manifest, config): Adjust for Guile-JSON 3.
* guix/scripts/pack.scm (docker-image)[build]: Use GUILE-JSON-3.
* guix/import/github.scm (fetch-releases-or-tags): Update docstring.
(latest-released-version): Use 'assoc-ref' instead of 'hash-ref'. Pass
the result of 'fetch-releases-or-tags' to 'vector->list'.
* guix/import/launchpad.scm (latest-released-version): Likewise.
* m4/guix.m4 (GUIX_CHECK_GUILE_SQLITE3): New macro.
* configure.ac: Use it and define 'HAVE_GUILE_SQLITE3'.
* guix/self.scm (specification->package): Add "guile-sqlite3".
(compiled-guix)[guile-sqlite3]: New variable.
[dependencies]: Add it.
Fixes <https://bugs.gnu.org/29903>.
Reported by Mathieu Lirzin <mthl@gnu.org>.
* m4/guix.m4 (GUIX_ASSERT_SYNTAX_OBJECT_EQUAL): New macro.
* configure.ac: Use it.
This was for Guile < 2.0.9 and we've been requiring 2.0.9+ for some time
already.
* configure.ac: Remove 'GUIX_CHECK_SRFI_37' use and 'INSTALL_SRFI_37'
conditional.
* Makefile.am: Remove code in "if INSTALL_SRFI_37".
(EXTRA_DIST): Remove srfi/srfi-37.scm.in.
* srfi/srfi-37.scm.in: Remove.
* m4/guix.m4 (GUIX_CHECK_SRFI_37): Remove.
* guix/scripts/offload.scm (<build-machine>)[ssh-options]: Remove.
[host-key, host-key-type]: New fields.
(%lsh-command, %lshg-command, user-lsh-private-key): Remove.
(user-openssh-private-key, private-key-from-file*): New procedures.
(host-key->type+key, open-ssh-session): New procedures.
(remote-pipe): Remove 'mode' parameter. Rewrite in terms of
'open-ssh-session' etc. Update users.
(send-files)[missing-files]: Rewrite using the bidirectional channel
port.
Remove call to 'call-with-compressed-output-port'.
(retrieve-files): Remove call to 'call-with-decompressed-port'.
(machine-load): Remove exit status logic.
* doc/guix.texi (Requirements): Mention Guile-SSH.
(Daemon Offload Setup): Document 'host-key' and 'private-key'. Show the
default value on each @item line.
* m4/guix.m4 (GUIX_CHECK_GUILE_SSH): New macro.
* config-daemon.ac: Use 'GUIX_CHECK_GUILE_SSH'. Set
'HAVE_DAEMON_OFFLOAD_HOOK' as a function of that.
Reported by Andreas Enge <andreas@enge.fr>.
This fixes a regression introduced in 968ae903.
* m4/guix.m4 (GUIX_SYSTEM_TYPE): Add extra square braquets around
armv[7-9] pattern.
Fixes <http://bugs.gnu.org/21987>.
Reported by Martin Vahi <martin.vahi@softf1.com>.
* m4/guix.m4 (GUIX_SYSTEM_TYPE): Restrict ARM systems to arm|armv[7-9].
Reported by Christopher Allan Webber <cwebber@dustycloud.org>.
* m4/guix.m4 (GUIX_LIBGCRYPT_LIBDIR): Add "grep -e -L" to the pipeline
to account for cases where the output of "libgcrypt-config --libs"
lacks a -L flag.
* configure.ac: When 'GUIX_LIBGCRYPT_LIBDIR' returns the empty string,
set LIBGCRYPT_LIBDIR to "no".
* config-daemon.ac: Add missing space.
* m4/guix.m4 (GUIX_LIBGCRYPT_LIBDIR): New macro.
* configure.ac: Use it when no --with-libgcrypt-* option was passed.
* README: Do not recommend --with-libgcrypt-prefix.
Co-authored-by: 宋文武 <iyzsong@gmail.com>
This disables compilation of this module on GNU/Hurd.
Reported by Manolis Ragkousis <manolis837@gmail.com>.
* m4/guix.m4 (GUIX_CHECK_LIBC_MOUNT): New variable.
* configure.ac: Use it. Define 'BUILD_SYSCALLS_MODULE' conditional.
* Makefile.am (MODULES, EXTRA_DIST): Make 'guix/build/syscalls.scm'
conditional on BUILD_SYSCALLS_MODULE.
* m4/guix.m4 (GUIX_TEST_ROOT_DIRECTORY, LINUX_HASH_BANG_LIMIT,
SOCKET_FILE_NAME_LIMIT, GUIX_SOCKET_FILE_NAME_LENGTH,
GUIX_TEST_SOCKET_FILE_NAME_LENGTH, GUIX_HASH_BANG_LENGTH,
GUIX_CHECK_FILE_NAME_LIMITS): New macros.
* configure.ac: Use 'GUIX_CHECK_FILE_NAME_LIMITS'.
* config-daemon.ac: Use 'GUIX_TEST_ROOT_DIRECTORY'.
* test-env.in: Check socket name length and emit warning if it exceeds
107.
* gnu/packages/bootstrap/armhf-linux/bash,
gnu/packages/bootstrap/armhf-linux/mkdir,
gnu/packages/bootstrap/armhf-linux/tar,
gnu/packages/bootstrap/armhf-linux/xz: New files.
* gnu-system.am (bootstrap_armhf_linuxdir, dist_bootstrap_armhf_linux_DATA)
(nodist_bootstrap_armhf_linux_DATA): New variables.
(DISTCLEANFILES): Add $(nodist_bootstrap_armhf_linux_DATA).
(gnu/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz): New target.
* build-aux/download.scm (file-name->uri): Use newer date in URI for
armhf-linux.
* gnu/packages/bootstrap.scm (raw-build): Use "guile-2.0.11.tar.xz" on
armhf-linux.
(glibc-dynamic-linker, %bootstrap-coreutils&co, %bootstrap-binutils)
(%bootstrap-glibc, %bootstrap-gcc): Add armhf-linux cases.
* m4/guix.m4 (GUIX_SYSTEM_TYPE): Add armhf case.
(GUIX_ASSERT_SUPPORTED_SYSTEM): Add armhf-linux to list of
supported systems.
* doc/guix.texi (GNU Distribution): Add armhf-linux to the list of
supported systems.
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_NO_BUILD_HOOK): New macro.
(options): Add '--no-build-hook'.
(parse_opt): Handle it.
(main)[HAVE_DAEMON_OFFLOAD_HOOK]: Set 'useBuildHook' by default.
Set $NIX_BUILD_HOOK to our offload hook unless otherwise specified.
[!HAVE_DAEMON_OFFLOAD_HOOK]: Clear 'useBuildHook'.
* pre-inst-env.in: Set and export NIX_BUILD_HOOK.
* nix/scripts/offload.in, guix/scripts/offload.scm: New files.
* guix/ui.scm (show-guix-help)[internal?]: Add "offload".
* config-daemon.ac: Call 'GUIX_CHECK_UNBUFFERED_CBIP'.
Instantiate 'nix/scripts/offload'. Set 'BUILD_DAEMON_OFFLOAD'
conditional, and optionally define 'HAVE_DEAMON_OFFLOAD_HOOK' cpp
macro.
* daemon.am (nodist_pkglibexec_SCRIPTS)[BUILD_DAEMON_OFFLOAD]: Add it.
* Makefile.am (MODULES)[BUILD_DAEMON_OFFLOAD]: Add
'guix/scripts/offload.scm'.
(EXTRA_DIST)[!BUILD_DAEMON_OFFLOAD]: Likewise.
* m4/guix.m4 (GUIX_CHECK_UNBUFFERED_CBIP): New macro.
* doc/guix.texi (Setting Up the Daemon): Move most of the body to...
(Build Environment Setup): ... this. New subsection.
(Daemon Offload Setup): New subsection.
* srfi/srfi-37.scm.in: New file, taken from Guile 2.0.9.
* m4/guix.m4: New macro.
* configure.ac: Use it. Define Automake conditional `INSTALL_SRFI_37'.
* Makefile.am (nobase_nodist_guilemodule_DATA)[INSTALL_SRFI_37]: Add
srfi/srfi-37.scm.
(GOBJECTS)[INSTALL_SRFI_37]: Add srfi/srfi-37.go.
(srfi/srfi-37.scm)[INSTALL_SRFI_37]: New target.
(EXTRA_DIST): Add srfi/srfi-37.scm.in.
* configure.ac: Compute and substitute `guix_localstatedir'.
* m4/guix.m4: Substitute `guix_system'.
* guix/config.scm.in (%store-directory, %store-directory, %system): New
variables.
* guix/store.scm (%nix-state-dir): Remove.
(%default-socket-path): Use %STATE-DIRECTORY as the default.
(%store-prefix): Use %STORE-DIRECTORY as the default.
* guix/utils.scm (%current-system): Default to %SYSTEM.