summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/admin.scm28
-rw-r--r--gnu/packages/algebra.scm19
-rw-r--r--gnu/packages/aspell.scm18
-rw-r--r--gnu/packages/audio.scm4
-rw-r--r--gnu/packages/bittorrent.scm4
-rw-r--r--gnu/packages/bootloaders.scm3
-rw-r--r--gnu/packages/busybox.scm13
-rw-r--r--gnu/packages/cdrom.scm6
-rw-r--r--gnu/packages/chemistry.scm44
-rw-r--r--gnu/packages/ci.scm7
-rw-r--r--gnu/packages/compression.scm37
-rw-r--r--gnu/packages/crypto.scm88
-rw-r--r--gnu/packages/cups.scm35
-rw-r--r--gnu/packages/databases.scm5
-rw-r--r--gnu/packages/dav.scm40
-rw-r--r--gnu/packages/debian.scm15
-rw-r--r--gnu/packages/display-managers.scm8
-rw-r--r--gnu/packages/ebook.scm4
-rw-r--r--gnu/packages/elixir.scm6
-rw-r--r--gnu/packages/emacs.scm288
-rw-r--r--gnu/packages/erlang.scm7
-rw-r--r--gnu/packages/finance.scm96
-rw-r--r--gnu/packages/fltk.scm26
-rw-r--r--gnu/packages/fontutils.scm9
-rw-r--r--gnu/packages/game-development.scm40
-rw-r--r--gnu/packages/games.scm196
-rw-r--r--gnu/packages/geo.scm2
-rw-r--r--gnu/packages/ghostscript.scm11
-rw-r--r--gnu/packages/gimp.scm6
-rw-r--r--gnu/packages/gnu-pw-mgr.scm4
-rw-r--r--gnu/packages/gnunet.scm4
-rw-r--r--gnu/packages/golang.scm383
-rw-r--r--gnu/packages/graphics.scm30
-rw-r--r--gnu/packages/guile.scm585
-rw-r--r--gnu/packages/image-viewers.scm4
-rw-r--r--gnu/packages/java.scm52
-rw-r--r--gnu/packages/julia.scm2
-rw-r--r--gnu/packages/kodi.scm2
-rw-r--r--gnu/packages/libusb.scm4
-rw-r--r--gnu/packages/linux.scm67
-rw-r--r--gnu/packages/mail.scm4
-rw-r--r--gnu/packages/maths.scm32
-rw-r--r--gnu/packages/maven.scm2
-rw-r--r--gnu/packages/messaging.scm16
-rw-r--r--gnu/packages/music.scm89
-rw-r--r--gnu/packages/networking.scm4
-rw-r--r--gnu/packages/package-management.scm13
-rw-r--r--gnu/packages/patches/file-CVE-2017-1000249.patch27
-rw-r--r--gnu/packages/patches/fltk-shared-lib-defines.patch51
-rw-r--r--gnu/packages/patches/fltk-xfont-on-demand.patch45
-rw-r--r--gnu/packages/patches/ghostscript-CVE-2018-10194.patch52
-rw-r--r--gnu/packages/patches/monero-use-system-miniupnpc.patch111
-rw-r--r--gnu/packages/patches/openbabel-fix-crash-on-nwchem-output.patch34
-rw-r--r--gnu/packages/patches/python-cairocffi-dlopen-path.patch10
-rw-r--r--gnu/packages/patches/syncthing-fix-crash.patch72
-rwxr-xr-xgnu/packages/patches/twinkle-include-qregexpvalidator.patch123
-rw-r--r--gnu/packages/patches/xorg-server-rotate-fb.patch35
-rw-r--r--gnu/packages/pdf.scm19
-rw-r--r--gnu/packages/photo.scm4
-rw-r--r--gnu/packages/php.scm12
-rw-r--r--gnu/packages/python-crypto.scm15
-rw-r--r--gnu/packages/python.scm59
-rw-r--r--gnu/packages/ruby.scm51
-rw-r--r--gnu/packages/rust.scm24
-rw-r--r--gnu/packages/scanner.scm3
-rw-r--r--gnu/packages/sdl.scm4
-rw-r--r--gnu/packages/statistics.scm20
-rw-r--r--gnu/packages/stb.scm103
-rw-r--r--gnu/packages/syncthing.scm18
-rw-r--r--gnu/packages/telephony.scm2
-rw-r--r--gnu/packages/tls.scm6
-rw-r--r--gnu/packages/tor.scm6
-rw-r--r--gnu/packages/video.scm61
-rw-r--r--gnu/packages/web-browsers.scm68
-rw-r--r--gnu/packages/web.scm41
-rw-r--r--gnu/packages/wine.scm6
-rw-r--r--gnu/packages/xorg.scm69
77 files changed, 2439 insertions, 1074 deletions
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index e80436e95c..29651f7c48 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -46,6 +46,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
@@ -2740,3 +2741,30 @@ support forum.  It runs with the @code{/exec} command in most IRC clients.")
        ;; perl-xml-dumper
        ;; ipmitool
        ,@(package-inputs inxi-minimal)))))
+
+(define-public pscircle
+  (package
+    (name "pscircle")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://gitlab.com/mildlyparallel/pscircle/-/archive/v"
+             version "/pscircle-v" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1k757yf2bmgfrjd417l6kpcf83hlvi0z1791vz967mwcklrsb3fj"))))
+    (build-system meson-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("cairo" ,cairo)
+       ("libpng" ,libpng)
+       ("libx11" ,libx11)))
+    (home-page "https://gitlab.com/mildlyparallel/pscircle")
+    (synopsis "Visualize Linux processes in a form of radial tree")
+    (description
+     "@code{pscircle} visualizes Linux processes in the form of a radial tree.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index d03b675f3a..c889433b41 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -139,7 +139,7 @@ solve the shortest vector problem.")
 (define-public pari-gp
   (package
    (name "pari-gp")
-   (version "2.9.4")
+   (version "2.11.0")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -147,7 +147,7 @@ solve the shortest vector problem.")
                   version ".tar.gz"))
             (sha256
               (base32
-                "0ir6m3a8r46md5x6zk4xf159qra7aqparby9zk03k81hjrrxr72g"))))
+                "18f9yj8ffn3dxignbxj1x36771zbxy4js0r18mv6831ymb6cld9q"))))
    (build-system gnu-build-system)
    (native-inputs `(("texlive" ,texlive-tiny)))
    (inputs `(("gmp" ,gmp)
@@ -179,7 +179,7 @@ PARI is also available as a C library to allow for faster computations.")
 (define-public gp2c
   (package
    (name "gp2c")
-   (version "0.0.10")
+   (version "0.0.11")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -187,7 +187,7 @@ PARI is also available as a C library to allow for faster computations.")
                   version ".tar.gz"))
             (sha256
               (base32
-                "1xhpz5p81iw261ay1kip283ggr0ir8ydz8qx3v24z8jfms1r3y70"))))
+                "1z69xj2dpd8yyi8108rz26c50xpv0k2j8qnk0bzy1c5lw3pd1adm"))))
    (build-system gnu-build-system)
    (native-inputs `(("perl" ,perl)))
    (inputs `(("pari-gp" ,pari-gp)))
@@ -315,7 +315,7 @@ fast arithmetic.")
 (define-public arb
   (package
    (name "arb")
-   (version "2.13.0")
+   (version "2.14.0")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -324,7 +324,7 @@ fast arithmetic.")
             (file-name (string-append name "-" version ".tar.gz"))
             (sha256
               (base32
-                "123p3gwx0s3i88rcaj3g4jl37cr3pywhpqackipskzab15ni2xfh"))))
+                "0ncr27nd20xxi18nj30cvpa6r52v59nq7gbi34x3l4xym3p8mlmx"))))
    (build-system gnu-build-system)
    (propagated-inputs
     `(("flint" ,flint))) ; flint.h is included by arf.h
@@ -342,19 +342,18 @@ fast arithmetic.")
                   (mpfr (assoc-ref inputs "mpfr")))
               ;; do not pass "--enable-fast-install", which makes the
               ;; homebrew configure process fail
-              (zero? (system*
-                      "./configure"
+              (invoke "./configure"
                       (string-append "--prefix=" out)
                       (string-append "--with-flint=" flint)
                       (string-append "--with-gmp=" gmp)
-                      (string-append "--with-mpfr=" mpfr)))))))))
+                      (string-append "--with-mpfr=" mpfr))))))))
    (synopsis "Arbitrary precision floating-point ball arithmetic")
    (description
     "Arb is a C library for arbitrary-precision floating-point ball
 arithmetic.  It supports efficient high-precision computation with
 polynomials, power series, matrices and special functions over the
 real and complex numbers, with automatic, rigorous error control.")
-   (license license:gpl2+)
+   (license license:lgpl2.1+)
    (home-page "http://fredrikj.net/arb/")))
 
 (define-public ntl
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index 1e2149cd2c..993dc560eb 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -27,6 +27,7 @@
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (guix licenses)
+  #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
@@ -49,6 +50,19 @@
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-before 'build 'set-filter-path
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Change the default value of 'filter-path' so that filters such
+             ;; as 'tex-filter.so' can be found.  By default none of the
+             ;; filters would be found.
+             (let* ((out    (assoc-ref outputs "out"))
+                    (libdir (string-append out "/lib/aspell-"
+                                           ,(version-major+minor version))))
+               (substitute* "common/config.cpp"
+                 (("\"filter-path(.*)DICT_DIR" _ middle)
+                  (string-append "\"filter-path" middle
+                                 "\"" libdir "\"")))
+               #t)))
          (add-after 'install 'wrap-aspell
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((bin/aspell (string-append (assoc-ref outputs "out")
@@ -141,10 +155,10 @@ dictionaries, including personal ones.")
 
 (define-public aspell-dict-en
   (aspell-dictionary "en" "English"
-                     #:version "2017.08.24-0"
+                     #:version "2018.04.16-0"
                      #:sha256
                      (base32
-                      "0z2vvm1by485cm0sna21cmw6zb771c2l2lnn676zmrwm46q65d89")))
+                      "0bxxdzkk9g27plg22y9qzsx9cfjw3aa29w5bmzs561qc9gkp247i")))
 
 (define-public aspell-dict-eo
   (aspell-dictionary "eo" "Esperanto"
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 98f66aae88..58d67f2ebb 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -2505,7 +2505,7 @@ encode and decode wavpack files.")
 (define-public libmodplug
   (package
     (name "libmodplug")
-    (version "0.8.8.5")
+    (version "0.8.9.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2513,7 +2513,7 @@ encode and decode wavpack files.")
                     name "/" version "/" name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1bfsladg7h6vnii47dd66f5vh1ir7qv12mfb8n36qiwrxq92sikp"))))
+                "1pnri98a603xk47smnxr551svbmgbzcw018mq1k6srbrq6kaaz25"))))
     (build-system gnu-build-system)
     (home-page "http://modplug-xmms.sourceforge.net/")
     (synopsis "Mod file playing library")
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index a9d62a5664..ce1e93ef00 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -373,7 +373,7 @@ and will take advantage of multiple processor cores where possible.")
 (define-public libtorrent-rasterbar
   (package
     (name "libtorrent-rasterbar")
-    (version "1.1.7")
+    (version "1.1.8")
     (source (origin
               (method url-fetch)
               (uri
@@ -383,7 +383,7 @@ and will take advantage of multiple processor cores where possible.")
                 "/libtorrent-rasterbar-" version ".tar.gz"))
               (sha256
                (base32
-                "1agkcyjs7xscx4sgkg2ri4nm4v736xsg3br2v8jcrph86dlbycw1"))))
+                "0pcdy26l5ivcs78y2bqh2qca83ikzjfchw5815xh69qf8g88zgvb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 7599f4ac25..792fc4ae2f 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -580,6 +580,9 @@ board-independent tools.")))
 (define-public u-boot-cubieboard
   (make-u-boot-package "Cubieboard" "arm-linux-gnueabihf"))
 
+(define-public u-boot-cubietruck
+  (make-u-boot-package "Cubietruck" "arm-linux-gnueabihf"))
+
 (define-public u-boot-puma-rk3399
   (let ((base (make-u-boot-package "puma-rk3399" "aarch64-linux-gnu")))
     (package
diff --git a/gnu/packages/busybox.scm b/gnu/packages/busybox.scm
index 4cdea3a294..480b777574 100644
--- a/gnu/packages/busybox.scm
+++ b/gnu/packages/busybox.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -31,7 +31,7 @@
 (define-public busybox
   (package
     (name "busybox")
-    (version "1.26.2")
+    (version "1.29.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -39,11 +39,18 @@
                     version ".tar.bz2"))
               (sha256
                (base32
-                "05mg6rh5smkzfwqfcazkpwy6h6555llsazikqnvwkaf17y8l8gns"))))
+                "1hqlr5b3bsyb6avadz1z4za6pyl32r1krnpcpwwqilhnx8q0f9gw"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'disable-taskset
+           ;; This feature fails its tests in the build environment,
+           ;; was default 'n' until after 1.26.2.
+           (lambda _
+             (substitute* "util-linux/taskset.c"
+               (("default y") "default n"))
+             #t))
          (replace 'configure
            (lambda _ (invoke "make" "defconfig")))
          (replace 'check
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 027a333d67..384fc57317 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -418,7 +418,7 @@ graphical interface.")
 (define-public libcue
   (package
     (name "libcue")
-    (version "2.2.0")
+    (version "2.2.1")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -427,8 +427,10 @@ graphical interface.")
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
-               "0y9808vbly1w6i3diaad9csjmmw6iaw572wjjr68ssqamsw193rj"))))
+               "000j5xqp7cc7njwlixr9byahz9kn8pcfdgm76afwv4p8nbmw6yzj"))))
     (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
     (native-inputs
      `(("bison" ,bison)
        ("flex" ,flex)))
diff --git a/gnu/packages/chemistry.scm b/gnu/packages/chemistry.scm
index 1a5086d622..2d7cb7aad1 100644
--- a/gnu/packages/chemistry.scm
+++ b/gnu/packages/chemistry.scm
@@ -21,10 +21,15 @@
   #:use-module (guix packages)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix download)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages algebra)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gv)
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages xml)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python))
 
@@ -198,3 +203,42 @@ neutron scattering spectra, but also computes other quantities.  The software
 is currently not actively maintained and works only with Python 2 and
 NumPy < 1.9.")
     (license license:cecill)))
+
+(define-public openbabel
+  (package
+    (name "openbabel")
+    (version "2.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/" name "/" name "/"
+                                  version "/" name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1z3d6xm70dpfikhwdnbzc66j2l49vq105ch041wivrfz5ic3ch90"))
+              (patches
+               (search-patches "openbabel-fix-crash-on-nwchem-output.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "-DOPENBABEL_USE_SYSTEM_INCHI=ON"
+             (string-append "-DINCHI_LIBRARY="
+                            (assoc-ref %build-inputs "inchi")
+                            "/lib/inchi/libinchi.so.1")
+             (string-append "-DINCHI_INCLUDE_DIR="
+                            (assoc-ref %build-inputs "inchi") "/include/inchi"))
+       #:test-target "test"))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("eigen" ,eigen)
+       ("inchi" ,inchi)
+       ("libxml2" ,libxml2)
+       ("zlib" ,zlib)))
+    (home-page "http://openbabel.org/wiki/Main_Page")
+    (synopsis "Chemistry data manipulation toolbox")
+    (description
+     "Open Babel is a chemical toolbox designed to speak the many languages of
+chemical data.  It's a collaborative project allowing anyone to search, convert,
+analyze, or store data from molecular modeling, chemistry, solid-state
+materials, biochemistry, or related areas.")
+    (license license:gpl2)))
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index ba95dc174b..85dbefae7a 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2016, 2017 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -184,8 +185,8 @@ their dependencies.")
       (license l:gpl3+))))
 
 (define-public cuirass
-  (let ((commit "238f856e48ee333ed3e19fa32ce5e1742c650c67")
-        (revision "16"))
+  (let ((commit "7b2f9e0de1ad2d320973b7aea132a8afcad8bece")
+        (revision "17"))
     (package
       (name "cuirass")
       (version (string-append "0.0.1-" revision "." (string-take commit 7)))
@@ -197,7 +198,7 @@ their dependencies.")
                 (file-name (string-append name "-" version))
                 (sha256
                  (base32
-                  "15iwdgy561gnsr224rs5z8qn7nrsh1wdlsxr8gwxyk0v4zp6yvbf"))))
+                  "0knww99adgjh8s6f38z3hpwi9hxhmnvqj5g35pcj80xv8j4xj3y3"))))
       (build-system gnu-build-system)
       (arguments
        '(#:modules ((guix build utils)
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 0d73886109..2e62cd76ea 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -981,6 +981,43 @@ provides encoder and a decoder libraries: libbrotlienc and libbrotlidec,
 respectively, based on the reference implementation from Google.")
       (license license:expat))))
 
+(define-public bsdiff
+  (package
+    (name "bsdiff")
+    (version "4.3")
+    (home-page "https://www.daemonology.net/bsdiff/")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0j2zm3z271x5aw63mwhr3vymzn45p2vvrlrpm9cz2nywna41b0hq"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags (list "INSTALL=install" "CC=gcc"
+                          (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure)
+                  (add-before 'build 'fix-Makefile
+                    (lambda _
+                      (substitute* "Makefile"
+                        ;; Adjust syntax to make it compatible with GNU Make.
+                        (("^\\.") "")
+                        ;; Help install(1) create the target directory.
+                        (("\\$\\{PREFIX\\}") "-D -t ${PREFIX}"))
+                      #t)))
+       #:tests? #f)) ;no tests
+    (inputs
+     `(("bzip2" ,bzip2)))
+    (synopsis "Patch binary files")
+    (description
+     "@command{bsdiff} and @command{bspatch} are tools for building and
+applying patches to binary files.  By using suffix sorting (specifically
+Larsson and Sadakane's @code{qsufsort}) and taking advantage of how
+executable files change, bsdiff routinely produces binary patches 50-80%
+smaller than those produced by @code{Xdelta}.")
+    (license license:bsd-2)))
+
 (define-public cabextract
  (package
    (name "cabextract")
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index dd86843938..730895efd9 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -668,39 +668,32 @@ data on your platform, so the seed itself will be as random as possible.
     (license (list license:boost1.0 license:public-domain))))
 
 (define-public libb2
-  (let ((revision "1")                  ; upstream doesn't ‘do’ releases
-        (commit "60ea749837362c226e8501718f505ab138e5c19d"))
-    (package
-      (name "libb2")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/BLAKE2/libb2")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "07a2m8basxrsj9dsp5lj24y8jraj85lfy56756a7za1nfkgy04z7"))))
-      (build-system gnu-build-system)
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("libtool" ,libtool)))
-      (arguments
-       `(#:configure-flags
-         (list
-           ,@(if (any (cute string-prefix? <> (or (%current-system)
-                                                  (%current-target-system)))
-                      '("x86_64" "i686"))
-               ;; fat only checks for Intel optimisations
-               '("--enable-fat")
-               '())
-           "--disable-native")))                 ;don't optimise at build time
-      (home-page "https://blake2.net/")
-      (synopsis "Library implementing the BLAKE2 family of hash functions")
-      (description
-       "libb2 is a portable implementation of the BLAKE2 family of cryptographic
+  (package
+    (name "libb2")
+    (version "0.98")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/BLAKE2/libb2/releases/download/v"
+                    version "/libb2-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0vq39cvwy05754l565xl11rqr2jvjb6ykjzca886vi9vm71y0sg8"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        ,@(if (any (cute string-prefix? <> (or (%current-system)
+                                               (%current-target-system)))
+                   '("x86_64" "i686"))
+              ;; fat only checks for Intel optimisations
+              '("--enable-fat")
+              '())
+        "--disable-native")))           ;don't optimise at build time
+    (home-page "https://blake2.net/")
+    (synopsis "Library implementing the BLAKE2 family of hash functions")
+    (description
+     "libb2 is a portable implementation of the BLAKE2 family of cryptographic
 hash functions.  It includes optimised implementations for IA-32 and AMD64
 processors, and an interface layer that automatically selects the best
 implementation for the processor it is run on.
@@ -709,7 +702,7 @@ implementation for the processor it is run on.
 that are faster than MD5, SHA-1, SHA-2, and SHA-3, yet are at least as secure
 as the latest standard, SHA-3.  It is an improved version of the SHA-3 finalist
 BLAKE.")
-      (license license:public-domain))))
+    (license license:public-domain)))
 
 (define-public rhash
   (package
@@ -755,14 +748,14 @@ SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R
 (define-public botan
   (package
     (name "botan")
-    (version "2.6.0")
+    (version "2.7.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://botan.randombit.net/releases/"
                                   "Botan-" version ".tgz"))
               (sha256
                (base32
-                "1iawmymmnp5j2mcjj70slivn6bgg8gbpppldc1rjqw5sbdan3wn1"))))
+                "142aqabwc266jxn8wrp0f1ffrmcvdxwvyh8frb38hx9iaqazjbg4"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -797,3 +790,26 @@ specifically designed to be easy to call from other languages.  A Python binding
 using ctypes is included, and several other language bindings are available.")
     (home-page "https://botan.randombit.net")
     (license license:bsd-2)))
+
+(define-public ccrypt
+  (package
+    (name "ccrypt")
+    (version "1.10")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/ccrypt/ccrypt/"
+                                  version "/ccrypt-" version ".tar.gz"))
+              (sha256
+               (base32
+                "184v9676hx2w875cz04rd3a20wrcms33a1zwybvapb0g2yi6vml7"))))
+    (build-system gnu-build-system)
+    (home-page "http://ccrypt.sourceforge.net")
+    (synopsis "Command-line utility for encrypting and decrypting files and streams")
+    (description "@command{ccrypt} is a utility for encrypting and decrypting
+files and streams.  It was designed as a replacement for the standard unix
+@command{crypt} utility, which is notorious for using a very weak encryption
+algorithm.  @command{ccrypt} is based on the Rijndael block cipher, a version of
+which is also used in the Advanced Encryption Standard (AES, see
+@url{http://www.nist.gov/aes}).  This cipher is believed to provide very strong
+security.")
+    (license license:gpl2)))
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index d365587022..04d4e3fadd 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Mark H Weaver <mhw@netris.org>
@@ -46,7 +46,9 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix download)
   #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages))
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (srfi srfi-1))
 
 (define-public cups-filters
   (package
@@ -174,6 +176,7 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
 (define-public cups-minimal
   (package
     (name "cups-minimal")
+    (replacement cups-minimal-2.2.8)
     (version "2.2.6")
     (source
      (origin
@@ -234,8 +237,21 @@ describe printer capabilities and features, and a wide variety of generic and
 device-specific programs to convert and print many types of files.")
     (license license:gpl2)))
 
+(define-public cups-minimal-2.2.8
+  (package
+    (inherit cups-minimal)
+    (version "2.2.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/apple/cups/releases/download/v"
+                           version "/cups-" version "-source.tar.gz"))
+       (sha256
+        (base32
+         "1r7r7b3nqpzc1a9dczqpj2mr8rkcwf01676v11sp4j7w4qfzqs1r"))))))
+
 (define-public cups
-  (package (inherit cups-minimal)
+  (package/inherit cups-minimal
     (name "cups")
     (arguments
      `(;; Three tests fail:
@@ -506,6 +522,19 @@ device-specific programs to convert and print many types of files.")
      `(("perl" ,perl)
        ("pkg-config" ,pkg-config)))))
 
+(define-public hplip-minimal
+  (package
+    (inherit hplip)
+    (name "hplip-minimal")
+    (arguments
+      (substitute-keyword-arguments (package-arguments hplip)
+        ((#:configure-flags cf)
+         ``(,@(delete "--enable-qt5" ,cf)))))
+    (inputs
+     `(,@(fold alist-delete (package-inputs hplip)
+               '("python-pygobject" "python-pyqt"))))
+    (synopsis "GUI-less version of hplip")))
+
 (define-public foomatic-filters
   (package
     (name "foomatic-filters")
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 55979834c9..382c74cfd9 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -702,6 +702,7 @@ Language.")
 as a drop-in replacement of MySQL.")
     (license license:gpl2)))
 
+;; Don't forget to update the other postgresql packages when upgrading this one.
 (define-public postgresql
   (package
     (name "postgresql")
@@ -750,14 +751,14 @@ pictures, sounds, or video.")
   (package
     (inherit postgresql)
     (name "postgresql")
-    (version "9.6.8")
+    (version "9.6.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://ftp.postgresql.org/pub/source/v"
                                   version "/postgresql-" version ".tar.bz2"))
               (sha256
                (base32
-                "0w7bwf19wbdd3jjbjv03cnx56qka4801srcbsayk9v792awv7zga"))))))
+                "0biy8j69dbvdmrag55pdszpc0702agzqhhcwdx21xp02mzim4ydr"))))))
 
 (define-public qdbm
   (package
diff --git a/gnu/packages/dav.scm b/gnu/packages/dav.scm
index 9d0479b1e1..1a154ea351 100644
--- a/gnu/packages/dav.scm
+++ b/gnu/packages/dav.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -57,31 +58,32 @@ clients.")
 (define-public vdirsyncer
   (package
     (name "vdirsyncer")
-    (version "0.16.6")
+    (version "0.16.7")
     (source (origin
              (method url-fetch)
              (uri (pypi-uri name version))
              (sha256
               (base32
-               "07iqq5c53cfrb5xnmam1rsl683hc3rykmdak896n2gm81r361c66"))))
+               "1vqjhn2bffy2bx45a1r14crsyn2cylf5by567g44c4mhpjwwz6vc"))))
     (build-system python-build-system)
     (arguments
-      `(#:phases (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (add-installed-pythonpath inputs outputs)
-             (setenv "DETERMINISTIC_TESTS" "true")
-             (setenv "DAV_SERVER" "radicale")
-             (setenv "REMOTESTORAGE_SERVER" "skip")
-             (zero? (system* "make" "test"))))
-         (add-after 'install 'manpage
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (zero? (system* "make" "--directory=docs/" "man"))
-             (install-file
-               "docs/_build/man/vdirsyncer.1"
-               (string-append
-                 (assoc-ref outputs "out")
-                 "/share/man/man1")))))))
+     `(#:phases (modify-phases %standard-phases
+        (replace 'check
+          (lambda* (#:key inputs outputs #:allow-other-keys)
+            (add-installed-pythonpath inputs outputs)
+            (setenv "DETERMINISTIC_TESTS" "true")
+            (setenv "DAV_SERVER" "radicale")
+            (setenv "REMOTESTORAGE_SERVER" "skip")
+            (invoke "make" "test")))
+        (add-after 'install 'manpage
+          (lambda* (#:key inputs outputs #:allow-other-keys)
+            (invoke "make" "--directory=docs/" "man")
+            (install-file
+              "docs/_build/man/vdirsyncer.1"
+              (string-append
+                (assoc-ref outputs "out")
+                "/share/man/man1"))
+            #t)))))
     (native-inputs
      `(("python-setuptools-scm" ,python-setuptools-scm)
        ("python-sphinx" ,python-sphinx)
@@ -105,5 +107,5 @@ between two storage locations.  The most popular purpose is to
 synchronize a CalDAV or CardDAV server with a local folder or file.  The
 local data can then be accessed via a variety of programs, none of which
 have to know or worry about syncing to a server.")
-    (home-page "https://github.com/untitaker/vdirsyncer")
+    (home-page "https://github.com/pimutils/vdirsyncer")
     (license bsd-3)))
diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
index e1dd9d1485..1974672fb6 100644
--- a/gnu/packages/debian.scm
+++ b/gnu/packages/debian.scm
@@ -17,6 +17,7 @@
 (define-module (gnu packages debian)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
@@ -112,15 +113,17 @@ contains the archive keys used for that.")
 (define-public debootstrap
   (package
     (name "debootstrap")
-    (version "1.0.101")
+    (version "1.0.106")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append "mirror://debian/pool/main/d/" name "/"
-                            name "_" version ".tar.gz"))
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://salsa.debian.org/installer-team/debootstrap.git")
+              (commit version)))
+        (file-name (git-file-name name version))
         (sha256
          (base32
-          "1p1a81s8hq73byd7256iljdls389x2q7w6srgrgfmx5bl1csnzp3"))))
+          "1fm5bgllcwgwizrqi4sn8p4fpbzhbzgwprrfppfq9hqdzbmlfmnv"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -165,7 +168,7 @@ contains the archive keys used for that.")
      `(("binutils" ,binutils)
        ("gnupg" ,gnupg)
        ("perl" ,perl)))
-    (home-page "https://anonscm.debian.org/cgit/d-i/debootstrap.git")
+    (home-page "https://tracker.debian.org/pkg/debootstrap")
     (synopsis "Bootstrap a basic Debian system")
     (description "Debootstrap is used to create a Debian base system from
 scratch, without requiring the availability of @code{dpkg} or @code{apt}.
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index 6e3d4912de..5baaa6c102 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Joshua Grant <tadni@riseup.net>
-;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Sou Bunnbu <iyzsong@gmail.com>
@@ -134,7 +134,7 @@ Qt-style API for Wayland clients.")
 (define-public sddm
   (package
     (name "sddm")
-    (version "0.17.0")
+    (version "0.18.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -143,7 +143,7 @@ Qt-style API for Wayland clients.")
                     "sddm-" version ".tar.xz"))
               (sha256
                (base32
-                "0ch6rdppgy2vbzw0c2x9a4c6ry46vx7p6b76d8xbh2nvxh23xv0k"))))
+                "0icyi9nqgbp2v6dwh3n3jzff9jv2xy8d4rbsz89hd65x7c3hrv87"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -256,7 +256,7 @@ create smooth, animated user interfaces.")
     (inputs
      `(("audit" ,audit)
        ("linux-pam" ,linux-pam)
-       ("util-linux" ,util-linux) ; for sbin/nologin
+       ("shadow" ,shadow)                         ;for sbin/nologin
        ("libgcrypt" ,libgcrypt)
        ("libxcb" ,libxcb)))
     (native-inputs
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index bf4b6a750e..a78e3e871f 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -75,7 +75,7 @@
 (define-public calibre
   (package
     (name "calibre")
-    (version "3.17.0")
+    (version "3.28.0")
     (source
       (origin
         (method url-fetch)
@@ -84,7 +84,7 @@
                             version ".tar.xz"))
         (sha256
          (base32
-          "1w6hw1s0d4daa4q2ykzhxdndiq61l8z7ls7rxh7k7p62ia0i5sxp"))
+          "0b3vv03c6m6972sk8zj3zc5sq6b9837irnfgjlqhv9z5i75m0414"))
         ;; Remove non-free or doubtful code, see
         ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html
         (modules '((guix build utils)))
diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm
index ed6bd00236..26120327f4 100644
--- a/gnu/packages/elixir.scm
+++ b/gnu/packages/elixir.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 nee <nee.git@cock.li>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright (C) 2018 Nils Gillmann <ng0@n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,7 +33,7 @@
 (define-public elixir
   (package
     (name "elixir")
-    (version "1.5.3")
+    (version "1.6.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/elixir-lang/elixir"
@@ -40,10 +41,11 @@
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0acnxfwvkx1m1d0h5z051mz95n35zm468hcvc3wpmn17c15h5ihg"))))
+                "0c9qz5hasa59a9x1iwpcqpqj6wdbzpijfxqfmzimwj5z8q37nl3l"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
+       #:parallel-tests? #f ;see <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32171#23>
        #:make-flags (list (string-append "PREFIX="
                                          (assoc-ref %outputs "out")))
        #:phases
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 11cd244deb..eab31278a5 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -36,6 +36,8 @@
 ;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2018 Pierre Neidhardt <ambrevar@gmail.com>
 ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
+;;; Copyright © 2018 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -107,6 +109,7 @@
   #:use-module (gnu packages gd)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages password-utils)
+  #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages shells)
   #:use-module (gnu packages gnupg)
@@ -199,7 +202,7 @@
        ("libxft" ,libxft)
        ("libtiff" ,libtiff)
        ("giflib" ,giflib)
-       ("libjpeg" ,libjpeg-8)
+       ("libjpeg" ,libjpeg)
        ("imagemagick" ,imagemagick)
        ("acl" ,acl)
 
@@ -4573,25 +4576,28 @@ Dust.js, React/JSX, Angularjs, ejs, etc.")
     (license license:gpl3+)))
 
 (define-public emacs-wgrep
-  (package
-    (name "emacs-wgrep")
-    (version "2.1.10")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/mhayashi1120/Emacs-wgrep/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1r2bpypar70xg6dsx12x1k74f39ww930rday7rgqpyknzsx1k4l1"))))
-    (build-system emacs-build-system)
-    (home-page "https://github.com/mhayashi1120/Emacs-wgrep")
-    (synopsis "Edit a grep buffer and apply those changes to the files")
-    (description
-     "Emacs wgrep allows you to edit a grep buffer and apply those changes to
-the file buffer.")
-    (license license:gpl3+)))
+  (let ((commit "414be70bd313e482cd9f0b70fd2daad4ee23497c"))
+    ;; Late commit fixes compatibility issue with Emacs 26+.
+    (package
+      (name "emacs-wgrep")
+      (version (git-version "2.1.10" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/mhayashi1120/Emacs-wgrep")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1sdhd587q3pg92lhiayph87azhalmf1gzrnsprkmqvnphv7mvks9"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/mhayashi1120/Emacs-wgrep")
+      (synopsis "Edit a grep buffer and apply those changes to the files")
+      (description
+       "Emacs wgrep allows you to edit a grep buffer and apply those changes
+to the file buffer.  Several backends are supported beside the classic grep:
+ack, ag, helm and pt.")
+      (license license:gpl3+))))
 
 (define-public emacs-helm
   (package
@@ -4855,11 +4861,11 @@ extensions.")
       (license license:gpl3+))))
 
 (define-public emacs-evil-collection
-  (let ((commit "ac21b8957cfc22485cdaa316384edf9cb220d837")
-        (revision "1"))
+  (let ((commit "5d739f58118a5a316c4fe25adb4e13ccea3fdc10")
+        (revision "2"))
     (package
       (name "emacs-evil-collection")
-      (version (git-version "20180617" revision commit))
+      (version (git-version "20180721" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -4868,7 +4874,7 @@ extensions.")
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "082a3c5c2ls9ryqrl5kzb4z6bcprhqx8pypnlj1razbld3lny934"))))
+                  "05p612qncd0cp5q61hq2ag1k558vhb10049xrc88n9l6qwz9bpk3"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-evil" ,emacs-evil)))
@@ -6229,14 +6235,14 @@ which code derived from Kelvin H's org-page.")
 (define-public emacs-xelb
   (package
     (name "emacs-xelb")
-    (version "0.14")
+    (version "0.15")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.gnu.org/packages/xelb-"
                                   version ".tar"))
               (sha256
                (base32
-                "09flnbjy9ck784kprz036rwg9qk45hpv0w5hz3pz3zhwyk57fv74"))))
+                "031rvgprsqhf344p9wsczr50vj2qcpwdmhxi80jdbrsm7wyxf3qz"))))
     (build-system emacs-build-system)
     ;; The following functions and variables needed by emacs-xelb are
     ;; not included in emacs-minimal:
@@ -6268,7 +6274,7 @@ It should enable you to implement low-level X11 applications.")
 (define-public emacs-exwm
   (package
     (name "emacs-exwm")
-    (version "0.18")
+    (version "0.19")
     (synopsis "Emacs X window manager")
     (source (origin
               (method url-fetch)
@@ -6276,7 +6282,7 @@ It should enable you to implement low-level X11 applications.")
                                   version ".tar"))
               (sha256
                (base32
-                "1shz5bf4v4gg3arjaaldics5qkg3aiiaf3ngys8lb6qyxhcpvh6q"))))
+                "11xd2w4h3zdwkdxypvmcz8s7q72cn76lfr9js77jbizyj6b04lr0"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-xelb" ,emacs-xelb)))
@@ -7356,10 +7362,10 @@ messaging service.")
                  ("bash-completion-prog" (string-append bash "/bin/bash"))))
              #t)))))
    (home-page "https://github.com/szermatt/emacs-bash-completion")
-   (synopsis "BASH completion for the shell buffer")
+   (synopsis "Bash completion for the shell buffer")
    (description
     "@code{bash-completion} defines dynamic completion hooks for shell-mode
-and shell-command prompts that are based on bash completion.")
+and shell-command prompts that are based on Bash completion.")
    (license license:gpl2+)))
 
 (define-public emacs-easy-kill
@@ -8819,23 +8825,33 @@ navigate and display hierarchy structures.")
       (license license:gpl3+))))
 
 (define-public emacs-pulseaudio-control
-  (let ((commit "08c59e1dc45ec96edb62f34036e82cf5f14c0e8b")
-        (revision "1"))
+  (let ((commit "1da372ec79f5d2fb901d1f9f0679fee8848fd011")
+        (revision "2"))
     (package
       (name "emacs-pulseaudio-control")
-      (version (string-append "0.0.1" "-" revision "."
-                              (string-take commit 7)))
+      (version (git-version "0.0.1" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
                (url "https://github.com/flexibeast/pulseaudio-control.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
-           "10cgg1r00kz2fsnnryvzay5pf8s1pwb1dzlds1fbjdnyfvdgammv"))))
+           "02xrsms2pjqdk6327midi61i5vg2h9cq5jwaxv43ldm68wl7hi6k"))))
       (build-system emacs-build-system)
+      (arguments
+       '(#:phases (modify-phases %standard-phases
+                    (add-after 'unpack 'patch-file-name
+                      (lambda* (#:key inputs #:allow-other-keys)
+                        (let ((pulseaudio (assoc-ref inputs "pulseaudio")))
+                          (chmod "pulseaudio-control.el" #o600)
+                          (emacs-substitute-variables "pulseaudio-control.el"
+                            ("pulseaudio-control-pactl-path"
+                             (string-append pulseaudio "/bin/pactl")))
+                          #t))))))
+      (inputs `(("pulseaudio" ,pulseaudio)))
       (home-page "https://github.com/flexibeast/pulseaudio-control")
       (synopsis "Control @code{pulseaudio} from Emacs")
       (description
@@ -10218,10 +10234,10 @@ keep Parens and Indentation inline with one another.")
     (license license:gpl3+)))
 
 (define-public emacs-helm-eww
-  (let ((commit "5d6c2c66d4694415ef8a16a6d38a37aeae76c5ac"))
+  (let ((commit "1a09f11b2376dec8237df40140f056be8a256ef0"))
     (package
       (name "emacs-helm-eww")
-      (version (git-version "0.1" "1" commit))
+      (version (git-version "0.1" "2" commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -10230,7 +10246,7 @@ keep Parens and Indentation inline with one another.")
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "1x442ylrr7cx587s4rvfh187h3qbkr79qp95qr57a4igxkkw6183"))))
+                  "1kqdjhz2xiqw3bxjhfl9namhqrkbc2x70gcv6ljljya5hbkm62sm"))))
       (propagated-inputs
        `(("emacs-helm" ,emacs-helm)))
       (build-system emacs-build-system)
@@ -11083,10 +11099,10 @@ from @code{emms-source-file-default-directory}.")
       (license license:gpl3+))))
 
 (define-public emacs-helm-exwm
-  (let ((commit "82a856c80c8d295e3be522a01c5a15af50d08990"))
+  (let ((commit "56266f261ba3b3d2753b374b50da20eb768c06f5"))
     (package
       (name "emacs-helm-exwm")
-      (version (git-version "20180523" "1" commit))
+      (version (git-version "20180703" "2" commit))
       (source
        (origin
          (method url-fetch)
@@ -11096,7 +11112,7 @@ from @code{emms-source-file-default-directory}.")
                ".tar.gz"))
          (sha256
           (base32
-           "1xsg2lar1vh7jmj5lnnyi14vssxkgy95sv9r8pbfhbnkjkbjm9pb"))))
+           "0n7hdiajw5vxl8ha2r9r4cl4i7crza25348825wb6acwhhzijxcj"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-helm" ,emacs-helm)
@@ -11304,37 +11320,14 @@ file.")
       (license license:gpl3+))))
 
 (define-public emacs-wgrep-helm
-  (let ((commit "1cdd7c136f1e7565bb13d2df69be3dc77b83698d"))
-    (package
-      (name "emacs-wgrep-helm")
-      (version (git-version "2.1.10" "1" commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/mhayashi1120/Emacs-wgrep")
-               (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
-         (sha256
-          (base32
-           "057p99hq0r6z1k8sl15w3sxrqvlv0g9wp39zy1pqhccv2mn3g2d6"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-wgrep" ,emacs-wgrep)))
-      (home-page
-       "https://github.com/mhayashi1120/Emacs-wgrep")
-      (synopsis
-       "Writable helm-grep-mode buffer and apply the changes to files")
-      (description
-       "@code{wgrep-helm} allows you to edit a @code{helm-grep-mode} buffer and
-apply those changes to the file buffer.")
-      (license license:gpl3+))))
+  ;; `emacs-wgrep-helm' was mistakenly added.
+  (deprecated-package "emacs-wgrep-helm" emacs-wgrep))
 
 (define-public emacs-mu4e-conversation
-  (let ((commit "b60d6bd27d7220c3dd041ff2a090e29f2166a319"))
+  (let ((commit "223cc66e99c7665326e3d991d6d383cb0d7512bb"))
     (package
       (name "emacs-mu4e-conversation")
-      (version (git-version "20180615" "1" commit))
+      (version (git-version "20180722" "2" commit))
       (source
        (origin
          (method url-fetch)
@@ -11345,7 +11338,7 @@ apply those changes to the file buffer.")
          (file-name (string-append name "-" version "-checkout"))
          (sha256
           (base32
-           "0x8kmi0rmbaaxn5zicm1f9yb8ynxi8074hi2n0rvymlfpxbpn0ma"))))
+           "1ivy7pihhma465hi25p1y45dyi8h52nsm2m0cvizj5sw36jw0n81"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("mu" ,mu)))
@@ -11463,3 +11456,158 @@ can do different things depending on the context.  In this package, it means
 that, if the cursor is in a currently hidden folded construction, we want to
 show it; if it's not, we want to hide whatever fold the cursor is in.")
       (license license:gpl2+))))
+
+(define-public emacs-markup-faces
+  (package
+    (name "emacs-markup-faces")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://stable.melpa.org/packages/markup-faces-"
+                           version ".el"))
+       (sha256
+        (base32
+         "124dxbaa25fwxnpwsygpz7pw6da6dnnw7y2lic3jf8rgz7lw4v32"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/sensorflo/markup-faces")
+    (synopsis "Collection of Emacs faces for markup language modes")
+    (description "emacs-markup-faces is like font-lock-faces, but tailored for
+markup languages instead programming languages.  The sub group markup-faces-text
+is also intended for 'text viewing modes' such as info or (wo)man.  This gives a
+common look and feel, or let's say theme, across different markup language modes
+and 'text viewing modes' respectively.")
+    (license license:gpl3+)))
+
+(define-public emacs-adoc-mode
+  (package
+    (name "emacs-adoc-mode")
+    (version "0.6.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://stable.melpa.org/packages/adoc-mode-"
+                           version ".el"))
+       (sha256
+        (base32
+         "1c6hrgxxsnl2c19rgjykpm7r4xg9lp6bmk5z6bi7g8pqlrgwffcy"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-markup-faces" ,emacs-markup-faces)))
+    (home-page "https://github.com/sensorflo/adoc-mode/wiki")
+    (synopsis "AsciiDoc mode for Emacs")
+    (description "This package provides an Emacs major mode for editing AsciiDoc
+files.  It focuses on highlighting the document to improve readability.")
+    (license license:gpl2+)))
+
+(define-public emacs-rust-mode
+  (let ((commit
+         ;; Last release is old (2016), use more recent commit to get bug
+         ;; fixes.
+         "64b4a2450e4d4c47f6307851c9b2598cd2254d68")
+        (revision "0"))
+    (package
+      (name "emacs-rust-mode")
+      (version (git-version "0.3.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri
+                 (git-reference
+                  (url "https://github.com/rust-lang/rust-mode")
+                  (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0pbz36lljgb7bdgx3h3g0pq1nss1kvn8mhk1l3mknsmynd6w4nd8"))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (replace 'check
+             (lambda _
+               (invoke "sh" "run_rust_emacs_tests.sh"))))))
+      (home-page "https://github.com/rust-lang/rust-mode")
+      (synopsis "Major Emacs mode for editing Rust source code")
+      (description "This package provides a major Emacs mode for editing Rust
+source code.")
+      (license (list license:expat
+                     license:asl2.0)))))
+
+(define-public emacs-ztree
+  (let ((commit "c54425a094353ec40a8179f9eab3596f76c6cf94"))
+    (package
+      (name "emacs-ztree")
+      (version (git-version "1.0.5" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/fourier/ztree")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0j8fpxds8m1zi04nrs8vv21091abvh4n8ab76f1sgdxnp4l5cfb0"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/fourier/ztree")
+      (synopsis "Directory tree comparison mode for Emacs")
+      (description "Ztree is a project dedicated to implementation of several
+text-tree applications inside GNU Emacs.  It consists of 2 subprojects:
+@command{ztree-diff} and @command{ztree-dir} (the basis of
+@command{ztree-diff}).")
+      (license license:gpl3))))
+
+(define-public emacs-helm-org-contacts
+  (let ((commit "0af703bd9a43032b89fdf5559673151d1ac2fffc"))
+    (package
+      (name "emacs-helm-org-contacts")
+      (version (git-version "20180707" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/tmalsburg/helm-org-contacts")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1cl7cm2ic9pg4vc9cdh84vzjj1x2lpd5ymimiva8h4l17kiphk4s"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-helm" ,emacs-helm)
+         ("emacs-s" ,emacs-s)))
+      (home-page "https://github.com/tmalsburg/helm-org-contacts")
+      (synopsis "Helm source for org-contacts")
+      (description "This Helm source can be used to search contacts stored in
+org-contacts format.  There are actions for inserting postal addresses, email
+addresses, and phone numbers in the buffer where @command{helm-org-contacts}
+was called.")
+      (license license:gpl3))))
+
+(define-public emacs-dired-du
+  (package
+    (name "emacs-dired-du")
+    (version "0.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://elpa.gnu.org/packages/dired-du-"
+             version ".tar"))
+       (sha256
+        (base32
+         "09yj37p2fa5f81fqrzwghjkyy2ydsf4rbkfwpn2yyvzd5nd97bpl"))))
+    (build-system emacs-build-system)
+    (home-page "http://elpa.gnu.org/packages/dired-du.html")
+    (synopsis "Dired with recursive directory sizes")
+    (description
+     "Display the recursive size of directories in Dired.
+This file defines a minor mode @command{dired-du-mode} to show the recursive
+size of directories in Dired buffers.  If @command{du} program is available,
+then the directory sizes are obtained with it.  Otherwise, the directory sizes
+are obtained with Lisp.  The former is faster and provide a more precise
+value.  For directories where the user doesn't have read permission, the
+recursive size is not obtained.  Once this mode is enabled, every new Dired
+buffer displays recursive dir sizes.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index 1c18efe9da..f0b2f350c2 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright (C) 2018 Nils Gillmann <ng0@n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -37,7 +38,7 @@
 (define-public erlang
   (package
     (name "erlang")
-    (version "20.2.3")
+    (version "21.0")
     (source (origin
               (method url-fetch)
               ;; The tarball from http://erlang.org/download contains many
@@ -48,7 +49,7 @@
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0s9g4ijdbqq21k4cqggz074d3fiimah942qisv2kgizhlivpw2nm"))
+                "0gv43lra4870xns8b0yjzbq78afzvz9gk6y3q3fa4y4sqcrqwbas"))
               (patches (search-patches "erlang-man-path.patch"))))
     (build-system gnu-build-system)
     (native-inputs
@@ -64,7 +65,7 @@
                                (version-major+minor version) ".tar.gz"))
            (sha256
             (base32
-             "1pyb8wbk7znsyni8d1k4dj1m01lr191dcrrzisli1z27ks7hh3lm"))))))
+             "0cgv23q0215f6lvmhj4w9skx5m29khjs9mb890635s3yp520xgqh"))))))
     (inputs
      `(("ncurses" ,ncurses)
        ("openssl" ,openssl)
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 1d3e6a7a6a..3ddaa76a4e 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -39,6 +39,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages crypto)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages dns)
@@ -51,6 +52,7 @@
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages networking)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
@@ -69,7 +71,7 @@
 (define-public bitcoin-core
   (package
     (name "bitcoin-core")
-    (version "0.15.1")
+    (version "0.16.1")
     (source (origin
              (method url-fetch)
              (uri
@@ -77,7 +79,7 @@
                              version "/bitcoin-" version ".tar.gz"))
              (sha256
               (base32
-               "1d22fgwdcn343kd95lh389hj417zwbmnhi29cij8n7wc0nz2vpil"))))
+               "1zkqp93yircd3pbxczxfnibkpq0sgcv5r7wg6d196b9pwgr9zd39"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -329,6 +331,37 @@ generation from a seed.  Your secret keys are encrypted and are never sent to
 other machines/servers.  Electrum does not download the Bitcoin blockchain.")
     (license license:expat)))
 
+(define-public electron-cash
+  (package
+    (inherit electrum)
+    (name "electron-cash")
+    (version "3.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://electroncash.org/downloads/"
+                           version
+                           "/win-linux/ElectronCash-"
+                           version
+                           ".tar.gz"))
+       (sha256
+        (base32
+         "1x487hyacdm1qhik1mhfimr4jwcwz7sgsbkh11awrb6j19sxdxym"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Delete the bundled dependencies.
+           (delete-file-recursively "packages")
+           #t))))
+    (home-page "https://electroncash.org/")
+    (synopsis "Bitcoin Cash wallet")
+    (description
+     "Electroncash is a lightweight Bitcoin Cash client, based on a client-server
+protocol.  It supports Simple Payment Verification (SPV) and deterministic key
+generation from a seed.  Your secret keys are encrypted and are never sent to
+other machines/servers.  Electroncash does not download the Bitcoin Cash blockchain.")
+    (license license:expat)))
+
 (define-public monero
   ;; This package bundles easylogging++ and lmdb.
   ;; The bundled easylogging++ is modified, and the changes will not be upstreamed.
@@ -336,25 +369,18 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
   ;; the system's dynamically linked library.
   (package
     (name "monero")
-    (version "0.11.1.0")
+    (version "0.12.3.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/monero-project/monero/archive/v"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/monero-project/monero")
+             (commit (string-append "v" version))))
        (file-name (string-append name "-" version ".tar.gz"))
-       (modules '((guix build utils)))
-       (snippet
-        '(begin
-           ;; Delete bundled dependencies.
-           (for-each
-            delete-file-recursively
-            '("external/miniupnpc" "external/rapidjson"
-              "external/unbound"))
-           #t))
+       (patches (search-patches "monero-use-system-miniupnpc.patch"))
        (sha256
         (base32
-         "16shd834025jyzy68h3gag1sz8vbk875hy4j97hrki8pacz8vd5m"))))
+         "14db9kgjm2ha93c2x5fjdw01xaqshn756qr3x2cnzyyjh7caz5qd"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("doxygen" ,doxygen)
@@ -364,15 +390,19 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
     (inputs
      `(("bind" ,isc-bind)
        ("boost" ,boost)
+       ("zeromq" ,zeromq)
+       ("cppzmq" ,cppzmq)
        ("expat" ,expat)
+       ("libsodium" ,libsodium)
        ("libunwind" ,libunwind)
        ("lmdb" ,lmdb)
-       ("miniupnpc" ,miniupnpc)
+       ("miniupnpc" ,monero-miniupnpc)
        ("openssl" ,openssl)
        ("rapidjson" ,rapidjson)
        ("unbound" ,unbound)))
     (arguments
      `(#:out-of-source? #t
+       #:build-type "release"
        #:configure-flags '("-DBUILD_TESTS=ON"
                            ,@(if (string=? "aarch64-linux" (%current-system))
                                  '("-DARCH=armv8-a")
@@ -400,9 +430,8 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
              #t))
          (replace 'check
            (lambda _
-             (zero?
-              (system* "make" "ARGS=-E 'unit_tests|libwallet_api_tests'"
-                       "test"))))
+             (invoke "make" "ARGS=-E 'unit_tests|libwallet_api_tests'"
+                     "test")))
          ;; The excluded unit tests need network access
          (add-after 'check 'unit-tests
            (lambda _
@@ -415,10 +444,9 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
                        "DNSResolver.DNSSECFailure"
                        "DNSResolver.GetTXTRecord")
                      ":")))
-               (zero?
-                (system* "tests/unit_tests/unit_tests"
-                         (string-append "--gtest_filter=-"
-                                        excluded-unit-tests))))))
+               (invoke "tests/unit_tests/unit_tests"
+                       (string-append "--gtest_filter=-"
+                                      excluded-unit-tests)))))
          (add-after 'install 'install-blockchain-import-export
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -432,19 +460,20 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
 Monero command line client and daemon.")
     (license license:bsd-3)))
 
-(define-public monero-core
+(define-public monero-gui
   (package
-    (name "monero-core")
-    (version "0.11.1.0")
+    (name "monero-gui")
+    (version "0.12.2.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/monero-project/monero-core/archive/v"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/monero-project/monero-gui")
+             (commit (string-append "v" version))))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1q7a9kpcjgp74fbplzs2iszdld6gwbfrydyd9in9izhwp100p1rr"))))
+         "1cnrkwh7kp64lnzz1xfmkf1mhsgm5gls292gpqai3jr8jydpkahl"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("doxygen" ,doxygen)
@@ -491,7 +520,7 @@ Monero command line client and daemon.")
              #t))
          (replace 'build
            (lambda _
-             (zero? (system* "./build.sh"))))
+             (invoke "./build.sh")))
          (add-after 'build 'fix-install-path
            (lambda* (#:key outputs #:allow-other-keys)
              (substitute* "build/Makefile"
@@ -508,6 +537,9 @@ Monero command line client and daemon.")
 Monero GUI client.")
     (license license:bsd-3)))
 
+(define-public monero-core
+  (deprecated-package "monero-core" monero-gui))
+
 (define-public python-trezor-agent
   (package
     (name "python-trezor-agent")
diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm
index e4eb2fcad0..a3c088c2e8 100644
--- a/gnu/packages/fltk.scm
+++ b/gnu/packages/fltk.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2015, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -34,27 +35,27 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
-  #:use-module (guix build-system waf))
+  #:use-module (guix build-system waf)
+  #:use-module (srfi srfi-1))
 
 (define-public fltk
   (package
     (name "fltk")
-    (version "1.3.3")
+    (version "1.3.4-2")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "http://fltk.org/pub/fltk/" version
+      (uri (string-append "http://fltk.org/pub/fltk/"
+                          (first (string-split version #\-))
                           "/fltk-" version "-source.tar.gz"))
       (sha256
        (base32
-        "15qd7lkz5d5ynz70xhxhigpz3wns39v9xcf7ggkl0792syc8sfgq"))
-      (patches (search-patches "fltk-shared-lib-defines.patch"
-                               "fltk-xfont-on-demand.patch"))))
+        "0459rm1gl5x3famiqma7ja7k6hvan8p5l8lgshvqfl4rik0lklr5"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
-    `(("libjpeg" ,libjpeg-8)     ;jpeg_read_header argument error in libjpeg-9
+    `(("libjpeg" ,libjpeg)
       ("libpng" ,libpng)
       ("libx11" ,libx11)
       ("libxft" ,libxft)
@@ -76,12 +77,11 @@
            ;; Provide -L flags for image libraries when querying fltk-config to
            ;; avoid propagating inputs.
            (lambda* (#:key inputs outputs #:allow-other-keys)
-             (use-modules (srfi srfi-26))
-             (let* ((conf (string-append (assoc-ref outputs "out")
-                                         "/bin/fltk-config"))
-                    (jpeg (assoc-ref inputs "libjpeg"))
-                    (png  (assoc-ref inputs "libpng"))
-                    (zlib (assoc-ref inputs "zlib")))
+             (let ((conf (string-append (assoc-ref outputs "out")
+                                        "/bin/fltk-config"))
+                   (jpeg (assoc-ref inputs "libjpeg"))
+                   (png  (assoc-ref inputs "libpng"))
+                   (zlib (assoc-ref inputs "zlib")))
                (substitute* conf
                  (("-ljpeg") (string-append "-L" jpeg "/lib -ljpeg"))
                  (("-lpng") (string-append "-L" png "/lib -lpng"))
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 85febd73f4..725387ce8e 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -455,17 +455,16 @@ using the above tables.")
 (define-public libspiro
   (package
     (name "libspiro")
-    (version "20071029")
+    (version "0.5.20150702")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "mirror://sourceforge/libspiro/libspiro/"
-                          version "/libspiro_src-" version ".tar.bz2"))
+      (uri (string-append "https://github.com/fontforge/libspiro/releases"
+                          "/download/" version "/libspiro-dist-" version ".tar.gz"))
       (sha256
        (base32
-        "1kylz8pvwnb85yya150r9i6mhbpzx38f32qy523qg3ylgd9b3zhy"))))
+        "153ckwj6h3wwlsgcppzqj8cymv1927hi8ar8fzpchq5q89cj2kai"))))
     (build-system gnu-build-system)
-    (arguments `(#:tests? #f))          ;no tests
     (synopsis "Clothoid to bezier conversion library")
     (description
      "Raph Levien's Spiro package as a library.  A mechanism for drawing
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index afabeb0c62..33e2b4a16c 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -74,6 +74,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages sdl)
+  #:use-module (gnu packages stb)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
@@ -440,7 +441,7 @@ clone.")
 (define-public sfml
   (package
     (name "sfml")
-    (version "2.3.2")
+    (version "2.5.0")
     (source (origin
               (method url-fetch)
               ;; Do not fetch the archives from
@@ -451,24 +452,37 @@ clone.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0k2fl5xk3ni2q8bsxl0551inx26ww3w6cp6hssvww0wfjdjcirsm"))))
+                "1x3yvhdrln5b6h4g5r4mds76gq8zsxw6icxqpwqkmxsqcq5yviab"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Ensure system libraries are used.
+                  (delete-file-recursively "extlibs")
+                  #t))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags
-       (list "-DSFML_INSTALL_PKGCONFIG_FILES=TRUE")
+       (list "-DSFML_INSTALL_PKGCONFIG_FILES=TRUE"
+             "-DSFML_OS_PKGCONFIG_DIR=lib/pkgconfig")
        #:tests? #f)) ; no tests
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
     (inputs
      `(("mesa" ,mesa)
        ("glew" ,glew)
-       ("flac" ,flac)
-       ("libvorbis" ,libvorbis)
        ("libx11" ,libx11)
        ("xcb-util-image" ,xcb-util-image)
        ("libxrandr" ,libxrandr)
        ("eudev" ,eudev)
-       ("freetype" ,freetype)
        ("libjpeg" ,libjpeg)
        ("libsndfile" ,libsndfile)
+       ("stb-image" ,stb-image)
+       ("stb-image-write" ,stb-image-write)))
+    (propagated-inputs
+     ;; In Requires.private of pkg-config files.
+     `(("flac" ,flac)
+       ("freetype" ,freetype)
+       ("libvorbis" ,libvorbis)
        ("openal" ,openal)))
     (home-page "https://www.sfml-dev.org")
     (synopsis "Simple and Fast Multimedia Library")
@@ -518,7 +532,7 @@ sounds from presets such as \"explosion\" or \"powerup\".")
 (define-public physfs
   (package
     (name "physfs")
-    (version "2.0.3")
+    (version "3.0.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -527,10 +541,18 @@ sounds from presets such as \"explosion\" or \"powerup\".")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0sbbyqzqhyf0g68fcvvv20n3928j0x6ik1njmhn1yigvq2bj11na"))))
+                "1wgj2zqpnfbnyyi1i7bq5pshcc9n5cvwlpzp8im67nb8662ryyxp"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:tests? #f))                    ; no check target
+     '(#:tests? #f                      ; no check target
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'patch-CMakeLists.txt
+                    (lambda _
+                      (substitute* "CMakeLists.txt"
+                        ;; XXX: For some reason CMakeLists.txt disables
+                        ;; RUNPATH manipulation when the compiler is GCC.
+                        (("CMAKE_COMPILER_IS_GNUCC") "FALSE"))
+                      #t)))))
     (inputs
      `(("zlib" ,zlib)))
     (native-inputs
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 4af0b52e82..1082dadae6 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -87,6 +87,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages less)
   #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages libedit)
   #:use-module (gnu packages libunwind)
@@ -665,6 +666,131 @@ removed lines to all opponents.  There is also a Demo mode in which you can
 watch your CPU playing while enjoying a cup of tea!")
     (license license:gpl2+)))
 
+(define-public nethack
+  (package
+    (name "nethack")
+    (version "3.6.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://www.nethack.org/download/"
+                            version "/" name "-361-src.tgz"))
+        (sha256
+          (base32 "1dha0ijvxhx7c9hr0452h93x81iiqsll8bc9msdnp7xdqcfbz32b"))))
+    (inputs
+      `(("ncurses" ,ncurses)
+        ("bison" ,bison)
+        ("flex" ,flex)
+        ("less" ,less)))
+    (build-system gnu-build-system)
+    (arguments
+      '(#:make-flags
+        `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
+        #:phases
+        (modify-phases %standard-phases
+          (add-before 'configure 'patch-paths
+            (lambda _
+              (substitute* "sys/unix/nethack.sh"
+                (("^ *cd .*$") ""))
+              (substitute* "sys/unix/Makefile.utl"
+                (("^YACC *=.*$") "YACC = bison -y\n")
+                (("^LEX *=.*$") "LEX = flex\n")
+                (("^# CC = gcc") "CC = gcc"))
+              (substitute* "sys/unix/hints/linux"
+                (("/bin/gzip") (string-append
+                                 (assoc-ref %build-inputs "gzip")
+                                 "/bin/gzip"))
+                (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
+              (substitute* "include/config.h"
+                (("^.*define CHDIR.*$") "")
+                (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
+                 ;; Honor SOURCE_DATE_EPOCH.
+                 "#define REPRODUCIBLE_BUILD"))
+
+              ;; Note: 'makedefs' rejects and ignores dates that are too old
+              ;; or too new, so we must choose something reasonable here.
+              (setenv "SOURCE_DATE_EPOCH" "1531865062")
+
+              (substitute* "sys/unix/Makefile.src"
+                 (("^# CC = gcc") "CC = gcc"))
+              #t))
+          (replace 'configure
+            (lambda _
+              (let ((bash (string-append
+                            (assoc-ref %build-inputs "bash")
+                            "/bin/bash")))
+                (with-directory-excursion "sys/unix"
+                  (substitute* "setup.sh" (("/bin/sh") bash))
+                  (invoke bash "setup.sh" "hints/linux"))
+                #t)))
+          (add-after 'install 'fixup-paths
+            (lambda _
+              (let* ((output (assoc-ref %outputs "out"))
+                     (nethack-script (string-append output "/bin/nethack")))
+                (mkdir-p (string-append output "/games/lib/nethackuserdir"))
+                (for-each
+                  (lambda (file)
+                    (rename-file
+                      (string-append output "/games/lib/nethackdir/" file)
+                      (string-append output "/games/lib/nethackuserdir/"
+                                     file)))
+                  '("xlogfile" "logfile" "perm" "record" "save"))
+                (mkdir-p (string-append output "/bin"))
+                (call-with-output-file nethack-script
+                  (lambda (port)
+                    (format port "#!~a/bin/sh
+PATH=~a:$PATH
+if [ ! -d ~~/.config/nethack ]; then
+  mkdir -p ~~/.config/nethack
+  cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
+  chmod -R +w ~~/.config/nethack
+fi
+
+RUNDIR=$(mktemp -d)
+
+cleanup() {
+  rm -rf $RUNDIR
+}
+trap cleanup EXIT
+
+cd $RUNDIR
+for i in ~~/.config/nethack/*; do
+  ln -s $i $(basename $i)
+done
+for i in ~a/games/lib/nethackdir/*; do
+  ln -s $i $(basename $i)
+done
+~a/games/nethack"
+                      (assoc-ref %build-inputs "bash")
+                      (list->search-path-as-string
+                        (list
+                          (string-append
+                            (assoc-ref %build-inputs "coreutils") "/bin")
+                          (string-append
+                            (assoc-ref %build-inputs "less") "/bin"))
+                        ":")
+                      output
+                      output
+                      output)))
+                (chmod nethack-script #o555)
+                #t)))
+          (delete 'check))))
+    (home-page "https://nethack.org")
+    (synopsis "Classic dungeon crawl game")
+    (description "NetHack is a single player dungeon exploration game that runs
+on a wide variety of computer systems, with a variety of graphical and text
+interfaces all using the same game engine.  Unlike many other Dungeons &
+Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
+the dungeon and not simply killing everything in sight - in fact, killing
+everything in sight is a good way to die quickly.  Each game presents a
+different landscape - the random number generator provides an essentially
+unlimited number of variations of the dungeon and its denizens to be discovered
+by the player in one of a number of characters: you can pick your race, your
+role, and your gender.")
+    (license
+      (license:fsdg-compatible
+        "https://nethack.org/common/license.html"))))
+
 (define-public prboom-plus
   (package
    (name "prboom-plus")
@@ -955,15 +1081,16 @@ that beneath its ruins lay buried an ancient evil.")
 (define-public angband
   (package
     (name "angband")
-    (version "4.0.5")
+    (version "4.1.2")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://rephial.org/downloads/4.0/"
-                           "angband-" version ".tar.gz"))
+       (uri (string-append "http://rephial.org/downloads/"
+                           (version-major+minor version)
+                           "/angband-" version ".tar.gz"))
        (sha256
         (base32
-         "0lpq2kms7hp421vrasx2bkkn9w08kr581ldwik3v0hlq6h7rlxhd"))
+         "0ahfzb66ihxvkxcbhcib816x40sdsp26b3ravr1xqp44w1whkg1h"))
        (modules '((guix build utils)))
        (snippet
         ;; So, some of the sounds/graphics/tilesets are under different
@@ -987,11 +1114,11 @@ that beneath its ruins lay buried an ancient evil.")
        #:configure-flags (list (string-append "--bindir=" %output "/bin"))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'autogen.sh
+         (replace 'bootstrap
            (lambda _
              (substitute* "acinclude.m4"
                (("ncursesw5-config") "ncursesw6-config"))
-             (zero? (system* "sh" "autogen.sh")))))))
+             (invoke "sh" "autogen.sh"))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)))
@@ -1448,7 +1575,7 @@ match, cannon keep, and grave-itation pit.")
 (define minetest-data
   (package
     (name "minetest-data")
-    (version "0.4.16")
+    (version "0.4.17")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1457,7 +1584,7 @@ match, cannon keep, and grave-itation pit.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0nibpm600rbv9dg1zgcsl5grlbqx0b5l6cg1lp6sqkwvjialb4ga"))))
+                "0pa9skjwbq27aky6dgr7g3mb0a7c5rpa6xmz2qh0nm618z5hgazh"))))
     (build-system trivial-build-system)
     (native-inputs
      `(("source" ,source)
@@ -1490,7 +1617,7 @@ match, cannon keep, and grave-itation pit.")
 (define-public minetest
   (package
     (name "minetest")
-    (version "0.4.16")
+    (version "0.4.17")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1499,7 +1626,7 @@ match, cannon keep, and grave-itation pit.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0mbnf1ma4gsw9ah68ply04059xkfx5psdxwalxp78sgmx4ypkwqf"))))
+                "0wpbad5bssbbgspgdcq3hhq4bhckrj53nhymsz34d8g01j0csr46"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags
@@ -1830,7 +1957,7 @@ falling, themeable graphics and sounds, and replays.")
 (define-public wesnoth
   (package
     (name "wesnoth")
-    (version "1.14.3")
+    (version "1.14.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
@@ -1839,7 +1966,7 @@ falling, themeable graphics and sounds, and replays.")
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "06648041nr77sgzr7jpmcn37cma3hp41qynp50xzddx28l17zwg9"))))
+                "1hw1ap8xxpdwyx1sf8fm1g75p6724y3hwb4kpvyqbsq7bwfwsb9i"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f)) ; no check target
@@ -3345,7 +3472,7 @@ throwing people around in pseudo-randomly generated buildings.")
 (define-public hyperrogue
   (package
     (name "hyperrogue")
-    (version "10.0g")
+    (version "10.4j")
     ;; When updating this package, be sure to update the "hyperrogue-data"
     ;; origin in native-inputs.
     (source (origin
@@ -3356,7 +3483,7 @@ throwing people around in pseudo-randomly generated buildings.")
                     "-src.tgz"))
               (sha256
                (base32
-                "0f68pcnsgl406dhm91ckn3f364bar9m9i5njp9vrmvhvv9p2icy0"))))
+                "0909p4xvbi1c2jc5rdgrf8b1c60fmsaapabsi6yyglh5znkf0k27"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; no check target
@@ -3368,7 +3495,6 @@ throwing people around in pseudo-randomly generated buildings.")
              (setenv "CPATH"
                      (string-append (assoc-ref inputs "sdl-union")
                                     "/include/SDL"))))
-         ;; Fix font and music paths.
          (replace 'configure
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -3378,17 +3504,18 @@ throwing people around in pseudo-randomly generated buildings.")
                                  "/share/fonts/truetype"))
                     (dejavu-font "DejaVuSans-Bold.ttf")
                     (music-file "hyperrogue-music.txt"))
+               ;; Fix font and music paths.
                (substitute* "basegraph.cpp"
                  ((dejavu-font)
                   (string-append dejavu-dir "/" dejavu-font)))
-               (substitute* "sound.cpp"
-                 (((string-append "\\./" music-file))
-                  (string-append share-dir "/" music-file))
-                 (("sounds/")
-                  (string-append share-dir "/sounds/")))
                (substitute* music-file
                  (("\\*/")
                   (string-append share-dir "/sounds/"))))
+             ;; Fix Makefile.
+             (substitute* "Makefile"
+               (("g\\+\\+ langen.cpp")
+                "g++ langen.cpp ${CXXFLAGS}")
+               (("savepng.c") "savepng.cpp"))
              #t))
          (replace 'install
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -3405,21 +3532,18 @@ throwing people around in pseudo-randomly generated buildings.")
                     (out (assoc-ref outputs "out"))
                     (sounds (string-append out "/share/hyperrogue/sounds"))
                     (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
-               (and
-                ;; Extract media license information into sounds directory.
-                (zero?
-                 (system* unzip "-j" data
-                          (string-append
-                           "hyperrogue"
-                           (string-join (string-split ,version #\.) "")
-                           "/sounds/credits.txt") "-d" sounds))
-                ;; Extract sounds and music into sounds directory.
-                (zero?
-                 (system* "unzip" "-j" data
-                          (string-append
-                           "hyperrogue"
-                           (string-join (string-split ,version #\.) "")
-                           "/*.ogg") "-d" sounds)))))))))
+               ;; Extract media license information into sounds directory.
+               (invoke unzip "-j" data
+                       (string-append
+                        "hyperrogue"
+                        (string-join (string-split ,version #\.) "")
+                        "/sounds/credits.txt") "-d" sounds)
+               ;; Extract sounds and music into sounds directory.
+               (invoke "unzip" "-j" data
+                       (string-append
+                        "hyperrogue"
+                        (string-join (string-split ,version #\.) "")
+                        "/*.ogg") "-d" sounds)))))))
     (native-inputs
      `(("hyperrogue-data"
         ,(origin
@@ -3431,7 +3555,7 @@ throwing people around in pseudo-randomly generated buildings.")
              "-win.zip"))
            (sha256
             (base32
-             "0bnp077qvlmxjlz1jjd6kpghlv9flxc19ac1xq3m3wyq1w9p3pab"))))
+             "0w61iv2rn93hi0q3hxyyyf9xcr8vi9zd7fjvpz5adpgf94jm3zsc"))))
        ("unzip" ,unzip)))
     (inputs
      `(("font-dejavu" ,font-dejavu)
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 85bb0ccf9b..ae6ba024e0 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -180,7 +180,7 @@ and driving.")
     (inputs
      `(("cairo" ,cairo)
        ("libpng" ,libpng)
-       ("libjepeg-turbo" ,libjpeg-turbo)
+       ("libjpeg-turbo" ,libjpeg-turbo)
        ("libtiff" ,libtiff)
        ("libgeotiff" ,libgeotiff)
        ("proj.4" ,proj.4)
diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm
index 0a6043ba65..1240b1dc16 100644
--- a/gnu/packages/ghostscript.scm
+++ b/gnu/packages/ghostscript.scm
@@ -132,6 +132,7 @@ printing, and psresize, for adjusting page sizes.")
 (define-public ghostscript
   (package
     (name "ghostscript")
+    (replacement ghostscript/fixed)
     (version "9.23")
     (source
       (origin
@@ -250,6 +251,16 @@ output file formats and printers.")
     (home-page "https://www.ghostscript.com/")
     (license license:agpl3+)))
 
+(define-public ghostscript/fixed
+  (hidden-package
+    (package
+      (inherit ghostscript)
+      (source
+        (origin
+          (inherit (package-source ghostscript))
+          (patches (append (origin-patches (package-source ghostscript))
+                           (search-patches "ghostscript-CVE-2018-10194.patch"))))))))
+
 (define-public ghostscript/x
   (package/inherit ghostscript
     (name (string-append (package-name ghostscript) "-with-x"))
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index ec3a634844..feb67318df 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;;
@@ -100,7 +100,7 @@ provided, as well as a framework to add new color models and data types.")
      `(("cairo" ,cairo)
        ("pango" ,pango)
        ("libpng" ,libpng)
-       ("libjpeg" ,libjpeg-8)))
+       ("libjpeg" ,libjpeg)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("glib" ,glib "bin")             ; for gtester
@@ -154,7 +154,7 @@ buffers.")
        ("glib" ,glib)
        ("glib-networking" ,glib-networking)
        ("libtiff" ,libtiff)
-       ("libjpeg" ,libjpeg-8)
+       ("libjpeg" ,libjpeg)
        ("atk" ,atk)
        ("gexiv2" ,gexiv2)
        ("gtk+" ,gtk+-2)
diff --git a/gnu/packages/gnu-pw-mgr.scm b/gnu/packages/gnu-pw-mgr.scm
index 0d16bf5f0b..38f9e8187a 100644
--- a/gnu/packages/gnu-pw-mgr.scm
+++ b/gnu/packages/gnu-pw-mgr.scm
@@ -30,7 +30,7 @@
 (define-public gnu-pw-mgr
   (package
     (name "gnu-pw-mgr")
-    (version "2.3.2")
+    (version "2.3.3")
     (source
      (origin
       (method url-fetch)
@@ -38,7 +38,7 @@
                           version ".tar.xz"))
       (sha256
        (base32
-        "0x60g0syqpd107l8w4bl213imy2lspm4kz1j18yr1sh10rdxlgxd"))))
+        "04xh38j7l0sfnb01kp05xc908pvqfc0lph94k7n9bi46zy3qy7ma"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 7335742e20..7a4660cc8d 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -67,14 +67,14 @@
 (define-public libextractor
   (package
    (name "libextractor")
-   (version "1.6")
+   (version "1.7")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/libextractor/libextractor-"
                                 version ".tar.gz"))
             (sha256
              (base32
-              "17gnpgspdhfgcr27j8sn9105vb4lw22yqdrhic62l79q5v5avm16"))))
+              "13wf6vj7mkv6gw8h183cnk7m24ir0gyf198pyb2148ng4klgv9p0"))))
    (build-system gnu-build-system)
    ;; WARNING: Checks require /dev/shm to be in the build chroot, especially
    ;; not to be a symbolic link to /run/shm.
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 92ce504c52..445533b0c2 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
 ;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
+;;; Copyright © 2018 Pierre Neidhardt <ambrevar@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -41,6 +42,8 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pcre)
+  #:use-module (gnu packages lua)
+  #:use-module (gnu packages mp3)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
 
@@ -1975,3 +1978,383 @@ which satisfies the cron expression.")
        "This package provides a Go library for encode and decode YAML
 values.")
       (license license:asl2.0))))
+
+(define-public go-github-com-mattn-go-isatty
+  (let ((commit "6ca4dbf54d38eea1a992b3c722a76a5d1c4cb25c")
+        (revision "0"))
+    (package
+      (name "go-github-com-mattn-go-isatty")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/mattn/go-isatty")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/mattn/go-isatty"))
+      (home-page "https://github.com/mattn/go-isatty")
+      (synopsis "Provide @code{isatty} for Golang")
+      (description "This package provides @code{isatty}, a Go module that can
+tell you whether a file descriptor points to a terminal and the type of the
+terminal.")
+      (license license:expat))))
+
+(define-public go-github-com-mattn-go-colorable
+  (let ((commit "efa589957cd060542a26d2dd7832fd6a6c6c3ade")
+        (revision "0"))
+    (package
+      (name "go-github-com-mattn-go-colorable")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/mattn/go-colorable")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0kshi4hvm0ayrsxqxy0599iv81kryhd2fn9lwjyczpj593cq069r"))))
+      (build-system go-build-system)
+      (native-inputs
+       `(("go-github-com-mattn-go-isatty"
+          ,go-github-com-mattn-go-isatty)))
+      (arguments
+       '(#:import-path "github.com/mattn/go-colorable"))
+      (home-page "https://github.com/mattn/go-colorable")
+      (synopsis "Handle ANSI color escapes on Windows")
+      (description "This package provides @code{colorable}, a module that
+makes it possible to handle ANSI color escapes on Windows.")
+      (license license:expat))))
+
+(define-public go-github-com-mgutz-ansi
+  (let ((commit "9520e82c474b0a04dd04f8a40959027271bab992")
+        (revision "0"))
+    (package
+      (name "go-github-com-mgutz-ansi")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url
+                "https://github.com/mgutz/ansi")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "00bz22314j26736w1f0q4jy9d9dfaml17vn890n5zqy3cmvmww1j"))))
+      (build-system go-build-system)
+      (native-inputs
+       `(("go-github-com-mattn-go-isatty"
+          ,go-github-com-mattn-go-isatty)
+         ("go-github-com-mattn-go-colorable"
+          ,go-github-com-mattn-go-colorable)))
+      (arguments
+       '(#:import-path "github.com/mgutz/ansi"))
+      (home-page "https://github.com/mgutz/ansi")
+      (synopsis "Small, fast library to create ANSI colored strings and codes")
+      (description "This package provides @code{ansi}, a Go module that can
+generate ANSI colored strings.")
+      (license license:expat))))
+
+(define-public go-github-com-aarzilli-golua
+  (let ((commit "03fc4642d792b1f2bc5e7343b403cf490f8c501d")
+        (revision "0"))
+    (package
+      (name "go-github-com-aarzilli-golua")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url
+                "https://github.com/aarzilli/golua")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1d9hr29i36cza98afj3g6rs3l7xbkprwzz0blcxsr9dd7nak20di"))))
+      (build-system go-build-system)
+      (native-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))))))
+      (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
+run a Lua virtual machine.")
+      (license license:expat))))
+
+(define-public go-gitlab-com-ambrevar-golua-unicode
+  (let ((commit "97ce517e7a1fe2407a90c317a9c74b173d396144")
+        (revision "0"))
+    (package
+      (name "go-gitlab-com-ambrevar-golua-unicode")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url
+                "https://gitlab.com/ambrevar/golua")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1izcp7p8nagjwqd13shb0020w7xhppib1a3glw2d1468bflhksnm"))))
+      (build-system go-build-system)
+      (native-inputs
+       `(("lua" ,lua)
+         ("go-github-com-aarzilli-golua" ,go-github-com-aarzilli-golua)))
+      (arguments
+       `(#:unpack-path "gitlab.com/ambrevar/golua"
+         #:import-path "gitlab.com/ambrevar/golua/unicode"
+         #:phases
+         (modify-phases %standard-phases
+           (replace 'check
+             (lambda* (#:key import-path #:allow-other-keys)
+               (setenv "USER" "homeless-dude")
+               (invoke "go" "test" import-path))))))
+      (home-page "https://gitlab.com/ambrevar/golua")
+      (synopsis "Add Unicode support to Golua")
+      (description "This extension to Arzilli's Golua adds Unicode support to
+all functions from the Lua string library.  Lua patterns are replaced by Go
+regexps.  This breaks compatibility with Lua, but Unicode support breaks it
+anyways and Go regexps are more powerful.")
+      (license license:expat))))
+
+(define-public go-github-com-yookoala-realpath
+  (let ((commit "d19ef9c409d9817c1e685775e53d361b03eabbc8")
+        (revision "0"))
+    (package
+      (name "go-github-com-yookoala-realpath")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url
+                "https://github.com/yookoala/realpath")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0qvz1dcdldf53rq69fli76z5k1vr7prx9ds1d5rpzgs68kwn40nw"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/yookoala/realpath"))
+      (home-page "https://github.com/yookoala/realpath")
+      (synopsis "@code{realpath} for Golang")
+      (description "This package provides @code{realpath}, a Go module that
+when provided with a valid relative path / alias path, it will return you with
+a string of its real absolute path in the system.")
+      (license license:expat))))
+
+(define-public go-gitlab-com-ambrevar-damerau
+  (let ((commit "883829e1f25fad54015772ea663e69017cf22352")
+        (revision "0"))
+    (package
+      (name "go-gitlab-com-ambrevar-damerau")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url
+                "https://gitlab.com/ambrevar/damerau")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1b9p8fypc914ij1afn6ir346zsgfqrc5mqc1k3d53n4snypq27qv"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "gitlab.com/ambrevar/damerau"))
+      (home-page "https://gitlab.com/ambrevar/damerau")
+      (synopsis "Damerau-Levenshtein distance for Golang")
+      (description "This is a spelling corrector implementing the
+Damerau-Levenshtein distance.  Takes a string value input from the user.
+Looks for an identical word on a list of words, if none is found, look for a
+similar word.")
+      (license license:expat))))
+
+(define-public go-github-com-stevedonovan-luar
+  (let ((commit "22d247e5366095f491cd83edf779ee99a78f5ead")
+        (revision "0"))
+    (package
+      (name "go-github-com-stevedonovan-luar")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url
+                "https://github.com/stevedonovan/luar")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1acjgw9cz1l0l9mzkyk7irz6cfk31wnxgbwa805fvm1rqcjzin2c"))))
+      (build-system go-build-system)
+      (native-inputs
+       `(("go-github-com-aarzilli-golua" ,go-github-com-aarzilli-golua)))
+      (arguments
+       `(#:tests? #f                    ; Upstream tests are broken.
+         #:import-path "github.com/stevedonovan/luar"))
+      (home-page "https://github.com/stevedonovan/luar")
+      (synopsis "Lua reflection bindings for Go")
+      (description "Luar is designed to make using Lua from Go more
+convenient.  Go structs, slices and maps can be automatically converted to Lua
+tables and vice-versa.  The resulting conversion can either be a copy or a
+proxy.  In the latter case, any change made to the result will reflect on the
+source.
+
+Any Go function can be made available to Lua scripts, without having to write
+C-style wrappers.
+
+Luar support cyclic structures (lists, etc.).
+
+User-defined types can be made available to Lua as well: their exported
+methods can be called and usual operations such as indexing or arithmetic can
+be performed.")
+      (license license:expat))))
+
+(define-public go-github-com-kr-text
+  (let ((commit "e2ffdb16a802fe2bb95e2e35ff34f0e53aeef34f")
+        (revision "0"))
+    (package
+      (name "go-github-com-kr-text")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url
+                "https://github.com/kr/text")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "github.com/kr/text"))
+      (home-page "https://github.com/kr/text")
+      (synopsis "Go package for manipulating paragraphs of text")
+      (description "Package @code{text} provides manipulation Go functions for
+paragraphs of text.")
+      (license license:expat))))
+
+(define-public go-github-com-michiwend-golang-pretty
+  (let ((commit "8ac61812ea3fa540f3f141a444fcb0dd713cdca4")
+        (revision "0"))
+    (package
+      (name "go-github-com-michiwend-golang-pretty")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url
+                "https://github.com/michiwend/golang-pretty")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0rjfms0csjqi91xnddzx3rcrcaikc7xc027617px3kdwdap80ir4"))))
+      (build-system go-build-system)
+      (native-inputs
+       `(("go-github-com-kr-text" ,go-github-com-kr-text)))
+      (arguments
+       `(#:tests? #f                    ; Upstream tests seem to be broken.
+         #:import-path "github.com/michiwend/golang-pretty"))
+      (home-page "https://github.com/michiwend/golang-pretty")
+      (synopsis "Pretty printing for Go values")
+      (description "Package @code{pretty} provides pretty-printing for Go
+values.  This is useful during debugging, to avoid wrapping long output lines
+in the terminal.
+
+It provides a function, @code{Formatter}, that can be used with any function
+that accepts a format string.  It also provides convenience wrappers for
+functions in packages @code{fmt} and @code{log}.")
+      (license license:expat))))
+
+(define-public go-github-com-michiwend-gomusicbrainz
+  (let ((commit "0cdeb13f9b24d2c714feb7e3c63d595cf7121d7d")
+        (revision "0"))
+    (package
+      (name "go-github-com-michiwend-gomusicbrainz")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url
+                "https://github.com/michiwend/gomusicbrainz")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1li9daw0kghb80rdmxbh7g72qhxcvx3rvhwq5gs0jrr9hb8pjvcn"))))
+      (build-system go-build-system)
+      (native-inputs
+       `(("go-github-com-michiwend-golang-pretty" ,go-github-com-michiwend-golang-pretty)
+         ("go-github-com-kr-text" ,go-github-com-kr-text)))
+      (arguments
+       `(#:import-path "github.com/michiwend/gomusicbrainz"))
+      (home-page "https://github.com/michiwend/gomusicbrainz")
+      (synopsis "MusicBrainz WS2 client library for Golang")
+      (description "Currently GoMusicBrainz provides methods to perform search
+and lookup requests.  Browse requests are not supported yet.")
+      (license license:expat))))
+
+(define-public go-github-com-wtolson-go-taglib
+  (let ((commit "6e68349ff94ecea412de7e748cb5eaa26f472777")
+        (revision "0"))
+    (package
+      (name "go-github-com-wtolson-go-taglib")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url
+                "https://github.com/wtolson/go-taglib")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1cpjqnrviwflz150g78iir5ndrp3hh7a93zbp4dwbg6sb2q141p2"))))
+      (build-system go-build-system)
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("taglib" ,taglib)))
+      (arguments
+       `(#:import-path "github.com/wtolson/go-taglib"))
+      (home-page "https://github.com/wtolson/go-taglib")
+      (synopsis "Go wrapper for taglib")
+      (description "Go wrapper for taglib")
+      (license license:unlicense))))
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 65f023a488..ad5ff8ed1e 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;; Copyright © 2017, 2018 Ben Woodcroft <donttrustben@gmail.com>
@@ -161,19 +161,20 @@ application can be customized via its API for Python scripting.")
 (define-public assimp
   (package
     (name "assimp")
-    (version "3.3.1")
+    (version "4.1.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/assimp/assimp/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/assimp/assimp.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1gy7zlgkf4nmyv8n674p3f30asis0gjz8icyy11i693n13ww71fk"))))
+                "1rhyqfhzifdj7yibyanph3rh13ykw3i98dnn8mz65j780472hw28"))))
     (build-system cmake-build-system)
     (inputs
      `(("zlib" ,zlib)))
-    (home-page "http://assimp.org/")
+    (home-page "http://www.assimp.org/")
     (synopsis "Asset import library")
     (description
      "The Open Asset Import Library loads more than 40 3D file formats into
@@ -373,13 +374,14 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
     (name "openimageio")
     (version "1.7.19")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/OpenImageIO/oiio/"
-                                  "archive/Release-" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/OpenImageIO/oiio.git")
+                    (commit (string-append "Release-" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1qlmfhvl2wva4aifyiq7c4sdy61ddl7wykwvlpfys9p701xghvj7"))))
+                "0yxxy43l3lllw7maqg42dlkgqms2d4772sxzxk7kmxg4lnhsvndc"))))
     (build-system cmake-build-system)
     ;; FIXME: To run all tests successfully, test image sets from multiple
     ;; third party sources have to be present.  For details see
@@ -390,7 +392,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
     (inputs
      `(("boost" ,boost)
        ("libpng" ,libpng)
-       ("libjpeg" ,libjpeg-8)
+       ("libjpeg" ,libjpeg)
        ("libtiff" ,libtiff)
        ("giflib" ,giflib)
        ("openexr" ,openexr)
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 62d292264e..f179f293ea 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -74,6 +74,7 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system guile)
   #:use-module (guix build-system trivial)
   #:use-module (guix utils)
   #:use-module (ice-9 match)
@@ -965,60 +966,8 @@ specification.  These are the main features:
               (sha256
                (base32
                 "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6"))))
-    (build-system trivial-build-system)
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils)
-                      (ice-9 match)
-                      (ice-9 popen)
-                      (ice-9 rdelim))
-
-         (let* ((out (assoc-ref %outputs "out"))
-                (guile (assoc-ref %build-inputs "guile"))
-                (effective (read-line
-                            (open-pipe* OPEN_READ
-                                        (string-append guile "/bin/guile")
-                                        "-c" "(display (effective-version))")))
-                (module-dir (string-append out "/share/guile/site/"
-                                           effective))
-                (source (assoc-ref %build-inputs "source"))
-                (doc (string-append out "/share/doc/guile-minikanren"))
-                (scm-files '("minikanren.scm"
-                             "minikanren/mkextraforms.scm"
-                             "minikanren/mkprelude.scm"
-                             "minikanren/mk.scm"))
-                (guild (string-append (assoc-ref %build-inputs "guile")
-                                      "/bin/guild")))
-           ;; Make installation directories.
-           (mkdir-p (string-append module-dir "/minikanren"))
-           (mkdir-p doc)
-
-           ;; Compile .scm files and install.
-           (chdir source)
-           (setenv "GUILE_AUTO_COMPILE" "0")
-           (for-each (lambda (file)
-                       (let* ((dest-file (string-append module-dir "/"
-                                                        file))
-                              (go-file (match (string-split file #\.)
-                                         ((base _)
-                                          (string-append module-dir "/"
-                                                         base ".go")))))
-                         ;; Install source module.
-                         (copy-file file dest-file)
-                         ;; Install compiled module.
-                         (invoke guild "compile"
-                                 "-L" source
-                                 "-o" go-file
-                                 file)))
-                     scm-files)
-
-           ;; Also copy over the README.
-           (install-file "README.org" doc)
-
-           #t))))
-    (inputs
+    (build-system guile-build-system)
+    (native-inputs
      `(("guile" ,guile-2.2)))
     (home-page "https://github.com/ijp/minikanren")
     (synopsis "MiniKanren declarative logic system, packaged for Guile")
@@ -1055,46 +1004,8 @@ See http://minikanren.org/ for more on miniKanren generally.")
                 (sha256
                  (base32
                   "09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:modules ((guix build utils)
-                    (ice-9 popen)
-                    (ice-9 rdelim)
-                    (srfi srfi-1)
-                    (guix build gnu-build-system))
-         #:tests? #f                    ; there is no test target
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (delete 'build)
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((cwd        (getcwd))
-                      (scm-files  (find-files "." "\\.scm$"))
-                      (effective  (read-line
-                                   (open-pipe* OPEN_READ
-                                               "guile" "-c"
-                                               "(display (effective-version))")))
-                      (module-dir (string-append (assoc-ref outputs "out")
-                                                 "/share/guile/site/"
-                                                 effective)))
-
-                 ;; Make installation directories.
-                 (mkdir-p module-dir)
-
-                 (setenv "GUILE_AUTO_COMPILE" "0")
-
-                 ;; Compile .scm files and install.
-                 (every (lambda (file)
-                          (let ((go-file (string-append module-dir "/"
-                                                        (basename file ".scm") ".go")))
-                            ;; Install source module.
-                            (install-file file module-dir)
-                            ;; Compile and install module.
-                            (zero? (system* "guild" "compile" "-L" cwd
-                                            "-o" go-file file))))
-                        scm-files)))))))
-      (inputs
+      (build-system guile-build-system)
+      (native-inputs
        `(("guile" ,guile-2.2)))
       (home-page "https://github.com/fisherdj/miniAdapton")
       (synopsis "Minimal implementation of incremental computation in Guile
@@ -1120,65 +1031,25 @@ understand, extend, and port to host languages other than Scheme.")
               (sha256
                (base32
                 "1ia3m7dp3lcxa048q0gqbiwwsyvn99baw6xkhb4bhhzn4k7bwyqq"))))
-    (build-system gnu-build-system)
+    (build-system guile-build-system)
     (arguments
-     `(#:modules ((guix build utils)
-                  (ice-9 match)
-                  (ice-9 rdelim)
-                  (ice-9 popen)
-                  (guix build gnu-build-system))
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build)
-         (delete 'check)
-         (replace 'install
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (effective (read-line
-                                (open-pipe* OPEN_READ
-                                            "guile" "-c"
-                                            "(display (effective-version))")))
-                    (module-dir (string-append out "/share/guile/site/"
-                                               effective))
-                    (source (assoc-ref inputs "source"))
-                    (doc (string-append out "/share/doc/guile-irregex/"))
-                    (guild (string-append (assoc-ref %build-inputs "guile")
-                                          "/bin/guild")))
-               ;; Make installation directories.
-               (mkdir-p (string-append module-dir "/rx/source"))
-               (mkdir-p doc)
-
-               ;; Compile .scm files and install.
-               (setenv "GUILE_AUTO_COMPILE" "0")
-
-               (for-each (lambda (copy-info)
-                           (match copy-info
-                             ((src-file dest-file-basis)
-                              (let* ((dest-file (string-append
-                                                 module-dir dest-file-basis
-                                                 ".scm"))
-                                     (go-file (string-append
-                                               module-dir dest-file-basis
-                                               ".go")))
-                                ;; Install source module.
-                                (copy-file src-file
-                                           dest-file)
-                                ;; Install compiled module.
-                                (invoke guild "compile"
-                                        "-L" (getcwd)
-                                        "-o" go-file
-                                        src-file)))))
-                         '(("irregex-guile.scm" "/rx/irregex")
-                           ("irregex.scm" "/rx/source/irregex")
-                           ;; Not really reachable via guile's packaging system,
-                           ;; but nice to have around
-                           ("irregex-utils.scm" "/rx/source/irregex-utils")))
-
-               ;; Also copy over the README.
-               (install-file "irregex.html" doc)
-               #t))))))
-    (inputs
+     '(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'move-files-around
+                    (lambda _
+                      ;; Move the relevant source files to src/ and create the
+                      ;; rx/ directory to match the expected module hierarchy.
+                      (mkdir-p "src/rx/source")
+                      (rename-file "irregex-guile.scm"
+                                   "src/rx/irregex.scm")
+                      (rename-file "irregex.scm"
+                                   "src/rx/source/irregex.scm")
+                      ;; Not really reachable via guile's packaging system,
+                      ;; but nice to have around.
+                      (rename-file "irregex-utils.scm"
+                                   "src/rx/source/irregex-utils.scm")
+                      #t)))
+       #:source-directory "src"))
+    (native-inputs
      `(("guile" ,guile-2.2)))
     (home-page "http://synthcode.com/scheme/irregex")
     (synopsis "S-expression based regular expressions")
@@ -1207,83 +1078,35 @@ inspired by the SCSH regular expression system.")
                     (url "https://github.com/ijp/guile-gdbm.git")
                     (commit "fa1d5b6231d0e4d096687b378c025f2148c5f246")))
               (file-name (string-append name "-" version "-checkout"))
+              (patches (search-patches
+                        "guile-gdbm-ffi-support-gdbm-1.14.patch"))
               (sha256
                (base32
                 "1j8wrsw7v9w6qkl47xz0rdikg50v16nn6kbs3lgzcymjzpa7babj"))))
-    (build-system trivial-build-system)
+    (build-system guile-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'move-examples
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; Move examples where they belong.
+                      (let* ((out (assoc-ref outputs "out"))
+                             (doc (string-append out "/share/doc/"
+                                                 (strip-store-file-name out)
+                                                 "/examples")))
+                        (copy-recursively "examples" doc)
+                        (delete-file-recursively "examples")
+                        #t)))
+                  (add-after 'unpack 'set-libgdbm-file-name
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (substitute* "gdbm.scm"
+                        (("\\(dynamic-link \"libgdbm\"\\)")
+                         (format #f "(dynamic-link \"~a/lib/libgdbm.so\")"
+                                 (assoc-ref inputs "gdbm"))))
+                      #t)))))
+    (native-inputs
+     `(("guile" ,guile-2.2)))
     (inputs
-     `(("guile" ,guile-2.2)
-       ;; patch-and-repack doesn't work for git checkouts,
-       ;; so we must apply the patch manually.
-       ("patch" ,patch)
-       ("patch-file" ,(search-patch
-                       "guile-gdbm-ffi-support-gdbm-1.14.patch"))))
-    (propagated-inputs
      `(("gdbm" ,gdbm)))
-    (arguments
-     `(#:modules
-       ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils)
-                      (ice-9 rdelim)
-                      (ice-9 popen))
-
-         ;; Avoid warnings we can safely ignore
-         (setenv "GUILE_AUTO_COMPILE" "0")
-
-         (let* ((out (assoc-ref %outputs "out"))
-                (effective-version
-                 (read-line
-                  (open-pipe* OPEN_READ
-                              (string-append
-                               (assoc-ref %build-inputs "guile")
-                               "/bin/guile")
-                              "-c" "(display (effective-version))")))
-                (module-dir (string-append out "/share/guile/site/"
-                                           effective-version))
-                (source (assoc-ref %build-inputs "source"))
-                (doc (string-append out "/share/doc"))
-                (guild (string-append (assoc-ref %build-inputs "guile")
-                                      "/bin/guild"))
-                (gdbm.scm-dest
-                 (string-append module-dir "/gdbm.scm"))
-                (gdbm.go-dest
-                 (string-append module-dir "/gdbm.go"))
-                (compile-file
-                 (lambda (in-file out-file)
-                   (invoke guild "compile" "-o" out-file in-file))))
-           ;; Switch directory for compiling and installing
-           (chdir source)
-
-           ;; Install the documentation.
-           (install-file "README.md" doc)
-           (copy-recursively "examples" (string-append doc "/examples"))
-
-           ;; Make installation directories.
-           (mkdir-p module-dir)
-
-           ;; copy the source
-           (copy-file "gdbm.scm" gdbm.scm-dest)
-
-           ;; Patch the FFI
-           (substitute* gdbm.scm-dest
-             (("\\(dynamic-link \"libgdbm\"\\)")
-              (format #f "(dynamic-link \"~a/lib/libgdbm.so\")"
-                      (assoc-ref %build-inputs "gdbm"))))
-
-           ;; Apply the patch to add support for gdbm-1.14.
-           (let ((patch-command (string-append (assoc-ref %build-inputs "patch")
-                                               "/bin/patch"))
-                 (patch-file (assoc-ref %build-inputs "patch-file")))
-             (with-directory-excursion (dirname gdbm.scm-dest)
-               (format #t "applying '~a'...~%" patch-file)
-               (invoke patch-command "--force" "--input" patch-file)))
-
-           ;; compile to the destination
-           (compile-file gdbm.scm-dest gdbm.go-dest)
-
-           #t))))
     (home-page "https://github.com/ijp/guile-gdbm")
     (synopsis "Guile bindings to the GDBM library via Guile's FFI")
     (description
@@ -2142,32 +1965,8 @@ It has a nice, simple s-expression based syntax.")
               (sha256
                (base32
                 "16xhc3an6aglnca8xl3mvgi8hsqzqn68vsl5ga4bz8bvbap5fn4p"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:modules ((system base compile)
-                  ,@%gnu-build-system-modules)
-       #:tests? #f ;No tests included
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure) ;No configure script
-         (replace 'install
-           (lambda* (#:key outputs inputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (module-dir (string-append out "/share/guile/site/2.2"))
-                    (language-dir (string-append module-dir "/ice-9"))
-                    (guild (string-append (assoc-ref inputs "guile")
-                                          "/bin/guild")))
-               ;; The original 'make install' is too primitive.
-
-               ;; copy the source
-               (install-file "ice-9/colorized.scm" language-dir)
-
-               ;; compile to the destination
-               (compile-file "ice-9/colorized.scm"
-                             #:output-file (string-append
-                                            language-dir "/colorized.go"))
-               #t))))))
-    (inputs
+    (build-system guile-build-system)
+    (native-inputs
      `(("guile" ,guile-2.2)))
     (home-page "https://github.com/NalaGinrut/guile-colorized")
     (synopsis "Colorized REPL for Guile")
@@ -2175,6 +1974,78 @@ It has a nice, simple s-expression based syntax.")
      "Guile-colorized provides you with a colorized REPL for GNU Guile.")
     (license license:gpl3+)))
 
+(define-public guile-pfds
+  (package
+    (name "guile-pfds")
+    (version "0.3")
+    (home-page "https://github.com/ijp/pfds")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh"))
+              (file-name (string-append name "-" version "-checkout"))))
+    (build-system guile-build-system)
+    (arguments
+     '(#:source-directory "src"
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'move-files-around
+                    (lambda _
+                      ;; Move files under a pfds/ directory to reflect the
+                      ;; module hierarchy.
+                      (mkdir-p "src/pfds")
+                      (for-each (lambda (file)
+                                  (rename-file file
+                                               (string-append "src/pfds/"
+                                                              file)))
+                                '("bbtrees.sls"
+                                  "deques"
+                                  "deques.sls"
+                                  "dlists.sls"
+                                  "fingertrees.sls"
+                                  "hamts.sls"
+                                  "heaps.sls"
+                                  "private"
+                                  "psqs.sls"
+                                  "queues"
+                                  "queues.sls"
+                                  "sequences.sls"
+                                  "sets.sls"))
+
+                      ;; In Guile <= 2.2.4, there's no way to tell 'guild
+                      ;; compile' to accept the ".sls" extension.  So...
+                      (for-each (lambda (file)
+                                  (rename-file file
+                                               (string-append
+                                                (string-drop-right file 4)
+                                                ".scm")))
+                                (find-files "." "\\.sls$"))
+                      #t)))))
+    (native-inputs
+     `(("guile" ,guile-2.2)))
+    (synopsis "Purely functional data structures for Guile")
+    (description
+     "This package provides purely functional data structures written in R6RS
+Scheme and compiled for Guile.  It has been tested with Racket, Guile 2,
+Vicare Scheme and IronScheme.  Right now it contains:
+
+@itemize
+@item queues
+@item deques
+@item bbtrees
+@item sets
+@item dlists
+@item priority search queues (PSQs)
+@item finger trees
+@item sequences
+@item heaps
+@item hash array mapped tries (HAMTs).
+@end itemize\n")
+    (license license:bsd-3)))
+
 (define-public guile-simple-zmq
   (let ((commit "1f3b7c0b9b249c6fde8e8a632b252d8a1b794424")
         (revision "1"))
@@ -2191,72 +2062,20 @@ It has a nice, simple s-expression based syntax.")
           (base32
            "0nj2pd5bsmmgd3c54wh4sixfhmsv1arsq7yam2d7487h3n9q57r7"))
          (file-name (git-file-name name version))))
-      (build-system trivial-build-system)
+      (build-system guile-build-system)
       (arguments
-       `(#:modules ((guix build utils))
-         #:builder
-         (begin
-           (use-modules (guix build utils)
-                        (srfi srfi-26)
-                        (ice-9 match)
-                        (ice-9 popen)
-                        (ice-9 rdelim))
-
-           (let* ((out (assoc-ref %outputs "out"))
-                  (guile (assoc-ref %build-inputs "guile"))
-                  (effective (read-line
-                              (open-pipe* OPEN_READ
-                                          (string-append guile "/bin/guile")
-                                          "-c" "(display (effective-version))")))
-                  (module-dir (string-append out "/share/guile/site/"
-                                             effective))
-                  (go-dir     (string-append out "/lib/guile/"
-                                             effective "/site-ccache/"))
-                  (source     (string-append (assoc-ref %build-inputs "source")
-                                             "/src"))
-                  (scm-file "simple-zmq.scm")
-                  (guild (string-append (assoc-ref %build-inputs "guile")
-                                        "/bin/guild"))
-                  (zmq  (assoc-ref %build-inputs "zeromq"))
-                  (deps (list zmq))
-                  (path (string-join
-                         (map (cut string-append <>
-                                   "/lib/")
-                              deps)
-                         ":")))
-             ;; Make installation directories.
-             (mkdir-p module-dir)
-             (mkdir-p go-dir)
-
-             ;; Compile .scm files and install.
-             (chdir source)
-             (setenv "GUILE_AUTO_COMPILE" "0")
-             (for-each (lambda (file)
-                         (let* ((dest-file (string-append module-dir "/"
-                                                          file))
-                                (go-file (match (string-split file #\.)
-                                           ((base _)
-                                            (string-append go-dir "/"
-                                                           base ".go")))))
-                           ;; Install source module.
-                           (copy-file file dest-file)
-                           (substitute* dest-file
-                             (("\\(dynamic-link \"libzmq\"\\)")
-                              (format #f "(dynamic-link \"~a/lib/libzmq.so\")"
-                                      (assoc-ref %build-inputs "zeromq"))))
-
-                           ;; Install and compile module.
-                           (unless (zero? (system* guild "compile"
-                                                   "-L" source
-                                                   "-o" go-file
-                                                   dest-file))
-                             (error (format #f "Failed to compile ~s to ~s!"
-                                            file go-file)))))
-                       (list scm-file))
-             #t))))
-      (inputs
+       `(#:source-directory "src"
+         #:phases (modify-phases %standard-phases
+                    (add-after 'unpack 'set-libzmq-file-name
+                      (lambda* (#:key inputs #:allow-other-keys)
+                        (substitute* "src/simple-zmq.scm"
+                          (("\\(dynamic-link \"libzmq\"\\)")
+                           (format #f "(dynamic-link \"~a/lib/libzmq.so\")"
+                                   (assoc-ref inputs "zeromq"))))
+                        #t)))))
+      (native-inputs
        `(("guile" ,guile-2.2)))
-      (propagated-inputs
+      (inputs
        `(("zeromq" ,zeromq)))
       (home-page "https://github.com/jerry40/guile-simple-zmq")
       (synopsis "Guile wrapper over ZeroMQ library")
@@ -2280,106 +2099,46 @@ messaging library.")
          (sha256
           (base32
            "0y5jr0f0dyskvsawqbf6n0bpg8jirw4mhqbarf2a6p9lxhqha9s9"))))
-      (build-system trivial-build-system)
+      (build-system guile-build-system)
       (arguments
-       `(#:modules ((guix build utils))
-         #:builder
-         (begin
-           (use-modules (guix build utils)
-                        (srfi srfi-26)
-                        (ice-9 match)
-                        (ice-9 popen)
-                        (ice-9 rdelim))
-
-           (let* ((out (assoc-ref %outputs "out"))
-                  (guile (assoc-ref %build-inputs "guile"))
-                  (effective (read-line
-                              (open-pipe* OPEN_READ
-                                          (string-append guile "/bin/guile")
-                                          "-c" "(display (effective-version))")))
-                  (module-dir (string-append out "/share/guile/site/"
-                                             effective))
-                  (kernel-dir (string-append out "/share/jupyter/kernels/guile"))
-                  (go-dir     (string-append out "/lib/guile/"
-                                             effective
-                                             "/site-ccache"))
-                  (source     (string-append (assoc-ref %build-inputs "source")
-                                             "/src"))
-                  (scm-files '("hmac.scm"
-                               "tools.scm"
-                               "guile-jupyter-kernel.scm"))
-                  (kernel-file "kernel.json")
-                  (guild  (string-append (assoc-ref %build-inputs "guile")
-                                         "/bin/guild"))
-                  (g-szmq (assoc-ref %build-inputs "guile-simple-zmq"))
-                  (json   (assoc-ref %build-inputs "guile-json"))
-                  (deps   (list g-szmq json))
-                  (path   (string-join
-                           (map (cut string-append <>
-                                     "/share/guile/site/"
-                                     effective)
-                                deps)
-                           ":"))
-                  (gopath (string-join
-                           (map (cut string-append <>
-                                     "/lib/guile/" effective
-                                     "/site-ccache/")
-                                deps)
-                           ":")))
-
-             ;; Make installation directories.
-             (mkdir-p module-dir)
-             (mkdir-p kernel-dir)
-             (mkdir-p go-dir)
-
-             ;; Make a writable copy of SOURCE.
-             (copy-recursively source ".")
-
-             ;; Record the absolute file name of the 'openssl' command.
-             (substitute* "hmac.scm"
-               (("openssl")
-                (string-append (assoc-ref %build-inputs "openssl")
-                               "/bin/openssl")))
-
-             ;; Compile .scm files and install.
-             (setenv "GUILE_AUTO_COMPILE" "0")
-             (setenv "GUILE_LOAD_PATH" path)
-             (setenv "GUILE_LOAD_COMPILED_PATH" gopath)
-
-             (for-each (lambda (file)
-                         (let* ((dest-file (string-append module-dir "/"
-                                                          file))
-                                (go-file (match (string-split file #\.)
-                                           ((base _)
-                                            (string-append go-dir "/"
-                                                           base ".go")))))
-                           ;; Install source module.
-                           (copy-file file dest-file)
-
-                           ;; Install compiled module.
-                           (unless (zero? (system* guild "compile"
-                                                   "-L" source
-                                                   "-o" go-file
-                                                   file))
-                             (error (format #f "Failed to compile ~s to ~s!"
-                                            file go-file)))))
-                       scm-files)
-
-             ;; Install kernel
-             (copy-file kernel-file (string-append kernel-dir "/"
-                                                   kernel-file))
-             ;; Fix hard-coded file name in the kernel
-             (substitute* (string-append kernel-dir "/"
-                                         kernel-file)
-               (("/home/jerry/.local/share/jupyter/kernels/guile/guile-jupyter-kernel.scm")
-                (string-append module-dir "/guile-jupyter-kernel.scm"))
-               (("\"guile\"")
-                (string-append "\"" (assoc-ref %build-inputs "guile")
-                               "/bin/guile\""))
-               (("-s")
-                (string-append "--no-auto-compile\", \"-s")))
-
-             #t))))
+       '(#:phases (modify-phases %standard-phases
+                    (add-after 'unpack 'set-openssl-file-name
+                      (lambda* (#:key inputs #:allow-other-keys)
+                        ;; Record the absolute file name of the 'openssl'
+                        ;; command.
+                        (substitute* "src/hmac.scm"
+                          (("openssl")
+                           (string-append (assoc-ref inputs "openssl")
+                                          "/bin/openssl")))
+                        #t))
+
+                    ;; XXX: The code uses 'include' to include its own source
+                    ;; files, and "-L src" isn't enough in this case.
+                    (add-before 'build 'chdir
+                      (lambda _ (chdir "src") #t))
+                    (add-after 'build 'chdir-back
+                      (lambda _ (chdir "..") #t))
+
+                    (add-after 'install 'install-kernel
+                      (lambda* (#:key inputs outputs #:allow-other-keys)
+                        (let* ((out (assoc-ref outputs "out"))
+                               (dir (string-append
+                                     out "/share/jupyter/kernels/guile")))
+                          ;; Install kernel.
+                          (install-file "src/kernel.json" dir)
+
+                          ;; Fix hard-coded file name in the kernel.
+                          (substitute* (string-append dir "/kernel.json")
+                            (("/home/.*/guile-jupyter-kernel.scm")
+                             (string-append out "/share/guile/site/"
+                                            (target-guile-effective-version)
+                                            "/guile-jupyter-kernel.scm"))
+                            (("\"guile\"")
+                             (string-append "\"" (assoc-ref inputs "guile")
+                                            "/bin/guile\""))
+                            (("-s")
+                             (string-append "--no-auto-compile\", \"-s")))
+                          #t))))))
       (inputs
        `(("openssl" ,openssl)
          ("guile" ,guile-2.2)))
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index b2e67e52f9..3410880a67 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.27")
+    (version "2.27.1")
     (home-page "https://feh.finalrewind.org/")
     (source (origin
               (method url-fetch)
@@ -68,7 +68,7 @@
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0kn6cka9m76697i495npd60ad64jnfnzv5z6znzyr0vlxx2nhcmg"))))
+                "10zk76l491s22qrv86rax6cvpgwyl3qq0izl2pbk0k1z1kw3ihvf"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases (delete 'configure))
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index a7d5c9f445..2ba6d76cae 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2537,6 +2537,37 @@ ClasspathX project.  It provides implementations of version 3.0 of the servlet
 API and version 2.1 of the Java ServerPages API.")
     (license license:gpl3+)))
 
+(define-public java-javaee-servletapi
+  (package
+    (name "java-javaee-servletapi")
+    (version "3.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/javaee/servlet-spec/"
+                                  "archive/" version ".zip"))
+              (file-name (string-append name "-" version ".zip"))
+              (sha256
+               (base32
+                "0m6p13vgfb1ihich1jp5j6fqlhkjsrkn32c86bsbkryp38ipwg8w"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "javax-servletapi.jar"
+       ;; no tests
+       #:tests? #f
+       #:source-dir "src/main/java"))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (home-page "https://javaee.github.io/servlet-spec/")
+    (synopsis "Java servlet API")
+    (description "Java Servlet is the foundation web specification in the
+Java Enterprise Platform.  Developers can build web applications using the
+Servlet API to interact with the request/response workflow.  This project
+provides information on the continued development of the Java Servlet
+specification.")
+    ;; Main code is dual-licensed by Oracle under either GLP2 or CDDL 1.1.
+    ;; Some files are licensed under ASL 2.0.
+    (license (list license:asl2.0 license:gpl2 license:cddl1.1))))
+
 (define-public java-swt
   (package
     (name "java-swt")
@@ -4449,7 +4480,7 @@ these scripting language engines.")
        #:tests? #f
        #:source-dir "src/java"))
     (inputs
-     `(("java-tomcat" ,java-tomcat)
+     `(("servlet" ,java-classpathx-servletapi)
        ("java-jdom" ,java-jdom)
        ("java-commons-beanutils" ,java-commons-beanutils)))
     (native-inputs
@@ -7908,6 +7939,10 @@ the dependency is said to be unsatisfied, and the application is broken.")
               (uri (string-append "https://github.com/google/guice/archive/"
                                   version ".tar.gz"))
               (file-name (string-append name "-" version ".tar.gz"))
+              (modules '((guix build utils)))
+              (snippet
+               `(begin
+                  (for-each delete-file (find-files "." ".*.jar"))))
               (sha256
                (base32
                 "0dwmqjzlavb144ywqqglj3h68hqszkff8ai0a42hyb5il0qh4rbp"))))
@@ -7940,7 +7975,7 @@ Java 6 and above.")
        #:tests? #f)); FIXME: not in a java subdir
     (inputs
      `(("guice" ,java-guice)
-       ("servlet" ,java-tomcat)
+       ("servlet"  ,java-classpathx-servletapi)
        ,@(package-inputs java-guice)))))
 
 (define-public java-assertj
@@ -8425,15 +8460,15 @@ algorithms and xxHash hashing algorithm.")
 (define-public java-bouncycastle
   (package
     (name "java-bouncycastle")
-    (version "1.59")
+    (version "1.60")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/bcgit/bc-java/archive/r"
-                                  (substring version 0 1) "rv"
+                                  (substring version 0 1) "v"
                                   (substring version 2 4) ".tar.gz"))
               (sha256
                (base32
-                "1bwl499whlbq896w18idqw2dkp8v0wp0npv9g71i5fgf8xjh0k3q"))
+                "0v434513y708qc87k4xz13p2kzydc736lk3ks67df9mg11s7hchv"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -10109,7 +10144,7 @@ and reporting) project dependencies.  It is characterized by the following:
      `(("java-guice" ,java-guice)
        ("java-guice-servlet" ,java-guice-servlet)
        ("java-javax-inject" ,java-javax-inject)
-       ("java-tomcat" ,java-tomcat)
+       ("java-javaee-servletapi" ,java-javaee-servletapi)
        ("java-junit" ,java-junit)
        ("java-slf4j-api" ,java-slf4j-api)
        ("java-jsr305" ,java-jsr305)
@@ -10273,6 +10308,7 @@ static code analysis or code manipulation.")))
               (method url-fetch)
               (uri (string-append "https://github.com/qos-ch/logback/archive/v_"
                                   version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
                 "1x6ga74yfgm94cfx98gybakbrlilx8i2gn6dx13l40kasmys06mi"))
@@ -10303,7 +10339,7 @@ static code analysis or code manipulation.")))
              #t)))))
     (inputs
      `(("java-javax-mail" ,java-javax-mail)
-       ("java-tomcat" ,java-tomcat)
+       ("servlet" ,java-javaee-servletapi)
        ("java-commons-compiler" ,java-commons-compiler)
        ("java-janino" ,java-janino)))
     (native-inputs
@@ -10347,7 +10383,7 @@ This module lays the groundwork for the other two modules.")
                                             (find-files (assoc-ref inputs input)
                                                         ".*.jar"))
                                           '("java-logback-core" "java-slf4j-api"
-                                            "java-commons-compiler" "java-tomcat"
+                                            "java-commons-compiler" "servlet"
                                             "groovy")))
                        ":"))
              (apply invoke "groovyc" "-d" "build/classes" "-j"
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 6fb1eee6cc..39e2322739 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -314,7 +314,7 @@
         "USE_SYSTEM_LIBGIT2=1"
         "USE_SYSTEM_OPENSPECFUN=1")))
     (inputs
-     `(("llvm" ,llvm)
+     `(("llvm" ,llvm-3.9.1)
 
        ;; The bundled version is 3.3.0 so stick to that version.  With other
        ;; versions, we get test failures in 'linalg/arnoldi' as described in
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index 6f8571d22a..62a971a0a8 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -395,7 +395,7 @@ generator library for C++.")
        ("libxrender" ,libxrender)
        ("libxslt" ,libxslt)
        ("lzo" ,lzo)
-       ("mysql" ,mysql)
+       ("mariadb" ,mariadb)
        ("openssl" ,openssl)
        ("pcre" ,pcre)
        ("pulseaudio" ,pulseaudio)
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index e4b8bbbbed..73788ea80f 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -65,7 +65,7 @@
     (arguments `(#:configure-flags '("--disable-udev")))
     ;; (inputs `(("eudev" ,eudev)))
 
-    (home-page "http://libusb.info")
+    (home-page "https://libusb.info")
     (synopsis "User-space USB library")
     (description
      "Libusb is a library that gives applications easy access to USB
@@ -91,7 +91,7 @@ devices on various operating systems.")
      `(("pkg-config" ,pkg-config)))
     (inputs
      `(("libusb" ,libusb)))
-    (home-page "http://libusb.info")
+    (home-page "https://libusb.info")
     (synopsis "Compatibility shim for libusb")
     (description
      "Libusb-compat provides a shim allowing applications based on older
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 2ce0f56b84..7edf20ebc9 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -28,6 +28,7 @@
 ;;; Copyright © 2017 nee <nee-git@hidamari.blue>
 ;;; Copyright © 2017 Dave Love <fx@gnu.org>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
+;;; Copyright © 2018 Brendan Tildesley <brendan.tildesley@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -59,6 +60,7 @@
   #:use-module (gnu packages calendar)
   #:use-module (gnu packages check)
   #:use-module (gnu packages crypto)
+  #:use-module (gnu packages cryptsetup)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages datastructures)
@@ -402,8 +404,8 @@ It has been modified to remove all non-free binary blobs.")
 ;; supports qemu "virt" machine and possibly a large number of ARM boards.
 ;; See : https://wiki.debian.org/DebianKernel/ARMMP.
 
-(define %linux-libre-version "4.17.6")
-(define %linux-libre-hash "0d48r5jpj71ikdalz5z756snwq54cpnwnba8bbhg8r2ri3770wcm")
+(define %linux-libre-version "4.17.9")
+(define %linux-libre-hash "1mahjxn4j7sdjdrbkrgal37nfx23njhnmrxcmixmphps8i44rlwm")
 
 (define-public linux-libre
   (make-linux-libre %linux-libre-version
@@ -411,8 +413,8 @@ It has been modified to remove all non-free binary blobs.")
                     %linux-compatible-systems
                     #:configuration-file kernel-config))
 
-(define %linux-libre-4.14-version "4.14.55")
-(define %linux-libre-4.14-hash "1rlapfwkjfmyk4ahvqwqap4w9flbw2zag0r04fwrmyqz1y5ijayf")
+(define %linux-libre-4.14-version "4.14.57")
+(define %linux-libre-4.14-hash "1qp8g87ss4a3iz6k3k4mkllibvdrixh6ys4a9l7jidp2wmkxj3kc")
 
 (define-public linux-libre-4.14
   (make-linux-libre %linux-libre-4.14-version
@@ -421,14 +423,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.112"
-                    "1zrnbvzr7z5ky79r6hpjvn15bxmwcyi8lr7yq2nx1r8ladl8lnb0"
+  (make-linux-libre "4.9.114"
+                    "069ckgck4skzci6sjrpk1sja0h1fdmrlcbpnqwl2844m5vfffzk9"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.4
-  (make-linux-libre "4.4.140"
-                    "10h4k2c2ncnc1h61kikqb618dh9lp8fmzagz2ydykrdbb5jjiy82"
+  (make-linux-libre "4.4.143"
+                    "0kawgpmmv37gds3cbww791bbzvwfjg760yg3qw3dk913dawhdmzw"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
@@ -1609,7 +1611,7 @@ processes currently causing I/O.")
 (define-public fuse
   (package
     (name "fuse")
-    (version "2.9.7")
+    (version "2.9.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/libfuse/libfuse/releases/"
@@ -1617,7 +1619,7 @@ processes currently causing I/O.")
                                   "/fuse-" version ".tar.gz"))
               (sha256
                (base32
-                "0x486nri30f7cgy0acj87v9sjxsjrr0cymrvw4h3r0sgmp8k4943"))
+                "1k4ggl2y5v0lr98l189pc81w0zijj23wbbnijsc6zlx84117nd0j"))
               (patches (search-patches "fuse-overlapping-headers.patch"))))
     (build-system gnu-build-system)
     (inputs `(("util-linux" ,util-linux)))
@@ -3588,7 +3590,7 @@ The following service daemons are also provided:
 (define-public rng-tools
   (package
     (name "rng-tools")
-    (version "6.3")
+    (version "6.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/nhorman/rng-tools/"
@@ -3596,7 +3598,7 @@ The following service daemons are also provided:
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1lc2kqw3idwmjyjnf16sqz0f4r1w7c638n4la1j1n5c3188q26bv"))))
+                "04p7wvcm389s21y9mq8ss6z2szxi4nfrfixzwqjkq2qciz705i4s"))))
     (build-system gnu-build-system)
     (arguments
      `(;; Avoid using OpenSSL, curl, and libxml2, reducing the closure by 166 MiB.
@@ -3699,7 +3701,43 @@ as used on certified hardware security devices.")
          "0zwq19siiwf09h7lwa7n7mgmrr8cxifp45lmwgcfr8c1gviv6b0i"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags (list "--disable-pywrap")))
+     `(#:configure-flags (list "--disable-pywrap")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'patch-source-shebangs 'patch-hardcoded-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (utils-linux (assoc-ref inputs "utils-linux"))
+                   (cryptsetup (assoc-ref inputs "cryptsetup"))
+                   (linux-pam (assoc-ref inputs "linux-pam"))
+                   (lvm2 (assoc-ref inputs "lvm2")))
+               (substitute* '("src/utils/ecryptfs-mount-private"
+                              "src/utils/ecryptfs-umount-private"
+                              "src/utils/ecryptfs-setup-private"
+                              "src/utils/mount.ecryptfs.c"
+                              "src/pam_ecryptfs/pam_ecryptfs.c"
+                              "src/desktop/ecryptfs-mount-private.desktop.in"
+                              "src/utils/ecryptfs-setup-swap")
+                 (("/bin/mount")
+                  (string-append utils-linux "/bin/mount"))
+                 (("/bin/umount")
+                  (string-append utils-linux "/bin/umount"))
+                 (("/sbin/mount.ecryptfs_private")
+                  (string-append out "/sbin/mount.ecryptfs_private"))
+                 (("/sbin/umount.ecryptfs_private")
+                  (string-append out "/sbin/umount.ecryptfs_private"))
+                 (("/usr/bin/ecryptfs-mount-private")
+                  (string-append out "/bin/ecryptfs-mount-private"))
+                 (("/usr/bin/ecryptfs-rewrite-file")
+                  (string-append out "/bin/ecryptfs-rewrite-file"))
+                 (("/usr/bin/ecryptfs-setup-private")
+                  (string-append out "/bin/ecryptfs-setup-private"))
+                 (("/sbin/cryptsetup")
+                  (string-append cryptsetup "/sbin/cryptsetup"))
+                 (("/sbin/unix_chkpwd")
+                  (string-append linux-pam "/sbin/unix_chkpwd"))
+                 (("/sbin/dmsetup")
+                  (string-append lvm2 "/sbin/dmsetup")))))))))
     (native-inputs
      `(("intltool" ,intltool)
        ("perl" ,perl)                   ; for pod2man
@@ -3707,6 +3745,9 @@ as used on certified hardware security devices.")
     (inputs
      `(("keyutils" ,keyutils)
        ("linux-pam" ,linux-pam)
+       ("utils-linux" ,util-linux)
+       ("cryptsetup" ,cryptsetup)
+       ("lvm2" ,lvm2)
        ("nss" ,nss)))
     (home-page "http://ecryptfs.org/")
     (synopsis "eCryptfs cryptographic file system utilities")
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index f127e27e3c..3d7b0e4632 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -261,14 +261,14 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.10.0")
+    (version "1.10.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://bitbucket.org/mutt/mutt/downloads/"
                                  "mutt-" version ".tar.gz"))
              (sha256
               (base32
-               "0nskymwr2cdapxlfv0ysz3bjwhb4kcvl5a3c39237k7r1vwva582"))
+               "182lkbkpd3q3l1x6bvyds90ycp38gyyxhf35ry0d3hwf2n1khjkk"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 1e0e1998db..fd3626a595 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -207,6 +207,37 @@ programming languages.")
     (home-page "https://stcorp.nl/coda")
     (license license:gpl2+)))
 
+(define-public qhull
+  (package
+    (name "qhull")
+    (version "2015.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.qhull.org/download/qhull-"
+                                  (car (string-split version #\.))
+                                  "-src-7.2.0.tgz"))
+              (sha256
+               (base32
+                "0dm4b2xr3asy6w74khq2zg4gf26zsy3qf9sq7pf7lmrvbj911c3q"))))
+    (build-system cmake-build-system)
+    (synopsis "Calculate convex hulls and related structures")
+    (description
+     "@code{Qhull} computes the convex hull, Delaunay triangulation, Voronoi
+diagram, halfspace intersection about a point, furthest-site Delaunay
+triangulation, and furthest-site Voronoi diagram.  The source code runs in 2-d,
+3-d, 4-d, and higher dimensions.  @code{Qhull} implements the Quickhull
+algorithm for computing the convex hull.  It handles roundoff errors from
+floating point arithmetic.  It computes volumes, surface areas, and
+approximations to the convex hull.
+
+@code{Qhull} does not support triangulation of non-convex surfaces, mesh
+generation of non-convex objects, medium-sized inputs in 9-D and higher, alpha
+shapes, weighted Voronoi diagrams, Voronoi volumes, or constrained Delaunay
+triangulations.")
+    (home-page "http://qhull.org")
+    (license (license:non-copyleft "file://COPYING.txt"
+                                   "See COPYING in the distribution."))))
+
 (define-public units
   (package
    (name "units")
@@ -1336,6 +1367,7 @@ can solve two kinds of problems:
     (build-system gnu-build-system)
     (inputs
      `(("lapack" ,lapack)
+       ("qhull" ,qhull)
        ("readline" ,readline)
        ("gl2ps" ,gl2ps)
        ("glpk" ,glpk)
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index a3e5687dc8..34fbce0e62 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -428,7 +428,7 @@ artifact and repository handling code.")
        ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
        ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
        ("java-slf4j-api" ,java-slf4j-api)
-       ("java-tomcat" ,java-tomcat)
+       ("java-javaee-servletapi" ,java-javaee-servletapi)
        ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
     (synopsis "Test classes from maven-wagon")
     (description "Maven Wagon is a transport abstraction that is used in Maven's
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 1212a06eeb..a34f744659 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
-;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
 ;;;
@@ -487,14 +487,14 @@ compromised.")
 (define-public znc
   (package
     (name "znc")
-    (version "1.7.0")
+    (version "1.7.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://znc.in/releases/archive/znc-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0vxra50418bsjfdpf8vl70fijv8syvasjqdxfyjliff6k91k2zn0"))))
+                "1i1r1lh9q2mr1bg520zrvrlwhrhy6wibrin78wjxq1gab1qymks4"))))
     ;; TODO: autotools support has been deprecated, and new features like i18n
     ;; are only supported when building with cmake.
     (build-system gnu-build-system)
@@ -873,7 +873,7 @@ protocols.")
 (define-public c-toxcore
   (package
     (name "c-toxcore")
-    (version "0.2.2")
+    (version "0.2.4")
     (source
      (origin
        (method url-fetch)
@@ -882,7 +882,7 @@ protocols.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "18bfqx0ylbas9gs91rkspf04l5fjjcl0mxm1gfs2d59bv65mvcm3"))))
+         "0sdszy079f82ncrgq1wsjpk2374n5hm4las75gj3lrdhljl15izl"))))
     (arguments
      `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
                      ; for now.
@@ -961,14 +961,14 @@ instant messenger with audio and video chat capabilities.")
 (define-public qtox
   (package
     (name "qtox")
-    (version "1.16.1")
+    (version "1.16.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/qTox/qTox/archive/v"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "11l4klw0g6j4qq95krgyd0npxmmpcgk4vp9jq429sbsqn1s039j4"))
+                "10n3cgw9xaqin9la8wpd8v83bkjmimicgbyp5ninsdgsrgky4hmq"))
               (file-name (string-append name "-" version ".tar.gz"))))
     (build-system cmake-build-system)
     (arguments
@@ -990,7 +990,7 @@ instant messenger with audio and video chat capabilities.")
                    ,(list (string-append (assoc-ref inputs "qtsvg")
                                          "/lib/qt5/plugins/"))))))))))
     (inputs
-     `(("ffmpeg" ,ffmpeg-3.4)
+     `(("ffmpeg" ,ffmpeg)
        ("filteraudio" ,filteraudio)
        ("glib" ,glib)
        ("gtk+" ,gtk+-2)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index bdc6d050a9..0185b8fd9c 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -50,6 +50,7 @@
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system waf)
   #:use-module (guix build-system trivial)
+  #:use-module (guix build-system go)
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages apr)
@@ -128,6 +129,8 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xiph)
+  #:use-module (gnu packages golang)
+  #:use-module (gnu packages lua)
   #:use-module ((srfi srfi-1) #:select (last)))
 
 (define-public aria-maestosa
@@ -4131,3 +4134,89 @@ at @code{musicbrainz.org}.")
 It can be used in daemon mode along with the Music-on-Console (MOC) and cmus
 console music players.")
     (license license:gpl3+)))
+
+(define-public demlo
+  (let ((commit "fe9ec4c8ac2fa995ec18e6ac86d50d46df06ec01")
+        (revision "0"))
+    (package
+      (name "demlo")
+      (version (git-version "3.8" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url
+                "https://gitlab.com/ambrevar/demlo")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1afkbqhzn6da7zaf5ab7dvyqj1izqhzprwfb4hw448fllda9bdvk"))))
+      (build-system go-build-system)
+      (native-inputs
+       `(("lua" ,lua)
+         ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
+         ("go-github-com-mattn-go-colorable" ,go-github-com-mattn-go-colorable)
+         ("go-github-com-aarzilli-golua" ,go-github-com-aarzilli-golua)
+         ("go-gitlab-com-ambrevar-damerau" ,go-gitlab-com-ambrevar-damerau)
+         ("go-gitlab-com-ambrevar-golua-unicode" ,go-gitlab-com-ambrevar-golua-unicode)
+         ("go-github-com-mgutz-ansi" ,go-github-com-mgutz-ansi)
+         ("go-github-com-michiwend-gomusicbrainz" ,go-github-com-michiwend-gomusicbrainz)
+         ("go-github-com-stevedonovan-luar" ,go-github-com-stevedonovan-luar)
+         ("go-github-com-wtolson-go-taglib" ,go-github-com-wtolson-go-taglib)
+         ("go-github-com-yookoala-realpath" ,go-github-com-yookoala-realpath)))
+      (inputs
+       `(("chromaprint" ,chromaprint)
+         ("ffmpeg" ,ffmpeg)))
+      (arguments
+       `(#:import-path "gitlab.com/ambrevar/demlo"
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'install 'wrap-program
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out"))
+                     (ffmpeg (assoc-ref inputs "ffmpeg"))
+                     (chromaprint (assoc-ref inputs "chromaprint")))
+                 (wrap-program (string-append out "/bin/demlo")
+                   `("XDG_DATA_DIRS" ":" prefix (,out))
+                   `("PATH" ":" prefix
+                     ,(map (lambda (dir)
+                             (string-append dir "/bin:"
+                                            dir "/sbin"))
+                           (list ffmpeg chromaprint))))
+                 #t)))
+           (add-after 'install-source 'install-scripts
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (root (string-append out "/src/gitlab.com/ambrevar/demlo"))
+                      (xdg-data-dirs (string-append out "/demlo")))
+                 (copy-recursively (string-append root "/actions")
+                                   (string-append xdg-data-dirs "/actions"))
+                 (copy-recursively (string-append root "/scripts")
+                                   (string-append xdg-data-dirs "/scripts"))
+                 (install-file (string-append root "/config.lua") xdg-data-dirs)
+                 ;; TODO: Test fish completion.
+                 (install-file (string-append root "/completion/demlo.fish")
+                               (string-append out "/share/fish/vendor_completions.d"))
+                 #t))))))
+      (home-page "https://gitlab.com/ambrevar/demlo")
+      (synopsis "Dynamic and extensible music library organizer")
+      (description "Demlo is a music library organizer.  It can encode, fix
+case, change folder hierarchy according to tags or file properties, tag from
+an online database, copy covers while ignoring duplicates or those below a
+quality threshold, and much more.  It makes it possible to manage your
+libraries uniformly and dynamically.  You can write your own rules to fit your
+needs best.
+
+Demlo can address any of these recurring music library issues (and much more):
+
+@itemize
+@item Fix the lack of folder structure.
+@item Normalize tags, fix their case, chose which tags to keep and which to
+discard.
+@item Handle lossy and lossless audio differently.
+@item Handle mp3 id3tags hell...
+@item Handle multiple covers, whether embedded and/or external, resize covers,
+discard bad quality ones.
+@end itemize\n")
+      (license license:expat))))
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index ebf0e86f12..90967b9b1f 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -534,7 +534,7 @@ and up to 1 Mbit/s downstream.")
 (define-public whois
   (package
     (name "whois")
-    (version "5.3.1")
+    (version "5.3.2")
     (source
      (origin
        (method url-fetch)
@@ -542,7 +542,7 @@ and up to 1 Mbit/s downstream.")
                            name "_" version ".tar.xz"))
        (sha256
         (base32
-         "0gl98l26dcgmlap0pxllbv4b9n2fr5b7zml3ijf8sf3a60qsskpg"))))
+         "0m3352d5b0ragygbqjbaimghrbx4va2rixa34j5a1g3jj6l4nwbr"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no test suite
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 61e203c611..b7e3b320f6 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -101,8 +101,8 @@
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
   (let ((version "0.15.0")
-        (commit "4876bc8234095e2af191b0c6470455ce67d9f5f7")
-        (revision 1))
+        (commit "8bbb79cf95a07a40950448a8a09d888254404ed4")
+        (revision 2))
     (package
       (name "guix")
 
@@ -118,7 +118,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "0qw0ffrxzxfk76pp38kx222ndpsv9mbhlmfycagyipgypgjdd9lq"))
+                  "0h83l91v2cg9bb78c7vqx9wj71ckz22jbjmm2fy4vqs9216jnvc0"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
@@ -263,7 +263,10 @@
 
          ("sqlite" ,sqlite)
          ("libgcrypt" ,libgcrypt)
-         ("guile" ,guile-2.2)
+
+         ;; Use 2.2.4 to avoid various thread-safety issues while building
+         ;; code in parallel.
+         ("guile" ,guile-2.2.4)
 
          ;; Many tests rely on the 'guile-bootstrap' package, which is why we
          ;; have it here.
@@ -345,7 +348,7 @@ the Nix package manager.")
                (let ((out (assoc-ref outputs "out")))
                  (substitute* (find-files (string-append out "/libexec"))
                    (("exec \".*/bin/guix\"")
-                    "exec ~root/.config/current/bin/guix"))
+                    "exec ~root/.config/guix/current/bin/guix"))
                  #t)))
            (delete 'wrap-program)))))))
 
diff --git a/gnu/packages/patches/file-CVE-2017-1000249.patch b/gnu/packages/patches/file-CVE-2017-1000249.patch
deleted file mode 100644
index 505acf1592..0000000000
--- a/gnu/packages/patches/file-CVE-2017-1000249.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-https://github.com/file/file/commit/35c94dc6acc418f1ad7f6241a6680e5327495793.patch
-http://openwall.com/lists/oss-security/2017/09/05/3
-
-The patch is minorly modified to apply to file-5.30
-
-From 35c94dc6acc418f1ad7f6241a6680e5327495793 Mon Sep 17 00:00:00 2001
-From: Christos Zoulas <christos@zoulas.com>
-Date: Sun, 27 Aug 2017 07:55:02 +0000
-Subject: [PATCH] Fix always true condition (Thomas Jarosch)
-
----
- src/readelf.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/readelf.c b/src/readelf.c
-index 81451827..5f425c97 100644
---- a/src/readelf.c
-+++ b/src/readelf.c
-@@ -511,7 +511,7 @@ do_bid_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
-     size_t noff, size_t doff, int *flags)
- {
- 	if (namesz == 4 && strcmp((char *)&nbuf[noff], "GNU") == 0 &&
--	    type == NT_GNU_BUILD_ID && (descsz >= 4 || descsz <= 20)) {
-+	    type == NT_GNU_BUILD_ID && (descsz >= 4 && descsz <= 20)) {
- 		uint8_t desc[20];
- 		const char *btype;
- 		uint32_t i;
diff --git a/gnu/packages/patches/fltk-shared-lib-defines.patch b/gnu/packages/patches/fltk-shared-lib-defines.patch
deleted file mode 100644
index d36a50ff5e..0000000000
--- a/gnu/packages/patches/fltk-shared-lib-defines.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-This patch from upstream revision 10588.
-
---- fltk-1.3.3/src/Xutf8.h
-+++ fltk-1.3.3/src/Xutf8.h
-@@ -25,6 +25,7 @@
- #include <X11/Xlib.h>
- #include <X11/Xlocale.h>
- #include <X11/Xutil.h>
-+#include <FL/Fl_Export.H>
- 
- typedef struct {
- 	int nb_font;
-@@ -98,8 +99,8 @@
- 	XUtf8FontStruct  *font_set,
- 	unsigned int            ucs);
- 
--int
--XGetUtf8FontAndGlyph(
-+FL_EXPORT int
-+fl_XGetUtf8FontAndGlyph(
-         XUtf8FontStruct  *font_set,
-         unsigned int            ucs,
-         XFontStruct     **fnt,
---- fltk-1.3.3/src/gl_draw.cxx
-+++ fltk-1.3.3/src/gl_draw.cxx
-@@ -114,7 +114,7 @@
-   for (int i = 0; i < 0x400; i++) {
-     XFontStruct *font = NULL;
-     unsigned short id;
--    XGetUtf8FontAndGlyph(gl_fontsize->font, ii, &font, &id);
-+    fl_XGetUtf8FontAndGlyph(gl_fontsize->font, ii, &font, &id);
-     if (font) glXUseXFont(font->fid, id, 1, gl_fontsize->listbase+ii);
-     ii++;
-    }
---- fltk-1.3.3/src/xutf8/utf8Wrap.c
-+++ fltk-1.3.3/src/xutf8/utf8Wrap.c
-@@ -816,10 +816,10 @@
- /**  get the X font and glyph ID of a UCS char                              **/
- /*****************************************************************************/
- int
--XGetUtf8FontAndGlyph(XUtf8FontStruct  *font_set,
--		     unsigned int     ucs,
--		     XFontStruct      **fnt,
--		     unsigned short   *id) {
-+fl_XGetUtf8FontAndGlyph(XUtf8FontStruct  *font_set,
-+			unsigned int     ucs,
-+			XFontStruct      **fnt,
-+			unsigned short   *id) {
- 
-   /* int             x; */
-   int             *encodings; /* encodings array */
diff --git a/gnu/packages/patches/fltk-xfont-on-demand.patch b/gnu/packages/patches/fltk-xfont-on-demand.patch
deleted file mode 100644
index cdcdd9af05..0000000000
--- a/gnu/packages/patches/fltk-xfont-on-demand.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Fixes undefined reference to `Fl_XFont_On_Demand::value()'.
-From <http://www.fltk.org/str.php?L3156+P0+S0+C0+I0+E0+V1+QOn_Demand>.
-
-Index: src/fl_font.cxx
-===================================================================
---- fltk-1.3.3/src/fl_font.cxx	(revision 10503)
-+++ fltk-1.3.3/src/fl_font.cxx	(revision 10504)
-@@ -55,6 +55,12 @@
- #  include "fl_font_x.cxx"
- #endif // WIN32
- 
-+#if ! (defined(WIN32) || defined(__APPLE__))
-+XFontStruct *fl_X_core_font()
-+{
-+  return fl_xfont.value();
-+}
-+#endif
- 
- double fl_width(const char* c) {
-   if (c) return fl_width(c, (int) strlen(c));
-Index: src/gl_draw.cxx
-===================================================================
---- fltk-1.3.3/src/gl_draw.cxx	(revision 10503)
-+++ fltk-1.3.3/src/gl_draw.cxx	(revision 10504)
-@@ -81,7 +81,7 @@
-  * then sorting through them at draw time (for normal X rendering) to find which one can
-  * render the current glyph... But for now, just use the first font in the list for GL...
-  */
--    XFontStruct *font = fl_xfont;
-+    XFontStruct *font = fl_X_core_font();
-     int base = font->min_char_or_byte2;
-     int count = font->max_char_or_byte2-base+1;
-     fl_fontsize->listbase = glGenLists(256);
-Index: FL/x.H
-===================================================================
---- fltk-1.3.3/FL/x.H	(revision 10503)
-+++ fltk-1.3.3/FL/x.H	(revision 10504)
-@@ -132,6 +132,7 @@
-   XFontStruct *ptr;
- };
- extern FL_EXPORT Fl_XFont_On_Demand fl_xfont;
-+extern FL_EXPORT XFontStruct* fl_X_core_font();
- 
- // this object contains all X-specific stuff about a window:
- // Warning: this object is highly subject to change!  
diff --git a/gnu/packages/patches/ghostscript-CVE-2018-10194.patch b/gnu/packages/patches/ghostscript-CVE-2018-10194.patch
new file mode 100644
index 0000000000..242e57c27c
--- /dev/null
+++ b/gnu/packages/patches/ghostscript-CVE-2018-10194.patch
@@ -0,0 +1,52 @@
+Fix CVE-2018-10194:
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-10194
+https://bugs.ghostscript.com/show_bug.cgi?id=699255
+
+Patch copied from upstream source repository:
+
+https://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=39b1e54b2968620723bf32e96764c88797714879
+
+From 39b1e54b2968620723bf32e96764c88797714879 Mon Sep 17 00:00:00 2001
+From: Ken Sharp <ken.sharp@artifex.com>
+Date: Wed, 18 Apr 2018 15:46:32 +0100
+Subject: [PATCH] pdfwrite - Guard against trying to output an infinite number
+
+Bug #699255 " Buffer overflow on pprintg1 due to mishandle postscript file data to pdf"
+
+The file uses an enormous parameter to xyxhow, causing an overflow in
+the calculation of text positioning (value > 1e39).
+
+Since this is basically a nonsense value, and PostScript only supports
+real values up to 1e38, this patch follows the same approach as for
+a degenerate CTM, and treats it as 0.
+
+Adobe Acrobat Distiller throws a limitcheck error, so we could do that
+instead if this approach proves to be a problem.
+---
+ devices/vector/gdevpdts.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/devices/vector/gdevpdts.c b/devices/vector/gdevpdts.c
+index 848ad781f..172fe6bc3 100644
+--- a/devices/vector/gdevpdts.c
++++ b/devices/vector/gdevpdts.c
+@@ -103,9 +103,14 @@ append_text_move(pdf_text_state_t *pts, double dw)
+ static int
+ set_text_distance(gs_point *pdist, double dx, double dy, const gs_matrix *pmat)
+ {
+-    int code = gs_distance_transform_inverse(dx, dy, pmat, pdist);
++    int code;
+     double rounded;
+ 
++    if (dx > 1e38 || dy > 1e38)
++        code = gs_error_undefinedresult;
++    else
++        code = gs_distance_transform_inverse(dx, dy, pmat, pdist);
++
+     if (code == gs_error_undefinedresult) {
+         /* The CTM is degenerate.
+            Can't know the distance in user space.
+-- 
+2.18.0
+
diff --git a/gnu/packages/patches/monero-use-system-miniupnpc.patch b/gnu/packages/patches/monero-use-system-miniupnpc.patch
new file mode 100644
index 0000000000..6bc825d121
--- /dev/null
+++ b/gnu/packages/patches/monero-use-system-miniupnpc.patch
@@ -0,0 +1,111 @@
+This reverts commit 1e20d705e7c64d2b17c031f345057d1e8850fafa, so that it's possible to use our own
+miniupnpc, instead of a git submodule.
+---
+ CMakeLists.txt          |  8 ++++++++
+ external/CMakeLists.txt | 41 +++++++++++++++++++++++++++++++----------
+ src/p2p/net_node.inl    | 13 ++++++++++---
+ 3 files changed, 49 insertions(+), 13 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3b93988e..ef948885 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -430,6 +430,14 @@ include_directories("${CMAKE_CURRENT_BINARY_DIR}/translations")
+ 
+ add_subdirectory(external)
+ 
++# Final setup for miniupnpc
++if(UPNP_STATIC OR IOS)
++  add_definitions("-DUPNP_STATIC")
++else()
++  add_definitions("-DUPNP_DYNAMIC")
++  include_directories(${UPNP_INCLUDE})
++endif()
++
+ # Final setup for libunbound
+ include_directories(${UNBOUND_INCLUDE})
+ link_directories(${UNBOUND_LIBRARY_DIRS})
+diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt
+index 1fc4d64c..b4f712ee 100644
+--- a/external/CMakeLists.txt
++++ b/external/CMakeLists.txt
+@@ -34,21 +34,42 @@
+ # We always compile if we are building statically to reduce static dependency issues...
+ # ...except for FreeBSD, because FreeBSD is a special case that doesn't play well with
+ # others.
++if(NOT IOS)
++    find_package(Miniupnpc QUIET)
++endif()
+ 
+-find_package(Miniupnpc REQUIRED)
++# If we have the correct shared version and we're not building static, use it
++if(STATIC OR IOS)
++ set(USE_SHARED_MINIUPNPC false)
++elseif(MINIUPNP_FOUND AND MINIUPNPC_VERSION_1_7_OR_HIGHER)
++ set(USE_SHARED_MINIUPNPC true)
++endif()
+ 
+-message(STATUS "Using in-tree miniupnpc")
++if(USE_SHARED_MINIUPNPC)
++  message(STATUS "Using shared miniupnpc found at ${MINIUPNP_INCLUDE_DIR}")
+ 
+-add_subdirectory(miniupnp/miniupnpc)
++  set(UPNP_STATIC false PARENT_SCOPE)
++  set(UPNP_INCLUDE ${MINIUPNP_INCLUDE_DIR} PARENT_SCOPE)
++  set(UPNP_LIBRARIES ${MINIUPNP_LIBRARY} PARENT_SCOPE)
++else()
++  if(STATIC)
++    message(STATUS "Using miniupnpc from local source tree for static build")
++  else()
++    message(STATUS "Using miniupnpc from local source tree (/external/miniupnp/miniupnpc)")
++  endif()
+ 
+-set_property(TARGET libminiupnpc-static PROPERTY FOLDER "external")
+-if(MSVC)
+-  set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -wd4244 -wd4267")
+-elseif(NOT MSVC)
+-  set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-undef -Wno-unused-result -Wno-unused-value")
+-endif()
++  add_subdirectory(miniupnp/miniupnpc)
++
++  set_property(TARGET libminiupnpc-static PROPERTY FOLDER "external")
++  if(MSVC)
++    set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -wd4244 -wd4267")
++  elseif(NOT MSVC)
++    set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-undef -Wno-unused-result -Wno-unused-value")
++  endif()
+ 
+-set(UPNP_LIBRARIES "libminiupnpc-static" PARENT_SCOPE)
++  set(UPNP_STATIC true PARENT_SCOPE)
++  set(UPNP_LIBRARIES "libminiupnpc-static" PARENT_SCOPE)
++endif()
+ 
+ find_package(Unbound)
+ 
+diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl
+index 9b21705e..76340a22 100644
+--- a/src/p2p/net_node.inl
++++ b/src/p2p/net_node.inl
+@@ -49,9 +49,16 @@
+ #include "storages/levin_abstract_invoke2.h"
+ #include "cryptonote_core/cryptonote_core.h"
+ 
+-#include <miniupnp/miniupnpc/miniupnpc.h>
+-#include <miniupnp/miniupnpc/upnpcommands.h>
+-#include <miniupnp/miniupnpc/upnperrors.h>
++// We have to look for miniupnpc headers in different places, dependent on if its compiled or external
++#ifdef UPNP_STATIC
++  #include <miniupnp/miniupnpc/miniupnpc.h>
++  #include <miniupnp/miniupnpc/upnpcommands.h>
++  #include <miniupnp/miniupnpc/upnperrors.h>
++#else
++  #include "miniupnpc.h"
++  #include "upnpcommands.h"
++  #include "upnperrors.h"
++#endif
+ 
+ #undef MONERO_DEFAULT_LOG_CATEGORY
+ #define MONERO_DEFAULT_LOG_CATEGORY "net.p2p"
+-- 
+2.16.2
+
diff --git a/gnu/packages/patches/openbabel-fix-crash-on-nwchem-output.patch b/gnu/packages/patches/openbabel-fix-crash-on-nwchem-output.patch
new file mode 100644
index 0000000000..879df026a1
--- /dev/null
+++ b/gnu/packages/patches/openbabel-fix-crash-on-nwchem-output.patch
@@ -0,0 +1,34 @@
+From 52cea818bf68f8a2d3c48d55d00c2f8b7da25e4c Mon Sep 17 00:00:00 2001
+From: Daniel Hogan <daniel.hogan@usask.ca>
+Date: Tue, 28 Mar 2017 22:21:18 -0600
+Subject: [PATCH] Remove delete statement.
+
+When from_scratch is true, coordinates is not allocated. A separate if
+statement was added to handle the case when from_scratch is true that
+does not try to free coordinates.
+---
+ src/formats/nwchemformat.cpp | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/formats/nwchemformat.cpp b/src/formats/nwchemformat.cpp
+index 6f625ad5b..79298555f 100644
+--- a/src/formats/nwchemformat.cpp
++++ b/src/formats/nwchemformat.cpp
+@@ -232,11 +232,14 @@ static const char* OPTIMIZATION_END_PATTERN = "  Optimization converged";
+           break;
+         tokenize(vs,buffer);
+     }
+-    if ((from_scratch)||(i != natoms))
+-      {
++    if (from_scratch) 
++    {
++        return;
++    }
++    if (i != natoms) {
+         delete[] coordinates;
+         return;
+-      }
++    }
+     molecule->AddConformer(coordinates);
+   }
+ 
diff --git a/gnu/packages/patches/python-cairocffi-dlopen-path.patch b/gnu/packages/patches/python-cairocffi-dlopen-path.patch
new file mode 100644
index 0000000000..e7a7fe3737
--- /dev/null
+++ b/gnu/packages/patches/python-cairocffi-dlopen-path.patch
@@ -0,0 +1,10 @@
+--- cairocffi-0.8.0/cairocffi/__init__.py.orig	2018-07-16 11:00:59.075664158 +0200
++++ cairocffi-0.8.0/cairocffi/__init__.py	2018-07-16 17:09:42.471958015 +0200
+@@ -35,6 +35,7 @@
+                         return lib
+             except OSError:
+                 pass
++        return ffi.dlopen(name)
+     raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names))
+ 
+ 
diff --git a/gnu/packages/patches/syncthing-fix-crash.patch b/gnu/packages/patches/syncthing-fix-crash.patch
deleted file mode 100644
index d27e543982..0000000000
--- a/gnu/packages/patches/syncthing-fix-crash.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-Avoid a crash:
-
-https://github.com/syncthing/syncthing/issues/5002
-
-Patch copied from upstream source repository:
-
-https://github.com/syncthing/syncthing/commit/35a75a95dc6383b2d73ab645f1407f7907ec1a2c
-
-From 35a75a95dc6383b2d73ab645f1407f7907ec1a2c Mon Sep 17 00:00:00 2001
-From: Jakob Borg <jakob@kastelo.net>
-Date: Wed, 13 Jun 2018 19:07:52 +0200
-Subject: [PATCH] lib/model: Don't panic when rechecking file (fixes #5002)
- (#5003)
-
----
- lib/model/model.go      |  2 +-
- lib/model/model_test.go | 26 ++++++++++++++++++++++++++
- 2 files changed, 27 insertions(+), 1 deletion(-)
-
-diff --git a/lib/model/model.go b/lib/model/model.go
-index 5a9146e0..302f06c5 100644
---- a/lib/model/model.go
-+++ b/lib/model/model.go
-@@ -1373,7 +1373,7 @@ func (m *Model) recheckFile(deviceID protocol.DeviceID, folderFs fs.Filesystem,
- 		return
- 	}
- 
--	if blockIndex > len(cf.Blocks) {
-+	if blockIndex >= len(cf.Blocks) {
- 		l.Debugf("%v recheckFile: %s: %q / %q i=%d: block index too far", m, deviceID, folder, name, blockIndex)
- 		return
- 	}
-diff --git a/lib/model/model_test.go b/lib/model/model_test.go
-index 295eafc1..456bbc4a 100644
---- a/lib/model/model_test.go
-+++ b/lib/model/model_test.go
-@@ -3608,6 +3608,32 @@ func TestIssue4903(t *testing.T) {
- 	}
- }
- 
-+func TestIssue5002(t *testing.T) {
-+	// recheckFile should not panic when given an index equal to the number of blocks
-+
-+	db := db.OpenMemory()
-+	m := NewModel(defaultCfgWrapper, protocol.LocalDeviceID, "syncthing", "dev", db, nil)
-+	m.AddFolder(defaultFolderConfig)
-+	m.StartFolder("default")
-+
-+	m.ServeBackground()
-+	defer m.Stop()
-+
-+	if err := m.ScanFolder("default"); err != nil {
-+		t.Error(err)
-+	}
-+
-+	file, ok := m.CurrentFolderFile("default", "foo")
-+	if !ok {
-+		t.Fatal("test file should exist")
-+	}
-+	nBlocks := len(file.Blocks)
-+
-+	m.recheckFile(protocol.LocalDeviceID, defaultFolderConfig.Filesystem(), "default", "foo", nBlocks-1, []byte{1, 2, 3, 4})
-+	m.recheckFile(protocol.LocalDeviceID, defaultFolderConfig.Filesystem(), "default", "foo", nBlocks, []byte{1, 2, 3, 4}) // panic
-+	m.recheckFile(protocol.LocalDeviceID, defaultFolderConfig.Filesystem(), "default", "foo", nBlocks+1, []byte{1, 2, 3, 4})
-+}
-+
- func addFakeConn(m *Model, dev protocol.DeviceID) *fakeConnection {
- 	fc := &fakeConnection{id: dev, model: m}
- 	m.AddConnection(fc, protocol.HelloResult{})
--- 
-2.18.0
-
diff --git a/gnu/packages/patches/twinkle-include-qregexpvalidator.patch b/gnu/packages/patches/twinkle-include-qregexpvalidator.patch
new file mode 100755
index 0000000000..4096cc8712
--- /dev/null
+++ b/gnu/packages/patches/twinkle-include-qregexpvalidator.patch
@@ -0,0 +1,123 @@
+Copied from upstream:
+
+https://github.com/LubosD/twinkle/commit/4b42755619011c117a76bdf98e417ebedc47e319
+
+From 4b42755619011c117a76bdf98e417ebedc47e319 Mon Sep 17 00:00:00 2001
+From: Michal Kubecek <mkubecek@suse.cz>
+Date: Wed, 6 Jun 2018 10:07:21 +0200
+Subject: [PATCH] Include <QRegExpValidator> explicitly
+
+Since Qt 5.11, generated ui_getprofilename.h no longer includes QHeaderView
+which breaks the chain that included qvalidator.h in getprofilename.cpp.
+As it feels rather fragile to rely on such indirect includes, let's include
+<QRegExpValidator> explicitly in each file using QRegExpValidator class.
+---
+ src/gui/diamondcardprofileform.cpp | 1 +
+ src/gui/getprofilenameform.cpp     | 2 +-
+ src/gui/inviteform.cpp             | 1 +
+ src/gui/mphoneform.cpp             | 1 +
+ src/gui/numberconversionform.cpp   | 1 +
+ src/gui/syssettingsform.cpp        | 1 +
+ src/gui/userprofileform.cpp        | 1 +
+ src/gui/wizardform.cpp             | 1 +
+ 8 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/src/gui/diamondcardprofileform.cpp b/src/gui/diamondcardprofileform.cpp
+index 6656909..517180b 100644
+--- a/src/gui/diamondcardprofileform.cpp
++++ b/src/gui/diamondcardprofileform.cpp
+@@ -21,6 +21,7 @@
+ 
+ #include <QRegExp>
+ #include <QValidator>
++#include <QRegExpValidator>
+ #include "gui.h"
+ #include "diamondcard.h"
+ #include "getprofilenameform.h"
+diff --git a/src/gui/getprofilenameform.cpp b/src/gui/getprofilenameform.cpp
+index 1319e1d..89c715e 100644
+--- a/src/gui/getprofilenameform.cpp
++++ b/src/gui/getprofilenameform.cpp
+@@ -1,7 +1,7 @@
+ #include "getprofilenameform.h"
+-
+ #include <QDir>
+ #include <QMessageBox>
++#include <QRegExpValidator>
+ #include "user.h"
+ #include "protocol.h"
+ 
+diff --git a/src/gui/inviteform.cpp b/src/gui/inviteform.cpp
+index 433fb22..2a5b68d 100644
+--- a/src/gui/inviteform.cpp
++++ b/src/gui/inviteform.cpp
+@@ -7,6 +7,7 @@
+ #include "sys_settings.h"
+ #include <QRegExp>
+ #include <QValidator>
++#include <QRegExpValidator>
+ 
+ /*
+     Copyright (C) 2005-2009  Michel de Boer <michel@twinklephone.com>
+diff --git a/src/gui/mphoneform.cpp b/src/gui/mphoneform.cpp
+index 260fda7..c4e3c1d 100644
+--- a/src/gui/mphoneform.cpp
++++ b/src/gui/mphoneform.cpp
+@@ -54,6 +54,7 @@
+ #include <QRegExp>
+ #include <QValidator>
+ #include <QSettings>
++#include <QRegExpValidator>
+ #include "buddyform.h"
+ #include "diamondcardprofileform.h"
+ #include "osd.h"
+diff --git a/src/gui/numberconversionform.cpp b/src/gui/numberconversionform.cpp
+index f8ae64c..8481a9b 100644
+--- a/src/gui/numberconversionform.cpp
++++ b/src/gui/numberconversionform.cpp
+@@ -1,5 +1,6 @@
+ #include "numberconversionform.h"
+ 
++#include <QRegExpValidator>
+ #include "gui.h"
+ 
+ /*
+diff --git a/src/gui/syssettingsform.cpp b/src/gui/syssettingsform.cpp
+index 216af54..355df59 100644
+--- a/src/gui/syssettingsform.cpp
++++ b/src/gui/syssettingsform.cpp
+@@ -28,6 +28,7 @@
+ #include "twinkle_config.h"
+ #include <QRegExp>
+ #include <QValidator>
++#include <QRegExpValidator>
+ #include "syssettingsform.h"
+ /*
+  *  Constructs a SysSettingsForm as a child of 'parent', with the
+diff --git a/src/gui/userprofileform.cpp b/src/gui/userprofileform.cpp
+index 28700a6..9ed9209 100644
+--- a/src/gui/userprofileform.cpp
++++ b/src/gui/userprofileform.cpp
+@@ -31,6 +31,7 @@
+ #include <QStringList>
+ #include "twinkle_config.h"
+ #include <QListWidget>
++#include <QRegExpValidator>
+ #include "numberconversionform.h"
+ #include "util.h"
+ #include "userprofileform.h"
+diff --git a/src/gui/wizardform.cpp b/src/gui/wizardform.cpp
+index 777aa12..f925875 100644
+--- a/src/gui/wizardform.cpp
++++ b/src/gui/wizardform.cpp
+@@ -23,6 +23,7 @@
+ #include <QTextStream>
+ #include "gui.h"
+ #include <QFile>
++#include <QRegExpValidator>
+ #include "wizardform.h"
+ 
+ #define PROV_NONE	QT_TRANSLATE_NOOP("WizardForm", "None (direct IP to IP calls)")
+-- 
+2.17.0
+
diff --git a/gnu/packages/patches/xorg-server-rotate-fb.patch b/gnu/packages/patches/xorg-server-rotate-fb.patch
new file mode 100644
index 0000000000..f47036b2a7
--- /dev/null
+++ b/gnu/packages/patches/xorg-server-rotate-fb.patch
@@ -0,0 +1,35 @@
+commit a85e94a50c94b07574c8701a3ff3c1243f4257f4
+Author: Olivier Fourdan <ofourdan@redhat.com>
+Date:   Fri Jun 15 08:57:12 2018 +0200
+
+    modesetting: use drmmode_bo_import() for rotate_fb
+    
+    drmmode_shadow_allocate() still uses drmModeAddFB() which may fail if
+    the format is not as expected, preventing from using a rotated output.
+    
+    Change it to use the new function drmmode_bo_import() which takes care
+    of calling the drmModeAddFB2() API.
+    
+    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106715
+    Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
+    Tested-by: Tomas Pelka <tpelka@redhat.com>
+    Reviewed-by: Lyude Paul <lyude@redhat.com>
+
+diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
+index 859a21a9d..ec11b3f56 100644
+--- a/hw/xfree86/drivers/modesetting/drmmode_display.c
++++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
+@@ -1794,11 +1794,8 @@ drmmode_shadow_allocate(xf86CrtcPtr crtc, int width, int height)
+         return NULL;
+     }
+ 
+-    ret = drmModeAddFB(drmmode->fd, width, height, crtc->scrn->depth,
+-                       drmmode->kbpp,
+-                       drmmode_bo_get_pitch(&drmmode_crtc->rotate_bo),
+-                       drmmode_bo_get_handle(&drmmode_crtc->rotate_bo),
+-                       &drmmode_crtc->rotate_fb_id);
++    ret = drmmode_bo_import(drmmode, &drmmode_crtc->rotate_bo,
++                            &drmmode_crtc->rotate_fb_id);
+ 
+     if (ret) {
+         ErrorF("failed to add rotate fb\n");
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 6ac4e76db8..867333031c 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -548,23 +548,26 @@ interaction.")
 (define-public podofo
   (package
     (name "podofo")
-    (version "0.9.5")
+    (version "0.9.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/podofo/podofo/" version
                                   "/podofo-" version ".tar.gz"))
               (sha256
                (base32
-                "012kgfx5j5n6w4zkc1d290d2cwjk60jhzsjlr2x19g3yi75q2jc5"))))
+                "0wj0y4zcmj4q79wrn3vv3xq4bb0vhhxs8yifafwy9f2sjm83c5p9"))))
     (build-system cmake-build-system)
-    (inputs                                      ; TODO: Add cppunit for tests
-     `(("lua" ,lua-5.1)
-       ("libpng" ,libpng)
-       ("openssl" ,openssl)
-       ("fontconfig" ,fontconfig)
+    (native-inputs
+     `(("cppunit" ,cppunit)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libjpeg" ,libjpeg)
        ("libtiff" ,libtiff)
-       ("libjpeg" ,libjpeg-8)
+       ("fontconfig" ,fontconfig)
        ("freetype" ,freetype)
+       ("libpng" ,libpng)
+       ("lua" ,lua-5.1)
+       ("openssl" ,openssl)
        ("zlib" ,zlib)))
     (arguments
      `(#:configure-flags '("-DPODOFO_BUILD_SHARED=ON"
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 7bf1d60f7c..88fa1aba68 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2017 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
@@ -81,7 +81,7 @@
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
-     `(("libjpeg" ,libjpeg-8)))         ;for lossy DNGs and old Kodak cameras
+     `(("libjpeg" ,libjpeg)))           ;for lossy DNGs and old Kodak cameras
     (propagated-inputs
      `(("lcms" ,lcms)))                 ;for color profiles
     (home-page "https://www.libraw.org")
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 1acab0de71..121ffab767 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -62,7 +62,7 @@
 (define-public php
   (package
     (name "php")
-    (version "7.2.4")
+    (version "7.2.8")
     (home-page "https://secure.php.net/")
     (source (origin
               (method url-fetch)
@@ -70,7 +70,7 @@
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "123s0lbyz4fxr3kk91r4v658mk899dym36lggxnx9pwd2jyv25kr"))
+                "03zv1y8ygzsir60617hinpji3f4irk79zbp3ar1b8zcapq40gfjk"))
               (modules '((guix build utils)))
               (snippet
                '(with-directory-excursion "ext"
@@ -248,6 +248,9 @@
                          ;; iconv breaks the loop after the first error with Termsig=11.
                          "ext/iconv/tests/iconv_strpos_variation4.phpt"
                          "ext/iconv/tests/iconv_strrpos_variation3.phpt"
+                         ;; Expects "invalid multibyte sequence" but got
+                         ;; "unknown error".
+                         "ext/iconv/tests/bug76249.phpt"
 
                          ;; XXX: These test failures appear legitimate, needs investigation.
                          ;; open_basedir() restriction failure.
@@ -288,7 +291,10 @@
                          "ext/mbstring/tests/mb_ereg_variation3.phpt"
                          "ext/mbstring/tests/mb_ereg_replace_variation1.phpt"
                          "ext/mbstring/tests/bug72994.phpt"
-                         "ext/ldap/tests/ldap_set_option_error.phpt"))
+                         "ext/ldap/tests/ldap_set_option_error.phpt"
+
+                         ;; Sometimes cannot start the LDAP server.
+                         "ext/ldap/tests/bug76248.phpt"))
 
              ;; Skip tests requiring network access.
              (setenv "SKIP_ONLINE_TESTS" "1")
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 2d865a92b3..ed8aa836fd 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
-;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
@@ -610,16 +610,17 @@ ECB and OFB).")
 (define-public python-asn1crypto
   (package
     (name "python-asn1crypto")
-    (version "0.22.0")
+    (version "0.24.0")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/wbond/asn1crypto/archive/"
-                            version ".tar.gz"))
-        (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/wbond/asn1crypto.git")
+              (commit version)))
+        (file-name (git-file-name name version))
         (sha256
          (base32
-          "1kn910896l3knmilla1c9ly20q181s43w1ah08lzkbm1h3j6pcz0"))))
+          "10lai2cs5mnz3gpaffbw1m7b885ls8328q5wxm35vfmcip1f0xmb"))))
     (build-system python-build-system)
     (home-page "https://github.com/wbond/asn1crypto")
     (synopsis "ASN.1 parser and serializer in Python")
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d350990c67..fc1ef3eb2a 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
-;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015, 2017 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
@@ -4210,23 +4210,53 @@ support for Python 3 and PyPy.  It is based on cffi.")
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
-        "1rk2dvy3fxrga6bvvxc2fi5lbaynm5h4a0w0aaxyn3bc77rszjg9"))))
+        "1rk2dvy3fxrga6bvvxc2fi5lbaynm5h4a0w0aaxyn3bc77rszjg9"))
+      (patches (search-patches "python-cairocffi-dlopen-path.patch"))))
     (build-system python-build-system)
     (outputs '("out" "doc"))
     (inputs
-     `(("gdk-pixbuf" ,gdk-pixbuf)
-       ("cairo" ,cairo)))
+     `(("glib" ,glib)
+       ("gtk+" ,gtk+)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("cairo" ,cairo)
+       ("pango" ,pango)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
+       ("python-pytest" ,python-pytest)
        ("python-sphinx" ,python-sphinx)
        ("python-docutils" ,python-docutils)))
     (propagated-inputs
      `(("python-xcffib" ,python-xcffib))) ; used at run time
     (arguments
      `(;; FIXME: Tests cannot find 'libcairo.so.2'.
-       #:tests? #f
+       #:tests? #t
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* (find-files "." "\\.py$")
+              (("dlopen\\(ffi, 'cairo'")
+               (string-append "dlopen(ffi, '" (assoc-ref inputs "cairo")
+                              "/lib/libcairo.so.2'"))
+              (("dlopen\\(ffi, 'gdk-3'")
+               (string-append "dlopen(ffi, '" (assoc-ref inputs "gtk+")
+                              "/lib/libgtk-3.so.0'"))
+              (("dlopen\\(ffi, 'gdk_pixbuf-2.0'")
+               (string-append "dlopen(ffi, '" (assoc-ref inputs "gdk-pixbuf")
+                              "/lib/libgdk_pixbuf-2.0.so.0'"))
+              (("dlopen\\(ffi, 'glib-2.0'")
+               (string-append "dlopen(ffi, '" (assoc-ref inputs "glib")
+                              "/lib/libglib-2.0.so.0'"))
+              (("dlopen\\(ffi, 'gobject-2.0'")
+               (string-append "dlopen(ffi, '" (assoc-ref inputs "glib")
+                              "/lib/libgobject-2.0.so.0'"))
+              (("dlopen\\(ffi, 'pangocairo-1.0'")
+               (string-append "dlopen(ffi, '" (assoc-ref inputs "pango")
+                              "/lib/libpangocairo-1.0.so.0'"))
+              (("dlopen\\(ffi, 'pango-1.0'")
+               (string-append "dlopen(ffi, '" (assoc-ref inputs "pango")
+                              "/lib/libpango-1.0.so.0'")))
+             #t))
          (add-after 'install 'install-doc
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
@@ -6284,14 +6314,14 @@ designed to efficiently cope with extremely large amounts of data.")
 (define-public python-pyasn1
   (package
     (name "python-pyasn1")
-    (version "0.4.2")
+    (version "0.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pyasn1" version))
        (sha256
         (base32
-         "05bxnr4wmrg62m4qr1pg1p3z7bhwrv74jll3k42pgxwl36kv0n6j"))))
+         "1z5h38anjzzrxpraa9iq9llffyx2zs8gx0q6dc1g029miwnn50gv"))))
     (build-system python-build-system)
     (home-page "http://pyasn1.sourceforge.net/")
     (synopsis "ASN.1 types and codecs")
@@ -6306,14 +6336,14 @@ suitable for a wide range of protocols based on the ASN.1 specification.")
 (define-public python-pyasn1-modules
   (package
     (name "python-pyasn1-modules")
-    (version "0.0.8")
+    (version "0.2.2")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "pyasn1-modules" version))
         (sha256
          (base32
-          "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
+          "0ivm850yi7ajjbi8j115qpsj95bgxdsx48nbjzg0zip788c3xkx0"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-pyasn1" ,python-pyasn1)))
@@ -12242,14 +12272,14 @@ pure Python module.")
 (define-public python-xenon
   (package
     (name "python-xenon")
-    (version "0.5.1")
+    (version "0.5.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "xenon" version))
        (sha256
         (base32
-         "14kby2y48vp3sgwxqlm5d5789yibqwb1qli5fwcmdqg3iayrbklc"))))
+         "029cbhysg2vr5n4jz8gpg2793f8wkwnqpr1qgv6c1dn685vy31mc"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-pyyaml" ,python-pyyaml)
@@ -12261,12 +12291,7 @@ pure Python module.")
      `(#:phases
        (modify-phases %standard-phases
          (add-before 'build 'patch-test-requirements
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Update requirements from dependency==version to
-             ;; dependency>=version.
-             (substitute* "requirements.txt"
-               (("==") ">=")
-               ((",<1.5.0") ""))
+           (lambda _
              ;; Remove httpretty dependency for tests.
              (substitute* "setup.py"
                (("httpretty") ""))
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 1602fd5d5e..6b85fe68e3 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -446,6 +446,29 @@ outcomes of a code example.")
     (propagated-inputs
      `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
 
+(define-public ruby-rspec-its
+  (package
+    (name "ruby-rspec-its")
+    (version "1.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "rspec-its" version))
+       (sha256
+        (base32
+         "1pwphny5jawcm1hda3vs9pjv1cybaxy17dc1s75qd7drrvx697p3"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f)) ; needs cucumber.
+    (propagated-inputs
+     `(("ruby-rspec-core" ,ruby-rspec-core)
+       ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
+    (synopsis "RSpec extension gem for attribute matching")
+    (description "@code{rspec-its} is an RSpec extension gem for attribute
+matching.")
+    (home-page "https://github.com/rspec/rspec-its")
+    (license license:expat)))
+
 (define-public ruby-rspec-mocks
   (package
     (name "ruby-rspec-mocks")
@@ -883,7 +906,8 @@ complexity.")
            (lambda _
              ;; This is used in the Rakefile, and setting it avoids an issue
              ;; with running the tests.
-             (setenv "LIB" "options"))))))
+             (setenv "LIB" "options")
+             #t)))))
     (synopsis "Ruby library to parse options from *args cleanly")
     (description
      "The @code{options} library helps with parsing keyword options in Ruby
@@ -4982,3 +5006,28 @@ Markdown.")
 in standard Ruby syntax.")
     (home-page "https://github.com/ruby/rake")
     (license license:expat)))
+
+(define-public ruby-childprocess
+  (package
+    (name "ruby-childprocess")
+    (version "0.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "childprocess" version))
+       (sha256
+        (base32
+         "0a61922kmvcxyj5l70fycapr87gz1dzzlkfpq85rfqk5vdh3d28p"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec)))
+    (propagated-inputs
+     `(("ruby-ffi" ,ruby-ffi)))
+    (synopsis "Control external programs running in the background, in Ruby")
+    (description "@code{childprocess} provides a gem to control external
+programs running in the background, in Ruby.")
+    (home-page "http://github.com/enkessler/childprocess")
+    (license license:expat)))
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index bb6fea99a0..28bffb44bb 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -167,7 +167,7 @@ in turn be used to build the final Rust.")
     (snippet '(begin (delete-file-recursively "src/llvm") #t))
     (patches (map search-patch patches))))
 
-(define-public rust-1.19
+(define rust-1.19
   (package
     (name "rust")
     (version "1.19.0")
@@ -554,14 +554,28 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
          ((#:phases phases)
           `(modify-phases ,phases
              (add-after 'patch-cargo-tests 'patch-cargo-index-update
-               (lambda* _
+               (lambda _
                  (substitute* "src/tools/cargo/tests/generate-lockfile.rs"
                    ;; This test wants to update the crate index.
-                   (("fn no_index_update") "#[ignore]\nfn no_index_update"))))
+                   (("fn no_index_update") "#[ignore]\nfn no_index_update"))
+                 #t))
              (add-after 'configure 'enable-codegen-tests
-               (lambda* _
+               (lambda _
                  (substitute* "config.toml"
-                   (("codegen-tests = false") ""))))
+                   (("codegen-tests = false") ""))
+                 #t))
+             (replace 'patch-aarch64-test
+               (lambda _
+                 (substitute* "src/librustc_metadata/dynamic_lib.rs"
+                   ;; This test is known to fail on aarch64 and powerpc64le:
+                   ;; https://github.com/rust-lang/rust/issues/45410
+                   (("fn test_loading_cosine") "#[ignore]\nfn test_loading_cosine"))
+                 ;; This test fails on aarch64 with llvm@6.0:
+                 ;; https://github.com/rust-lang/rust/issues/49807
+                 ;; other possible solution:
+                 ;; https://github.com/rust-lang/rust/pull/47688
+                 (delete-file "src/test/debuginfo/by-value-self-argument-in-trait-impl.rs")
+                 #t))
              (delete 'ignore-glibc-2.27-incompatible-test))))))))
 
 (define-public rust-1.26
diff --git a/gnu/packages/scanner.scm b/gnu/packages/scanner.scm
index 33a573d531..d030d8ade5 100644
--- a/gnu/packages/scanner.scm
+++ b/gnu/packages/scanner.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -102,7 +103,7 @@ package contains the library, but no drivers.")
     (inherit sane-backends-minimal)
     (name "sane-backends")
     (inputs
-     `(("hplip" ,(@ (gnu packages cups) hplip))
+     `(("hplip" ,(@ (gnu packages cups) hplip-minimal))
        ,@(package-inputs sane-backends-minimal)))
     (arguments
      (substitute-keyword-arguments (package-arguments sane-backends-minimal)
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index 3e21cde83c..202716365b 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -132,7 +132,7 @@ joystick, and graphics hardware.")
 (define-public libmikmod
   (package
     (name "libmikmod")
-    (version "3.3.10")
+    (version "3.3.11.1")
     (source (origin
              (method url-fetch)
              (uri (list
@@ -144,7 +144,7 @@ joystick, and graphics hardware.")
                                   version "/libmikmod-" version ".tar.gz")))
              (sha256
               (base32
-               "0j7g4jpa2zgzw7x6s3rldypa7zlwjvn97rwx0sylx1iihhlzbcq0"))))
+               "06bdnhb0l81srdzg6gn2v2ydhhaazza7rshrcj3q8dpqr3gn97dd"))))
     (build-system gnu-build-system)
     (arguments
      ;; By default, libmikmod tries to dlopen libasound etc., which won't work
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 8be3ce1a80..d8c1e6df33 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -5642,6 +5642,26 @@ table made by the command @code{show256Colors()}.  You can also set the colors
 to any arbitrary string.  In this case, it is up to you to set valid values.")
     (license license:gpl3+)))
 
+(define-public r-txtplot
+  (package
+    (name "r-txtplot")
+    (version "1.0-3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "txtplot" version))
+       (sha256
+        (base32
+         "1949ab1bzvysdb79g8x1gaknj0ih3d6g63pv9512h5m5l3a6c31h"))))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/txtplot/")
+    (synopsis "Text-based plotting")
+    (description "This package provides functions to produce rudimentary ASCII
+graphics directly in the terminal window.  This package provides a basic
+plotting function (and equivalents of curve, density, acf and barplot) as well
+as a boxplot function.")
+    (license license:lgpl3+)))
+
 (define-public java-jdistlib
   (package
     (name "java-jdistlib")
diff --git a/gnu/packages/stb.scm b/gnu/packages/stb.scm
new file mode 100644
index 0000000000..df31bd0f86
--- /dev/null
+++ b/gnu/packages/stb.scm
@@ -0,0 +1,103 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages stb)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
+  #:use-module ((guix licenses) #:select (expat public-domain)))
+
+(define stb
+  ;; stb is a collection of libraries developed within the same repository.
+  ;; When updating this, remember to change versions below as appropriate.
+  (let ((commit "e6afb9cbae4064da8c3e69af3ff5c4629579c1d2")
+        (revision "0"))
+    (package
+      (name "stb")
+      (home-page "https://github.com/nothings/stb")
+      (version (git-version "0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "079nsn9bnb8c0vfq26g5l53q6gzx19a5x9q2nb55mpcljxsgxnmf"))
+                (file-name (git-file-name name version))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:modules ((ice-9 ftw)
+                    (ice-9 regex)
+                    (srfi srfi-26)
+                    ,@%gnu-build-system-modules)
+         #:phases (modify-phases %standard-phases
+                    (delete 'configure)
+                    (delete 'build)
+                    (replace 'check
+                      (lambda _
+                        (invoke "make" "-C" "tests" "CC=gcc")))
+                    (replace 'install
+                      (lambda* (#:key outputs #:allow-other-keys)
+                        (let ((out (assoc-ref outputs "out"))
+                              (files (make-regexp "\\.(c|h|md)$")))
+                          (for-each (lambda (file)
+                                      (install-file file out))
+                                    (scandir "." (cut regexp-exec files <>)))
+                          #t))))))
+      (synopsis "Single file libraries for C/C++")
+      (description
+       "This package contains a variety of small independent libraries for
+the C programming language.")
+      ;; The user can choose either license.
+      (license (list expat public-domain)))))
+
+(define (make-stb-header-package name version description)
+  (package
+    (inherit stb)
+    (name name)
+    (version version)
+    (source #f)
+    (inputs `(("stb" ,stb)))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder (begin
+                   (use-modules (guix build utils))
+                   (let ((stb (assoc-ref %build-inputs "stb"))
+                         (lib (string-join (string-split ,name #\-) "_"))
+                         (out (assoc-ref %outputs "out")))
+                     (install-file (string-append stb "/" lib ".h")
+                                   (string-append out "/include"))
+                     #t))))
+    (description description)))
+
+;; TODO: These descriptions are not translatable!  They should be
+;; converted to macros as outlined in <https://bugs.gnu.org/32155>.
+(define-public stb-image
+  (make-stb-header-package
+   "stb-image" "2.19"
+   "stb-image is a small and self-contained library for image loading or
+decoding from file or memory.  A variety of formats are supported."))
+
+(define-public stb-image-write
+  (make-stb-header-package
+   "stb-image-write" "1.09"
+   "stb-image-write is a small library for writing image files to the
+C@tie{}@code{stdio} interface."))
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 4c0bceedf6..58e3f02db8 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -30,16 +30,15 @@
 (define-public syncthing
   (package
     (name "syncthing")
-    (version "0.14.48")
+    (version "0.14.49")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/syncthing/syncthing"
                                   "/releases/download/v" version
                                   "/syncthing-source-v" version ".tar.gz"))
-              (patches (search-patches "syncthing-fix-crash.patch"))
               (sha256
                (base32
-                "0bxkm5jlj6l4gai23bg0y31brr80r9qllh1rdg29pahjn0c2b4ml"))
+                "06mzzj5iwgqw3yva7azrsqs9zpl84srbamza4gm03grp7v9gf3sj"))
               (modules '((guix build utils)))
               ;; Delete bundled ("vendored") free software source code.
               (snippet '(begin
@@ -130,7 +129,6 @@
        ("go-github-com-golang-groupcache-lru"
         ,go-github-com-golang-groupcache-lru)
        ("go-github-com-jackpal-gateway" ,go-github-com-jackpal-gateway)
-       ("go-github-com-kardianos-osext" ,go-github-com-kardianos-osext)
        ("go-github-com-kballard-go-shellquote"
         ,go-github-com-kballard-go-shellquote)
        ("go-github-com-lib-pq" ,go-github-com-lib-pq)
@@ -703,11 +701,11 @@ database in Go.")
       (license bsd-2))))
 
 (define-public go-github-com-thejerf-suture
-  (let ((commit "87e298c9891673c9ae76e10c2c9be589127e5f49")
+  (let ((commit "3f1fb62fe0a3cc6429122d7dc45588a8b59c5bb6")
         (revision "0"))
     (package
       (name "go-github-com-thejerf-suture")
-      (version (git-version "2.0.1" revision commit))
+      (version (git-version "2.0.3" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -716,7 +714,7 @@ database in Go.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0srw0g94z6jplvlsjqsr6wf7885alnbb6h4fhvbg2i7q1ia5ldy2"))))
+                  "0mp7gz6bp6xhggkgmbl33vpmrq3a6n2dkgcxbkb7csnpv4r4d59k"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "github.com/thejerf/suture"))
@@ -1088,8 +1086,8 @@ using sh's word-splitting rules.")
       (license expat))))
 
 (define-public go-github-com-syncthing-notify
-  (let ((commit "b9ceffc925039c77cd9e0d38f248279ccc4399e2")
-        (revision "0"))
+  (let ((commit "cdf89c4039d13726e227d0a472053ea19de021b4")
+        (revision "1"))
     (package
       (name "go-github-com-syncthing-notify")
       (version (git-version "0.0.0" revision commit))
@@ -1101,7 +1099,7 @@ using sh's word-splitting rules.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1scha9b2r35bvqzqx86sarzjxf72ywvj3g6n9pm3xq4i4xzpylxf"))))
+                  "1ra1id9r06i4q8vhrrv1zpybhjxs3361rg35758dxglkyk4pzk6j"))))
       (build-system go-build-system)
       (arguments
        '(#:import-path "github.com/syncthing/notify"))
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 246d85901c..2055034117 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -485,6 +485,8 @@ Mumble consists of two applications for separate usage:
              (uri (git-reference
                    (url "https://github.com/LubosD/twinkle")
                    (commit commit)))
+             (patches
+              (search-patches "twinkle-include-qregexpvalidator.patch"))
              (file-name (git-file-name name version))
              (sha256
               (base32
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index e89dc85d18..f1dca66552 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -520,13 +520,13 @@ netcat implementation that supports TLS.")
   (package
     (name "python-acme")
     ;; Remember to update the hash of certbot when updating python-acme.
-    (version "0.25.1")
+    (version "0.26.1")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "acme" version))
               (sha256
                (base32
-                "0d177dhy8a7472pz9v4blrlk02d8fp6s52li7z8v3dv97pvz7da7"))))
+                "1glhwqj6yyb11820lspgd0gl5dqdfljn43kcy4ar5caccpsbbrw6"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -577,7 +577,7 @@ netcat implementation that supports TLS.")
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "0kp56gwn1bnlrag9qidhm1i5ifdp5z6y1ravh3yimfrkc4cfa8sw"))))
+                "0rnayqhdabm0rljxh76blqd11h51dqnwlwvql0j6xwzpccym30s9"))))
     (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 054d1e4029..e897dff639 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
@@ -47,14 +47,14 @@
 (define-public tor
   (package
     (name "tor")
-    (version "0.3.3.7")
+    (version "0.3.3.9")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://dist.torproject.org/tor-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "036ybfvldj7yfci9ipjki8smpzyxdg8c5r12bghc9yxdqh9basza"))))
+               "0vyf5z0dn5jghp2qjp076aq62lsz9g32qv9jiqf08skf096nnd45"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list "--enable-gcc-hardening"
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 1cc0d5dfde..24bf5b4ed9 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -26,6 +26,7 @@
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Pierre Neidhardt <ambrevar@gmail.com>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2018 Brendan Tildesley <brendan.tildesley@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -612,14 +613,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
 (define-public ffmpeg
   (package
     (name "ffmpeg")
-    (version "4.0.1")
+    (version "4.0.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1vn04n0n46zdxq14cma3w8ml2ckh5jxwlybsc4xmvcqdqq0mqpv0"))))
+               "15rgzcmdccy4flajs63gkz4n3k24wkkg50r13l1r83lrxg4hqp59"))))
     (build-system gnu-build-system)
     (inputs
      `(("fontconfig" ,fontconfig)
@@ -788,26 +789,26 @@ audio/video codec library.")
 (define-public ffmpeg-3.4
   (package
     (inherit ffmpeg)
-    (version "3.4.3")
+    (version "3.4.4")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0p45s3h7mg7v0jm77bymw2617i08f086dlcdmaylnk7795yind3b"))))))
+               "1iizgnhjbhar9y1ykqlj1czqanlv24knkfq5vvfnppv5x00pcvrq"))))))
 
 (define-public ffmpeg-2.8
   (package
     (inherit ffmpeg)
-    (version "2.8.14")
+    (version "2.8.15")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "05m1272r5qa2r0ym5vq4figdfnpvcys1fgb1026n5s6xdjd1s1pg"))))
+               "065xbvnfmxfbfrc14cavpqyd2slil99vcjksw4ndb7w8zdh0wp3v"))))
     (arguments
      (substitute-keyword-arguments (package-arguments ffmpeg)
        ((#:configure-flags flags)
@@ -817,18 +818,48 @@ audio/video codec library.")
                     flag))
               ,flags))))))
 
+(define-public ffmpegthumbnailer
+  (package
+    (name "ffmpegthumbnailer")
+    (version "2.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/dirkvdb/"
+                                  name "/archive/" version ".tar.gz"))
+              (sha256
+               (base32
+                "13qs4iwd4l3iiim30s5051n80z0vgsnikym8vsn321cnm9algiwb"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("ffmpeg" ,ffmpeg)
+       ("libjpeg-turbo" ,libjpeg-turbo)
+       ("libpng" ,libpng)
+       ("gvfs" ,gvfs)))
+    (arguments
+     `(#:configure-flags (list "-DENABLE_GIO=ON" "-DENABLE_THUMBNAILER=ON")))
+    (home-page "https://github.com/dirkvdb/ffmpegthumbnailer")
+    (synopsis "Create thumbnails from video files")
+    (description "FFmpegthumbnailer is a lightweight video thumbnailer that
+can be used by file managers to create thumbnails for your video files.  The
+thumbnailer uses ffmpeg to decode frames from the video files, so supported
+videoformats depend on the configuration flags of ffmpeg.")
+    (license license:gpl2+)))
+
 (define-public vlc
   (package
     (name "vlc")
-    (version "3.0.3")
+    (version "3.0.3-1")
     (source (origin
              (method url-fetch)
              (uri (string-append
                    "https://download.videolan.org/pub/videolan/vlc/"
-                   version "/vlc-" version ".tar.xz"))
+                   (car (string-split version #\-))
+                   "/vlc-" version ".tar.xz"))
              (sha256
               (base32
-               "0lavzly8l0ll1d9iris9cnirgcs77g48lxj14058dxqkvd5v1a4v"))))
+               "1p7qvdvg9w4lz8vckzhn6bswfkq3qw7fqkgvwjcskdgc266xx7dw"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("flex" ,flex)
@@ -998,7 +1029,7 @@ treaming protocols.")
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("cdparanoia" ,cdparanoia)
-       ("ffmpeg" ,ffmpeg)
+       ("ffmpeg" ,ffmpeg-3.4)
        ("fontconfig" ,fontconfig)
        ("freetype" ,freetype)
 ;;        ("giflib" ,giflib) ; uses QuantizeBuffer, requires version >= 5
@@ -1075,7 +1106,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
 (define-public mpv
   (package
     (name "mpv")
-    (version "0.28.2")
+    (version "0.29.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1083,7 +1114,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
                     ".tar.gz"))
               (sha256
                (base32
-                "15fp4sa5glqhgidd54vs6knf9dp809wszzsqiqz5nyri4ph19nma"))
+                "06bk8836brzik1qmq8kycwg5n35r438sd2176k6msjg5rrwghakp"))
               (file-name (string-append name "-" version ".tar.gz"))))
     (build-system waf-build-system)
     (native-inputs
@@ -1224,7 +1255,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2018.06.19")
+    (version "2018.07.10")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://yt-dl.org/downloads/"
@@ -1232,7 +1263,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0ys2mc84r7mjpn7rykb57sn3ii1kp3divjdn2ivwqknj8jrzg3z6"))))
+                "1rigah941k2drzx5qz937lk68gw9jrizj5lgd9f9znp0bgi2d0xd"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
@@ -2336,7 +2367,7 @@ supported players in addition to this package.")
     (inputs
      `(("bzip2" ,bzip2)
        ("dbus-glib" ,dbus-glib)
-       ("ffmpeg" ,ffmpeg)
+       ("ffmpeg" ,ffmpeg-3.4)           ;compilation errors with ffmpeg-4
        ("fontconfig" ,fontconfig)
        ("freetype" ,freetype)
        ("glib" ,glib)
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index e36677282a..56bfa6ab28 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -27,12 +27,16 @@
   #:use-module (guix packages)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages fltk)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libidn)
+  #:use-module (gnu packages lua)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -41,9 +45,11 @@
   #:use-module (gnu packages qt)
   #:use-module (gnu packages image)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages webkit)
   #:use-module (gnu packages xorg)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system python))
 
 (define-public dillo
@@ -128,6 +134,68 @@ features including, tables, builtin image display, bookmarks, SSL and more.")
     ;; linking of the program with openssl.
     (license license:gpl1+)))
 
+(define-public luakit
+  (package
+    (name "luakit")
+    (version "2017.08.10")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/luakit/luakit/archive/" version
+                                  ".tar.gz"))
+              (sha256
+               (base32
+                "0dwxhnq90whakgdg21lzcf03n2g1c7hqgliwhav8av5na5mqpn93"))
+              (file-name (string-append name "-" version ".tar.gz"))))
+    (inputs
+     `(("lua-5.1", lua-5.1)
+       ("gtk+" ,gtk+)
+       ("gsettings-desktop-schemas", gsettings-desktop-schemas)
+       ("glib-networking", glib-networking)
+       ("lua5.1-filesystem", lua5.1-filesystem)
+       ("luajit", luajit)
+       ("webkitgtk", webkitgtk)
+       ("sqlite", sqlite)))
+    (native-inputs
+     `(("pkg-config", pkg-config)))
+    (build-system glib-or-gtk-build-system)
+    (arguments
+     '(#:make-flags
+       (let ((out (assoc-ref %outputs "out")))
+         (list
+          "CC=gcc"
+          "LUA_BIN_NAME=lua"
+          "DEVELOPMENT_PATHS=0"
+          (string-append "PREFIX=" out)
+          (string-append "XDGPREFIX=" out "/etc/xdg")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'lfs-workaround
+           (lambda _
+             (setenv "LUA_CPATH"
+                     (string-append
+                      (assoc-ref %build-inputs "lua5.1-filesystem")
+                      "/lib/lua/5.1/?.so;;"))
+             #t))
+         (delete 'configure)
+         (delete 'check)
+         (add-after 'install 'wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((luakit (assoc-ref outputs "out"))
+                    (lua5.1-filesystem (assoc-ref inputs "lua5.1-filesystem") )
+                    (gtk (assoc-ref inputs "gtk+"))
+                    (gtk-share (string-append gtk "/share")))
+               (wrap-program (string-append luakit "/bin/luakit")
+                 `("LUA_CPATH" prefix
+                   (,(string-append lua5.1-filesystem
+                                    "/lib/lua/5.1/?.so;;"))))
+               #t))))))
+    (synopsis "Fast, lightweight, and simple browser based on WebKit")
+    (description "Luakit is a fast, lightweight, and simple to use
+micro-browser framework extensible by Lua using the WebKit web content engine
+and the GTK+ toolkit.")
+    (home-page "https://luakit.github.io/")
+    (license license:gpl3+)))
+
 (define-public lynx
   (package
     (name "lynx")
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 06d0fec0b0..c4b78d0b64 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -122,14 +122,14 @@
 (define-public httpd
   (package
     (name "httpd")
-    (version "2.4.33")
+    (version "2.4.34")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://apache/httpd/httpd-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "01bghiq4pbgjbgd6gic0nb8bbk6mfpwx3gcsbf21f3dhb4c520ny"))))
+               "1w1q2smdgf6ln0x741lk5pv5r0gzrxj2iza1vslhifzy65bcjlzs"))))
     (build-system gnu-build-system)
     (native-inputs `(("pcre" ,pcre "bin")))       ;for 'pcre-config'
     (inputs `(("apr" ,apr)
@@ -719,7 +719,14 @@ current version of any major web browser.")
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
-               "13nrpvw8f1wx0ga7svbzld7pgrv8l172nangpipnj7jaf0lysz5z"))))
+               "13nrpvw8f1wx0ga7svbzld7pgrv8l172nangpipnj7jaf0lysz5z"))
+             (modules '((guix build utils)))
+             (snippet
+              '(begin
+                 ;; Remove code using the problematic JSON license (see
+                 ;; <https://www.gnu.org/licenses/license-list.html#JSON>).
+                 (delete-file-recursively "bin/jsonchecker")
+                 #t))))
     (build-system cmake-build-system)
     (arguments
      `(,@(if (string-prefix? "aarch64" (or (%current-target-system)
@@ -5705,14 +5712,20 @@ encoder/decoder based on the draft-12 specification for UBJSON.")
 (define-public java-tomcat
   (package
     (name "java-tomcat")
-    (version "8.5.28")
+    (version "8.5.32")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://apache/tomcat/tomcat-8/v"
                                   version "/src/apache-tomcat-" version "-src.tar.gz"))
               (sha256
                (base32
-                "0q2bc3sajrmcx3z3vhhwp78y47ryc2ky8ssbdmfk24zvqdb76hvl"))))
+                "1qjsr6zmkdciakya4jqz0ssnsk02qlmmd898c05rasfwcrpj0xi6"))
+              (modules '((guix build utils)))
+              ;; Delete bundled jars.
+              (snippet
+               '(begin
+                  (for-each delete-file (find-files "." "\\.jar$"))
+                  #t))))
     (build-system ant-build-system)
     (inputs
      `(("java-eclipse-jdt-core" ,java-eclipse-jdt-core)))
@@ -5734,6 +5747,14 @@ encoder/decoder based on the draft-12 specification for UBJSON.")
                (("depends=\"validate\"") "depends=\"build-prepare\"")
                ((",download-validate") ""))
              #t))
+         (add-after 'unpack 'strip-timestamps
+           (lambda _
+             (substitute* "build.xml"
+               (("<filter token=\"YEAR\" value=.*")
+                "<filter token=\"YEAR\" value=\"1970\"/>")
+               (("<filter token=\"VERSION_BUILT\" value=.*")
+                "<filter token=\"VERSION_BUILT\" value=\"Jan 1 1970 00:00:00 UTC\"/>"))
+             #t))
          (add-after 'unpack 'generate-properties
            (lambda _
              ;; This could have been passed to make-flags, but getcwd returns
@@ -5931,7 +5952,7 @@ or embedded instantiation.  This package provides utility classes.")
              #t)))))
     (inputs
      `(("slf4j" ,java-slf4j-api)
-       ("servlet" ,java-tomcat)
+       ("servlet" ,java-javaee-servletapi)
        ("util" ,java-eclipse-jetty-util)))
     (synopsis "Jetty :: IO Utility")
     (description "The Jetty Web Server provides an HTTP server and Servlet
@@ -5974,7 +5995,7 @@ or embedded instantiation.  This package provides IO-related utility classes."))
              #t)))))
     (inputs
      `(("slf4j" ,java-slf4j-api)
-       ("servlet" ,java-tomcat)
+       ("servlet" ,java-javaee-servletapi)
        ("io" ,java-eclipse-jetty-io)
        ("util" ,java-eclipse-jetty-util)))
     (synopsis "Jetty :: Http Utility")
@@ -6009,7 +6030,7 @@ or embedded instantiation.  This package provides HTTP-related utility classes."
              #t)))))
     (inputs
      `(("slf4j" ,java-slf4j-api)
-       ("servlet" ,java-tomcat)
+       ("servlet" ,java-javaee-servletapi)
        ("util" ,java-eclipse-jetty-util)))
     (synopsis "Jetty :: JMX Management")
     (description "The Jetty Web Server provides an HTTP server and Servlet
@@ -6090,7 +6111,7 @@ or embedded instantiation.  This package provides the JMX management.")))
              #t)))))
     (inputs
      `(("slf4j" ,java-slf4j-api)
-       ("servlet" ,java-tomcat)
+       ("servlet" ,java-javaee-servletapi)
        ("http" ,java-eclipse-jetty-http)
        ("io" ,java-eclipse-jetty-io)
        ("jmx" ,java-eclipse-jetty-jmx)
@@ -6286,7 +6307,7 @@ container.")))
        ("java-eclipse-jetty-servlet" ,java-eclipse-jetty-servlet)
        ("java-eclipse-jetty-security" ,java-eclipse-jetty-security)
        ("java-eclipse-jetty-xml" ,java-eclipse-jetty-xml)
-       ("java-tomcat" ,java-tomcat)))
+       ("java-javaee-servletapi" ,java-javaee-servletapi)))
     (native-inputs
      `(("java-eclipse-jetty-io" ,java-eclipse-jetty-io)
        ,@(package-native-inputs java-eclipse-jetty-util)))))
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index 2de4ff5d94..4562c817cd 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -223,7 +223,7 @@ integrate Windows applications into your desktop.")
 (define-public wine-staging-patchset-data
   (package
    (name "wine-staging-patchset-data")
-   (version "3.12")
+   (version "3.13")
    (source
     (origin
      (method url-fetch)
@@ -232,7 +232,7 @@ integrate Windows applications into your desktop.")
      (file-name (string-append name "-" version ".zip"))
      (sha256
       (base32
-       "1hjs36jw8k1d22c713wzwvyhfrb8mi85dpk9wpsggnnw2x57hzs0"))))
+       "0h27h4z4m2m77chp3alkv6fagppjhh9ys39d3n21j0yfjknyhdd8"))))
    (build-system trivial-build-system)
    (native-inputs
     `(("bash" ,bash)
@@ -279,7 +279,7 @@ integrate Windows applications into your desktop.")
               (file-name (string-append name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0zvqmd0018wvlxz4xbm5sbv7770j3l14q0ilpgs0jy49srcw116v"))))
+                "1m5v854r5wgw68b97j6wim1a8692x5sih25c0xp1yb13a94dg187"))))
     (inputs `(("autoconf" ,autoconf) ; for autoreconf
               ("gtk+" ,gtk+)
               ("libva" ,libva)
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 3e8f9fe4a7..b238ea4aad 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -3177,46 +3177,28 @@ This driver is intended for the spice qxl virtio device.")
     (license license:x11)))
 
 (define-public xf86-video-r128
-  ;; We need a newer version than 6.10.2 to build against the latest xorg-server.
-  ;; Remove this binding and the bootstrap inputs when >6.10.2 is released.
-  (let ((commit "c4c878d2ccb75fa75afe46e0e50ee9975c5c57fc")
-        (revision "0"))
-    (package
-      (name "xf86-video-r128")
-      (version (git-version "6.10.2" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url (string-append "https://anongit.freedesktop.org/git/xorg"
-                                          "/driver/" name ".git"))
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "01pff30zz4zxjhw28h8bn9x2kq7c6iswgn19b72wnfgl0arxb63j"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:phases (modify-phases %standard-phases
-                    (add-before 'bootstrap 'prevent-configure
-                      (lambda _
-                        ;; Prevent autogen from calling "./configure" as part of
-                        ;; the bootstrap step, which fails due to wrong shebang.
-                        (setenv "NOCONFIGURE" "1")
-                        #t)))))
-      (inputs `(("mesa" ,mesa)
-                ("xorgproto" ,xorgproto)
-                ("xorg-server" ,xorg-server)))
-      (native-inputs
-       `(("pkg-config" ,pkg-config)
-         ("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("libtool" ,libtool)))
-      (home-page "https://www.x.org/wiki/")
-      (synopsis "ATI Rage 128 video driver for X server")
-      (description
-       "xf86-video-r128 is a video driver for the Xorg X server.
+  (package
+    (name "xf86-video-r128")
+    (version "6.11.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://xorg/individual/driver/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0snvwmrh8dqyyaq7ggicym6yrsg4brygkx9156r0m095m7fp3rav"))))
+    (build-system gnu-build-system)
+    (inputs `(("mesa" ,mesa)
+              ("xorgproto" ,xorgproto)
+              ("xorg-server" ,xorg-server)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://www.x.org/wiki/")
+    (synopsis "ATI Rage 128 video driver for X server")
+    (description
+     "xf86-video-r128 is a video driver for the Xorg X server.
 This driver is intended for ATI Rage 128 based cards.")
-      (license license:x11))))
+    (license license:x11)))
 
 (define-public xf86-video-savage
   (package
@@ -5111,7 +5093,8 @@ over Xlib, including:
             (sha256
              (base32
               "0mm70y058r8s9y9jiv7q2myv0ycnaw3iqzm7d274410s0ik38w7q"))
-            (file-name "xorg-server-use-intel-only-on-pre-gen4.diff"))))))
+            (file-name "xorg-server-use-intel-only-on-pre-gen4.diff"))
+          (search-patch "xorg-server-rotate-fb.patch")))))
     (build-system gnu-build-system)
     (propagated-inputs
       `(("libpciaccess" ,libpciaccess)
@@ -5837,7 +5820,7 @@ programs that cannot use the window system directly.")
        ("xcb-proto" ,xcb-proto)
        ("xcb-util" ,xcb-util)
        ("xcb-util-wm" ,xcb-util-wm)))
-    (home-page "http://search.cpan.org/dist/X11-XCB")
+    (home-page "https://metacpan.org/release/X11-XCB")
     (synopsis "Perl bindings for libxcb")
     (description
      "These bindings wrap @code{libxcb} (a C library to speak with X11,
@@ -5864,7 +5847,7 @@ interface to its methods (using @code{Mouse}).")
      "X11::Protocol is a client-side interface to the X11 Protocol, allowing
 perl programs to display windows and graphics on X11 servers.")
     (home-page
-     (string-append "http://search.cpan.org/~smccam/X11-Protocol-" version))
+     (string-append "https://metacpan.org/release/SMCCAM/X11-Protocol-" version))
     ;; From the package README: "you can redistribute and/or modify it under
     ;; the same terms as Perl itself. (As an exception, the file
     ;; Keysyms.pm,which is derived from a file in the standard X11
@@ -5892,7 +5875,7 @@ perl programs to display windows and graphics on X11 servers.")
        ("perl-module-util" ,perl-module-util)))
     (propagated-inputs
      `(("perl-x11-protocol" ,perl-x11-protocol)))
-    (home-page "http://search.cpan.org/dist/X11-Protocol-Other/")
+    (home-page "https://metacpan.org/release/X11-Protocol-Other")
     (synopsis "Miscellaneous helpers for @code{X11::Protocol} connections")
     (description
      "@code{X11::Protocol::Other} contains window manager related functions for