* guix/memoization.scm (<cache>): New record type.
(define-lookup-procedure, define-update-procedure): New macros.
(cache-ref, cacheq-ref, cache-set!, cacheq-set!): New procedures.
(cached/mv, cachedq/mv, cached, cachedq): Use them instead of 'hash-ref'
and 'hash-set!'.
(%make-hash-table*): When 'profiled?' returns true, return a <cache>
object.
(define-cache-procedure): Adjust to show cache lookups and hits.
* guix/memoization.scm (%memoization-tables): New variable.
(%make-hash-table*, show-memoization-tables): New procedures.
(make-hash-table*): New macro.
Add top-level call to 'register-profiling-hook!'.
(memoize): Adjust to pass the resulting procedure to
'make-hash-table*'.
(%mlambda): Likewise.
Gperf is now a hard dependency.
* gnu/packages/patches/fontconfig-remove-debug-printf.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/fontutils.scm (fontconfig): Update to 2.12.6.
[source]: Add 'fontconfig-remove-debug-printf.patch'.
[arguments]: Remove 'regenerate-fcobjshash' phase.
* gnu/packages/networking.scm (whois): Update to 5.2.19.
[arguments]: Don't set HAVE_LIBIDN in 'setenv' phase; this is now autodetected.
[native-inputs]: Add PKG-CONFIG.
The reason this was required was because of a regression in ffmpeg 3.4; see
<https://trac.ffmpeg.org/ticket/6775>.
* gnu/packages/gstreamer.scm (gst-libav)[inputs]: Change FFMPEG-3.3 to FFMPEG.
* gnu/packages/video.scm (ffmpeg-3.3): Remove variable.
As this is less prone to mistakes than match.
* gnu/services/web.scm (default-nginx-config, nginx-activation,
nginx-shepherd-service): Switch from using match-lambda to match-record.
The nginx service can fail to start if the server names hash bucket size is
too small, which can happen on some systems, and when using QEMU, depending on
the CPU.
* gnu/services/web.scm (<nginx-configuration>): Add
server-names-hash-bucket-size and server-names-hash-bucket-max-size.
(default-nginx-config): Add support for the new hash bucket size parameters.
(nginx-service, nginx-activation): Pass the new hash bucket size parameters
through to the default-nginx-config procedure.
* doc/guix.texi (Web Services): Document the new hash bucket size parameters.
If nginx is configured with a ssl-certificate file, and ssl-certificate-key,
it will fail to start unless these exist. To avoid this happening, change the
default to #f.
* gnu/services/web.scm (<nginx-server-configuration>)
[ssl-certificate,ssl-certificate-key]: Set the defaults to #f.
* gnu/tests/web.scm (%nginx-servers): Remove redundant
nginx-server-configuration fields.
* doc/guix.texi (Web Services): Update examples and documentation.
Erroring here prevents doing things like building a system using nginx on a
different machine from where it's intended to be deployed, or creating
containers and VMs that use the ssl-certificate parts of the nginx
configuration, without also getting these files to exist.
* gnu/services/web.scm (emit-nginx-server-config): Don't error on missing ssl
related files.
* gnu/packages/rust.scm (%rust-bootstrap-binaries): Add entries for all
platforms supported by Guix.
(rustc-bootstrap, cargo-bootstrap)[supported-systems]: Remove field.
* gnu/packages/audio.scm (ardour)[arguments]: Switch to using version-major.
(hmmer)[source]: Switch to using version-major.
(pidgin)[native-search-paths]: Switch to using version-major.
(r-minimal)[source]: Switch to using version-major.
* gnu/packages/patches/jemalloc-arm-address-bits.patch: New patch.
* gnu/packages/jemalloc.scm (jemalloc)[source]: Use it.
* gnu/local.mk (dist_patch_DATA): Add it.