summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2018-01-19 23:59:20 -0500
committerMark H Weaver <mhw@netris.org>2018-01-19 23:59:20 -0500
commite074a655dd6497daafbd62737e3b63f3d5aa7985 (patch)
tree2b198ba5c664cdd58e155f3c0113d1cebde0fc91 /gnu
parent6d7b26a39faf42c37f15dc64a30a77e5e194ea23 (diff)
parentccb5cac17be98aaa9c3225605d6170c675d8e8e6 (diff)
downloadguix-e074a655dd6497daafbd62737e3b63f3d5aa7985.tar.gz
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu')
-rw-r--r--gnu/build/file-systems.scm4
-rw-r--r--gnu/build/linux-boot.scm2
-rw-r--r--gnu/build/linux-container.scm14
-rw-r--r--gnu/build/vm.scm8
-rw-r--r--gnu/local.mk11
-rw-r--r--gnu/packages/admin.scm28
-rw-r--r--gnu/packages/algebra.scm8
-rw-r--r--gnu/packages/android.scm5
-rw-r--r--gnu/packages/aspell.scm18
-rw-r--r--gnu/packages/audio.scm30
-rw-r--r--gnu/packages/backup.scm54
-rw-r--r--gnu/packages/bittorrent.scm2
-rw-r--r--gnu/packages/boost.scm5
-rw-r--r--gnu/packages/bootloaders.scm11
-rw-r--r--gnu/packages/c.scm7
-rw-r--r--gnu/packages/ccache.scm15
-rw-r--r--gnu/packages/check.scm2
-rw-r--r--gnu/packages/code.scm20
-rw-r--r--gnu/packages/compression.scm15
-rw-r--r--gnu/packages/cpp.scm42
-rw-r--r--gnu/packages/cups.scm38
-rw-r--r--gnu/packages/databases.scm27
-rw-r--r--gnu/packages/debug.scm35
-rw-r--r--gnu/packages/disk.scm2
-rw-r--r--gnu/packages/dns.scm8
-rw-r--r--gnu/packages/emacs.scm88
-rw-r--r--gnu/packages/engineering.scm13
-rw-r--r--gnu/packages/file-systems.scm45
-rw-r--r--gnu/packages/flashing-tools.scm11
-rw-r--r--gnu/packages/game-development.scm90
-rw-r--r--gnu/packages/games.scm7
-rw-r--r--gnu/packages/geo.scm5
-rw-r--r--gnu/packages/gl.scm6
-rw-r--r--gnu/packages/glib.scm23
-rw-r--r--gnu/packages/gnupg.scm14
-rw-r--r--gnu/packages/gps.scm16
-rw-r--r--gnu/packages/haskell-check.scm10
-rw-r--r--gnu/packages/haskell.scm34
-rw-r--r--gnu/packages/image-viewers.scm32
-rw-r--r--gnu/packages/java.scm98
-rw-r--r--gnu/packages/kde.scm7
-rw-r--r--gnu/packages/language.scm3
-rw-r--r--gnu/packages/libedit.scm10
-rw-r--r--gnu/packages/linux.scm32
-rw-r--r--gnu/packages/lxde.scm36
-rw-r--r--gnu/packages/mail.scm20
-rw-r--r--gnu/packages/mate.scm4
-rw-r--r--gnu/packages/mc.scm21
-rw-r--r--gnu/packages/mp3.scm7
-rw-r--r--gnu/packages/mpd.scm34
-rw-r--r--gnu/packages/multiprecision.scm65
-rw-r--r--gnu/packages/ncurses.scm7
-rw-r--r--gnu/packages/ninja.scm52
-rw-r--r--gnu/packages/package-management.scm83
-rw-r--r--gnu/packages/parallel.scm22
-rw-r--r--gnu/packages/patches/dtc-32-bits-check.patch134
-rw-r--r--gnu/packages/patches/dtc-format-modifier.patch38
-rw-r--r--gnu/packages/patches/emacs-json-reformat-fix-tests.patch32
-rw-r--r--gnu/packages/patches/libexif-CVE-2016-6328.patch72
-rw-r--r--gnu/packages/patches/lxterminal-CVE-2016-10369.patch37
-rw-r--r--gnu/packages/patches/ninja-zero-mtime.patch19
-rw-r--r--gnu/packages/patches/slurm-configure-remove-nonfree-contribs.patch45
-rw-r--r--gnu/packages/patches/transmission-fix-dns-rebinding-vuln.patch302
-rw-r--r--gnu/packages/patches/webkitgtk-mitigate-spectre.patch107
-rw-r--r--gnu/packages/patchutils.scm15
-rw-r--r--gnu/packages/pcre.scm4
-rw-r--r--gnu/packages/photo.scm14
-rw-r--r--gnu/packages/python-crypto.scm37
-rw-r--r--gnu/packages/python.scm63
-rw-r--r--gnu/packages/readline.scm15
-rw-r--r--gnu/packages/ruby.scm90
-rw-r--r--gnu/packages/samba.scm60
-rw-r--r--gnu/packages/sdl.scm9
-rw-r--r--gnu/packages/shells.scm28
-rw-r--r--gnu/packages/speech.scm14
-rw-r--r--gnu/packages/storage.scm2
-rw-r--r--gnu/packages/sync.scm4
-rw-r--r--gnu/packages/syncthing.scm4
-rw-r--r--gnu/packages/text-editors.scm2
-rw-r--r--gnu/packages/tls.scm15
-rw-r--r--gnu/packages/toys.scm65
-rw-r--r--gnu/packages/valgrind.scm17
-rw-r--r--gnu/packages/version-control.scm12
-rw-r--r--gnu/packages/video.scm50
-rw-r--r--gnu/packages/vim.scm12
-rw-r--r--gnu/packages/virtualization.scm14
-rw-r--r--gnu/packages/webkit.scm5
-rw-r--r--gnu/packages/wine.scm21
-rw-r--r--gnu/packages/xfce.scm55
-rw-r--r--gnu/packages/xiph.scm21
-rw-r--r--gnu/packages/xml.scm32
-rw-r--r--gnu/packages/xorg.scm6
-rw-r--r--gnu/services/messaging.scm117
-rw-r--r--gnu/services/networking.scm113
-rw-r--r--gnu/services/nfs.scm2
-rw-r--r--gnu/services/web.scm229
-rw-r--r--gnu/system/vm.scm2
-rw-r--r--gnu/tests/messaging.scm89
-rw-r--r--gnu/tests/web.scm123
99 files changed, 2111 insertions, 1342 deletions
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index 3e516a4d3c..145b3b14e7 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -261,11 +261,11 @@ volume descriptor from ~s"
   "Return the raw contents of DEVICE's iso9660 primary volume descriptor
 as a bytevector, or #f if DEVICE does not contain an iso9660 file system."
   ;; Start reading at sector 16.
-  ;; Since we are not sure that the device contains an ISO9660 filesystem,
+  ;; Since we are not sure that the device contains an ISO9660 file system,
   ;; we have to find that out first.
   (if (read-superblock device (* 2048 16) 2048 iso9660-superblock?)
       (read-iso9660-primary-volume-descriptor device (* 2048 16))
-      #f)) ; Device does not contain an iso9660 filesystem.
+      #f)) ; Device does not contain an iso9660 file system.
 
 (define (iso9660-superblock-uuid sblock)
   "Return the modification time of an iso9660 primary volume descriptor
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index 997107a67a..0ab8391b0b 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -188,7 +188,7 @@ with the given MAJOR number, starting with MINOR."
     (lambda args
       (apply report-system-error name args))))
 
-;; Create a device node like the <device-node> passed here on the filesystem.
+;; Create a device node like the <device-node> passed here on the file system.
 (define create-device-node
   (match-lambda
     (($ <device-node> xname type major minor module)
diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm
index 70e789403f..65e1325577 100644
--- a/gnu/build/linux-container.scm
+++ b/gnu/build/linux-container.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -61,9 +61,14 @@ exists."
     (const #t)
     (lambda ()
       (thunk)
-      (primitive-exit 0))
+
+      ;; XXX: Somehow we sometimes get EBADF from write(2) or close(2) upon
+      ;; exit (coming from fd finalizers) when used by the Shepherd.  To work
+      ;; around that, exit forcefully so fd finalizers don't have a chance to
+      ;; run and fail.
+      (primitive-_exit 0))
     (lambda ()
-      (primitive-exit 1))))
+      (primitive-_exit 1))))
 
 (define (purify-environment)
   "Unset all environment variables."
@@ -335,7 +340,8 @@ return the exit status."
      (match (container-excursion pid
               (lambda ()
                 (close-port in)
-                (write (thunk) out)))
+                (write (thunk) out)
+                (close-port out)))
        (0
         (close-port out)
         (let ((result (read in)))
diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm
index 404f324045..fe003ea458 100644
--- a/gnu/build/vm.scm
+++ b/gnu/build/vm.scm
@@ -262,7 +262,7 @@ actual /dev name based on DEVICE."
 
 (define* (create-ext-file-system partition type
                                  #:key label uuid)
-  "Create an ext-family filesystem of TYPE on PARTITION.  If LABEL is true,
+  "Create an ext-family file system of TYPE on PARTITION.  If LABEL is true,
 use that as the volume name.  If UUID is true, use it as the partition UUID."
   (format #t "creating ~a partition...\n" type)
   (unless (zero? (apply system* (string-append "mkfs." type)
@@ -277,8 +277,8 @@ use that as the volume name.  If UUID is true, use it as the partition UUID."
 
 (define* (create-fat-file-system partition
                                  #:key label uuid)
-  "Create a FAT filesystem on PARTITION.  The number of File Allocation Tables
-will be determined based on filesystem size.  If LABEL is true, use that as the
+  "Create a FAT file system on PARTITION.  The number of File Allocation Tables
+will be determined based on file system size.  If LABEL is true, use that as the
 volume name."
   ;; FIXME: UUID is ignored!
   (format #t "creating FAT partition...\n")
@@ -425,7 +425,7 @@ GRUB configuration and OS-DRV as the stuff in it."
                             "run=/tmp/root/run"
                             ;; /mnt is used as part of the installation
                             ;; process, as the mount point for the target
-                            ;; filesystem, so create it.
+                            ;; file system, so create it.
                             "mnt=/tmp/root/mnt"
                             "--"
                             "-volid" ,(string-upcase volume-id)
diff --git a/gnu/local.mk b/gnu/local.mk
index fdb6cb1187..4490b2d0d2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -17,6 +17,7 @@
 # Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 # Copyright © 2017 Gábor Boskovits <boskovits@gmail.com>
 # Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
+# Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 #
 # This file is part of GNU Guix.
 #
@@ -345,6 +346,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/python.scm			\
   %D%/packages/python-crypto.scm		\
   %D%/packages/python-web.scm			\
+  %D%/packages/toys.scm				\
   %D%/packages/tryton.scm			\
   %D%/packages/qt.scm				\
   %D%/packages/ragel.scm			\
@@ -611,8 +613,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/doc++-include-directives.patch		\
   %D%/packages/patches/doc++-segfault-fix.patch			\
   %D%/packages/patches/doxygen-test.patch			\
-  %D%/packages/patches/dtc-format-modifier.patch		\
-  %D%/packages/patches/dtc-32-bits-check.patch			\
   %D%/packages/patches/dvd+rw-tools-add-include.patch 		\
   %D%/packages/patches/eigen-arm-neon-fixes.patch		\
   %D%/packages/patches/elfutils-tests-ptrace.patch		\
@@ -620,6 +620,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/einstein-build.patch			\
   %D%/packages/patches/emacs-exec-path.patch			\
   %D%/packages/patches/emacs-fix-scheme-indent-function.patch	\
+  %D%/packages/patches/emacs-json-reformat-fix-tests.patch	\
   %D%/packages/patches/emacs-highlight-stages-add-gexp.patch	\
   %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch	\
   %D%/packages/patches/emacs-source-date-epoch.patch		\
@@ -812,6 +813,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libevent-2.0-evbuffer-add-use-last-with-datap.patch	\
   %D%/packages/patches/libevent-2.1-dns-tests.patch		\
   %D%/packages/patches/libevent-2.1-skip-failing-test.patch	\
+  %D%/packages/patches/libexif-CVE-2016-6328.patch		\
   %D%/packages/patches/libexif-CVE-2017-7544.patch		\
   %D%/packages/patches/libgit2-0.25.1-mtime-0.patch		\
   %D%/packages/patches/libgdata-fix-tests.patch			\
@@ -871,7 +873,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/luminance-hdr-qt-printer.patch		\
   %D%/packages/patches/lvm2-static-link.patch			\
   %D%/packages/patches/lxsession-use-gapplication.patch         \
-  %D%/packages/patches/lxterminal-CVE-2016-10369.patch		\
   %D%/packages/patches/make-impure-dirs.patch			\
   %D%/packages/patches/mars-install.patch			\
   %D%/packages/patches/mars-sfml-2.3.patch			\
@@ -908,6 +909,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/nfs-utils-missing-headers.patch		\
   %D%/packages/patches/ngircd-handle-zombies.patch		\
   %D%/packages/patches/ninja-zero-mtime.patch			\
+  %D%/packages/patches/node-test-http2-server-rst-stream.patch	\
   %D%/packages/patches/nss-increase-test-timeout.patch		\
   %D%/packages/patches/nss-pkgconfig.patch			\
   %D%/packages/patches/nvi-assume-preserve-path.patch		\
@@ -1064,7 +1066,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/slim-sigusr1.patch			\
   %D%/packages/patches/slim-reset.patch				\
   %D%/packages/patches/slim-login.patch				\
-  %D%/packages/patches/slurm-configure-remove-nonfree-contribs.patch \
   %D%/packages/patches/sooperlooper-build-with-wx-30.patch 	\
   %D%/packages/patches/steghide-fixes.patch			\
   %D%/packages/patches/superlu-dist-scotchmetis.patch		\
@@ -1089,6 +1090,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/tipp10-fix-compiling.patch		\
   %D%/packages/patches/tipp10-remove-license-code.patch		\
   %D%/packages/patches/tk-find-library.patch			\
+  %D%/packages/patches/transmission-fix-dns-rebinding-vuln.patch	\
   %D%/packages/patches/ttf2eot-cstddef.patch			\
   %D%/packages/patches/ttfautohint-source-date-epoch.patch	\
   %D%/packages/patches/tophat-build-with-later-seqan.patch	\
@@ -1122,7 +1124,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/vsearch-unbundle-cityhash.patch		\
   %D%/packages/patches/vte-CVE-2012-2738-pt1.patch			\
   %D%/packages/patches/vte-CVE-2012-2738-pt2.patch			\
-  %D%/packages/patches/webkitgtk-mitigate-spectre.patch		\
   %D%/packages/patches/weechat-python.patch			\
   %D%/packages/patches/wicd-bitrate-none-fix.patch		\
   %D%/packages/patches/wicd-get-selected-profile-fix.patch	\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 81df265362..b35d0256cc 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -502,9 +502,9 @@ connection alive.")
 (define-public isc-dhcp
   (let* ((bind-major-version "9")
          (bind-minor-version "9")
-         (bind-patch-version "10")
+         (bind-patch-version "11")
          (bind-release-type "-P")         ; for patch release, use "-P"
-         (bind-release-version "3")      ; for patch release, e.g. "6"
+         (bind-release-version "1")      ; for patch release, e.g. "6"
          (bind-version (string-append bind-major-version
                                       "."
                                       bind-minor-version
@@ -514,14 +514,14 @@ connection alive.")
                                       bind-release-version)))
     (package
       (name "isc-dhcp")
-      (version "4.3.5")
+      (version "4.3.6")
       (source (origin
                 (method url-fetch)
                 (uri (string-append "http://ftp.isc.org/isc/dhcp/"
                                     version "/dhcp-" version ".tar.gz"))
                 (sha256
                  (base32
-                  "0m7rwxvpb7xrmfl9ynpckhl0hi0xgm9bq1fmbp2r68sxy5mr75gb"))))
+                  "06vgxhm6agzkp6r1jy10467vrfw2rzcp2mnkcph7ydziciisy7m4"))))
       (build-system gnu-build-system)
       (arguments
        `(#:parallel-build? #f
@@ -620,7 +620,7 @@ connection alive.")
                                         "/bind-" bind-version ".tar.gz"))
                     (sha256
                      (base32
-                      "00yh1d5shrq7y0kfwacax4f8dc0akaa2fha430j92n7mshms65m1"))))
+                      "1a4g6nzzrbmhngdgvgv1jjq4fm06m8fwc2a0gskkchplxl7dva20"))))
 
                 ;; When cross-compiling, we need the cross Coreutils and sed.
                 ;; Otherwise just use those from %FINAL-INPUTS.
@@ -853,7 +853,7 @@ system administrator.")
 (define-public sudo
   (package
     (name "sudo")
-    (version "1.8.21p2")
+    (version "1.8.22")
     (source (origin
               (method url-fetch)
               (uri
@@ -863,7 +863,7 @@ system administrator.")
                                     version ".tar.gz")))
               (sha256
                (base32
-                "0s33szq6q59v5s377l4v6ybsdy7pfq6sz7y364j4x09ssdn79ibl"))
+                "00pxp74xkwdcmrjwy55j0k8p684jk1zx3nzdc11v30q8q8kwnmkj"))
               (modules '((guix build utils)))
               (snippet
                '(delete-file-recursively "lib/zlib"))))
@@ -1078,7 +1078,7 @@ network, which causes enabled computers to power on.")
 (define-public dmidecode
   (package
     (name "dmidecode")
-    (version "3.0")
+    (version "3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1086,7 +1086,7 @@ network, which causes enabled computers to power on.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "0iby0xfk5x3cdr0x0gxj5888jjyjhafvaq0l79civ73jjfqmphvy"))))
+                "1h0sg0lxa15nzf8s7884p6q7p6md9idm0c79wyqmk32l4ndwwrnp"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases (delete 'configure))
@@ -1142,16 +1142,16 @@ development, not the kernel implementation of ACPI.")
 (define-public stress
   (package
     (name "stress")
-    (version "1.0.1")
+    (version "1.0.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://debian/pool/main/s/stress/stress_"
                                   version ".orig.tar.gz"))
               (sha256
                (base32
-                "1v9vnzlihqfjsxa93hdbrq72pqqk00dkylmlg8jpxhm7s1w9qfl1"))))
+                "0nw210jajk38m3y7h8s130ps2qsbz7j75wab07hi2r3hlz14yzh5"))))
     (build-system gnu-build-system)
-    (home-page "http://packages.debian.org/wheezy/stress")
+    (home-page "https://packages.debian.org/sid/stress")
     (synopsis "Impose load on and stress test a computer system")
     (description
      "Stress is a tool that imposes a configurable amount of CPU, memory, I/O,
@@ -1216,7 +1216,7 @@ characters can be replaced as well, as can UTF-8 characters.")
        ("e2fsprogs" ,e2fsprogs)
        ("libjpeg" ,libjpeg)
        ("ncurses" ,ncurses)))
-    (home-page "http://www.cgsecurity.org/wiki/TestDisk")
+    (home-page "https://www.cgsecurity.org/wiki/TestDisk")
     (synopsis "Data recovery tool")
     (description
      "TestDisk is a program for data recovery, primarily designed to help
@@ -1308,7 +1308,7 @@ track changes in important system configuration files.")
                 "0ssvnh4cvhya0c1j6k6192zvqcq7nc0x01fb5nwhr0prfqr0i8j8"))))
     (build-system gnu-build-system)
     (inputs `(("python" ,python)))
-    (home-page "http://people.redhat.com/sgrubb/libcap-ng/")
+    (home-page "https://people.redhat.com/sgrubb/libcap-ng/")
     (synopsis "Library for more easily working with POSIX capabilities")
     (description
      "The libcap-ng library is intended to make programming with POSIX
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 0e22e41326..5ec7f94d2d 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -134,7 +134,7 @@ solve the shortest vector problem.")
 (define-public pari-gp
   (package
    (name "pari-gp")
-   (version "2.9.3")
+   (version "2.9.4")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -142,7 +142,7 @@ solve the shortest vector problem.")
                   version ".tar.gz"))
             (sha256
               (base32
-                "0qqal1lpggd6dvs19svnz0dil86xk0xkcj5s3b7104ibkmvjfsp7"))))
+                "0ir6m3a8r46md5x6zk4xf159qra7aqparby9zk03k81hjrrxr72g"))))
    (build-system gnu-build-system)
    (native-inputs `(("texlive" ,texlive-tiny)))
    (inputs `(("gmp" ,gmp)
@@ -310,7 +310,7 @@ fast arithmetic.")
 (define-public arb
   (package
    (name "arb")
-   (version "2.10.0")
+   (version "2.12.0")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -319,7 +319,7 @@ fast arithmetic.")
             (file-name (string-append name "-" version ".tar.gz"))
             (sha256
               (base32
-                "0jwcv9ssvi8axb1y7m2h4ykgyl015cl6g28gfl92l4dgnag585ak"))))
+                "0j37xkxbqpra4sf0a96x4sqbl5fkal8d7c94bi9wdsqqj6kgcsil"))))
    (build-system gnu-build-system)
    (propagated-inputs
     `(("flint" ,flint))) ; flint.h is included by arf.h
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index b3ac4d1741..ed71077d5e 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2017 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -311,7 +312,7 @@ to a Unix shell that can run commands on the connected device or emulator.")
 (define-public android-udev-rules
   (package
     (name "android-udev-rules")
-    (version "20170910")
+    (version "20171113")
     (source
      (origin
        (method git-fetch)
@@ -320,7 +321,7 @@ to a Unix shell that can run commands on the connected device or emulator.")
              (commit version)))
        (file-name (string-append name "-" version "-checkout"))
        (sha256
-        (base32 "0vic40n3si0dxag3dyc3hi3pn7cjpm5q378x8v2ys19n3iz9fp1g"))))
+        (base32 "11gcnk6wjc2sw05hwi4xphvx9ksmkpvsdziaczymqxkaads3f1dy"))))
     (build-system trivial-build-system)
     (native-inputs `(("source" ,source)))
     (arguments
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index ec8fa05feb..e1fe3db755 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
@@ -268,10 +268,20 @@ dictionaries, including personal ones.")
                     (hunspell (string-append out "/share/hunspell"))
                     (myspell  (string-append out "/share/myspell"))
                     (doc      (string-append out "/share/doc/"
-                                             ,name)))
+                                             ,name))
+                    (dot-dic  ,(string-append "speller/" language ".dic")))
                (mkdir-p myspell)
-               (install-file ,(string-append "speller/" language ".dic")
-                             hunspell)
+
+               ;; Usually there's only a 'LANGUAGE.dic' file, but for the "en"
+               ;; dictionary, there no 'en.dic'.  Instead, there's a set of
+               ;; 'en*.dic' files, hence the 'find-files' call below.
+               (if (file-exists? dot-dic)
+                   (install-file dot-dic hunspell)
+                   (for-each (lambda (dic)
+                               (install-file dic hunspell))
+                             (find-files "speller"
+                                         ,(string-append language ".*\\.dic$"))))
+
                (install-file ,(string-append "speller/" language ".aff")
                              hunspell)
                (symlink hunspell (string-append myspell "/dicts"))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 456c6a9dcc..0046f9a73d 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
-;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -705,7 +705,7 @@ language and software synthesizer.")
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("fftw" ,fftw)))
-    (home-page "http://kokkinizita.linuxaudio.org")
+    (home-page "https://kokkinizita.linuxaudio.org")
     (synopsis "C++ wrapper around the ALSA API")
     (description
      "clalsadrv is a C++ wrapper around the ALSA API simplifying access to
@@ -744,7 +744,7 @@ ALSA PCM devices.")
                (("/usr/bin/install") (which "install"))
                (("/bin/rm") "#"))
              #t)))))
-    (home-page "http://kokkinizita.linuxaudio.org")
+    (home-page "https://kokkinizita.linuxaudio.org")
     (synopsis "LADSPA ambisonics plugins")
     (description
      "The AMB plugins are a set of LADSPA ambisonics plugins, mainly to be
@@ -781,7 +781,7 @@ horizontal rotator, square, hexagon and cube decoders.")
              (substitute* "Makefile"
                (("/usr") (assoc-ref outputs "out")))
              #t)))))
-    (home-page "http://kokkinizita.linuxaudio.org")
+    (home-page "https://kokkinizita.linuxaudio.org")
     (synopsis "Chorus, phaser, and vintage high-pass and low-pass filters")
     (description
      "This package provides various LADSPA plugins.  @code{cs_chorus} and
@@ -821,7 +821,7 @@ the non-linear circuit elements of their original analog counterparts.")
              (substitute* "Makefile"
                (("/usr") (assoc-ref outputs "out")))
              #t)))))
-    (home-page "http://kokkinizita.linuxaudio.org")
+    (home-page "https://kokkinizita.linuxaudio.org")
     (synopsis "LADSPA reverb plugin")
     (description
      "This package provides a stereo reverb LADSPA plugin based on the
@@ -857,7 +857,7 @@ well-known greverb.")
              (substitute* "Makefile"
                (("/usr") (assoc-ref outputs "out")))
              #t)))))
-    (home-page "http://kokkinizita.linuxaudio.org")
+    (home-page "https://kokkinizita.linuxaudio.org")
     (synopsis "LADSPA four-band parametric equalizer plugin")
     (description
      "This package provides a LADSPA plugin for a four-band parametric
@@ -902,7 +902,7 @@ for stage use.")
              (substitute* "Makefile"
                (("/usr") (assoc-ref outputs "out")))
              #t)))))
-    (home-page "http://kokkinizita.linuxaudio.org")
+    (home-page "https://kokkinizita.linuxaudio.org")
     (synopsis "LADSPA stereo width plugin")
     (description
      "This package provides a LADSPA plugin to manipulate the stereo width of
@@ -939,7 +939,7 @@ audio signals.")
                (("/usr") (assoc-ref outputs "out"))
                (("/bin/cp") (which "cp")))
              #t)))))
-    (home-page "http://kokkinizita.linuxaudio.org")
+    (home-page "https://kokkinizita.linuxaudio.org")
     (synopsis "LADSPA plugin for synthesizer oscillators")
     (description
      "The @code{blvco} LADSPA plugin provides three anti-aliased oscillators:
@@ -983,7 +983,7 @@ output of analog synthesizers such as the Moog Voyager.")
              (substitute* "Makefile"
                (("/usr") (assoc-ref outputs "out")))
              #t)))))
-    (home-page "http://kokkinizita.linuxaudio.org")
+    (home-page "https://kokkinizita.linuxaudio.org")
     (synopsis "LADSPA Autowah effect plugin")
     (description
      "This package provides a LADSPA plugin for a Wah effect with envelope
@@ -1019,7 +1019,7 @@ follower.")
              (substitute* "Makefile"
                (("/usr") (assoc-ref outputs "out")))
              #t)))))
-    (home-page "http://kokkinizita.linuxaudio.org")
+    (home-page "https://kokkinizita.linuxaudio.org")
     (synopsis "LADSPA stereo reverb plugin")
     (description
      "This package provides a LADSPA plugin for a stereo reverb effect.")
@@ -2739,7 +2739,7 @@ result.")
          ;; no configure script
          (delete 'configure))))
     (inputs `(("fftwf" ,fftwf)))
-    (home-page "http://kokkinizita.linuxaudio.org")
+    (home-page "https://kokkinizita.linuxaudio.org")
     (synopsis "Fast, partitioned convolution engine library")
     (description
      "Zita convolver is a C++ library providing a real-time convolution
@@ -2786,7 +2786,7 @@ engine.")
                                     "/lib/libzita-resampler.so.1"))))
          ;; no configure script
          (delete 'configure))))
-    (home-page "http://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
+    (home-page "https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
     (synopsis "C++ library for resampling audio signals")
     (description
      "Libzita-resampler is a C++ library for resampling audio signals.  It is
@@ -2830,7 +2830,7 @@ provide high-quality sample rate conversion.")
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("fftw" ,fftw)))
-    (home-page "http://kokkinizita.linuxaudio.org")
+    (home-page "https://kokkinizita.linuxaudio.org")
     (synopsis "C++ wrapper around the ALSA API")
     (description
      "Zita-alsa-pcmi is a C++ wrapper around the ALSA API.  It provides easy
@@ -2987,7 +2987,7 @@ code, used in @code{libtoxcore}.")
 (define-public gsm
   (package
     (name "gsm")
-    (version "1.0.14")
+    (version "1.0.17")
     (source
      (origin
        (method url-fetch)
@@ -2996,7 +2996,7 @@ code, used in @code{libtoxcore}.")
                        "-" version ".tar.gz"))
        (sha256
         (base32
-         "0b1mx69jq88wva3wk0hi6fcl5a52qhnq2f9p3f3jdh5k61ma252q"))))
+         "00bns0d4wwrvc60lj2w7wz4yk49q1f6rpdrwqzrxsha9d78mfnl5"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "tst"
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 6da09750e8..61d4acaefc 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -250,49 +250,47 @@ random access nor for in-place modification.")
 (define-public rdup
   (package
     (name "rdup")
-    (version "1.1.14")
+    (version "1.1.15")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://archive.miek.nl/projects/rdup/rdup-"
-                           version ".tar.bz2"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (uri (string-append "https://github.com/miekg/rdup/archive/"
+                           version ".tar.gz"))
        (sha256
         (base32
-         "0aklwd9v7ix0m4ayl762sil685f42cwljzx3jz5skrnjaq32npmj"))
-       (modules '((guix build utils)))
-       (snippet
-        ;; Some test scripts are missing shebangs, which cause "could not
-        ;; execute" errors.  Add shebangs.
-        '(for-each
-          (lambda (testscript)
-            (with-atomic-file-replacement
-                (string-append "testsuite/rdup/" testscript)
-              (lambda (in out)
-                (begin
-                  (format out "#!/bin/sh\n" )
-                  (dump-port in out)))))
-          '("rdup.hardlink.helper"
-            "rdup.hardlink-strip.helper"
-            "rdup.hardlink-strip2.helper"
-            "rdup.pipeline.helper")))))
+         "1jr91hgcf0rrpanqlwws72ql9db6d6grs2i122ki1s4bx0vqqyvq"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)
+
+       ;; For tests.
        ("dejagnu" ,dejagnu)))
     (inputs
      `(("glib" ,glib)
        ("pcre" ,pcre)
        ("libarchive" ,libarchive)
+       ("mcrypt" ,mcrypt)
        ("nettle" ,nettle)))
     (arguments
      `(#:parallel-build? #f             ;race conditions
        #:phases
        (modify-phases %standard-phases
-         (add-before 'build 'remove-Werror
-           ;; rdup uses a deprecated function from libarchive
+         (add-after 'unpack 'bootstrap
            (lambda _
-             (substitute* "GNUmakefile"
-               (("^(CFLAGS=.*)-Werror" _ front) front))
+             (invoke "autoreconf")))
+         (add-before 'build 'qualify-inputs
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; This script is full of pitfalls.  Fix some that particularly
+             ;; affect Guix users & leave the rest as reader excercises.
+             (substitute* "rdup-simple"
+               ;; Use the input ‘mcrypt’, not whatever's in $PATH at run time.
+               (("([' ])mcrypt " all delimiter)
+                (string-append delimiter (which "mcrypt") " "))
+               ;; Avoid frivolous dependency on ‘which’ with a shell builtin.
+               (("which") "command -v"))
              #t))
          (add-before 'check 'pre-check
            (lambda _
@@ -300,7 +298,7 @@ random access nor for in-place modification.")
              (substitute* "testsuite/rdup/rdup.rdup-up-t-with-file.exp"
                (("/bin/cat") (which "cat")))
              #t)))))
-    (home-page "http://archive.miek.nl/projects/rdup/index.html")
+    (home-page "https://github.com/miekg/rdup")
     (synopsis "Provide a list of files to backup")
     (description
      "Rdup is a utility inspired by rsync and the plan9 way of doing backups.
@@ -406,7 +404,7 @@ rdiff-backup is easy to use and settings have sensible defaults.")
        ("rsync" ,rsync)))
     (home-page "http://rsnapshot.org")
     (synopsis "Deduplicating snapshot backup utility based on rsync")
-    (description "rsnapshot is a filesystem snapshot utility based on rsync.
+    (description "rsnapshot is a file system snapshot utility based on rsync.
 rsnapshot makes it easy to make periodic snapshots of local machines, and
 remote machines over SSH.  To reduce the disk space required for each backup,
 rsnapshot uses hard links to deduplicate identical files.")
@@ -797,7 +795,7 @@ any special software, on top of SSH.")
     (synopsis "Fast, disk based, rotating network backup system")
     (description
      "With dirvish you can maintain a set of complete images of your
-filesystems with unattended creation and expiration.  A dirvish backup vault
+file systems with unattended creation and expiration.  A dirvish backup vault
 is like a time machine for your data. ")
     (license (license:fsf-free "file://COPYING"
                                "Open Software License 2.0"))))
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index eca0646200..053988c8db 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -66,6 +66,8 @@
               (uri (string-append
                     "https://transmission.cachefly.net/transmission-"
                     version ".tar.xz"))
+              ;; CVE-2018-5702
+              (patches (search-patches "transmission-fix-dns-rebinding-vuln.patch"))
               (sha256
                (base32
                 "0pykmhi7pdmzq47glbj8i2im6iarp4wnj4l1pyvsrnba61f0939s"))))
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index 4c7308e9d6..91dd2f9156 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -112,14 +113,14 @@ across a broad spectrum of applications.")
 (define-public mdds
   (package
     (name "mdds")
-    (version "1.2.2")
+    (version "1.3.1")
     (source (origin
              (method url-fetch)
              (uri (string-append
                    "http://kohei.us/files/mdds/src/mdds-" version ".tar.bz2"))
              (sha256
               (base32
-               "17fcjhsq3bzqm7ba9sgp6my3y4226jnwai6q5jq3810i745p67hl"))))
+               "18g511z1lgfxrga2ld9yr95phmyfbd3ymbv4q5g5lyjn4ljcvf6w"))))
     (build-system gnu-build-system)
     (propagated-inputs
       `(("boost" ,boost))) ; inclusion of header files
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 5884cbd750..79a3c5f8bc 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -299,7 +300,7 @@ menu to select one of the installed operating systems.")
 (define-public dtc
   (package
     (name "dtc")
-    (version "1.4.5")
+    (version "1.4.6")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -307,11 +308,7 @@ menu to select one of the installed operating systems.")
                     "dtc-" version ".tar.xz"))
               (sha256
                (base32
-                "08gnl39i4xy3dm8iqwlz2ygx0ml1bgc5kpiys5ll1wvah1j72b04"))
-              ;; Fix build and tests on 32 bits platforms.
-              ;; Will probably be fixed in 1.4.6 release.
-              (patches (search-patches "dtc-format-modifier.patch"
-                                       "dtc-32-bits-check.patch"))))
+                "0zkvih0fpwvk31aqyyfy9kn13nbi76c21ihax15p6h1wrjzh48rq"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("bison" ,bison)
@@ -327,7 +324,7 @@ menu to select one of the installed operating systems.")
              "INSTALL=install")
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure))))
+         (delete 'configure))))         ; no configure script
     (home-page "https://www.devicetree.org")
     (synopsis "Compiles device tree source files")
     (description "@command{dtc} compiles
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index d15d35e68d..b4e17cb53a 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -34,14 +35,14 @@
 (define-public tcc
   (package
     (name "tcc")                                  ;aka. "tinycc"
-    (version "0.9.26")
+    (version "0.9.27")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://savannah/tinycc/tcc-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "0wbdbdq6090ayw8bxnbikiv989kykff3m5rzbia05hrnwhd707jj"))))
+                "177bdhwzrnqgyrdv1dwvpd04fcxj68s5pm1dzwny6359ziway8yy"))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)
                      ("texinfo" ,texinfo)))
@@ -71,6 +72,8 @@
 written in C.  It supports ANSI C with GNU and extensions and most of the C99
 standard.")
     (home-page "http://www.tinycc.org/")
+    ;; An attempt to re-licence tcc under the Expat licence is underway but not
+    ;; (if ever) complete.  See the RELICENSING file for more information.
     (license license:lgpl2.1+)))
 
 (define-public tcc-wrapper
diff --git a/gnu/packages/ccache.scm b/gnu/packages/ccache.scm
index 590fdb0ea1..82e1901aaf 100644
--- a/gnu/packages/ccache.scm
+++ b/gnu/packages/ccache.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,7 +30,7 @@
 (define-public ccache
   (package
     (name "ccache")
-    (version "3.3.4")
+    (version "3.3.5")
     (source
      (origin
       (method url-fetch)
@@ -37,7 +38,7 @@
                           version ".tar.xz"))
       (sha256
        (base32
-        "0ks0vk408mdppfbk8v38p46fqx3p30r9a9cwiia43373i7rmpw94"))))
+        "1iih5d171rq29366c1z90dri2h8173yyc8rm2740wxiqx6k7c18r"))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)     ;for test.sh
                      ("which" ,(@ (gnu packages base) which))))
@@ -47,8 +48,14 @@
                  (add-before 'check 'setup-tests
                    (lambda _
                      (substitute* '("test/test_hashutil.c" "test.sh")
-                       (("#!/bin/sh") (string-append "#!" (which "sh")))
-                       (("which") (which "which")))
+                       (("#!/bin/sh") (string-append "#!" (which "sh"))))
+                     #t))
+                 (add-before 'check 'munge-failing-test
+                   (lambda _
+                     ;; XXX The new ‘Multiple -fdebug-prefix-map’ test added in
+                     ;; 3.3.5 fails (why?).  Force it to report success instead.
+                     (substitute* "test.sh"
+                       (("grep \"name\"") "true"))
                      #t)))))
     (home-page "https://ccache.samba.org/")
     (synopsis "Compiler cache")
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 80a5a22f2c..76e356ec88 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -998,7 +998,7 @@ testing frameworks.")
     (synopsis "Test utilities for code working with files and commands")
     (description
      "Testpath is a collection of utilities for Python code working with files
-and commands.  It contains functions to check things on the filesystem, and
+and commands.  It contains functions to check things on the file system, and
 tools for mocking system commands and recording calls to those.")
     (license license:expat)))
 
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index 81e3ae6b64..042ea73a8c 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
@@ -359,23 +359,23 @@ stack traces.")
 (define-public lcov
   (package
     (name "lcov")
-    (version "1.12")
+    (version "1.13")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/ltp/Coverage%20Analysis"
                                   "/LCOV-" version "/lcov-" version ".tar.gz"))
               (sha256
                (base32
-                "19wfifdpxxivhq9adbphanjfga9bg9spms9v7c3589wndjff8x5l"))))
+                "08wabnb0gcjqk0qc65a6cgbbmz6b8lvam3p7byh0dk42hj3jr5s4"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:make-flags (let ((out (assoc-ref %outputs "out")))
-                      (list (string-append "PREFIX=" out)
-                            (string-append "BIN_DIR=" out "/bin")
-                            (string-append "MAN_DIR=" out "/share/man")))
-       #:phases (modify-phases %standard-phases
-                  (delete 'configure))
-       #:tests? #f))                              ;no 'check' target
+     '(#:make-flags
+       (let ((out (assoc-ref %outputs "out")))
+         (list (string-append "PREFIX=" out)))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))           ; no configure script
+       #:tests? #f))                    ; no 'check' target
     (inputs `(("perl" ,perl)))
     (home-page "http://ltp.sourceforge.net/coverage/lcov.php")
     (synopsis "Code coverage tool that enhances GNU gcov")
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index c92442042f..65b7faaecb 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -719,7 +719,7 @@ writing of compressed data created with the zlib and bzip2 libraries.")
 (define-public lz4
   (package
     (name "lz4")
-    (version "1.8.0")
+    (version "1.8.1.2")
     (source
      (origin
        (method url-fetch)
@@ -727,15 +727,14 @@ writing of compressed data created with the zlib and bzip2 libraries.")
                            "v" version ".tar.gz"))
        (sha256
         (base32
-         "1xnckwwah74gl98gylf1b00vk4km1d8sgd8865h07ccvgbm8591c"))
+         "1y93h6dyi3026gvpzdv310ldcylnnhwf32n75mdjf8x9fvkskwqj"))
        (file-name (string-append name "-" version ".tar.gz"))))
     (build-system gnu-build-system)
     (native-inputs `(("valgrind" ,valgrind)))   ; for tests
     (arguments
      `(#:test-target "test"
-       #:parallel-tests? #f ; tests fail if run in parallel
        #:make-flags (list "CC=gcc"
-                          (string-append "PREFIX=" (assoc-ref %outputs "out")))
+                          (string-append "prefix=" (assoc-ref %outputs "out")))
        #:phases (modify-phases %standard-phases
                   (delete 'configure))))        ; no configure script
     (home-page "http://www.lz4.org")
@@ -1957,7 +1956,7 @@ algorithms in Java.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://download.savannah.gnu.org/releases/lzip/"
+       (uri (string-append "mirror://savannah/lzip/"
                            name "/" name "-" version ".tar.gz"))
        (sha256
         (base32 "1ax3d9cp66z1qb9q7lfzg5bpx9630xrxgq9a5sw569wm0qqgpg2q"))))
@@ -1984,7 +1983,7 @@ Lunzip is intended to be fully compatible with the regular lzip package.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://download.savannah.gnu.org/releases/lzip/"
+       (uri (string-append "mirror://savannah/lzip/"
                            name "/" name "-" version ".tar.gz"))
        (sha256
         (base32 "1brvsnpihzj81cf4wk2x5bnr2qldlq0wncpdbzxmzvxapm1cq2yc"))))
@@ -2010,7 +2009,7 @@ Clzip is intended to be fully compatible with the regular lzip package.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://download.savannah.gnu.org/releases/lzip/"
+       (uri (string-append "mirror://savannah/lzip/"
                            name "/" name "-" version ".tar.gz"))
        (sha256
         (base32 "13mssf3hrcnmd4ijbqnxfk0zgj1q5lvpxxkm1hmrbl1h73czhwi4"))))
@@ -2038,7 +2037,7 @@ corrupted input.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://download.savannah.gnu.org/releases/lzip/"
+       (uri (string-append "mirror://savannah/lzip/"
                            name "/" name "-" version ".tar.gz"))
        (sha256
         (base32 "0z2cs6vn4xl65wakd013xl3sdfpg8dr0cvcjwc2slh8y9bz7j7ax"))))
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 4fd499f5f3..7f711d5542 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,9 +22,15 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
-  #:use-module (gnu packages autotools))
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages tls))
 
 (define-public libzen
   (package
@@ -58,3 +65,36 @@
 strings, configuration, bit streams, threading, translation, and cross-platform
 operating system functions.")
     (license license:zlib)))
+
+(define-public rct
+  (let* ((commit "b3e6f41d9844ef64420e628e0c65ed98278a843a")
+         (revision "1")
+         (version (git-version "0.0.0" revision commit)))
+    (package
+      (name "rct")
+      (version version)
+      (home-page "https://github.com/Andersbakken/rct")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "1m2931jacka27ghnpgf1z1plkkr64z0pga4r4zdrfpp2d7xnrdvb"))
+                (file-name (git-file-name name version))))
+      (build-system cmake-build-system)
+      (arguments
+       '(#:configure-flags
+         '("-DWITH_TESTS=ON")))           ; To run the test suite
+      (native-inputs
+       `(("cppunit" ,cppunit)
+         ("pkg-config" ,pkg-config)))
+      (inputs
+       `(("openssl" ,openssl)
+         ("zlib" ,zlib)))
+      (synopsis "C++ library providing Qt-like APIs on top of the STL")
+      (description "Rct is a set of C++ tools that provide nicer (more Qt-like)
+ APIs on top of Standard Template Library (@dfn{STL}) classes.")
+      (license (list license:expat        ; cJSON
+                     license:bsd-4)))))   ; everything else (LICENSE.txt)
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index 974ef1c977..89c58f864b 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -487,7 +487,7 @@ device-specific programs to convert and print many types of files.")
 (define-public foomatic-filters
   (package
     (name "foomatic-filters")
-    (version "4.0.12")
+    (version "4.0.17")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -495,7 +495,7 @@ device-specific programs to convert and print many types of files.")
                     name "-" version ".tar.gz"))
               (sha256
                (base32
-                "17w26r15094j4fqifa7f7i7jad4gsy9zdlq69kffrykcw31qx3q8"))
+                "1qrkgbm5jay2r7sh9qbyf0aiyrsl1mdc844hxf7fhw95a0zfbqm2"))
               (patches
                (search-patches "foomatic-filters-CVE-2015-8327.patch"
                                "foomatic-filters-CVE-2015-8560.patch"))))
@@ -536,17 +536,15 @@ printer/driver specific, but spooler-independent PPD file.")
 
 (define-public foo2zjs
   (package
-    ;; The tarball is called "foo2zjs", but the web page talks about
-    ;; "foo2xqx".  Go figure!
     (name "foo2zjs")
-    (version "201709")
+    (version "20171202")
     (source (origin
               (method url-fetch)
               ;; XXX: This is an unversioned URL!
               (uri "http://foo2zjs.rkkda.com/foo2zjs.tar.gz")
               (sha256
                (base32
-                "0amjj3jr6s6h7crzxyx11v31sj0blz7k5c2vycz4gn8cxlmk3c7w"))))
+                "10m1ksbzqsrsl4faqyl73ahfnj2hv1y3zrmr366zvjg7w3l6ag5n"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -592,18 +590,22 @@ printer/driver specific, but spooler-independent PPD file.")
     (native-inputs
      `(("bc" ,bc)
        ("groff" ,groff)))
-    (home-page "http://foo2xqx.rkkda.com/")
-    (synopsis "Printer driver for XQX stream protocol")
+    (home-page "http://foo2zjs.rkkda.com/")
+    (synopsis "Printer driver for ZjStream-based printers")
     (description
-     "This package provides a printer driver notably for the ZJS and XQX
-protocols, which cover printers made by Konica, HP (LaserJet), Oki, Samsung,
-and more.  See @file{README} for details.")
-    (license license:gpl2+)))
+     "foo2zjs is a printer driver for printers that use the Zenographics
+ZjStream wire protocol for their print data, often erroneously referred to as
+winprinters or GDI printers.
+
+It supports Minolta/QMS@tie{}Magicolor, Minolta@tie{}Color@tie{}PageWorks/Pro,
+HP@tie{}LaserJet, and possibly other printers.  See @file{README} for details.")
+    (license (list license:expat        ; icc2ps/*.[ch]
+                   license:gpl2+))))    ; everything else
 
 (define-public escpr
   (package
     (name "escpr")
-    (version "1.6.17")
+    (version "1.6.18")
     ;; XXX: This currently works.  But it will break as soon as a newer
     ;; version is available since the URLs for older versions are not
     ;; preserved.  An alternative source will be added as soon as
@@ -611,12 +613,12 @@ and more.  See @file{README} for details.")
     (source (origin
               (method url-fetch)
               ;; The uri has to be chopped up in order to satisfy guix lint.
-              (uri (string-append "https://download3.ebz.epson.net/dsc/f/03/00/06/66/09/"
-                                  "4ac2bf69bb1ddf4a9ad525596615cbb40fe4dad5/"
-                                  "epson-inkjet-printer-escpr-1.6.17-1lsb3.2.tar.gz"))
+              (uri (string-append "https://download3.ebz.epson.net/dsc/f/03/00/06/86/80/"
+                                  "9955e43f3aead20366851d24cea65de779cf5aa7/"
+                                  "epson-inkjet-printer-escpr-1.6.18-1lsb3.2.tar.gz"))
               (sha256
                (base32
-                "0m6v1wdavw4r25jfywqchsx0v9ss1l5fr8vq9d0d8cmjnz8mqblv"))))
+                "137jf52dhi5v2rkmlw4b73f7r7f98m61dpgsb7yvqs2f0yhsjsb3"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 26ee48e9e6..34b77e6651 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
-;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
 ;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
@@ -291,18 +291,7 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
          "020yk7f1hw48clmf5501z3xv9shsdchyymcv0y2cci2c1xvr1mim"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:tests? #f ;; No testsuite.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'wrap-bin-es_dump_restore
-           (lambda* (#:key outputs #:allow-other-keys)
-             (wrap-program (string-append (assoc-ref outputs "out")
-                                          "/bin/es_dump_restore")
-               `("GEM_PATH" ":" prefix (,(string-append
-                                          (getenv "GEM_PATH")
-                                          ":"
-                                          (getenv "GEM_HOME")))))
-             #t)))))
+     '(#:tests? #f)) ;; No testsuite.
     (propagated-inputs
      `(("ruby-httpclient" ,ruby-httpclient)
        ("ruby-multi-json" ,ruby-multi-json)
@@ -475,8 +464,8 @@ applications.")
                    ;; individual executable files, with some being hundreds of
                    ;; megabytes in size.
                    (begin
-		     (apply
-                      invoke `("scons" ,@common-options "dbtest" "unittests"))
+                     (apply
+                       invoke `("scons" ,@common-options "dbtest" "unittests"))
                      (substitute* "build/unittests.txt"
                        ;; TODO: Don't run the async_stream_test, as it hangs
                        (("^build\\/opt\\/mongo\\/executor\\/async\\_stream\\_test\n$")
@@ -485,8 +474,8 @@ applications.")
                        ;; Expected 0UL != disks.size() (0 != 0) @src/mongo/util/procparser_test.cpp:476
                        (("^build\\/opt\\/mongo\\/util\\/procparser\\_test\n$")
                         ""))
-		     (invoke "python" "buildscripts/resmoke.py"
-			     "--suites=dbtest,unittests"
+                     (invoke "python" "buildscripts/resmoke.py"
+                             "--suites=dbtest,unittests"
                              (format #f  "--jobs=~a" (parallel-job-count)))))))
            (replace 'install
              (lambda _
@@ -509,7 +498,7 @@ RDBMS systems (which are deep in functionality).")
 (define-public mysql
   (package
     (name "mysql")
-    (version "5.7.20")
+    (version "5.7.21")
     (source (origin
              (method url-fetch)
              (uri (list (string-append
@@ -521,7 +510,7 @@ RDBMS systems (which are deep in functionality).")
                           name "-" version ".tar.gz")))
              (sha256
               (base32
-               "11v4g3igigv3zvknv67qml8in6fjrbs2vnr3q6bg6f62nydm95sk"))))
+               "1dq9bgnajf7cq3mrjkwv6w5nwslhs26lkrw56i7w4fbsq9wm087s"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 83346a4eb3..09efcbdd6c 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -143,27 +143,6 @@ intended for use by people who discover and report bugs in compilers and other
 tools that process C/C++ code.")
     (license ncsa)))
 
-(define qemu-2.3.0
-  (package
-    (inherit qemu-minimal)
-    (version "2.3.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://wiki.qemu-project.org/download/qemu-"
-                    version ".tar.bz2"))
-              (sha256
-               (base32
-                "120m53c3p28qxmfzllicjzr8syjv6v4d9rsyrgkp7gnmcgvvgfmn"))))
-    (arguments
-     ;; XXX: Disable tests because of GTester's rejection of duplicate test
-     ;; names, which wasn't addressed in this version of QEMU.
-     `(#:tests? #f
-       ,@(substitute-keyword-arguments (package-arguments qemu-minimal)
-           ((#:phases phases)
-            ;; We disable the tests so we skip the phase disabling the qga test.
-            `(modify-phases ,phases (delete 'disable-test-qga))))))))
-
 (define-public american-fuzzy-lop
   (let ((machine (match (or (%current-target-system)
                             (%current-system))
@@ -177,7 +156,7 @@ tools that process C/C++ code.")
                    (_                "UNSUPPORTED"))))
     (package
       (name "american-fuzzy-lop")
-      (version "2.49b")             ;It seems all releases have the 'b' suffix
+      (version "2.52b")             ;It seems all releases have the 'b' suffix
       (source
        (origin
          (method url-fetch)
@@ -185,22 +164,22 @@ tools that process C/C++ code.")
                              "afl-" version ".tgz"))
          (sha256
           (base32
-           "1lc8mpwlbyb1iil9961yfysp8l2l4nw0s07781m1haiz4jq2rigp"))))
+           "0ig0ij4n1pwry5dw1hk4q88801jzzy2cric6y2gd6560j55lnqa3"))))
       (build-system gnu-build-system)
       (inputs
        `(("custom-qemu"
-          ;; The afl-qemu tool builds qemu 2.3.0 with a few patches applied.
-          ,(package (inherit qemu-2.3.0)
+          ;; The afl-qemu tool builds qemu 2.10.0 with a few patches applied.
+          ,(package (inherit qemu-minimal)
              (name "afl-qemu")
              (inputs
               `(("afl-src" ,source)
-                ,@(package-inputs qemu-2.3.0)))
+                ,@(package-inputs qemu-minimal)))
              ;; afl only supports using a single afl-qemu-trace executable, so
              ;; we only build qemu for the native target.
              (arguments
               `(#:modules ((srfi srfi-1)
                            ,@%gnu-build-system-modules)
-                ,@(substitute-keyword-arguments (package-arguments qemu-2.3.0)
+                ,@(substitute-keyword-arguments (package-arguments qemu-minimal)
                     ((#:configure-flags config-flags)
                      ``(,(string-append "--target-list=" ,machine "-linux-user")
                         ,@(remove (λ (f) (string-prefix? "--target-list=" f))
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index e4d70ff820..c01faf5069 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -371,7 +371,7 @@ permit managing file systems not included in libparted.")
   (synopsis "Colourised @command{df} clone")
   (description "All-singing, all-dancing, fully colourised @command{df} clone
 written in Python.  It displays the amount of disk space available on the
-mounted filesystems, using different colours for different types of file
+mounted file systems, using different colours for different types of file
 systems.  Output format is completely customizable.")
   (license license:public-domain)))
 
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 987449aa02..e7b9b2250b 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -99,7 +99,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
 (define-public isc-bind
   (package
     (name "bind")
-    (version "9.11.2")
+    (version "9.11.2-P1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -107,7 +107,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0yn7wgi2y8mpmvbjbkl4va7p0xsnn48m4yjx6ynb1hzp423asikz"))))
+                "04hjvwvs7ssgj69lqparx0wj0w3xkc0x8y2iv62kzjighd41bhyf"))))
     (build-system gnu-build-system)
     (outputs `("out" "utils"))
     (inputs
@@ -284,7 +284,7 @@ asynchronous fashion.")
 (define-public unbound
   (package
     (name "unbound")
-    (version "1.6.7")
+    (version "1.6.8")
     (source
      (origin
        (method url-fetch)
@@ -292,7 +292,7 @@ asynchronous fashion.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "17qwfmlls0w9kpkya3dlpn44b3kr87wsswzg3gawc13hh8yx8ysf"))))
+         "0jfxhh4gc5amhndikskz1s7da27ycn442j3l20bm992n7zijid73"))))
     (build-system gnu-build-system)
     (outputs '("out" "python"))
     (native-inputs
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 2885a589a6..c981200002 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -26,7 +26,7 @@
 ;;; Copyright © 2017 George Clemmer <myglc2@gmail.com>
 ;;; Copyright © 2017 Feng Shu <tumashu@163.com>
 ;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2017, 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -2400,14 +2400,14 @@ source code using IPython.")
 (define-public emacs-debbugs
   (package
     (name "emacs-debbugs")
-    (version "0.14")
+    (version "0.15")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.gnu.org/packages/debbugs-"
                                   version ".tar"))
               (sha256
                (base32
-                "07wgcvg038l88gxvjr0gjpjhyk743w22x1rqghz3gkmif0g70say"))))
+                "1x7jw2ldgkknyxg7x9fhnqkary691icnysmi3xw0g2fjrvllzhqw"))))
     (build-system emacs-build-system)
     (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$")))
     (propagated-inputs
@@ -4309,16 +4309,16 @@ passive voice.")
     (name "emacs-org")
     ;; emacs-org-contrib inherits from this package.  Please update its sha256
     ;; checksum as well.
-    (version "20171224")
+    (version "20180103")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://elpa.gnu.org/packages/org-"
+              (uri (string-append "https://orgmode.org/elpa/org-"
                                   version ".tar"))
               (sha256
                (base32
-                "1s995y3aizzaldpqz6jg73w8c9kmdbn30chkslwylg3p98as1jsj"))))
+                "1hyw9sigcv9wn37y2icmhf1czf0s3dgvsmn36355l95zsw7hnvgj"))))
     (build-system emacs-build-system)
-    (home-page "http://orgmode.org/")
+    (home-page "https://orgmode.org/")
     (synopsis "Outline-based notes management and organizer")
     (description "Org is an Emacs mode for keeping notes, maintaining TODO
 lists, and project planning with a fast and effective plain-text system.  It
@@ -4332,11 +4332,11 @@ reproducible research.")
     (name "emacs-org-contrib")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://orgmode.org/elpa/org-plus-contrib-"
+              (uri (string-append "https://orgmode.org/elpa/org-plus-contrib-"
                                   (package-version emacs-org) ".tar"))
               (sha256
                (base32
-                "0lamkw5npcm0640c36zqdv8py5rbpr0pk1i4qdmfgrngy64v9f75"))))
+                "164i2asqh34p1g3iqsn7rziyxbi1ys8fwdmn7nsw5xph8qszv9zj"))))
     (arguments
      `(#:modules ((guix build emacs-build-system)
                   (guix build utils)
@@ -5951,6 +5951,53 @@ pair of minor modes which suppress all mouse events by intercepting them and
 running a customisable handler command (@code{ignore} by default). ")
     (license license:gpl3+)))
 
+(define-public emacs-json-reformat
+  (package
+    (name "emacs-json-reformat")
+    (version "0.0.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/gongo/json-reformat/archive/"
+                           version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "11fbq4scrgr7m0iwnzcrn2g7xvqwm2gf82sa7zy1l0nil7265p28"))
+       (patches (search-patches "emacs-json-reformat-fix-tests.patch"))))
+    (build-system emacs-build-system)
+    (propagated-inputs `(("emacs-undercover" ,emacs-undercover)))
+    (inputs
+     `(("emacs-dash" ,emacs-dash)         ; for tests
+       ("emacs-shut-up" ,emacs-shut-up))) ; for tests
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'check
+           (lambda* (#:key inputs #:allow-other-keys)
+             (zero? (system* "emacs" "--batch" "-L" "."
+                             "-L" (string-append
+                                   (assoc-ref inputs "emacs-undercover")
+                                   "/share/emacs/site-lisp/guix.d/undercover-"
+                                   ,(package-version emacs-undercover))
+                             "-L" (string-append
+                                   (assoc-ref inputs "emacs-dash")
+                                   "/share/emacs/site-lisp/guix.d/dash-"
+                                   ,(package-version emacs-dash))
+                             "-L" (string-append
+                                   (assoc-ref inputs "emacs-shut-up")
+                                   "/share/emacs/site-lisp/guix.d/shut-up-"
+                                   ,(package-version emacs-shut-up))
+                             "-l" "test/test-helper.el"
+                             "-l" "test/json-reformat-test.el"
+                             "-f" "ert-run-tests-batch-and-exit"))
+             #t)))))
+    (home-page "https://github.com/gongo/json-reformat")
+    (synopsis "Reformatting tool for JSON")
+    (description "@code{json-reformat} provides a reformatting tool for
+@url{http://json.org/, JSON}.")
+    (license license:gpl3+)))
+
 (define-public emacs-json-snatcher
   (package
     (name "emacs-json-snatcher")
@@ -5971,6 +6018,29 @@ running a customisable handler command (@code{ignore} by default). ")
 a @url{http://json.org/, JSON} file.")
     (license license:gpl3+)))
 
+(define-public emacs-json-mode
+  (package
+    (name "emacs-json-mode")
+    (version "1.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/joshwnj/json-mode/archive/"
+                           "v" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "06h45p4cn767pk9sqi2zb1c65wy5gyyijqxzpglp80zwxhvajdz5"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-json-reformat" ,emacs-json-reformat)
+       ("emacs-json-snatcher" ,emacs-json-snatcher)))
+    (home-page "https://github.com/joshwnj/json-mode")
+    (synopsis "Major mode for editing JSON files")
+    (description "@code{json-mode} extends the builtin js-mode syntax
+highlighting.")
+    (license license:gpl3+)))
+
 (define-public emacs-restclient
   (let ((commit "07a3888bb36d0e29608142ebe743b4362b800f40")
         (revision "1"))                 ;Guix package revision,
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index cf8df310b0..e94aeedf54 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -896,16 +897,16 @@ interface to select the best such procedures to use on a given system.")
 (define-public harminv
   (package
     (name "harminv")
-    (version "1.4")
+    (version "1.4.1")
     (source (origin
               (method url-fetch)
               (uri
-               (string-append
-                "http://ab-initio.mit.edu/harminv/harminv-"
-                version ".tar.gz"))
+               (string-append "https://github.com/stevengj/harminv/"
+                              "releases/download/v" version "/"
+                              name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1pmm8d6fx9ahhnk7w12bfa6zx3afbkg4gkvlvgwhpjxbcrvrp3jk"))))
+                "0w1n4d249vlpda0hi6z1v13qp21vlbp3ykn0m8qg4rd5132j7fg1"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -920,7 +921,7 @@ interface to select the best such procedures to use on a given system.")
      `(("fortran" ,gfortran)))
     (inputs
      `(("lapack" ,lapack)))
-    (home-page "http://ab-initio.mit.edu/wiki/index.php/Harminv")
+    (home-page "https://github.com/stevengj/harminv")
     (synopsis "Harmonic inversion solver")
     (description
      "Harminv is a free program (and accompanying library) to solve the problem of
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 621c70b0d5..1d73f4aef4 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -32,11 +32,13 @@
   #:use-module (gnu packages bison)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages datastructures)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages glib)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -130,10 +132,10 @@ single file can be mounted.")
        ;; FIXME: Tests require 'run-parts' which is not in Guix yet.
        #:tests? #f))
     (home-page "https://github.com/ReproducibleBuilds/disorderfs")
-    (synopsis "FUSE filesystem that introduces non-determinism")
+    (synopsis "FUSE file system that introduces non-determinism")
     (description
-     "An overlay FUSE filesystem that introduces non-determinism
-into filesystem metadata.  For example, it can randomize the order
+     "An overlay FUSE file system that introduces non-determinism
+into file system metadata.  For example, it can randomize the order
 in which directory entries are read.  This is useful for detecting
 non-determinism in the build process.")
     (license license:gpl3+)))
@@ -199,10 +201,45 @@ non-determinism in the build process.")
        ("zlib" ,zlib)))
     (home-page "https://www.gluster.org")
     (synopsis "Distributed file system")
-    (description "GlusterFS is a distributed scalable network filesystem
+    (description "GlusterFS is a distributed scalable network file system
 suitable for data-intensive tasks such as cloud storage and media streaming.
 It allows rapid provisioning of additional storage based on your storage
 consumption needs.  It incorporates automatic failover as a primary feature.
 All of this is accomplished without a centralized metadata server.")
     ;; The user may choose either LGPLv3+ or GPLv2 only.
     (license (list license:lgpl3+ license:gpl2+))))
+
+(define-public curlftpfs
+  (package
+    (name "curlftpfs")
+    (version "0.9.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/curlftpfs/curlftpfs/" version
+                           "/curlftpfs-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0n397hmv21jsr1j7zx3m21i7ryscdhkdsyqpvvns12q7qwwlgd2f"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-test
+           (lambda _
+             ;; One of the 512-Byte block counts is definitely wrong.
+             ;; See <https://sourceforge.net/p/curlftpfs/bugs/73/>.
+             (substitute* "tests/ftpfs-ls_unittest.c"
+              (("4426192") "12814800"))
+             #t)))))
+    (inputs
+     `(("curl" ,curl)
+       ("glib" ,glib)
+       ("fuse", fuse)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://curlftpfs.sourceforge.net/")
+    (synopsis "Mount remote file systems over FTP")
+    (description
+     "This is a file system client based on the FTP File Transfer Protocol.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index ef43310d77..9683c6b4a3 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -45,7 +46,7 @@
 (define-public flashrom
   (package
     (name "flashrom")
-    (version "0.9.9")
+    (version "1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -53,7 +54,7 @@
                     version ".tar.bz2"))
               (sha256
                (base32
-                "0i9wg1lyfg99bld7d00zqjm9f0lk6m0q3h3n9c195c9yysq5ccfb"))))
+                "0r7fkpfc8w51n8ffbhclj4wa3kwrk0ijv1acwpw5myx5bchzl0ip"))))
     (build-system gnu-build-system)
     (inputs `(("dmidecode" ,dmidecode)
               ("pciutils" ,pciutils)
@@ -64,10 +65,10 @@
      '(#:make-flags (list "CC=gcc"
                           (string-append "PREFIX=" %output)
                           "CONFIG_ENABLE_LIBUSB0_PROGRAMMERS=no")
-       #:tests? #f   ; no 'check' target
+       #:tests? #f                      ; no 'check' target
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)
+         (delete 'configure)            ; no configure script
          (add-before 'build 'patch-exec-paths
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "dmi.c"
@@ -76,7 +77,7 @@
                         (string-append (assoc-ref inputs "dmidecode")
                                        "/sbin/dmidecode"))))
              #t)))))
-    (home-page "http://flashrom.org/")
+    (home-page "https://flashrom.org/")
     (synopsis "Identify, read, write, erase, and verify ROM/flash chips")
     (description
      "flashrom is a utility for identifying, reading, writing,
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 363d9a2533..b719803934 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015, 2016, 2017 David Thompson <davet@gnu.org>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017 Julian Graham <joolean@gmail.com>
@@ -40,50 +40,50 @@
   #:use-module (guix build-system python)
   #:use-module (guix build-system scons)
   #:use-module (gnu packages)
+  #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages fltk)
   #:use-module (gnu packages fonts)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages fribidi)
+  #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnunet)
   #:use-module (gnu packages graphics)
   #:use-module (gnu packages graphviz)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages lua)
   #:use-module (gnu packages m4)
+  #:use-module (gnu packages mp3)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages music)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages qt)
+  #:use-module (gnu packages sdl)
+  #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages gl)
-  #:use-module (gnu packages linux)
-  #:use-module (gnu packages xorg)
   #:use-module (gnu packages xdisorg)
-  #:use-module (gnu packages fontutils)
-  #:use-module (gnu packages image)
-  #:use-module (gnu packages audio)
-  #:use-module (gnu packages pulseaudio)
-  #:use-module (gnu packages gnome)
-  #:use-module (gnu packages gtk)
-  #:use-module (gnu packages sdl)
-  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages xiph)
-  #:use-module (gnu packages lua)
-  #:use-module (gnu packages mp3)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages tls))
+  #:use-module (gnu packages xorg))
 
 (define-public bullet
   (package
     (name "bullet")
-    (version "2.86.1")
+    (version "2.87")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/bulletphysics/bullet3/"
@@ -91,7 +91,7 @@
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0nghzcl84p8di215p7xj0gy1hyy072hw2xk9cnmav9hv6bjb4n60"))))
+                "15azjc1jj8ak9ad7c5sbp9nv5gpqjsa0s9pc0bwy63w490f1b323"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags (list (string-append
@@ -102,7 +102,7 @@
      `(("glu" ,glu)
        ("libx11" ,libx11)
        ("mesa" ,mesa)))
-    (home-page "http://bulletphysics.org/")
+    (home-page "https://pybullet.org/wordpress/")
     (synopsis "3D physics engine library")
     (description
      "Bullet is a physics engine library usable for collision detection.  It
@@ -1150,3 +1150,55 @@ features design tools such as a visual editor, can import 3D models and
 provide high-quality 3D rendering, it contains an animation editor, and can be
 scripted in a Python-like language.")
     (license license:expat)))
+
+(define-public eureka
+  (package
+    (name "eureka")
+    (version "1.21")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/eureka-editor/Eureka/"
+                                  version "/eureka-"
+                                  ;; version without dots e.g 1.21 => 121
+                                  (string-join (string-split version #\.) "")
+                                  "-source.tar.gz"))
+              (sha256
+               (base32
+                "1a7pf7xi56fcz7jc8layih5gq5m66g2ss4x5j61kzgip07j6rkir"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f
+       #:make-flags
+       (let ((out (assoc-ref %outputs "out")))
+         (list (string-append "PREFIX=" out)))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'prepare-install-directories
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (mkdir-p (string-append out "/share"))
+
+               (with-fluids ((%default-port-encoding #f))
+                 (substitute* "./src/main.cc"
+                   (("/usr/local") out)))
+
+               (substitute* "Makefile"
+                 (("-o root") ""))))))))
+    (inputs `(("mesa" ,mesa)
+              ("libxft" ,libxft)
+              ("libxinerama" ,libxinerama)
+              ("libfontconfig" ,fontconfig)
+              ("libjpeg" ,libjpeg)
+              ("libpng" ,libpng)
+              ("fltk" ,fltk)
+              ("zlib" ,zlib)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("xdg-utils" ,xdg-utils)))
+    (synopsis "Doom map editor")
+    (description "Eureka is a map editor for the classic DOOM games, and a few
+related games such as Heretic and Hexen.  It comes with a 3d preview mode and
+a 2D editor view.")
+    (home-page "http://eureka-editor.sourceforge.net/")
+    (license license:gpl2+)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 058b87d3fe..2971644ddc 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -349,6 +349,13 @@ tired of cows, a variety of other ASCII-art messengers are available.")
     `(("prboom-plus" ,prboom-plus)))
    (home-page "https://freedoom.github.io/")
    (synopsis "Free content game based on the Doom engine")
+   (native-search-paths
+    (list (search-path-specification
+           (variable "DOOMWADDIR")
+           (files '("share/games/doom")))
+          (search-path-specification
+           (variable "DOOMWADPATH")
+           (files '("share/games/doom")))))
    (description
     "The Freedoom project aims to create a complete free content first person
 shooter game.  Freedoom by itself is just the raw material for a game: it must
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index c3a62c6417..5a24ed6146 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -37,7 +38,7 @@
 (define-public geos
   (package
     (name "geos")
-    (version "3.6.1")
+    (version "3.6.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://download.osgeo.org/geos/geos-"
@@ -45,7 +46,7 @@
                                   ".tar.bz2"))
               (sha256
                (base32
-                "1icz31kd5sml2kdxhjznvmv33zfr6nig9l0i6bdcz9q9g8x4wbja"))))
+                "0ak5szby29l9l0vy43dm5z2g92xzdky20q1gc1kah1fnhkgi6nh4"))))
     (build-system gnu-build-system)
     (arguments `(#:phases
                  (modify-phases %standard-phases
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 1dff039f57..fe7d2252ea 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -701,7 +702,7 @@ and visualizations.")
 (define-public gl2ps
   (package
     (name "gl2ps")
-    (version "1.3.9")
+    (version "1.4.0")
     (source
      (origin
        (method url-fetch)
@@ -710,7 +711,7 @@ and visualizations.")
              version ".tgz"))
        (sha256
         (base32
-         "0h1nrhmkc4qjw2ninwpj2zbgwhc0qg6pdhpsibbvry0d2bzhns4a"))))
+         "1qpidkz8x3bxqf69hlhyz1m0jmfi9kq24fxsp7rq6wfqzinmxjq3"))))
     (build-system cmake-build-system)
     (inputs
      `(("libpng" ,libpng)
@@ -726,6 +727,7 @@ capable of handling intersecting and stretched polygons, as well as
 non-manifold objects.  GL2PS provides many features including advanced
 smooth shading and text rendering, culling of invisible primitives and
 mixed vector/bitmap output.")
+    ;; GL2PS is dual-licenced and can be used under the terms of either.
     (license (list license:lgpl2.0+
                    (license:fsf-free "http://www.geuz.org/gl2ps/COPYING.GL2PS"
                                      "GPL-incompatible copyleft license")))))
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index ccb11565b3..5603e40379 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -24,25 +24,21 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages glib)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix utils)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix build-system perl)
-  #:use-module (guix build-system python)
   #:use-module (gnu packages)
-  #:use-module (gnu packages base)
   #:use-module (gnu packages backup)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages enlightenment)
+  #:use-module (gnu packages file)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages m4)
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
@@ -50,11 +46,14 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages bash)
-  #:use-module (gnu packages file)
-  #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages m4)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system perl)
+  #:use-module (guix build-system python)
+  #:use-module (guix download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
 
   ;; Export variables up-front to allow circular dependency with the 'xorg'
   ;; module.
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 880c7ca737..16685f6986 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -359,7 +360,7 @@ libskba (working with X.509 certificates and CMS data).")
 (define-public gpgme
   (package
     (name "gpgme")
-    (version "1.9.0")
+    (version "1.10.0")
     (source
      (origin
       (method url-fetch)
@@ -367,7 +368,7 @@ libskba (working with X.509 certificates and CMS data).")
                           ".tar.bz2"))
       (sha256
        (base32
-        "1ssc0gs02r4fasabk7c6v6r865k2j02mpb5g1vkpbmzsigdzwa8v"))))
+        "14q619lxbk64vz7lih5gjb928qm28jrnn1h3yhsrrff3jw8yv3qs"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gnupg" ,gnupg)))
@@ -376,15 +377,6 @@ libskba (working with X.509 certificates and CMS data).")
      `(("libgpg-error" ,libgpg-error)))
     (inputs
      `(("libassuan" ,libassuan)))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'configure 'patch-cmake-file
-           (lambda _
-             ;; Work around <https://bugs.gnupg.org/gnupg/issue2877>.
-             (substitute* "lang/cpp/src/GpgmeppConfig.cmake.in"
-               (("@libsuffix@") ".so"))
-             #t)))))
     (home-page "https://www.gnupg.org/related_software/gpgme/")
     (synopsis "Library providing simplified access to GnuPG functionality")
     (description
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index abdd024731..760d9852d7 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,7 +47,15 @@
                     version ".orig.tar.gz"))
               (sha256
                (base32
-                "0xf7wmy2m29g2lm8lqc74yf8rf7sxfl3cfwbk7dpf0yf42pb0b6w"))))
+                "0xf7wmy2m29g2lm8lqc74yf8rf7sxfl3cfwbk7dpf0yf42pb0b6w"))
+              (snippet
+               '(begin
+                  ;; Delete files under GPL-compatible licences but never used
+                  ;; on GNU systems, rather than bloating the LICENSE field.
+                  (with-directory-excursion "gpsbabel"
+                    (delete-file "gui/serial_mac.cc")           ; Apple MIT
+                    (delete-file "mingw/include/ddk/hidsdi.h")) ; public domain
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -76,7 +85,7 @@
     (native-inputs
      `(("which" ,which)
        ("libxml2" ,libxml2)))              ;'xmllint' needed for the KML tests
-    (home-page "http://www.gpsbabel.org/")
+    (home-page "https://www.gpsbabel.org/")
     (synopsis "Convert and exchange data with GPS and map programs")
     (description
      "GPSBabel converts waypoints, tracks, and routes between hundreds of
@@ -84,7 +93,8 @@ popular GPS receivers and mapping programs.  It contains extensive data
 manipulation abilities making it a convenient for server-side processing or as
 the back-end for other tools.  It does not convert, transfer, send, or
 manipulate maps.")
-    (license license:gpl2+)))
+    (license (list license:expat        ; shapelib/*.[ch]
+                   license:gpl2+))))    ; everything else
 
 (define-public gpscorrelate
   ;; This program is "lightly maintained", so to speak, so we end up taking it
diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index 45041c3698..d6d20218cf 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -583,7 +583,7 @@ JUnit tool for Java.")
     (arguments `(#:haddock? #f)) ; Haddock phase fails because there are no
                                  ; documentation files.
     (inputs `(("ghc-hspec-meta" ,ghc-hspec-meta)))
-    (home-page "http://hspec.github.io/")
+    (home-page "https://hspec.github.io/")
     (synopsis "Automatically discover and run Hspec tests")
     (description "hspec-discover is a tool which automatically discovers and
 runs Hspec tests.")
@@ -614,7 +614,7 @@ runs Hspec tests.")
        ("ghc-quickcheck" ,ghc-quickcheck)
        ("ghc-hspec-expectations" ,ghc-hspec-expectations)
        ("ghc-silently" ,ghc-silently)))
-    (home-page "http://hspec.github.io/")
+    (home-page "https://hspec.github.io/")
     (synopsis "Testing framework for Haskell")
     (description "This library exposes internal types and functions that can
 be used to extend Hspec's functionality.")
@@ -644,7 +644,7 @@ be used to extend Hspec's functionality.")
        ("ghc-setenv" ,ghc-setenv)
        ("ghc-random" ,ghc-random)
        ("ghc-quickcheck-io" ,ghc-quickcheck-io)))
-    (home-page "http://hspec.github.io/")
+    (home-page "https://hspec.github.io/")
     (synopsis "Version of Hspec to test Hspec itself")
     (description "This library provides a stable version of Hspec which is
 used to test the in-development version of Hspec.")
@@ -673,7 +673,7 @@ used to test the in-development version of Hspec.")
        ("ghc-hunit" ,ghc-hunit)
        ("ghc-stringbuilder" ,ghc-stringbuilder)
        ("ghc-hspec-meta" ,ghc-hspec-meta)))
-    (home-page "http://hspec.github.io/")
+    (home-page "https://hspec.github.io/")
     (synopsis "Testing Framework for Haskell")
     (description "This library provides the Hspec testing framework for
 Haskell, inspired by the Ruby library RSpec.")
@@ -699,7 +699,7 @@ Haskell, inspired by the Ruby library RSpec.")
        ("ghc-quickcheck" ,ghc-quickcheck)))
     (native-inputs
      `(("hspec-discover" ,hspec-discover)))
-    (home-page "http://hspec.github.io/")
+    (home-page "https://hspec.github.io/")
     (synopsis "Contributed functionality for Hspec")
     (description
      "This package provides contributed Hspec extensions.")
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index db3e400624..4f51af24c5 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -2045,7 +2045,7 @@ lines continued at an indented level below.")
 (define-public ghc-iproute
   (package
     (name "ghc-iproute")
-    (version "1.7.0")
+    (version "1.7.1")
     (source
      (origin
        (method url-fetch)
@@ -2055,7 +2055,7 @@ lines continued at an indented level below.")
              ".tar.gz"))
        (sha256
         (base32
-         "1ply0i110c2sppjbfyysgw48jfjnsbam5zwil8xws0hp20rh1pb5"))))
+         "1viyxq3m1aifl05w0hxwrhhhcfpmvwz4ymil2gngi4nfm0yd1f2p"))))
     (build-system haskell-build-system)
     (arguments `(#:tests? #f)) ; FIXME: Tests cannot find System.ByteOrder,
                                ; exported by ghc-byteorder.  Doctest issue.
@@ -2064,7 +2064,7 @@ lines continued at an indented level below.")
        ("ghc-byteorder" ,ghc-byteorder)
        ("ghc-network" ,ghc-network)
        ("ghc-safe" ,ghc-safe)))
-    (home-page "http://www.mew.org/~kazu/proj/iproute/")
+    (home-page "https://www.mew.org/~kazu/proj/iproute/")
     (synopsis "IP routing table")
     (description "IP Routing Table is a tree of IP ranges to search one of
 them on the longest match base.  It is a kind of TRIE with one way branching
@@ -4973,7 +4973,7 @@ do on-demand loading.")
 (define-public ghc-juicypixels
   (package
     (name "ghc-juicypixels")
-    (version "3.2.6.2")
+    (version "3.2.9.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://hackage.haskell.org/package/"
@@ -4981,7 +4981,7 @@ do on-demand loading.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0hxa57cdknz86zywpjwfbdhac5lmk7j0wd5hy4mcnb8mw6r2m592"))))
+                "14s57fgf6kd5n5al2kcvk1aaxbq1ph0r5h8blflrjkx83yl6r8yn"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-mtl" ,ghc-mtl)
@@ -5945,7 +5945,7 @@ supported.  A module of colour names (\"Data.Colour.Names\") is provided.")
          "0zkqihmdfz7bzv3sxh1p9ijl4vra880kfy3qy9h96flq7d2if0f2"))))
     (build-system haskell-build-system)
     (home-page "http://hackage.haskell.org/package/directory")
-    (synopsis "Platform-agnostic library for filesystem operations")
+    (synopsis "Platform-agnostic library for file system operations")
     (description
      "This library provides a basic set of operations for manipulating
 files and directories in a portable way.")
@@ -6206,7 +6206,7 @@ increasing type safety.")
        ("ghc-text" ,ghc-text)
        ("ghc-temporary" ,ghc-temporary)))
     (home-page "https://github.com/fpco/haskell-filesystem")
-    (synopsis "Consistent filesystem interaction across GHC versions")
+    (synopsis "Consistent file system interaction across GHC versions")
     (description
      "This is a small wrapper around the directory, unix, and Win32 packages,
 for use with system-filepath.  It provides a consistent API to the various
@@ -6427,7 +6427,7 @@ increasing type safety.")
        ("ghc-chell" ,ghc-chell)
        ("ghc-temporary" ,ghc-temporary)))
     (home-page "https://github.com/fpco/haskell-filesystem")
-    (synopsis "Consistent filesystem interaction across GHC versions")
+    (synopsis "Consistent file system interaction across GHC versions")
     (description
      "This is a small wrapper around the directory, unix, and Win32 packages,
 for use with system-filepath.  It provides a consistent API to the various
@@ -6459,7 +6459,7 @@ and Fortran complex data types.")
 (define-public ghc-hmatrix
   (package
     (name "ghc-hmatrix")
-    (version "0.17.0.2")
+    (version "0.18.1.0")
     (source
      (origin
        (method url-fetch)
@@ -6467,7 +6467,7 @@ and Fortran complex data types.")
              "http://hackage.haskell.org/package/hmatrix/hmatrix-"
              version ".tar.gz"))
        (sha256
-        (base32 "1fgsrh2y9y971pzrd3767rg97bjr1ghpdvwmn1nn65s90rc9bv98"))))
+        (base32 "07zkwvg872hfk6jyn4s54ws8mvclynazaxf7fsbqi16dmf9dn61c"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-random" ,ghc-random)
@@ -6489,7 +6489,7 @@ numerical computations based on BLAS and LAPACK.")
 (define-public ghc-hmatrix-gsl
   (package
     (name "ghc-hmatrix-gsl")
-    (version "0.17.0.0")
+    (version "0.18.0.1")
     (source
      (origin
        (method url-fetch)
@@ -6497,7 +6497,7 @@ numerical computations based on BLAS and LAPACK.")
              "http://hackage.haskell.org/package/hmatrix-gsl/hmatrix-gsl-"
              version ".tar.gz"))
        (sha256
-        (base32 "1jbqwn9d2nldc4klhy0n8gcxr889h0daw2mjfhwgksfy1bwfjl7w"))))
+        (base32 "0mflm7zg6c6a5vy092pa429rzpyv5drc1589r3x4fbmvcyqc79gx"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-hmatrix" ,ghc-hmatrix)
@@ -6515,7 +6515,7 @@ using GSL.")
 (define-public ghc-hmatrix-special
   (package
     (name "ghc-hmatrix-special")
-    (version "0.4.0.0")
+    (version "0.4.0.1")
     (source
      (origin
        (method url-fetch)
@@ -6524,7 +6524,7 @@ using GSL.")
          "http://hackage.haskell.org/package/hmatrix-special/hmatrix-special-"
          version ".tar.gz"))
        (sha256
-        (base32 "0cr9y3swzj7slrd84g1nhdkp1kpq4q5ihwapmiaidpr2bv3hrfhz"))))
+        (base32 "0kpcqdchi7ikzhqacy4rh4dxz3v37paxyb84wqa66sysb72wkabj"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-hmatrix" ,ghc-hmatrix)
@@ -6538,7 +6538,7 @@ functions for Haskell.")
 (define-public ghc-hmatrix-gsl-stats
   (package
     (name "ghc-hmatrix-gsl-stats")
-    (version "0.4.1.3")
+    (version "0.4.1.7")
     (source
      (origin
        (method url-fetch)
@@ -6547,7 +6547,7 @@ functions for Haskell.")
          "http://hackage.haskell.org/package/hmatrix-gsl-stats/hmatrix-gsl-stats-"
          version ".tar.gz"))
        (sha256
-        (base32 "0f3pzi494n4js0xiq5b38n07cnby0h9da6gmwywf8plvxm9271fl"))))
+        (base32 "1gslgk58lzin43cvbpivhw7nrn9qyaa6qwhy1z9ypvyal5p8n3sa"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-vector" ,ghc-vector)
@@ -6747,7 +6747,7 @@ accessed or modified.")
     (synopsis "Cross platform library for file change notification.")
     (description "Cross platform library for file creation, modification, and
 deletion notification. This library builds upon existing libraries for platform
-specific Windows, Mac, and Linux filesystem event notification.")
+specific Windows, Mac, and Linux file system event notification.")
     (license license:bsd-3)))
 
 (define-public ghc-ieee754
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index bb1b973145..be7a1e9ba3 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 nee <nee-git@hidamari.blue>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,6 +37,7 @@
   #:use-module (gnu packages boost)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
@@ -172,7 +174,7 @@ It is the default image viewer on LXDE desktop environment.")
 (define-public sxiv
   (package
     (name "sxiv")
-    (version "1.3.2")
+    (version "24")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -181,19 +183,29 @@ It is the default image viewer on LXDE desktop environment.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0lxnd33gaw4drhdwbkk94wzrjyhh64d57jq2ps7ffmqgizg6hlwz"))))
+                "044i077li6m4zsz2fswlcdi2m0sbr9mwws1h3k1zjaln29fw87ai"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f                      ; no check target
-       #:make-flags (list (string-append "PREFIX=" %output)
-                          "CC=gcc")
-       ;; no configure phase
-       #:phases (modify-phases %standard-phases (delete 'configure))))
+     `(#:tests? #f                      ; no check target
+       #:make-flags
+       (list (string-append "PREFIX=" %output)
+             "CC=gcc"
+             ;; Xft.h #includes <ft2build.h> (without ‘freetype2/’).  The sxiv
+             ;; Makefile works around this by hard-coding /usr/include instead.
+             (string-append "DEF_CPPFLAGS=-I"
+                            (assoc-ref %build-inputs "freetype")
+                            "/include/freetype2")
+             "V=1")
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))         ; no configure script
     (inputs
-     `(("libx11" ,libx11)
-       ("imlib2" ,imlib2)
+     `(("freetype" ,freetype)
        ("giflib" ,giflib)
-       ("libexif" ,libexif)))
+       ("imlib2" ,imlib2)
+       ("libexif" ,libexif)
+       ("libx11" ,libx11)
+       ("libxft" ,libxft)))
     (home-page "https://github.com/muennich/sxiv")
     (synopsis "Simple X Image Viewer")
     (description
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index c04b45c536..d8c2c325bc 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
+;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -1833,15 +1833,15 @@ IcedTea build harness.")
                         (snippet remove-archives)))))
     (package
       (name "clojure")
-      (version "1.8.0")
+      (version "1.9.0")
       (source
        (origin
          (method url-fetch)
          (uri
-          (string-append "http://repo1.maven.org/maven2/org/clojure/clojure/"
-                         version "/clojure-" version ".zip"))
+          (string-append "https://github.com/clojure/clojure/archive/clojure-"
+                         version ".tar.gz"))
          (sha256
-          (base32 "1nip095fz5c492sw15skril60i1vd21ibg6szin4jcvyy3xr6cym"))
+          (base32 "0xjbzcw45z32vsn9pifp7ndysjzqswp5ig0jkjpivigh2ckkdzha"))
          (modules '((guix build utils)))
          (snippet remove-archives)))
       (build-system ant-build-system)
@@ -1871,12 +1871,12 @@ IcedTea build harness.")
                         (error "failed to unpack tarball" name)))
                   (copy-recursively (string-append name "/src/main/clojure/")
                                     "src/clj/"))
-                '("data-generators-src"
-                  "java-classpath-src"
+                '("core-specs-alpha-src"
+                  "data-generators-src"
+                  "spec-alpha-src"
                   "test-check-src"
                   "test-generative-src"
-                  "tools-namespace-src"
-                  "tools-reader-src"))
+                  "tools-namespace-src"))
                #t))
            ;; The javadoc target is not built by default.
            (add-after 'build 'build-doc
@@ -1908,14 +1908,18 @@ IcedTea build harness.")
                  #t))))))
       ;; The native-inputs below are needed to run the tests.
       (native-inputs
-       `(("data-generators-src"
+       `(("core-specs-alpha-src"
+          ,(submodule "core.specs.alpha/archive/core.specs.alpha-"
+                      "0.1.24"
+                      "0v2a0svf1ar2y42ajxwsjr7zmm5j7pp2zwrd2jh3k7xzd1p9x1fv"))
+         ("data-generators-src"
           ,(submodule "data.generators/archive/data.generators-"
                       "0.1.2"
                       "0kki093jp4ckwxzfnw8ylflrfqs8b1i1wi9iapmwcsy328dmgzp1"))
-         ("java-classpath-src"
-          ,(submodule "java.classpath/archive/java.classpath-"
-                      "0.2.3"
-                      "0sjymly9xh1lkvwn5ygygpsfwz4dabblnlq0c9bx76rkvq62fyng"))
+         ("spec-alpha-src"
+          ,(submodule "spec.alpha/archive/spec.alpha-"
+                      "0.1.143"
+                      "00alf0347licdn773w2jarpllyrbl52qz4d8mw61anjksacxylzz"))
          ("test-check-src"
           ,(submodule "test.check/archive/test.check-"
                       "0.9.0"
@@ -1927,11 +1931,7 @@ IcedTea build harness.")
          ("tools-namespace-src"
           ,(submodule "tools.namespace/archive/tools.namespace-"
                       "0.2.11"
-                      "10baak8v0hnwz2hr33bavshm7y49mmn9zsyyms1dwjz45p5ymhy0"))
-         ("tools-reader-src"
-          ,(submodule "tools.reader/archive/tools.reader-"
-                      "1.0.0"
-                      "1lafblmmj4hkg0aqrf19qkdw9wdcsh3qxmn6cbkmnzbhffpyv2lv"))))
+                      "10baak8v0hnwz2hr33bavshm7y49mmn9zsyyms1dwjz45p5ymhy0"))))
       (home-page "https://clojure.org/")
       (synopsis "Lisp dialect running on the JVM")
       (description "Clojure is a dynamic, general-purpose programming language,
@@ -3837,7 +3837,7 @@ Custom formats can be created using a fluent style API.")
     (arguments
      `(#:tests? #f ; no tests
        #:jar-name "osgi-annotation.jar"))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "Annotation module of OSGi framework")
     (description
      "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -3864,7 +3864,7 @@ components.")
        #:jar-name "osgi-core.jar"))
     (inputs
      `(("java-osgi-annotation" ,java-osgi-annotation)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "Core module of OSGi framework")
     (description
      "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -3892,7 +3892,7 @@ the OSGi Core module.")
     (inputs
      `(("java-osgi-annotation" ,java-osgi-annotation)
        ("java-osgi-core" ,java-osgi-core)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "OSGi service event module")
     (description
      "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5346,7 +5346,7 @@ used to generate this API.")
        ("java-datanucleus-javax-persistence" ,java-datanucleus-javax-persistence)
        ("microemulator" ,java-microemulator-cldc)
        ("servlet" ,java-classpathx-servletapi)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "Compendium specification module of OSGi framework")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5374,7 +5374,7 @@ in compiling bundles.")
        #:tests? #f)); no tests
     (inputs
      `(("annotation" ,java-osgi-annotation)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "Support annotations for osgi-service-component")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5400,7 +5400,7 @@ the support annotations for osgi-service-component.")
        #:tests? #f)); no tests
     (inputs
      `(("annotation" ,java-osgi-annotation)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "Data Transfer Objects")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5431,7 +5431,7 @@ objects of the listed types or aggregates.")
     (inputs
      `(("annotation" ,java-osgi-annotation)
        ("dto" ,java-osgi-dto)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "OSGI Resource")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5459,7 +5459,7 @@ the definition of common types in osgi packages.")
     (arguments
      `(#:jar-name "osgi-namespace-contract.jar"
        #:tests? #f)); no tests
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "Contract Capability and Requirement Namespace")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5487,7 +5487,7 @@ the names for the attributes and directives for a namespace with contracts.")
     (arguments
      `(#:jar-name "osgi-namespace-extendent.jar"
        #:tests? #f)); no tests
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "Extender Capability and Requirement Namespace")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5515,7 +5515,7 @@ the names for the attributes and directives for an extender namespace.")
     (arguments
      `(#:jar-name "osgi-namespace-service.jar"
        #:tests? #f)); no tests
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "Service Capability and Requirement Namespace")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5542,7 +5542,7 @@ the names for the attributes and directives for a service namespace.")
        #:tests? #f)); no tests
     (inputs
      `(("annotation" ,java-osgi-annotation)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "OSGI Util Function")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5570,7 +5570,7 @@ an interface for a function that accepts a single argument and produces a result
     (inputs
      `(("annotation" ,java-osgi-annotation)
        ("function" ,java-osgi-util-function)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "Promise of a value")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5598,7 +5598,7 @@ value.  It handles the interactions for asynchronous processing.")
        #:tests? #f)); no tests
     (inputs
      `(("annotation" ,java-osgi-annotation)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "Support annotations for metatype")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5627,7 +5627,7 @@ the support annotations for metatype.")
      `(("annotation" ,java-osgi-annotation)
        ("promise" ,java-osgi-util-promise)
        ("resource" ,java-osgi-resource)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "OSGI service repository")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5655,7 +5655,7 @@ a repository service that contains resources.")
      `(("annotation" ,java-osgi-annotation)
        ("resource" ,java-osgi-resource)
        ("dto" ,java-osgi-dto)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "OSGi framework")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5681,7 +5681,7 @@ and service platform for the Java programming language.")
        #:tests? #f)); no tests
     (inputs
      `(("java-osgi-framework" ,java-osgi-framework)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "Provides methods for bundles to write messages to the log")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5706,7 +5706,7 @@ the log service.")
     (arguments
      `(#:jar-name "osgi-service-jdbc.jar"
        #:tests? #f)); no tests
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "Factory for JDBC connection factories")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5741,7 +5741,7 @@ factories for getting JDBC connections:
     (inputs
      `(("annotation" ,java-osgi-annotation)
        ("resource" ,java-osgi-resource)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "OSGI Resolver service")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5770,7 +5770,7 @@ by the caller.")
     (inputs
      `(("framework" ,java-osgi-framework)
        ("annotation" ,java-osgi-annotation)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "Bundle tracking")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5798,7 +5798,7 @@ bundle tracking utility classes.")
     (inputs
      `(("framework" ,java-osgi-framework)
        ("annotation" ,java-osgi-annotation)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "OSGI Configuration Management")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -5825,7 +5825,7 @@ utility classes for the configuration of services.")
        #:tests? #f)); no tests
     (inputs
      `(("framework" ,java-osgi-framework)))
-    (home-page "http://www.osgi.org")
+    (home-page "https://www.osgi.org")
     (synopsis "OSGI Package Administration")
     (description
       "OSGi, for Open Services Gateway initiative framework, is a module system
@@ -7414,7 +7414,13 @@ done to the IDE or continuous integration servers which simplifies adoption.")
        #:source-dir "powermock-core/src/main/java"
        #:test-dir "powermock-core/src/test"
        #:tests? #f; requires powermock-api
-       #:jdk ,icedtea-8))
+       #:jdk ,icedtea-8
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'copy-resources
+           (lambda _
+             (copy-recursively "powermock-core/src/main/resources"
+                               "build/classes"))))))
     (inputs
      `(("reflect" ,java-powermock-reflect)
        ("javassist" ,java-jboss-javassist)))
@@ -7463,7 +7469,15 @@ done to the IDE or continuous integration servers which simplifies adoption.")
      `(#:jar-name "java-powermock-modules-junit4.jar"
        #:jdk ,icedtea-8
        #:source-dir "powermock-modules/powermock-module-junit4/src/main/java"
-       #:test-dir "powermock-modules/powermock-module-junit4/src/test"))
+       #:test-dir "powermock-modules/powermock-module-junit4/src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-junit-detection
+           (lambda _
+             ;; Our junit version is 4.12-SNAPSHOT
+             (substitute* (find-files "powermock-modules/powermock-module-junit4"
+                                      "PowerMockJUnit4MethodValidator.java")
+               (("4.12") "4.12-SNAPSHOT")))))))
     (inputs
      `(("core" ,java-powermock-core)
        ("reflect" ,java-powermock-reflect)
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index f0df44528e..db4bfacc72 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -236,15 +236,16 @@ plugins, as well as code to create plugins, or complete applications.")
 (define-public krita
   (package
     (name "krita")
-    (version "3.3.2.1")
+    (version "3.3.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "mirror://kde/stable/krita/"
-                    "3.3.2/" name "-" version ".tar.xz"))
+                    (version-prefix version 3)
+                    "/" name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0i3l27cfi1h486m74xf4ynk0pwx32xaqraa91a0g1bpj1jxf2mg5"))))
+                "0pc6hnakkqy81x5b5ncivaps6hqv43i50sjwgi3i3cz9j8rlxh5y"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f
diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index c44d430a8d..237c4bc18d 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 ng0 <ng0@n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -201,7 +202,7 @@ both ordinal and cardinal numbers, negative numbers, and very large numbers.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/X/XE/XERN/"
+       (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/"
                            "Lingua-PT-Stemmer-" version ".tar.gz"))
        (sha256
         (base32
diff --git a/gnu/packages/libedit.scm b/gnu/packages/libedit.scm
index a1a1ac6bb5..9f6f1d05ce 100644
--- a/gnu/packages/libedit.scm
+++ b/gnu/packages/libedit.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,7 +28,7 @@
 (define-public libedit
   (package
     (name "libedit")
-    (version "20150325-3.1")
+    (version "20170329-3.1")
     (source
      (origin
       (method url-fetch)
@@ -35,12 +36,11 @@
                           "/" name "-" version ".tar.gz"))
       (sha256
        (base32
-        "1if8zi9h52m80ck796an28rrqfljk2n8cn25m3fl0prwz155x2n8"))))
+        "1gnlgl0x8g9ky59s70nriy5gv47676d1s4ypvbv8y11apl7xkwli"))))
     (build-system gnu-build-system)
-    (arguments `(#:configure-flags (list "--enable-widec")))
     (inputs
      `(("ncurses" ,ncurses)))
-    (home-page "http://thrysoee.dk/editline/")
+    (home-page "https://thrysoee.dk/editline/")
     (synopsis "NetBSD Editline library")
     (description
      "This is an autotool- and libtoolized port of the NetBSD Editline
@@ -48,5 +48,3 @@ library (libedit).  This Berkeley-style licensed command line editor library
 provides generic line editing, history, and tokenization functions, similar to
 those found in GNU Readline.")
     (license bsd-3)))
-
-;;; libedit.scm ends here
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 5fef6483a2..56de4cf82a 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -370,8 +370,8 @@ It has been modified to remove all non-free binary blobs.")
 (define %intel-compatible-systems '("x86_64-linux" "i686-linux"))
 (define %linux-compatible-systems '("x86_64-linux" "i686-linux" "armhf-linux"))
 
-(define %linux-libre-version "4.14.13")
-(define %linux-libre-hash "1a1wkl4xn2jsjvdnszv5gmg794waiir6x178q85qykninfbigfzx")
+(define %linux-libre-version "4.14.14")
+(define %linux-libre-hash "0s135a5bdggsj2vhpfscmiyjgw2lzgprfk5ypba1aaqv7mrwwrm7")
 
 ;; linux-libre configuration for armhf-linux is derived from Debian armmp.  It
 ;; supports qemu "virt" machine and possibly a large number of ARM boards.
@@ -384,14 +384,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.76"
-                    "1ms026dp8r1cv8rbc98nfc331xggwdz1dafv89ack8d80qrhg1y1"
+  (make-linux-libre "4.9.77"
+                    "1lar2nmk1njz2lb73j64wwwc6sxx6ik5jm6lpiz1wav7avs1wix3"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.4
-  (make-linux-libre "4.4.111"
-                    "1yxii8csdxpxbspbz5gd768zjzfv9x0h22hdk8dbw4c9nq09z0zc"
+  (make-linux-libre "4.4.112"
+                    "12qnbqn6n984c0cwbwi26znmhw8pasxsfy1qyh5s1pzqx3k4q2h2"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
@@ -917,7 +917,7 @@ trace of all the system calls made by a another process/program.")
     (arguments
      ;; Compilation uses -Werror by default, but it fails.
      '(#:configure-flags '("--disable-werror")))
-    (home-page "http://www.ltrace.org/")
+    (home-page "https://www.ltrace.org/")
     (synopsis "Library call tracer for Linux")
     (description
      "ltrace intercepts and records dynamic library calls which are called by
@@ -1417,7 +1417,7 @@ transparently through a bridge.")
                (mkdir-p dest)
                (zero? (system* "tar" "xf" (assoc-ref inputs "libnl3-doc")
                                "--strip-components=1" "-C" dest))))))))
-    (home-page "http://www.infradead.org/~tgr/libnl/")
+    (home-page "https://www.infradead.org/~tgr/libnl/")
     (synopsis "NetLink protocol library suite")
     (description
      "The libnl suite is a collection of libraries providing APIs to netlink
@@ -2493,7 +2493,7 @@ particular the 'perf' command.")
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f)) ; no tests
-    (home-page "http://ghedo.github.io/pflask/")
+    (home-page "https://ghedo.github.io/pflask/")
     (synopsis "Simple tool for creating Linux namespace containers")
     (description "pflask is a simple tool for creating Linux namespace
 containers.  It can be used for running a command or even booting an OS inside
@@ -2573,7 +2573,7 @@ WLAN, Bluetooth and mobile broadband.")
     (version "1.7")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://sourceforge/acpiclient/acpiclient/" 
+              (uri (string-append "mirror://sourceforge/acpiclient/acpiclient/"
                                   version "/" name "-" version ".tar.gz"))
               (sha256
                (base32
@@ -3610,7 +3610,7 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.")
                (("^DOCBOOKTOMAN.*$")
                 "DOCBOOKTOMAN = true\n"))
              #t)))))
-    (home-page "http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/")
+    (home-page "https://www.kernel.org/pub/linux/utils/kernel/module-init-tools/")
     (synopsis "Tools for loading and managing Linux kernel modules")
     (description
      "Tools for loading and managing Linux kernel modules, such as `modprobe',
@@ -4209,7 +4209,7 @@ userspace queueing component and the logging subsystem.")
      "PRoot is a user-space implementation of @code{chroot}, @code{mount --bind},
 and @code{binfmt_misc}.  This means that users don't need any privileges or
 setup to do things like using an arbitrary directory as the new root
-filesystem, making files accessible somewhere else in the file system
+file system, making files accessible somewhere else in the file system
 hierarchy, or executing programs built for another CPU architecture
 transparently through QEMU user-mode.  Also, developers can use PRoot as a
 generic process instrumentation engine thanks to its extension mechanism.
@@ -4296,10 +4296,10 @@ NexGen, Rise, and SiS CPUs.")
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (home-page "https://github.com/JasonFerrara/jmtpfs")
-    (synopsis "Use a FUSE filesystem to access data over MTP")
-    (description "jmtpfs uses FUSE (filesystem in userspace) to provide access
+    (synopsis "Use a FUSE file system to access data over MTP")
+    (description "jmtpfs uses FUSE (file system in userspace) to provide access
 to data over the Media Transfer Protocol (MTP).  Unprivileged users can mount
-the MTP device as a filesystem.")
+the MTP device as a file system.")
     (license license:gpl3)))
 
 (define-public procenv
@@ -4437,7 +4437,7 @@ interfaces in parallel environments.")
              (let ((out (assoc-ref outputs "out")))
                (mkdir-p (string-append out "/share/man/man1"))
                #t))))))
-    (home-page "http://bisqwit.iki.fi/source/snapscreenshot.html")
+    (home-page "https://bisqwit.iki.fi/source/snapscreenshot.html")
     (synopsis "Take screenshots of one or more Linux text consoles")
     (description
      "snapscreenshot saves a screenshot of one or more Linux text consoles as a
diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm
index 7d0aaa6503..02dacd3e87 100644
--- a/gnu/packages/lxde.scm
+++ b/gnu/packages/lxde.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -68,7 +69,7 @@
     (synopsis "File management support (core library)")
     (description "LibFM provides file management functions built on top of
 Glib/GIO giving a higher-level API.")
-    (home-page "http://lxde.org")
+    (home-page "https://lxde.org")
     (license license:gpl2+)))
 
 (define-public libfm-extra
@@ -101,7 +102,7 @@ libFM file management library.")))
     (synopsis "LXDE GTK+ theme switcher")
     (description "LXAppearance is a desktop-independent GTK+ theme switcher
 able to change themes, icons, and fonts used by GTK+ applications.")
-    (home-page "http://lxde.org")
+    (home-page "https://lxde.org")
     (license license:gpl2+)))
 
 (define-public lxrandr
@@ -127,7 +128,7 @@ relies on the X11 resize-and-rotate (RandR) extension but doesn't aim to be a
 full frontend of it.  LXRandR only gives you some easy and quick options which
 are intuitive.  It's suitable for laptop users who frequently uses projectors
 or external monitor.")
-    (home-page "http://lxde.org")
+    (home-page "https://lxde.org")
     (license license:gpl2+)))
 
 (define-public lxtask
@@ -151,27 +152,22 @@ or external monitor.")
     (description "LXTask is a lightweight task manager derived from Xfce task
 manager with all dependencies on Xfce removed.  LXTask is based on the GTK+
 toolkit.  It allows users to monitor and control of running processes.")
-    (home-page "http://lxde.org")
+    (home-page "https://lxde.org")
     (license license:gpl2+)))
 
 (define-public lxterminal
   (package
     (name "lxterminal")
-    (version "0.3.0")
+    (version "0.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/lxde/LXTerminal"
                                   "%20%28terminal%20emulator%29/LXTerminal%20"
                                   version "/" name "-" version ".tar.xz"))
-              (patches (search-patches "lxterminal-CVE-2016-10369.patch"))
               (sha256
                (base32
-                "1yf76s15zvfw0h42b0ay1slpq47khgjmcry8ki2z812zar9lchia"))))
+                "0jrc3m0hbxcmcgahwjlm46s2350gh80ggb6a90xy0h6xqa3z73fd"))))
     (build-system gnu-build-system)
-    (arguments
-     `(;; Tests for "po" fail with "No rule to make target '../src/encoding.c'
-       ;; needed by 'lxterminal.pot'. Stop."
-       #:tests? #f))
     (inputs `(("gtk+" ,gtk+-2)
               ("vte"  ,vte/gtk+-2)))
     (native-inputs `(("intltool"   ,intltool)
@@ -181,7 +177,7 @@ toolkit.  It allows users to monitor and control of running processes.")
 multiple tabs and has only minimal dependencies thus being completely
 desktop-independent.  In order to reduce memory usage and increase the
 performance, all instances of the terminal are sharing a single process.")
-    (home-page "http://lxde.org")
+    (home-page "https://lxde.org")
     (license license:gpl2+)))
 
 (define-public menu-cache
@@ -203,7 +199,7 @@ performance, all instances of the terminal are sharing a single process.")
     (synopsis "LXDE implementation of the freedesktop menu's cache")
     (description "Menu-cache is a library creating and utilizing caches to
 speed up the access to freedesktop.org defined application menus.")
-    (home-page "http://lxde.org")
+    (home-page "https://lxde.org")
     (license license:lgpl2.1+)))
 
 (define-public pcmanfm
@@ -232,7 +228,7 @@ speed up the access to freedesktop.org defined application menus.")
     (synopsis "LXDE file manager")
     (description "PCMan is a lightweight GTK+ based file manager, compliant
 with freedesktop.org standard.")
-    (home-page "http://lxde.org")
+    (home-page "https://lxde.org")
     (license license:gpl2+)))
 
 (define-public lxmenu-data
@@ -255,7 +251,7 @@ with freedesktop.org standard.")
     (description
      "Lxmenu-data provides files required to build freedesktop.org
 menu spec-compliant desktop menus for LXDE.")
-    (home-page "http://lxde.org")
+    (home-page "https://lxde.org")
     (license license:lgpl2.1+)))
 
 (define-public lxde-icon-theme
@@ -276,7 +272,7 @@ menu spec-compliant desktop menus for LXDE.")
     (synopsis "LXDE default icon theme based on nuoveXT2")
     (description
      "Lxde-icon-theme provides an default icon theme for LXDE.")
-    (home-page "http://lxde.org")
+    (home-page "https://lxde.org")
     (license license:lgpl3)))
 
 (define-public lxde-common
@@ -315,7 +311,7 @@ menu spec-compliant desktop menus for LXDE.")
     (synopsis "Common files of the LXDE Desktop")
     (description
      "Lxde-common provides common files of the LXDE Desktop.")
-    (home-page "http://lxde.org")
+    (home-page "https://lxde.org")
     (license license:gpl2+)))
 
 (define-public lxinput
@@ -340,7 +336,7 @@ menu spec-compliant desktop menus for LXDE.")
     (description
      "Lxinput provides a small program to configure keyboard and mouse
 in LXDE.")
-    (home-page "http://lxde.org")
+    (home-page "https://lxde.org")
     (license license:gpl2+)))
 
 (define-public lxsession
@@ -392,7 +388,7 @@ in LXDE.")
     (synopsis "Lightweight X11 session manager")
     (description
      "Lxsession provides an lightweight X11 session manager.")
-    (home-page "http://lxde.org")
+    (home-page "https://lxde.org")
     (license license:gpl2+)))
 
 (define-public lxpanel
@@ -443,7 +439,7 @@ in LXDE.")
     (synopsis "X11 Desktop panel for LXDE")
     (description
      "Lxpanel provides an X11 desktop panel for LXDE.")
-    (home-page "http://lxde.org")
+    (home-page "https://lxde.org")
     (license license:gpl2+)))
 
 (define-public lxde
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index c415e85552..24dee8a590 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -15,14 +15,14 @@
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com>
-;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
+;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -429,7 +429,7 @@ and corrections.  It is based on a Bayesian filter.")
 (define-public offlineimap
   (package
     (name "offlineimap")
-    (version "7.1.4")
+    (version "7.1.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/OfflineIMAP/offlineimap/"
@@ -437,7 +437,7 @@ and corrections.  It is based on a Bayesian filter.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0m34iks3l9p6shqkgfhfpiccglm6gk5nj98x20pvahl58nclmzn6"))))
+                "1qa3km3s3yhmpgzh76dnzwn22aa8fh39814zgnlyhs07l23ffa4f"))))
     (build-system python-build-system)
     (native-inputs
      `(("asciidoc" ,asciidoc)))
@@ -1916,14 +1916,14 @@ transfer protocols.")
 (define-public opensmtpd
   (package
     (name "opensmtpd")
-    (version "6.0.2p1")
+    (version "6.0.3p1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.opensmtpd.org/archives/"
                                   name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1b4h64w45hpmfq5721smhg4s0shs64gbcjqjpx3fbiw4hz8bdy9a"))))
+                "10bsfsnlg9d9i6l2izdnxp05s3ri8fvwzqxvx1jmarc852382619"))))
     (build-system gnu-build-system)
     (inputs
      `(("bdb" ,bdb)
@@ -1937,10 +1937,10 @@ transfer protocols.")
        ("groff" ,groff)))
     (arguments
      `(#:configure-flags
-       (list "--with-table-db" "--localstatedir=/var"
+       (list "--with-table-db" "--with-auth-pam" "--localstatedir=/var"
              "--with-user-smtpd=smtpd" "--with-user-queue=smtpq"
              "--with-group-queue=smtpq"
-             "--with-path-socket=/var/run"
+             "--with-path-socket=/var/run" ; not default (./configure lies)
              "--with-path-CAfile=/etc/ssl/certs/ca-certificates.crt")
        #:phases
        (modify-phases %standard-phases
@@ -2066,7 +2066,7 @@ the GNU Mailman 3 REST API.")
 (define-public mlmmj
   (package
     (name "mlmmj")
-    (version "1.2.19.0")
+    (version "1.3.0")
     (source
      (origin
        (method url-fetch)
@@ -2074,7 +2074,7 @@ the GNU Mailman 3 REST API.")
                            version ".tar.bz2"))
        (sha256
         (base32
-         "1piwvcxkqadjwk5x8jicaiyz9nngmaj3w13ghdqgaki32xd7zk9v"))))
+         "0hpj10qad821ci11si8xc2qnmkzfn90y13s43fm4fca38f0qjp8w"))))
     (build-system gnu-build-system)
     (inputs
      `(("perl" ,perl))) ; For "contrib/web/"
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index 71f9589937..51111f44b8 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -842,7 +842,7 @@ infamous 'Wanda the Fish'.")
      "Caja is the official file manager for the MATE desktop.
 It allows for browsing directories, as well as previewing files and launching
 applications associated with them.  Caja is also responsible for handling the
-icons on the MATE desktop.  It works on local and remote filesystems.")
+icons on the MATE desktop.  It works on local and remote file systems.")
     ;; There is a note about a TRADEMARKS_NOTICE file in COPYING which
     ;; does not exist. It is safe to assume that this is of no concern
     ;; for us.
@@ -900,7 +900,7 @@ icons on the MATE desktop.  It works on local and remote filesystems.")
      "Caja is the official file manager for the MATE desktop.
 It allows for browsing directories, as well as previewing files and launching
 applications associated with them.  Caja is also responsible for handling the
-icons on the MATE desktop.  It works on local and remote filesystems.")
+icons on the MATE desktop.  It works on local and remote file systems.")
     (license license:gpl2+)))
 
 (define-public mate-control-center
diff --git a/gnu/packages/mc.scm b/gnu/packages/mc.scm
index 67a0f490e2..2e13c3201f 100644
--- a/gnu/packages/mc.scm
+++ b/gnu/packages/mc.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,7 +37,7 @@
 (define-public mc
   (package
     (name "mc")
-    (version "4.8.16")
+    (version "4.8.20")
     (source
      (origin
       (method url-fetch)
@@ -44,7 +45,7 @@
                           version ".tar.xz"))
       (sha256
        (base32
-        "083h5gwc0nny9b557way5dsmj71g2bzkiai4bn30y5nkjwqbxg5v"))))
+        "072h7n9b3j79fqn48xaw0xhlcjavpsmfpz6nyh20lhmfz3sffzh1"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("perl" ,perl)))
@@ -59,16 +60,26 @@
        '("--with-screen=ncurses" "--enable-aspell")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'patch-source-shebangs 'fix-absolutism
+         (add-after 'patch-source-shebangs 'patch-FHS-file-names
            (lambda _
-             ;; Modify files that contain absolute file names.
+             ;; Patch files to refer to executables in the store.
              (substitute* "misc/mcedit.menu.in"
                (("#! /bin/sh") (string-append "#!" (which "sh")))
                (("/bin/bash") (which "bash")))
              (substitute* "misc/ext.d/misc.sh.in"
                (("/bin/cat") "cat"))
+             (substitute* "tests/src/vfs/extfs/helpers-list/Makefile.in"
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-before 'check 'fix-tests
+           (lambda _
+             ;; Don't expect a UID or GID of ‘0’ in the build environment.
+             (with-directory-excursion "tests/src/vfs/extfs/helpers-list/data"
+               (substitute* (list "rpm.custom.output"
+                                  "rpm.glib.output")
+                 (("      0        0") "<<uid>>  <<gid>>")))
              #t)))))
-    (home-page "http://www.midnight-commander.org")
+    (home-page "https://www.midnight-commander.org")
     (synopsis "Graphical file manager")
     (description
      "GNU Midnight Commander is a command-line file manager laid out in a
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 38467a94cc..98f3e7763d 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -300,7 +301,7 @@ This package contains the binary.")
 (define-public mpg123
   (package
     (name "mpg123")
-    (version "1.25.7")
+    (version "1.25.8")
     (source (origin
               (method url-fetch)
               (uri (list (string-append "mirror://sourceforge/mpg123/mpg123/"
@@ -310,13 +311,13 @@ This package contains the binary.")
                           version ".tar.bz2")))
               (sha256
                (base32
-                "1ws40fglyyk51jvmz8gfapjkw1g51pkch1rffdsbh4b1yay5xc9i"))))
+                "16s9z1xc5kv1p90g42vsr9m4gq3dwjsmrj873x4i8601mvpm3nkr"))))
     (build-system gnu-build-system)
     (arguments '(#:configure-flags '("--with-default-audio=pulse")))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("pulseaudio" ,pulseaudio)
               ("alsa-lib" ,alsa-lib)))
-    (home-page "http://www.mpg123.org/")
+    (home-page "https://www.mpg123.org/")
     (synopsis "Console MP3 player and decoder library")
     (description
      "Mpg123 is a real time MPEG 1.0/2.0/2.5 audio player/decoder for layers
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index e6bc2b4e71..30a496ab88 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,10 +29,10 @@
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages boost)
-  #:use-module (gnu packages gcc) ; GCC@5 for MPD >= 0.20
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
@@ -55,7 +56,7 @@
 (define-public libmpdclient
   (package
     (name "libmpdclient")
-    (version "2.11")
+    (version "2.13")
     (source (origin
               (method url-fetch)
               (uri
@@ -64,13 +65,24 @@
                               "/libmpdclient-" version ".tar.xz"))
               (sha256
                (base32
-                "1xms8q44g6zc7sc212qpcihq6ch3pmph3i1m9hzymmy0jcw6kzhm"))))
-    (build-system gnu-build-system)
-    (native-inputs `(("doxygen" ,doxygen)))
+                "0pflbv2jzik7yxnacci1iqs0awy1i5ipwn67xk0hg9r0pi9bs5ai"))))
+    (build-system meson-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+
+       ;; For building HTML documentation.
+       ("doxygen" ,doxygen)
+
+       ;; For tests.
+       ("check" ,check)))
+    (arguments
+     `(#:configure-flags
+       (list "-Ddocumentation=true"
+             "-Dtest=true")))
     (synopsis "Music Player Daemon client library")
     (description "A stable, documented, asynchronous API library for
 interfacing MPD in the C, C++ & Objective C languages.")
-    (home-page "http://www.musicpd.org/libs/libmpdclient/")
+    (home-page "https://www.musicpd.org/libs/libmpdclient/")
     (license license:bsd-3)))
 
 (define-public mpd
@@ -144,7 +156,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
 server-side application for playing music.  Through plugins and libraries it
 can play a variety of sound files while being controlled by its network
 protocol.")
-    (home-page "http://www.musicpd.org/")
+    (home-page "https://www.musicpd.org/")
     (license license:gpl2)))
 
 (define-public mpd-mpc
@@ -166,7 +178,7 @@ protocol.")
     (synopsis "Music Player Daemon client")
     (description "MPC is a minimalist command line interface to MPD, the music
 player daemon.")
-    (home-page "http://www.musicpd.org/clients/mpc/")
+    (home-page "https://www.musicpd.org/clients/mpc/")
     (license license:gpl2)))
 
 (define-public ncmpc
@@ -190,7 +202,7 @@ player daemon.")
     (synopsis "Curses Music Player Daemon client")
     (description "ncmpc is a fully featured MPD client, which runs in a
 terminal using ncurses.")
-    (home-page "http://www.musicpd.org/clients/ncmpc/")
+    (home-page "https://www.musicpd.org/clients/ncmpc/")
     (license license:gpl2)))
 
 (define-public ncmpcpp
@@ -245,9 +257,7 @@ sort playlists, and a local file system browser.")
     (synopsis "MPD client for track scrobbling")
     (description "mpdscribble is a Music Player Daemon client which submits
 information about tracks being played to a scrobbler, such as Libre.FM.")
-    ;; musicpd.org doesn't mention mpdscribble.  It points users to this wiki
-    ;; instead.
-    (home-page "http://mpd.wikia.com/wiki/Client:Mpdscribble")
+    (home-page "https://www.musicpd.org/clients/mpdscribble/")
     (license license:gpl2+)))
 
 (define-public python-mpd2
diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm
index 69272eb18a..8bd4a848fe 100644
--- a/gnu/packages/multiprecision.scm
+++ b/gnu/packages/multiprecision.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -59,13 +60,14 @@
                           (else '())))))
    (synopsis "Multiple-precision arithmetic library")
    (description
-    "GMP is a library for arbitrary precision arithmetic, operating on
-signed integers, rational numbers and floating point numbers.  The precision
-is only limited by the available memory.  The library is highly optimized,
-with a design focus on execution speed.  It is aimed at use in, for example,
-cryptography and computational algebra.")
+    "@dfn{GMP} (the GNU Multiple Precision Arithmetic Library) is a library for
+arbitrary-precision arithmetic, operating on signed integers, rational numbers
+and floating point numbers.  The precision is only limited by the available
+memory.  The library is highly optimized, with a design focus on execution
+speed.  It is aimed at use in, for example, cryptography and computational
+algebra.")
    (license lgpl3+)
-   (home-page "http://gmplib.org/")))
+   (home-page "https://gmplib.org/")))
 
 (define-public gmp-6.0
   ;; We keep this one around to bootstrap GCC, to work around a compilation
@@ -97,10 +99,11 @@ cryptography and computational algebra.")
    (build-system gnu-build-system)
    (outputs '("out" "debug"))
    (propagated-inputs `(("gmp" ,gmp)))            ; <mpfr.h> refers to <gmp.h>
-   (synopsis "C library for arbitrary precision floating-point arithmetic")
+   (synopsis "C library for arbitrary-precision floating-point arithmetic")
    (description
-    "GNU MPFR is a C library for performing multiple-precision,
-floating-point computations with correct rounding.")
+    "GNU@tie{}@dfn{MPFR} (Multiple Precision Floating-Point Reliably) is a C
+library for performing multiple-precision, floating-point computations with
+correct rounding.")
    (license lgpl3+)
    (home-page "http://www.mpfr.org/")))
 
@@ -119,34 +122,38 @@ floating-point computations with correct rounding.")
    (outputs '("out" "debug"))
    (propagated-inputs `(("gmp" ,gmp)              ; <mpc.h> refers to both
                         ("mpfr" ,mpfr)))
-   (synopsis "C library for arbitrary precision complex arithmetic")
+   (synopsis "C library for arbitrary-precision complex arithmetic")
    (description
-    "GNU MPC is a C library for performing arithmetic on complex numbers.
-It supports arbitrarily high precision and it correctly rounds the results.")
+    "GNU@tie{}@dfn{MPC} (Multiple Precision Complex library) is a C library for
+performing arithmetic on complex numbers.  It supports arbitrarily high
+precision and correctly rounds the results.")
    (license lgpl3+)
-   (home-page "http://mpc.multiprecision.org/")))
+   (home-page "http://multiprecision.org/mpc/")))
 
 (define-public mpfi
   (package
     (name "mpfi")
-    (version "1.5.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://gforge.inria.fr/frs/download.php/"
-                                  "file/30130/mpfi-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1g2q6i7dqx40p4gw11da6jgfcbzmm26wxc69fwv8zpcdyg32a9za"))))
+    (version "1.5.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://gforge.inria.fr/frs/download.php"
+                           "/latestfile/181/" name "-" version ".tar.bz2"))
+       (sha256
+        (base32 "0bqr8yibl7jbrp0bw7xk1lm7nis7rv26jsz6y8ycvih8n9bx90r3"))))
     (build-system gnu-build-system)
     (propagated-inputs `(("gmp" ,gmp)   ; <mpfi.h> refers to both
                          ("mpfr" ,mpfr)))
-    (synopsis "C library for arbitrary precision interval arithmetic")
-    (description "MPFI is intended to be a portable library written in C for
-arbitrary precision interval arithmetic with intervals represented using MPFR
-reliable floating-point numbers.  It is based on the GNU MP library and on the
-MPFR library.  The purpose of an arbitrary precision interval arithmetic is on
-the one hand to get guaranteed results, thanks to interval computation, and on
-the other hand to obtain accurate results, thanks to multiple precision
-arithmetic.")
+    (synopsis "C library for arbitrary-precision interval arithmetic")
+    (description
+     "@dfn{MPFI} (Multiple Precision Floating-point Interval) is a portable C
+library for arbitrary-precision interval arithmetic, with intervals represented
+using MPFR reliable floating-point numbers.  It's based on the @dfn{GMP} (GNU
+Multiple Precision Arithmetic) and GNU@tie{}@dfn{MPFR} (Multiple Precision
+Floating-Point Reliably) libraries.
+
+The purpose of arbitrary-precision interval arithmetic is to get results that
+are both guaranteed, thanks to interval computation, and accurate, thanks to
+multiple-precision arithmetic.")
     (license lgpl2.1+)
     (home-page "https://perso.ens-lyon.fr/nathalie.revol/software.html")))
diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm
index dcf7bee8b3..548261289e 100644
--- a/gnu/packages/ncurses.scm
+++ b/gnu/packages/ncurses.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -230,7 +231,7 @@ ncursesw library provides wide character support.")
 (define-public dialog
   (package
     (name "dialog")
-    (version "1.3-20170509")
+    (version "1.3-20171209")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -238,7 +239,7 @@ ncursesw library provides wide character support.")
                     version ".tgz"))
               (sha256
                (base32
-                "0mj7rl5psilaj3bxxvjfd44qjknxjli98b0d1lxd3f9jqrsbmw9g"))))
+                "1rk72as52f5br3wcr74d00wib41w65g8wvi36mfgybly251984r0"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f)) ; no test suite
@@ -247,7 +248,7 @@ ncursesw library provides wide character support.")
     (synopsis "Curses widgets")
     (description "Dialog is a script-interpreter which provides a set of
 curses widgets, such as dialog boxes.")
-    (home-page "http://invisible-island.net/dialog/dialog.html")
+    (home-page "https://invisible-island.net/dialog/dialog.html")
     ;; Includes the gpl3 file "config.sub" from Automake.
     (license (list lgpl2.1 gpl3))))
 
diff --git a/gnu/packages/ninja.scm b/gnu/packages/ninja.scm
index 2a53a3f5b3..adb236484f 100644
--- a/gnu/packages/ninja.scm
+++ b/gnu/packages/ninja.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,7 +30,7 @@
 (define-public ninja
   (package
     (name "ninja")
-    (version "1.7.2")
+    (version "1.8.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/martine/ninja/"
@@ -37,38 +38,33 @@
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1n8n3g26ppwh7zwrc37n3alkbpbj0wki34ih53s3rkhs8ajs1p9f"))
-              (patches (search-patches "ninja-zero-mtime.patch"))))
+                "1x66q6494ml1p1f74mxzik1giakl4zj7rxig9jsc50087l671f46"))))
     (build-system gnu-build-system)
     (native-inputs `(("python" ,python-2)))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         (replace
-          'configure
-          (lambda _
-            (substitute* "src/subprocess-posix.cc"
-              (("/bin/sh") (which "sh")))
-            #t))
-         (replace
-          'build
-          (lambda _
-            (zero? (system* "./configure.py" "--bootstrap"))))
-         (replace
-          'check
-          (lambda _
-            (and (zero? (system* "./configure.py"))
-                 (zero? (system* "./ninja" "ninja_test"))
-                 (zero? (system* "./ninja_test")))))
-         (replace
-          'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let* ((out (assoc-ref outputs "out"))
-                   (bin (string-append out "/bin"))
-                   (doc (string-append out "/share/doc/ninja")))
-              (install-file "ninja" bin)
-              (install-file "doc/manual.asciidoc" doc)
-              #t))))))
+         (replace 'configure
+           (lambda _
+             (substitute* "src/subprocess-posix.cc"
+               (("/bin/sh") (which "sh")))
+             #t))
+         (replace 'build
+           (lambda _
+             (invoke "./configure.py" "--bootstrap")))
+         (replace 'check
+           (lambda _
+             (invoke "./configure.py")
+             (invoke "./ninja" "ninja_test")
+             (invoke "./ninja_test")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (doc (string-append out "/share/doc/ninja")))
+               (install-file "ninja" bin)
+               (install-file "doc/manual.asciidoc" doc)
+               #t))))))
     (home-page "https://ninja-build.org/")
     (synopsis "Small build system")
     (description
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 59213c52de..bf1ce4b248 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
 ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,52 +22,51 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages package-management)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix gexp)
-  #:use-module (guix utils)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix build-system python)
-  #:use-module (guix build-system emacs)
-  #:use-module ((guix licenses) #:select (gpl2+ gpl3+ agpl3+ lgpl2.1+ asl2.0
-                                          bsd-3 silofl1.1))
   #:use-module (gnu packages)
-  #:use-module (gnu packages guile)
-  #:use-module (gnu packages file)
+  #:use-module (gnu packages acl)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages backup)
+  #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages bootstrap)          ;for 'bootstrap-guile-origin'
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages cpio)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
-  #:use-module (gnu packages graphviz)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages file)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages gnuzilla)
+  #:use-module (gnu packages graphviz)
+  #:use-module (gnu packages guile)
   #:use-module (gnu packages lisp)
-  #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages man)
   #:use-module (gnu packages nettle)
+  #:use-module (gnu packages patchutils)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
-  #:use-module (gnu packages curl)
-  #:use-module (gnu packages web)
-  #:use-module (gnu packages man)
-  #:use-module (gnu packages bdw-gc)
-  #:use-module (gnu packages patchutils)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages popt)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
-  #:use-module (gnu packages popt)
-  #:use-module (gnu packages gnuzilla)
-  #:use-module (gnu packages cpio)
+  #:use-module (gnu packages serialization)
+  #:use-module (gnu packages ssh)
+  #:use-module (gnu packages texinfo)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
-  #:use-module (gnu packages ssh)
   #:use-module (gnu packages vim)
-  #:use-module (gnu packages serialization)
-  #:use-module (gnu packages acl)
-  #:use-module (srfi srfi-1)
-  #:use-module (ice-9 match))
+  #:use-module (gnu packages web)
+  #:use-module (guix build-system emacs)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
+  #:use-module (guix download)
+  #:use-module (guix gexp)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-1))
 
 (define (boot-guile-uri arch)
   "Return the URI for the bootstrap Guile tarball for ARCH."
@@ -88,8 +87,8 @@
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
   (let ((version "0.14.0")
-        (commit "3c5dbd2beeaeb21b3b978ec6d76aa16260670fcd")
-        (revision 5))
+        (commit "0dcf675c56a4649ccef657e78849e91f9f9b4c0a")
+        (revision 6))
     (package
       (name "guix")
 
@@ -105,7 +104,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "1kia1fbw275xsnm4x0xq46465azryck94pja3gmh09vcdbwwmwq5"))
+                  "0kqpdg8ydxm67cdlrqsdrpzv0qdvnfln0ixsjrmdw2pcngh6wn56"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
@@ -273,7 +272,7 @@ also a distribution thereof.  It includes a virtual machine image.  Besides
 the usual package management features, it also supports transactional
 upgrades and roll-backs, per-user profiles, and much more.  It is based on
 the Nix package manager.")
-      (license gpl3+)
+      (license license:gpl3+)
       (properties '((ftp-server . "alpha.gnu.org"))))))
 
 ;; Alias for backward compatibility.
@@ -377,7 +376,7 @@ Haskell—they are built by functions that don't have side-effects, and they
 never change after they have been built.  Nix stores packages in the Nix
 store, usually the directory /nix/store, where each package has its own unique
 sub-directory.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public emacs-nix-mode
   (package
@@ -423,7 +422,7 @@ of data and makes them appear to be merged into the same directory.  It is
 typically used for managing software packages installed from source, by
 letting you install them apart in distinct directories and then create
 symlinks to the files in a common directory such as /usr/local.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public rpm
   (package
@@ -496,7 +495,7 @@ description.  There is also a library permitting developers to manage such
 transactions from C or Python.")
 
     ;; The whole is GPLv2+; librpm itself is dual-licensed LGPLv2+ | GPLv2+.
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public diffoscope
   (package
@@ -558,7 +557,7 @@ transactions from C or Python.")
 different.  It recursively unpacks archives of many kinds and transforms
 various binary formats into more human readable forms to compare them.  It can
 compare two tarballs, ISO images, or PDFs just as easily.")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public python-anaconda-client
   (package
@@ -610,7 +609,7 @@ compare two tarballs, ISO images, or PDFs just as easily.")
      "Anaconda Cloud command line client library provides an interface to
 Anaconda Cloud.  Anaconda Cloud is useful for sharing packages, notebooks and
 environments.")
-    (license bsd-3)))
+    (license license:bsd-3)))
 
 (define-public python2-anaconda-client
   (package-with-python2 python-anaconda-client))
@@ -686,7 +685,7 @@ it easy to create independent environments even for C libraries.  Conda is
 written entirely in Python.
 
 This package provides Conda as a library.")
-    (license bsd-3)))
+    (license license:bsd-3)))
 
 (define-public python2-conda
   (let ((base (package-with-python2
@@ -784,4 +783,4 @@ on top of GNU Guix.")
     ;; The Scheme modules in guix/ and gnu/ are licensed GPL3+,
     ;; the web interface modules in gwl/ are licensed AGPL3+,
     ;; and the fonts included in this package are licensed OFL1.1.
-    (license (list gpl3+ agpl3+ silofl1.1))))
+    (license (list license:gpl3+ license:agpl3+ license:silofl1.1))))
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index cc6542e853..1d2b75f8fe 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -93,7 +94,7 @@ and they are executed on lists of files, hosts, users or other items.")
 (define-public slurm
   (package
    (name "slurm")
-   (version "16.05.11")
+   (version "17.11.2")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -101,12 +102,12 @@ and they are executed on lists of files, hosts, users or other items.")
                   version ".tar.bz2"))
             (sha256
              (base32
-              "0c63mvh13wsp6jlydaz98v35iwg53mk94ynpx9dqn2z4gl53k5y7"))
-            (patches (search-patches
-                      "slurm-configure-remove-nonfree-contribs.patch"))
+              "18yakb8kmhb16n0cv3zhjv8ahvsk9p0max8mmr2flb2c65fawks6"))
             (modules '((guix build utils)))
             (snippet
              '(begin
+                (substitute* "configure.ac"
+                  (("^[[:space:]]+contribs/.*$") ""))
                 (delete-file-recursively "contribs")
                 #t))))
    ;; FIXME: More optional inputs could be added,
@@ -136,9 +137,9 @@ and they are executed on lists of files, hosts, users or other items.")
             (string-append "--with-ssl=" (assoc-ref %build-inputs "openssl")))
       #:phases
       (modify-phases %standard-phases
-        (add-after 'unpack 'autogen
-          (lambda _ (zero? (system* "autoconf"))))))) ; configure.ac was patched
-   (home-page "http://slurm.schedmd.com/")
+        (add-after 'unpack 'autoconf
+          (lambda _ (invoke "autoconf")))))) ; configure.ac was patched
+   (home-page "https://slurm.schedmd.com/")
    (synopsis "Workload manager for cluster computing")
    (description
     "SLURM is a fault-tolerant and highly scalable cluster management and job
@@ -147,7 +148,12 @@ resources (computer nodes) to users for some duration of time, provides a
 framework for starting, executing, and monitoring work (typically a parallel
 job) on a set of allocated nodes, and arbitrates contention for resources
 by managing a queue of pending work.")
-   (license license:gpl2+)))
+   (license (list license:bsd-2       ; src/common/log.[ch], src/common/uthash
+                  license:expat       ; slurm/pmi.h
+                  license:isc         ; src/common/strlcpy.c
+                  license:lgpl2.1+    ; hilbert.[ch], src/common/slurm_time.h
+                  license:zlib        ; src/common/strnatcmp.c
+                  license:gpl2+))))   ; the rest, often with OpenSSL exception
 
 (define-public slurm-drmaa
   (package
diff --git a/gnu/packages/patches/dtc-32-bits-check.patch b/gnu/packages/patches/dtc-32-bits-check.patch
deleted file mode 100644
index cf15be3404..0000000000
--- a/gnu/packages/patches/dtc-32-bits-check.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-This fixes tests on 32 bits platforms. Patch taken from upstream.
-
-commit f8872e29ce06d78d3db71b3ab26a7465fc8a9586
-Author: David Gibson <david@gibson.dropbear.id.au>
-Date:   Fri Oct 6 23:07:30 2017 +1100
-
-    tests: Avoid 64-bit arithmetic in assembler
-    
-    For testing we (ab)use the assembler to build us a sample dtb, independent
-    of the other tools (dtc and libfdt) that we're trying to test.  In a few
-    places this uses 64-bit arithmetic to decompose 64-bit constants into
-    the individual bytes in the blob.
-    
-    Unfortunately, it seems that some builds of GNU as don't support >32 bit
-    arithmetic, though it's not entirely clear to me which do and which don't
-    (Fedora i386 does support 64-bit, Debian arm32 doesn't).
-    
-    Anyway, to be safe, this avoids 64-bit arithmetic in assembler at the cost
-    of some extra awkwardness because we have to define the values in 32-bit
-    halves.
-    
-    Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-
-diff --git a/tests/testdata.h b/tests/testdata.h
-index 3588778..f6bbe1d 100644
---- a/tests/testdata.h
-+++ b/tests/testdata.h
-@@ -4,15 +4,25 @@
- #define ASM_CONST_LL(x)	(x##ULL)
- #endif
- 
--#define TEST_ADDR_1	ASM_CONST_LL(0xdeadbeef00000000)
--#define TEST_SIZE_1	ASM_CONST_LL(0x100000)
--#define TEST_ADDR_2	ASM_CONST_LL(123456789)
--#define TEST_SIZE_2	ASM_CONST_LL(010000)
-+#define TEST_ADDR_1H	ASM_CONST_LL(0xdeadbeef)
-+#define TEST_ADDR_1L	ASM_CONST_LL(0x00000000)
-+#define TEST_ADDR_1	((TEST_ADDR_1H << 32) | TEST_ADDR_1L)
-+#define TEST_SIZE_1H	ASM_CONST_LL(0x00000000)
-+#define TEST_SIZE_1L	ASM_CONST_LL(0x00100000)
-+#define TEST_SIZE_1	((TEST_SIZE_1H << 32) | TEST_SIZE_1L)
-+#define TEST_ADDR_2H	ASM_CONST_LL(0)
-+#define TEST_ADDR_2L	ASM_CONST_LL(123456789)
-+#define TEST_ADDR_2	((TEST_ADDR_2H << 32) | TEST_ADDR_2L)
-+#define TEST_SIZE_2H	ASM_CONST_LL(0)
-+#define TEST_SIZE_2L	ASM_CONST_LL(010000)
-+#define TEST_SIZE_2	((TEST_SIZE_2H << 32) | TEST_SIZE_2L)
- 
- #define TEST_VALUE_1	0xdeadbeef
- #define TEST_VALUE_2	123456789
- 
--#define TEST_VALUE64_1	ASM_CONST_LL(0xdeadbeef01abcdef)
-+#define TEST_VALUE64_1H	ASM_CONST_LL(0xdeadbeef)
-+#define TEST_VALUE64_1L	ASM_CONST_LL(0x01abcdef)
-+#define TEST_VALUE64_1	((TEST_VALUE64_1H << 32) | TEST_VALUE64_1L)
- 
- #define PHANDLE_1	0x2000
- #define PHANDLE_2	0x2001
-diff --git a/tests/trees.S b/tests/trees.S
-index 9854d1d..9859914 100644
---- a/tests/trees.S
-+++ b/tests/trees.S
-@@ -7,16 +7,6 @@
- 	.byte	((val) >> 8) & 0xff ; \
- 	.byte	(val) & 0xff	;
- 
--#define FDTQUAD(val) \
--	.byte	((val) >> 56) & 0xff ; \
--	.byte	((val) >> 48) & 0xff ; \
--	.byte	((val) >> 40) & 0xff ; \
--	.byte	((val) >> 32) & 0xff ; \
--	.byte	((val) >> 24) & 0xff ; \
--	.byte	((val) >> 16) & 0xff ; \
--	.byte	((val) >> 8) & 0xff ; \
--	.byte	(val) & 0xff	;
--
- #define TREE_HDR(tree) \
- 	.balign	8		; \
- 	.globl	_##tree		; \
-@@ -33,14 +23,16 @@ tree:	\
- 	FDTLONG(tree##_strings_end - tree##_strings) ; \
- 	FDTLONG(tree##_struct_end - tree##_struct) ;
- 
--#define RSVMAP_ENTRY(addr, len) \
--	FDTQUAD(addr)		; \
--	FDTQUAD(len)		; \
-+#define RSVMAP_ENTRY(addrh, addrl, lenh, lenl) \
-+	FDTLONG(addrh)		; \
-+	FDTLONG(addrl)		; \
-+	FDTLONG(lenh)		; \
-+	FDTLONG(lenl)
- 
- #define EMPTY_RSVMAP(tree) \
- 	.balign	8		; \
- tree##_rsvmap:			; \
--	RSVMAP_ENTRY(0, 0) \
-+	RSVMAP_ENTRY(0, 0, 0, 0) \
- tree##_rsvmap_end:		;
- 
- #define PROPHDR(tree, name, len) \
-@@ -52,9 +44,10 @@ tree##_rsvmap_end:		;
- 	PROPHDR(tree, name, 4) \
- 	FDTLONG(val)		;
- 
--#define PROP_INT64(tree, name, val) \
-+#define PROP_INT64(tree, name, valh, vall) \
- 	PROPHDR(tree, name, 8) \
--	FDTQUAD(val)		;
-+	FDTLONG(valh)		; \
-+	FDTLONG(vall)		;
- 
- #define PROP_STR(tree, name, str) \
- 	PROPHDR(tree, name, 55f - 54f) \
-@@ -81,16 +74,16 @@ tree##_##name:			; \
- 
- 	.balign	8
- test_tree1_rsvmap:
--	RSVMAP_ENTRY(TEST_ADDR_1, TEST_SIZE_1)
--	RSVMAP_ENTRY(TEST_ADDR_2, TEST_SIZE_2)
--	RSVMAP_ENTRY(0, 0)
-+	RSVMAP_ENTRY(TEST_ADDR_1H, TEST_ADDR_1L, TEST_SIZE_1H, TEST_SIZE_1L)
-+	RSVMAP_ENTRY(TEST_ADDR_2H, TEST_ADDR_2L, TEST_SIZE_2H, TEST_SIZE_2L)
-+	RSVMAP_ENTRY(0, 0, 0, 0)
- test_tree1_rsvmap_end:
- 
- test_tree1_struct:
- 	BEGIN_NODE("")
- 	PROP_STR(test_tree1, compatible, "test_tree1")
- 	PROP_INT(test_tree1, prop_int, TEST_VALUE_1)
--	PROP_INT64(test_tree1, prop_int64, TEST_VALUE64_1)
-+	PROP_INT64(test_tree1, prop_int64, TEST_VALUE64_1H, TEST_VALUE64_1L)
- 	PROP_STR(test_tree1, prop_str, TEST_STRING_1)
- 	PROP_INT(test_tree1, address_cells, 1)
- 	PROP_INT(test_tree1, size_cells, 0)
diff --git a/gnu/packages/patches/dtc-format-modifier.patch b/gnu/packages/patches/dtc-format-modifier.patch
deleted file mode 100644
index c33d16857f..0000000000
--- a/gnu/packages/patches/dtc-format-modifier.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-This fixes build on 32 bits platforms. This patch is taken from upstream.
-
-commit 497432fd2131967f349e69dc5d259072151cc4b4
-Author: Thierry Reding <treding@nvidia.com>
-Date:   Wed Sep 27 15:04:09 2017 +0200
-
-    checks: Use proper format modifier for size_t
-    
-    The size of size_t can vary between architectures, so using %ld isn't
-    going to work on 32-bit builds. Use the %zu modifier to make sure it is
-    always correct.
-    
-    Signed-off-by: Thierry Reding <treding@nvidia.com>
-    Acked-by: Rob Herring <robh@kernel.org>
-    Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-
-diff --git a/checks.c b/checks.c
-index 902f2e3..08a3a29 100644
---- a/checks.c
-+++ b/checks.c
-@@ -972,7 +972,7 @@ static void check_property_phandle_args(struct check *c,
- 	int cell, cellsize = 0;
- 
- 	if (prop->val.len % sizeof(cell_t)) {
--		FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple of %ld in node %s",
-+		FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple of %zu in node %s",
- 		     prop->name, prop->val.len, sizeof(cell_t), node->fullpath);
- 		return;
- 	}
-@@ -1163,7 +1163,7 @@ static void check_interrupts_property(struct check *c,
- 		return;
- 
- 	if (irq_prop->val.len % sizeof(cell_t))
--		FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple of %ld in node %s",
-+		FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple of %zu in node %s",
- 		     irq_prop->name, irq_prop->val.len, sizeof(cell_t),
- 		     node->fullpath);
- 
diff --git a/gnu/packages/patches/emacs-json-reformat-fix-tests.patch b/gnu/packages/patches/emacs-json-reformat-fix-tests.patch
new file mode 100644
index 0000000000..977e50fc68
--- /dev/null
+++ b/gnu/packages/patches/emacs-json-reformat-fix-tests.patch
@@ -0,0 +1,32 @@
+Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
+
+This patch fixes tests for Emacs 25.
+
+Upstream bug URL:
+
+https://github.com/gongo/json-reformat/issues/33
+
+diff --git a/test/json-reformat-test.el b/test/json-reformat-test.el
+index 7de3be1..b4a4dde 100644
+--- a/test/json-reformat-test.el
++++ b/test/json-reformat-test.el
+@@ -58,7 +58,7 @@
+ (ert-deftest json-reformat-test:string-to-string ()
+   (should (string= "\"foobar\"" (json-reformat:string-to-string "foobar")))
+   (should (string= "\"fo\\\"o\\nbar\"" (json-reformat:string-to-string "fo\"o\nbar")))
+-  (should (string= "\"\\u2661\"" (json-reformat:string-to-string "\u2661")))
++  (should (string= "\"♡\"" (json-reformat:string-to-string "\u2661")))
+ 
+   (should (string= "\"^(amq\\\\.gen.*|amq\\\\.default)$\"" (json-reformat:string-to-string "^(amq\\.gen.*|amq\\.default)$")))
+   )
+@@ -148,6 +148,6 @@ bar\"" (json-reformat:string-to-string "fo\"o\nbar")))
+ [{ foo : \"bar\" }, { \"foo\" : \"baz\" }]") ;; At 3 (line)
+         (json-reformat-region (point-min) (point-max)))
+       (should (string=
+-               "JSON parse error [Reason] Bad string format: \"doesn't start with '\\\"'!\" [Position] In buffer, line 3 (char 6)"
++               "JSON parse error [Reason] Bad string format: \"doesn't start with \`\\\"'!\" [Position] In buffer, line 3 (char 6)"
+                message-string))
+       )))
+-- 
+2.15.1
+
diff --git a/gnu/packages/patches/libexif-CVE-2016-6328.patch b/gnu/packages/patches/libexif-CVE-2016-6328.patch
new file mode 100644
index 0000000000..67fee0f528
--- /dev/null
+++ b/gnu/packages/patches/libexif-CVE-2016-6328.patch
@@ -0,0 +1,72 @@
+Fix CVE-2016-6328:
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1366239
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6328
+
+Patch copied from upstream source repository:
+
+https://github.com/libexif/libexif/commit/41bd04234b104312f54d25822f68738ba8d7133d
+
+From 41bd04234b104312f54d25822f68738ba8d7133d Mon Sep 17 00:00:00 2001
+From: Marcus Meissner <marcus@jet.franken.de>
+Date: Tue, 25 Jul 2017 23:44:44 +0200
+Subject: [PATCH] fixes some (not all) buffer overreads during decoding pentax
+ makernote entries.
+
+This should fix:
+https://sourceforge.net/p/libexif/bugs/125/ CVE-2016-6328
+---
+ libexif/pentax/mnote-pentax-entry.c | 16 +++++++++++++---
+ 1 file changed, 13 insertions(+), 3 deletions(-)
+
+diff --git a/libexif/pentax/mnote-pentax-entry.c b/libexif/pentax/mnote-pentax-entry.c
+index d03d159..ea0429a 100644
+--- a/libexif/pentax/mnote-pentax-entry.c
++++ b/libexif/pentax/mnote-pentax-entry.c
+@@ -425,24 +425,34 @@ mnote_pentax_entry_get_value (MnotePentaxEntry *entry,
+ 		case EXIF_FORMAT_SHORT:
+ 		  {
+ 			const unsigned char *data = entry->data;
+-		  	size_t k, len = strlen(val);
++		  	size_t k, len = strlen(val), sizeleft;
++
++			sizeleft = entry->size;
+ 		  	for(k=0; k<entry->components; k++) {
++				if (sizeleft < 2)
++					break;
+ 				vs = exif_get_short (data, entry->order);
+ 				snprintf (val+len, maxlen-len, "%i ", vs);
+ 				len = strlen(val);
+ 				data += 2;
++				sizeleft -= 2;
+ 			}
+ 		  }
+ 		  break;
+ 		case EXIF_FORMAT_LONG:
+ 		  {
+ 			const unsigned char *data = entry->data;
+-		  	size_t k, len = strlen(val);
++		  	size_t k, len = strlen(val), sizeleft;
++
++			sizeleft = entry->size;
+ 		  	for(k=0; k<entry->components; k++) {
++				if (sizeleft < 4)
++					break;
+ 				vl = exif_get_long (data, entry->order);
+ 				snprintf (val+len, maxlen-len, "%li", (long int) vl);
+ 				len = strlen(val);
+ 				data += 4;
++				sizeleft -= 4;
+ 			}
+ 		  }
+ 		  break;
+@@ -455,5 +465,5 @@ mnote_pentax_entry_get_value (MnotePentaxEntry *entry,
+ 		break;
+ 	}
+ 
+-	return (val);
++	return val;
+ }
+-- 
+2.16.0
+
diff --git a/gnu/packages/patches/lxterminal-CVE-2016-10369.patch b/gnu/packages/patches/lxterminal-CVE-2016-10369.patch
deleted file mode 100644
index 809eef08da..0000000000
--- a/gnu/packages/patches/lxterminal-CVE-2016-10369.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-Fix CVE-2016-10369:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10369
-
-Patch copied from upstream source repository:
-
-https://git.lxde.org/gitweb/?p=lxde/lxterminal.git;a=commit;h=f99163c6ff8b2f57c5f37b1ce5d62cf7450d4648
-
-From f99163c6ff8b2f57c5f37b1ce5d62cf7450d4648 Mon Sep 17 00:00:00 2001
-From: Yao Wei <mwei@lxde.org>
-Date: Mon, 8 May 2017 00:47:55 +0800
-Subject: [PATCH] fix: use g_get_user_runtime_dir for socket directory
-
-This bug is pointed out by stackexchange user that putting socket file in
-/tmp is a potential risk. Putting the socket dir in user directory could
-mitigate the risk.
----
- src/unixsocket.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/unixsocket.c b/src/unixsocket.c
-index 4c660ac..f88284c 100644
---- a/src/unixsocket.c
-+++ b/src/unixsocket.c
-@@ -140,7 +140,8 @@ gboolean lxterminal_socket_initialize(LXTermWindow * lxtermwin, gint argc, gchar
-      * This function returns TRUE if this process should keep running and FALSE if it should exit. */
- 
-     /* Formulate the path for the Unix domain socket. */
--    gchar * socket_path = g_strdup_printf("/tmp/.lxterminal-socket%s-%s", gdk_display_get_name(gdk_display_get_default()), g_get_user_name());
-+    gchar * socket_path = g_strdup_printf("%s/.lxterminal-socket-%s", g_get_user_runtime_dir(), gdk_display_get_name(gdk_display_get_default()));
-+    printf("%s\n", socket_path);
- 
-     /* Create socket. */
-     int fd = socket(PF_UNIX, SOCK_STREAM, 0);
--- 
-2.1.4
-
diff --git a/gnu/packages/patches/ninja-zero-mtime.patch b/gnu/packages/patches/ninja-zero-mtime.patch
deleted file mode 100644
index c9b9e8d798..0000000000
--- a/gnu/packages/patches/ninja-zero-mtime.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Work around a design defect in Ninja whereby a zero mtime is used to
-denote missing files (we happen to produce files that have a zero mtime
-and yet really do exist.)
-
---- ninja-1.5.3/src/disk_interface.cc	2014-11-24 18:37:47.000000000 +0100
-+++ ninja-1.5.3/src/disk_interface.cc	2015-07-18 23:20:38.572290139 +0200
-@@ -194,6 +194,12 @@ TimeStamp RealDiskInterface::Stat(const
-     }
-     return -1;
-   }
-+
-+  if (st.st_mtime == 0)
-+    // All the code assumes that mtime == 0 means "file missing".  Here we
-+    // know the file is not missing, so tweak the mtime.
-+    st.st_mtime = 1;
-+
-   return st.st_mtime;
- #endif
- }
diff --git a/gnu/packages/patches/slurm-configure-remove-nonfree-contribs.patch b/gnu/packages/patches/slurm-configure-remove-nonfree-contribs.patch
deleted file mode 100644
index 4092261f75..0000000000
--- a/gnu/packages/patches/slurm-configure-remove-nonfree-contribs.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 49d83e24a8e66977056fc9920812265c16806500 Mon Sep 17 00:00:00 2001
-From: carolili <carolili@iki.fi>
-Date: Thu, 9 Feb 2017 19:24:49 +0000
-Subject: [PATCH] Removing contribs
-
----
- configure.ac | 22 ----------------------
- 1 file changed, 22 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 1cf1051..5d76b44 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -435,28 +435,6 @@ dnl All slurm Makefiles:
- 
- AC_CONFIG_FILES([Makefile
- 		 auxdir/Makefile
--		 contribs/Makefile
--		 contribs/cray/Makefile
--		 contribs/cray/csm/Makefile
--		 contribs/lua/Makefile
--		 contribs/mic/Makefile
--		 contribs/pam/Makefile
--		 contribs/pam_slurm_adopt/Makefile
--		 contribs/perlapi/Makefile
--		 contribs/perlapi/libslurm/Makefile
--		 contribs/perlapi/libslurm/perl/Makefile.PL
--		 contribs/perlapi/libslurmdb/Makefile
--		 contribs/perlapi/libslurmdb/perl/Makefile.PL
--		 contribs/seff/Makefile
--		 contribs/torque/Makefile
--		 contribs/openlava/Makefile
--		 contribs/phpext/Makefile
--		 contribs/phpext/slurm_php/config.m4
--		 contribs/sgather/Makefile
--		 contribs/sgi/Makefile
--		 contribs/sjobexit/Makefile
--		 contribs/slurmdb-direct/Makefile
--		 contribs/pmi2/Makefile
- 		 doc/Makefile
- 		 doc/man/Makefile
- 		 doc/man/man1/Makefile
--- 
-2.11.0
-
diff --git a/gnu/packages/patches/transmission-fix-dns-rebinding-vuln.patch b/gnu/packages/patches/transmission-fix-dns-rebinding-vuln.patch
new file mode 100644
index 0000000000..a3a0cf1608
--- /dev/null
+++ b/gnu/packages/patches/transmission-fix-dns-rebinding-vuln.patch
@@ -0,0 +1,302 @@
+Fix a weakness that allows remote code execution via the Transmission
+RPC server using DNS rebinding:
+
+https://bugs.chromium.org/p/project-zero/issues/detail?id=1447
+
+Patch adapted from Tavis Ormandy's patch on the Transmission master
+branch to the Transmission 2.92 release by Leo Famulari
+<leo@famulari.name>:
+
+https://github.com/transmission/transmission/pull/468/commits
+
+From fe2d3c6e75088f3d9b6040ce06da3d530358bc2f Mon Sep 17 00:00:00 2001
+From: Tavis Ormandy <taviso@google.com>
+Date: Thu, 11 Jan 2018 10:00:41 -0800
+Subject: [PATCH] mitigate dns rebinding attacks against daemon
+
+---
+ libtransmission/quark.c        |   2 + 
+ libtransmission/quark.h        |   2 + 
+ libtransmission/rpc-server.c   | 116 +++++++++++++++++++++++++++++++++++++----
+ libtransmission/rpc-server.h   |   4 ++
+ libtransmission/session.c      |   2 + 
+ libtransmission/transmission.h |   1 + 
+ libtransmission/web.c          |   3 ++
+ 7 files changed, 121 insertions(+), 9 deletions(-)
+
+diff --git a/libtransmission/quark.c b/libtransmission/quark.c
+index 30cc2bca4..b4fd7aabd 100644
+--- a/libtransmission/quark.c
++++ b/libtransmission/quark.c
+@@ -289,6 +289,8 @@ static const struct tr_key_struct my_static[] =
+   { "rpc-authentication-required", 27 },
+   { "rpc-bind-address", 16 },
+   { "rpc-enabled", 11 },
++  { "rpc-host-whitelist", 18 },
++  { "rpc-host-whitelist-enabled", 26 },
+   { "rpc-password", 12 },
+   { "rpc-port", 8 },
+   { "rpc-url", 7 },
+diff --git a/libtransmission/quark.h b/libtransmission/quark.h
+index 7f5212733..17464be8f 100644
+--- a/libtransmission/quark.h
++++ b/libtransmission/quark.h
+@@ -291,6 +291,8 @@ enum
+   TR_KEY_rpc_authentication_required,
+   TR_KEY_rpc_bind_address,
+   TR_KEY_rpc_enabled,
++  TR_KEY_rpc_host_whitelist,
++  TR_KEY_rpc_host_whitelist_enabled,
+   TR_KEY_rpc_password,
+   TR_KEY_rpc_port,
+   TR_KEY_rpc_url,
+diff --git a/libtransmission/rpc-server.c b/libtransmission/rpc-server.c
+index a3485f3fa..292cd5fce 100644
+--- a/libtransmission/rpc-server.c
++++ b/libtransmission/rpc-server.c
+@@ -52,6 +52,7 @@ struct tr_rpc_server
+     bool               isEnabled;
+     bool               isPasswordEnabled;
+     bool               isWhitelistEnabled;
++    bool               isHostWhitelistEnabled;
+     tr_port            port;
+     char             * url;
+     struct in_addr     bindAddress;
+@@ -63,6 +64,7 @@ struct tr_rpc_server
+     char             * password;
+     char             * whitelistStr;
+     tr_list          * whitelist;
++    tr_list          * hostWhitelist;
+ 
+     char             * sessionId;
+     time_t             sessionIdExpiresAt;
+@@ -588,6 +590,49 @@ isAddressAllowed (const tr_rpc_server * server, const char * address)
+   return false;
+ }
+ 
++static bool isHostnameAllowed(tr_rpc_server const* server, struct evhttp_request* req)
++{
++    /* If password auth is enabled, any hostname is permitted. */
++    if (server->isPasswordEnabled)
++    {
++        return true;
++    }
++
++    char const* const host = evhttp_find_header(req->input_headers, "Host");
++
++    // If whitelist is disabled, no restrictions.
++    if (!server->isHostWhitelistEnabled)
++        return true;
++
++    /* No host header, invalid request. */
++    if (host == NULL)
++    {
++        return false;
++    }
++
++    /* Host header might include the port. */
++    char* const hostname = tr_strndup(host, strcspn(host, ":"));
++
++    /* localhost or ipaddress is always acceptable. */
++    if (strcmp(hostname, "localhost") == 0 || strcmp(hostname, "localhost.") == 0 || tr_addressIsIP(hostname))
++    {
++        tr_free(hostname);
++        return true;
++    }
++
++    /* Otherwise, hostname must be whitelisted. */
++    for (tr_list* l = server->hostWhitelist; l != NULL; l = l->next) {
++        if (tr_wildmat(hostname, l->data))
++        {
++            tr_free(hostname);
++            return true;
++        }
++    }
++
++    tr_free(hostname);
++    return false;
++}
++
+ static bool
+ test_session_id (struct tr_rpc_server * server, struct evhttp_request * req)
+ {
+@@ -663,6 +708,23 @@ handle_request (struct evhttp_request * req, void * arg)
+           handle_upload (req, server);
+         }
+ #ifdef REQUIRE_SESSION_ID
++        else if (!isHostnameAllowed(server, req))
++        {
++            char* tmp = tr_strdup_printf(
++                "<p>Transmission received your request, but the hostname was unrecognized.</p>"
++                "<p>To fix this, choose one of the following options:"
++                "<ul>"
++                "<li>Enable password authentication, then any hostname is allowed.</li>"
++                "<li>Add the hostname you want to use to the whitelist in settings.</li>"
++                "</ul></p>"
++                "<p>If you're editing settings.json, see the 'rpc-host-whitelist' and 'rpc-host-whitelist-enabled' entries.</p>"
++                "<p>This requirement has been added to help prevent "
++                "<a href=\"https://en.wikipedia.org/wiki/DNS_rebinding\">DNS Rebinding</a> "
++                "attacks.</p>");
++            send_simple_response(req, 421, tmp);
++            tr_free(tmp);
++        }
++
+       else if (!test_session_id (server, req))
+         {
+           const char * sessionId = get_current_session_id (server);
+@@ -674,7 +736,7 @@ handle_request (struct evhttp_request * req, void * arg)
+             "<li> When you get this 409 error message, resend your request with the updated header"
+             "</ol></p>"
+             "<p>This requirement has been added to help prevent "
+-            "<a href=\"http://en.wikipedia.org/wiki/Cross-site_request_forgery\">CSRF</a> "
++            "<a href=\"https://en.wikipedia.org/wiki/Cross-site_request_forgery\">CSRF</a> "
+             "attacks.</p>"
+             "<p><code>%s: %s</code></p>",
+             TR_RPC_SESSION_ID_HEADER, sessionId);
+@@ -875,19 +937,14 @@ tr_rpcGetUrl (const tr_rpc_server * server)
+   return server->url ? server->url : "";
+ }
+ 
+-void
+-tr_rpcSetWhitelist (tr_rpc_server * server, const char * whitelistStr)
++static void
++tr_rpcSetList (char const* whitelistStr, tr_list** list)
+ {
+   void * tmp;
+   const char * walk;
+ 
+-  /* keep the string */
+-  tmp = server->whitelistStr;
+-  server->whitelistStr = tr_strdup (whitelistStr);
+-  tr_free (tmp);
+-
+   /* clear out the old whitelist entries */
+-  while ((tmp = tr_list_pop_front (&server->whitelist)))
++  while ((tmp = tr_list_pop_front (list)) != NULL)
+     tr_free (tmp);
+ 
+   /* build the new whitelist entries */
+@@ -896,7 +953,7 @@ tr_rpcSetWhitelist (tr_rpc_server * server, const char * whitelistStr)
+       const char * delimiters = " ,;";
+       const size_t len = strcspn (walk, delimiters);
+       char * token = tr_strndup (walk, len);
+-      tr_list_append (&server->whitelist, token);
++      tr_list_append (list, token);
+       if (strcspn (token, "+-") < len)
+         tr_logAddNamedInfo (MY_NAME, "Adding address to whitelist: %s (And it has a '+' or '-'!  Are you using an old ACL by mistake?)", token);
+       else
+@@ -909,6 +966,21 @@ tr_rpcSetWhitelist (tr_rpc_server * server, const char * whitelistStr)
+     }
+ }
+ 
++void tr_rpcSetHostWhitelist(tr_rpc_server* server, char const* whitelistStr)
++{
++    tr_rpcSetList(whitelistStr, &server->hostWhitelist);
++}
++
++void tr_rpcSetWhitelist(tr_rpc_server* server, char const* whitelistStr)
++{
++    /* keep the string */
++    char* const tmp = server->whitelistStr;
++    server->whitelistStr = tr_strdup(whitelistStr);
++    tr_free(tmp);
++
++    tr_rpcSetList(whitelistStr, &server->whitelist);
++}
++
+ const char*
+ tr_rpcGetWhitelist (const tr_rpc_server * server)
+ {
+@@ -930,6 +1002,11 @@ tr_rpcGetWhitelistEnabled (const tr_rpc_server * server)
+   return server->isWhitelistEnabled;
+ }
+ 
++void tr_rpcSetHostWhitelistEnabled(tr_rpc_server* server, bool isEnabled)
++{
++    server->isHostWhitelistEnabled = isEnabled;
++}
++
+ /****
+ *****  PASSWORD
+ ****/
+@@ -1063,6 +1140,28 @@ tr_rpcInit (tr_session  * session, tr_variant * settings)
+   else
+     tr_rpcSetWhitelistEnabled (s, boolVal);
+ 
++  key = TR_KEY_rpc_host_whitelist_enabled;
++
++  if (!tr_variantDictFindBool(settings, key, &boolVal))
++  {
++      missing_settings_key(key);
++  }
++  else
++  {
++      tr_rpcSetHostWhitelistEnabled(s, boolVal);
++  }
++
++  key = TR_KEY_rpc_host_whitelist;
++
++  if (!tr_variantDictFindStr(settings, key, &str, NULL) && str != NULL)
++  {
++      missing_settings_key(key);
++  }
++  else
++  {
++      tr_rpcSetHostWhitelist(s, str);
++  }
++
+   key = TR_KEY_rpc_authentication_required;
+   if (!tr_variantDictFindBool (settings, key, &boolVal))
+     missing_settings_key (key);
+diff --git a/libtransmission/rpc-server.h b/libtransmission/rpc-server.h
+index e0302c5ea..8c9e6b24e 100644
+--- a/libtransmission/rpc-server.h
++++ b/libtransmission/rpc-server.h
+@@ -49,6 +49,10 @@ void            tr_rpcSetWhitelist (tr_rpc_server * server,
+ 
+ const char*     tr_rpcGetWhitelist (const tr_rpc_server * server);
+ 
++void tr_rpcSetHostWhitelistEnabled(tr_rpc_server* server, bool isEnabled);
++
++void tr_rpcSetHostWhitelist(tr_rpc_server* server, char const* whitelist);
++
+ void            tr_rpcSetPassword (tr_rpc_server * server,
+                                    const char *    password);
+ 
+diff --git a/libtransmission/session.c b/libtransmission/session.c
+index 844cadba8..58b717913 100644
+--- a/libtransmission/session.c
++++ b/libtransmission/session.c
+@@ -359,6 +359,8 @@ tr_sessionGetDefaultSettings (tr_variant * d)
+   tr_variantDictAddStr  (d, TR_KEY_rpc_username,                    "");
+   tr_variantDictAddStr  (d, TR_KEY_rpc_whitelist,                   TR_DEFAULT_RPC_WHITELIST);
+   tr_variantDictAddBool (d, TR_KEY_rpc_whitelist_enabled,           true);
++  tr_variantDictAddStr(d, TR_KEY_rpc_host_whitelist, TR_DEFAULT_RPC_HOST_WHITELIST);
++  tr_variantDictAddBool(d, TR_KEY_rpc_host_whitelist_enabled, true);
+   tr_variantDictAddInt  (d, TR_KEY_rpc_port,                        atoi (TR_DEFAULT_RPC_PORT_STR));
+   tr_variantDictAddStr  (d, TR_KEY_rpc_url,                         TR_DEFAULT_RPC_URL_STR);
+   tr_variantDictAddBool (d, TR_KEY_scrape_paused_torrents_enabled,  true);
+diff --git a/libtransmission/transmission.h b/libtransmission/transmission.h
+index 4f76adfd6..e213a8f4e 100644
+--- a/libtransmission/transmission.h
++++ b/libtransmission/transmission.h
+@@ -123,6 +123,7 @@ const char* tr_getDefaultDownloadDir (void);
+ #define TR_DEFAULT_BIND_ADDRESS_IPV4        "0.0.0.0"
+ #define TR_DEFAULT_BIND_ADDRESS_IPV6             "::"
+ #define TR_DEFAULT_RPC_WHITELIST          "127.0.0.1"
++#define TR_DEFAULT_RPC_HOST_WHITELIST              ""
+ #define TR_DEFAULT_RPC_PORT_STR                "9091"
+ #define TR_DEFAULT_RPC_URL_STR       "/transmission/"
+ #define TR_DEFAULT_PEER_PORT_STR              "51413"
+diff --git a/libtransmission/web.c b/libtransmission/web.c
+index ee495e9fc..c7f062730 100644
+--- a/libtransmission/web.c
++++ b/libtransmission/web.c
+@@ -594,6 +594,7 @@ tr_webGetResponseStr (long code)
+       case 415: return "Unsupported Media Type";
+       case 416: return "Requested Range Not Satisfiable";
+       case 417: return "Expectation Failed";
++      case 421: return "Misdirected Request";
+       case 500: return "Internal Server Error";
+       case 501: return "Not Implemented";
+       case 502: return "Bad Gateway";
diff --git a/gnu/packages/patches/webkitgtk-mitigate-spectre.patch b/gnu/packages/patches/webkitgtk-mitigate-spectre.patch
deleted file mode 100644
index 3d983ede66..0000000000
--- a/gnu/packages/patches/webkitgtk-mitigate-spectre.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-Disable SharedArrayBuffers to mitigate Spectre.  Based on:
-
-  https://trac.webkit.org/changeset/226386/webkit
-
-Backported to webkitgtk-2.18.4 by Mark H Weaver <mhw@netris.org>
-
-
---- webkitgtk-2.18.4/Source/JavaScriptCore/runtime/JSGlobalObject.h.orig	2017-12-19 02:23:07.000000000 -0500
-+++ webkitgtk-2.18.4/Source/JavaScriptCore/runtime/JSGlobalObject.h	2018-01-06 19:28:55.985066986 -0500
-@@ -338,8 +338,10 @@
-     WriteBarrier<Structure> m_moduleLoaderStructure;
-     WriteBarrier<JSArrayBufferPrototype> m_arrayBufferPrototype;
-     WriteBarrier<Structure> m_arrayBufferStructure;
-+#if ENABLE(SHARED_ARRAY_BUFFER)
-     WriteBarrier<JSArrayBufferPrototype> m_sharedArrayBufferPrototype;
-     WriteBarrier<Structure> m_sharedArrayBufferStructure;
-+#endif
- 
- #define DEFINE_STORAGE_FOR_SIMPLE_TYPE(capitalName, lowerName, properName, instanceType, jsName, prototypeBase) \
-     WriteBarrier<capitalName ## Prototype> m_ ## lowerName ## Prototype; \
-@@ -670,8 +672,13 @@
-         switch (sharingMode) {
-         case ArrayBufferSharingMode::Default:
-             return m_arrayBufferPrototype.get();
-+#if ENABLE(SHARED_ARRAY_BUFFER)
-         case ArrayBufferSharingMode::Shared:
-             return m_sharedArrayBufferPrototype.get();
-+#else
-+        default:
-+            return m_arrayBufferPrototype.get();
-+#endif
-         }
-     }
-     Structure* arrayBufferStructure(ArrayBufferSharingMode sharingMode) const
-@@ -679,8 +686,13 @@
-         switch (sharingMode) {
-         case ArrayBufferSharingMode::Default:
-             return m_arrayBufferStructure.get();
-+#if ENABLE(SHARED_ARRAY_BUFFER)
-         case ArrayBufferSharingMode::Shared:
-             return m_sharedArrayBufferStructure.get();
-+#else
-+        default:
-+            return m_arrayBufferStructure.get();
-+#endif
-         }
-         RELEASE_ASSERT_NOT_REACHED();
-         return nullptr;
---- webkitgtk-2.18.4/Source/JavaScriptCore/runtime/JSGlobalObject.cpp.orig	2017-12-19 02:23:07.000000000 -0500
-+++ webkitgtk-2.18.4/Source/JavaScriptCore/runtime/JSGlobalObject.cpp	2018-01-06 19:27:16.628574304 -0500
-@@ -574,8 +574,10 @@
-     
-     m_arrayBufferPrototype.set(vm, this, JSArrayBufferPrototype::create(vm, this, JSArrayBufferPrototype::createStructure(vm, this, m_objectPrototype.get()), ArrayBufferSharingMode::Default));
-     m_arrayBufferStructure.set(vm, this, JSArrayBuffer::createStructure(vm, this, m_arrayBufferPrototype.get()));
-+#if ENABLE(SHARED_ARRAY_BUFFER)
-     m_sharedArrayBufferPrototype.set(vm, this, JSArrayBufferPrototype::create(vm, this, JSArrayBufferPrototype::createStructure(vm, this, m_objectPrototype.get()), ArrayBufferSharingMode::Shared));
-     m_sharedArrayBufferStructure.set(vm, this, JSArrayBuffer::createStructure(vm, this, m_sharedArrayBufferPrototype.get()));
-+#endif
- 
-     m_iteratorPrototype.set(vm, this, IteratorPrototype::create(vm, this, IteratorPrototype::createStructure(vm, this, m_objectPrototype.get())));
-     m_generatorPrototype.set(vm, this, GeneratorPrototype::create(vm, this, GeneratorPrototype::createStructure(vm, this, m_iteratorPrototype.get())));
-@@ -620,10 +622,11 @@
-     
-     JSArrayBufferConstructor* arrayBufferConstructor = JSArrayBufferConstructor::create(vm, JSArrayBufferConstructor::createStructure(vm, this, m_functionPrototype.get()), m_arrayBufferPrototype.get(), m_speciesGetterSetter.get(), ArrayBufferSharingMode::Default);
-     m_arrayBufferPrototype->putDirectWithoutTransition(vm, vm.propertyNames->constructor, arrayBufferConstructor, DontEnum);
-+#if ENABLE(SHARED_ARRAY_BUFFER)
-     JSArrayBufferConstructor* sharedArrayBufferConstructor = nullptr;
-     sharedArrayBufferConstructor = JSArrayBufferConstructor::create(vm, JSArrayBufferConstructor::createStructure(vm, this, m_functionPrototype.get()), m_sharedArrayBufferPrototype.get(), m_speciesGetterSetter.get(), ArrayBufferSharingMode::Shared);
-     m_sharedArrayBufferPrototype->putDirectWithoutTransition(vm, vm.propertyNames->constructor, sharedArrayBufferConstructor, DontEnum);
--    
-+#endif
- #define CREATE_CONSTRUCTOR_FOR_SIMPLE_TYPE(capitalName, lowerName, properName, instanceType, jsName, prototypeBase) \
- capitalName ## Constructor* lowerName ## Constructor = capitalName ## Constructor::create(vm, capitalName ## Constructor::createStructure(vm, this, m_functionPrototype.get()), m_ ## lowerName ## Prototype.get(), m_speciesGetterSetter.get()); \
- m_ ## lowerName ## Prototype->putDirectWithoutTransition(vm, vm.propertyNames->constructor, lowerName ## Constructor, DontEnum); \
-@@ -686,7 +689,9 @@
-     putDirectWithoutTransition(vm, vm.propertyNames->builtinNames().ArrayPrivateName(), arrayConstructor, DontEnum | DontDelete | ReadOnly);
- 
-     putDirectWithoutTransition(vm, vm.propertyNames->ArrayBuffer, arrayBufferConstructor, DontEnum);
-+#if ENABLE(SHARED_ARRAY_BUFFER)
-     putDirectWithoutTransition(vm, vm.propertyNames->SharedArrayBuffer, sharedArrayBufferConstructor, DontEnum);
-+#endif
- 
- #define PUT_CONSTRUCTOR_FOR_SIMPLE_TYPE(capitalName, lowerName, properName, instanceType, jsName, prototypeBase) \
- putDirectWithoutTransition(vm, vm.propertyNames-> jsName, lowerName ## Constructor, DontEnum); \
-@@ -1288,8 +1293,10 @@
-     
-     visitor.append(thisObject->m_arrayBufferPrototype);
-     visitor.append(thisObject->m_arrayBufferStructure);
-+#if ENABLE(SHARED_ARRAY_BUFFER)
-     visitor.append(thisObject->m_sharedArrayBufferPrototype);
-     visitor.append(thisObject->m_sharedArrayBufferStructure);
-+#endif
- 
- #define VISIT_SIMPLE_TYPE(CapitalName, lowerName, properName, instanceType, jsName, prototypeBase) \
-     visitor.append(thisObject->m_ ## lowerName ## Prototype); \
---- webkitgtk-2.18.4/Source/WTF/wtf/Platform.h.orig	2017-10-16 08:18:56.000000000 -0400
-+++ webkitgtk-2.18.4/Source/WTF/wtf/Platform.h	2018-01-06 19:29:52.897349199 -0500
-@@ -1190,6 +1190,9 @@
- #define HAVE_NS_ACTIVITY 1
- #endif
- 
-+/* Disable SharedArrayBuffers until Spectre security concerns are mitigated. */
-+#define ENABLE_SHARED_ARRAY_BUFFER 0
-+
- #if (OS(DARWIN) && USE(CG)) || (USE(FREETYPE) && !PLATFORM(GTK)) || (PLATFORM(WIN) && (USE(CG) || USE(CAIRO)))
- #undef ENABLE_OPENTYPE_MATH
- #define ENABLE_OPENTYPE_MATH 1
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index 1e4b3fbd1c..224b0e8d64 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -150,24 +151,26 @@ refreshed, and more.")
 (define-public colordiff
   (package
     (name "colordiff")
-    (version "1.0.16")
+    (version "1.0.18")
     (source
       (origin
         (method url-fetch)
-        (uri (list (string-append "http://www.colordiff.org/archive/colordiff-"
+        (uri (list (string-append "https://www.colordiff.org/colordiff-"
+                                  version ".tar.gz")
+                   (string-append "http://www.colordiff.org/archive/colordiff-"
                                   version ".tar.gz")))
       (sha256
        (base32
-        "12qkkw13261dra8pg7mzx4r8p9pb0ajb090bib9j1s6hgphwzwga"))))
+        "1q6n60n4b9fnzccxyxv04mxjsql4ddq17vl2c74ijvjdhpcfrkr9"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f
+     `(#:tests? #f                      ; no tests
        #:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))
                           "INSTALL_DIR=/bin" "MAN_DIR=/share/man/man1")
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build))))
+         (delete 'configure)            ; no configure script
+         (delete 'build))))             ; nothing to build
     (inputs
      `(("perl" ,perl)
        ("xmlto" ,xmlto)))
diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index c84f07cc7e..ee853d5015 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -70,7 +70,7 @@ pattern matching using the same syntax and semantics as Perl 5.  PCRE has its
 own native API, as well as a set of wrapper functions that correspond to the
 POSIX regular expression API.")
    (license license:bsd-3)
-   (home-page "http://www.pcre.org/")))
+   (home-page "https://www.pcre.org/")))
 
 (define-public pcre2
   (package
@@ -112,4 +112,4 @@ pattern matching using the same syntax and semantics as Perl 5.  PCRE has its
 own native API, as well as a set of wrapper functions that correspond to the
 POSIX regular expression API.")
    (license license:bsd-3)
-   (home-page "http://www.pcre.org/")))
+   (home-page "https://www.pcre.org/")))
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index d47c98ec5d..97f133cdf8 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2015, 2017 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -90,7 +91,8 @@ cameras (CRW/CR2, NEF, RAF, DNG, and others).")
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/libexif/libexif/"
                                   version "/libexif-" version ".tar.bz2"))
-              (patches (search-patches "libexif-CVE-2017-7544.patch"))
+              (patches (search-patches "libexif-CVE-2016-6328.patch"
+                                       "libexif-CVE-2017-7544.patch"))
               (sha256
                (base32
                 "06nlsibr3ylfwp28w8f5466l6drgrnydgxrm4jmxzrmk5svaxk8n"))))
@@ -105,14 +107,14 @@ data as produced by digital cameras.")
 (define-public libgphoto2
   (package
     (name "libgphoto2")
-    (version "2.5.11")
+    (version "2.5.16")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/gphoto/libgphoto/"
                                   version "/libgphoto2-" version ".tar.bz2"))
               (sha256
                (base32
-                "1ap070zz6l4kn2mbyxb1yj4x5ar8hpdbmf2pvjxgnly1ss319dkz"))))
+                "01i95av28d0szyvx6l2gjv039r3205wjwjr91nfimq132rnl2mz7"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs
@@ -136,14 +138,14 @@ from digital cameras.")
 (define-public gphoto2
   (package
     (name "gphoto2")
-    (version "2.5.11")
+    (version "2.5.15")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/gphoto/gphoto/" version
                                   "/gphoto2-" version ".tar.bz2"))
               (sha256
                (base32
-                "1sgr6rsvzzagcwhc8fxbnvz3k02wr2hab0vrbvcb04k5l3b48a1r"))))
+                "0xsa12k5fz49v8y4h3zahzr427a3ylxaf0k7hybrkp43g4i1lmxf"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -163,7 +165,7 @@ from digital cameras.")
                 (which "env")))
              #t)))
 
-       ;; FIXME: There are 2 test failures, most likely related to the build
+       ;; FIXME: There is 1 test failure, most likely related to the build
        ;; environment.
        #:tests? #f))
 
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index da59a1d003..eacd085e55 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -678,3 +678,40 @@ Python.")
 
 (define-public python2-ecpy
   (package-with-python2 python-ecpy))
+
+(define-public python-josepy
+  (package
+    (name "python-josepy")
+    (version "1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "josepy" version))
+              (sha256
+               (base32
+                "1k0ahzzaq2rrjiifwbhbp7vm8z4zk0ipgiqwicil80kzlf6bhj4z"))))
+    (build-system python-build-system)
+    (arguments
+     ;; The tests require pytest >= 3.2, which is not yet packaged.
+     '(#:tests? #f))
+    (propagated-inputs
+     `(("python-cryptography" ,python-cryptography)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-six" ,python-six)))
+;; TODO Enable when we have pytest >= 3.2.
+;    (native-inputs
+;     `(("python-coverage" ,python-coverage)
+;       ("python-flake8" ,python-flake8)
+;       ("python-isort" ,python-isort)
+;       ("python-mock" ,python-mock)
+;       ("python-pytest" ,python-pytest-3.0)
+;       ("python-pytest-cov" ,python-pytest-cov)
+;       ("python-pytest-cache" ,python-pytest-cache)
+;       ("python-pytest-flake8" ,python-pytest-flake8)))
+    (home-page "https://github.com/certbot/josepy")
+    (synopsis "JOSE protocol implementation in Python")
+    (description "This package provides a Python implementation of the JOSE
+protocol (Javascript Object Signing and Encryption).")
+    (license license:asl2.0)))
+
+(define-public python2-josepy
+  (package-with-python2 python-josepy))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e1216eb382..4d60e910ec 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -41,7 +41,7 @@
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2017, 2018 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
 ;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org>
@@ -76,6 +76,7 @@
   #:use-module (gnu packages file)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages geo)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
@@ -471,6 +472,52 @@ pidof, tty, taskset, pmap.")
 (define-public python2-psutil
   (package-with-python2 python-psutil))
 
+(define-public python-shapely
+  (package
+    (name "python-shapely")
+    (version "1.6.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "Shapely" version))
+       (sha256
+        (base32
+         "0svc58dzcw9gj92b4sgq35sdxkf85z0qwlzxarkzq4bp3h8jy58l"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-cython" ,python-cython)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)))
+    (inputs
+     `(("geos" ,geos)))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-geos-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((geos (assoc-ref inputs "geos"))
+                   (glibc (assoc-ref inputs ,(if (%current-target-system)
+                                                 "cross-libc" "libc"))))
+               (substitute* "shapely/geos.py"
+                 (("_lgeos = load_dll\\('geos_c', fallbacks=.*\\)")
+                  (string-append "_lgeos = load_dll('geos_c', fallbacks=['"
+                                 geos "/lib/libgeos_c.so'])"))
+                 (("free = load_dll\\('c'\\)\\.free")
+                  (string-append "free = load_dll('c', fallbacks=['"
+                                 glibc "/lib/libc.so.6']).free"))))
+             #t)))))
+    (home-page "https://github.com/Toblerity/Shapely")
+    (synopsis "Library for the manipulation and analysis of geometric objects")
+    (description "Shapely is a Python package for manipulation and analysis of
+planar geometric objects.  It is based on the @code{GEOS} library.")
+    (license license:bsd-3)))
+
+(define-public python2-shapely
+  (package-with-python2 python-shapely))
+
 (define-public python-clyent
   (package
     (name "python-clyent")
@@ -3255,6 +3302,7 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
        ;; object. For this reason we need to import both libraries.
        ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
        ("python-pycairo" ,python-pycairo)
+       ("python-pyqt" ,python-pyqt)
        ("python-cairocffi" ,python-cairocffi)))
     (inputs
      `(("libpng" ,libpng)
@@ -3264,7 +3312,6 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
        ("glib" ,glib)
        ;; FIXME: Add backends when available.
        ;("python-wxpython" ,python-wxpython)
-       ("python-pyqt" ,python-pyqt)
        ("tcl" ,tcl)
        ("tk" ,tk)))
     (native-inputs
@@ -4297,7 +4344,7 @@ standard library.")
        (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
     (build-system python-build-system)
     (arguments `(#:tests? #f)) ; no tests
-    (home-page "http://ipython.org")
+    (home-page "https://ipython.org")
     (synopsis "Vestigial utilities from IPython")
     (description
      "This package provides retired utilities from IPython.  No packages
@@ -4334,7 +4381,7 @@ away.")
     (native-inputs
      `(("python-mock" ,python-mock)
        ("python-nose" ,python-nose)))
-    (home-page "http://ipython.org")
+    (home-page "https://ipython.org")
     (synopsis "Configuration system for Python applications")
     (description
      "Traitlets is a framework that lets Python classes have attributes with
@@ -4422,7 +4469,7 @@ installing @code{kernelspec}s for use with Jupyter frontends.")
     (propagated-inputs
      ;; imported at runtime during connect
      `(("python-jupyter-client" ,python-jupyter-client)))
-    (home-page "http://ipython.org")
+    (home-page "https://ipython.org")
     (synopsis "IPython Kernel for Jupyter")
     (description
      "This package provides the IPython kernel for Jupyter.")
@@ -4568,7 +4615,7 @@ installing @code{kernelspec}s for use with Jupyter frontends.")
             (substitute* "./IPython/core/tests/test_magic.py"
               (("def test_dirops\\(\\):" all)
                (string-append "@dec.skipif(True)\n" all))))))))
-    (home-page "http://ipython.org")
+    (home-page "https://ipython.org")
     (synopsis "IPython is a tool for interactive computing in Python")
     (description
      "IPython provides a rich architecture for interactive computing with:
@@ -6488,7 +6535,7 @@ interactive computing.")
     (native-inputs
      `(("python-certifi" ,python-certifi)
        ("python-nose" ,python-nose)))
-    (home-page "http://ipython.org")
+    (home-page "https://ipython.org")
     (synopsis "IPython HTML widgets for Jupyter")
     (description "This package provides interactive HTML widgets for Jupyter
 notebooks.")
@@ -6516,7 +6563,7 @@ notebooks.")
        ("python-ipython" ,python-ipython)
        ("python-traitlets" ,python-traitlets)
        ("python-widgetsnbextension" ,python-widgetsnbextension)))
-    (home-page "http://ipython.org")
+    (home-page "https://ipython.org")
     (synopsis "IPython HTML widgets for Jupyter")
     (description "Ipywidgets are interactive HTML widgets for Jupyter
 notebooks and the IPython kernel.  Notebooks come alive when interactive
diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm
index 73fa5316ff..4695e9fc71 100644
--- a/gnu/packages/readline.scm
+++ b/gnu/packages/readline.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -114,17 +115,19 @@ comfortable for anyone.")
 (define-public rlwrap
   (package
     (name "rlwrap")
-    (version "0.42")
+    (version "0.43")
     (source
       (origin
         (method url-fetch)
-        (uri (string-append "http://utopia.knoware.nl/~hlub/uck/rlwrap/rlwrap-"
-                            version ".tar.gz"))
+        (uri (string-append "https://github.com/hanslub42/rlwrap/releases/"
+                            "download/v" version "/"
+                            name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0i3yz303wscrysyzpdq04h4nrl9ajz9dbwi80risdl5rkm3dhw2s"))))
+          "0bzb7ylk2770iv59v2d0gypb21y2xn87m299s9rqm6rdi2vx11lf"))))
     (build-system gnu-build-system)
-    (native-inputs `(("perl" ,perl)))
+    (native-inputs
+     `(("perl" ,perl)))
     (inputs
      `(("readline" ,readline)))
     (synopsis "Wrapper to allow the editing of keyboard commands")
@@ -134,5 +137,5 @@ readline library to allow the editing of keyboard input for any command.  You
 should consider rlwrap especially when you need user-defined completion (by way
 of completion word lists) and persistent history, or if you want to program
 'special effects' using the filter mechanism.")
-    (home-page "http://utopia.knoware.nl/~hlub/uck/rlwrap/")
+    (home-page "https://github.com/hanslub42/rlwrap")
     (license gpl2+)))
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 4d0ca09d1a..5d77d5f97b 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -96,9 +96,7 @@
     (native-search-paths
      (list (search-path-specification
             (variable "GEM_PATH")
-            (files (list (string-append "lib/ruby/gems/"
-                                        (version-major+minor version)
-                                        ".0"))))))
+            (files (list (string-append "lib/ruby/vendor_ruby"))))))
     (synopsis "Programming language interpreter")
     (description "Ruby is a dynamic object-oriented programming language with
 a focus on simplicity and productivity.")
@@ -162,13 +160,7 @@ a focus on simplicity and productivity.")
                             "lib/mkmf.rb"
                             "process.c")
                (("/bin/sh") (which "sh")))
-             #t)))))
-    (native-search-paths
-     (list (search-path-specification
-            (variable "GEM_PATH")
-            (files (list (string-append "lib/ruby/gems/"
-                                        (version-major+minor version)
-                                        ".0"))))))))
+             #t)))))))
 
 (define-public ruby-1.8
   (package (inherit ruby)
@@ -198,11 +190,6 @@ a focus on simplicity and productivity.")
                (("/bin/sh") (which "sh")))
              #t)))))))
 
-(define (gem-directory ruby-version)
-  "Return the relative gem install directory for RUBY-VERSION."
-  (string-append "/lib/ruby/gems/" (version-major+minor ruby-version)
-                 ".0/gems"))
-
 (define-public ruby-highline
   (package
     (name "ruby-highline")
@@ -1302,13 +1289,11 @@ It allows writing tests, checking results and automated testing in Ruby.")
        (modify-phases %standard-phases
          (add-after 'unpack 'add-test-unit-to-search-path
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))
-                    (test-unit-home (gem-home test-unit
-                                              ,(package-version ruby))))
+             (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
                (substitute* "Rakefile"
                  (("t\\.libs << \"test\"" line)
                   (string-append line "; t.libs << \""
-                                 test-unit-home
+                                 test-unit "/lib/ruby/vendor_ruby"
                                  "/gems/test-unit-"
                                  ,(package-version ruby-test-unit)
                                  "/lib\""))))
@@ -1367,13 +1352,11 @@ as a base class when writing classes that depend upon
        (modify-phases %standard-phases
          (add-after 'unpack 'add-test-unit-to-search-path
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))
-                    (test-unit-home (gem-home test-unit ,(package-version
-                                                          ruby))))
+             (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
                (substitute* "Rakefile"
                  (("t\\.libs << \"test\"" line)
                   (string-append line "; t.libs << \""
-                                 test-unit-home
+                                 test-unit "/lib/ruby/vendor_ruby"
                                  "/gems/test-unit-"
                                  ,(package-version ruby-test-unit)
                                  "/lib\""))))
@@ -1406,13 +1389,11 @@ knowing anything about the constructor.")
        (modify-phases %standard-phases
          (add-after 'unpack 'add-test-unit-to-search-path
           (lambda* (#:key inputs #:allow-other-keys)
-            (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))
-                   (test-unit-home (gem-home test-unit ,(package-version
-                                                         ruby))))
+            (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
               (substitute* "Rakefile"
                 (("t\\.libs << \"test\"" line)
                  (string-append line "; t.libs << \""
-                                test-unit-home
+                                test-unit "/lib/ruby/vendor_ruby"
                                 "/gems/test-unit-"
                                 ,(package-version ruby-test-unit)
                                 "/lib\""))))
@@ -1479,13 +1460,11 @@ conversion to (X)HTML.")
        (modify-phases %standard-phases
          (add-after 'unpack 'add-test-unit-to-search-path
           (lambda* (#:key inputs #:allow-other-keys)
-            (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))
-                   (test-unit-home (gem-home test-unit
-                                             ,(package-version ruby))))
+            (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
               (substitute* "Rakefile"
                 (("t\\.libs << 'test'" line)
                  (string-append line "; t.libs << \""
-                                test-unit-home
+                                test-unit "/lib/ruby/vendor_ruby"
                                 "/gems/test-unit-"
                                 ,(package-version ruby-test-unit)
                                 "/lib\""))))
@@ -1850,9 +1829,10 @@ run as a daemon and to be controlled by simple start/stop/restart commands.")
                       ;; store.
                       (let ((git    (string-append (assoc-ref inputs "git")
                                                    "/bin/git"))
-                            (config (string-append (getenv "GEM_HOME")
-                                                   "/gems/git-" ,version
-                                                   "/lib/git/config.rb")))
+                            (config (string-append
+                                     (assoc-ref outputs "out")
+                                     "/lib/ruby/vendor_ruby/gems/git-"
+                                     ,version "/lib/git/config.rb")))
                         (substitute* (list config)
                           (("'git'")
                            (string-append "'" git "'")))
@@ -2037,13 +2017,11 @@ to reproduce user environments.")
            ;; 'pkg-config' is not included in the GEM_PATH during
            ;; installation, so we add it directly to the load path.
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config"))
-                    (pkg-config-home (gem-home pkg-config
-                                               ,(package-version ruby))))
+             (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
                (substitute* "ext/nokogiri/extconf.rb"
                  (("gem 'pkg-config'.*")
                   (string-append "$:.unshift '"
-                                 pkg-config-home
+                                 pkg-config "/lib/ruby/vendor_ruby"
                                  "/gems/pkg-config-"
                                  ,(package-version ruby-pkg-config)
                                  "/lib'\n"))))
@@ -2450,13 +2428,11 @@ development of Ruby gems.")
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-test-include-path
           (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((minitest (assoc-ref inputs "ruby-minitest-4"))
-                    (minitest-home (gem-home minitest
-                                             ,(package-version ruby))))
+             (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
                (substitute* "Rakefile"
                  (("Hoe\\.add_include_dirs .*")
                   (string-append "Hoe.add_include_dirs \""
-                                 minitest-home
+                                 minitest "/lib/ruby/vendor_ruby"
                                  "/gems/minitest-"
                                  ,(package-version ruby-minitest-4)
                                  "/lib" "\""))))
@@ -2856,15 +2832,7 @@ alternative to Marshal for Object serialization. ")
          ;; existing gemspec.
          (replace 'build
           (lambda _
-            (zero? (system* "gem" "build" "redcloth.gemspec"))))
-         ;; Make sure that the "redcloth" executable finds required Ruby
-         ;; libraries.
-         (add-after 'install 'wrap-bin-redcloth
-          (lambda* (#:key outputs #:allow-other-keys)
-            (wrap-program (string-append (assoc-ref outputs "out")
-                                         "/bin/redcloth")
-              `("GEM_HOME" ":" prefix (,(getenv "GEM_HOME"))))
-            #t)))))
+            (zero? (system* "gem" "build" "redcloth.gemspec")))))))
     (native-inputs
      `(("bundler" ,bundler)
        ("ruby-diff-lcs" ,ruby-diff-lcs)
@@ -3712,13 +3680,7 @@ It has built-in support for the legacy @code{cookies.txt} and
                   (system* "ruby"
                            "-Ilib"
                            "test/runner.rb"))
-                 #t)))
-         (add-after 'install 'wrap-bin-httpclient
-           (lambda* (#:key outputs #:allow-other-keys)
-             (wrap-program (string-append (assoc-ref outputs "out")
-                                          "/bin/httpclient")
-               `("GEM_HOME" ":" prefix (,(getenv "GEM_HOME"))))
-             #t)))))
+                 #t))))))
     (native-inputs
      `(("ruby-rack" ,ruby-rack)))
     (synopsis
@@ -3760,9 +3722,9 @@ requests either using arguments or with an interactive prompt.")
          (add-before 'validate-runpath 'replace-broken-symlink
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
-                    (file (string-append out
-                                         ,(gem-directory (package-version ruby))
-                                         "/ansi-" ,version "/lib/ansi.yml")))
+                    (file (string-append
+                           out "/lib/ruby/vendor_ruby/gems/ansi-"
+                           ,version "/lib/ansi.yml")))
                ;; XXX: This symlink is broken since ruby 2.4.
                ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
                (delete-file file)
@@ -3960,9 +3922,9 @@ requirement specifications systems like Cucumber.")
          (add-before 'validate-runpath 'replace-broken-symlink
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
-                    (file (string-append out
-                                         ,(gem-directory (package-version ruby))
-                                         "/ae-" ,version "/lib/ae.yml")))
+                    (file (string-append
+                           out "/lib/ruby/vendor_ruby/gems/ae-"
+                           ,version "/lib/ae.yml")))
                ;; XXX: This symlink is broken since ruby 2.4.
                ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
                (delete-file file)
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index 345c326300..4acd391a4a 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -92,7 +93,7 @@ the Linux kernel CIFS client.")
 (define-public iniparser
   (package
     (name "iniparser")
-    (version "4.0")
+    (version "4.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/ndevilla/iniparser/archive/v"
@@ -100,47 +101,43 @@ the Linux kernel CIFS client.")
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
-               "1flj7srvh2hp9ls96qz922bklyhw7f27mmn23b16839zpdjddfz0"))))
+               "1bpk8dj9d5cl64lg6jsk0qlzrpg848nymwxc3fx707fk1n0al3cn"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     `(#:make-flags
+       (list "CC=gcc")
+       #:phases
        (modify-phases %standard-phases
          (replace 'configure
            (lambda* (#:key outputs #:allow-other-keys)
              (substitute* '("Makefile" "test/Makefile")
                (("/usr/lib")
-                (string-append (assoc-ref outputs "out") "/lib"))
-               (("\\?= gcc") "= gcc"))))
+                (string-append (assoc-ref outputs "out") "/lib")))))
          (replace 'build
-           (lambda _
-             (and (zero? (system* "make" "libiniparser.so"))
-                         (symlink "libiniparser.so.0" "libiniparser.so"))))
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "make" "libiniparser.so.1"
+                    make-flags)))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out  (assoc-ref outputs "out"))
                     (lib  (string-append out "/lib"))
                     (inc  (string-append out "/include"))
-                    (doc  (string-append out "/share/doc"))
+                    (doc  (string-append out "/share/doc/" ,name))
                     (html (string-append doc "/html")))
-               (define (copy dir)
+               (define (install dir)
                  (lambda (file)
-                   (copy-file file
-                              (string-append dir "/"
-                                             (basename file)))))
-               (mkdir-p lib)
-               (for-each (copy lib)
-                         (find-files "." "^lib.*\\.(so\\.|a)"))
+                   (install-file file dir)))
+               (for-each (install lib)
+                         (find-files "." "^lib.*\\.so"))
                (with-directory-excursion lib
-                 (symlink "libiniparser.so.0" "libiniparser.so"))
-               (mkdir-p inc)
-               (for-each (copy inc)
+                 (symlink "libiniparser.so.1" "libiniparser.so"))
+               (for-each (install inc)
                          (find-files "src" "\\.h$"))
-               (mkdir-p html)
-               (for-each (copy html)
+               (for-each (install html)
                          (find-files "html" ".*"))
-               (for-each (copy doc)
+               (for-each (install doc)
                          '("AUTHORS" "INSTALL" "LICENSE" "README.md"))))))))
-    (home-page "http://ndevilla.free.fr/iniparser")
+    (home-page "https://github.com/ndevilla/iniparser")
     (synopsis "Standalone ini file parsing library")
     (description
      "iniparser is a free stand-alone `ini' file parsing library (Windows
@@ -236,31 +233,26 @@ Desktops into Active Directory environments using the winbind daemon.")
 (define-public talloc
   (package
     (name "talloc")
-    (version "2.1.10")
+    (version "2.1.11")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.samba.org/ftp/talloc/talloc-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "06gn45if56g81vbj3841fzdjsahrrczwqpfrydm2zv6nxd5yk1f9"))))
+                "1lzfxv2zjxap5snf9ydl1bqgjpz0kgkq7n644f8rkbx0arav77k3"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
          (replace 'configure
            (lambda* (#:key outputs #:allow-other-keys)
-             ;; test_magic_differs.sh has syntax error, and is not in the right
-             ;; place where wscript expected.
-             ;; Skip the test.
-             (substitute* "wscript"
-               (("magic_ret = .*") "magic_ret = 0\n"))
-             ;; talloc uses a custom configuration script that runs a
-             ;; python script called 'waf'.
+             ;; talloc uses a custom configuration script that runs a Python
+             ;; script called 'waf', and doesn't tolerate unknown options.
              (setenv "CONFIG_SHELL" (which "sh"))
              (let ((out (assoc-ref outputs "out")))
-               (zero? (system* "./configure"
-                               (string-append "--prefix=" out)))))))))
+               (invoke "./configure"
+                       (string-append "--prefix=" out))))))))
     (inputs
      `(("python" ,python-2)))
     (home-page "https://talloc.samba.org")
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index e4e0fdb779..c56e5d94c8 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -346,7 +347,7 @@ directory.")
 (define-public sdl2-image
   (package (inherit sdl-image)
     (name "sdl2-image")
-    (version "2.0.1")
+    (version "2.0.2")
     (source (origin
               (method url-fetch)
               (uri
@@ -354,14 +355,14 @@ directory.")
                               version ".tar.gz"))
               (sha256
                (base32
-                "0r3z1l7fdn76qkpy7snpkcjqz8dkv2zp6lsqpq25q4m5xsyaygis"))))
+                "1s3ciydixrgv34vlf45ak5syq5nlfaqf19wf162lbz4ixxd0gpvj"))))
     (propagated-inputs
      (propagated-inputs-with-sdl2 sdl-image))))
 
 (define-public sdl2-mixer
   (package (inherit sdl-mixer)
     (name "sdl2-mixer")
-    (version "2.0.1")
+    (version "2.0.2")
     (source (origin
               (method url-fetch)
               (uri
@@ -373,7 +374,7 @@ directory.")
                '(delete-file-recursively "external"))
               (sha256
                (base32
-                "0pv9jzjpcjlbiaybvwrb4avmv46qk7iqxlnqrd2dfj82c4mgc92s"))))
+                "1fw3kkqi5346ai5if4pxrcbhs5c4vv3a4smgz6fl6kyaxwkmwqaf"))))
     (propagated-inputs
      (propagated-inputs-with-sdl2 sdl-mixer))))
 
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 022287dbf5..e374c41b95 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017 ng0 <ng0@n0.is>
+;;; Copyright © 2017, 2018 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
@@ -146,32 +146,6 @@ and syntax highlighting.")
     (home-page "https://fishshell.com/")
     (license gpl2)))
 
-(define-public fish-guix
-  (package
-    (name "fish-guix")
-    (version "0.1.2.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://d.n0.is/releases/fish-guix/"
-                           name "-" version ".tar.xz"))
-       (sha256
-        (base32
-         "0k71hcn7nr523w74jw2i68x52s9hv6vmasnvnn7yr3xxvzn4kqgf"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:tests? #f ; No checks.
-       #:make-flags (list
-                     (string-append "PREFIX=" %output))
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)))) ; No configure script.
-    (home-page "https://n0.is/s/fish-guix/")
-    (synopsis "Fish completions for Guix")
-    (description
-     "Fish-guix provides completions for Guix for users of the fish shell.")
-    (license bsd-3)))
-
 (define-public rc
   (package
     (name "rc")
diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
index 53303d28d7..065aa81543 100644
--- a/gnu/packages/speech.scm
+++ b/gnu/packages/speech.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,18 +37,15 @@
 (define-public mitlm
   (package
     (name "mitlm")
-    (version "0.4.1")
-    ;; No official release tarballs, so for now we use the one from Debian
-    ;; that is maintained by one of the project developers.
-    ;;
-    ;; See: https://github.com/mitlm/mitlm/issues/54
+    (version "0.4.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://debian/pool/main/m/mitlm/mitlm_"
-                                  version ".orig.tar.gz"))
+              (uri (string-append "https://github.com/mitlm/mitlm/releases/"
+                                  "download/v" version "/"
+                                  name "-" version ".tar.xz"))
               (sha256
                (base32
-                "12m09xxx8jbir9cnzzaysvni5sfijpfj96z1x1520qqvmpc8lmn7"))))
+                "09fv4fcpmw9g1j0zml0k5kk1lgjw2spr8gn51llbkaaph6v8d62a"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm
index 1dca920a30..bee349f6f6 100644
--- a/gnu/packages/storage.scm
+++ b/gnu/packages/storage.scm
@@ -340,7 +340,7 @@
     (description
      "Ceph is a distributed storage system designed for reliability and
 performance.  It provides network-based block devices (RBD), a POSIX
-compliant filesystem (CephFS), and offers compatibility with various
+compliant file system (CephFS), and offers compatibility with various
 storage protocols (S3, NFS, and others) through the RADOS gateway.")
     ;; The Ceph libraries are LGPL2.1 and most of the utilities fall under
     ;; GPL2. The installed erasure code plugins are BSD-3 licensed and do
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index 4ed62ff966..3656f5855e 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -204,6 +204,6 @@ interface (inotify or fsevents).  It aggregates and combines events for a few
 seconds and then spawns one (or more) process(es) to synchronize the changes.
 By default this is rsync, which must be installed on all source and target
 machines.  Lsyncd is thus a light-weight live mirror solution that is
-comparatively easy to install not requiring new filesystems or block devices
-and does not hamper local filesystem performance.")
+comparatively easy to install not requiring new file systems or block devices
+and does not hamper local file system performance.")
     (license license:gpl2+)))
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 66c3fedfe2..3fb70d13da 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -160,7 +160,7 @@
        ("go-github-com-zillode-notify" ,go-github-com-zillode-notify)
        ;; For tests
        ("go-github-com-d4l3k-messagediff" ,go-github-com-d4l3k-messagediff)))
-    (synopsis "Decentralized continuous filesystem synchronization")
+    (synopsis "Decentralized continuous file system synchronization")
     (description "Syncthing is a peer-to-peer file synchronization tool that
 supports a wide variety of computing platforms.  It uses the Block Exchange
 Protocol.")
@@ -1873,7 +1873,7 @@ Authentication and Privacy Infrastructure).")
       (propagated-inputs
        `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
       (synopsis "Filesystem event notification library")
-      (description "This package provides @code{notify}, a filesystem event
+      (description "This package provides @code{notify}, a file system event
 notification library in Go.")
       (home-page "https://github.com/zillode/notify")
       (license expat))))
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 44b42ce9b6..0207ca36ab 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -181,7 +181,7 @@ bindings and many of the powerful features of GNU Emacs.")
     (version "0.8.18.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://download.savannah.gnu.org/releases/"
+              (uri (string-append "mirror://savannah/"
                                   "leafpad/leafpad-" version ".tar.gz"))
               (sha256
                (base32
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 09e65d9037..a72feb41ed 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -133,7 +133,7 @@ in intelligent transportation networks.")
        ("libtasn1" ,libtasn1)))
     (arguments
      `(#:configure-flags '("--without-trust-paths")))
-    (home-page "http://p11-glue.freedesktop.org/p11-kit.html")
+    (home-page "https://p11-glue.freedesktop.org/p11-kit.html")
     (synopsis "PKCS#11 library")
     (description
      "p11-kit provides a way to load and enumerate PKCS#11 modules.  It
@@ -388,7 +388,7 @@ required structures.")
    (description
     "OpenSSL is an implementation of SSL/TLS.")
    (license license:openssl)
-   (home-page "http://www.openssl.org/")))
+   (home-page "https://www.openssl.org/")))
 
 (define-public openssl-next
   (package
@@ -503,13 +503,13 @@ netcat implementation that supports TLS.")
   (package
     (name "python-acme")
     ;; Remember to update the hash of certbot when updating python-acme.
-    (version "0.20.0")
+    (version "0.21.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "acme" version))
               (sha256
                (base32
-                "1md3llp6640dviv9bzyy7qzn3szxil38645cjqcg7hlcdknil4j5"))))
+                "0kalcz8xc0z8azh3v3a8h27clwy4wh5lx6w8zac1rchbghkawknn"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -534,14 +534,15 @@ netcat implementation that supports TLS.")
        ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
        ("texinfo" ,texinfo)))
     (propagated-inputs
-     `(("python-six" ,python-six)
+     `(("python-josepy" ,python-josepy)
+       ("python-six" ,python-six)
        ("python-requests" ,python-requests)
        ("python-pytz" ,python-pytz)
        ("python-pyrfc3339" ,python-pyrfc3339)
        ("python-pyasn1" ,python-pyasn1)
        ("python-cryptography" ,python-cryptography)
        ("python-pyopenssl" ,python-pyopenssl)))
-    (home-page "https://github.com/letsencrypt/letsencrypt")
+    (home-page "https://github.com/certbot/certbot")
     (synopsis "ACME protocol implementation in Python")
     (description "ACME protocol implementation in Python")
     (license license:asl2.0)))
@@ -557,7 +558,7 @@ netcat implementation that supports TLS.")
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "126y6jg1nyd8js2jchl4dbmpg507hawaxnyw7510qh7vcidm1gya"))))
+                "0msqm3ils193m56h4c9866rg8ib50g0wag0i30sffbs6sd335jh7"))))
     (build-system python-build-system)
     (arguments
      `(,@(substitute-keyword-arguments (package-arguments python-acme)
diff --git a/gnu/packages/toys.scm b/gnu/packages/toys.scm
new file mode 100644
index 0000000000..05e1dab983
--- /dev/null
+++ b/gnu/packages/toys.scm
@@ -0,0 +1,65 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;;
+;;; 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 toys)
+  #:use-module (gnu packages ncurses)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages))
+
+(define-public sl
+  (package
+    (name "sl")
+    (version "5.02")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/mtoyoda/" name
+                           "/archive/" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0fjnnnxxq7zh9bm3yzbj84fgap0rhblxi2m10br83747gxsrcn8y"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("ncurses" ,ncurses)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ; no configure script
+         (delete 'check)                ; no tests
+         (replace 'install              ; no ‘make install’ target
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (man (string-append out "/share/man"))
+                    (man1 (string-append man "/man1"))
+                    (man1-ja (string-append man "/ja/man1")))
+               (install-file "sl" bin)
+               (install-file "sl.1" man1)
+               (mkdir-p man1-ja)
+               (copy-file "sl.1.ja" (string-append man1-ja "/sl.1"))
+               #t))))))
+    (home-page "http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/index_e.html")
+    (synopsis "Joke command to correct typing \"sl\" by mistake")
+    (description
+     "@dfn{SL} (for Steam Locomotive) displays one of several animated trains
+on the text terminal.  It serves no useful purpose but to discourage mistakenly
+typing @command{sl} instead of @command{ls}.")
+    (license (license:non-copyleft "file://LICENSE"
+                                   "See LICENSE in the distribution."))))
diff --git a/gnu/packages/valgrind.scm b/gnu/packages/valgrind.scm
index d23cd7325b..6c06b24c1c 100644
--- a/gnu/packages/valgrind.scm
+++ b/gnu/packages/valgrind.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,14 +32,14 @@
 (define-public valgrind
   (package
     (name "valgrind")
-    (version "3.12.0")
+    (version "3.13.0")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "http://valgrind.org/downloads/valgrind-"
+              (method url-fetch)
+             (uri (string-append "ftp://sourceware.org/pub/valgrind/valgrind-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "18bnrw9b1d55wi1wnl68n25achsp9w48n51n1xw4fwjjnaal7jk7"))
+               "0fqc3684grrbxwsic1rc5ryxzxmigzjx9p5vf3lxa37h0gpq0rnp"))
              (patches (search-patches "valgrind-enable-arm.patch"
                                       "valgrind-glibc-compat.patch"))))
     (build-system gnu-build-system)
@@ -64,9 +65,11 @@
                (mkdir-p dest)
                (rename-file orig dest)
                #t))))))
-    (inputs `(;; GDB is needed to provide a sane default for `--db-command'.
-              ("gdb" ,gdb)))
-    (native-inputs `(("perl" ,perl)))
+    (inputs
+     ;; GDB is needed to provide a sane default for `--db-command'.
+     `(("gdb" ,gdb)))
+    (native-inputs
+     `(("perl" ,perl)))
     (home-page "http://www.valgrind.org/")
     (synopsis "Debugging and profiling tool suite")
     (description
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index aadcfb7fbc..d35ec558a9 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -138,14 +138,14 @@ as well as the classic centralized workflow.")
    (name "git")
    ;; XXX When updating Git, check if the special 'git:src' input to cgit needs
    ;; to be updated as well.
-   (version "2.15.1")
+   (version "2.16.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://kernel.org/software/scm/git/git-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0p04linqdywdf7m1hqa904fzqvgzplsxlzdqrn96j1j5gpyr174r"))))
+              "1y1hdr8ydff5q7y762cwfdgaxam4mxvir6nrw3g51mmkcr77c40d"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("native-perl" ,perl)
@@ -158,7 +158,7 @@ as well as the classic centralized workflow.")
                 version ".tar.xz"))
           (sha256
            (base32
-            "0mi609plzqqwx271hr9m5j4syggqx255bbzml6ca9j5fadywysvc"))))))
+            "0k5bviwff2q3vri8v6n2a71sxm83gcskzy6wr2z01pb7xfk28hl9"))))))
    (inputs
     `(("curl" ,curl)
       ("expat" ,expat)
@@ -582,10 +582,10 @@ collaboration using typical untrusted file hosts or services.")
        ("git:src"
         ,(origin
            (method url-fetch)
-           (uri "mirror://kernel.org/software/scm/git/git-2.10.4.tar.xz")
+           (uri "mirror://kernel.org/software/scm/git/git-2.10.5.tar.xz")
            (sha256
             (base32
-             "1pni4mgih5w42813dxljl61s7xmcpdnar34d9m4548hzpljjyd4l"))))
+             "1r2aa19gnrvm2y4fqcvpw1g9l72n48axqmpgv18s6d0y2p72vhzj"))))
        ("openssl" ,openssl)
        ("zlib" ,zlib)))
     (home-page "https://git.zx2c4.com/cgit/")
@@ -1183,7 +1183,7 @@ standards-compliant ChangeLog entries based on the changes that it detects.")
                (base32
                 "1vjmda2zfjxg0qkaj8hfqa8g6bfwnn1ja8696rxrjgqq4w69wd95"))))
     (build-system gnu-build-system)
-    (home-page "http://invisible-island.net/diffstat/")
+    (home-page "https://invisible-island.net/diffstat/")
     (synopsis "Make histograms from the output of @command{diff}")
     (description
      "Diffstat reads the output of @command{diff} and displays a histogram of
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 61fe62ffd4..79eb0b5f54 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1145,12 +1145,12 @@ access to mpv's powerful playback capabilities.")
     (synopsis "VP8/VP9 video codec")
     (description "libvpx is a codec for the VP8/VP9 video compression format.")
     (license license:bsd-3)
-    (home-page "http://www.webmproject.org/")))
+    (home-page "https://www.webmproject.org/")))
 
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2018.01.07")
+    (version "2018.01.18")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://yt-dl.org/downloads/"
@@ -1158,7 +1158,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1dp1yk93mngih50p1zjbh8bi5pqh10wicjcmmrdp73cpcp2i2398"))))
+                "16mdy83s8h1hw1qdbcv6anrgg9zxfw1da22fxjx53pr2x0ywwbsf"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
@@ -2677,3 +2677,47 @@ It counts more than 100 plugins.")
                    ;; src/filter/ndvi/ndvi.cpp
                    ;; src/filter/facedetect/facedetect.cpp
                    license:lgpl2.1+))))
+
+(define-public motion
+  (package
+    (name "motion")
+    (version "4.1.1")
+    (home-page "https://motion-project.github.io/")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/Motion-Project/motion/archive/"
+                    "release-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1qm4i8zrqafl60sv2frhixvkd0wh0r5jfcrj5i6gha7yplsvjx10"))
+              (file-name (string-append name "-" version ".tar.gz"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,(autoconf-wrapper))
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libjpeg" ,libjpeg)
+       ("ffmpeg" ,ffmpeg)
+       ("sqlite" ,sqlite)))
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'bootstrap
+                    (lambda _
+                      (patch-shebang "version.sh")
+                      (invoke "autoreconf" "-vfi"))))
+       #:configure-flags '("--sysconfdir=/etc")
+       #:make-flags (list (string-append "sysconfdir="
+                                         (assoc-ref %outputs "out")
+                                         "/etc"))
+
+       #:tests? #f))                              ;no 'check' target
+    (synopsis "Detect motion from video signals")
+    (description
+     "Motion is a program that monitors the video signal from one or more
+cameras and is able to detect if a significant part of the picture has
+changed.  Or in other words, it can detect motion.")
+
+    ;; Some files say "version 2" and others "version 2 or later".
+    (license license:gpl2)))
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 85ccf9c9d1..32f1e1ca54 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -60,7 +61,7 @@
 (define-public vim
   (package
     (name "vim")
-    (version "8.0.1300")
+    (version "8.0.1428")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/vim/vim/archive/v"
@@ -68,7 +69,7 @@
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
-               "19w1rxmswsr19wng74f1iwwgd5wpx1hhvprjy1i0k41nply5h3h8"))))
+               "08hzx843cxr5b2llc3332wxpgh3gjrs7jgd6s3sdrxnvg0s0y7s8"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -82,6 +83,13 @@
              (substitute* '("src/testdir/Makefile"
                             "src/testdir/test_normal.vim")
                (("/bin/sh") (which "sh")))
+             #t))
+         (add-before 'check 'patch-failing-test
+           (lambda _
+             ;; XXX A single test fails with “Can't create file /dev/stdout” (at
+             ;; Test_writefile_sync_dev_stdout line 5) while /dev/stdout exists.
+             (substitute* "src/testdir/test_writefile.vim"
+               (("/dev/stdout") "a-regular-file"))
              #t)))))
     (inputs
      `(("gawk" ,gawk)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index fa72c72c15..a5ce3f6fa8 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2017 Andy Patterson <ajpatter@uwaterloo.ca>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -345,14 +345,14 @@ manage system or application containers.")
 (define-public libvirt
   (package
     (name "libvirt")
-    (version "3.10.0")
+    (version "4.0.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://libvirt.org/sources/libvirt-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "03kb37iv3dvvdlslznlc0njvjpmq082lczmsslz5p4fcwb50kwfz"))))
+                "1j6zzajh4j3zzsaqn5f5mrchm0590xcf6rzkfajvqw3bd4dcms79"))))
     (build-system gnu-build-system)
     (arguments
      `(;; FAIL: virshtest
@@ -362,7 +362,7 @@ manage system or application containers.")
        ;; FAIL: networkxml2firewalltest
        ;; FAIL: nwfilterebiptablestest
        ;; FAIL: nwfilterxml2firewalltest
-       ;; Times while running commandest.
+       ;; Time-out while running commandtest.
        #:tests? #f
        #:configure-flags
        (list "--with-polkit"
@@ -382,9 +382,9 @@ manage system or application containers.")
            ;; at runtime, we must prevent writing to them at installation
            ;; time.
            (lambda _
-             (zero? (system* "make" "install"
-                             "sysconfdir=/tmp/etc"
-                             "localstatedir=/tmp/var"))))
+             (invoke "make" "install"
+                            "sysconfdir=/tmp/etc"
+                            "localstatedir=/tmp/var")))
          (add-after 'install 'wrap-libvirtd
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 7acc018632..2b003f5b3b 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -54,15 +54,14 @@
 (define-public webkitgtk
   (package
     (name "webkitgtk")
-    (version "2.18.4")
+    (version "2.18.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.webkitgtk.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1f1j0r996l20cgkvbwpizn7d4yp58cy334b1pvn4kfb5c2dbpdl7"))
-              (patches (search-patches "webkitgtk-mitigate-spectre.patch"))))
+                "1f1rsp14gkb2r1mrrxn2cnbs45vg38da27q4cf02zlxmgv680v8c"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no tests
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index 655367ac33..754389979a 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -61,14 +61,15 @@
 (define-public wine
   (package
     (name "wine")
-    (version "2.0.4")
+    (version "3.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://dl.winehq.org/wine/source/2.0"
+              (uri (string-append "https://dl.winehq.org/wine/source/"
+                                  (version-major+minor version)
                                   "/wine-" version ".tar.xz"))
               (sha256
                (base32
-                "0nlq6apyq7hq36l3g6gw76lhi8ijz11v3v8m4vxy8d6x1qsppq5m"))))
+                "1v7vq9iinkscbq6wg85fb0d2137660fg2nk5iabxkl2wr850asil"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("gettext" ,gettext-minimal)
@@ -210,20 +211,6 @@ integrate Windows applications into your desktop.")
     (synopsis "Implementation of the Windows API (WoW64 version)")
     (supported-systems '("x86_64-linux" "aarch64-linux"))))
 
-;; TODO: This is wine development version, provided for historical reasons.
-;; We can remove it as soon as a new stable release is out.
-(define-public wine-next
-  (package (inherit wine)
-    (name "wine-next")
-    (version "2.11")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://dl.winehq.org/wine/source/2.x"
-                                  "/wine-" version ".tar.xz"))
-              (sha256
-               (base32
-                "0g6cwjyqwc660w33453aklh3hpc0b8rrb88dryn23ah6wannvagg"))))))
-
 (define-public wine-staging
   (package
     (inherit wine)
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index bbe6ab4545..f132999bcf 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -68,7 +69,7 @@
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)))
     (inputs `(("gtk+" ,gtk+-2)))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "GTK+ theme engine for Xfce")
     (description
      "Default GTK+ engine and themes for Xfce Desktop Environment.")
@@ -91,7 +92,7 @@
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)))
     (propagated-inputs `(("glib" ,glib))) ; required by libxfce4util-1.0.pc
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Basic utility library for Xfce")
     (description
      "A general-purpose utility library with core application support for the
@@ -135,7 +136,7 @@ Xfce Desktop Environment.")
        ("dbus-glib" ,dbus-glib)))
     (inputs
      `(("libxfce4util" ,libxfce4util)))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Configuration storage and query system for Xfce")
     (description
      "Settings daemon for Xfce, implemented as a D-Bus-based configuration
@@ -169,7 +170,7 @@ storage system.")
               ;; but will lead to a conflict with gtk+.
               ("gtk+-2" ,gtk+-2)
               ("startup-notification" ,startup-notification)))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Widgets library for Xfce")
     (description
      "Libxfce4ui is the replacement of the old libxfcegui4 library.  It is used
@@ -198,7 +199,7 @@ to share commonly used Xfce widgets among the Xfce applications.")
     (inputs
      `(("libxfce4ui" ,libxfce4ui)
        ("perl-uri" ,perl-uri)))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Extension library for Xfce")
     (description
      "An extension library to Xfce.  While Xfce comes with quite a few libraries
@@ -227,7 +228,7 @@ development.")
      `(("gtk+" ,gtk+-2)))
     (propagated-inputs
      `(("libxfce4ui" ,libxfce4ui))) ; required by garcon-gtk2-1.pc
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Implementation of the freedesktop.org menu specification")
     (description
      "Garcon is a freedesktop.org compliant menu implementation based on
@@ -263,7 +264,7 @@ merging features essential for loading menus modified with menu editors.")
        ("libgsf" ,libgsf)
        ("poppler" ,poppler)
        ("gstreamer" ,gstreamer)))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "D-Bus service for applications to request thumbnails")
     (description
      "Tumbler is a D-Bus service for applications to request thumbnails for
@@ -301,7 +302,7 @@ management D-Bus specification.")
      (list (search-path-specification
             (variable "X_XFCE4_LIB_DIRS")
             (files '("lib/xfce4")))))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Xfce desktop panel")
     (description
      "Desktop panel for Xfce, which contains program launchers, window buttons,
@@ -330,7 +331,7 @@ applications menu, workspace switcher and more.")
               ("libxfce4ui" ,libxfce4ui)
               ("xfce4-panel" ,xfce4-panel)))
     (home-page
-     "http://goodies.xfce.org/projects/panel-plugins/xfce4-battery-plugin")
+     "https://goodies.xfce.org/projects/panel-plugins/xfce4-battery-plugin")
     (synopsis "Battery monitor panel plugin for Xfce4")
     (description
      "A battery monitor panel plugin for Xfce4, compatible with APM and ACPI.")
@@ -360,7 +361,7 @@ applications menu, workspace switcher and more.")
        ("libxtst" ,libxtst)
        ("xfce4-panel" ,xfce4-panel)))
     (home-page
-     "http://goodies.xfce.org/projects/panel-plugins/xfce4-clipman-plugin")
+     "https://goodies.xfce.org/projects/panel-plugins/xfce4-clipman-plugin")
     (synopsis "Clipboard manager for Xfce")
     (description
      "Clipman is a clipboard manager for Xfce.  It keeps the clipboard contents
@@ -391,7 +392,7 @@ matching them against regular expressions.")
        ("libxfce4ui" ,libxfce4ui)
        ("pulseaudio" ,pulseaudio)
        ("xfce4-panel" ,xfce4-panel)))
-    (home-page "http://git.xfce.org/panel-plugins/xfce4-pulseaudio-plugin/")
+    (home-page "https://git.xfce.org/panel-plugins/xfce4-pulseaudio-plugin/")
     (synopsis "PulseAudio panel plugin for Xfce")
     (description
      "Xfce PulseAudio plugin is a plugin for the Xfce panel which provides a
@@ -424,7 +425,7 @@ keys for controlling the audio volume.")
        ("libxfce4ui" ,libxfce4ui)
        ("libxklavier" ,libxklavier)
        ("xfce4-panel" ,xfce4-panel)))
-    (home-page "http://git.xfce.org/panel-plugins/xfce4-xkb-plugin/")
+    (home-page "https://git.xfce.org/panel-plugins/xfce4-xkb-plugin/")
     (synopsis "XKB layout switching panel plug-in for Xfce")
     (description
      "Xfce XKB plugin makes it possible to set up and use multiple
@@ -458,7 +459,7 @@ per window.")
      `(("garcon" ,garcon)
        ("gtk+" ,gtk+-2)
        ("libxfce4ui" ,libxfce4ui)))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Xfce application finder")
     (description
      "Application finder for Xfce, it will show the applications installed on
@@ -506,7 +507,7 @@ your system in categories, so you can quickly find and launch them.")
        ("libsm" ,libsm)
        ("libwnck" ,libwnck-2)
        ("libxfce4ui" ,libxfce4ui)))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Xfce session manager")
     (description
      "Session manager for Xfce, it will restore your session on startup and
@@ -541,7 +542,7 @@ allows you to shutdown the computer from Xfce.")
        ("libxfce4ui" ,libxfce4ui)
        ("upower" ,upower)
        ("xf86-input-libinput" ,xf86-input-libinput)))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Xfce settings manager")
     (description
      "Settings manager for Xfce, it can control various aspects of the desktop
@@ -572,7 +573,7 @@ like appearance, display, keyboard and mouse settings.")
        ("pcre" ,pcre)
        ("xfce4-panel" ,xfce4-panel)
        ("startup-notification" ,startup-notification)))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Xfce file manager")
     (description
      "A modern file manager for graphical desktop, aiming to be easy-to-use and
@@ -599,7 +600,7 @@ fast.")
        ("libgudev" ,libgudev)
        ("libnotify" ,libnotify)
        ("libxfce4ui" ,libxfce4ui)))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Removable media manager for Thunar")
     (description
      "Thunar-volman is an extension for the Thunar File Manager, which enables
@@ -632,7 +633,7 @@ and import the new pictures from your camera.")
        ("libxdamage" ,libxdamage)
        ("libxfce4ui" ,libxfce4ui)
        ("libxrandr" ,libxrandr)))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Xfce window manager")
     (description
      "Window manager for Xfce, it handles the placement of windows
@@ -662,7 +663,7 @@ on the screen.")
        ("libwnck" ,libwnck-2)
        ("libxfce4ui" ,libxfce4ui)
        ("thunar" ,thunar)))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Xfce desktop manager")
     (description
      "Desktop manager for Xfce, it sets the background color or image with
@@ -673,7 +674,7 @@ devices and folders.")
 (define-public xfce4-terminal
   (package
     (name "xfce4-terminal")
-    (version "0.8.3")
+    (version "0.8.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/src/apps/" name "/"
@@ -681,7 +682,7 @@ devices and folders.")
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1w8jvi9nw00aki825mm8f7wpkhxxicw4f6j9v4ka71z8p2ry9rj0"))))
+                "1mw1v20a9r8figl5m93jfp16x64bfj8yjmy5s5kbdw501425camw"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -689,7 +690,7 @@ devices and folders.")
     (inputs
      `(("libxfce4ui" ,libxfce4ui)
        ("vte" ,vte)))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Xfce terminal emulator")
     (description
      "A lightweight and easy to use terminal emulator for Xfce.  Features
@@ -744,7 +745,7 @@ on your desktop.")
     (native-search-paths
      ;; For finding panel plugins.
      (package-native-search-paths xfce4-panel))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Desktop environment (meta-package)")
     (description
      "Xfce is a lightweight desktop environment.  It aims to be fast and low on
@@ -774,7 +775,7 @@ system resources, while still being visually appealing and user friendly.")
        ("upower" ,upower)
        ("libnotify" ,libnotify)
        ("libxfce4ui" ,libxfce4ui)))
-    (home-page "http://www.xfce.org/")
+    (home-page "https://www.xfce.org/")
     (synopsis "Xfce Power Manager")
     (description
      "This is a power manager for the Xfce desktop.  It manages the power
@@ -809,7 +810,7 @@ inhibit interface which allows applications to prevent automatic sleep.")
        ("libxfce4ui" ,libxfce4ui)
        ("librsvg" ,librsvg)
        ("tumbler" ,tumbler)))
-    (home-page "http://docs.xfce.org/apps/ristretto/start")
+    (home-page "https://docs.xfce.org/apps/ristretto/start")
     (synopsis "Fast and lightweight picture-viewer")
     (description
      "The Ristretto Image Viewer is an application that can be used to view,
@@ -837,7 +838,7 @@ the desktop wallpaper.")
     (inputs
      `(("libwnck" ,libwnck-2)
        ("gtk+" ,gtk+-2)))
-    (home-page "http://goodies.xfce.org/projects/applications/xfce4-taskmanager")
+    (home-page "https://goodies.xfce.org/projects/applications/xfce4-taskmanager")
     (synopsis "Easy to use task manager")
     (description
      "This is a task manager for the Xfce desktop.  It displays the CPU and
@@ -866,7 +867,7 @@ memory usage graphically, and it can display processes as a tree.")
        ("libnotify" ,libnotify)
        ("popt" ,popt)
        ("xfce4-panel" ,xfce4-panel)))
-    (home-page "http://www.xfce.org/projects/")
+    (home-page "https://www.xfce.org/projects/")
     (synopsis "Simple calendar application with reminders")
     (description
      "This is a simple calendar application for the Xfce desktop.  Orage has
diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index a0cdd0de87..3a9b989486 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -74,7 +75,7 @@ multiple data streams, ogg provides packet framing, error detection, and
 periodic timestamps for seeking.")
    (license (license:non-copyleft "file://COPYING"
                                "See COPYING in the distribution."))
-   (home-page "http://xiph.org/ogg/")))
+   (home-page "https://xiph.org/ogg/")))
 
 (define libvorbis
   (package
@@ -102,7 +103,7 @@ polyphonic) audio and music at fixed and variable bitrates from 16 to
 128 kbps/channel.")
    (license (license:non-copyleft "file://COPYING"
                                "See COPYING in the distribution."))
-   (home-page "http://xiph.org/vorbis/")))
+   (home-page "https://xiph.org/vorbis/")))
 
 (define libtheora
   (package
@@ -126,7 +127,7 @@ polyphonic) audio and music at fixed and variable bitrates from 16 to
 a fully open, non-proprietary, patent-and-royalty-free, general-purpose
 compressed video format.")
     (license license:bsd-3)
-    (home-page "http://xiph.org/theora/")))
+    (home-page "https://xiph.org/theora/")))
 
 (define speex
   (package
@@ -230,7 +231,7 @@ It currently supports:
 @end enumerate
 ")
     (license license:gpl2+)
-    (home-page "http://www.xiph.org/ao/")))
+    (home-page "https://www.xiph.org/ao/")))
 
 (define flac
   (package
@@ -254,7 +255,7 @@ It currently supports:
 meaning that audio is compressed in FLAC without any loss in quality.")
    (license (license:non-copyleft "file://COPYING"
                                "See COPYING in the distribution.")) ; and LGPL and GPL
-   (home-page "http://xiph.org/flac/")))
+   (home-page "https://xiph.org/flac/")))
 
 (define libkate
   (package
@@ -328,7 +329,7 @@ oggdec,  a simple, portable command line decoder (to wav and raw);
 ogginfo, to obtain information (tags, bitrate, length, etc.) about
          an ogg vorbis file.")
    (license license:gpl2)
-   (home-page "http://xiph.org/vorbis/")))
+   (home-page "https://xiph.org/vorbis/")))
 
 (define opus
   (package
@@ -388,7 +389,7 @@ decoding .opus files.")
 (define opusfile
   (package
     (name "opusfile")
-    (version "0.8")
+    (version "0.9")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -396,7 +397,7 @@ decoding .opus files.")
                     ".tar.gz"))
               (sha256
                (base32
-                "192mp2jgn5s9815h31ybzsfipmbppmdhwx1dymrk26xarz9iw8rc"))))
+                "0yg9whb9y6ja3d5dmscg5a29hxj7qj0asw8smisjf4hbwh0bapzp"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("opus" ,opus)))
@@ -411,7 +412,7 @@ decoding .opus files.")
 streams in the Ogg container (.opus files) including over http(s) on posix and
 windows systems.")
     (license license:bsd-3)
-    (home-page "http://www.opus-codec.org")))
+    (home-page "https://www.opus-codec.org")))
 
 (define-public icecast
   (package
@@ -442,7 +443,7 @@ windows systems.")
 Ogg (Vorbis and Theora), Opus, WebM and MP3 audio streams.  It can be used to
 create an Internet radio station or a privately running jukebox and many
 things in between.")
-    (home-page "http://icecast.org/")
+    (home-page "https://icecast.org/")
     (license license:gpl2)))
 
 (define-public libshout
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 40aafcffb9..200de67f61 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
-;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
@@ -79,17 +79,17 @@ things the parser might find in the XML document (like start tags).")
 (define-public libebml
   (package
     (name "libebml")
-    (version "1.3.4")
+    (version "1.3.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://dl.matroska.org/downloads/"
-                           name "/" name "-" version ".tar.bz2"))
+                           name "/" name "-" version ".tar.xz"))
        (sha256
         (base32
-         "11zka6z9ncywyjr1gfm5cnii33ln7y3w6s86kiacchip2g7kw3f5"))))
+         "005a0ipqnfbsq47zrc61zszi439jw32q5xd6dc1jyb3lc0zl266q"))))
     (build-system gnu-build-system)
-    (home-page "https://www.matroska.org")
+    (home-page "https://matroska-org.github.io/libebml/")
     (synopsis "C++ libary to parse EBML files")
     (description "libebml is a C++ library to read and write EBML (Extensible
 Binary Meta Language) files.  EBML was designed to be a simplified binary
@@ -128,7 +128,7 @@ project (but it is usable outside of the Gnome platform).")
     (license license:x11)))
 
 (define-public python-libxml2
-  (package (inherit libxml2)
+  (package/inherit libxml2
     (name "python-libxml2")
     (build-system python-build-system)
     (arguments
@@ -937,18 +937,28 @@ Libxml2).")
 (define-public minixml
   (package
     (name "minixml")
-    (version "2.10")
+    (version "2.11")
     (source (origin
-              (method url-fetch)
+              (method url-fetch/tarbomb)
               (uri (string-append "https://github.com/michaelrsweet/mxml/"
-                                  "releases/download/release-" version
+                                  "releases/download/v" version
                                   "/mxml-" version ".tar.gz"))
               (sha256
                (base32
-                "14bqfq4lymhb31snz6wsvzhlavy0573v1nki1lbngiyxcj5zazr6"))))
+                "13xsw8vvkxd10vca42ccdyl9rs64lcvhbfz57aknpl3xcfn8mxma"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f))  ;no "check" target
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-permissions
+           ;; FIXME: url-fetch/tarbomb resets all permissions to 555/444.
+           (lambda _
+             (for-each
+              (lambda (file)
+                (chmod file #o644))
+              (find-files "doc" "\\."))
+             #t)))
+       #:tests? #f))                    ; tests are run during build
     (home-page "https://michaelrsweet.github.io/mxml")
     (synopsis "Small XML parsing library")
     (description
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 25eefe6f21..7e80e411dd 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -5781,7 +5781,7 @@ to answer a question.  Xmessage can also exit after a specified time.")
        ("libXt" ,libxt)
        ("xproto" ,xproto)
        ("libXaw" ,libxaw)))
-    (home-page "http://invisible-island.net/xterm/")
+    (home-page "https://invisible-island.net/xterm/")
     (synopsis "Terminal emulator for the X Window System")
     (description
      "The xterm program is a terminal emulator for the X Window System.  It
@@ -5923,7 +5923,7 @@ basic eye-candy effects.")
 (define-public xpra
   (package
     (name "xpra")
-    (version "2.2.1")
+    (version "2.2.3")
     (source
      (origin
        (method url-fetch)
@@ -5931,7 +5931,7 @@ basic eye-candy effects.")
                            version ".tar.xz"))
        (sha256
         (base32
-         "052w92w21ywgip5p90nifn8vxqzg09by4a0ai22znhqm5mqh7qc1"))))
+         "03cq16cfffm5f62g1xc3makr03b5wjjfy6zlwag70pc3g0k6n6jh"))))
     (build-system python-build-system)
     (inputs `(("ffmpeg" ,ffmpeg)
               ("flac" ,flac)
diff --git a/gnu/services/messaging.scm b/gnu/services/messaging.scm
index a9820ed21f..427e2121f6 100644
--- a/gnu/services/messaging.scm
+++ b/gnu/services/messaging.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,6 +26,7 @@
   #:use-module (gnu services configuration)
   #:use-module (gnu system shadow)
   #:use-module (guix gexp)
+  #:use-module (guix modules)
   #:use-module (guix records)
   #:use-module (guix packages)
   #:use-module (srfi srfi-1)
@@ -42,7 +44,12 @@
             ssl-configuration
 
             %default-modules-enabled
-            prosody-configuration-pidfile))
+            prosody-configuration-pidfile
+
+            bitlbee-configuration
+            bitlbee-configuration?
+            bitlbee-service
+            bitlbee-service-type))
 
 ;;; Commentary:
 ;;;
@@ -751,3 +758,111 @@ string, you could instantiate a prosody service like this:
          (opaque-prosody-configuration
           (prosody.cfg.lua \"\")))
 @end example"))
+
+
+;;;
+;;; BitlBee.
+;;;
+
+(define-record-type* <bitlbee-configuration>
+  bitlbee-configuration make-bitlbee-configuration
+  bitlbee-configuration?
+  (bitlbee bitlbee-configuration-bitlbee
+           (default bitlbee))
+  (interface bitlbee-configuration-interface
+             (default "127.0.0.1"))
+  (port bitlbee-configuration-port
+        (default 6667))
+  (extra-settings bitlbee-configuration-extra-settings
+                  (default "")))
+
+(define bitlbee-shepherd-service
+  (match-lambda
+    (($ <bitlbee-configuration> bitlbee interface port extra-settings)
+     (let ((conf (plain-file "bitlbee.conf"
+                             (string-append "
+  [settings]
+  User = bitlbee
+  ConfigDir = /var/lib/bitlbee
+  DaemonInterface = " interface "
+  DaemonPort = " (number->string port) "
+" extra-settings))))
+
+       (with-imported-modules (source-module-closure
+                               '((gnu build shepherd)
+                                 (gnu system file-systems)))
+         (list (shepherd-service
+                (provision '(bitlbee))
+
+                ;; Note: If networking is not up, then /etc/resolv.conf
+                ;; doesn't get mapped in the container, hence the dependency
+                ;; on 'networking'.
+                (requirement '(user-processes networking))
+
+                (modules '((gnu build shepherd)
+                           (gnu system file-systems)))
+                (start #~(make-forkexec-constructor/container
+                          (list #$(file-append bitlbee "/sbin/bitlbee")
+                                "-n" "-F" "-u" "bitlbee" "-c" #$conf)
+
+                          #:pid-file "/var/run/bitlbee.pid"
+                          #:mappings (list (file-system-mapping
+                                            (source "/var/lib/bitlbee")
+                                            (target source)
+                                            (writable? #t)))))
+                (stop  #~(make-kill-destructor)))))))))
+
+(define %bitlbee-accounts
+  ;; User group and account to run BitlBee.
+  (list (user-group (name "bitlbee") (system? #t))
+        (user-account
+         (name "bitlbee")
+         (group "bitlbee")
+         (system? #t)
+         (comment "BitlBee daemon user")
+         (home-directory "/var/empty")
+         (shell (file-append shadow "/sbin/nologin")))))
+
+(define %bitlbee-activation
+  ;; Activation gexp for BitlBee.
+  #~(begin
+      (use-modules (guix build utils))
+
+      ;; This directory is used to store OTR data.
+      (mkdir-p "/var/lib/bitlbee")
+      (let ((user (getpwnam "bitlbee")))
+        (chown "/var/lib/bitlbee"
+               (passwd:uid user) (passwd:gid user)))))
+
+(define bitlbee-service-type
+  (service-type (name 'bitlbee)
+                (extensions
+                 (list (service-extension shepherd-root-service-type
+                                          bitlbee-shepherd-service)
+                       (service-extension account-service-type
+                                          (const %bitlbee-accounts))
+                       (service-extension activation-service-type
+                                          (const %bitlbee-activation))))
+                (default-value (bitlbee-configuration))
+                (description
+                 "Run @url{http://bitlbee.org,BitlBee}, a daemon that acts as
+a gateway between IRC and chat networks.")))
+
+(define* (bitlbee-service #:key (bitlbee bitlbee) ;deprecated
+                          (interface "127.0.0.1") (port 6667)
+                          (extra-settings ""))
+  "Return a service that runs @url{http://bitlbee.org,BitlBee}, a daemon that
+acts as a gateway between IRC and chat networks.
+
+The daemon will listen to the interface corresponding to the IP address
+specified in @var{interface}, on @var{port}.  @code{127.0.0.1} means that only
+local clients can connect, whereas @code{0.0.0.0} means that connections can
+come from any networking interface.
+
+In addition, @var{extra-settings} specifies a string to append to the
+configuration file."
+  (service bitlbee-service-type
+           (bitlbee-configuration
+            (bitlbee bitlbee)
+            (interface interface) (port port)
+            (extra-settings extra-settings))))
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index c3ba0787c0..5ba3c5eed6 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -74,11 +74,6 @@
             tor-service
             tor-service-type
 
-            bitlbee-configuration
-            bitlbee-configuration?
-            bitlbee-service
-            bitlbee-service-type
-
             wicd-service-type
             wicd-service
 
@@ -738,114 +733,6 @@ project's documentation} for more information."
 
 
 ;;;
-;;; BitlBee.
-;;;
-
-(define-record-type* <bitlbee-configuration>
-  bitlbee-configuration make-bitlbee-configuration
-  bitlbee-configuration?
-  (bitlbee bitlbee-configuration-bitlbee
-           (default bitlbee))
-  (interface bitlbee-configuration-interface
-             (default "127.0.0.1"))
-  (port bitlbee-configuration-port
-        (default 6667))
-  (extra-settings bitlbee-configuration-extra-settings
-                  (default "")))
-
-(define bitlbee-shepherd-service
-  (match-lambda
-    (($ <bitlbee-configuration> bitlbee interface port extra-settings)
-     (let ((conf (plain-file "bitlbee.conf"
-                             (string-append "
-  [settings]
-  User = bitlbee
-  ConfigDir = /var/lib/bitlbee
-  DaemonInterface = " interface "
-  DaemonPort = " (number->string port) "
-" extra-settings))))
-
-       (with-imported-modules (source-module-closure
-                               '((gnu build shepherd)
-                                 (gnu system file-systems)))
-         (list (shepherd-service
-                (provision '(bitlbee))
-
-                ;; Note: If networking is not up, then /etc/resolv.conf
-                ;; doesn't get mapped in the container, hence the dependency
-                ;; on 'networking'.
-                (requirement '(user-processes networking))
-
-                (modules '((gnu build shepherd)
-                           (gnu system file-systems)))
-                (start #~(make-forkexec-constructor/container
-                          (list #$(file-append bitlbee "/sbin/bitlbee")
-                                "-n" "-F" "-u" "bitlbee" "-c" #$conf)
-
-                          #:pid-file "/var/run/bitlbee.pid"
-                          #:mappings (list (file-system-mapping
-                                            (source "/var/lib/bitlbee")
-                                            (target source)
-                                            (writable? #t)))))
-                (stop  #~(make-kill-destructor)))))))))
-
-(define %bitlbee-accounts
-  ;; User group and account to run BitlBee.
-  (list (user-group (name "bitlbee") (system? #t))
-        (user-account
-         (name "bitlbee")
-         (group "bitlbee")
-         (system? #t)
-         (comment "BitlBee daemon user")
-         (home-directory "/var/empty")
-         (shell (file-append shadow "/sbin/nologin")))))
-
-(define %bitlbee-activation
-  ;; Activation gexp for BitlBee.
-  #~(begin
-      (use-modules (guix build utils))
-
-      ;; This directory is used to store OTR data.
-      (mkdir-p "/var/lib/bitlbee")
-      (let ((user (getpwnam "bitlbee")))
-        (chown "/var/lib/bitlbee"
-               (passwd:uid user) (passwd:gid user)))))
-
-(define bitlbee-service-type
-  (service-type (name 'bitlbee)
-                (extensions
-                 (list (service-extension shepherd-root-service-type
-                                          bitlbee-shepherd-service)
-                       (service-extension account-service-type
-                                          (const %bitlbee-accounts))
-                       (service-extension activation-service-type
-                                          (const %bitlbee-activation))))
-                (default-value (bitlbee-configuration))
-                (description
-                 "Run @url{http://bitlbee.org,BitlBee}, a daemon that acts as
-a gateway between IRC and chat networks.")))
-
-(define* (bitlbee-service #:key (bitlbee bitlbee)
-                          (interface "127.0.0.1") (port 6667)
-                          (extra-settings ""))
-  "Return a service that runs @url{http://bitlbee.org,BitlBee}, a daemon that
-acts as a gateway between IRC and chat networks.
-
-The daemon will listen to the interface corresponding to the IP address
-specified in @var{interface}, on @var{port}.  @code{127.0.0.1} means that only
-local clients can connect, whereas @code{0.0.0.0} means that connections can
-come from any networking interface.
-
-In addition, @var{extra-settings} specifies a string to append to the
-configuration file."
-  (service bitlbee-service-type
-           (bitlbee-configuration
-            (bitlbee bitlbee)
-            (interface interface) (port port)
-            (extra-settings extra-settings))))
-
-
-;;;
 ;;; Wicd.
 ;;;
 
diff --git a/gnu/services/nfs.scm b/gnu/services/nfs.scm
index 8f58920e4a..6ed4c0eabf 100644
--- a/gnu/services/nfs.scm
+++ b/gnu/services/nfs.scm
@@ -88,7 +88,7 @@
      (define pipefs-directory (pipefs-configuration-mount-point config))
 
      (shepherd-service
-      (documentation "Mount the pipefs pseudo filesystem.")
+      (documentation "Mount the pipefs pseudo file system.")
       (provision '(rpc-pipefs))
 
       (start #~(lambda ()
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index 2371ddb6d0..c1ffe3e055 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -34,8 +34,36 @@
   #:use-module ((guix utils) #:select (version-major))
   #:use-module ((guix packages) #:select (package-version))
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-9)
   #:use-module (ice-9 match)
-  #:export (<nginx-configuration>
+  #:export (<httpd-configuration>
+            httpd-configuration
+            httpd-configuration?
+            httpd-configuration-package
+            httpd-configuration-pid-file
+            httpd-configuration-config
+
+            <httpd-virtualhost>
+            httpd-virtualhost
+            httpd-virtualhost?
+            httpd-virtualhost-addresses-and-ports
+            httpd-virtualhost-contents
+
+            <httpd-config-file>
+            httpd-config-file
+            httpd-config-file?
+            httpd-config-file-modules
+            httpd-config-file-server-root
+            httpd-config-file-server-name
+            httpd-config-file-listen
+            httpd-config-file-pid-file
+            httpd-config-file-error-log
+            httpd-config-file-user
+            httpd-config-file-group
+
+            httpd-service-type
+
+            <nginx-configuration>
             nginx-configuration
             nginx-configuration?
             nginx-configuartion-nginx
@@ -133,6 +161,205 @@
 ;;;
 ;;; Code:
 
+(define-record-type* <httpd-module>
+  httpd-module make-httpd-module
+  httpd-module?
+  (name httpd-load-module-name)
+  (file httpd-load-module-file))
+
+;; Default modules for the httpd-service-type, taken from etc/httpd/httpd.conf
+;; file in the httpd package.
+(define %default-httpd-modules
+  (map (match-lambda
+         ((name file)
+          (httpd-module
+           (name name)
+           (file file))))
+       '(("authn_file_module" "modules/mod_authn_file.so")
+         ("authn_core_module" "modules/mod_authn_core.so")
+         ("authz_host_module" "modules/mod_authz_host.so")
+         ("authz_groupfile_module" "modules/mod_authz_groupfile.so")
+         ("authz_user_module" "modules/mod_authz_user.so")
+         ("authz_core_module" "modules/mod_authz_core.so")
+         ("access_compat_module" "modules/mod_access_compat.so")
+         ("auth_basic_module" "modules/mod_auth_basic.so")
+         ("reqtimeout_module" "modules/mod_reqtimeout.so")
+         ("filter_module" "modules/mod_filter.so")
+         ("mime_module" "modules/mod_mime.so")
+         ("log_config_module" "modules/mod_log_config.so")
+         ("env_module" "modules/mod_env.so")
+         ("headers_module" "modules/mod_headers.so")
+         ("setenvif_module" "modules/mod_setenvif.so")
+         ("version_module" "modules/mod_version.so")
+         ("unixd_module" "modules/mod_unixd.so")
+         ("status_module" "modules/mod_status.so")
+         ("autoindex_module" "modules/mod_autoindex.so")
+         ("dir_module" "modules/mod_dir.so")
+         ("alias_module" "modules/mod_alias.so"))))
+
+(define-record-type* <httpd-config-file>
+  httpd-config-file make-httpd-config-file
+  httpd-config-file?
+  (modules        httpd-config-file-modules
+                  (default %default-httpd-modules))
+  (server-root    httpd-config-file-server-root
+                  (default httpd))
+  (server-name    httpd-config-file-server-name
+                  (default #f))
+  (document-root  httpd-config-file-document-root
+                  (default "/srv/http"))
+  (listen         httpd-config-file-listen
+                  (default '("80")))
+  (pid-file       httpd-config-file-pid-file
+                  (default "/var/run/httpd"))
+  (error-log      httpd-config-file-error-log
+                  (default "/var/log/httpd/error_log"))
+  (user           httpd-config-file-user
+                  (default "httpd"))
+  (group          httpd-config-file-group
+                  (default "httpd"))
+  (extra-config   httpd-config-file-extra-config
+                  (default
+                    (list "TypesConfig etc/httpd/mime.types"))))
+
+(define-gexp-compiler (httpd-config-file-compiler
+                       (file <httpd-config-file>) system target)
+  (match file
+    (($ <httpd-config-file> load-modules server-root server-name
+                                   document-root listen pid-file error-log
+                                   user group extra-config)
+     (gexp->derivation
+      "httpd.conf"
+      #~(call-with-output-file (ungexp output "out")
+          (lambda (port)
+            (display
+             (string-append
+              (ungexp-splicing
+               `(,@(append-map
+                    (match-lambda
+                      (($ <httpd-module> name module)
+                       `("LoadModule " ,name " " ,module "\n")))
+                    load-modules)
+                 ,@`("ServerRoot " ,server-root "\n")
+                 ,@(if server-name
+                       `("ServerName " ,server-name "\n")
+                       '())
+                 ,@`("DocumentRoot " ,document-root "\n")
+                 ,@(append-map
+                    (lambda (listen-value)
+                      `("Listen " ,listen-value "\n"))
+                    listen)
+                 ,@(if pid-file
+                       `("Pidfile " ,pid-file "\n")
+                       '())
+                 ,@(if error-log
+                       `("ErrorLog " ,error-log "\n")
+                       '())
+                 ,@(if user
+                       `("User " ,user "\n")
+                       '())
+                 ,@(if group
+                       `("Group " ,group "\n")
+                       '())
+                 "\n\n"
+                 ,@extra-config)))
+             port)))
+      #:local-build? #t))))
+
+(define-record-type <httpd-virtualhost>
+  (httpd-virtualhost addresses-and-ports contents)
+  httpd-virtualhost?
+  (addresses-and-ports httpd-virtualhost-addresses-and-ports)
+  (contents            httpd-virtualhost-contents))
+
+(define-record-type* <httpd-configuration>
+  httpd-configuration make-httpd-configuration
+  httpd-configuration?
+  (package  httpd-configuration-package
+            (default httpd))
+  (pid-file httpd-configuration-pid-file
+            (default "/var/run/httpd"))
+  (config   httpd-configuration-config
+            (default (httpd-config-file))))
+
+(define %httpd-accounts
+  (list (user-group (name "httpd") (system? #t))
+        (user-account
+         (name "httpd")
+         (group "httpd")
+         (system? #t)
+         (comment "Apache HTTPD server user")
+         (home-directory "/var/empty")
+         (shell (file-append shadow "/sbin/nologin")))))
+
+(define httpd-shepherd-services
+  (match-lambda
+    (($ <httpd-configuration> package pid-file config)
+     (list (shepherd-service
+            (provision '(httpd))
+            (documentation "The Apache HTTP Server")
+            (requirement '(networking))
+            (start #~(make-forkexec-constructor
+                      `(#$(file-append package "/bin/httpd")
+                        #$@(if config
+                               (list "-f" config)
+                               '()))
+                      #:pid-file #$pid-file))
+            (stop #~(make-kill-destructor)))))))
+
+(define httpd-activation
+  (match-lambda
+    (($ <httpd-configuration> package pid-file config)
+     (match-record
+      config
+      <httpd-config-file>
+      (error-log document-root)
+      #~(begin
+          (use-modules (guix build utils))
+
+          (mkdir-p #$(dirname error-log))
+          (mkdir-p #$document-root))))))
+
+(define (httpd-process-extensions original-config extension-configs)
+  (let ((config (httpd-configuration-config
+                 original-config)))
+    (if (httpd-config-file? config)
+        (httpd-configuration
+         (inherit original-config)
+         (config
+          (httpd-config-file
+           (inherit config)
+           (extra-config
+            (append (httpd-config-file-extra-config config)
+                    (append-map
+                     (match-lambda
+                       (($ <httpd-virtualhost>
+                           addresses-and-ports
+                           contents)
+                        `(,(string-append
+                            "<VirtualHost " addresses-and-ports ">\n")
+                          ,@contents
+                          "\n</VirtualHost>\n"))
+                       ((? string? x)
+                        `("\n" ,x "\n"))
+                       ((? list? x)
+                        `("\n" ,@x "\n")))
+                     extension-configs)))))))))
+
+(define httpd-service-type
+  (service-type (name 'httpd)
+                (extensions
+                 (list (service-extension shepherd-root-service-type
+                                          httpd-shepherd-services)
+                       (service-extension activation-service-type
+                                          httpd-activation)
+                       (service-extension account-service-type
+                                          (const %httpd-accounts))))
+                (compose concatenate)
+                (extend httpd-process-extensions)
+                (default-value
+                  (httpd-configuration))))
+
 (define-record-type* <nginx-server-configuration>
   nginx-server-configuration make-nginx-server-configuration
   nginx-server-configuration?
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index 496f2ac4e1..345cecedd8 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -346,7 +346,7 @@ the image."
                                (label "GNU-ESP")             ;cosmetic only
                                ;; Use "vfat" here since this property is used
                                ;; when mounting. The actual FAT-ness is based
-                               ;; on filesystem size (16 in this case).
+                               ;; on file system size (16 in this case).
                                (file-system "vfat")
                                (flags '(esp))))))))
              (initialize-hard-disk "/dev/vda"
diff --git a/gnu/tests/messaging.scm b/gnu/tests/messaging.scm
index 60e2f332a3..f17dfe6265 100644
--- a/gnu/tests/messaging.scm
+++ b/gnu/tests/messaging.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,7 +27,9 @@
   #:use-module (gnu packages messaging)
   #:use-module (guix gexp)
   #:use-module (guix store)
-  #:export (%test-prosody))
+  #:use-module (guix modules)
+  #:export (%test-prosody
+            %test-bitlbee))
 
 (define (run-xmpp-test name xmpp-service pid-file create-account)
   "Run a test of an OS running XMPP-SERVICE, which writes its PID to PID-FILE."
@@ -158,3 +160,86 @@
                            (service prosody-service-type config)
                            (prosody-configuration-pidfile config)
                            %create-prosody-account)))))
+
+
+;;;
+;;; BitlBee.
+;;;
+
+(define (run-bitlbee-test)
+  (define os
+    (marionette-operating-system
+     (simple-operating-system (dhcp-client-service)
+                              (service bitlbee-service-type
+                                       (bitlbee-configuration
+                                        (interface "0.0.0.0"))))
+     #:imported-modules (source-module-closure
+                         '((gnu services herd)))))
+
+  (define vm
+    (virtual-machine
+     (operating-system os)
+     (port-forwardings `((6667 . 6667)))))
+
+  (define test
+    (with-imported-modules '((gnu build marionette))
+      #~(begin
+          (use-modules (ice-9 rdelim)
+                       (srfi srfi-64)
+                       (gnu build marionette))
+
+          (define marionette
+            (make-marionette (list #$vm)))
+
+          (mkdir #$output)
+          (chdir #$output)
+
+          (test-begin "bitlbee")
+
+          (test-eq "service started"
+            'running!
+            (marionette-eval
+             '(begin
+                (use-modules (gnu services herd))
+                (start-service 'bitlbee)
+                'running!)
+             marionette))
+
+          (test-equal "valid PID"
+            #$(file-append bitlbee "/sbin/bitlbee")
+            (marionette-eval
+             '(begin
+                (use-modules (srfi srfi-1)
+                             (gnu services herd))
+
+                (let ((bitlbee
+                       (find (lambda (service)
+                               (equal? '(bitlbee)
+                                       (live-service-provision service)))
+                             (current-services))))
+                  (and (pk 'bitlbee-service bitlbee)
+                       (let ((pid (live-service-running bitlbee)))
+                         (readlink (string-append "/proc/"
+                                                  (number->string pid)
+                                                  "/exe"))))))
+             marionette))
+
+          (test-assert "connect"
+            (let* ((address (make-socket-address AF_INET INADDR_LOOPBACK
+                                                 6667))
+                   (sock    (socket AF_INET SOCK_STREAM 0)))
+              (connect sock address)
+              ;; See <https://tools.ietf.org/html/rfc1459>.
+              (->bool (string-contains (pk 'message (read-line sock))
+                                       "BitlBee"))))
+
+          (test-end)
+          (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
+
+  (gexp->derivation "bitlbee-test" test))
+
+(define %test-bitlbee
+  (system-test
+   (name "bitlbee")
+   (description "Connect to a BitlBee IRC server.")
+   (value (run-bitlbee-test))))
diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm
index 336f25b3c7..1912f8f79d 100644
--- a/gnu/tests/web.scm
+++ b/gnu/tests/web.scm
@@ -29,51 +29,38 @@
   #:use-module (gnu services networking)
   #:use-module (guix gexp)
   #:use-module (guix store)
-  #:export (%test-nginx
+  #:export (%test-httpd
+            %test-nginx
             %test-php-fpm))
 
 (define %index.html-contents
-  ;; Contents of the /index.html file served by nginx.
-  "Hello, nginx!")
+  ;; Contents of the /index.html file.
+  "Hello, guix!")
 
 (define %make-http-root
   ;; Create our server root in /srv.
   #~(begin
       (mkdir "/srv")
-      (call-with-output-file "/srv/index.html"
+      (mkdir "/srv/http")
+      (call-with-output-file "/srv/http/index.html"
         (lambda (port)
           (display #$%index.html-contents port)))))
 
-(define %nginx-servers
-  ;; Server blocks.
-  (list (nginx-server-configuration
-         (root "/srv")
-         (listen '("8042" "443 ssl")))))
-
-(define %nginx-os
-  ;; Operating system under test.
-  (simple-operating-system
-   (dhcp-client-service)
-   (service nginx-service-type
-            (nginx-configuration
-             (log-directory "/var/log/nginx")
-             (server-blocks %nginx-servers)))
-   (simple-service 'make-http-root activation-service-type
-                   %make-http-root)))
-
-(define* (run-nginx-test #:optional (http-port 8042))
+(define* (run-webserver-test name test-os #:key (log-file #f) (http-port 8080))
   "Run tests in %NGINX-OS, which has nginx running and listening on
 HTTP-PORT."
   (define os
     (marionette-operating-system
-     %nginx-os
+     test-os
      #:imported-modules '((gnu services herd)
                           (guix combinators))))
 
+  (define forwarded-port 8080)
+
   (define vm
     (virtual-machine
      (operating-system os)
-     (port-forwardings `((8080 . ,http-port)))))
+     (port-forwardings `((,http-port . ,forwarded-port)))))
 
   (define test
     (with-imported-modules '((gnu build marionette))
@@ -90,48 +77,92 @@ HTTP-PORT."
           (mkdir #$output)
           (chdir #$output)
 
-          (test-begin "nginx")
+          (test-begin #$name)
 
-          ;; Wait for nginx to be up and running.
-          (test-eq "service running"
-            'running!
+          (test-assert #$(string-append name " service running")
             (marionette-eval
              '(begin
                 (use-modules (gnu services herd))
-                (start-service 'nginx)
-                'running!)
-             marionette))
-
-          ;; Make sure the PID file is created.
-          (test-assert "PID file"
-            (marionette-eval
-             '(file-exists? "/var/run/nginx/pid")
+                (match (start-service '#$(string->symbol name))
+                  (#f #f)
+                  (('service response-parts ...)
+                   (match (assq-ref response-parts 'running)
+                     ((#t) #t)
+                     ((pid) (number? pid))))))
              marionette))
 
           ;; Retrieve the index.html file we put in /srv.
           (test-equal "http-get"
             '(200 #$%index.html-contents)
-            (let-values (((response text)
-                          (http-get "http://localhost:8080/index.html"
-                                    #:decode-body? #t)))
+            (let-values
+                (((response text)
+                  (http-get #$(simple-format
+                               #f "http://localhost:~A/index.html" forwarded-port)
+                            #:decode-body? #t)))
               (list (response-code response) text)))
 
-          ;; There should be a log file in here.
-          (test-assert "log file"
-            (marionette-eval
-             '(file-exists? "/var/log/nginx/access.log")
-             marionette))
+          #$@(if log-file
+                 `((test-assert ,(string-append "log file exists " log-file)
+                     (marionette-eval
+                      '(file-exists? ,log-file)
+                      marionette)))
+                 '())
 
           (test-end)
           (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
 
-  (gexp->derivation "nginx-test" test))
+  (gexp->derivation (string-append name "-test") test))
+
+
+;;;
+;;; HTTPD
+;;;
+
+(define %httpd-os
+  (simple-operating-system
+   (dhcp-client-service)
+   (service httpd-service-type
+            (httpd-configuration
+             (config
+              (httpd-config-file
+               (listen '("8080"))))))
+   (simple-service 'make-http-root activation-service-type
+                   %make-http-root)))
+
+(define %test-httpd
+  (system-test
+   (name "httpd")
+   (description "Connect to a running HTTPD server.")
+   (value (run-webserver-test name %httpd-os
+                              #:log-file "/var/log/httpd/error_log"))))
+
+
+;;;
+;;; NGINX
+;;;
+
+(define %nginx-servers
+  ;; Server blocks.
+  (list (nginx-server-configuration
+         (listen '("8080")))))
+
+(define %nginx-os
+  ;; Operating system under test.
+  (simple-operating-system
+   (dhcp-client-service)
+   (service nginx-service-type
+            (nginx-configuration
+             (log-directory "/var/log/nginx")
+             (server-blocks %nginx-servers)))
+   (simple-service 'make-http-root activation-service-type
+                   %make-http-root)))
 
 (define %test-nginx
   (system-test
    (name "nginx")
    (description "Connect to a running NGINX server.")
-   (value (run-nginx-test))))
+   (value (run-webserver-test name %nginx-os
+                              #:log-file "/var/log/nginx/access.log"))))
 
 
 ;;;