summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi47
-rw-r--r--gnu/local.mk2
-rw-r--r--gnu/packages/admin.scm4
-rw-r--r--gnu/packages/audio.scm192
-rw-r--r--gnu/packages/backup.scm19
-rw-r--r--gnu/packages/bioconductor.scm61
-rw-r--r--gnu/packages/bioinformatics.scm127
-rw-r--r--gnu/packages/compression.scm27
-rw-r--r--gnu/packages/cran.scm451
-rw-r--r--gnu/packages/crypto.scm53
-rw-r--r--gnu/packages/databases.scm21
-rw-r--r--gnu/packages/datastructures.scm24
-rw-r--r--gnu/packages/emacs.scm32
-rw-r--r--gnu/packages/embedded.scm13
-rw-r--r--gnu/packages/game-development.scm11
-rw-r--r--gnu/packages/geo.scm4
-rw-r--r--gnu/packages/gnustep.scm19
-rw-r--r--gnu/packages/gnuzilla.scm78
-rw-r--r--gnu/packages/golang.scm49
-rw-r--r--gnu/packages/gtk.scm8
-rw-r--r--gnu/packages/guile.scm74
-rw-r--r--gnu/packages/ibus.scm683
-rw-r--r--gnu/packages/image-viewers.scm4
-rw-r--r--gnu/packages/imagemagick.scm5
-rw-r--r--gnu/packages/linux.scm49
-rw-r--r--gnu/packages/llvm.scm23
-rw-r--r--gnu/packages/lxde.scm9
-rw-r--r--gnu/packages/mail.scm52
-rw-r--r--gnu/packages/messaging.scm62
-rw-r--r--gnu/packages/mtools.scm6
-rw-r--r--gnu/packages/music.scm126
-rw-r--r--gnu/packages/nano.scm4
-rw-r--r--gnu/packages/package-management.scm6
-rw-r--r--gnu/packages/patches/icecat-CVE-2018-12383.patch103
-rw-r--r--gnu/packages/patches/poppler-CVE-2018-19149.patch80
-rw-r--r--gnu/packages/pdf.scm34
-rw-r--r--gnu/packages/php.scm9
-rw-r--r--gnu/packages/python.scm19
-rw-r--r--gnu/packages/rdf.scm20
-rw-r--r--gnu/packages/samba.scm5
-rw-r--r--gnu/packages/serialization.scm8
-rw-r--r--gnu/packages/shells.scm7
-rw-r--r--gnu/packages/shellutils.scm5
-rw-r--r--gnu/packages/spice.scm2
-rw-r--r--gnu/packages/ssh.scm8
-rw-r--r--gnu/packages/statistics.scm50
-rw-r--r--gnu/packages/syncthing.scm31
-rw-r--r--gnu/packages/telephony.scm21
-rw-r--r--gnu/packages/textutils.scm51
-rw-r--r--gnu/packages/tls.scm6
-rw-r--r--gnu/packages/tor.scm9
-rw-r--r--gnu/packages/video.scm4
-rw-r--r--gnu/packages/vim.scm4
-rw-r--r--gnu/packages/web.scm6
-rw-r--r--gnu/packages/webkit.scm46
-rw-r--r--gnu/packages/wine.scm6
-rw-r--r--gnu/packages/xdisorg.scm16
-rw-r--r--gnu/packages/xorg.scm4
-rw-r--r--gnu/services/base.scm54
-rw-r--r--gnu/services/mail.scm51
-rw-r--r--gnu/services/mcron.scm2
-rw-r--r--gnu/tests/base.scm14
-rw-r--r--guix/build/go-build-system.scm3
-rw-r--r--guix/ci.scm74
-rw-r--r--guix/gexp.scm7
-rw-r--r--guix/gnu-maintenance.scm115
-rw-r--r--guix/grafts.scm8
-rw-r--r--guix/nar.scm13
-rw-r--r--guix/scripts/package.scm10
-rw-r--r--guix/scripts/system.scm7
-rw-r--r--guix/store.scm68
-rw-r--r--guix/store/database.scm6
-rw-r--r--guix/store/deduplication.scm12
-rw-r--r--guix/tests.scm34
-rw-r--r--tests/challenge.scm8
-rw-r--r--tests/debug-link.scm8
-rw-r--r--tests/gexp.scm5
-rw-r--r--tests/guix-package.sh4
-rw-r--r--tests/nar.scm47
-rw-r--r--tests/profiles.scm11
-rw-r--r--tests/size.scm8
81 files changed, 2463 insertions, 1005 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 441b65bcaf..0ba034e822 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -10563,11 +10563,14 @@ Start,,, shepherd, The GNU Shepherd Manual}).  For example:
 
 The above command, run as @code{root}, lists the currently defined
 services.  The @command{herd doc} command shows a synopsis of the given
-service:
+service and its associated actions:
 
 @example
 # herd doc nscd
 Run libc's name service cache daemon (nscd).
+
+# herd doc nscd action invalidate
+invalidate: Invalidate the given cache--e.g., 'hosts' for host name lookups.
 @end example
 
 The @command{start}, @command{stop}, and @command{restart} sub-commands
@@ -10965,6 +10968,27 @@ The Kmscon package to use.
 Return a service that runs the libc name service cache daemon (nscd) with the
 given @var{config}---an @code{<nscd-configuration>} object.  @xref{Name
 Service Switch}, for an example.
+
+For convenience, the Shepherd service for nscd provides the following actions:
+
+@table @code
+@item invalidate
+@cindex cache invalidation, nscd
+@cindex nscd, cache invalidation
+This invalidate the given cache.  For instance, running:
+
+@example
+herd invalidate nscd hosts
+@end example
+
+@noindent
+invalidates the host name lookup cache of nscd.
+
+@item statistics
+Running @command{herd statistics nscd} displays information about nscd usage
+and caches.
+@end table
+
 @end deffn
 
 @defvr {Scheme Variable} %nscd-default-configuration
@@ -14349,11 +14373,30 @@ Defaults to @samp{#t}.
 
 @end deftypevr
 
+@deftypevr {@code{service-configuration} parameter} non-negative-integer client-limit
+Maximum number of simultaneous client connections per process.  Once
+this number of connections is received, the next incoming connection
+will prompt Dovecot to spawn another process.  If set to 0,
+@code{default-client-limit} is used instead.
+
+Defaults to @samp{0}.
+
+@end deftypevr
+
 @deftypevr {@code{service-configuration} parameter} non-negative-integer service-count
 Number of connections to handle before starting a new process.
 Typically the only useful values are 0 (unlimited) or 1.  1 is more
 secure, but 0 is faster.  <doc/wiki/LoginProcess.txt>.
 Defaults to @samp{1}.
+
+@end deftypevr
+
+@deftypevr {@code{service-configuration} parameter} non-negative-integer process-limit
+Maximum number of processes that can exist for this service.  If set to
+0, @code{default-process-limit} is used instead.
+
+Defaults to @samp{0}.
+
 @end deftypevr
 
 @deftypevr {@code{service-configuration} parameter} non-negative-integer process-min-avail
@@ -24197,7 +24240,7 @@ to be updated to refer to these binaries on the target platform.  That
 is, the hashes and URLs of the bootstrap tarballs for the new platform
 must be added alongside those of the currently supported platforms.  The
 bootstrap Guile tarball is treated specially: it is expected to be
-available locally, and @file{gnu/local.mk} has rules do download it for
+available locally, and @file{gnu/local.mk} has rules to download it for
 the supported architectures; a rule for the new platform must be added
 as well.
 
diff --git a/gnu/local.mk b/gnu/local.mk
index 3e355ac9b3..c4299fcbe4 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -816,7 +816,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/hplip-remove-imageprocessor.patch	\
   %D%/packages/patches/hydra-disable-darcs-test.patch		\
   %D%/packages/patches/icecat-avoid-bundled-libraries.patch	\
-  %D%/packages/patches/icecat-CVE-2018-12383.patch		\
   %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch	\
   %D%/packages/patches/icecat-use-system-media-libs.patch	\
   %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch  \
@@ -1048,6 +1047,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/plink-1.07-unclobber-i.patch		\
   %D%/packages/patches/plink-endian-detection.patch		\
   %D%/packages/patches/plotutils-libpng-jmpbuf.patch		\
+  %D%/packages/patches/poppler-CVE-2018-19149.patch		\
   %D%/packages/patches/portaudio-audacity-compat.patch		\
   %D%/packages/patches/portmidi-modular-build.patch		\
   %D%/packages/patches/potrace-tests.patch			\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 3c65ce102c..0da35ea62e 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -981,7 +981,7 @@ system administrator.")
 (define-public sudo
   (package
     (name "sudo")
-    (version "1.8.25p1")
+    (version "1.8.26")
     (source (origin
               (method url-fetch)
               (uri
@@ -991,7 +991,7 @@ system administrator.")
                                     version ".tar.gz")))
               (sha256
                (base32
-                "0nqri46d4dpycj96zin2f2wszmhm7q9mr68hhj9sp81pgmx9rjcx"))
+                "1qpyyfga8rs02p3186sns8qvh2bzwa48ka845nrcqh83dyd23nj0"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 28447552f2..6dc0d82668 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -572,13 +572,14 @@ based on human speech recordings.")
     (name "infamous-plugins")
     (version "0.2.04")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ssj71/infamousPlugins/"
-                                  "archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ssj71/infamousPlugins.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1n6rhqsmvad7692w2h01niw5gqg5yk7a09wxl5ivs77zyp93vf7z"))))
+                "0hmqk80w4qxq09iag7b7srf2g0wigkyhzq0ywxvhz2iz0hq9k0dh"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -610,13 +611,14 @@ envelope follower, distortion effects, tape effects and more.")
     (name "swh-plugins-lv2")
     (version "1.0.16")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/swh/"
-                                  "lv2/archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/swh/lv2.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0j1mih0lp4fds07knp5i32in515sh0df1qi6694pmyz2wqnm295w"))))
+                "0y7nnww864mm4k6ayy2lhcws3wlbhb2gkyjbrwk921fvc18qk9mz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; no check target
@@ -654,14 +656,14 @@ emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
     (name "csound")
     (version "6.11.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/csound/csound/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/csound/csound.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "072pk5h9w0vhw0ncc9dn90haw1yv18v04iwwjn8nsp6930w7dvxd"))))
+                "1hlkrnv3gghx4v382nl6v6k2k1dzm5ddk35m5g3q6pzc959726s7"))))
     (build-system cmake-build-system)
     (inputs
      `(("alsa-lib" ,alsa-lib)
@@ -1174,19 +1176,15 @@ PS, and DAB+.")
 (define-public faust-2
   (package
     (inherit faust)
-    (version "2.1.0")
+    (version "2.5.23")
     (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/grame-cncm/faust.git")
-                    (commit (string-append "v"
-                                           (string-map (lambda (c)
-                                                         (if (char=? c #\.) #\- c))
-                                                       version)))))
-              (file-name (string-append "faust-" version "-checkout"))
+              (method url-fetch)
+              (uri (string-append "https://github.com/grame-cncm/faust/"
+                                  "releases/download/" version
+                                  "/faust-" version ".tar.gz"))
               (sha256
                (base32
-                "06km0ygwxxwgw1lqldccqidxhmjfz8ck0wnbd95qk5sg8sbpc068"))))
+                "1yz5jnr76hh7rmxkpdi7gyrw1wp4gyqfpq8zyl97qdi5ga5gjznq"))))
     (build-system gnu-build-system)
     (arguments
      (substitute-keyword-arguments (package-arguments faust)
@@ -1194,7 +1192,7 @@ PS, and DAB+.")
         `(list (string-append "prefix=" (assoc-ref %outputs "out"))
                "world"))))
     (native-inputs
-     `(("llvm" ,llvm-with-rtti)
+     `(("llvm" ,llvm-3.8-with-rtti)
        ("which" ,which)
        ("xxd" ,xxd)
        ("ctags" ,emacs-minimal)  ; for ctags
@@ -1881,14 +1879,14 @@ software.")
     (name "lvtk")
     (version "1.2.0")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "https://github.com/lvtk/lvtk/archive/"
-                                 version
-                                 ".tar.gz"))
-             (file-name (string-append name "-" version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/lvtk/lvtk.git")
+                   (commit version)))
+             (file-name (git-file-name name version))
              (sha256
               (base32
-               "03nbj2cqcklqwh50zj2gwm07crh5iwqbpxbpzwbg5hvgl4k4rnjd"))))
+               "1b01zvzl70ana6l1kn8fgyr7msnn3c7x61cgw7fdpp50322352p8"))))
     (build-system waf-build-system)
     (arguments
      `(#:tests? #f  ; no check target
@@ -2274,36 +2272,32 @@ tempo and pitch of an audio recording independently of one another.")
     (name "rtmidi")
     (version "2.1.0")
     (source (origin
-              (method url-fetch)
-              (uri
-               (string-append "https://github.com/powertab/rtmidi/archive/"
-                              version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/powertab/rtmidi.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0d49lapnmdgmjxh4vw57h6xk74nn5r0zwysv7jbd7m8kqhpq5rjj"))))
+                "106v177y3nrjv2l1yskch4phpqd8h97b67zj0jiq9pc3c69jr1ay"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ;no "check" target
-       #:phases (modify-phases %standard-phases
-                  (add-after
-                   'unpack 'autoconf
-                   (lambda _ (invoke "autoreconf" "-vfi")))
-                  (add-before
-                   'build 'fix-makefile
-                   (lambda _
-                     (substitute* "Makefile"
-                       (("/bin/ln") "ln")
-                       (("RtMidi.h RtError.h") "RtMidi.h"))
-                     #t))
-                  (add-before
-                   'install 'make-target-dirs
-                   (lambda _
-                     (let ((out (assoc-ref %outputs "out")))
-                       (mkdir-p (string-append out "/bin"))
-                       (mkdir (string-append out "/lib"))
-                       (mkdir (string-append out "/include")))
-                     #t)))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-makefile
+           (lambda _
+             (substitute* "Makefile"
+               (("/bin/ln") "ln")
+               (("RtMidi.h RtError.h") "RtMidi.h"))
+             #t))
+         (add-before 'install 'make-target-dirs
+           (lambda _
+             (let ((out (assoc-ref %outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (mkdir (string-append out "/lib"))
+               (mkdir (string-append out "/include")))
+             #t)))))
     (inputs
      `(("jack" ,jack-1)
        ("alsa-lib" ,alsa-lib)))
@@ -2754,20 +2748,14 @@ portions of LAME.")
      ;; TODO: Add ASIHPI.
      `(("alsa-lib" ,alsa-lib)
        ("jack" ,jack-1)))
+    ;; Autoreconf is necessary because the audacity-compat patch modifies .in
+    ;; files.
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("libtool" ,libtool)
        ("pkg-config" ,pkg-config)))
-    (arguments
-     '(#:phases
-       ;; Autoreconf is necessary because the audacity-compat patch modifies
-       ;; .in files.
-       (modify-phases %standard-phases
-         (add-after 'unpack 'autoreconf
-           (lambda _
-             (invoke "autoreconf" "-vif"))))
-       #:tests? #f))                    ;no 'check' target
+    (arguments '(#:tests? #f))                    ;no 'check' target
     (home-page "http://www.portaudio.com/")
     (synopsis "Audio I/O library")
     (description
@@ -2813,12 +2801,13 @@ synthesizer written in C++.")
     (version "1.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Themaister/RSound/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Themaister/RSound.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1wzs40c0k5zpkmm5ffl6c17xmr399sxli7ys0fbb9ib0fd334knx"))))
+        (base32 "0gspmr3klwnq98h17p5hc6ifygya4p80g4g8r7a1qavm3mv19waf"))))
     (build-system gnu-build-system)
     (inputs
      `(("alsa-lib" ,alsa-lib)
@@ -2851,14 +2840,14 @@ with a much different focus than most other audio daemons.")
     (name "xjackfreak")
     (version "1.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/johnhldavis/xjackfreak/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/johnhldavis/xjackfreak.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0xj6gpxfnw9jbdgwgm0x23xgfvj2kwmwb1nk0drw8lxgcchkq7d9"))))
+                "18c546qidbrj0f5wfiq5llii2192xpln0ab3r4vpr7i3wybxqjfz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -3026,15 +3015,16 @@ point audio data.")
     (name "cuetools")
     (version "1.4.1")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "https://github.com/svend/cuetools/archive/"
-                                 version ".tar.gz"))
-             (file-name (string-append name "-" version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/svend/cuetools.git")
+                   (commit version)))
+             (file-name (git-file-name name version))
              (sha256
               (base32
-               "01xi3rvdmil9nawsha04iagjylqr1l9v9vlzk99scs8c207l58i4"))))
+               "02ksv1ahf1v4cr2xbclsfv5x17m9ivzbssb5r8xjm97yh8a7spa3"))))
     (build-system gnu-build-system)
-    ;; The source tarball is not bootstrapped.
+    ;; The source checkout is not bootstrapped.
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -3075,13 +3065,14 @@ use them split WAVE data into multiple files.")
     (name "dcadec")
     (version "0.2.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/foo86/dcadec/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/foo86/dcadec.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0i0dpypgqkhhi4v1fmsp2way6w9kbcix3c7q79pmg39yvrzj17gd"))))
+                "07nd0ajizrp1w02bsyfcv18431r8m8rq8gjfmz9wmckpg7cxj2hs"))))
     (build-system gnu-build-system)
     (arguments
      ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
@@ -3386,13 +3377,14 @@ the following features:
     (version "1.6")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/dpayne/cli-visualizer/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dpayne/cli-visualizer.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "07zkm87f2fr8kc6531zrkya7q81sdanm6813y2f54mg13g41y6hi"))))
+         "0mirp8bk398di5xyq95iprmdyvplfghxqmrfj7jdnpy554vx7ppc"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("which" ,which)))
@@ -3440,14 +3432,14 @@ representations.")
     (name "cava")
     (version "0.6.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/karlstav/cava/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/karlstav/cava.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "13d72swnjs894llf0paandmhf1lf90dz6ygkcdw4bv84wzkq1f4q"))))
+                "1kvhqgijs29909w3sq9m0bslx2zxxn4b3i07kdz4hb0dqkppxpjy"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 52afcbc676..c927a14673 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +31,7 @@
 (define-module (gnu packages backup)
   #:use-module (guix packages)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix git-download)
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
@@ -132,22 +134,18 @@ spying and/or modification by the server.")
     (name "par2cmdline")
     (version "0.8.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/Parchive/par2cmdline/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Parchive/par2cmdline.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1jpshmmcr81mxly0md2rr231qz9c8c680bbvcmhh100dg9i4a6s6"))))
+                "0f1jsd5sw2wynjzi7yjqjaf13yhyjfdid91p8yh0jn32y03kjyrz"))))
     (native-inputs
      `(("automake" ,automake)
        ("autoconf" ,autoconf)))
     (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'autoreconf
-           (lambda _ (invoke "autoreconf" "-vfi"))))))
     (synopsis "File verification and repair tools")
     (description "Par2cmdline uses Reed-Solomon error-correcting codes to
 generate and verify PAR2 recovery files.  These files can be distributed
@@ -889,6 +887,7 @@ is like a time machine for your data. ")
                                         ,version)
                ;; Disable 'restic self-update'.  It makes little sense in Guix.
                (substitute* "build.go" (("selfupdate") ""))
+               (setenv "HOME" (getcwd)) ; for $HOME/.cache/go-build
                (invoke "go" "run" "build.go"))))
 
          (replace 'check
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index bab6b2b64d..95c722ac40 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -969,3 +969,64 @@ using pre-clustering with the k-means algorithm.  Functions are also provided
 to search for all neighbors within a given distance.  Parallelization is
 achieved for all methods using the BiocParallel framework.")
     (license license:gpl3)))
+
+(define-public r-destiny
+  (package
+    (name "r-destiny")
+    (version "2.12.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "destiny" version))
+       (sha256
+        (base32
+         "1iay17mrhsfmpwl920rh1nip5b6ybva4h6bna0yld04paq5yva67"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-fnn" ,r-fnn)
+       ("r-ggthemes" ,r-ggthemes)
+       ("r-hmisc" ,r-hmisc)
+       ("r-igraph" ,r-igraph)
+       ("r-matrix" ,r-matrix)
+       ("r-proxy" ,r-proxy)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcppeigen" ,r-rcppeigen)
+       ("r-scales" ,r-scales)
+       ("r-scatterplot3d" ,r-scatterplot3d)
+       ("r-smoother" ,r-smoother)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)
+       ("r-vim" ,r-vim)))
+    (home-page "https://bioconductor.org/packages/destiny/")
+    (synopsis "Create and plot diffusion maps")
+    (description "This package provides tools to create and plot diffusion
+maps.")
+    ;; Any version of the GPL
+    (license license:gpl3+)))
+
+(define-public r-savr
+  (package
+    (name "r-savr")
+    (version "1.20.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "savR" version))
+       (sha256
+        (base32
+         "13bwq2a2pygdkmhrcmvz525wsi5i01j911711zgs6x93wj20b2w7"))))
+    (properties `((upstream-name . "savR")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ggplot2" ,r-ggplot2)
+       ("r-gridextra" ,r-gridextra)
+       ("r-reshape2" ,r-reshape2)
+       ("r-scales" ,r-scales)
+       ("r-xml" ,r-xml)))
+    (home-page "https://github.com/bcalder/savR")
+    (synopsis "Parse and analyze Illumina SAV files")
+    (description
+     "This package provides tools to parse Illumina Sequence Analysis
+Viewer (SAV) files, access data, and generate QC plots.")
+    (license license:agpl3+)))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 8820ba0d8e..58cee5cbbe 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -7099,13 +7099,13 @@ Bioconductor, CRAN, and Github.")
 (define-public r-biocviews
   (package
     (name "r-biocviews")
-    (version "1.50.1")
+    (version "1.50.5")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "biocViews" version))
               (sha256
                (base32
-                "0hjm3r58i0r9qhyar9pk250cx7sfijg0lnvi12a9s6brmmbip1a3"))))
+                "0rc1n89n04ylvy9gvsgvizcs77bh70jg1nkjjsjs7rqbr3zzdysz"))))
     (properties
      `((upstream-name . "biocViews")))
     (build-system r-build-system)
@@ -7268,13 +7268,13 @@ abnormal copy number.")
 (define-public r-s4vectors
   (package
     (name "r-s4vectors")
-    (version "0.20.0")
+    (version "0.20.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "S4Vectors" version))
               (sha256
                (base32
-                "0qgiykjhnsvvpcp3zwmrnpx3bv3msvj0szchyvb1yb0fxw716xc5"))))
+                "18whrw67nxn82xshckl2pjy7d14sa3c27h3n9naqyqwz88lr6dzg"))))
     (properties
      `((upstream-name . "S4Vectors")))
     (build-system r-build-system)
@@ -7349,7 +7349,7 @@ possible.")
 (define-public r-genomeinfodbdata
   (package
     (name "r-genomeinfodbdata")
-    (version "1.1.0")
+    (version "1.2.0")
     (source (origin
               (method url-fetch)
               ;; We cannot use bioconductor-uri here because this tarball is
@@ -7359,7 +7359,7 @@ possible.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0k1hsjx6n2i1sf14hyrgdhxqxm5mxk0bgnivhiax944whcicmzbf"))))
+                "0di6nlqpsyqf693k2na65ayqldih563x3zfrczpqc5q2hl5kg35c"))))
     (properties
      `((upstream-name . "GenomeInfoDbData")))
     (build-system r-build-system)
@@ -7657,13 +7657,13 @@ objects.")
 (define-public r-biostrings
   (package
     (name "r-biostrings")
-    (version "2.50.0")
+    (version "2.50.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "Biostrings" version))
               (sha256
                (base32
-                "0zw0dj67fnpbz4iqnam5fxs92c1c8w8d7mzl0rkq4ksx0xl8vgg7"))))
+                "1qyv1ps7vy6gy78pm2rcikg0bgf1mv7falahjp3pkwqq1272hrl8"))))
     (properties
      `((upstream-name . "Biostrings")))
     (build-system r-build-system)
@@ -7910,7 +7910,7 @@ extracting the desired features in a convenient format.")
 (define-public r-go-db
   (package
     (name "r-go-db")
-    (version "3.6.0")
+    (version "3.7.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.bioconductor.org/packages/"
@@ -7918,7 +7918,7 @@ extracting the desired features in a convenient format.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0fi2qywr9apg5lwfqfq9qq6bgrnv4rdhxx25656qn4bsy62i838j"))))
+                "0i3wcf5h3n0dawzc1hy0kv74f06j80c47n4p3g3fmrcxlhi3jpa5"))))
     (properties
      `((upstream-name . "GO.db")))
     (build-system r-build-system)
@@ -8121,7 +8121,7 @@ genomic intervals.  In addition, it can use BAM or BigWig files as input.")
 (define-public r-genomationdata
   (package
     (name "r-genomationdata")
-    (version "1.10.0")
+    (version "1.14.0")
     (source (origin
               (method url-fetch)
               ;; We cannot use bioconductor-uri here because this tarball is
@@ -8131,7 +8131,7 @@ genomic intervals.  In addition, it can use BAM or BigWig files as input.")
                                   "genomationData_" version ".tar.gz"))
               (sha256
                (base32
-                "0h7g5x3kyb50qlblz5hc85lfm6n6f5nb68i146way3ggs04sqvla"))))
+                "10xyb8akjrhmak2i0mnv1agny2ipy364q9nlibyplpzc7vdb6bw7"))))
     (build-system r-build-system)
     ;; As this package provides little more than large data files, it doesn't
     ;; make sense to build substitutes.
@@ -8149,7 +8149,7 @@ downloaded from Encode.")
 (define-public r-org-hs-eg-db
   (package
     (name "r-org-hs-eg-db")
-    (version "3.5.0")
+    (version "3.7.0")
     (source (origin
               (method url-fetch)
               ;; We cannot use bioconductor-uri here because this tarball is
@@ -8159,7 +8159,7 @@ downloaded from Encode.")
                                   "org.Hs.eg.db_" version ".tar.gz"))
               (sha256
                (base32
-                "1v6wa5613cjq59xd7x1qz8lr9nb2abm9abl2cci1khrnrlpla927"))))
+                "1qxz9l80yg3qdqszs6dsscp7lrpfi1bgd0pxh9j7q34vprzwhdim"))))
     (properties
      `((upstream-name . "org.Hs.eg.db")))
     (build-system r-build-system)
@@ -8175,7 +8175,7 @@ on mapping using Entrez Gene identifiers.")
 (define-public r-org-ce-eg-db
   (package
     (name "r-org-ce-eg-db")
-    (version "3.5.0")
+    (version "3.7.0")
     (source (origin
               (method url-fetch)
               ;; We cannot use bioconductor-uri here because this tarball is
@@ -8185,7 +8185,7 @@ on mapping using Entrez Gene identifiers.")
                                   "org.Ce.eg.db_" version ".tar.gz"))
               (sha256
                (base32
-                "02ggchixlmzywhsbr0h2ms4dravv7m5964cjxqcjxqs16vjwlbk9"))))
+                "1w5br1ss4ha8wv4v2saj7cmbjc2jw0dyj2f2y269l078z31wcnaz"))))
     (properties
      `((upstream-name . "org.Ce.eg.db")))
     (build-system r-build-system)
@@ -8201,7 +8201,7 @@ annotations for the genome of the model worm Caenorhabditis elegans.")
 (define-public r-org-dm-eg-db
   (package
     (name "r-org-dm-eg-db")
-    (version "3.5.0")
+    (version "3.7.0")
     (source (origin
               (method url-fetch)
               ;; We cannot use bioconductor-uri here because this tarball is
@@ -8211,7 +8211,7 @@ annotations for the genome of the model worm Caenorhabditis elegans.")
                                   "org.Dm.eg.db_" version ".tar.gz"))
               (sha256
                (base32
-                "033qak1d3wwz17va0bh8z8p8arx0aw2va6gm1qfwsvdkj9cd9d7d"))))
+                "1pqjrzlyg72bjpy8zsxvaglc7jsv176bnyi87xdajmkvsgxpm7b3"))))
     (properties
      `((upstream-name . "org.Dm.eg.db")))
     (build-system r-build-system)
@@ -8227,7 +8227,7 @@ annotations for the genome of the model fruit fly Drosophila melanogaster.")
 (define-public r-org-mm-eg-db
   (package
     (name "r-org-mm-eg-db")
-    (version "3.5.0")
+    (version "3.7.0")
     (source (origin
               (method url-fetch)
               ;; We cannot use bioconductor-uri here because this tarball is
@@ -8237,7 +8237,7 @@ annotations for the genome of the model fruit fly Drosophila melanogaster.")
                                   "org.Mm.eg.db_" version ".tar.gz"))
               (sha256
                (base32
-                "11q21p3ki4bn4hb3aix0g775l45l66jmas6m94nfhqqnpjhv4d6g"))))
+                "1i3nvrd3wjigf1rmgxq1p5xxc3p8v02h5gwi62s30rkrsyjjfjxx"))))
     (properties
      `((upstream-name . "org.Mm.eg.db")))
     (build-system r-build-system)
@@ -8368,7 +8368,7 @@ in Biostrings objects.")
 (define-public r-txdb-mmusculus-ucsc-mm10-knowngene
   (package
     (name "r-txdb-mmusculus-ucsc-mm10-knowngene")
-    (version "3.4.0")
+    (version "3.4.4")
     (source (origin
               (method url-fetch)
               ;; We cannot use bioconductor-uri here because this tarball is
@@ -8379,7 +8379,7 @@ in Biostrings objects.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "08gava9wsvpcqz51k2sni3pj03n5155v32d9riqbf305nbirqbkb"))))
+                "01lgxc1fx5nhlpbwjd5zqghkkbmh6axd98ikx4b0spv0jdg6gf39"))))
     (properties
      `((upstream-name . "TxDb.Mmusculus.UCSC.mm10.knownGene")))
     (build-system r-build-system)
@@ -10215,14 +10215,14 @@ originally made available by Holmes, Harris, and Quince, 2012, PLoS ONE 7(2):
 (define-public r-ensembldb
   (package
     (name "r-ensembldb")
-    (version "2.6.0")
+    (version "2.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ensembldb" version))
        (sha256
         (base32
-         "12jqz9h6w4mxyfr43w5qbwmacn512aw0mnl0zvhsg5i7p4qj45ks"))))
+         "1js05dcv1dj4g2vj7lzlg0rgjcjlk2irdr9rxqpwxmivm8nbvf36"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-annotationdbi" ,r-annotationdbi)
@@ -14118,6 +14118,85 @@ enrichment analysis (GSEA) calculation with or without the absolute filtering.
 absolute GSEA.")
     (license license:gpl2)))
 
+(define-public jamm
+  (package
+    (name "jamm")
+    (version "1.0.7.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mahmoudibrahim/JAMM.git")
+             (commit (string-append "JAMMv" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0ls889jcma1ch9h21jjhnkadgszgqj41842hhcjh6cg88f85qf3i"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; there are none
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'build
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "JAMM.sh"
+               (("^sPath=.*")
+                (string-append "")))
+             #t))
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (libexec (string-append out "/libexec/jamm"))
+                    (bin (string-append out "/bin")))
+               (substitute* '("JAMM.sh"
+                              "SignalGenerator.sh")
+                 (("^sPath=.*")
+                  (string-append "sPath=\"" libexec "\"\n")))
+               (for-each (lambda (file)
+                           (install-file file libexec))
+                         (list "bincalculator.r"
+                               "peakfinder.r"
+                               "peakhelper.r"
+                               "signalmaker.r"
+                               "xcorr.r"
+                               "xcorrhelper.r"
+                               ;; Perl scripts
+                               "peakfilter.pl"
+                               "readshifter.pl"))
+
+               (for-each
+                (lambda (script)
+                  (chmod script #o555)
+                  (install-file script bin)
+                  (wrap-program (string-append bin "/" script)
+                    `("PATH" ":" prefix
+                      (,(string-append (assoc-ref inputs "coreutils") "/bin")
+                       ,(string-append (assoc-ref inputs "gawk") "/bin")
+                       ,(string-append (assoc-ref inputs "perl") "/bin")
+                       ,(string-append (assoc-ref inputs "r-minimal") "/bin")))
+                    `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB")))
+                    `("R_LIBS_SITE" ":" prefix (,(getenv "R_LIBS_SITE")))))
+                (list "JAMM.sh" "SignalGenerator.sh")))
+             #t)))))
+    (inputs
+     `(("bash" ,bash)
+       ("coreutils" ,coreutils)
+       ("gawk" ,gawk)
+       ("perl" ,perl)
+       ("r-minimal" ,r-minimal)
+       ;;("r-parallel" ,r-parallel)
+       ("r-signal" ,r-signal)
+       ("r-mclust" ,r-mclust)))
+    (home-page "https://github.com/mahmoudibrahim/JAMM")
+    (synopsis "Peak finder for NGS datasets")
+    (description
+     "JAMM is a peak finder for next generation sequencing datasets (ChIP-Seq,
+ATAC-Seq, DNase-Seq, etc.) that can integrate replicates and assign peak
+boundaries accurately.  JAMM is applicable to both broad and narrow
+datasets.")
+    (license license:gpl3+)))
+
 (define-public ngless
   (package
     (name "ngless")
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 7f6857d260..6c3d88e7cb 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -133,10 +133,7 @@ in compression.")
      `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'enter-source
-           (lambda _ (chdir "contrib/minizip") #t))
-         (add-after 'enter-source 'autoreconf
-           (lambda _
-             (invoke "autoreconf" "-vif"))))))
+           (lambda _ (chdir "contrib/minizip") #t)))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -188,12 +185,7 @@ utility.  Instead of being written in Java, FastJar is written in C.")
               "02cihzl77ia0dcz7z2cga2412vyhhs5pa2355q4wpwbyga2lrwjh"))
             (patches (search-patches "libtar-CVE-2013-4420.patch"))))
    (build-system gnu-build-system)
-   (arguments
-    `(#:tests? #f ;no "check" target
-      #:phases
-      (modify-phases %standard-phases
-        (add-after 'unpack 'autoconf
-          (lambda _ (invoke "sh" "autoreconf" "-vfi"))))))
+   (arguments `(#:tests? #f)) ; no "check" target
    (native-inputs
     `(("autoconf" ,autoconf)
       ("automake" ,automake)
@@ -1122,13 +1114,14 @@ smaller than those produced by @code{Xdelta}.")
     (version "3.1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/jmacd/xdelta/archive/v"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jmacd/xdelta.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "17g2pbbqy6h20qgdjq7ykib7kg5ajh8fwbsfgyjqg8pwg19wy5bm"))
-       (file-name (string-append name "-" version ".tar.gz"))
+         "09mmsalc7dwlvgrda56s2k927rpl3a5dzfa88aslkqcjnr790wjy"))
        (snippet
         ;; This file isn't freely distributable and has no effect on building.
         '(begin
@@ -1142,9 +1135,7 @@ smaller than those produced by @code{Xdelta}.")
      `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'enter-build-directory
-           (lambda _ (chdir "xdelta3") #t))
-         (add-after 'enter-build-directory 'autoconf
-           (lambda _ (invoke "autoreconf" "-vfi"))))))
+           (lambda _ (chdir "xdelta3") #t)))))
     (home-page "http://xdelta.org")
     (synopsis "Delta encoder for binary files")
     (description "xdelta encodes only the differences between two binary files
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index ec950ce0ac..6ce9bdd16f 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -32,11 +32,15 @@
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix build-system r)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gl)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages haskell)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages machine-learning)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages mpi)
@@ -45,7 +49,8 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages statistics)
   #:use-module (gnu packages tls)
-  #:use-module (gnu packages web))
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xorg))
 
 (define-public r-clipr
   (package
@@ -566,14 +571,16 @@ you to rapidly iterate while developing a package.")
 (define-public r-rcpp
   (package
     (name "r-rcpp")
-    (version "0.12.19")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rcpp" version))
        (sha256
-        (base32 "10mmiaawv9iwglc6z4y51mdpsfb1sivqmwr6xnfqkllcnpabdbk3"))))
+        (base32 "1hlbw4k79q9ich4w27b01gsvwrsnrflii8zjlcmgfzm1vpq8ndxp"))))
     (build-system r-build-system)
+    (native-inputs
+     `(("r-knitr" ,r-knitr))) ; for vignettes
     (home-page "http://www.rcpp.org")
     (synopsis "Seamless R and C++ integration")
     (description
@@ -2042,17 +2049,18 @@ Laplace approximation and adaptive Gauss-Hermite quadrature.")
 (define-public r-jomo
   (package
     (name "r-jomo")
-    (version "2.6-4")
+    (version "2.6-5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "jomo" version))
        (sha256
         (base32
-         "05g2rj9g7rgyb22b0gybw042nydyqsqsb31v05hifzavri8ij01x"))))
+         "109q5m69clrvvialxdxznd0wdb54ajhx84nj8slx8bf909a427mj"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lme4" ,r-lme4)
+       ("r-mass" ,r-mass)
        ("r-ordinal" ,r-ordinal)
        ("r-survival" ,r-survival)))
     (home-page "https://cran.r-project.org/web/packages/jomo/")
@@ -3071,6 +3079,26 @@ Analysis for Physical Applications, Donald B. Percival and Andrew T. Walden,
 Cambridge University Press, 1993.")
     (license license:gpl2)))
 
+(define-public r-aggregation
+  (package
+    (name "r-aggregation")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "aggregation" version))
+       (sha256
+        (base32
+         "0j9g604m2ccc7hcy02539yja9cf3xcbl25gvp838bp4x8w18my46"))))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/aggregation/")
+    (synopsis "Methods for p-value aggregation")
+    (description
+     "This package contains functionality for performing the following methods
+of p-value aggregation: Fisher's method, the Lancaster method (weighted
+Fisher's method), and Sidak correction.")
+    (license license:gpl3)))
+
 (define-public r-quantmod
   (package
     (name "r-quantmod")
@@ -3452,6 +3480,36 @@ dendrograms.")
     ;; Either version of the license.
     (license (list license:gpl2 license:gpl3))))
 
+(define-public r-h5
+  (package
+    (name "r-h5")
+    (version "0.9.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "h5" version))
+       (sha256
+        (base32
+         "14p7i1sj24ky87kd7qr3n9fc9l64s0bp0rwbyl6i2x69xn75gpsx"))))
+    (build-system r-build-system)
+    (inputs
+     `(("zlib" ,zlib)
+       ("hdf5" ,hdf5)))
+    (native-inputs
+     `(("which" ,which)))
+    (propagated-inputs
+     `(("r-rcpp" ,r-rcpp)))
+    (home-page "https://github.com/mannau/h5")
+    (synopsis "Interface to the HDF5 Library")
+    (description
+     "This package provides an S4 interface to the HDF5 library supporting
+fast storage and retrieval of R-objects like vectors, matrices and arrays to
+binary files in a language independent format.  The HDF5 format can therefore
+be used as an alternative to R's save/load mechanism.  Since h5 is able to
+access only subsets of stored data it can also handle data sets which do not
+fit into memory.")
+    (license license:bsd-2)))
+
 (define-public r-cgdsr
   (package
     (name "r-cgdsr")
@@ -4392,14 +4450,14 @@ and adds the annotation to the plot.")
 (define-public r-ggpubr
   (package
     (name "r-ggpubr")
-    (version "0.1.8")
+    (version "0.1.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggpubr" version))
        (sha256
         (base32
-         "0psl2zndm4wk6nnj1nv305islpxfvfgd87gjh2ph8yqn4mxpnfi1"))))
+         "0rvfgii2gxarra7d33n6c63ky0mivxxyx35acsrn94xkbd8mbcsj"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-cowplot" ,r-cowplot)
@@ -4670,6 +4728,32 @@ Extract argument descriptions and other parts of the help pages of
 functions.")
     (license license:gpl2+)))
 
+(define-public r-rjags
+  (package
+    (name "r-rjags")
+    (version "4-8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "rjags" version))
+       (sha256
+        (base32
+         "17xmjksj69f9wk4x71jxk4cgiqhaf2fj6bjm0mgzp4qln5x84a8m"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-coda" ,r-coda)))
+    (inputs
+     `(("jags" ,jags)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://mcmc-jags.sourceforge.net")
+    (synopsis "Bayesian graphical models using MCMC")
+    (description
+     "This package provides an R interface to the JAGS MCMC library.  JAGS is
+Just Another Gibbs Sampler.  It is a program for analysis of Bayesian
+hierarchical models using Markov Chain Monte Carlo (MCMC) simulation.")
+    (license license:gpl2)))
+
 (define-public r-rdpack
   (package
     (name "r-rdpack")
@@ -4732,6 +4816,112 @@ be added or removed.  When working with Word documents, a cursor can be used
 to help insert or delete content at a specific location in the document.")
     (license license:gpl3)))
 
+(define-public r-abn
+  (package
+    (name "r-abn")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "abn" version))
+       (sha256
+        (base32
+         "00k0razgdb5y5f62622fm7rxkcxrxg470nyyb02dvpfp60254kvs"))))
+    (build-system r-build-system)
+    (inputs
+     `(("gsl" ,gsl)))
+    (propagated-inputs
+     `(("r-cairo" ,r-cairo)
+       ("r-lme4" ,r-lme4)
+       ("r-mass" ,r-mass)
+       ("r-nnet" ,r-nnet)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)
+       ("r-rjags" ,r-rjags)))
+    (home-page "http://www.r-bayesian-networks.org")
+    (synopsis "Modelling multivariate data with additive bayesian networks")
+    (description
+     "Bayesian network analysis is a form of probabilistic graphical models
+which derives from empirical data a directed acyclic graph, DAG, describing
+the dependency structure between random variables.  An additive Bayesian
+network model consists of a form of a DAG where each node comprises a
+@dfn{generalized linear model} (GLM).  Additive Bayesian network models are
+equivalent to Bayesian multivariate regression using graphical modelling, they
+generalises the usual multivariable regression, GLM, to multiple dependent
+variables.  This package provides routines to help determine optimal Bayesian
+network models for a given data set, where these models are used to identify
+statistical dependencies in messy, complex data.")
+    (license license:gpl2+)))
+
+(define-public r-acd
+  (package
+    (name "r-acd")
+    (version "1.5.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ACD" version))
+       (sha256
+        (base32
+         "1a67bi3hklq8nlc50r0qnyr4k7m9kpvijy8sqqpm54by5hsysfd6"))))
+    (properties `((upstream-name . "ACD")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/ACD/")
+    (synopsis "Categorical data analysis with complete or missing responses")
+    (description
+     "This package provides tools for categorical data analysis with complete
+or missing responses.")
+    (license license:gpl2+)))
+
+(define-public r-acdm
+  (package
+    (name "r-acdm")
+    (version "1.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ACDm" version))
+       (sha256
+        (base32
+         "0b4f02ga5ra66mbrm79g0bnlzmii82rks9kmxixxqgf18yhlyjil"))))
+    (properties `((upstream-name . "ACDm")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-dplyr" ,r-dplyr)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-plyr" ,r-plyr)
+       ("r-rsolnp" ,r-rsolnp)
+       ("r-zoo" ,r-zoo)))
+    (home-page "https://cran.r-project.org/web/packages/ACDm/")
+    (synopsis "Tools for Autoregressive Conditional Duration Models")
+    (description
+     "ACDm is a package for Autoregressive Conditional Duration (ACD, Engle
+and Russell, 1998) models.  It creates trade, price or volume durations from
+transactions (tic) data, performs diurnal adjustments, fits various ACD models
+and tests them.")
+    (license license:gpl2+)))
+
+(define-public r-overlap
+  (package
+    (name "r-overlap")
+    (version "0.3.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "overlap" version))
+       (sha256
+        (base32
+         "1j3m6ir1chdz0si2fhcw6gs7c9h09bv0chz18rpzxsywww6d4rzy"))))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/overlap/")
+    (synopsis "Estimates of coefficient of overlapping for animal activity patterns")
+    (description
+     "This package provides functions to fit kernel density functions to data
+on temporal activity patterns of animals; estimate coefficients of overlapping
+of densities for two species; and calculate bootstrap estimates of confidence
+intervals.")
+    (license license:gpl3+)))
+
 (define-public r-snakecase
   (package
     (name "r-snakecase")
@@ -6507,14 +6697,14 @@ Bayesian modeling.")
 (define-public r-tmb
   (package
     (name "r-tmb")
-    (version "1.7.14")
+    (version "1.7.15")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "TMB" version))
        (sha256
         (base32
-         "0bpc504nz8xfwr8ack52dj4hpjcykn6zyf8n228z32dw9d5n96dl"))))
+         "1r2d8c5iazihba42sn33yarv0dcfiy989sx64zcf14zr8k6cgjzs"))))
     (properties `((upstream-name . "TMB")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6885,14 +7075,14 @@ directories or URLs with their associated programs.")
 (define-public r-rcmdcheck
   (package
     (name "r-rcmdcheck")
-    (version "1.3.1")
+    (version "1.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rcmdcheck" version))
        (sha256
         (base32
-         "1ga19jqix0zs7xyz2j155zyagwbv22r6dgv55g6wdjigc67qfsix"))))
+         "0ys1nd7690mhwzslyzg8fq1wxr28nz8g6av5iykkrshb8lkxg7ly"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-callr" ,r-callr)
@@ -7325,3 +7515,242 @@ netCDF files.")
      "This package provides a convenient tool to install and update
 Bioconductor packages.")
     (license license:artistic2.0)))
+
+(define-public r-rgl
+  (package
+    (name "r-rgl")
+    (version "0.99.16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "rgl" version))
+       (sha256
+        (base32
+         "0q8sg8fr0140ilssqhscaxkjc29w1rpp6f4k50amw3zzs9g58ak9"))))
+    (build-system r-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("freetype" ,freetype)
+       ("libpng" ,libpng)
+       ("glu" ,glu)
+       ("libx11" ,libx11)
+       ("ghc-pandoc" ,ghc-pandoc)
+       ("zlib" ,zlib)))
+    (propagated-inputs
+     `(("r-crosstalk" ,r-crosstalk)
+       ("r-htmltools" ,r-htmltools)
+       ("r-htmlwidgets" ,r-htmlwidgets)
+       ("r-jsonlite" ,r-jsonlite)
+       ("r-knitr" ,r-knitr)
+       ("r-magrittr" ,r-magrittr)
+       ("r-manipulatewidget" ,r-manipulatewidget)
+       ("r-shiny" ,r-shiny)))
+    (home-page "https://r-forge.r-project.org/projects/rgl/")
+    (synopsis "3D visualization using OpenGL")
+    (description
+     "This package provides medium to high level functions for 3D interactive graphics,
+including functions modelled on base graphics (@code{plot3d()}, etc.) as well
+as functions for constructing representations of geometric
+objects (@code{cube3d()}, etc.).  Output may be on screen using OpenGL, or to
+various standard 3D file formats including WebGL, PLY, OBJ, STL as well as 2D
+image formats, including PNG, Postscript, SVG, PGF.")
+    ;; Any version of the GPL.
+    (license (list license:gpl2+ license:gpl3+))))
+
+(define-public r-multicool
+  (package
+    (name "r-multicool")
+    (version "0.1-10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "multicool" version))
+       (sha256
+        (base32
+         "1ybg9piya9psqg42w9i3zsnavbxhkfklfwl7cb420i5nkq6wpc2v"))))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-rcpp" ,r-rcpp)))
+    (home-page "https://cran.r-project.org/web/packages/multicool/")
+    (synopsis "Permutations of multisets in cool-lex order")
+    (description
+     "This package provides a set of tools to permute multisets without loops
+or hash tables and to generate integer partitions.  Cool-lex order is similar
+to colexicographical order.")
+    (license license:gpl2)))
+
+(define-public r-misc3d
+  (package
+    (name "r-misc3d")
+    (version "0.8-4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "misc3d" version))
+       (sha256
+        (base32
+         "0qjzpw3h09qi2gfz52b7nhzd95p7yyxsd03fldc9wzzn6wi3vpkm"))))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/misc3d/")
+    (synopsis "Miscellaneous 3D Plots")
+    (description
+     "This package provides a collection of miscellaneous 3d plots, including
+isosurfaces.")
+    ;; Any version of the GPL.
+    (license (list license:gpl2+ license:gpl3+))))
+
+(define-public r-ks
+  (package
+    (name "r-ks")
+    (version "1.11.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ks" version))
+       (sha256
+        (base32
+         "0z749c3xzpf6n0g7xcfplrhap1di8k7kcfr7vigh95ywnigyhs8d"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-fnn" ,r-fnn)
+       ("r-kernlab" ,r-kernlab)
+       ("r-kernsmooth" ,r-kernsmooth)
+       ("r-matrix" ,r-matrix)
+       ("r-mclust" ,r-mclust)
+       ("r-mgcv" ,r-mgcv)
+       ("r-misc3d" ,r-misc3d)
+       ("r-multicool" ,r-multicool)
+       ("r-mvtnorm" ,r-mvtnorm)))
+    (home-page "http://www.mvstat.net/tduong/")
+    (synopsis "Kernel smoothing")
+    (description
+     "This package provides kernel smoothers for univariate and multivariate
+data, including density functions, density derivatives, cumulative
+distributions, modal clustering, discriminant analysis, and two-sample
+hypothesis testing.")
+    ;; Either version of the GPL.
+    (license (list license:gpl2 license:gpl3))))
+
+(define-public r-feature
+  (package
+    (name "r-feature")
+    (version "1.2.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "feature" version))
+       (sha256
+        (base32
+         "07hkw0bv38naj2hdsx4xxrm2dngi6w3rbvgr7s50bjic8hlgy1ra"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ks" ,r-ks)
+       ("r-misc3d" ,r-misc3d)
+       ("r-rgl" ,r-rgl)))
+    (home-page "http://www.mvstat.net/tduong/")
+    (synopsis "Inferential feature significance for kernel density estimation")
+    (description
+     "The feature package contains functions to display and compute kernel
+density estimates, significant gradient and significant curvature regions.
+Significant gradient and/or curvature regions often correspond to significant
+features (e.g. local modes).")
+    ;; Either version of the GPL.
+    (license (list license:gpl2 license:gpl3))))
+
+(define-public r-arm
+  (package
+    (name "r-arm")
+    (version "1.10-1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "arm" version))
+       (sha256
+        (base32
+         "0vvp90jygajd6ydky57z66wqjq9msfbl88irj5jbsray574mh4bg"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-abind" ,r-abind)
+       ("r-coda" ,r-coda)
+       ("r-lme4" ,r-lme4)
+       ("r-mass" ,r-mass)
+       ("r-matrix" ,r-matrix)
+       ("r-nlme" ,r-nlme)))
+    (home-page "https://cran.r-project.org/web/packages/arm/")
+    (synopsis "Data analysis using regression and multilevel/hierarchical models")
+    (description
+     "This package provides functions to accompany A. Gelman and J. Hill,
+Data Analysis Using Regression and Multilevel/Hierarchical Models, Cambridge
+University Press, 2007.")
+    (license license:gpl3+)))
+
+(define-public r-circular
+  (package
+    (name "r-circular")
+    (version "0.4-93")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "circular" version))
+       (sha256
+        (base32
+         "0hki85rs8wc5950pjaw28q54rly2napfbcrx3pchlfap6wwy5kkn"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-boot" ,r-boot)
+       ("r-mvtnorm" ,r-mvtnorm)))
+    (native-inputs
+     `(("gfortran" ,gfortran)))
+    (home-page "https://cran.r-project.org/web/packages/circular/")
+    (synopsis "Circular statistics")
+    (description
+     "This package provides tools for circular statistics, from \"Topics in
+circular Statistics\" (2001) S. Rao Jammalamadaka and A. SenGupta, World
+Scientific.")
+    (license license:gpl2+)))
+
+(define-public r-activity
+  (package
+    (name "r-activity")
+    (version "1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "activity" version))
+       (sha256
+        (base32
+         "1lqajgxfps2h6amz1791vp3f52rs9ghmanq1nqfxqd2jmk3idkrx"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-circular" ,r-circular)
+       ("r-overlap" ,r-overlap)
+       ("r-pbapply" ,r-pbapply)))
+    (home-page "https://cran.r-project.org/web/packages/activity/")
+    (synopsis "Animal activity statistics")
+    (description
+     "This package provides functions to fit kernel density functions to
+animal activity time data; plot activity distributions; quantify overall
+levels of activity; statistically compare activity metrics through
+bootstrapping; and evaluate variation in linear variables with time (or other
+circular variables).")
+    (license license:gpl3)))
+
+(define-public r-ouch
+  (package
+    (name "r-ouch")
+    (version "2.11-1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ouch" version))
+       (sha256
+        (base32
+         "0xkwwi62vdahlcg3k32zb1nfwsx87zdssk79mvcxgfsw9bw4gahx"))))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-subplex" ,r-subplex)))
+    (home-page "http://kingaa.github.io/ouch/")
+    (synopsis "Ornstein-Uhlenbeck models for phylogenetic comparative hypotheses")
+    (description
+     "This package provides tools to fit and compare Ornstein-Uhlenbeck models
+for evolution along a phylogenetic tree.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 29d9a3d6ab..e8062f0e1f 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 David Thompson <davet@gnu.org>
-;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -164,34 +164,31 @@ OpenBSD tool of the same name.")
                                           "See base64.c in the distribution for
                                            the license from IBM.")))))
 
-
 (define-public opendht
   (package
     (name "opendht")
     (version "0.6.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri
-        (string-append
-         "https://github.com/savoirfairelinux/" name
-         "/archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (modules '((guix build utils)))
-       (snippet
-        '(begin
-           (delete-file-recursively "src/argon2")
-           (substitute* "src/Makefile.am"
-             (("./argon2/libargon2.la") "")
-             (("SUBDIRS = argon2") ""))
-           (substitute* "src/crypto.cpp"
-             (("argon2/argon2.h") "argon2.h"))
-           (substitute* "configure.ac"
-             (("src/argon2/Makefile") ""))
-           #t))
-       (sha256
-        (base32
-         "09yvkmbqbym3b5md4n96qc1s9sf2n8ji404hagih45rmsj49599x"))))
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/savoirfairelinux/opendht.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (delete-file-recursively "src/argon2")
+                  (substitute* "src/Makefile.am"
+                    (("./argon2/libargon2.la") "")
+                    (("SUBDIRS = argon2") ""))
+                  (substitute* "src/crypto.cpp"
+                    (("argon2/argon2.h") "argon2.h"))
+                  (substitute* "configure.ac"
+                    (("src/argon2/Makefile") ""))
+                  #t))
+              (sha256
+               (base32
+                "1akk613f18rc8kqs0cxdm34iq7wwc9kffhgp5rng09arwlw8gw3w"))))
     (build-system gnu-build-system)
     (inputs
      `(("gnutls" ,gnutls)
@@ -206,11 +203,7 @@ OpenBSD tool of the same name.")
        ("automake" ,automake)
        ("libtool" ,libtool)))
     (arguments
-     `(#:configure-flags '("--disable-tools" "--disable-python")
-       #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'autoconf
-                    (lambda _
-                      (zero? (system* "autoreconf" "-vfi")))))))
+     `(#:configure-flags '("--disable-tools" "--disable-python")))
     (home-page "https://github.com/savoirfairelinux/opendht/")
     (synopsis "Distributed Hash Table (DHT) library")
     (description "OpenDHT is a Distributed Hash Table (DHT) library.  It may
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 1617c28b1e..05bebed6a6 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -803,14 +803,14 @@ as a drop-in replacement of MySQL.")
 (define-public postgresql
   (package
     (name "postgresql")
-    (version "10.5")
+    (version "10.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://ftp.postgresql.org/pub/source/v"
                                   version "/postgresql-" version ".tar.bz2"))
               (sha256
                (base32
-                "04a07jkvc5s6zgh6jr78149kcjmsxclizsqabjw44ld4j5n633kc"))))
+                "0jv26y3f10svrjxzsgqxg956c86b664azyk2wppzpa5x11pjga38"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--with-uuid=e2fs")
@@ -2087,13 +2087,14 @@ for ODBC.")
     (version "0.7.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/brianb/mdbtools/archive/"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/brianb/mdbtools.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "05hbmxcq173kzb899gdi3bz2qcc1vi3n1qbbkwpsvrq7ggf11wyw"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+         "0gwcpp9y09xhs21g7my2fs8ncb8i6ahlyixcx8jd3q97jbzj441l"))))
     (build-system gnu-build-system)
     (inputs
      `(("glib" ,glib)))
@@ -2104,12 +2105,6 @@ for ODBC.")
        ("pkg-config" ,pkg-config)
        ("txt2man" ,txt2man)
        ("which" ,which)))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'autoreconf
-           (lambda _
-             (zero? (system* "autoreconf" "-vfi")))))))
     (home-page "http://mdbtools.sourceforge.net/")
     (synopsis "Read Microsoft Access databases")
     (description "MDB Tools is a set of tools and applications to read the
diff --git a/gnu/packages/datastructures.scm b/gnu/packages/datastructures.scm
index 8517654def..4e5e59a2e3 100644
--- a/gnu/packages/datastructures.scm
+++ b/gnu/packages/datastructures.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -48,6 +49,29 @@ binary trees, binary search trees, red-black trees, 2D arrays, permutations
 and heaps.")
     (license license:gpl2+)))
 
+(define-public marisa
+  (package
+    (name "marisa")
+    (version "0.2.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/s-yata/marisa-trie"
+                           "/releases/download/v" version "/" name "-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "19ifrcmnbr9whaaf4ly3s9ndyiq9sjqhnfkrxbz9zsb44w2n36hf"))))
+    (build-system gnu-build-system)
+    (home-page "https://github.com/s-yata/marisa-trie")
+    (synopsis "Trie data structure C++ library")
+    (description "Matching Algorithm with Recursively Implemented
+StorAge (MARISA) is a static and space-efficient trie data structure C++
+library.")
+
+    ;; Dual-licensed, according to docs/readme.en.html (source files lack
+    ;; copyright/license headers.)
+    (license (list license:bsd-2 license:lgpl2.1+))))
+
 (define-public sparsehash
   (package
     (name "sparsehash")
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index c6008e6a94..3e32998a9f 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -40,6 +40,7 @@
 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 ;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
 ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
+;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3848,6 +3849,31 @@ use it, call @code{M-x ivy-yasnippet} (but make sure you have enabled
 @code{yas-minor-mode} first).")
       (license license:gpl3+))))
 
+(define-public emacs-ivy-rich
+  (package
+    (name "emacs-ivy-rich")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/Yevgnen/ivy-rich/archive/"
+                           version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "14r3mx5rkd4wz0ls5pv5w6c7la3z9iy93d3jfind3xyg4kywy95c"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-ivy" ,emacs-ivy)))
+    (home-page "https://github.com/Yevgnen/ivy-rich")
+    (synopsis "More friendly interface for @code{ivy}")
+    (description
+     "This package extends @code{ivy} by showing more information in the
+minibuffer for each candidate.  It adds columns showing buffer modes, file
+sizes, docstrings, etc.  If @code{emacs-all-the-icons} is installed, it can
+show icons as well.")
+    (license license:gpl3+)))
+
 (define-public emacs-avy
   (package
     (name "emacs-avy")
@@ -7688,17 +7714,17 @@ value of the access token.")
 (define-public emacs-circe
   (package
     (name "emacs-circe")
-    (version "2.6")
+    (version "2.10")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/jorgenschaefer/circe.git")
              (commit (string-append "v" version))))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "19h3983zy3f15cgs86irvbdzz55qyjm48qd7gjlzcxplr7vnnh0j"))))
+         "10gi14kwxd81blddpvqh95lgmpbfgp0m955naxix3bs3r6a75n4s"))))
     (build-system emacs-build-system)
     ;; In order to securely connect to an IRC server using TLS, Circe requires
     ;; the GnuTLS binary.
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 38c76cd737..f20d1e17c7 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -321,12 +321,6 @@ languages are C and C++.")
          ("pkg-config" ,pkg-config)))
       (inputs
        `(("libusb" ,libusb)))
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'autoreconf
-             (lambda _
-               (zero? (system* "autoreconf" "-vfi")))))))
       (home-page "http://repo.or.cz/w/libjaylink.git")
       (synopsis "Library to interface Segger J-Link devices")
       (description "libjaylink is a shared library written in C to access
@@ -404,9 +398,9 @@ language.")
                       "presto" "openjtag")))
        #:phases
        (modify-phases %standard-phases
+         ;; Required because of patched sources.
          (add-before 'configure 'autoreconf
-           (lambda _
-             (zero? (system* "autoreconf" "-vfi"))))
+           (lambda _ (invoke "autoreconf" "-vfi") #t))
          (add-after 'autoreconf 'change-udev-group
            (lambda _
              (substitute* "contrib/60-openocd.rules"
@@ -417,7 +411,8 @@ language.")
              (install-file "contrib/60-openocd.rules"
                            (string-append
                             (assoc-ref outputs "out")
-                            "/lib/udev/rules.d/")))))))
+                            "/lib/udev/rules.d/"))
+             #t)))))
     (home-page "http://openocd.org")
     (synopsis "On-Chip Debugger")
     (description "OpenOCD provides on-chip programming and debugging support
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index da1675820b..1f73025db7 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -399,13 +399,14 @@ support.")
     (name "tiled")
     (version "1.2.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/bjorn/tiled/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/bjorn/tiled.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "13dlf5kzvhhjkhy19118x3diakmraz4m9kxrsdam8dms6xivb6lp"))))
+                "1rra48hlkcgqxwxi802fb182p1q0723c9hhfvkd5inz9467idd4c"))))
     (build-system gnu-build-system)
     (inputs
      `(("qtbase" ,qtbase)
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 4481e21ddf..fa2b259d7c 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -549,14 +549,14 @@ coordinates.")
 (define-public r-rgooglemaps
   (package
    (name "r-rgooglemaps")
-   (version "1.4.2")
+   (version "1.4.3")
    (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RgoogleMaps" version))
        (sha256
         (base32
-         "112mdm53qx92n2m4ms02sbppckp44l1z19vy99j6gw3jrdprjydl"))))
+         "06ab3lg1rwm93hkshf1vxfm8mlxq5qsjan0wx43lhnrysay65js4"))))
    (properties `((upstream-name . "RgoogleMaps")))
    (build-system r-build-system)
    (propagated-inputs `(("r-png" ,r-png)))
diff --git a/gnu/packages/gnustep.scm b/gnu/packages/gnustep.scm
index bd28ceaa00..dd7c67d553 100644
--- a/gnu/packages/gnustep.scm
+++ b/gnu/packages/gnustep.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -167,14 +168,7 @@ interface.  It is fast, feature rich, easy to configure, and easy to use.")
                (base32
                 "084a3irxbmgms4bqaga80mlx9wgvlkx6d2w0ns939yrpfzg87laj"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:tests? #f              ; no "check" target
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'autoconf
-           (lambda _
-             (invoke "autoreconf" "-vfi")
-             #t)))))
+    (arguments '(#:tests? #f)) ; no "check" target
     (inputs
      `(("glib" ,glib)
        ("libx11" ,libx11)
@@ -262,18 +256,11 @@ on.")
                (base32
                 "1lx276ba8r2yydhmwj1g586jdqg695ad89ng36fr3mb067gvb2rz"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'autoconf
-           (lambda _
-             (invoke "autoreconf" "-vfi")
-             #t)))))
-    ;; wmclock requires autoreconf to generate its configure script.
     (inputs
      `(("libx11" ,libx11)
        ("libxext" ,libxext)
        ("libxpm" ,libxpm)))
+    ;; wmclock requires autoreconf to generate its configure script.
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 1dd0e930d3..e1abe8c2cd 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -482,83 +482,33 @@ security standards.")
 (define-public icecat
   (package
     (name "icecat")
-    (version "60.2.0-gnu1")
+    (version "60.3.0-gnu1")
     (source
      (origin
       (method url-fetch)
-      ;; Temporary URL pending official release:
-      (uri "https://alpha.gnu.org/gnu/gnuzilla/60.2.0/icecat-60.2.0-gnu1.tar.bz2")
-      #;
       (uri (string-append "mirror://gnu/gnuzilla/"
                           (first (string-split version #\-))
                           "/" name "-" version ".tar.bz2"))
       (sha256
        (base32
-        "0lqx7g79x15941rhjr3qsfwsny6vzc7d7abdmvjy6jjbqkqlc1zl"))
+        "0icnl64nxcyf7dprpdpygxhabsvyhps8c3ixysj9bcdlj9q34ib1"))
       (patches
        (list
         (search-patch  "icecat-avoid-bundled-libraries.patch")
         (search-patch  "icecat-use-system-graphite2+harfbuzz.patch")
         (search-patch  "icecat-use-system-media-libs.patch")
-        (mozilla-patch "icecat-CVE-2018-12385.patch"      "80a4a7ef2813" "1vgcbimpnfjqj934v0cryq1g13xac3wfmd4jyhcb5s60x8xyssf5")
-        (search-patch  "icecat-CVE-2018-12383.patch")
-        (mozilla-patch "icecat-bug-1489744.patch"         "6546ee839d30" "11mhvj77r789b428bfxqq5wdx8yr7lbrdjzr8qjj6fw197pldn51")
-        (mozilla-patch "icecat-CVE-2018-12386.patch"      "4808fcb2e6ca" "05sc881l7sh8bag8whd2ggdn198lskqcxq8f41scfpqscw6xs5d5")
-        (mozilla-patch "icecat-CVE-2018-12387.patch"      "b8f5c37486e1" "0lvmbh126m695kgdbasy1y5xh9n1j08cwdhn071mgvj6yn8cns5z")
-        (mozilla-patch "icecat-bug-1464751.patch"         "d5d00faf0465" "1mj7dbb06brwrk0mvap0z4lfl2hwz1cj6dwjvdrisxm046pdw98i")
-        (mozilla-patch "icecat-bug-1472538.patch"         "11462f2b98f2" "1nxgh0plzilylx8r73r7d74pv66qwjqxmd7nqii33p0snl2jjfzs")
-        (mozilla-patch "icecat-bug-1478685.patch"         "098585dc86fc" "1b0x4qdh6isvffmibvc8ad8z62m3iky9q6jq0z6gyvn8q252cqal")
-        (mozilla-patch "icecat-bug-1486080.patch"         "3f8d57d936ea" "0pz2c18wcgj44v0j8my9xbm90m4bsjcvzmavj569fi8bh6s6zz8p")
-        (mozilla-patch "icecat-bug-1423278.patch"         "878ceaee5634" "0i47s5nvrx9vqbnj6s9y9f4ffww20p8nviqa6frg676y1188xlyl")
-        (mozilla-patch "icecat-CVE-2018-12390-pt01.patch" "87be1b98ec9a" "15f4l18c7hz9aqn89gg3dwmdidfwgn10dywgpzydm8mps45amx7j")
-        (mozilla-patch "icecat-bug-1484559.patch"         "99e58b5307ce" "02fdgbliwzi2r2376wg6k1rky1isfka0smac4ii2cll01jhpfrn6")
-        (mozilla-patch "icecat-CVE-2018-12390-pt02.patch" "f25ce451a492" "18nzg39iyxza1686180qk9cc88l5j2hf1h35d62lrqmdgd9vcj33")
-        (mozilla-patch "icecat-CVE-2018-12390-pt03.patch" "35c26bc231df" "0qh8d4z6y03h5xh7djci26a01l6zq667lg2k11f6zzg7z2j0h67x")
-        (mozilla-patch "icecat-bug-1488061.patch"         "050d0cfa8e3d" "05ql798ynbyz5pvyri4b95j4ixmgnny3zl7sd2ckfrrbm9mxh627")
-        (mozilla-patch "icecat-bug-1434963-pt1.patch"     "1e6dad87efed" "1v00a6cmgswjk54041jyv1ib129fxshpzwk6mn6lr0v5hylk3bx9")
-        (mozilla-patch "icecat-bug-1434963-pt2.patch"     "6558c46df9ea" "0vdy9dm9w5k1flhcfxwvvff0aa415b5mgmmq5r37i83686768xfb")
-        (mozilla-patch "icecat-bug-1434963-pt3.patch"     "686fcfa8abd6" "0ihqr11aq4b0y7mx7bwn8yzn25mv3k2gdphm951mj1g85qg35ann")
-        (mozilla-patch "icecat-bug-1491132.patch"         "14120e0c74d6" "188c5fbhqqhmlk88p70l6d97skh7xy4jhqdby1ri3h9ix967515j")
-        (mozilla-patch "icecat-bug-1492065.patch"         "ec4b5969c6ae" "18gfwn15kh0826vlg6lhrx3q4gv82i7v1k3y5jp72mvrjq154gy0")
-        (mozilla-patch "icecat-bug-1492064.patch"         "528cabdd9665" "0rdwpkfma24hn8namfb9saw4rgi9yyyj4af5h2ijrvadw6r8lyyn")
-        (mozilla-patch "icecat-bug-1489757.patch"         "46f19852aaa6" "0dga7mw847klm8x6il2fyzpjxqxxgx1q5cya658f1w66kxms1f29")
-        (mozilla-patch "icecat-bug-1492897.patch"         "c3a48066f383" "09n6sdck4jzzmznzrq0iixg5nsgrc5ibpdfsh3i7ppwad3fsy2m3")
-        (mozilla-patch "icecat-bug-1492915.patch"         "2d280e557331" "11x2n61pw5way9cg8lbrfl3lqvgfnbmcs1fwm78i06kmfwj0msk3")
-        (mozilla-patch "icecat-CVE-2018-12390-pt04.patch" "b80f94262165" "1hw43h4sgf77x323745rixyp6cci3fb6d3fnp33q82m4ssdb5623")
-        (mozilla-patch "icecat-bug-1492484.patch"         "1b3e6759cf3a" "1yn2cd2227ncg90c88ymdi5fyfs4hk335bd16vkkgljs0924yy0m")
-        (mozilla-patch "icecat-bug-1493590.patch"         "d9fe3b2025fc" "06783hj1aqms2f9a3mp18bk8hgijk3pz70bpccn173v4w0zlbbd4")
-        (mozilla-patch "icecat-CVE-2018-12390-pt05.patch" "20c59797e994" "1vxnhpirjsj040hrq9xmq2xhkpq4l5mnnzqy0nda92dfh47zvidj")
-        (mozilla-patch "icecat-CVE-2018-12390-pt06.patch" "1749661dfd28" "0g0sj2fgp3asj0yvxksnhrc59yxncn35bz5nzlvkpgdf7h06gscd")
-        (mozilla-patch "icecat-CVE-2018-12390-pt07.patch" "a511a9242406" "1hhfrvdmkccnhs4skbi06174x37rmvf4ic86xawyyzr67yga73b2")
-        (mozilla-patch "icecat-bug-1495404.patch"         "3232bb3b622f" "1pnaxf8r9h0wldjc4qgl7z3rk34fpz9h1vd3zmhswa6mvyln5jhg")
-        (mozilla-patch "icecat-bug-1465388.patch"         "a9577451dcc2" "0v29s0v3vv9vblkcachhh46qvwjcrmv2bkcdb7sj2asc503l0lqv")
-        (mozilla-patch "icecat-CVE-2018-12390-pt08.patch" "e965f6f6ed75" "0hh091854xj5j0x1r8pg46xmn00fqi5n212xhzbdpgyf96rsf513")
-        (mozilla-patch "icecat-bug-1445528.patch"         "8a503e022a29" "1y2ll3h0yz8sfdddjmk90qjfxcr1ffhw7a9ww3yw26gyhnbpg404")
-        (mozilla-patch "icecat-bug-1409570.patch"         "8d326641d1c0" "0w29s6dixi7b7q3nicshrp29n9sj5awssdln00yx664m8a8a8ihs")
-        (mozilla-patch "icecat-bug-1496094.patch"         "6cdd6d88eca9" "1ssqa4fy2xpbr63ph3av3hkpl92g4yszx402fq9d2xn9482q43dp")
-        (mozilla-patch "icecat-CVE-2018-12391.patch"      "0fa07c704ca4" "055xdyb3g2l4rj188235i579qnr50v19q36jjpliws9nik129iqy")
-        (mozilla-patch "icecat-bug-1462162.patch"         "739e898cb7c8" "17m9y0pskmqx15dkgkw4k93njph14mpsf37wb1azwkq3xx7s0fhx")
-        (mozilla-patch "icecat-bug-1492764.patch"         "16310ab35452" "1kq5r3w9i4n6q9msmw2qsqa0jd4qw1mjlyyz8aq14fwlbkhvv199")
-        (mozilla-patch "icecat-CVE-2018-12390-pt09.patch" "9b669d047d55" "063ig49gx9468nvc9w8259j819qfdjvq0sbbz8n4kj5r6hcxjc5l")
-        (mozilla-patch "icecat-CVE-2018-12390-pt10.patch" "9d51e65c797a" "0m23cq9zl22w80dvx5rlgpbam1l3d6v56h7g9wzamzl21bwxq9fv")
-        (mozilla-patch "icecat-CVE-2018-12390-pt11.patch" "efc0596dd381" "1alvbb6wvawxxh6isisk9c40vhdiv59fy0af0n10yn1dgy8ffv5i")
-        (mozilla-patch "icecat-CVE-2018-12393.patch"      "c4fb48bb5d28" "09izww9dsg9n8cish8f3y7phxibsnd12bfkcxd7rzcdhg10nr4pl")
-        (mozilla-patch "icecat-CVE-2018-12390-pt12.patch" "b3359becd7b1" "188byxmbgrvrid2fcz34w5xdvaw571frxx1c6nqaa9k03iljdzjr")
-        (mozilla-patch "icecat-CVE-2018-12390-pt13.patch" "791c8ecf252d" "02h37594aba0pklxm3g7w1wv8vz9xmcf30fd0az8pfaccsklmx74")
-        (mozilla-patch "icecat-bug-1494328.patch"         "333276fac37c" "0qyq42jl0al63m6pwj9gva7nj82l76szzbj7sklsygx0a9mqs13z")
-        (mozilla-patch "icecat-CVE-2018-12397.patch"      "cb73374a0e4e" "0x2s1nwgwdag9df5hkwzvjj0qznp5c3d6w6y63rn2y287jn9m3vl")
-        (mozilla-patch "icecat-CVE-2018-12392.patch"      "f6bb138ad0ab" "0f0z9dsyw2a11p4p31mdyic571153jpfgy2q04i4v6dmmcz76pm3")
-        (mozilla-patch "icecat-CVE-2018-12396.patch"      "f27145bd5502" "0vznmlm1fbl3ynax2zpi6xxzr9qp9b83afr3mv90jgrhlgpzdbcz")
-        (mozilla-patch "icecat-CVE-2018-12395-pt1.patch"  "133a99a8f3ca" "0im7m4jmc273mg9kih0i70hxsgzy04j6ydm9zmaz2933hkhdf4iw")
-        (mozilla-patch "icecat-CVE-2018-12395-pt2.patch"  "82176a4a9b14" "0g3yqx4854d4mx5a0ghb7p7saj6y5d5bm2lfhabvkwybcd477zmc")
-        (mozilla-patch "icecat-bug-1474265.patch"         "e8abd9a8ce6e" "1q2sv5h081rvnhsx6g1y8a43hwv6hsg0cr6zdcij58mkgzf6hyvd")
-        (mozilla-patch "icecat-bug-1492737-pt1.patch"     "eeb9060379dc" "1d2mf0x4rni7anvi0sgra4dg87fmc6g7zhizzl9jv2x8va27ycbp")
-        (mozilla-patch "icecat-bug-1492737-pt2.patch"     "99eae0d15092" "0f9j6cvhrbrrxa95p4pkcn285r9wmi9yj13nwj5x0gkglwx6idbk")
-        (mozilla-patch "icecat-CVE-2018-12389-pt1.patch"  "23b23e12c548" "0nsdycggki5rhh59yvmh41nf1ahjmgii89fx38jryprhspy3wg62")
-        (mozilla-patch "icecat-CVE-2018-12390-pt14.patch" "023133ff02ec" "1g22qxnmgiy8bgrn2nv6har6vpz4p2h5pdas8ib1yyz7p2ic8652")
-        (mozilla-patch "icecat-CVE-2018-12390-pt15.patch" "9461988ff462" "0yq2cr5grqskr0kz4nxcwmnywy9g0xyv6k6q44i490jcj8x2y1vw")
-        (mozilla-patch "icecat-CVE-2018-12390-pt16.patch" "09939be135d8" "1546xlk368v4hnjd3hf4w868i6m8r4wfd34qxz4wg1cdpr4m5mik")
-        (mozilla-patch "icecat-CVE-2018-12389-pt2.patch"  "ea9412b18ca8" "0fmdncrylbmjh0bcb6dmw1rq7zww8a0v9v9p1pxqfz0vbc6v9l5d")))
+        (mozilla-patch "icecat-bug-1464061.patch"         "d28761dbff18" "1f58rzwx4s1af66fdwn9lgkcd1ksmq8kn8imvf78p90jqi24h7b4")
+        (mozilla-patch "icecat-bug-1479853.patch"         "4faeb696dd06" "12891xx9c15s6kby6d3zk64v5nqgaq7sw597zv1fkd3a6x69hlva")
+        (mozilla-patch "icecat-bug-1488295.patch"         "12ba39f69876" "1piyq44f0xa0a9z2748aqwpaziaxwp61d86gyhalbyag8lcxfb3p")
+        (mozilla-patch "icecat-bug-1500011.patch"         "a0adabeedf26" "0f5wazha3zxzhy2j8f93hx62l9p02b1p40vi07qah3ar67h4ccj9")
+        (mozilla-patch "icecat-bug-1503082.patch"         "19604eb26230" "1wqxgph4z14ijhk2j2m4av5p6gx72d02lzz83q6yy0k065kw8psb")
+        (mozilla-patch "icecat-bug-1499861.patch"         "98737ab09270" "0fyl6wv0jxcxpkfpsff46y93k49n8lrw0k7c1p45g8da015dx27a")
+        (mozilla-patch "icecat-bug-1504452.patch"         "1cf7d80355d5" "19jp4x32vyxam54d1r9fm7jwf6krhhf3xazfqmxb9aw4iwdil7dl")
+        (mozilla-patch "icecat-bug-1494752.patch"         "c264774b8913" "1hxyi131x8jwawrq90cgkph833iv9ixrdrgzl1r978gbzwq10xz2")
+        (mozilla-patch "icecat-bug-1477773.patch"         "ec13fda7c9b0" "0zj7aylgw55g0y7plaafn5gq8jwcsdr1bpdxacs0hq914nm8zy9z")
+        (mozilla-patch "icecat-bug-1500759.patch"         "5e1a9644aeef" "1qimrpgyrd8zkiri7w57j0aymk20y9b34am5w7rvr6qj1lhrbfla")
+        (mozilla-patch "icecat-bug-1485655.patch"         "9055726e2d89" "1pppxr94zqh6zmi2mn1ih21qap09vk5ivbhnwxqr8iszvygjg44g")
+        (mozilla-patch "icecat-bug-1410214.patch"         "9e641345e2ef" "0542xss2jdb8drh4g50cfy32l300x69dyywgx3dqs03vgr3qplxy")))
       (modules '((guix build utils)))
       (snippet
        '(begin
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 49fe34f13d..60890bf724 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -537,7 +537,7 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                  (setenv "GOGC" "400")
                  #t)))))))))
 
-(define-public go go-1.9)
+(define-public go go-1.11)
 
 (define-public go-github-com-alsm-ioprogress
   (let ((commit "063c3725f436e7fba0c8f588547bee21ffec7ac5")
@@ -2161,26 +2161,28 @@ generate ANSI colored strings.")
           (base32
            "1d9hr29i36cza98afj3g6rs3l7xbkprwzz0blcxsr9dd7nak20di"))))
       (build-system go-build-system)
-      (native-inputs
+      ;; From go-1.10 onward, "pkg" compiled libraries are not re-used, so
+      ;; when this package required as input for another one, it will have to
+      ;; be built again.  Thus its CGO requirements must be made available in
+      ;; the environment, that is, they must be propagated.
+      (propagated-inputs
        `(("lua" ,lua)))
       (arguments
        `(#:unpack-path "github.com/aarzilli/golua"
          #:import-path "github.com/aarzilli/golua/lua"
          #:phases
          (modify-phases %standard-phases
-           (replace 'build
-             (lambda* (#:key import-path #:allow-other-keys)
-               (invoke "go" "install"
-                       "-v"  ; print the name of packages as they are compiled
-                       "-x"  ; print each command as it is invoked
-                       "-ldflags=-s -w" ; strip the symbol table and debug
-                       "-tags" "llua" ; Latest Lua on Guix does not have a version number.
-                       import-path)))
-           (replace 'check
-             (lambda* (#:key import-path #:allow-other-keys)
-               (invoke "go" "test"
-                       "-tags" "llua" ; Latest Lua on Guix does not have a version number.
-                       import-path))))))
+           ;; While it's possible to fix the CGO_LDFLAGS with the "-tags"
+           ;; command line argument, go-1.10+ does not re-use the produced pkg
+           ;; for dependencies, which means we would need to propagate the
+           ;; same "-tags" argument to all golua referrers.  A substitution is
+           ;; more convenient here.  We also need to propagate the lua
+           ;; dependency to make it available to referrers.
+           (add-after 'unpack 'fix-lua-ldflags
+             (lambda _
+               (substitute* "src/github.com/aarzilli/golua/lua/lua.go"
+                 (("#cgo linux,!llua,!luaa LDFLAGS: -llua5.3")
+                  "#cgo linux,!llua,!luaa LDFLAGS: -llua")))))))
       (home-page "https://github.com/aarzilli/golua")
       (synopsis "Go Bindings for the Lua C API")
       (description "This package provides @code{lua}, a Go module that can
@@ -2428,11 +2430,24 @@ and lookup requests.  Browse requests are not supported yet.")
           (base32
            "1cpjqnrviwflz150g78iir5ndrp3hh7a93zbp4dwbg6sb2q141p2"))))
       (build-system go-build-system)
-      (native-inputs
+      ;; From go-1.10 onward, "pkg" compiled libraries are not re-used, so
+      ;; when this package required as input for another one, it will have to
+      ;; be built again.  Thus its CGO requirements must be made available in
+      ;; the environment, that is, they must be propagated.
+      (propagated-inputs
        `(("pkg-config" ,pkg-config)
          ("taglib" ,taglib)))
       (arguments
-       `(#:import-path "github.com/wtolson/go-taglib"))
+       `(#:import-path "github.com/wtolson/go-taglib"
+         ;; Tests don't pass "vet" on go-1.11.  See
+         ;; https://github.com/wtolson/go-taglib/issues/12.
+         #:phases
+         (modify-phases %standard-phases
+           (replace 'check
+             (lambda* (#:key import-path #:allow-other-keys)
+               (invoke "go" "test"
+                       "-vet=off"
+                       import-path))))))
       (home-page "https://github.com/wtolson/go-taglib")
       (synopsis "Go wrapper for taglib")
       (description "Go wrapper for taglib")
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 66456ab1e2..08f92df96c 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1413,7 +1414,12 @@ information.")
                (string-append (assoc-ref inputs "docbook-xsl")
                               "/xml/xsl/docbook-xsl-"
                               ,(package-version docbook-xsl)
-                              "/html/chunk.xsl")))
+                              "/html/chunk.xsl"))
+              (("http://docbook.sourceforge.net/release/xsl/current/common/en.xml")
+               (string-append (assoc-ref inputs "docbook-xsl")
+                              "/xml/xsl/docbook-xsl-"
+                              ,(package-version docbook-xsl)
+                              "/common/en.xml")))
              #t))
          (add-after 'patch-gtk-doc-scan 'patch-test-out
            (lambda _
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index a77cacffe1..f3eb2dcd36 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
-;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
 ;;; Copyright © 2016 Eraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
@@ -486,10 +486,7 @@ AM_SCM_LOG_FLAGS =  --no-auto-compile -s")
                  ;; FIXME: one of the database tests fails for unknown
                  ;; reasons.  It does not fail when run outside of Guix.
                  (("tests/database.scm") ""))
-               #t))
-           (add-after 'fix-bug-22 'autogen
-             (lambda _
-               (zero? (system* "sh" "autogen.sh")))))))
+               #t)))))
       (inputs
        `(("guile" ,guile-2.0)))
       (native-inputs
@@ -829,14 +826,6 @@ provides tight coupling to Guix.")
                (base32
                 "0qjjvadr7gibdq9jvwkmlkb4afsw9n2shfj9phpiadinxk3p4m2g"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'autoreconf
-                    (lambda _
-                      ;; Repository comes with a broken symlink
-                      (delete-file "README")
-                      (symlink "README.org" "README")
-                      (zero? (system* "autoreconf" "-fi")))))))
     (native-inputs
      `(("autoconf" ,autoconf-wrapper)
        ("automake" ,automake)
@@ -1550,10 +1539,7 @@ $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
                         (("^guilesitedir =.*$")
                          "guilesitedir = \
 $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
-                      #t))
-                  (add-after 'unpack 'autoreconf
-                    (lambda _
-                      (zero? (system* "autoreconf" "-vfi")))))))
+                      #t)))))
     (home-page "https://github.com/artyom-poptsov/guile-dsv")
     (synopsis "DSV module for Guile")
     (description
@@ -2244,6 +2230,60 @@ using S-expressions.")
 tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
     (license license:gpl3+)))
 
+(define-public guile-email
+  (let ((commit "fa52eac55e5946db89621a6c583d2aa357864dee")
+        (revision "1"))
+    (package
+      (name "guile-email")
+      (version (git-version "0.1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://git.systemreboot.net/guile-email")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1037mbz7qd9bzaqp8ysyhnl9ipd97fmj3b9jr8qfzx9179vvsj63"))))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("autoconf" ,autoconf)
+         ("automake" ,automake)))
+      (inputs
+       `(("guile" ,guile-2.2)))
+      (home-page "https://git.systemreboot.net/guile-email")
+      (synopsis "Guile email parser")
+      (description "This package provides an email parser written in pure
+Guile.")
+      (license license:agpl3+))))
+
+(define-public guile-debbugs-next
+  (let ((commit "75a331d561c8b6f8efcf16216dab961c17759efe")
+        (revision "1"))
+    (package (inherit guile-debbugs)
+      (name "guile-debbugs")
+      (version (git-version "0.0.3" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.savannah.gnu.org/git/guile-debbugs.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0br3mgbw41bpc9x57jlghl0i8dz9nl63r4wzs5l47aqszf84870y"))))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("texinfo" ,texinfo)))
+      (inputs
+       `(("guile" ,guile-2.2)
+         ("guile-email" ,guile-email))))))
+
 ;; There has not been any release yet.
 (define-public guile-newt
   (let ((commit "4eaa3cf84b9b426cc0ff7bec48b76cca6ca3ec83")
diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm
index 08fce5f6fb..a2687ac8c3 100644
--- a/gnu/packages/ibus.scm
+++ b/gnu/packages/ibus.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,185 +25,193 @@
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (gnu packages)
   #:use-module (gnu packages anthy)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages datastructures)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages iso-codes)
+  #:use-module (gnu packages logging)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages serialization)
+  #:use-module (gnu packages textutils)
   #:use-module (gnu packages xorg))
 
 (define-public ibus
   (package
-   (name "ibus")
-   (version "1.5.19")
-   (source (origin
-             (method url-fetch)
-             (uri (string-append "https://github.com/ibus/ibus/"
-                                 "releases/download/"
-                                 version "/ibus-" version ".tar.gz"))
-             (sha256
-              (base32
-               "0a94bnpm24581317hdnihwr4cniriml10p4ffgxg14xhvaccfrjb"))))
-   (build-system glib-or-gtk-build-system)
-   (arguments
-    `(#:tests? #f  ; tests fail because there's no connection to dbus
-      #:configure-flags `("--disable-emoji-dict" ; cannot find emoji.json path
-                          "--disable-python2"
-                          "--enable-python-library"
-                          ,(string-append "--with-ucd-dir="
-                                          (getcwd) "/ucd")
-                          "--enable-wayland")
-      #:make-flags
-      (list "CC=gcc"
-            (string-append "pyoverridesdir="
-                           (assoc-ref %outputs "out")
-                           "/lib/python3.6/site-packages/gi/overrides/"))
-      #:phases
-      (modify-phases %standard-phases
-        (add-after 'unpack 'prepare-ucd-dir
-          (lambda* (#:key inputs #:allow-other-keys)
-            (mkdir-p "../ucd")
-            (symlink (assoc-ref inputs "unicode-blocks") "../ucd/Blocks.txt")
-            (symlink (assoc-ref inputs "unicode-nameslist") "../ucd/NamesList.txt")
-            #t))
-        (add-before 'configure 'disable-dconf-update
-          (lambda _
-            (substitute* "data/dconf/Makefile.in"
-              (("dconf update") "echo dconf update"))
-            #t))
-        (add-after 'unpack 'delete-generated-files
-          (lambda _
-            (for-each (lambda (file)
-                        (let ((c (string-append (string-drop-right file 4) "c")))
-                          (when (file-exists? c)
-                            (format #t "deleting ~a\n" c)
-                            (delete-file c))))
-                      (find-files "." "\\.vala"))
-            #t))
-        (add-after 'unpack 'fix-paths
-          (lambda* (#:key inputs #:allow-other-keys)
-            (substitute* "src/ibusenginesimple.c"
-              (("/usr/share/X11/locale")
-               (string-append (assoc-ref inputs "libx11")
-                              "/share/X11/locale")))
-            (substitute* "ui/gtk3/xkblayout.vala"
-              (("\"(setxkbmap|xmodmap)\"" _ prog)
-               (string-append "\"" (assoc-ref inputs prog) "\"")))
-            #t))
-        (add-after 'wrap-program 'wrap-with-additional-paths
-          (lambda* (#:key outputs #:allow-other-keys)
-            ;; Make sure 'ibus-setup' runs with the correct PYTHONPATH and
-            ;; GI_TYPELIB_PATH.
-            (let ((out (assoc-ref outputs "out")))
-              (wrap-program (string-append out "/bin/ibus-setup")
-                `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))
-                `("GI_TYPELIB_PATH" ":" prefix
-                  (,(getenv "GI_TYPELIB_PATH")
-                   ,(string-append out "/lib/girepository-1.0")))))
-            #t)))))
-   (inputs
-    `(("dbus" ,dbus)
-      ("dconf" ,dconf)
-      ("gconf" ,gconf)
-      ("gtk2" ,gtk+-2)
-      ("gtk+" ,gtk+)
-      ("intltool" ,intltool)
-      ("json-glib" ,json-glib)
-      ("libnotify" ,libnotify)
-      ("libx11" ,libx11)
-      ("setxkbmap" ,setxkbmap)
-      ("wayland" ,wayland)
-      ("xmodmap" ,xmodmap)
-      ("iso-codes" ,iso-codes)
-      ("pygobject2" ,python-pygobject)
-      ("python" ,python)))
-   (native-inputs
-    `(("glib" ,glib "bin") ; for glib-genmarshal
-      ("gobject-introspection" ,gobject-introspection) ; for g-ir-compiler
-      ("unicode-nameslist"
-       ,(origin
-          (method url-fetch)
-          (uri "https://www.unicode.org/Public/UNIDATA/NamesList.txt")
-          (sha256
-           (base32 "0yr2h0nfqhirfi3bxl33z6cc94qqshlpgi06c25xh9754irqsgv8"))))
-      ("unicode-blocks"
-       ,(origin
-          (method url-fetch)
-          (uri "https://www.unicode.org/Public/UNIDATA/Blocks.txt")
-          (sha256
-           (base32 "0lnh9iazikpr548bd7nkaq9r3vfljfvz0rg2462prac8qxk7ni8b"))))
-      ("vala" ,vala)
-      ("pkg-config" ,pkg-config)))
-   (native-search-paths
-    (list (search-path-specification
-           (variable "IBUS_COMPONENT_PATH")
-           (files '("share/ibus/component")))))
-   (synopsis "Input method framework")
-   (description
-    "IBus is an input framework providing a full-featured and user-friendly
+    (name "ibus")
+    (version "1.5.19")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/ibus/ibus/"
+                                  "releases/download/"
+                                  version "/ibus-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0a94bnpm24581317hdnihwr4cniriml10p4ffgxg14xhvaccfrjb"))))
+    (build-system glib-or-gtk-build-system)
+    (arguments
+     `(#:tests? #f  ; tests fail because there's no connection to dbus
+       #:configure-flags `("--disable-emoji-dict" ; cannot find emoji.json path
+                           "--disable-python2"
+                           "--enable-python-library"
+                           ,(string-append "--with-ucd-dir="
+                                           (getcwd) "/ucd")
+                           "--enable-wayland")
+       #:make-flags
+       (list "CC=gcc"
+             (string-append "pyoverridesdir="
+                            (assoc-ref %outputs "out")
+                            "/lib/python3.6/site-packages/gi/overrides/"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'prepare-ucd-dir
+           (lambda* (#:key inputs #:allow-other-keys)
+             (mkdir-p "../ucd")
+             (symlink (assoc-ref inputs "unicode-blocks") "../ucd/Blocks.txt")
+             (symlink (assoc-ref inputs "unicode-nameslist") "../ucd/NamesList.txt")
+             #t))
+         (add-before 'configure 'disable-dconf-update
+           (lambda _
+             (substitute* "data/dconf/Makefile.in"
+               (("dconf update") "echo dconf update"))
+             #t))
+         (add-after 'unpack 'delete-generated-files
+           (lambda _
+             (for-each (lambda (file)
+                         (let ((c (string-append (string-drop-right file 4) "c")))
+                           (when (file-exists? c)
+                             (format #t "deleting ~a\n" c)
+                             (delete-file c))))
+                       (find-files "." "\\.vala"))
+             #t))
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/ibusenginesimple.c"
+               (("/usr/share/X11/locale")
+                (string-append (assoc-ref inputs "libx11")
+                               "/share/X11/locale")))
+             (substitute* "ui/gtk3/xkblayout.vala"
+               (("\"(setxkbmap|xmodmap)\"" _ prog)
+                (string-append "\"" (assoc-ref inputs prog) "\"")))
+             #t))
+         (add-after 'wrap-program 'wrap-with-additional-paths
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Make sure 'ibus-setup' runs with the correct PYTHONPATH and
+             ;; GI_TYPELIB_PATH.
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/ibus-setup")
+                 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))
+                 `("GI_TYPELIB_PATH" ":" prefix
+                   (,(getenv "GI_TYPELIB_PATH")
+                    ,(string-append out "/lib/girepository-1.0")))))
+             #t)))))
+    (inputs
+     `(("dbus" ,dbus)
+       ("dconf" ,dconf)
+       ("gconf" ,gconf)
+       ("gtk2" ,gtk+-2)
+       ("gtk+" ,gtk+)
+       ("intltool" ,intltool)
+       ("json-glib" ,json-glib)
+       ("libnotify" ,libnotify)
+       ("libx11" ,libx11)
+       ("setxkbmap" ,setxkbmap)
+       ("wayland" ,wayland)
+       ("xmodmap" ,xmodmap)
+       ("iso-codes" ,iso-codes)
+       ("pygobject2" ,python-pygobject)
+       ("python" ,python)))
+    (native-inputs
+     `(("glib" ,glib "bin") ; for glib-genmarshal
+       ("gobject-introspection" ,gobject-introspection) ; for g-ir-compiler
+       ("unicode-nameslist"
+        ,(origin
+           (method url-fetch)
+           (uri "https://www.unicode.org/Public/UNIDATA/NamesList.txt")
+           (sha256
+            (base32 "0yr2h0nfqhirfi3bxl33z6cc94qqshlpgi06c25xh9754irqsgv8"))))
+       ("unicode-blocks"
+        ,(origin
+           (method url-fetch)
+           (uri "https://www.unicode.org/Public/UNIDATA/Blocks.txt")
+           (sha256
+            (base32 "0lnh9iazikpr548bd7nkaq9r3vfljfvz0rg2462prac8qxk7ni8b"))))
+       ("vala" ,vala)
+       ("pkg-config" ,pkg-config)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "IBUS_COMPONENT_PATH")
+            (files '("share/ibus/component")))))
+    (synopsis "Input method framework")
+    (description
+     "IBus is an input framework providing a full-featured and user-friendly
 input method user interface.  It comes with multilingual input support.  It
 may also simplify input method development.")
-   (home-page "https://github.com/ibus/ibus/wiki")
-   (license lgpl2.1+)))
+    (home-page "https://github.com/ibus/ibus/wiki")
+    (license lgpl2.1+)))
 
 (define-public ibus-libpinyin
   (package
-   (name "ibus-libpinyin")
-   (version "1.10.0")
-   (source (origin
-             (method url-fetch)
-             (uri (string-append "https://github.com/libpinyin/ibus-libpinyin/"
-                                 "releases/download/" version
-                                 "/ibus-libpinyin-" version ".tar.gz"))
-             (sha256
-              (base32
-               "0yq8aw4lddiviag8cnik6fp52vvk8lxv6bym13a3xya84c6zii3c"))))
-   (build-system glib-or-gtk-build-system)
-   (arguments
-    `(#:phases
-      (modify-phases %standard-phases
-        (add-after 'wrap-program 'wrap-with-additional-paths
-          (lambda* (#:key inputs outputs #:allow-other-keys)
-            ;; Make sure 'ibus-setup-libpinyin' runs with the correct
-            ;; PYTHONPATH and GI_TYPELIB_PATH.
-            (let ((out (assoc-ref outputs "out")))
-              (wrap-program (string-append out "/libexec/ibus-setup-libpinyin")
-                `("PYTHONPATH" ":" prefix
-                  (,(getenv "PYTHONPATH")
-                   ,(string-append (assoc-ref inputs "ibus")
-                                   "/lib/girepository-1.0")))
-                `("GI_TYPELIB_PATH" ":" prefix
-                  (,(string-append (assoc-ref inputs "ibus")
-                                   "/lib/girepository-1.0"))))
-              #t))))))
-   (inputs
-    `(("ibus" ,ibus)
-      ("libpinyin" ,libpinyin)
-      ("bdb" ,bdb)
-      ("sqlite" ,sqlite)
-      ("python" ,python)
-      ("pyxdg" ,python-pyxdg)
-      ("gtk+" ,gtk+)))
-   (native-inputs
-    `(("pkg-config" ,pkg-config)
-      ("intltool" ,intltool)
-      ("glib" ,glib "bin")))
-   (synopsis "Chinese pinyin and ZhuYin input methods for IBus")
-   (description
-    "This package includes a Chinese pinyin input method and a Chinese
+    (name "ibus-libpinyin")
+    (version "1.10.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/libpinyin/ibus-libpinyin/"
+                                  "releases/download/" version
+                                  "/ibus-libpinyin-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0yq8aw4lddiviag8cnik6fp52vvk8lxv6bym13a3xya84c6zii3c"))))
+    (build-system glib-or-gtk-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'wrap-program 'wrap-with-additional-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Make sure 'ibus-setup-libpinyin' runs with the correct
+             ;; PYTHONPATH and GI_TYPELIB_PATH.
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/libexec/ibus-setup-libpinyin")
+                 `("PYTHONPATH" ":" prefix
+                   (,(getenv "PYTHONPATH")
+                    ,(string-append (assoc-ref inputs "ibus")
+                                    "/lib/girepository-1.0")))
+                 `("GI_TYPELIB_PATH" ":" prefix
+                   (,(string-append (assoc-ref inputs "ibus")
+                                    "/lib/girepository-1.0"))))
+               #t))))))
+    (inputs
+     `(("ibus" ,ibus)
+       ("libpinyin" ,libpinyin)
+       ("bdb" ,bdb)
+       ("sqlite" ,sqlite)
+       ("python" ,python)
+       ("pyxdg" ,python-pyxdg)
+       ("gtk+" ,gtk+)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)
+       ("glib" ,glib "bin")))
+    (synopsis "Chinese pinyin and ZhuYin input methods for IBus")
+    (description
+     "This package includes a Chinese pinyin input method and a Chinese
 ZhuYin (Bopomofo) input method based on libpinyin for IBus.")
-   (home-page "https://github.com/libpinyin/ibus-libpinyin")
-   (license gpl2+)))
+    (home-page "https://github.com/libpinyin/ibus-libpinyin")
+    (license gpl2+)))
 
 (define-public libpinyin
   (package
@@ -279,3 +288,369 @@ applications allow text input via IBus, installing this package will enable
 Japanese language input in most graphical applications.")
     (home-page "https://github.com/fujiwarat/ibus-anthy")
     (license gpl2+)))
+
+(define-public librime
+  (package
+    (name "librime")
+    (version "1.3.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rime/librime.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1y0h3nnz97smx9z8h5fzk4c27mvrwv8kajxffqc43bhyvxvb2jd6"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("boost" ,boost)
+       ("glog" ,glog)
+       ("leveldb" ,leveldb)
+       ("marisa" ,marisa)
+       ("opencc" ,opencc)
+       ("yaml-cpp" ,yaml-cpp)))
+    (home-page "https://rime.im/")
+    (synopsis "The core library of Rime Input Method Engine")
+    (description "@dfn{librime} is the core library of Rime Input Method
+Engine, which is a lightweight, extensible input method engine supporting
+various input schemas including glyph-based input methods, romanization-based
+input methods as well as those for Chinese dialects.  It has the ability to
+compose phrases and sentences intelligently and provide very accurate
+traditional Chinese output.")
+    (license bsd-3)))
+
+(define-public rime-data
+  (package
+    (name "rime-data")
+    (version "0.38.20181029")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rime/plum.git")
+             (commit "fb4f829da2007f2dbb37d60a79bc67c25ea16568")))
+       (file-name "plum-checkout")
+       (sha256
+        (base32 "1m1wiv9j5bay4saga58c7dj4h8gqivsbyp16y245ifvxvp9czj67"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                  ; no tests
+       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+                          "no_update=1")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda _
+             ;; Set .DEFAULT_GOAL to `all'.
+             ;; Don't build binary schemas. The output is not deterministic.
+             (substitute* "Makefile"
+               (("^\\.DEFAULT_GOAL := preset")
+                ".DEFAULT_GOAL := all"))
+             #t))
+         ;; Add schema packages into "package/rime" directory.
+         (add-after 'unpack 'add-packages
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((dest-dir "package/rime"))
+               (mkdir-p dest-dir)
+               (for-each (lambda (pkg)
+                           (symlink (assoc-ref inputs pkg)
+                                    (string-append dest-dir "/" pkg)))
+                         '("array"
+                           "bopomofo"
+                           "cangjie"
+                           "combo-pinyin"
+                           "double-pinyin"
+                           "emoji"
+                           "essay"
+                           "ipa"
+                           "jyutping"
+                           "luna-pinyin"
+                           "middle-chinese"
+                           "pinyin-simp"
+                           "prelude"
+                           "quick"
+                           "scj"
+                           "soutzoe"
+                           "stenotype"
+                           "stroke"
+                           "terra-pinyin"
+                           "wubi"
+                           "wugniu")))
+             #t))
+         (delete 'configure))))
+    (native-inputs
+     `(("array"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-array.git")
+                 (commit "906e923902147584b0b0247028a782abbfbfd8a0")))
+           (file-name "rime-array-checkout")
+           (sha256
+            (base32
+             "1alk6ghn4ji4kvp7lfm57bwm2gjh99i79r0w9naz6wkdim8idvb1"))))
+       ("bopomofo"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-bopomofo.git")
+                 (commit "8dc44ca1b6ef4e45b452e070b9da737f5da165e3")))
+           (file-name "rime-bopomofo-checkout")
+           (sha256
+            (base32
+             "16k6wfhcrw3a77rmbrp21ca0gmsmb3f68s193c1cfwr8i68k46nf"))))
+       ("cangjie"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-cangjie.git")
+                 (commit "ab085e90856b3399b374dc3c8b4cb40d11f307a8")))
+           (file-name "rime-cangjie-checkout")
+           (sha256
+            (base32
+             "11fgj0rbv9nyzfijwm2l8pm8fznhif4h27ndrrcaaylkp7p5zsx2"))))
+       ("combo-pinyin"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-combo-pinyin.git")
+                 (commit "f1bae63f20504f2b8113c5cbdf2700e858aa91eb")))
+           (file-name "rime-combo-pinyin-checkout")
+           (sha256
+            (base32
+             "1l1079akwm1hw4kkn0q6x9fpylnl2ka6z2fn7lmdpfpsr0xgn0n7"))))
+       ("double-pinyin"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-double-pinyin.git")
+                 (commit "2101a5cd40e511ec38835769aa66d2dddf059c2e")))
+           (file-name "rime-double-pinyin-checkout")
+           (sha256
+            (base32
+             "19hh2qm0njbfk2js678hfm2hw9b796s43vs11yy3m1v9m0gk2vi7"))))
+       ("emoji"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-emoji.git")
+                 (commit "6e6611b315f03ee4c33f958f9dbe960b13a0ed19")))
+           (file-name "rime-emoji-checkout")
+           (sha256
+            (base32
+             "1brfs3214w36j3345di9ygp468hbvbqdqpkjxxs1dbp437rayhyy"))))
+       ("essay"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-essay.git")
+                 (commit "5e5c7a0ef41c9b030abdad81a9df07b56b1661e9")))
+           (file-name "rime-essay-checkout")
+           (sha256
+            (base32
+             "0ana9is0zhh79m4gjshvmaxbrg3jiqysydx5bpm151i7i6vw5y1i"))))
+       ("ipa"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-ipa.git")
+                 (commit "02a9e2c181921a2e95e1a81f88188c41132755c3")))
+           (file-name "rime-ipa-checkout")
+           (sha256
+            (base32
+             "1szrxgvqlgmxapj2aflw2cvbv0p6pl0sw0gyxa13dvdhhf7s9rvr"))))
+       ("jyutping"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-jyutping.git")
+                 (commit "1402ec3d6cc0973f952fe3f9ef531294e4ffe9e0")))
+           (file-name "rime-jyutping-checkout")
+           (sha256
+            (base32
+             "17g03dy4gw6vyc9da1wjn3iy9hx64dfnwiwsfc7bkzan22x2m4dv"))))
+       ("luna-pinyin"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-luna-pinyin.git")
+                 (commit "3b05132576f5c347ff8a70857d2dae080936ac3b")))
+           (file-name "rime-luna-pinyin-checkout")
+           (sha256
+            (base32
+             "0kgnpxjn10dm2d9718r12rdjlwqd2s2h84jvkhxhh5v0dkv1anl2"))))
+       ("middle-chinese"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-middle-chinese.git")
+                 (commit "9ba8d70330654b9a730f882d35cfad7dbeddfd75")))
+           (file-name "rime-middle-chinese-checkout")
+           (sha256
+            (base32
+             "0hwg5zby5kphh0bcfay8mfxwr5bwqhamiw3cmmmf7kp9fbns5s23"))))
+       ("pinyin-simp"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-pinyin-simp.git")
+                 (commit "74357ffd62c05fb60edf6eab5b86bc8c8c1907d0")))
+           (file-name "rime-pinyin-simp-checkout")
+           (sha256
+            (base32
+             "1paw3c7pv5bl54abnp9pidfxrkchdacyxy5m9zb311p5sgm7fhxh"))))
+       ("prelude"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-prelude.git")
+                 (commit "33040568c3ddb2ee6340c9b669494317db21b77c")))
+           (file-name "rime-prelude-checkout")
+           (sha256
+            (base32
+             "1gwcasyyg6f0ib6s4qsrrjcqr1lcs7j3xqxl65rznsw44nhnbwwq"))))
+       ("quick"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-quick.git")
+                 (commit "910a97d403ad8e72f322488da146da79c19d623f")))
+           (file-name "rime-quick-checkout")
+           (sha256
+            (base32
+             "0yrq3gbfmm29xlr52rmxc41mqfrb0295q7sdhbc3ax71677mpr0y"))))
+       ("scj"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-scj.git")
+                 (commit "e0eae889f4376d2a434ac3b38523e0da7400db68")))
+           (file-name "rime-scj-checkout")
+           (sha256
+            (base32
+             "1whnv9zs349kvy0zi7dnmpqwil8i6gqwrzvhy3qdrjzy58y6gwxn"))))
+       ("soutzoe"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-soutzoe.git")
+                 (commit "e47841a8ad6341731c41cdb814b7a25c837603c4")))
+           (file-name "rime-soutzoe-checkout")
+           (sha256
+            (base32
+             "1rgpmkxa72jy6gyy44fn8azpk3amk9s9lrdf7za03nv95d0fvm0p"))))
+       ("stenotype"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-stenotype.git")
+                 (commit "d4ff379314fd95283853d1734854979cf3cbd287")))
+           (file-name "rime-stenotype-checkout")
+           (sha256
+            (base32
+             "1kckpi4l4884hvydr3d6vid3v7rsc1app29kmk7v8jf8vn16afhl"))))
+       ("stroke"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-stroke.git")
+                 (commit "cfd29c675c46cf70b7a7f0a3836a913059316a0a")))
+           (file-name "rime-stroke-checkout")
+           (sha256
+            (base32
+             "135is9c1p4lm98fd9l1gxyflkm69cv5an129ka7sk614bq84m08d"))))
+       ("terra-pinyin"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-terra-pinyin.git")
+                 (commit "15b5c73a796571cd6f9ef6c89f96656cb9df86f9")))
+           (file-name "rime-terra-pinyin-checkout")
+           (sha256
+            (base32
+             "1xsd84h1zw417h5hr4dbgyk5009zi7q2p9774w3ccr5sxgc3i3cm"))))
+       ("wubi"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-wubi.git")
+                 (commit "d44403728a0b1cd8b47cb1f81b83f58e5f790b74")))
+           (file-name "rime-wubi-checkout")
+           (sha256
+            (base32
+             "0ld31bdn94lncxd1ka44w4sbl03skh08mc927dhdmwq5bpvrgn36"))))
+       ("wugniu"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-wugniu.git")
+                 (commit "65bcc354ada3839591d7546a64c71dbdd0592b02")))
+           (file-name "rime-wugniu-checkout")
+           (sha256
+            (base32
+             "0g31awp40s778sp5c290x40s8np86n8aw011s17sslxrqhhb0bkx"))))))
+    (home-page "https://rime.im/")
+    (synopsis "Schema data of Rime Input Method Engine")
+    (description "@dfn{rime-data} provides the schema data of Rime Input
+Method Engine.")
+    (license lgpl3+)))
+
+(define-public ibus-rime
+  (package
+    (name "ibus-rime")
+    (version "1.3.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rime/ibus-rime.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1nqi7ymv34a9kx24say3xj98lkrs9nkpv1n2ijb91wdz3cr012ly"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ; no tests
+       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Define RIME_DATA_DIR. It's required but not used by the code.
+             (substitute* "Makefile"
+               (("cmake")
+                (string-append "cmake -DRIME_DATA_DIR="
+                               (assoc-ref inputs "rime-data")
+                               "/share/rime-data")))
+             ;; rime_config.h defines the actual data directory.
+             (substitute* "rime_config.h"
+               (("^#define IBUS_RIME_INSTALL_PREFIX .*$")
+                (string-append "#define IBUS_RIME_INSTALL_PREFIX \""
+                               (assoc-ref outputs "out")
+                               "\"\n"))
+               (("^#define IBUS_RIME_SHARED_DATA_DIR .*$")
+                (string-append "#define IBUS_RIME_SHARED_DATA_DIR \""
+                               (assoc-ref inputs "rime-data")
+                               "/share/rime-data\"\n")))
+             #t))
+         (delete 'configure))))
+    (inputs
+     `(("gdk-pixbuf" ,gdk-pixbuf)
+       ("glib" ,glib)
+       ("ibus" ,ibus)
+       ("libnotify" ,libnotify)
+       ("librime" ,librime)
+       ("rime-data" ,rime-data)))
+    (native-inputs
+     `(("cmake" ,cmake)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://rime.im/")
+    (synopsis "Rime Input Method Engine for IBus")
+    (description "@dfn{ibus-rime} provides the Rime input method engine for
+IBus.  Rime is a lightweight, extensible input method engine supporting
+various input schemas including glyph-based input methods, romanization-based
+input methods as well as those for Chinese dialects.  It has the ability to
+compose phrases and sentences intelligently and provide very accurate
+traditional Chinese output.")
+    (license gpl3+)))
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 518417707f..029d5b5443 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -60,7 +60,7 @@
 (define-public feh
   (package
     (name "feh")
-    (version "2.28.1")
+    (version "3.0")
     (home-page "https://feh.finalrewind.org/")
     (source (origin
               (method url-fetch)
@@ -68,7 +68,7 @@
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0wian0gnx0yfxf8x9b8wr57fjd6rnmi3y3xj83ni6x0xqrjnf1lp"))))
+                "00fwf8yz7k8vzd30ly5ndlj6ax9w85dkjzjnlk95vd0zdrf4wyxn"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases (delete 'configure))
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index e29ec6255b..fe0923f479 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -47,14 +48,14 @@
     ;; The 7 release series has an incompatible API, while the 6 series is still
     ;; maintained. Don't update to 7 until we've made sure that the ImageMagick
     ;; users are ready for the 7-series API.
-    (version "6.9.10-12")
+    (version "6.9.10-14")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://imagemagick/ImageMagick-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0ri96yqihdk921k5qx23y2sbhraxbp2avdccxiy6m3srjkirym2l"))))
+               "0vcfjvdk9in92x808djvy94l5gylpgds4a7mlr8jrxsv9snx88yi"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch")
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 02d30bacf4..955ad436b7 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -423,8 +423,8 @@ It has been modified to remove all non-free binary blobs.")
                     #:patches %linux-libre-4.19-patches
                     #:configuration-file kernel-config))
 
-(define %linux-libre-4.14-version "4.14.79")
-(define %linux-libre-4.14-hash "000rd4h2yk6k68wjg37v53hqnqw1mgwhdxbcvy8iywy8za9r12c8")
+(define %linux-libre-4.14-version "4.14.80")
+(define %linux-libre-4.14-hash "0h4hi5lqizdx5nk0f3immbcv2n7p5jh26m80v4x6bw4wi5b44fra")
 
 (define-public linux-libre-4.14
   (make-linux-libre %linux-libre-4.14-version
@@ -433,14 +433,14 @@ It has been modified to remove all non-free binary blobs.")
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.9
-  (make-linux-libre "4.9.135"
-                    "07v5s6hl08ls2z9xdkbqq1s210mqayfchqbckhp8hlaw089ap71f"
+  (make-linux-libre "4.9.136"
+                    "1kk6px1jcwbgkpfmf9pdklk6kz90h5l8fvdqwmvnk4bz6b2xrrfp"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.4
-  (make-linux-libre "4.4.162"
-                    "1anb2k9i03369lvbwlw24vimxvk8zpcql4ryz0ydvf3pxv8lirm2"
+  (make-linux-libre "4.4.163"
+                    "05j0dm0cxilanp5z40n8kgjz9vn1p4rg63kksicd2v48w8ka82z6"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
@@ -1968,20 +1968,15 @@ for systems using the Linux kernel.  This includes commands such as
     (name "inotify-tools")
     (version "3.20.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/rvoicilas/inotify-tools/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/rvoicilas/inotify-tools.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1b22c8x4pjnz3abx4dikpbj43zprjw79pdkd4xw111dsxlfwqcx4"))))
+                "14dci1i4mhsd5sa33k8h3ayphk19kizynh5ql9ryibdpmcanfiyq"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'bootstrap
-                    (lambda _
-                      (invoke "autoreconf" "-vif"))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -2916,7 +2911,7 @@ MPEG-2 and audio over Linux IEEE 1394.")
 (define-public mdadm
   (package
     (name "mdadm")
-    (version "4.0")
+    (version "4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2924,7 +2919,7 @@ MPEG-2 and audio over Linux IEEE 1394.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "1ad3mma641946wn5lsllwf0lifw9lps34fv1nnkhyfpd9krffshx"))))
+                "0jjgjgqijpdp7ijh8slzzjjw690kydb1jjadf0x5ilq85628hxmb"))))
     (build-system gnu-build-system)
     (inputs
      `(("udev" ,eudev)))
@@ -3949,7 +3944,7 @@ are exceeded.")
 (define-public mtd-utils
   (package
     (name "mtd-utils")
-    (version "1.5.2")
+    (version "2.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3957,18 +3952,18 @@ are exceeded.")
                     "mtd-utils-" version ".tar.bz2"))
               (sha256
                (base32
-                "007lhsd8yb34l899r4m37whhzdw815cz4fnjbpnblfha524p7dax"))))
+                "1f30jszknc5v6ykmil8ajxgksmcg54q3rsp84jsancp9x0dycggv"))))
+    (arguments
+     '(#:configure-flags '("--enable-unit-tests")))
+    (native-inputs
+     `(("cmocka" ,cmocka)
+       ("pkg-config" ,pkg-config)))
     (inputs
-     `(("acl" ,acl)
+     `(("acl" ,acl) ; for XATTR
        ("libuuid" ,util-linux)
        ("lzo" ,lzo)
        ("zlib" ,zlib)))
     (build-system gnu-build-system)
-    (arguments
-     `(#:test-target "tests"
-       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
-       #:phases (modify-phases %standard-phases
-                  (delete 'configure))))
     (synopsis "MTD Flash Storage Utilities")
     (description "This package provides utilities for testing, partitioning, etc
 of flash storage.")
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 54a17be8f4..f57e263449 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -91,17 +91,6 @@ languages is in development.  The compiler infrastructure includes mirror sets
 of programming tools as well as libraries with equivalent functionality.")
     (license license:ncsa)))
 
-(define-public llvm-with-rtti
-  (package (inherit llvm)
-    (name "llvm-with-rtti")
-    (arguments
-     (substitute-keyword-arguments (package-arguments llvm)
-       ((#:configure-flags flags)
-        `(append '("-DCMAKE_SKIP_BUILD_RPATH=FALSE"
-                   "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE"
-                   "-DLLVM_REQUIRES_RTTI=1")
-                 ,flags))))))
-
 (define* (clang-runtime-from-llvm llvm hash
                                   #:optional (patches '()))
   (package
@@ -292,6 +281,18 @@ code analysis tools.")
        (base32
         "1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf"))))))
 
+;; This is for Faust 2
+(define-public llvm-3.8-with-rtti
+  (package (inherit llvm-3.8)
+    (name "llvm-with-rtti")
+    (arguments
+     (substitute-keyword-arguments (package-arguments llvm)
+       ((#:configure-flags flags)
+        `(append '("-DCMAKE_SKIP_BUILD_RPATH=FALSE"
+                   "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE"
+                   "-DLLVM_REQUIRES_RTTI=1")
+                 ,flags))))))
+
 (define-public clang-runtime-3.8
   (clang-runtime-from-llvm
    llvm-3.8
diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm
index c45beb8bbb..1f32ec3bb1 100644
--- a/gnu/packages/lxde.scm
+++ b/gnu/packages/lxde.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ison111 <ison111@protonmail.com>
 ;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -419,10 +420,10 @@ in LXDE.")
        (modify-phases %standard-phases
          (add-after 'unpack 'rm-stamp
            (lambda _
-             (for-each delete-file (find-files "." "\\.stamp$"))))
-         (add-after 'rm-stamp 'autoreconf
-           (lambda _
-             (zero? (system* "autoreconf" "-vfi")))))))
+             (for-each delete-file (find-files "." "\\.stamp$"))
+             ;; Force regeneration of configure script.
+             (delete-file "configure")
+             #t)))))
     (inputs
      `(("gtk+-2" ,gtk+-2)
        ("polkit" ,polkit)))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 35b7d27df3..74b1d489a3 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -110,7 +110,9 @@
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages docbook)
   #:use-module ((guix licenses)
-                #:select (fdl1.1+ gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+
+                #:select (fdl1.1+
+                           agpl3+
+                           gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+
                            non-copyleft (expat . license:expat) bsd-3
                            public-domain bsd-4 isc (openssl . license:openssl)
                            bsd-2 x11-style agpl3 asl2.0 perl-license))
@@ -119,6 +121,7 @@
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system guile)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial))
@@ -2640,3 +2643,50 @@ replacement for the @code{urlview} program.")
      "TNEF is a tar-like program that unpacks MIME attachments of type
 @code{application/ms-tnef}.")
     (license gpl2+)))
+
+(define-public mumi
+  (let ((commit "bfd96ce76b4600ae232e6548b26c9365095fd174")
+        (revision "2"))
+    (package
+      (name "mumi")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.elephly.net/software/mumi.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "05miwfi1bh0v9x2gvn15bwkb3gn4xy53z506ysjzns2y497zkc5h"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'install 'wrap-executable
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin"))
+                      (scm (string-append out "/share/guile/site/2.2"))
+                      (go  (string-append out "/lib/guile/2.2/site-ccache")))
+                 (wrap-program (string-append bin "/mumi")
+                   `("GUILE_LOAD_PATH" ":" prefix
+                     (,scm ,(getenv "GUILE_LOAD_PATH")))
+                   `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+                     (,go ,(getenv "GUILE_LOAD_COMPILED_PATH"))))
+                 #t))))))
+      (inputs
+       `(("guile-debbugs" ,guile-debbugs-next)
+         ("guile-email" ,guile-email)
+         ("guile-fibers" ,guile-fibers)
+         ("guile-json" ,guile-json)
+         ("guile-syntax-highlight" ,guile-syntax-highlight)
+         ("guile" ,guile-2.2)))
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("pkg-config" ,pkg-config)))
+      (home-page "https://git.elephly.net/software/mumi.git")
+      (synopsis "Debbugs web interface")
+      (description "Mumi is a Debbugs web interface.")
+      (license agpl3+))))
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index de33d737e2..c22cacfd36 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -549,14 +549,14 @@ simultaneously and therefore appear under the same nickname on IRC.")
 (define-public python-nbxmpp
   (package
     (name "python-nbxmpp")
-    (version "0.6.7")
+    (version "0.6.8")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "nbxmpp" version))
        (sha256
         (base32
-         "0fas4iawjfdmkz8vr042wpq6b2qispi6fy35g4a62jw50jb1saav"))))
+         "1iip8ijxp86fx4bl1h67p2lp02p2zm1ga2p3q43nv30smj54nawc"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f))                    ; no tests
@@ -574,7 +574,7 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
 (define-public gajim
   (package
     (name "gajim")
-    (version "1.0.3")
+    (version "1.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gajim.org/downloads/"
@@ -582,10 +582,11 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
                                   "/gajim-" version ".tar.bz2"))
               (sha256
                (base32
-                "0ds4rqwfrpj89a489w6yih8gx5zi7qa4ffgld950fk7s0qxvcfnb"))))
+                "1qis8vs7y7g1zn5i5dshwrszidc22qpflycwb4nixvp9lbmkq0va"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
+     `(#:test-target "test_nogui"
+       #:phases
        (modify-phases %standard-phases
          (add-after 'install 'wrap-program
            (lambda* (#:key outputs #:allow-other-keys)
@@ -598,20 +599,6 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
                       `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
                 '("gajim" "gajim-remote" "gajim-history-manager")))
              #t))
-         (add-before 'check 'remove-test-resolver
-           ;; This test requires network access.
-           (lambda _
-             (substitute* "test/runtests.py"
-               (("'integration.test_resolver',") ""))
-             #t))
-         (add-before 'check 'start-xserver
-           ;; Tests require a running X server.
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((xorg-server (assoc-ref inputs "xorg-server"))
-                   (display ":1"))
-               (setenv "DISPLAY" display)
-               (zero? (system (string-append xorg-server "/bin/Xvfb "
-                                             display " &"))))))
          (add-after 'install 'install-icons
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -636,9 +623,11 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
                ;; For GtkFileChooserDialog.
                `("GSETTINGS_SCHEMA_DIR" =
                  (,(string-append (assoc-ref inputs "gtk+")
-                                  "/share/glib-2.0/schemas")))))))))
+                                  "/share/glib-2.0/schemas"))))
+             #t)))))
     (native-inputs
      `(("intltool" ,intltool)
+       ("python-docutils" ,python-docutils)
        ("xorg-server" ,xorg-server)))
     (inputs
      `(("adwaita-icon-theme" ,adwaita-icon-theme)
@@ -648,12 +637,13 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
        ("hicolor-icon-theme" ,hicolor-icon-theme)
        ("libsecret" ,libsecret)
        ("python-axolotl" ,python-axolotl)
+       ("python-cssutils" ,python-cssutils)
        ("python-dbus" ,python-dbus)
-       ("python-docutils" ,python-docutils)
        ("python-gnupg" ,python-gnupg)
+       ("python-keyring" ,python-keyring)
        ("python-nbxmpp" ,python-nbxmpp)
        ("python-pillow" ,python-pillow)
-       ("python-pyasn1" ,python-pyasn1)
+       ("python-precis-i18n" ,python-precis-i18n)
        ("python-pycairo" ,python-pycairo)
        ("python-pygobject" ,python-pygobject)
        ("python-pyopenssl" ,python-pyopenssl)
@@ -828,8 +818,8 @@ protocols.")
     (license license:x11)))
 
 (define-public libtoxcore
-  (let ((revision "1")
-        (commit "755f084e8720b349026c85afbad58954cb7ff1d4"))
+  (let ((revision "2")
+        (commit "bf69b54f64003d160d759068f4816b2d9b2e1e21"))
     (package
       (name "libtoxcore")
       (version (string-append "0.0.0" "-"
@@ -842,26 +832,19 @@ protocols.")
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "0ap1gvlyihnfivv235dbrgsxsiiz70bhlmlr5gn1027w3h5kqz8w"))))
+                  "11lqra4yd7v293cp286ynff5lqz1pprzg8vn3wq6vryj08g88zqb"))))
       (build-system gnu-build-system)
+      (arguments `(#:tests? #f)) ; FIXME: tests hang, some fail.
       (native-inputs
        `(("autoconf" ,autoconf)
          ("automake" ,automake)
          ("libtool" ,libtool)
-         ;; TODO: Add when test suite is capable of passing.
-         ;; ("check" ,check)
+         ("check" ,check)
          ("pkg-config" ,pkg-config)))
       (inputs
        `(("libsodium" ,libsodium)
          ("opus" ,opus)
          ("libvpx" ,libvpx)))
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'autoconf
-             (lambda _
-               (zero? (system* "autoreconf" "-vfi")))))
-         #:tests? #f)) ; FIXME: Testsuite fails, reasons unspecific.
       (synopsis "Library for the Tox encrypted messenger protocol")
       (description
        "C library implementation of the Tox encrypted messenger protocol.")
@@ -877,13 +860,14 @@ protocols.")
     (version "0.2.8")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/TokTok/c-toxcore/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/TokTok/c-toxcore.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0qlkimlvbd24nlj7w9b5rpz1r807magqxmfylc1mlxsqhmfi5zj7"))))
+         "0xgnraysz25fbws5zwjk92mwnl8k1yih701qam8kgm3rxh50kyhm"))))
     (arguments
      `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
                      ; for now.
diff --git a/gnu/packages/mtools.scm b/gnu/packages/mtools.scm
index e4750f579f..5e3c3dd378 100644
--- a/gnu/packages/mtools.scm
+++ b/gnu/packages/mtools.scm
@@ -28,15 +28,15 @@
 (define-public mtools
   (package
     (name "mtools")
-    (version "4.0.19")
+    (version "4.0.20")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/mtools/mtools-"
-                          version ".tar.gz"))
+                          version ".tar.bz2"))
       (sha256
        (base32
-        "003qnj4rs22v2sih3is55scvav8xq9p1dp5b7gnyl67a60ky516r"))))
+        "1vcahr9s6zv1hnrx2bgjnzcas2y951q90r1jvvv4q9v5kwfd6qb0"))))
     (build-system gnu-build-system)
     (home-page "https://www.gnu.org/software/mtools/")
     (synopsis "Access MS-DOS disks without mounting")
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 89ef58e80c..fca26edcbb 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -887,9 +887,10 @@ Sega Master System/Mark III, Sega Genesis/Mega Drive, BBC Micro
             #t))
          (add-after 'install 'install-info
            (lambda _
-             (zero? (system* "make"
-                             "-j" (number->string (parallel-job-count))
-                             "conf=www" "install-info")))))))
+             (invoke "make"
+                     "-j" (number->string (parallel-job-count))
+                     "conf=www" "install-info")
+             #t)))))
     (inputs
      `(("guile" ,guile-1.8)
        ("font-dejavu" ,font-dejavu)
@@ -1255,12 +1256,14 @@ Editor.  It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
     (name "jalv-select")
     (version "0.8")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/brummer10/jalv_select/"
-                                  "archive/V" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/brummer10/jalv_select.git")
+                    (commit (string-append "V" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0zraagwr681b5s3qifxf399c7q93jz23c8sr42gmff9zqnvxc75q"))))
+                "0gqh768sbvn9ffyx1vqg9i57py9x9v4l65bk6wjsvgga4d7m83k1"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -1275,6 +1278,13 @@ Editor.  It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
                 (string-append "ls -1 " (assoc-ref inputs "jalv") "/bin")))
              (substitute* "jalv.select.h"
                (("gtkmm.h") "gtkmm-2.4/gtkmm.h"))
+             #t))
+         (add-before 'reset-gzip-timestamps 'make-manpages-writable
+           (lambda* (#:key outputs #:allow-other-keys)
+             (for-each make-file-writable
+                       (find-files (string-append (assoc-ref outputs "out")
+                                                  "/share/man")
+                                   ".*\\.gz$"))
              #t)))))
     (inputs
      `(("lilv" ,lilv)
@@ -1857,13 +1867,14 @@ using a system-independent interface.")
     (name "portmidi-for-extempore")
     (version "217")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/extemporelang/portmidi/"
-                                  "archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/extemporelang/portmidi.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0gjikwciyr8kk4y3qiv1pcq58xpgw38ql1m2gs6g0qc1s8sx4235"))))
+                "1inriyrjf7xx2b7r54x0vmf9ngyqgr7g5060c22bwkbsgg53apzv"))))
     (build-system cmake-build-system)
     (arguments `(#:tests? #f)) ; no tests
     (native-inputs '())
@@ -2279,13 +2290,14 @@ follows a traditional multi-track tape recorder control paradigm.")
     (version "1.2.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/blablack/ams-lv2/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/blablack/ams-lv2.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1xacxyzqcj83g9c1gwfn36gg1c6yi15v7km4vidfidrjzb4x27fq"))))
+         "1n1dnqnj24xhiy9323lj52nswr5120cj56fpckg802miss05sr6x"))))
     (build-system waf-build-system)
     (arguments
      `(#:phases
@@ -2320,13 +2332,14 @@ and hold, etc.")
     (name "gxtuner")
     (version "2.4")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/brummer10/gxtuner/"
-                                  "archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/brummer10/gxtuner.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1hn5qjac7qd00v0sp7ijhhc3sb26ks9bni06nngivva21h61xrjr"))))
+                "1fxd2akan2njlr7fpkh84830783qhh1gg7yakswqk5dd466dcn96"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -2432,13 +2445,14 @@ tune-in sender list from @url{http://opml.radiotime.com}.")
     (name "pianobar")
     (version "2016.06.02")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/PromyLOPh/"
-                                  name "/archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/PromyLOPh/pianobar.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1hi5rr6jcr0kwf4xfz007ndwkjkp287lhwlsgfz6iryqa5n6jzcp"))))
+                "058fbdxp7n35hxwy3b8slfy4pb4n63cb173vfmywqa06wh1dv6f6"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; no tests
@@ -2719,14 +2733,14 @@ of tools for manipulating and accessing your music.")
     (name "milkytracker")
     (version "1.02.00")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/milkytracker/"
-                                  "MilkyTracker/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/milkytracker/MilkyTracker.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "08v0l4ipvvwkwv4ywkc6c8a6xnpkyb02anj36w8q6gikxrs6xjvb"))
+                "05a6d7l98k9i82dwrgi855dnccm3f2lkb144gi244vhk1156n0ca"))
               (modules '((guix build utils)))
               ;; Remove non-FSDG compliant sample songs.
               (snippet
@@ -2761,14 +2775,14 @@ for improved Amiga ProTracker 2/3 compatibility.")
     (name "schismtracker")
     (version "20180513")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/" name "/" name "/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/schismtracker/schismtracker.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1yjfd02arb51n0vyv11qgpn6imh7hcqnc3953cbvgwb4cnrswk9f"))
+                "0fayix1zbl96zhkfszgj71qr25dnddgy9hr6149nslww4gl7jk36"))
               (modules '((guix build utils)))
               (snippet
                ;; Remove use of __DATE__ and __TIME__ for reproducibility.
@@ -2781,8 +2795,6 @@ for improved Amiga ProTracker 2/3 compatibility.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'autoconf
-           (lambda _ (invoke "autoreconf" "-vfi")))
          (add-before 'configure 'link-libm
            (lambda _ (setenv "LIBS" "-lm") #t)))))
     (native-inputs
@@ -3520,13 +3532,14 @@ are a C compiler and glib.  Full API documentation and examples are included.")
     (version "1.1.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/LMMS/lmms/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/LMMS/lmms.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1g76z7ha3hd53vbqaq9n1qg6s3lw8zzaw51iny6y2bz0j1xqwcsr"))))
+         "03hhymc6d73fa3wbcqb7rm1l03zkw605k5i9kvkvjmv488bqh3pd"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ; no tests
@@ -4143,17 +4156,15 @@ at @code{musicbrainz.org}.")
     (version "0.10")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/trizen/clyrics/archive/"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/trizen/clyrics.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1l0cg26afnjv8cgk0jbiavbyvq55q1djyigzmi526rpcjjwq9jwn"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+         "1qvj4dyipkkdccx5hci4z0q23i54ldk6hh7x5m35a7f70rrj6fbk"))))
     (build-system trivial-build-system)
-    (native-inputs `(("tar" ,tar)
-                     ("gzip" ,gzip)))
     (inputs
      `(("bash" ,bash)                             ;for the wrapped program
        ("perl" ,perl)
@@ -4170,17 +4181,12 @@ at @code{musicbrainz.org}.")
                                 (ice-9 match)
                                 (srfi srfi-26))
                    (let* ((source (assoc-ref %build-inputs "source"))
-                          (tar (assoc-ref %build-inputs "tar"))
-                          (gzip (assoc-ref %build-inputs "gzip"))
                           (output (assoc-ref %outputs "out")))
                      (setenv "PATH"
                              (string-append
-                              (assoc-ref %build-inputs "gzip") "/bin" ":"
                               (assoc-ref %build-inputs "bash") "/bin" ":"
                               (assoc-ref %build-inputs "perl") "/bin" ":"))
-                     (invoke (string-append tar "/bin/tar") "xvf"
-                             source)
-                     (chdir ,(string-append "clyrics-" version))
+                     (copy-recursively source (getcwd))
                      (patch-shebang "clyrics")
                      (substitute* "clyrics"
                        (("/usr/share") output))
diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm
index 8f96b605a6..057e8c3bd9 100644
--- a/gnu/packages/nano.scm
+++ b/gnu/packages/nano.scm
@@ -30,7 +30,7 @@
 (define-public nano
   (package
     (name "nano")
-    (version "3.1")
+    (version "3.2")
     (source
      (origin
       (method url-fetch)
@@ -38,7 +38,7 @@
                           version ".tar.xz"))
       (sha256
        (base32
-        "17kinzyv6vwgyx2d0ym1kp65qbf7kxzwpyg21ic1rijv1aj2rh0l"))))
+        "0jb3zq0v84xb0chyynkcp2jhs9660wmpkic294p4p6c96npp69yi"))))
     (build-system gnu-build-system)
     (inputs
      `(("gettext" ,gettext-minimal)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 717e7021cf..fe784ffaa1 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -102,8 +102,8 @@
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
   (let ((version "0.15.0")
-        (commit "f9a8fce10f2d99efec7cb1dd0f6c5f0df9d1b2df")
-        (revision 6))
+        (commit "f5a2724ae453f4a4b55ff848f4ad7e30efb6eef8")
+        (revision 7))
     (package
       (name "guix")
 
@@ -119,7 +119,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "1733d5id0h44rrkyj9xw4fcqr1wawcfi8igpgk5wsn1iq4qqwv5f"))
+                  "12glmvifbwvl6lmxh1mc8nbcp0f5qgw40rmf8n1icxvj0mnjrwp4"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
diff --git a/gnu/packages/patches/icecat-CVE-2018-12383.patch b/gnu/packages/patches/icecat-CVE-2018-12383.patch
deleted file mode 100644
index 17ca0f3773..0000000000
--- a/gnu/packages/patches/icecat-CVE-2018-12383.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-Based on upstream changeset:
-  https://hg.mozilla.org/releases/mozilla-esr60/rev/300efdbc9fe1
-but with the git binary patch and related test changes omitted,
-and adapted to apply cleanly to GNU IceCat.
-
-# HG changeset patch
-# User David Keeler <dkeeler@mozilla.com>
-# Date 1531860660 25200
-# Node ID 300efdbc9fe1f9165428c7934861033935b5abfa
-# Parent  80a4a7ef281374dbb2afda8edac54665b14b9ef8
-Bug 1475775 - Clean up old NSS DB file after upgrade if necessary. r=franziskus, r=mattn, a=RyanVM
-
-Reviewers: franziskus, mattn
-
-Bug #: 1475775
-
-Differential Revision: https://phabricator.services.mozilla.com/D2202
-
-diff --git a/security/manager/ssl/nsNSSComponent.cpp b/security/manager/ssl/nsNSSComponent.cpp
---- a/security/manager/ssl/nsNSSComponent.cpp
-+++ b/security/manager/ssl/nsNSSComponent.cpp
-@@ -1935,16 +1935,61 @@ AttemptToRenameBothPKCS11ModuleDBVersion
-   NS_NAMED_LITERAL_CSTRING(sqlModuleDBFilename, "pkcs11.txt");
-   nsresult rv = AttemptToRenamePKCS11ModuleDB(profilePath,
-                                               legacyModuleDBFilename);
-   if (NS_FAILED(rv)) {
-     return rv;
-   }
-   return AttemptToRenamePKCS11ModuleDB(profilePath, sqlModuleDBFilename);
- }
-+
-+// When we changed from the old dbm database format to the newer sqlite
-+// implementation, the upgrade process left behind the existing files. Suppose a
-+// user had not set a password for the old key3.db (which is about 99% of
-+// users). After upgrading, both the old database and the new database are
-+// unprotected. If the user then sets a password for the new database, the old
-+// one will not be protected. In this scenario, we should probably just remove
-+// the old database (it would only be relevant if the user downgraded to a
-+// version of IceCat before 58, but we have to trade this off against the
-+// user's old private keys being unexpectedly unprotected after setting a
-+// password).
-+// This was never an issue on Android because we always used the new
-+// implementation.
-+static void
-+MaybeCleanUpOldNSSFiles(const nsACString& profilePath)
-+{
-+  UniquePK11SlotInfo slot(PK11_GetInternalKeySlot());
-+  if (!slot) {
-+    return;
-+  }
-+  // Unfortunately we can't now tell the difference between "there already was a
-+  // password when the upgrade happened" and "there was not a password but then
-+  // the user added one after upgrading".
-+  bool hasPassword = PK11_NeedLogin(slot.get()) &&
-+                     !PK11_NeedUserInit(slot.get());
-+  if (!hasPassword) {
-+    return;
-+  }
-+  nsCOMPtr<nsIFile> dbFile = do_CreateInstance("@mozilla.org/file/local;1");
-+  if (!dbFile) {
-+    return;
-+  }
-+  nsresult rv = dbFile->InitWithNativePath(profilePath);
-+  if (NS_FAILED(rv)) {
-+    return;
-+  }
-+  NS_NAMED_LITERAL_CSTRING(keyDBFilename, "key3.db");
-+  rv = dbFile->AppendNative(keyDBFilename);
-+  if (NS_FAILED(rv)) {
-+    return;
-+  }
-+  // Since this isn't a directory, the `recursive` argument to `Remove` is
-+  // irrelevant.
-+  Unused << dbFile->Remove(false);
-+}
- #endif // ifndef ANDROID
- 
- // Given a profile directory, attempt to initialize NSS. If nocertdb is true,
- // (or if we don't have a profile directory) simply initialize NSS in no DB mode
- // and return. Otherwise, first attempt to initialize in read/write mode, and
- // then read-only mode if that fails. If both attempts fail, we may be failing
- // to initialize an NSS DB collection that has FIPS mode enabled. Attempt to
- // ascertain if this is the case, and if so, rename the offending PKCS#11 module
-@@ -1966,16 +2011,19 @@ InitializeNSSWithFallbacks(const nsACStr
- 
-   // Try read/write mode. If we're in safeMode, we won't load PKCS#11 modules.
- #ifndef ANDROID
-   PRErrorCode savedPRErrorCode1;
- #endif // ifndef ANDROID
-   SECStatus srv = ::mozilla::psm::InitializeNSS(profilePath, false, !safeMode);
-   if (srv == SECSuccess) {
-     MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("initialized NSS in r/w mode"));
-+#ifndef ANDROID
-+    MaybeCleanUpOldNSSFiles(profilePath);
-+#endif // ifndef ANDROID
-     return NS_OK;
-   }
- #ifndef ANDROID
-   savedPRErrorCode1 = PR_GetError();
-   PRErrorCode savedPRErrorCode2;
- #endif // ifndef ANDROID
-   // That failed. Try read-only mode.
-   srv = ::mozilla::psm::InitializeNSS(profilePath, true, !safeMode);
diff --git a/gnu/packages/patches/poppler-CVE-2018-19149.patch b/gnu/packages/patches/poppler-CVE-2018-19149.patch
new file mode 100644
index 0000000000..3641f5f078
--- /dev/null
+++ b/gnu/packages/patches/poppler-CVE-2018-19149.patch
@@ -0,0 +1,80 @@
+Fix CVE-2018-19149:
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-19149
+https://gitlab.freedesktop.org/poppler/poppler/issues/664
+
+Patch copied from upstream source repository:
+
+https://gitlab.freedesktop.org/poppler/poppler/commit/f162ecdea0dda5dbbdb45503c1d55d9afaa41d44
+
+From f162ecdea0dda5dbbdb45503c1d55d9afaa41d44 Mon Sep 17 00:00:00 2001
+From: Marek Kasik <mkasik@redhat.com>
+Date: Fri, 20 Apr 2018 11:38:13 +0200
+Subject: [PATCH] Fix crash on missing embedded file
+
+Check whether an embedded file is actually present in the PDF
+and show warning in that case.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=106137
+https://gitlab.freedesktop.org/poppler/poppler/issues/236
+---
+ glib/poppler-attachment.cc | 26 +++++++++++++++++---------
+ glib/poppler-document.cc   |  3 ++-
+ 2 files changed, 19 insertions(+), 10 deletions(-)
+
+diff --git a/glib/poppler-attachment.cc b/glib/poppler-attachment.cc
+index c6502e9d..11ba5bb5 100644
+--- a/glib/poppler-attachment.cc
++++ b/glib/poppler-attachment.cc
+@@ -111,17 +111,25 @@ _poppler_attachment_new (FileSpec *emb_file)
+     attachment->description = _poppler_goo_string_to_utf8 (emb_file->getDescription ());
+ 
+   embFile = emb_file->getEmbeddedFile();
+-  attachment->size = embFile->size ();
++  if (embFile != NULL && embFile->streamObject()->isStream())
++    {
++      attachment->size = embFile->size ();
+ 
+-  if (embFile->createDate ())
+-    _poppler_convert_pdf_date_to_gtime (embFile->createDate (), (time_t *)&attachment->ctime);
+-  if (embFile->modDate ())
+-    _poppler_convert_pdf_date_to_gtime (embFile->modDate (), (time_t *)&attachment->mtime);
++      if (embFile->createDate ())
++        _poppler_convert_pdf_date_to_gtime (embFile->createDate (), (time_t *)&attachment->ctime);
++      if (embFile->modDate ())
++        _poppler_convert_pdf_date_to_gtime (embFile->modDate (), (time_t *)&attachment->mtime);
+ 
+-  if (embFile->checksum () && embFile->checksum ()->getLength () > 0)
+-    attachment->checksum = g_string_new_len (embFile->checksum ()->getCString (),
+-                                             embFile->checksum ()->getLength ());
+-  priv->obj_stream = embFile->streamObject()->copy();
++      if (embFile->checksum () && embFile->checksum ()->getLength () > 0)
++        attachment->checksum = g_string_new_len (embFile->checksum ()->getCString (),
++                                                 embFile->checksum ()->getLength ());
++      priv->obj_stream = embFile->streamObject()->copy();
++    }
++  else
++    {
++      g_warning ("Missing stream object for embedded file");
++      g_clear_object (&attachment);
++    }
+ 
+   return attachment;
+ }
+diff --git a/glib/poppler-document.cc b/glib/poppler-document.cc
+index 83f6aea6..ea319344 100644
+--- a/glib/poppler-document.cc
++++ b/glib/poppler-document.cc
+@@ -670,7 +670,8 @@ poppler_document_get_attachments (PopplerDocument *document)
+       attachment = _poppler_attachment_new (emb_file);
+       delete emb_file;
+ 
+-      retval = g_list_prepend (retval, attachment);
++      if (attachment != NULL)
++        retval = g_list_prepend (retval, attachment);
+     }
+   return g_list_reverse (retval);
+ }
+-- 
+2.19.1
+
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 062ef02efe..28737c36e4 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -82,6 +82,7 @@
 (define-public poppler
   (package
    (name "poppler")
+   (replacement poppler/fixed)
    (version "0.68.0")
    (source (origin
             (method url-fetch)
@@ -131,6 +132,14 @@
    (license license:gpl2+)
    (home-page "https://poppler.freedesktop.org/")))
 
+(define poppler/fixed
+  (package
+    (inherit poppler)
+    (source (origin
+              (inherit (package-source poppler))
+              (patches (append (origin-patches (package-source poppler))
+                               (search-patches "poppler-CVE-2018-19149.patch")))))))
+
 (define-public poppler-data
   (package
     (name "poppler-data")
@@ -162,14 +171,14 @@ When present, Poppler is able to correctly render CJK and Cyrillic text.")
                    license:gpl2))))
 
 (define-public poppler-qt4
-  (package (inherit poppler)
+  (package/inherit poppler
    (name "poppler-qt4")
    (inputs `(("qt-4" ,qt-4)
              ,@(package-inputs poppler)))
    (synopsis "Qt4 frontend for the Poppler PDF rendering library")))
 
 (define-public poppler-qt5
-  (package (inherit poppler)
+  (package/inherit poppler
    (name "poppler-qt5")
    (inputs `(("qtbase" ,qtbase)
              ,@(package-inputs poppler)))
@@ -227,26 +236,23 @@ Poppler PDF rendering library.")
    (name "libharu")
    (version "2.3.0")
    (source (origin
-             (method url-fetch)
-             (uri (string-append "https://github.com/libharu/libharu/archive/"
-                                 "RELEASE_"
-                                 (string-join (string-split version #\.) "_")
-                                 ".tar.gz"))
-             (file-name (string-append name "-" version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/libharu/libharu.git")
+                   (commit (string-append
+                            "RELEASE_"
+                            (string-join (string-split version #\.) "_")))))
+             (file-name (git-file-name name version))
              (sha256
               (base32
-               "1lm4v539y9cb1lvbq387j57sy7yxda3yv8b1pk8m6zazbp66i7lg"))))
+               "15s9hswnl3qqi7yh29jyrg0hma2n99haxznvcywmsp8kjqlyg75q"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
       (list (string-append "--with-zlib="
                            (assoc-ref %build-inputs "zlib"))
             (string-append "--with-png="
-                           (assoc-ref %build-inputs "libpng")))
-      #:phases
-      (modify-phases %standard-phases
-        (add-after 'unpack 'autogen
-          (lambda _ (invoke "autoreconf" "-vif"))))))
+                           (assoc-ref %build-inputs "libpng")))))
    (inputs
     `(("zlib" ,zlib)
       ("libpng" ,libpng)))
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 466b26c238..a28cb31e5c 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -53,7 +53,7 @@
 (define-public php
   (package
     (name "php")
-    (version "7.2.10")
+    (version "7.2.12")
     (home-page "https://secure.php.net/")
     (source (origin
               (method url-fetch)
@@ -61,7 +61,7 @@
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1w0432i5wjga9z8x3rhc72h2ij1jd2aimg5xmhc0hg4f7951bhh1"))
+                "1qbz2j9kzqxxp0mmx02zavvz20ji7izqdnri25g1mrwyhz60974q"))
               (modules '((guix build utils)))
               (snippet
                '(with-directory-excursion "ext"
@@ -176,6 +176,11 @@
              (substitute* "ext/standard/tests/streams/bug60602.phpt"
                (("'ls'") (string-append "'" (which "ls") "'")))
 
+             ;; The expected output is slightly different from what is given,
+             ;; in a section that's not related to the actual test
+             (substitute* "sapi/cli/tests/upload_2G.phpt"
+               (("Test\\\\n") "Test\n\n"))
+
              ;; Drop tests that are known to fail.
              (for-each delete-file
                        '("ext/posix/tests/posix_getgrgid.phpt"    ; Requires /etc/group.
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 41c2a1f7ee..c2f73e3f5c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14626,3 +14626,22 @@ on regular expressions.")
              (propagated-inputs
               `(("python2-enum34" ,python2-enum34)
                 ,@(package-propagated-inputs reparser))))))
+
+(define-public python-precis-i18n
+  (package
+    (name "python-precis-i18n")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "precis_i18n" version))
+       (sha256
+        (base32
+         "0gjhvwd8aifx94rl1ag08vlmndyx2q3fkyqb0c4i46x3p2bc2yi2"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/byllyfish/precis_i18n")
+    (synopsis "Implementation of the PRECIS framework")
+    (description
+     "This module implements the PRECIS Framework as described in RFC 8264,
+RFC 8265 and RFC 8266.")
+    (license license:expat)))
diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm
index 48dc3cddb9..22ea21dd94 100644
--- a/gnu/packages/rdf.scm
+++ b/gnu/packages/rdf.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -22,6 +22,7 @@
   #:use-module ((guix licenses)
                 #:select (non-copyleft isc gpl2 lgpl2.1 lgpl2.1+))
   #:use-module (guix packages)
+  #:use-module (guix git-download)
   #:use-module (guix download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
@@ -122,13 +123,14 @@ Java Lucene text search engine API to C++.")
     (name "lrdf")
     (version "0.6.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/swh/LRDF/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/swh/LRDF.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1vxii4mlcpyi16dizcmnqfl2j9gffgr986yd8ic67hvs8xy42yfm"))))
+                "00wzkfb8y0aqd519ypz067cq099dpc89w69zw8ln39vl6f9x2pd4"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -140,9 +142,9 @@ Java Lucene text search engine API to C++.")
                (("instances_test remove_test") "instances_test")
                (("\\$\\(TESTS\\) remove_test") "$(TESTS)"))
              #t))
-         (add-after 'remove-out-of-tree-references 'autoreconf
-           (lambda _
-             (zero? (system* "autoreconf" "-vfi")))))))
+         ;; The default bootstrap phase executes autogen.sh, which fails.
+         (replace 'bootstrap
+           (lambda _ (invoke "autoreconf" "-vif") #t)))))
     (inputs
      `(("raptor" ,raptor2)
        ("cyrus-sasl" ,cyrus-sasl)
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index 470643ec4f..b927bbbf9b 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -73,10 +74,6 @@
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         ;; The 6.7 tarball is missing ‘install.sh’. Create it.
-         (add-after 'unpack 'autoreconf
-           (lambda _
-             (invoke "autoreconf" "-i")))
          (add-before 'configure 'set-root-sbin
            (lambda _ ; Don't try to install in "/sbin".
              (setenv "ROOTSBINDIR"
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 40b3d1bae0..2df0ce1364 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -99,7 +99,6 @@ arbitrary data types and reversibly turns them into different representations,
 such as compact binary encodings, XML, or JSON.")
     (license license:bsd-3)))
 
-
 (define-public msgpack
   (package
     (name "msgpack")
@@ -132,13 +131,6 @@ such as compact binary encodings, XML, or JSON.")
     ;; zbuffer.hpp) which #include <zlib.h>.  However, 'guix gc --references'
     ;; does not detect a store reference to zlib since these headers are not
     ;; compiled.
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'autoconf
-           (lambda _
-             (invoke "autoreconf" "-vfi")
-             #t)))))
     (home-page "https://www.msgpack.org")
     (synopsis "Binary serialization library")
     (description "Msgpack is a library for C/C++ that implements binary
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 3e9d797e2c..38eeaa7831 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015 Jeff Mickey <j@codemac.net>
 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Stefan Reichör <stefan@xsteve.at>
-;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017, 2018 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
@@ -414,10 +414,7 @@ use of experts and novices alike.")
                                              "/rx")))
                  (delete-file-recursively "rx")
                  (symlink rxpath "rx"))
-               #t))
-           (add-after 'unpack 'autoreconf
-             (lambda _
-               (invoke "autoreconf"))))))
+               #t)))))
       (inputs
        `(("scheme48" ,scheme48)
          ("scheme48-rx" ,scheme48-rx)))
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index 3020fdd210..0978300c9b 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -116,9 +116,10 @@ are already there.")
      '(#:test-target "test"
        #:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
        #:phases (modify-phases %standard-phases (delete 'configure))))
+    (inputs
+     `(("go" ,go-1.9)))
     (native-inputs
-      `(("go" ,go)
-        ("which" ,which)))
+      `(("which" ,which)))
     (home-page "https://direnv.net/")
     (synopsis "Environment switcher for the shell")
     (description
diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm
index e708d726bb..fb121a0581 100644
--- a/gnu/packages/spice.scm
+++ b/gnu/packages/spice.scm
@@ -250,7 +250,7 @@ Internet and from a wide variety of machine architectures.")
          (add-after 'unpack 'patch-spice-vdagent.desktop
            (lambda* (#:key outputs #:allow-other-keys)
             (substitute* "data/spice-vdagent.desktop"
-              (("Exec=/usr/bin/spice-vdagent\n")
+              (("Exec=/usr/bin/spice-vdagent")
                (string-append "Exec=" (assoc-ref outputs "out")
                               "/bin/spice-vdagent")))
              #t)))))
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index f12c6ed1b0..5c954eae35 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -71,13 +71,7 @@
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     ;; git.libssh.org does not support the fast "smart" HTTP
-                     ;; Git protocol. The "dumb" HTTP Git protocol is extremely
-                     ;; slow, and does not support shallow clones, so we use the
-                     ;; plain Git protocol despite its flaws. This offers an
-                     ;; incredible speedup and reduces the size of the the
-                     ;; source by more than half.
-                     (url "git://git.libssh.org/projects/libssh.git")
+                     (url "https://git.libssh.org/projects/libssh.git")
                      (commit (string-append "libssh-" version))))
               (patches (search-patches "libssh-hostname-parser-bug.patch"))
               (sha256
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 9bfa4c5683..57fb99ef28 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -115,6 +115,36 @@ can be imported from spreadsheets, text files and database sources and it can
 be output in text, PostScript, PDF or HTML.")
     (license license:gpl3+)))
 
+(define-public jags
+  (package
+    (name "jags")
+    (version "4.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/mcmc-jags/JAGS/"
+                                  (version-major version) ".x/Source/"
+                                  "JAGS-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1z3icccg2ic56vmhyrpinlsvpq7kcaflk1731rgpvz9bk1bxvica"))))
+    (build-system gnu-build-system)
+    (home-page "http://mcmc-jags.sourceforge.net/")
+    (native-inputs
+     `(("gfortran" ,gfortran)
+       ("lapack" ,lapack)))
+    (synopsis "Gibbs sampler")
+    (description "JAGS is Just Another Gibbs Sampler.  It is a program for
+analysis of Bayesian hierarchical models using Markov Chain Monte Carlo (MCMC)
+simulation not wholly unlike BUGS.  JAGS was written with three aims in mind:
+
+@enumerate
+@item To have a cross-platform engine for the BUGS language;
+@item To be extensible, allowing users to write their own functions,
+  distributions and samplers;
+@item To be a platform for experimentation with ideas in Bayesian modelling.
+@end enumerate\n")
+    (license license:gpl2)))
+
 ;; Update this package together with the set of recommended packages: r-boot,
 ;; r-class, r-cluster, r-codetools, r-foreign, r-kernsmooth, r-lattice,
 ;; r-mass, r-matrix, r-mgcv, r-nlme, r-nnet, r-rpart, r-spatial, r-survival.
@@ -1620,13 +1650,13 @@ and printing capabilities than traditional data frames.")
 (define-public r-dplyr
   (package
     (name "r-dplyr")
-    (version "0.7.7")
+    (version "0.7.8")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "dplyr" version))
               (sha256
                (base32
-                "196lwck3i3m25jnn1f1nrda9svnjqqi89s0is79gbrphamddnlq5"))))
+                "06p59nhli8c1sarghzxq0y4pk6lyyz3xwkarp55b252dfg2rly9p"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
@@ -2528,13 +2558,13 @@ well as additional utilities such as panel and axis annotation functions.")
 (define-public r-rcpparmadillo
   (package
     (name "r-rcpparmadillo")
-    (version "0.9.100.5.0")
+    (version "0.9.200.4.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "RcppArmadillo" version))
               (sha256
                (base32
-                "1iyjqhfjip1nxrkllzh7r1m01jjnx7cahqkf3s557w34p987f2l1"))))
+                "1ayvpyi4hgaqrhx1kqi640iillc2byj4kam7vydlgqmdrzpgrfvz"))))
     (properties `((upstream-name . "RcppArmadillo")))
     (build-system r-build-system)
     (native-inputs
@@ -3268,14 +3298,14 @@ the way current RNG settings can be changed.")
 (define-public r-rtsne
   (package
     (name "r-rtsne")
-    (version "0.13")
+    (version "0.15")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rtsne" version))
        (sha256
         (base32
-         "17crbdi80q4g2pwp9v7j3bdaznk96qlrqx01zvj3wwqippizyfqw"))))
+         "0v17vxizrs1msay24xl2bckfajr2c82wpqj07lyssbrq197nwdsn"))))
     (properties `((upstream-name . "Rtsne")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5123,14 +5153,14 @@ algorithms.")
 (define-public r-lme4
   (package
     (name "r-lme4")
-    (version "1.1-18-1")
+    (version "1.1-19")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "lme4" version))
        (sha256
         (base32
-         "01ar4fak8zj7c1vmh9m576wchxj5qzpfqn637s7fh3fl6cpz0alq"))))
+         "0j8xhkkcdv45ilab960s9jrcjk6jbzvd7w7myswv5fmalrpq52pf"))))
     (build-system r-build-system)
     (native-inputs
      `(("r-rcpp" ,r-rcpp)
@@ -5325,14 +5355,14 @@ first and second order derivatives.")
 (define-public r-sn
   (package
     (name "r-sn")
-    (version "1.5-2")
+    (version "1.5-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sn" version))
        (sha256
         (base32
-         "16gwr68zzj5v83bqfmzxnzwig3dnjrkxdhs6clri1caqkvrq6aig"))))
+         "10via4lg0vx9pzq350vwhz5wv1dhzxr2l3r6jq99nk37vmyvj8fc"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-mnormt" ,r-mnormt)
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 5d681b816e..c29c88a588 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -900,7 +900,16 @@ the current goroutine's ID.")
                   "0bg26pfg25vr16jmczig2m493mja2nxjxyswz3hha7avxw20rpi5"))))
       (build-system go-build-system)
       (arguments
-       '(#:import-path "github.com/AudriusButkevicius/cli"))
+       '(#:import-path "github.com/AudriusButkevicius/cli"
+         ;; Tests don't pass "vet" on go-1.11.  See
+         ;; https://github.com/AudriusButkevicius/cli/pull/1.
+         #:phases
+         (modify-phases %standard-phases
+           (replace 'check
+             (lambda* (#:key import-path #:allow-other-keys)
+               (invoke "go" "test"
+                       "-vet=off"
+                       import-path))))))
       (synopsis "Library for building command-line interfaces in Go")
       (description "This package provides a library for building command-line
 interfaces in Go.")
@@ -1097,7 +1106,14 @@ message streaming.")
                       (string-append (assoc-ref outputs "out")
                                      "/src/github.com/prometheus/common/expfmt/testdata/")
                       ".*\\.gz$"))
-               #t)))))
+               #t))
+           (replace 'check
+             ;; Tests don't pass "vet" on go-1.11.  See
+             ;; https://github.com/syncthing/syncthing/issues/5311.
+             (lambda* (#:key import-path #:allow-other-keys)
+               (invoke "go" "test"
+                       "-vet=off"
+                       import-path))))))
       (propagated-inputs
        `(("go-github-com-golang-protobuf-proto"
           ,go-github-com-golang-protobuf-proto)
@@ -1251,7 +1267,16 @@ Prometheus HTTP API.")
                 "1y8bvzbxpw0lfnn7pbcdwzqj4l90qj6xf88dvv9pxd9yl5g6cskx"))))
     (build-system go-build-system)
     (arguments
-     '(#:import-path "gopkg.in/asn1-ber.v1"))
+     '(#:import-path "gopkg.in/asn1-ber.v1"
+       ;; Tests don't pass "vet" on go-1.11.  See
+       ;; https://github.com/go-asn1-ber/asn1-ber/issues/20.
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key import-path #:allow-other-keys)
+             (invoke "go" "test"
+                     "-vet=off"
+                     import-path))))))
     (synopsis "ASN.1 BER encoding and decoding in Go")
     (description "This package provides ASN.1 BER encoding and decoding in the
 Go language.")
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 05916cde5c..63709935c3 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;; Copyright © 2016 Francesco Frassinelli <fraph24@gmail.com>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
-;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Jovany Leandro G.C <bit4bit@riseup.net>
 ;;;
@@ -295,26 +295,19 @@ protocol (RFC 3550).")
       (version (string-append "0.0.0-1." (string-take commit 7)))
       (source
        (origin
-         (method url-fetch)
-         (uri
-          (string-append
-           "https://gitlab.savoirfairelinux.com/sflphone/libiax2/"
-           "repository/archive.tar.gz?ref="
-           commit))
-         (file-name (string-append name "-" version ".tar.gz"))
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.savoirfairelinux.com/sflphone/libiax2.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
          (sha256
           (base32
-           "0cj5293bixp3k5x3hjwyd0iq7z8w5p7yavxvvkqk5817hjq386y2"))))
+           "0d269474kk1933c55hx4azw3sak5ycfrxkw6ida0sb2cm00kfich"))))
       (build-system gnu-build-system)
       (native-inputs
        `(("autoconf" ,autoconf)
          ("automake" ,automake)
          ("libtool" ,libtool)))
-      (arguments
-       `(#:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'autoconf
-                      (lambda _
-                        (invoke "autoreconf" "-vfi"))))))
       (home-page "https://gitlab.savoirfairelinux.com/sflphone/libiax2")
       (synopsis "Inter-Asterisk-Protocol library")
       (description "LibIAX2 implements the Inter-Asterisk-Protocol for relaying
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 084017dbde..e9a4ab3d68 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
-;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2015 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org>
@@ -15,6 +15,7 @@
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -197,11 +198,6 @@ encoding, supporting Unicode version 9.0.0.")
        (sha256
         (base32 "0jiybkb2z58wa2msvllnphr4js2hvjvh988pavb3mzkgr6ihwbkr"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'autoreconf
-           (lambda _ (zero? (system* "autoreconf" "-vif")))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -572,22 +568,16 @@ categories.")
     (name "dotconf")
     (version "1.3")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/williamh/dotconf/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/williamh/dotconf.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0lsnh0yaw44psmx59hq94cj1932gscp5h8d3cnh05l0svr0cy7kz"))))
+                "1sc95hw5k2xagpafny0v35filmcn05k1ds5ghkldfpf6xw4hakp7"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:tests? #f ; FIXME maketest.sh does not work.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'autoreconf
-           (lambda _
-             (zero? (system* "autoreconf" "-vif")))))))
+    (arguments `(#:tests? #f))  ; FIXME maketest.sh does not work.
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -756,3 +746,26 @@ indentation.
 @end itemize\n")
     (home-page "http://docx2txt.sourceforge.net")
     (license license:gpl3+)))
+
+(define-public opencc
+  (package
+    (name "opencc")
+    (version "1.0.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/BYVoid/OpenCC"
+                           "/archive/ver." version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "01870gbkf711msirf3206k0ajaabypjhnx3fny5wikw0ladn9q8w"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("python" ,python-wrapper)))
+    (home-page "https://github.com/BYVoid/OpenCC")
+    (synopsis "Convert between Traditional Chinese and Simplified Chinese")
+    (description "Open Chinese Convert (OpenCC) converts between Traditional
+Chinese and Simplified Chinese, supporting character-level conversion,
+phrase-level conversion, variant conversion, and regional idioms among
+Mainland China, Taiwan, and Hong-Kong.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index d9fc601066..48dceaec33 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -522,13 +522,13 @@ netcat implementation that supports TLS.")
   (package
     (name "python-acme")
     ;; Remember to update the hash of certbot when updating python-acme.
-    (version "0.27.1")
+    (version "0.28.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "acme" version))
               (sha256
                (base32
-                "142gynlfx7yv0sdba3gpdxlnhg9chhz7hpdxdrp630z17h1bk9ri"))))
+                "11dvcbdifn5d02p4k5li8r6r39bl3p5ap9p3zjwvasm24hf2yz5z"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -579,7 +579,7 @@ netcat implementation that supports TLS.")
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "0anh3vjy9sif1bkp25nj76ii37xx8hh0igcx60ppag12xlabsw1m"))))
+                "02h959qkq7z0s13ivgf7jyl3gnc55wcck6n546k0kh155bpf5qri"))))
     (build-system python-build-system)
     (arguments
      `(,@(substitute-keyword-arguments (package-arguments python-acme)
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 61b0c82e30..e28a6d4f48 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -140,14 +141,6 @@ rejects UDP traffic from the application you're using.")
        #:configure-flags (list (string-append "--sysconfdir="
                                               (assoc-ref %outputs "out")
                                               "/etc/privoxy"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'autoconf
-           (lambda _
-             ;; Unfortunately, this is not a tarball produced by
-             ;; "make dist".
-             (invoke "autoreconf" "-vfi")
-             #t)))
        #:tests? #f))
     (inputs
      `(("w3m" ,w3m)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index a482ef2515..94c5cf3a67 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1269,7 +1269,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2018.11.03")
+    (version "2018.11.07")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://yt-dl.org/downloads/"
@@ -1277,7 +1277,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "11phhwhr1g050h4625d5jsgcsjnnv7jc6xcrbn7zdzd32f6gy2lj"))))
+                "1rvc2m2kbm2kycqsa7fkcg5gql9f0w3hn1a7jg48zzl06ayggxk9"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index c6906b12cf..c974ebc439 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -718,7 +718,7 @@ refactor Vim in order to:
 (define-public vifm
   (package
     (name "vifm")
-    (version "0.9.1")
+    (version "0.10")
     (source
       (origin
         (method url-fetch)
@@ -729,7 +729,7 @@ refactor Vim in order to:
                               "vifm-" version ".tar.bz2")))
         (sha256
          (base32
-          "1cz7vjjmghgdxd1lvsdwv85gvx4kz8idq14qijpwkpfrf2va9f98"))))
+          "1f380xcyjnm4xmcdazs6dj064bwddhywvn3mgm36k7r7b2gnjnp0"))))
     (build-system gnu-build-system)
     (arguments
     '(#:configure-flags '("--disable-build-timestamp")
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 3732f26eba..d56b82ce48 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -6761,14 +6761,14 @@ compressed JSON header blocks.
                     (srfi srfi-26)
                     (ice-9 popen)
                     (ice-9 rdelim))
-
          #:phases
          (modify-phases %standard-phases
-           (add-before 'configure 'autoconf
+           (add-before 'configure 'set-variables
              (lambda _
+               ;; This prevents a few warnings
                (setenv "GUILE_AUTO_COMPILE" "0")
                (setenv "XDG_CACHE_HOME" (getcwd))
-               (invoke "autoreconf" "-vif")))
+               #t))
            (add-after 'install 'wrap-program
              (lambda* (#:key inputs outputs #:allow-other-keys)
                (let* ((out      (assoc-ref outputs "out"))
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index d1890c8b32..82f03c7f94 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,6 +32,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages docbook)
   #:use-module (gnu packages enchant)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gcc)
@@ -66,11 +68,13 @@
                (base32
                 "147r7an41920zl4x9srdva7fxvw2znjin5ldjkhay1cndv9gih0m"))))
     (build-system cmake-build-system)
+    (outputs '("out" "doc"))
     (arguments
      '(#:tests? #f ; no tests
        #:build-type "Release" ; turn off debugging symbols to save space
        #:configure-flags (list
                           "-DPORT=GTK"
+                          "-DENABLE_GTKDOC=ON" ; No doc by default
                           (string-append ; uses lib64 by default
                            "-DLIB_INSTALL_DIR="
                            (assoc-ref %outputs "out") "/lib")
@@ -87,7 +91,26 @@
                           ;; XXX Disable WOFF2 ‘web fonts’.  These were never
                           ;; supported in our previous builds.  Enabling them
                           ;; requires building libwoff2 and possibly woff2dec.
-                          "-DUSE_WOFF2=OFF")))
+                          "-DUSE_WOFF2=OFF")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-gtk-doc-scan
+           (lambda* (#:key inputs #:allow-other-keys)
+             (for-each (lambda (file)
+                         (substitute* file
+                           (("http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd")
+                            (string-append (assoc-ref inputs "docbook-xml")
+                                           "/xml/dtd/docbook/docbookx.dtd"))))
+                       (find-files "Source" "\\.sgml$"))
+             #t))
+         (add-after 'install 'move-doc-files
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (doc (assoc-ref outputs "doc")))
+               (mkdir-p (string-append doc "/share"))
+               (rename-file (string-append out "/share/gtk-doc")
+                            (string-append doc "/share/gtk-doc"))
+               #t))))))
     (native-inputs
      `(("bison" ,bison)
        ("gettext" ,gettext-minimal)
@@ -97,6 +120,8 @@
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("python" ,python-2) ; incompatible with Python 3 (print syntax)
+       ("gtk-doc" ,gtk-doc) ; For documentation generation
+       ("docbook-xml" ,docbook-xml) ; For documentation generation
        ("ruby" ,ruby)))
     (propagated-inputs
      `(("gtk+" ,gtk+)
@@ -155,12 +180,13 @@ HTML/CSS applications to full-fledged web browsers.")
      `(("gcc" ,gcc-7)  ; webkitgtk-2.22 requires gcc-6 or newer
        ,@(package-native-inputs webkitgtk)))
     (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-before 'configure 'work-around-gcc-7-include-path-issue
-                    ;; FIXME: Work around a problem with gcc-7 includes (see
-                    ;; <https://bugs.gnu.org/30756>).
-                    (lambda _
-                      (unsetenv "C_INCLUDE_PATH")
-                      (unsetenv "CPLUS_INCLUDE_PATH")
-                      #t)))
-       ,@(package-arguments webkitgtk)))))
+     (substitute-keyword-arguments (package-arguments webkitgtk)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-before 'configure 'work-around-gcc-7-include-path-issue
+             ;; FIXME: Work around a problem with gcc-7 includes (see
+             ;; <https://bugs.gnu.org/30756>).
+             (lambda _
+               (unsetenv "C_INCLUDE_PATH")
+               (unsetenv "CPLUS_INCLUDE_PATH")
+               #t))))))))
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index 60b2a81de8..85c71b5abb 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -225,7 +225,7 @@ integrate Windows applications into your desktop.")
 (define-public wine-staging-patchset-data
   (package
    (name "wine-staging-patchset-data")
-   (version "3.19")
+   (version "3.20")
    (source
     (origin
       (method git-fetch)
@@ -235,7 +235,7 @@ integrate Windows applications into your desktop.")
       (file-name (git-file-name name version))
       (sha256
        (base32
-        "0nmlhc6jamz0zb4b1w165l8j1a1b0j5ad1sv06aasc9jy8s12b22"))))
+        "049cwllf4aybrhj4l2i3vd5jvagjz4d448404zkyy0lfxr08id3p"))))
    (build-system trivial-build-system)
    (native-inputs
     `(("bash" ,bash)
@@ -281,7 +281,7 @@ integrate Windows applications into your desktop.")
               (file-name (string-append name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0slwgbxclx2dx0glj8az3mv0bqxmx119v9s0jvg1b5zhmqkcc8gg"))))
+                "063garmflbna3mhph8k0dv0bkzq8x75x5xrd0j8y0mjh10i13mik"))))
     (inputs `(("autoconf" ,autoconf) ; for autoreconf
               ("gtk+" ,gtk+)
               ("libva" ,libva)
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 79e3b47684..f2338783d2 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2015 xd1le <elisp.vim@gmail.com>
 ;;; Copyright © 2015 Florian Paul Schmidt <mista.tapas@gmx.net>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
-;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
@@ -1338,15 +1338,11 @@ invert colors on a specific display/screen.")
     (build-system gnu-build-system)
     (arguments '(#:configure-flags `("--enable-sound"
                                      "--enable-wave"
-                                     "--enable-alsa")
-                 #:phases (modify-phases %standard-phases
-                           (add-before 'configure 'autoreconf
-                             (lambda _
-                               (invoke "autoreconf" "-vfi"))))))
-   (native-inputs `(("autoconf" ,autoconf)
-                    ("automake" ,automake)
-                    ("pkg-config" ,pkg-config)
-                    ("perl" ,perl)))
+                                     "--enable-alsa")))
+    (native-inputs `(("autoconf" ,autoconf)
+                     ("automake" ,automake)
+                     ("pkg-config" ,pkg-config)
+                     ("perl" ,perl)))
     (inputs `(("libx11" ,libx11)
               ("alsa-lib" ,alsa-lib)))
     (synopsis "Daemon that performs an action every time the X11 bell is rung")
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index d3e68c4c07..5adb04a86a 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -3174,14 +3174,14 @@ This driver is intended for the spice qxl virtio device.")
 (define-public xf86-video-r128
   (package
     (name "xf86-video-r128")
-    (version "6.11.0")
+    (version "6.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://xorg/individual/driver/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0snvwmrh8dqyyaq7ggicym6yrsg4brygkx9156r0m095m7fp3rav"))))
+                "0mz0v5mqmmbncr2drd5zvia1fb7frz2xqwflhhqbnaxx5j48c740"))))
     (build-system gnu-build-system)
     (inputs `(("mesa" ,mesa)
               ("xorgproto" ,xorgproto)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 3409bd352c..228d3c5926 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1252,18 +1252,57 @@ the tty to run, among other things."
                                 (string-concatenate
                                  (map cache->config caches)))))))
 
+(define (nscd-action-procedure nscd config option)
+  ;; XXX: This is duplicated from mcron; factorize.
+  #~(lambda (_ . args)
+      ;; Run 'nscd' in a pipe so we can explicitly redirect its output to
+      ;; 'current-output-port', which at this stage is bound to the client
+      ;; connection.
+      (let ((pipe (apply open-pipe* OPEN_READ #$nscd
+                         "-f" #$config #$option args)))
+        (let loop ()
+          (match (read-line pipe 'concat)
+            ((? eof-object?)
+             (catch 'system-error
+               (lambda ()
+                 (zero? (close-pipe pipe)))
+               (lambda args
+                 ;; There's a race with the SIGCHLD handler, which could
+                 ;; call 'waitpid' before 'close-pipe' above does.  If we
+                 ;; get ECHILD, that means we lost the race, but that's
+                 ;; fine.
+                 (or (= ECHILD (system-error-errno args))
+                     (apply throw args)))))
+            (line
+             (display line)
+             (loop)))))))
+
+(define (nscd-actions nscd config)
+  "Return Shepherd actions for NSCD."
+  ;; Make this functionality available as actions because that's a simple way
+  ;; to run the right 'nscd' binary with the right config file.
+  (list (shepherd-action
+         (name 'statistics)
+         (documentation "Display statistics about nscd usage.")
+         (procedure (nscd-action-procedure nscd config "--statistics")))
+        (shepherd-action
+         (name 'invalidate)
+         (documentation
+          "Invalidate the given cache--e.g., 'hosts' for host name lookups.")
+         (procedure (nscd-action-procedure nscd config "--invalidate")))))
+
 (define (nscd-shepherd-service config)
   "Return a shepherd service for CONFIG, an <nscd-configuration> object."
-  (let ((nscd.conf     (nscd.conf-file config))
+  (let ((nscd          (file-append (nscd-configuration-glibc config)
+                                    "/sbin/nscd"))
+        (nscd.conf     (nscd.conf-file config))
         (name-services (nscd-configuration-name-services config)))
     (list (shepherd-service
            (documentation "Run libc's name service cache daemon (nscd).")
            (provision '(nscd))
            (requirement '(user-processes))
            (start #~(make-forkexec-constructor
-                     (list #$(file-append (nscd-configuration-glibc config)
-                                          "/sbin/nscd")
-                           "-f" #$nscd.conf "--foreground")
+                     (list #$nscd "-f" #$nscd.conf "--foreground")
 
                      ;; Wait for the PID file.  However, the PID file is
                      ;; written before nscd is actually listening on its
@@ -1277,7 +1316,12 @@ the tty to run, among other things."
                                                   (string-append dir "/lib"))
                                                 (list #$@name-services))
                                            ":")))))
-           (stop #~(make-kill-destructor))))))
+           (stop #~(make-kill-destructor))
+           (modules `((ice-9 popen)               ;for the actions
+                      (ice-9 rdelim)
+                      (ice-9 match)
+                      ,@%default-modules))
+           (actions (nscd-actions nscd nscd.conf))))))
 
 (define nscd-activation
   ;; Actions to take before starting nscd.
diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm
index 573efa0433..fcaedd038b 100644
--- a/gnu/services/mail.scm
+++ b/gnu/services/mail.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
-;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
@@ -290,11 +290,21 @@ the section name.")
    "Listeners for the service.  A listener is either an
 @code{unix-listener-configuration}, a @code{fifo-listener-configuration}, or
 an @code{inet-listener-configuration}.")
+  (client-limit
+   (non-negative-integer 0)
+   "Maximum number of simultaneous client connections per process.  Once this
+number of connections is received, the next incoming connection will prompt
+Dovecot to spawn another process.  If set to 0, @code{default-client-limit} is
+used instead.")
   (service-count
    (non-negative-integer 1)
    "Number of connections to handle before starting a new process.
 Typically the only useful values are 0 (unlimited) or 1.  1 is more
 secure, but 0 is faster.  <doc/wiki/LoginProcess.txt>.")
+  (process-limit
+   (non-negative-integer 0)
+   "Maximum number of processes that can exist for this service.  If set to 0,
+@code{default-process-limit} is used instead.")
   (process-min-avail
    (non-negative-integer 0)
    "Number of processes to always keep waiting for more connections.")
@@ -475,6 +485,8 @@ complex, customize the address and port fields of the
     (list
      (service-configuration
       (kind "imap-login")
+      (client-limit 0)
+      (process-limit 0)
       (listeners
        (list
         (inet-listener-configuration (protocol "imap") (port 143) (ssl? #f))
@@ -487,24 +499,33 @@ complex, customize the address and port fields of the
         (inet-listener-configuration (protocol "pop3s") (port 995) (ssl? #t)))))
      (service-configuration
       (kind "lmtp")
+      (client-limit 1)
+      (process-limit 0)
       (listeners
        (list (unix-listener-configuration (path "lmtp") (mode "0666")))))
-     (service-configuration (kind "imap"))
-     (service-configuration (kind "pop3"))
-     (service-configuration (kind "auth")
-      ;; In what could be taken to be a bug, the default value of 1 for
-      ;; service-count makes it so that a PAM auth worker can't fork off
-      ;; subprocesses for making blocking queries.  The result is that nobody
-      ;; can log in -- very secure, but not very useful!  If we simply omit
-      ;; the service-count, it will default to the value of
-      ;; auth-worker-max-count, which is 30, instead of defaulting to 1, which
-      ;; is the default for all other services.  As a hack, bump this value to
-      ;; 30.
-      (service-count 30)
+     (service-configuration
+      (kind "imap")
+      (client-limit 1)
+      (process-limit 1024))
+     (service-configuration
+      (kind "pop3")
+      (client-limit 1)
+      (process-limit 1024))
+     (service-configuration
+      (kind "auth")
+      (service-count 0)
+      (client-limit 0)
+      (process-limit 1)
       (listeners
        (list (unix-listener-configuration (path "auth-userdb")))))
-     (service-configuration (kind "auth-worker"))
-     (service-configuration (kind "dict")
+     (service-configuration
+      (kind "auth-worker")
+      (client-limit 1)
+      (process-limit 0))
+     (service-configuration
+      (kind "dict")
+      (client-limit 1)
+      (process-limit 0)
       (listeners (list (unix-listener-configuration (path "dict")))))))
    "List of services to enable.  Available services include @samp{imap},
 @samp{imap-login}, @samp{pop3}, @samp{pop3-login}, @samp{auth}, and
diff --git a/gnu/services/mcron.scm b/gnu/services/mcron.scm
index 5757bf8cf6..120b663e3e 100644
--- a/gnu/services/mcron.scm
+++ b/gnu/services/mcron.scm
@@ -86,7 +86,7 @@ files."
                  (lambda ()
                    (zero? (close-pipe pipe)))
                  (lambda args
-                   ;; There's with race between the SIGCHLD handler, which
+                   ;; There's a race with the SIGCHLD handler, which
                    ;; could call 'waitpid' before 'close-pipe' above does.  If
                    ;; we get ECHILD, that means we lost the race, but that's
                    ;; fine.
diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm
index 896d4a8f88..02882f4b46 100644
--- a/gnu/tests/base.scm
+++ b/gnu/tests/base.scm
@@ -335,6 +335,20 @@ info --version")
               (x
                (pk 'failure x #f))))
 
+          (test-equal "nscd invalidate action"
+            '(#t)                                 ;one value, #t
+            (marionette-eval '(with-shepherd-action 'nscd ('invalidate "hosts")
+                                                    result
+                                                    result)
+                             marionette))
+
+          (test-equal "nscd invalidate action, wrong table"
+            '(#f)                                 ;one value, #f
+            (marionette-eval '(with-shepherd-action 'nscd ('invalidate "xyz")
+                                                    result
+                                                    result)
+                             marionette))
+
           (test-equal "host not found"
             #f
             (marionette-eval
diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm
index 6be0167063..022d4fe16b 100644
--- a/guix/build/go-build-system.scm
+++ b/guix/build/go-build-system.scm
@@ -204,6 +204,9 @@ respectively."
 $GOPATH/pkg, so we have to copy them into the output directory manually.
 Compiled executable files should have already been installed to the store based
 on $GOBIN in the build phase."
+  ;; TODO: From go-1.10 onward, the pkg folder should not be needed (see
+  ;; https://lists.gnu.org/archive/html/guix-devel/2018-11/msg00208.html).
+  ;; Remove it?
   (when (file-exists? "pkg")
     (copy-recursively "pkg" (string-append (assoc-ref outputs "out") "/pkg")))
   #t)
diff --git a/guix/ci.scm b/guix/ci.scm
index 881f3d3927..1727297dd7 100644
--- a/guix/ci.scm
+++ b/guix/ci.scm
@@ -19,6 +19,7 @@
 (define-module (guix ci)
   #:use-module (guix http-client)
   #:autoload   (json parser) (json->scm)
+  #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
   #:export (build?
             build-id
@@ -27,9 +28,21 @@
             build-status
             build-timestamp
 
+            checkout?
+            checkout-commit
+            checkout-input
+
+            evaluation?
+            evaluation-id
+            evaluation-spec
+            evaluation-complete?
+            evaluation-checkouts
+
             %query-limit
             queued-builds
-            latest-builds))
+            latest-builds
+            latest-evaluations
+            evaluation-for-commit))
 
 ;;; Commentary:
 ;;;
@@ -47,6 +60,20 @@
   (status      build-status)                      ;integer
   (timestamp   build-timestamp))                  ;integer
 
+(define-record-type <checkout>
+  (make-checkout commit input)
+  checkout?
+  (commit      checkout-commit)                   ;string (SHA1)
+  (input       checkout-input))                   ;string (name)
+
+(define-record-type <evaluation>
+  (make-evaluation id spec complete? checkouts)
+  evaluation?
+  (id          evaluation-id)                     ;integer
+  (spec        evaluation-spec)                   ;string
+  (complete?   evaluation-complete?)              ;Boolean
+  (checkouts   evaluation-checkouts))             ;<checkout>*
+
 (define %query-limit
   ;; Max number of builds requested in queries.
   1000)
@@ -70,9 +97,50 @@
                                           (number->string limit)))))
     (map json->build queue)))
 
-(define* (latest-builds url #:optional (limit %query-limit))
+(define* (latest-builds url #:optional (limit %query-limit)
+                        #:key evaluation system)
+  "Return the latest builds performed by the CI server at URL.  If EVALUATION
+is an integer, restrict to builds of EVALUATION.  If SYSTEM is true (a system
+string such as \"x86_64-linux\"), restrict to builds for SYSTEM."
+  (define* (option name value #:optional (->string identity))
+    (if value
+        (string-append "&" name "=" (->string value))
+        ""))
+
   (let ((latest (json-fetch (string-append url "/api/latestbuilds?nr="
-                                           (number->string limit)))))
+                                           (number->string limit)
+                                           (option "evaluation" evaluation
+                                                   number->string)
+                                           (option "system" system)))))
     ;; Note: Hydra does not provide a "derivation" field for entries in
     ;; 'latestbuilds', but Cuirass does.
     (map json->build latest)))
+
+(define (json->checkout json)
+  (make-checkout (hash-ref json "commit")
+                 (hash-ref json "input")))
+
+(define (json->evaluation json)
+  (make-evaluation (hash-ref json "id")
+                   (hash-ref json "specification")
+                   (case (hash-ref json "in-progress")
+                     ((0) #t)
+                     (else #f))
+                   (map json->checkout (hash-ref json "checkouts"))))
+
+(define* (latest-evaluations url #:optional (limit %query-limit))
+  "Return the latest evaluations performed by the CI server at URL."
+  (map json->evaluation
+       (json->scm
+        (http-fetch (string-append url "/api/evaluations?nr="
+                                   (number->string limit))))))
+
+
+(define* (evaluations-for-commit url commit #:optional (limit %query-limit))
+  "Return the evaluations among the latest LIMIT evaluations that have COMMIT
+as one of their inputs."
+  (filter (lambda (evaluation)
+            (find (lambda (checkout)
+                    (string=? (checkout-commit checkout) commit))
+                  (evaluation-checkouts evaluation)))
+          (latest-evaluations url limit)))
diff --git a/guix/gexp.scm b/guix/gexp.scm
index f0963c6234..809c1188d4 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -211,7 +211,12 @@ OBJ must be an object that has an associated gexp compiler, such as a
     (#f
      (raise (condition (&gexp-input-error (input obj)))))
     (lower
-     (lower obj system target))))
+     ;; Cache in STORE the result of lowering OBJ.
+     (mlet %store-monad ((graft? (grafting?)))
+       (mcached (let ((lower (lookup-compiler obj)))
+                  (lower obj system target))
+                obj
+                system target graft?)))))
 
 (define-syntax define-gexp-compiler
   (syntax-rules (=> compiler expander)
diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm
index 3634f4bb27..bfd47a831d 100644
--- a/guix/gnu-maintenance.scm
+++ b/guix/gnu-maintenance.scm
@@ -21,6 +21,7 @@
   #:use-module (web uri)
   #:use-module (web client)
   #:use-module (web response)
+  #:use-module (sxml simple)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
@@ -218,7 +219,7 @@ network to check in GNU's database."
 
 
 ;;;
-;;; Latest release.
+;;; Latest FTP release.
 ;;;
 
 (define (ftp-server/directory package)
@@ -247,7 +248,7 @@ network to check in GNU's database."
 (define (release-file? project file)
   "Return #f if FILE is not a release tarball of PROJECT, otherwise return
 true."
-  (and (not (string-suffix? ".sig" file))
+  (and (not (member (file-extension file) '("sig" "sign" "asc")))
        (and=> (regexp-exec %tarball-rx file)
               (lambda (match)
                 ;; Filter out unrelated files, like `guile-www-1.1.1'.
@@ -440,6 +441,88 @@ hosted on ftp.gnu.org, or not under that name (this is the case for
                                         #:server server
                                         #:directory directory))))
 
+
+;;;
+;;; Latest HTTP release.
+;;;
+
+(define (html->sxml port)
+  "Read HTML from PORT and return the corresponding SXML tree."
+  (let ((str (get-string-all port)))
+    (catch #t
+      (lambda ()
+        ;; XXX: This is the poor developer's HTML-to-XML converter.  It's good
+        ;; enough for directory listings at <https://kernel.org/pub> but if
+        ;; needed we could resort to (htmlprag) from Guile-Lib.
+        (call-with-input-string (string-replace-substring str "<hr>" "<hr />")
+          xml->sxml))
+      (const '(html)))))                          ;parse error
+
+(define (html-links sxml)
+  "Return the list of links found in SXML, the SXML tree of an HTML page."
+  (let loop ((sxml sxml)
+             (links '()))
+    (match sxml
+      (('a ('@ attributes ...) body ...)
+       (match (assq 'href attributes)
+         (#f          (fold loop links body))
+         (('href url) (fold loop (cons url links) body))))
+      ((tag ('@ _ ...) body ...)
+       (fold loop links body))
+      ((tag body ...)
+       (fold loop links body))
+      (_
+       links))))
+
+(define* (latest-html-release package
+                              #:key
+                              (base-url "https://kernel.org/pub")
+                              (directory (string-append "/" package))
+                              (file->signature (cut string-append <> ".sig")))
+  "Return an <upstream-source> for the latest release of PACKAGE (a string) on
+SERVER under DIRECTORY, or #f.  BASE-URL should be the URL of an HTML page,
+typically a directory listing as found on 'https://kernel.org/pub'.
+
+FILE->SIGNATURE must be a procedure; it is passed a source file URL and must
+return the corresponding signature URL, or #f it signatures are unavailable."
+  (let* ((uri  (string->uri (string-append base-url directory "/")))
+         (port (http-fetch/cached uri #:ttl 3600))
+         (sxml (html->sxml port)))
+    (define (url->release url)
+      (and (string=? url (basename url))          ;relative reference?
+           (release-file? package url)
+           (let-values (((name version)
+                         (package-name->name+version (sans-extension url)
+                                                     #\-)))
+             (upstream-source
+              (package name)
+              (version version)
+              (urls (list (string-append base-url directory "/" url)))
+              (signature-urls
+               (list (string-append base-url directory "/"
+                                    (file-sans-extension url)
+                                    ".sign")))))))
+
+    (define candidates
+      (filter-map url->release (html-links sxml)))
+
+    (close-port port)
+    (match candidates
+      (() #f)
+      ((first . _)
+       ;; Select the most recent release and return it.
+       (reduce (lambda (r1 r2)
+                 (if (version>? (upstream-source-version r1)
+                                (upstream-source-version r2))
+                     r1 r2))
+               first
+               (coalesce-sources candidates))))))
+
+
+;;;
+;;; Updaters.
+;;;
+
 (define %gnu-file-list-uri
   ;; URI of the file list for ftp.gnu.org.
   (string->uri "https://ftp.gnu.org/find.txt.gz"))
@@ -555,19 +638,21 @@ releases are on gnu.org."
 
 (define (latest-kernel.org-release package)
   "Return the latest release of PACKAGE, the name of a kernel.org package."
-  (let ((uri (string->uri (origin-uri (package-source package)))))
-    (false-if-ftp-error
-     (latest-ftp-release
-      (package-name package)
-      #:server "ftp.free.fr"                      ;a mirror reachable over FTP
-      #:directory (string-append "/mirrors/ftp.kernel.org"
-                                 (dirname (uri-path uri)))
-
-      ;; kernel.org provides "foo-x.y.tar.sign" files, which are signatures of
-      ;; the uncompressed tarball.
-      #:file->signature (lambda (tarball)
-                          (string-append (file-sans-extension tarball)
-                                         ".sign"))))))
+  (define %kernel.org-base
+    ;; This URL and sub-directories thereof are nginx-generated directory
+    ;; listings suitable for 'latest-html-release'.
+    "https://mirrors.edge.kernel.org/pub")
+
+  (define (file->signature file)
+    (string-append (file-sans-extension file) ".sign"))
+
+  (let* ((uri       (string->uri (origin-uri (package-source package))))
+         (package   (package-upstream-name package))
+         (directory (dirname (uri-path uri))))
+    (latest-html-release package
+                         #:base-url %kernel.org-base
+                         #:directory directory
+                         #:file->signature file->signature)))
 
 (define %gnu-updater
   ;; This is for everything at ftp.gnu.org.
diff --git a/guix/grafts.scm b/guix/grafts.scm
index f303e925f1..01e245d8eb 100644
--- a/guix/grafts.scm
+++ b/guix/grafts.scm
@@ -40,7 +40,8 @@
             graft-derivation/shallow
 
             %graft?
-            set-grafting))
+            set-grafting
+            grafting?))
 
 (define-record-type* <graft> graft make-graft
   graft?
@@ -328,6 +329,11 @@ it otherwise.  It returns the previous setting."
   (lambda (store)
     (values (%graft? enable?) store)))
 
+(define (grafting?)
+  "Return a Boolean indicating whether grafting is enabled."
+  (lambda (store)
+    (values (%graft?) store)))
+
 ;; Local Variables:
 ;; eval: (put 'with-cache 'scheme-indent-function 1)
 ;; End:
diff --git a/guix/nar.scm b/guix/nar.scm
index 0495b4a40c..8894f10d2b 100644
--- a/guix/nar.scm
+++ b/guix/nar.scm
@@ -22,8 +22,12 @@
   #:use-module (guix build syscalls)
   #:use-module ((guix build utils)
                 #:select (delete-file-recursively with-directory-excursion))
+
+  ;; XXX: Eventually we should use (guix store database) exclusively, and not
+  ;; (guix store) since this is "daemon-side" code.
   #:use-module (guix store)
   #:use-module (guix store database)
+
   #:use-module (guix ui)                          ; for '_'
   #:use-module (gcrypt hash)
   #:use-module (guix pki)
@@ -88,15 +92,12 @@
 REFERENCES and DERIVER.  When LOCK? is true, acquire exclusive locks on TARGET
 before attempting to register it; otherwise, assume TARGET's locks are already
 held."
-
-  ;; XXX: Currently we have to call out to the daemon to check whether TARGET
-  ;; is valid.
-  (with-store store
-    (unless (valid-path? store target)
+  (with-database %default-database-file db
+    (unless (path-id db target)
       (when lock?
         (lock-store-file target))
 
-      (unless (valid-path? store target)
+      (unless (path-id db target)
         ;; If FILE already exists, delete it (it's invalid anyway.)
         (when (file-exists? target)
           (delete-file-recursively target))
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 500fc9ac90..5743816324 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -771,9 +771,13 @@ processed, #f otherwise."
       (('show requested-name)
        (let-values (((name version)
                      (package-name->name+version requested-name)))
-         (leave-on-EPIPE
-          (for-each (cute package->recutils <> (current-output-port))
-                    (find-packages-by-name name version)))
+         (match (find-packages-by-name name version)
+           (()
+            (leave (G_ "~a~@[@~a~]: package not found~%") name version))
+           (packages
+            (leave-on-EPIPE
+             (for-each (cute package->recutils <> (current-output-port))
+                       packages))))
          #t))
 
       (('search-paths kind)
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index d2be0cf8fb..9ba9428a08 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -235,6 +235,13 @@ When INSTALL-BOOTLOADER? is true, install bootloader using BOOTCFG."
 the ownership of '~a' may be incorrect!~%")
                target))
 
+  ;; If a previous installation was attempted, make sure we start anew; in
+  ;; particular, we don't want to keep a store database that might not
+  ;; correspond to what we're actually putting in the store.
+  (let ((state (string-append target "/var/guix")))
+    (when (file-exists? state)
+      (delete-file-recursively state)))
+
   (chmod target #o755)
   (let ((os-dir   (derivation->output-path os-drv))
         (format   (lift format %store-monad))
diff --git a/guix/store.scm b/guix/store.scm
index b1bdbf3813..9dc651b26c 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -23,6 +23,7 @@
   #:use-module (guix memoization)
   #:use-module (guix serialization)
   #:use-module (guix monads)
+  #:use-module (guix records)
   #:use-module (guix base16)
   #:use-module (guix base32)
   #:use-module (gcrypt hash)
@@ -30,6 +31,7 @@
   #:autoload   (guix build syscalls) (terminal-columns)
   #:use-module (rnrs bytevectors)
   #:use-module (ice-9 binary-ports)
+  #:use-module ((ice-9 control) #:select (let/ec))
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
   #:use-module (srfi srfi-9 gnu)
@@ -55,6 +57,7 @@
             nix-server-minor-version
             nix-server-socket
             current-store-protocol-version        ;for internal use
+            mcached
 
             &nix-error nix-error?
             &nix-connection-error nix-connection-error?
@@ -332,10 +335,7 @@
 
 ;; remote-store.cc
 
-(define-record-type <nix-server>
-  (%make-nix-server socket major minor
-                    buffer flush
-                    ats-cache atts-cache)
+(define-record-type* <nix-server> nix-server %make-nix-server
   nix-server?
   (socket nix-server-socket)
   (major  nix-server-major-version)
@@ -348,7 +348,9 @@
   ;; during the session are temporary GC roots kept for the duration of
   ;; the session.
   (ats-cache  nix-server-add-to-store-cache)
-  (atts-cache nix-server-add-text-to-store-cache))
+  (atts-cache nix-server-add-text-to-store-cache)
+  (object-cache nix-server-object-cache
+                (default vlist-null)))            ;vhash
 
 (set-record-type-printer! <nix-server>
                           (lambda (obj port)
@@ -523,7 +525,8 @@ for this connection will be pinned.  Return a server object."
                                                     (protocol-minor v)
                                                     output flush
                                                     (make-hash-table 100)
-                                                    (make-hash-table 100))))
+                                                    (make-hash-table 100)
+                                                    vlist-null)))
                         (let loop ((done? (process-stderr conn)))
                           (or done? (process-stderr conn)))
                         conn)))))))))
@@ -543,7 +546,8 @@ connection.  Use with care."
                       (protocol-minor version)
                       output flush
                       (make-hash-table 100)
-                      (make-hash-table 100))))
+                      (make-hash-table 100)
+                      vlist-null)))
 
 (define (nix-server-version store)
   "Return the protocol version of STORE as an integer."
@@ -1486,6 +1490,56 @@ This makes sense only when the daemon was started with '--cache-failures'."
 ;; from %STATE-MONAD.
 (template-directory instantiations %store-monad)
 
+(define* (cache-object-mapping object keys result)
+  "Augment the store's object cache with a mapping from OBJECT/KEYS to RESULT.
+KEYS is a list of additional keys to match against, for instance a (SYSTEM
+TARGET) tuple.
+
+OBJECT is typically a high-level object such as a <package> or an <origin>,
+and RESULT is typically its derivation."
+  (lambda (store)
+    (values result
+            (nix-server
+             (inherit store)
+             (object-cache (vhash-consq object (cons result keys)
+                                        (nix-server-object-cache store)))))))
+
+(define* (lookup-cached-object object #:optional (keys '()))
+  "Return the cached object in the store connection corresponding to OBJECT
+and KEYS.  KEYS is a list of additional keys to match against, and which are
+compared with 'equal?'.  Return #f on failure and the cached result
+otherwise."
+  (lambda (store)
+    ;; Escape as soon as we find the result.  This avoids traversing the whole
+    ;; vlist chain and significantly reduces the number of 'hashq' calls.
+    (values (let/ec return
+              (vhash-foldq* (lambda (item result)
+                              (match item
+                                ((value . keys*)
+                                 (if (equal? keys keys*)
+                                     (return value)
+                                     result))))
+                            #f object
+                            (nix-server-object-cache store)))
+            store)))
+
+(define* (%mcached mthunk object #:optional (keys '()))
+  "Bind the monadic value returned by MTHUNK, which supposedly corresponds to
+OBJECT/KEYS, or return its cached value."
+  (mlet %store-monad ((cached (lookup-cached-object object keys)))
+    (if cached
+        (return cached)
+        (>>= (mthunk)
+             (lambda (result)
+               (cache-object-mapping object keys result))))))
+
+(define-syntax-rule (mcached mvalue object keys ...)
+  "Run MVALUE, which corresponds to OBJECT/KEYS, and cache it; or return the
+value associated with OBJECT/KEYS in the store's object cache if there is
+one."
+  (%mcached (lambda () mvalue)
+            object (list keys ...)))
+
 (define (preserve-documentation original proc)
   "Return PROC with documentation taken from ORIGINAL."
   (set-object-property! proc 'documentation
diff --git a/guix/store/database.scm b/guix/store/database.scm
index 341276bc30..38796910da 100644
--- a/guix/store/database.scm
+++ b/guix/store/database.scm
@@ -36,7 +36,9 @@
   #:use-module (ice-9 match)
   #:use-module (system foreign)
   #:export (sql-schema
+            %default-database-file
             with-database
+            path-id
             sqlite-register
             register-path
             register-items
@@ -85,6 +87,10 @@ create it and initialize it as a new database."
                   (lambda ()
                     (sqlite-close db)))))
 
+(define %default-database-file
+  ;; Default location of the store database.
+  (string-append %store-database-directory "/db.sqlite"))
+
 (define-syntax-rule (with-database file db exp ...)
   "Open DB from FILE and close it when the dynamic extent of EXP... is left.
 If FILE doesn't exist, create it and initialize it as a new database."
diff --git a/guix/store/deduplication.scm b/guix/store/deduplication.scm
index 53810c680f..21b0c81f3d 100644
--- a/guix/store/deduplication.scm
+++ b/guix/store/deduplication.scm
@@ -102,11 +102,17 @@ LINK-PREFIX."
 SWAP-DIRECTORY as the directory to store temporary hard links.
 
 Note: TARGET, TO-REPLACE, and SWAP-DIRECTORY must be on the same file system."
-  (let ((temp-link (get-temp-link target swap-directory)))
-    (make-file-writable (dirname to-replace))
+  (let* ((temp-link (get-temp-link target swap-directory))
+         (parent    (dirname to-replace))
+         (stat      (stat parent)))
+    (make-file-writable parent)
     (catch 'system-error
       (lambda ()
-        (rename-file temp-link to-replace))
+        (rename-file temp-link to-replace)
+
+        ;; Restore PARENT's mtime and permissions.
+        (set-file-time parent stat)
+        (chmod parent (stat:mode stat)))
       (lambda args
         (delete-file temp-link)
         (unless (= EMLINK (system-error-errno args))
diff --git a/guix/tests.scm b/guix/tests.scm
index bcf9b990e5..f4948148c4 100644
--- a/guix/tests.scm
+++ b/guix/tests.scm
@@ -27,6 +27,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages bootstrap)
   #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-64)
   #:use-module (rnrs bytevectors)
   #:use-module (ice-9 binary-ports)
   #:use-module (web uri)
@@ -35,10 +36,13 @@
             random-text
             random-bytevector
             file=?
+            canonical-file?
             network-reachable?
             shebang-too-long?
             mock
             %test-substitute-urls
+            test-assertm
+            test-equalm
             %substitute-directory
             with-derivation-narinfo
             with-derivation-substitute
@@ -147,6 +151,14 @@ too expensive to build entirely in the test store."
          (else
           (error "what?" (lstat a))))))
 
+(define (canonical-file? file)
+  "Return #t if FILE is in the store, is read-only, and its mtime is 1."
+  (let ((st (lstat file)))
+    (or (not (string-prefix? (%store-prefix) file))
+        (eq? 'symlink (stat:type st))
+        (and (= 1 (stat:mtime st))
+             (zero? (logand #o222 (stat:mode st)))))))
+
 (define (network-reachable?)
   "Return true if we can reach the Internet."
   (false-if-exception (getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)))
@@ -161,6 +173,28 @@ given by REPLACEMENT."
       (lambda () body ...)
       (lambda () (module-set! m 'proc original)))))
 
+(define-syntax-rule (test-assertm name exp)
+  "Like 'test-assert', but EXP is a monadic value.  A new connection to the
+store is opened."
+  (test-assert name
+    (let ((store (open-connection-for-tests)))
+      (dynamic-wind
+        (const #t)
+        (lambda ()
+          (run-with-store store exp
+                          #:guile-for-build (%guile-for-build)))
+        (lambda ()
+          (close-connection store))))))
+
+(define-syntax-rule (test-equalm name value exp)
+  "Like 'test-equal', but EXP is a monadic value.  A new connection to the
+store is opened."
+  (test-equal name
+    value
+    (with-store store
+      (run-with-store store exp
+                      #:guile-for-build (%guile-for-build)))))
+
 
 ;;;
 ;;; Narinfo files, as used by the substituter.
diff --git a/tests/challenge.scm b/tests/challenge.scm
index 4b13ec278e..c962800f3f 100644
--- a/tests/challenge.scm
+++ b/tests/challenge.scm
@@ -31,17 +31,9 @@
   #:use-module (rnrs bytevectors)
   #:use-module (ice-9 match))
 
-(define %store
-  (open-connection-for-tests))
-
 (define query-path-hash*
   (store-lift query-path-hash))
 
-(define-syntax-rule (test-assertm name exp)
-  (test-assert name
-    (run-with-store %store exp
-                    #:guile-for-build (%guile-for-build))))
-
 (define* (call-with-derivation-narinfo* drv thunk hash)
   (lambda (store)
     (with-derivation-narinfo drv (sha256 => hash)
diff --git a/tests/debug-link.scm b/tests/debug-link.scm
index 2dde3cb460..a1ae4f141c 100644
--- a/tests/debug-link.scm
+++ b/tests/debug-link.scm
@@ -43,14 +43,6 @@
 (define read-elf
   (compose parse-elf get-bytevector-all))
 
-(define %store
-  (open-connection-for-tests))
-
-(define-syntax-rule (test-assertm name exp)
-  (test-assert name
-    (run-with-store %store exp
-                    #:guile-for-build (%guile-for-build))))
-
 
 (test-begin "debug-link")
 
diff --git a/tests/gexp.scm b/tests/gexp.scm
index d5bc5dbc71..ff68d26ba9 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -62,11 +62,6 @@
                                      #:target target)
                   #:guile-for-build (%guile-for-build)))
 
-(define-syntax-rule (test-assertm name exp)
-  (test-assert name
-    (run-with-store %store exp
-                    #:guile-for-build (%guile-for-build))))
-
 (define %extension-package
   ;; Example of a package to use when testing 'with-extensions'.
   (dummy-package "extension"
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index f7dfbfad00..7eeb4304d1 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -106,6 +106,10 @@ guix package --show=guile | grep "^name: guile"
 # Ensure `--show' doesn't fail for packages with non-package inputs.
 guix package --show=texlive
 
+# Fail for non-existent packages or package/version pairs.
+if guix package --show=does-not-exist; then false; else true; fi
+if guix package --show=emacs@42; then false; else true; fi
+
 # Search.
 LC_MESSAGES=C
 export LC_MESSAGES
diff --git a/tests/nar.scm b/tests/nar.scm
index d610ea53f7..5ffe68c9e2 100644
--- a/tests/nar.scm
+++ b/tests/nar.scm
@@ -25,6 +25,8 @@
                 #:select (open-sha256-port open-sha256-input-port))
   #:use-module ((guix packages)
                 #:select (base32))
+  #:use-module ((guix build utils)
+                #:select (find-files))
   #:use-module (rnrs bytevectors)
   #:use-module (rnrs io ports)
   #:use-module (srfi srfi-1)
@@ -332,13 +334,6 @@
       (lambda ()
         (rmdir input)))))
 
-;; 'restore-file-set' depends on 'open-sha256-input-port', which in turn
-;; relies on a Guile 2.0.10+ feature.
-(test-skip (if (false-if-exception
-                (open-sha256-input-port (%make-void-port "r")))
-               0
-               3))
-
 (test-assert "restore-file-set (signed, valid)"
   (with-store store
     (let* ((texts (unfold (cut >= <> 10)
@@ -361,7 +356,43 @@
                           (map (lambda (file)
                                  (call-with-input-file file
                                    get-string-all))
-                               files))))))))
+                               files))
+                  (every canonical-file? files)))))))
+
+(test-assert "restore-file-set with directories (signed, valid)"
+  ;; <https://bugs.gnu.org/33361> describes a bug whereby directories
+  ;; containing files subject to deduplication were not canonicalized--i.e.,
+  ;; their mtime and permissions were not reset.  Ensure that this bug is
+  ;; gone.
+  (with-store store
+    (let* ((text1 (random-text))
+           (text2 (random-text))
+           (tree  `("tree" directory
+                    ("a" regular (data ,text1))
+                    ("b" directory
+                     ("c" regular (data ,text2))
+                     ("d" regular (data ,text1))))) ;duplicate
+           (file  (add-file-tree-to-store store tree))
+           (dump  (call-with-bytevector-output-port
+                   (cute export-paths store (list file) <>))))
+      (delete-paths store (list file))
+      (and (not (file-exists? file))
+           (let* ((source   (open-bytevector-input-port dump))
+                  (imported (restore-file-set source)))
+             (and (equal? imported (list file))
+                  (file-exists? file)
+                  (valid-path? store file)
+                  (string=? text1
+                            (call-with-input-file (string-append file "/a")
+                              get-string-all))
+                  (string=? text2
+                            (call-with-input-file
+                                (string-append file "/b/c")
+                              get-string-all))
+                  (= (stat:ino (stat (string-append file "/a"))) ;deduplication
+                     (stat:ino (stat (string-append file "/b/d"))))
+                  (every canonical-file?
+                         (find-files file #:directories? #t))))))))
 
 (test-assert "restore-file-set (missing signature)"
   (let/ec return
diff --git a/tests/profiles.scm b/tests/profiles.scm
index 9f366a04ef..1f9bbd099d 100644
--- a/tests/profiles.scm
+++ b/tests/profiles.scm
@@ -47,17 +47,6 @@
 ;; Globally disable grafts because they can trigger early builds.
 (%graft? #f)
 
-(define-syntax-rule (test-assertm name exp)
-  (test-assert name
-    (run-with-store %store exp
-                    #:guile-for-build (%guile-for-build))))
-
-(define-syntax-rule (test-equalm name value exp)
-  (test-equal name
-    value
-    (run-with-store %store exp
-                    #:guile-for-build (%guile-for-build))))
-
 ;; Example manifest entries.
 
 (define guile-1.8.8
diff --git a/tests/size.scm b/tests/size.scm
index 575b1abfdd..0aaa8fbc29 100644
--- a/tests/size.scm
+++ b/tests/size.scm
@@ -30,14 +30,6 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-64))
 
-(define %store
-  (open-connection-for-tests))
-
-(define-syntax-rule (test-assertm name exp)
-  (test-assert name
-    (run-with-store %store exp
-                    #:guile-for-build (%guile-for-build))))
-
 
 (test-begin "size")