summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi21
-rw-r--r--gnu/build/linux-modules.scm19
-rw-r--r--gnu/local.mk3
-rw-r--r--gnu/packages/android.scm2
-rw-r--r--gnu/packages/avahi.scm16
-rw-r--r--gnu/packages/bash.scm5
-rw-r--r--gnu/packages/bioinformatics.scm60
-rw-r--r--gnu/packages/bootloaders.scm2
-rw-r--r--gnu/packages/build-tools.scm2
-rw-r--r--gnu/packages/chemistry.scm4
-rw-r--r--gnu/packages/code.scm4
-rw-r--r--gnu/packages/compression.scm21
-rw-r--r--gnu/packages/connman.scm4
-rw-r--r--gnu/packages/cran.scm69
-rw-r--r--gnu/packages/crypto.scm2
-rw-r--r--gnu/packages/databases.scm8
-rw-r--r--gnu/packages/datamash.scm4
-rw-r--r--gnu/packages/django.scm4
-rw-r--r--gnu/packages/dns.scm13
-rw-r--r--gnu/packages/elf.scm2
-rw-r--r--gnu/packages/emacs.scm2
-rw-r--r--gnu/packages/emulators.scm2
-rw-r--r--gnu/packages/engineering.scm4
-rw-r--r--gnu/packages/enlightenment.scm5
-rw-r--r--gnu/packages/file-systems.scm2
-rw-r--r--gnu/packages/flashing-tools.scm6
-rw-r--r--gnu/packages/freedesktop.scm6
-rw-r--r--gnu/packages/fvwm.scm21
-rw-r--r--gnu/packages/games.scm26
-rw-r--r--gnu/packages/gimp.scm12
-rw-r--r--gnu/packages/gl.scm2
-rw-r--r--gnu/packages/gnome.scm6
-rw-r--r--gnu/packages/gnuzilla.scm5
-rw-r--r--gnu/packages/golang.scm52
-rw-r--r--gnu/packages/graph.scm2
-rw-r--r--gnu/packages/graphics.scm27
-rw-r--r--gnu/packages/guile.scm119
-rw-r--r--gnu/packages/haskell.scm21
-rw-r--r--gnu/packages/image.scm4
-rw-r--r--gnu/packages/imagemagick.scm4
-rw-r--r--gnu/packages/irc.scm6
-rw-r--r--gnu/packages/kde-frameworks.scm36
-rw-r--r--gnu/packages/linux.scm48
-rw-r--r--gnu/packages/lua.scm10
-rw-r--r--gnu/packages/mail.scm2
-rw-r--r--gnu/packages/make-bootstrap.scm2
-rw-r--r--gnu/packages/maths.scm34
-rw-r--r--gnu/packages/messaging.scm12
-rw-r--r--gnu/packages/monitoring.scm31
-rw-r--r--gnu/packages/music.scm10
-rw-r--r--gnu/packages/networking.scm20
-rw-r--r--gnu/packages/ocaml.scm6
-rw-r--r--gnu/packages/onc-rpc.scm8
-rw-r--r--gnu/packages/openstack.scm12
-rw-r--r--gnu/packages/password-utils.scm4
-rw-r--r--gnu/packages/patches/bash-completion-directories.patch8
-rw-r--r--gnu/packages/patches/java-simple-xml-fix-tests.patch37
-rw-r--r--gnu/packages/patches/libtirpc-missing-headers.patch40
-rw-r--r--gnu/packages/perl.scm6
-rw-r--r--gnu/packages/photo.scm2
-rw-r--r--gnu/packages/protobuf.scm6
-rw-r--r--gnu/packages/python-crypto.scm19
-rw-r--r--gnu/packages/python-web.scm2
-rw-r--r--gnu/packages/python.scm58
-rw-r--r--gnu/packages/qt.scm2
-rw-r--r--gnu/packages/ratpoison.scm2
-rw-r--r--gnu/packages/rdesktop.scm7
-rw-r--r--gnu/packages/ruby.scm260
-rw-r--r--gnu/packages/sdl.scm6
-rw-r--r--gnu/packages/serialization.scm8
-rw-r--r--gnu/packages/sml.scm2
-rw-r--r--gnu/packages/statistics.scm8
-rw-r--r--gnu/packages/syncthing.scm6
-rw-r--r--gnu/packages/terminals.scm33
-rw-r--r--gnu/packages/terraform.scm52
-rw-r--r--gnu/packages/tex.scm2
-rw-r--r--gnu/packages/text-editors.scm8
-rw-r--r--gnu/packages/tls.scm6
-rw-r--r--gnu/packages/video.scm8
-rw-r--r--gnu/packages/virtualization.scm2
-rw-r--r--gnu/packages/vulkan.scm140
-rw-r--r--gnu/packages/web.scm20
-rw-r--r--gnu/packages/wget.scm28
-rw-r--r--gnu/packages/wine.scm15
-rw-r--r--gnu/packages/wm.scm2
-rw-r--r--gnu/packages/xdisorg.scm10
-rw-r--r--gnu/packages/xml.scm15
-rw-r--r--gnu/packages/xorg.scm2
-rw-r--r--gnu/services/databases.scm8
-rw-r--r--gnu/services/mcron.scm8
-rw-r--r--gnu/services/ssh.scm7
-rw-r--r--gnu/system/vm.scm1
-rw-r--r--gnu/tests/base.scm4
-rw-r--r--guix/download.scm3
-rw-r--r--guix/git-download.scm2
-rw-r--r--guix/git.scm40
-rw-r--r--guix/glob.scm124
-rw-r--r--guix/import/elpa.scm25
-rw-r--r--tests/elpa.scm43
-rw-r--r--tests/glob.scm67
100 files changed, 1294 insertions, 694 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index bcea89e07b..4de8e9cb5a 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -10479,7 +10479,7 @@ gexps to introduce job definitions that are passed to mcron
 for more information on mcron job specifications.  Below is the
 reference of the mcron service.
 
-@deffn {Scheme Procedure} mcron-service @var{jobs} [#:mcron @var{mcron2}]
+@deffn {Scheme Procedure} mcron-service @var{jobs} [#:mcron @var{mcron}]
 Return an mcron service running @var{mcron} that schedules @var{jobs}, a
 list of gexps denoting mcron job specifications.
 
@@ -10504,7 +10504,7 @@ mcron jobs to run.
 Data type representing the configuration of mcron.
 
 @table @asis
-@item @code{mcron} (default: @var{mcron2})
+@item @code{mcron} (default: @var{mcron})
 The mcron package to use.
 
 @item @code{jobs}
@@ -11158,6 +11158,23 @@ server.  Alternately, one can specify the @command{sftp-server} command:
            `(("sftp" ,(file-append openssh "/libexec/sftp-server"))))))
 @end example
 
+@item @code{accepted-environment} (default: @code{'()})
+List of strings describing which environment variables may be exported.
+
+Each string gets on its own line.  See the @code{AcceptEnv} option in
+@code{man sshd_config}.
+
+This example allows ssh-clients to export the @code{COLORTERM} variable.
+It is set by terminal emulators, which support colors.  You can use it in
+your shell's ressource file to enable colors for the prompt and commands
+if this variable is set.
+
+@example
+(service openssh-service-type
+         (openssh-configuration
+           (accepted-environment '("COLORTERM"))))
+@end example
+
 @item @code{authorized-keys} (default: @code{'()})
 @cindex authorized keys, SSH
 @cindex SSH authorized keys
diff --git a/gnu/build/linux-modules.scm b/gnu/build/linux-modules.scm
index 4fe673cca2..87d2e98edf 100644
--- a/gnu/build/linux-modules.scm
+++ b/gnu/build/linux-modules.scm
@@ -206,7 +206,9 @@ appears in BLACK-LIST are not loaded."
 
   (define (load-dependencies file)
     (let ((dependencies (module-dependencies file)))
-      (every (cut load-linux-module* <> #:lookup-module lookup-module)
+      (every (cut load-linux-module* <>
+                  #:lookup-module lookup-module
+                  #:black-list black-list)
              (map lookup-module dependencies))))
 
   (and (not (black-listed? (file-name->module-name file)))
@@ -327,7 +329,7 @@ The modules corresponding to these aliases can then be found using
 list of alias/module pairs where each alias is a glob pattern as like the
 result of:
 
-  (compile-glob-pattern \"scsi:t-0x01*\")
+  (string->compiled-sglob \"scsi:t-0x01*\")
 
 and each module is a module name like \"snd_hda_intel\"."
   (define (comment? str)
@@ -352,17 +354,20 @@ and each module is a module name like \"snd_hda_intel\"."
       (line
        (match (tokenize line)
          (("alias" alias module)
-          (loop (alist-cons (compile-glob-pattern alias) module
+          (loop (alist-cons (string->compiled-sglob alias) module
                             aliases)))
          (()                                      ;empty line
           (loop aliases)))))))
 
-(define (current-alias-file)
-  "Return the absolute file name of the default 'modules.alias' file."
+(define (current-kernel-directory)
+  "Return the directory of the currently running Linux kernel."
   (string-append (or (getenv "LINUX_MODULE_DIRECTORY")
                      "/run/booted-system/kernel/lib/modules")
-                 "/" (utsname:release (uname))
-                 "/" "modules.alias"))
+                 "/" (utsname:release (uname))))
+
+(define (current-alias-file)
+  "Return the absolute file name of the default 'modules.alias' file."
+  (string-append (current-kernel-directory) "/modules.alias"))
 
 (define* (known-module-aliases #:optional (alias-file (current-alias-file)))
   "Return the list of alias/module pairs read from ALIAS-FILE.  Each alias is
diff --git a/gnu/local.mk b/gnu/local.mk
index a03b482df2..bc30cbae2a 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -411,6 +411,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/tcl.scm				\
   %D%/packages/telephony.scm			\
   %D%/packages/terminals.scm			\
+  %D%/packages/terraform.scm			\
   %D%/packages/texinfo.scm			\
   %D%/packages/tex.scm				\
   %D%/packages/textutils.scm			\
@@ -787,6 +788,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/jacal-fix-texinfo.patch			\
   %D%/packages/patches/java-jeromq-fix-tests.patch		\
   %D%/packages/patches/java-powermock-fix-java-files.patch		\
+  %D%/packages/patches/java-simple-xml-fix-tests.patch		\
   %D%/packages/patches/java-xerces-bootclasspath.patch	\
   %D%/packages/patches/java-xerces-build_dont_unzip.patch	\
   %D%/packages/patches/java-xerces-xjavac_taskdef.patch	\
@@ -858,7 +860,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/libssh2-fix-build-failure-with-gcrypt.patch	\
   %D%/packages/patches/libtar-CVE-2013-4420.patch 		\
   %D%/packages/patches/libtheora-config-guess.patch		\
-  %D%/packages/patches/libtirpc-missing-headers.patch		\
   %D%/packages/patches/libtiff-CVE-2017-9935.patch		\
   %D%/packages/patches/libtiff-CVE-2017-18013.patch		\
   %D%/packages/patches/libtool-skip-tests2.patch		\
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index 6baefbca96..637cda0205 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -457,7 +457,7 @@ def _FindRepo():
      ;; TODO: Add git-remote-persistent-https once it is available in guix
      `(("git" ,git)
        ("gnupg" ,gnupg)
-       ("ssh", openssh)))
+       ("ssh" ,openssh)))
     (native-inputs
      `(("nose" ,python2-nose)))
     (home-page "https://code.google.com/p/git-repo/")
diff --git a/gnu/packages/avahi.scm b/gnu/packages/avahi.scm
index 480b5e8d97..7734028dc3 100644
--- a/gnu/packages/avahi.scm
+++ b/gnu/packages/avahi.scm
@@ -99,10 +99,18 @@ DNS-SD (for \"DNS-Based Service Discovery\") protocols.")
                        (method url-fetch))))))
     (build-system gnu-build-system)
     (arguments
-     ;; The Avahi daemon socket is expected by src/Makefile.am to be at
-     ;; "$(localstatedir)/run/avahi-daemon/socket", so set $(localstatedir)
-     ;; appropriately.
-     '(#:configure-flags '("--localstatedir=/var")))
+     '(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'set-avahi-socket-name
+                    (lambda _
+                      ;; The Avahi daemon socket is expected by
+                      ;; src/Makefile.am to be at
+                      ;; "$(localstatedir)/run/avahi-daemon/socket", but
+                      ;; nowadays it lives in /run/avahi-daemon/socket.
+                      ;; Remove the "$(localstatedir)" bit.
+                      (substitute* "src/Makefile.in"
+                        (("\\$\\(localstatedir)/run/avahi-daemon/socket")
+                         "/run/avahi-daemon/socket"))
+                      #t)))))
     (synopsis "Multicast DNS Name Service Switch (@dfn{NSS}) plug-in")
     (description
      "Nss-mdns is a plug-in for the GNU C Library's Name Service Switch
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 52d93e8e7e..64f7782f58 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -269,7 +270,7 @@ without modification.")
 (define-public bash-completion
   (package
     (name "bash-completion")
-    (version "2.7")
+    (version "2.8")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -277,7 +278,7 @@ without modification.")
                     version "/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "07j484vb3k90f4989xh1g1x99g01akrp69p3dml4lza27wnqkfj1"))
+                "0kgmflrr1ga9wfk770vmakna3nj46ylb5ky9ipd0v2k9ymq5a7y0"))
               (patches
                (search-patches "bash-completion-directories.patch"))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 426618147f..31ca5b2521 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -8448,7 +8448,7 @@ paired-end data.")
        ("r-testthat" ,r-testthat)
        ;; During vignette building knitr checks that "pandoc-citeproc"
        ;; is in the PATH.
-       ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)))
+       ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)))
     (propagated-inputs
      `(("r-data-table" ,r-data-table)
        ("r-biomart" ,r-biomart)
@@ -11521,7 +11521,7 @@ Browser.")
          (delete 'configure)
          (delete 'build)
          (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
+           (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((bin (string-append (assoc-ref outputs "out")
                                        "/bin"))
                    (docdir  (string-append (assoc-ref outputs "out")
@@ -11544,7 +11544,16 @@ Browser.")
                          scripts)
                (for-each (lambda (file) (install-file file docdir))
                          docs)
+               ;; Fix references to gunzip
+               (substitute* (map (lambda (file)
+                                   (string-append bin "/" file))
+                                 scripts)
+                 (("\"gunzip -c")
+                  (string-append "\"" (assoc-ref inputs "gzip")
+                                 "/bin/gunzip -c")))
                #t))))))
+    (inputs
+     `(("gzip" ,gzip)))
     (home-page "http://www.bioinformatics.babraham.ac.uk/projects/bismark/")
     (synopsis "Map bisulfite treated sequence reads and analyze methylation")
     (description "Bismark is a program to map bisulfite treated sequencing
@@ -12729,8 +12738,8 @@ once.  This package provides tools to perform Drop-seq analyses.")
        ("r-rtracklayer" ,r-rtracklayer)
        ("r-rjson" ,r-rjson)
        ("salmon" ,salmon)
-       ("ghc-pandoc" ,ghc-pandoc)
-       ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)
+       ("ghc-pandoc" ,ghc-pandoc-1)
+       ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)
        ("python-wrapper" ,python-wrapper)
        ("python-pyyaml" ,python-pyyaml)))
     (home-page "http://bioinformatics.mdc-berlin.de/pigx/")
@@ -12746,7 +12755,7 @@ expression report comparing samples in an easily configurable manner.")
 (define-public pigx-chipseq
   (package
     (name "pigx-chipseq")
-    (version "0.0.2")
+    (version "0.0.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx_chipseq/"
@@ -12754,10 +12763,11 @@ expression report comparing samples in an easily configurable manner.")
                                   "/pigx_chipseq-" version ".tar.gz"))
               (sha256
                (base32
-                "1jliwhifnjgl9x0z730bzpxswi2s84fyg5y8cagbyzpw509452f5"))))
+                "1plw0bz0b7flj0g9irbn8n520005lmajkiq5flpizzapsl0a0r9g"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
+     `(#:tests? #f ; parts of the tests rely on access to the network
+       #:phases
        (modify-phases %standard-phases
          (add-after 'install 'wrap-executable
            ;; Make sure the executable finds all R modules.
@@ -12782,13 +12792,16 @@ expression report comparing samples in an easily configurable manner.")
        ("r-ggplot2" ,r-ggplot2)
        ("r-plotly" ,r-plotly)
        ("python-wrapper" ,python-wrapper)
+       ("python-magic" ,python-magic)
        ("python-pyyaml" ,python-pyyaml)
+       ("python-xlrd" ,python-xlrd)
        ("snakemake" ,snakemake)
+       ("trim-galore" ,trim-galore)
        ("macs" ,macs)
        ("multiqc" ,multiqc)
        ("perl" ,perl)
-       ("ghc-pandoc" ,ghc-pandoc)
-       ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)
+       ("ghc-pandoc" ,ghc-pandoc-1)
+       ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)
        ("fastqc" ,fastqc)
        ("bowtie" ,bowtie)
        ("idr" ,idr)
@@ -12812,7 +12825,7 @@ in an easily configurable manner.")
 (define-public pigx-bsseq
   (package
     (name "pigx-bsseq")
-    (version "0.0.5")
+    (version "0.0.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx_bsseq/"
@@ -12820,7 +12833,7 @@ in an easily configurable manner.")
                                   "/pigx_bsseq-" version ".tar.gz"))
               (sha256
                (base32
-                "1h8ma99vi7hs83nafvjpq8jmaq9977j3n11c4zd95hai0cf7zxmp"))))
+                "0pw797gxx6x1n56lyrvglj7q5hqq4ylfqkvlcrzq1z3j5lxcyl69"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -12844,7 +12857,10 @@ in an easily configurable manner.")
     (native-inputs
      `(("tzdata" ,tzdata)))
     (inputs
-     `(("r-minimal" ,r-minimal)
+     `(("coreutils" ,coreutils)
+       ("sed" ,sed)
+       ("grep" ,grep)
+       ("r-minimal" ,r-minimal)
        ("r-annotationhub" ,r-annotationhub)
        ("r-dt" ,r-dt)
        ("r-genomation" ,r-genomation)
@@ -12854,8 +12870,8 @@ in an easily configurable manner.")
        ("r-bookdown" ,r-bookdown)
        ("r-ggplot2" ,r-ggplot2)
        ("r-ggbio" ,r-ggbio)
-       ("ghc-pandoc" ,ghc-pandoc)
-       ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)
+       ("ghc-pandoc" ,ghc-pandoc-1)
+       ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)
        ("python-wrapper" ,python-wrapper)
        ("python-pyyaml" ,python-pyyaml)
        ("snakemake" ,snakemake)
@@ -12876,7 +12892,7 @@ methylation and segmentation.")
 (define-public pigx-scrnaseq
   (package
     (name "pigx-scrnaseq")
-    (version "0.0.2")
+    (version "0.0.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx_scrnaseq/"
@@ -12884,7 +12900,7 @@ methylation and segmentation.")
                                   "/pigx_scrnaseq-" version ".tar.gz"))
               (sha256
                (base32
-                "03gwp83823ji59y6nvyz89i4yd3faaqpc3791qia71i91470vfsg"))))
+                "12qdq0nj1wdkyighdxj6924bmbpd1a0b3gam6w64l4hiqrv5sijz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -12903,7 +12919,9 @@ methylation and segmentation.")
                  `("PYTHONPATH"  ":" = (,(getenv "PYTHONPATH")))))
              #t)))))
     (inputs
-     `(("dropseq-tools" ,dropseq-tools)
+     `(("coreutils" ,coreutils)
+       ("perl" ,perl)
+       ("dropseq-tools" ,dropseq-tools)
        ("fastqc" ,fastqc)
        ("java-picard" ,java-picard)
        ("java" ,icedtea-8)
@@ -12912,8 +12930,8 @@ methylation and segmentation.")
        ("python-pandas" ,python-pandas)
        ("python-numpy" ,python-numpy)
        ("python-loompy" ,python-loompy)
-       ("ghc-pandoc" ,ghc-pandoc)
-       ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)
+       ("ghc-pandoc" ,ghc-pandoc-1)
+       ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)
        ("snakemake" ,snakemake)
        ("star" ,star)
        ("r-minimal" ,r-minimal)
@@ -12953,7 +12971,7 @@ based methods.")
 (define-public pigx
   (package
     (name "pigx")
-    (version "0.0.1")
+    (version "0.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx/"
@@ -12961,7 +12979,7 @@ based methods.")
                                   "/pigx-" version ".tar.gz"))
               (sha256
                (base32
-                "1nxb2hbp40yg3j7n56k4dhsd2fl1j8g0wpiiln56prqzljwnlgmf"))))
+                "0sb708sl42h3s5z872jb1w70bbqplwapnsc1wm27zcsvi7li4gw8"))))
     (build-system gnu-build-system)
     (inputs
      `(("python" ,python)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 9ea8748a5b..582c71cc4a 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -181,7 +181,7 @@ menu to select one of the installed operating systems.")
     (synopsis "GRand Unified Boot loader (UEFI version)")
     (inputs
      `(("efibootmgr" ,efibootmgr)
-       ("mtools", mtools)
+       ("mtools" ,mtools)
        ,@(package-inputs grub)))
     (arguments
      `(;; TODO: Tests need a UEFI firmware for qemu. There is one at
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index 2abb44fdb8..73eacf7df2 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -81,7 +81,7 @@ makes a few sacrifices to acquire fast full and incremental build times.")
                (base32
                 "06r8limj38mv884s5riiz6lpzw37cvhbf9jd0smzcbi7fwmv3yah"))))
     (build-system python-build-system)
-    (inputs `(("ninja", ninja)))
+    (inputs `(("ninja" ,ninja)))
     (propagated-inputs `(("python" ,python)))
     (home-page "https://mesonbuild.com/")
     (synopsis "Build system designed to be fast and user-friendly")
diff --git a/gnu/packages/chemistry.scm b/gnu/packages/chemistry.scm
index ed883072b4..f1359b2cf6 100644
--- a/gnu/packages/chemistry.scm
+++ b/gnu/packages/chemistry.scm
@@ -73,8 +73,8 @@ only with Python 2 and NumPy < 1.9.")
     (build-system python-build-system)
     (inputs
      `(("python-matplotlib" ,(with-numpy-1.8 python2-matplotlib))
-       ("python-scientific", python2-scientific)
-       ("netcdf", netcdf)
+       ("python-scientific" ,python2-scientific)
+       ("netcdf" ,netcdf)
        ("gv" ,gv)))
     (propagated-inputs
      `(("python-mmtk" ,python2-mmtk)))
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index d454056668..fa5a119819 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -421,9 +421,9 @@ functionality such as HTML output.")
          "0scjbp1z201q8njvrxqz7lk2m9b6k2rxd5q1shrng6532r7ndif2"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:configure-flags
+     '(#:build-type "RelWithDebInfo"
+       #:configure-flags
        '("-DRTAGS_NO_ELISP_FILES=1"
-         "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
          "-DCMAKE_CXX_FLAGS=-std=c++11"
          "-DBUILD_TESTING=FALSE")
        #:tests? #f))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index dbf4f925a3..c44882b23c 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -1661,7 +1661,7 @@ speed.")
     (source (package-source zstd))
     (build-system gnu-build-system)
     (native-inputs
-     `(("googletest", googletest)))
+     `(("googletest" ,googletest)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -1800,16 +1800,15 @@ recreates the stored directory structure by default.")
 (define-public zziplib
   (package
     (name "zziplib")
-    (version "0.13.68")
+    (version "0.13.69")
+    (home-page "https://github.com/gdraheim/zziplib")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://sourceforge/zziplib/zziplib13/"
-                           version "/zziplib-"
-                           version ".tar.bz2"))
+       (uri (string-append home-page "/archive/v" version ".tar.gz"))
        (sha256
         (base32
-         "1s0wz1hf2q4qxcp4lkg4rzpbz2814xagmvlyicqdj0ww0cvxv036"))))
+         "0i052a7shww0fzsxrdp3rd7g4mbzx7324a8ysbc0br7frpblcql4"))))
     (build-system gnu-build-system)
     (inputs
      `(("zlib" ,zlib)))
@@ -1819,16 +1818,12 @@ recreates the stored directory structure by default.")
                      ;; http://forums.gentoo.org/viewtopic-t-863161-start-0.html
                      ("python" ,python-2)
                      ("zip" ,zip))) ; to create test files
-    (arguments
-     ;; XXX: "make check" is broken, and the alternative (test/zziptests.py)
-     ;; requires network access.  See <https://github.com/gdraheim/zziplib/issues/20>
-     ;; and <https://github.com/gdraheim/zziplib/issues/24>.
-     `(#:tests? #f))
-    (home-page "http://zziplib.sourceforge.net/")
     (synopsis "Library for accessing zip files")
     (description
      "ZZipLib is a library based on zlib for accessing zip files.")
-    (license license:lgpl2.0+)))
+    ;; zziplib is dual licensed under LGPL2.0+ and MPL1.1.  Some example source
+    ;; files carry the Zlib license; see "docs/copying.html" for details.
+    (license (list license:lgpl2.0+ license:mpl1.1))))
 
 (define-public perl-archive-zip
   (package
diff --git a/gnu/packages/connman.scm b/gnu/packages/connman.scm
index 25756019fd..7e87cd8968 100644
--- a/gnu/packages/connman.scm
+++ b/gnu/packages/connman.scm
@@ -70,7 +70,7 @@
              (string-append
               "--with-dbusdatadir=" (assoc-ref %outputs "out") "/share"))))
     (native-inputs
-     `(("pkg-config", pkg-config)
+     `(("pkg-config" ,pkg-config)
        ("python" ,python-2)))
     (inputs
      `(("dbus" ,dbus)
@@ -84,7 +84,7 @@
        ;; TODO: add neard, ofono
        ("openconnect" ,openconnect)
        ("openvpn" ,openvpn)
-       ("ppp", ppp)
+       ("ppp" ,ppp)
        ("vpnc" ,vpnc)
        ("wpa-supplicant" ,wpa-supplicant)))
     (home-page "https://01.org/connman")
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 9b045c122f..b54ddc6b55 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Raoul Bonnal <ilpuccio.febo@gmail.com>
+;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -59,6 +60,36 @@ diversification and macroevolution, computing distances from DNA sequences,
 and several other tools.")
     (license license:gpl2+)))
 
+(define-public r-abbyyr
+  (package
+    (name "r-abbyyr")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "abbyyR" version))
+       (sha256
+        (base32
+         "1s8zf18sh0s89vk3dl09fzrq50csmmfvmsanf5vfkv9n5lx6pklg"))))
+    (properties `((upstream-name . "abbyyR")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-curl" ,r-curl)
+       ("r-httr" ,r-httr)
+       ("r-plyr" ,r-plyr)
+       ("r-progress" ,r-progress)
+       ("r-readr" ,r-readr)
+       ("r-xml" ,r-xml)))
+    (home-page "https://github.com/soodoku/abbyyR")
+    (synopsis "Access to Abbyy Optical Character Recognition (OCR) API")
+    (description
+     "This package provides tools to get text from images of text using Abbyy
+Cloud Optical Character Recognition (OCR) API.  With abbyyyR, one can easily
+OCR images, barcodes, forms, documents with machine readable zones, e.g.
+passports and get the results in a variety of formats including plain text and
+XML.  To learn more about the Abbyy OCR API, see @url{http://ocrsdk.com/}.")
+    (license license:expat)))
+
 (define-public r-colorspace
   (package
     (name "r-colorspace")
@@ -1679,7 +1710,7 @@ simplifying cross-class interoperability.")
      `(("r-quadprog" ,r-quadprog)
        ("r-xts" ,r-xts)
        ("r-zoo" ,r-zoo)))
-    (home-page "http://r-forge.r-project.org/projects/returnanalytics/")
+    (home-page "https://r-forge.r-project.org/projects/returnanalytics/")
     (synopsis "Econometric tools for performance and risk analysis")
     (description "This is a collection of econometric functions for
 performance and risk analysis.  This package aims to aid practitioners and
@@ -1996,7 +2027,7 @@ traveling salesman problem).")
          "0d2d1ni1camixyi45lfy00f4pn3p063k7bsi8gj5scp6n15mdgb0"))))
     (build-system r-build-system)
     (native-inputs `(("gfortran" ,gfortran)))
-    (home-page "http://cran.r-project.org/web/packages/qap/")
+    (home-page "https://cran.r-project.org/web/packages/qap/")
     (synopsis "Heuristics for the quadratic assignment problem (QAP)")
     (description "This package implements heuristics for the @dfn{quadratic
 assignment problem} (QAP).  Currently only a simulated annealing heuristic is
@@ -2016,7 +2047,7 @@ available.")
          "02ba6zj9bjwrzykamjp40ajynx9xjx9h2i85n0ym0r5lcki4x6fn"))))
     (build-system r-build-system)
     (propagated-inputs `(("r-cluster" ,r-cluster)))
-    (home-page "http://cran.r-project.org/web/packages/gclus/")
+    (home-page "https://cran.r-project.org/web/packages/gclus/")
     (synopsis "Clustering graphics")
     (description "This package orders panels in scatterplot matrices and
 parallel coordinate displays by some merit index.  It contains various indices
@@ -2355,7 +2386,7 @@ rules with R.")
          "11gjmn1azrjw5xlvdb4gknj9985kck9x8zb9np1rnk2smp6pka2m"))))
     (build-system r-build-system)
     (native-inputs `(("gfortran" ,gfortran)))
-    (home-page "http://cran.r-project.org/web/packages/leaps/")
+    (home-page "https://cran.r-project.org/web/packages/leaps/")
     (synopsis "Regression subset selection")
     (description
      "This package provides tools for regression subset selection, including
@@ -2376,7 +2407,7 @@ exhaustive search.")
     (properties `((upstream-name . "splus2R")))
     (build-system r-build-system)
     (native-inputs `(("gfortran" ,gfortran)))
-    (home-page "http://cran.r-project.org/web/packages/splus2R/")
+    (home-page "https://cran.r-project.org/web/packages/splus2R/")
     (synopsis "Supplemental S-PLUS functionality in R")
     (description
      "Currently there are many functions in S-PLUS that are missing in R.  To
@@ -2399,7 +2430,7 @@ provides some missing S-PLUS functionality in R.")
     (propagated-inputs
      `(("r-mass" ,r-mass)
        ("r-splus2r" ,r-splus2r)))
-    (home-page "http://cran.r-project.org/web/packages/ifultools/")
+    (home-page "https://cran.r-project.org/web/packages/ifultools/")
     (synopsis "Insightful research tools")
     (description "This package provides C code used by the wmtsa, fractal, and
 sapa R packages.")
@@ -2420,7 +2451,7 @@ sapa R packages.")
     (propagated-inputs
      `(("r-ifultools" ,r-ifultools)
        ("r-splus2r" ,r-splus2r)))
-    (home-page "http://cran.r-project.org/web/packages/sapa/")
+    (home-page "https://cran.r-project.org/web/packages/sapa/")
     (synopsis "Spectral analysis for physical applications")
     (description "This package provides software for the book Spectral
 Analysis for Physical Applications, Donald B. Percival and Andrew T. Walden,
@@ -2444,7 +2475,7 @@ Cambridge University Press, 1993.")
        ("r-ttr" ,r-ttr)
        ("r-xts" ,r-xts)
        ("r-zoo" ,r-zoo)))
-    (home-page "http://cran.r-project.org/web/packages/quantmod/")
+    (home-page "https://cran.r-project.org/web/packages/quantmod/")
     (synopsis "Quantitative financial modelling framework")
     (description "This package provides a quantitative financial modelling
 framework to allow users to specify, build, trade, and analyse quantitative
@@ -2469,7 +2500,7 @@ financial trading strategies.")
        ("r-zoo" ,r-zoo)))
     (native-inputs
      `(("gfortran" ,gfortran)))
-    (home-page "http://cran.r-project.org/web/packages/tseries/")
+    (home-page "https://cran.r-project.org/web/packages/tseries/")
     (synopsis "Time series analysis and computational finance")
     (description
      "This package provides functions relating to time series analysis and
@@ -2492,7 +2523,7 @@ computational finance.")
      `(("r-ifultools" ,r-ifultools)
        ("r-mass" ,r-mass)
        ("r-splus2r" ,r-splus2r)))
-    (home-page "http://cran.r-project.org/web/packages/wmtsa/")
+    (home-page "https://cran.r-project.org/web/packages/wmtsa/")
     (synopsis "Wavelet methods for time series analysis")
     (description
      "This package provides software to accompany the book \"Wavelet Methods
@@ -2568,7 +2599,7 @@ multivariate distributions.")
        ("r-scatterplot3d" ,r-scatterplot3d)
        ("r-splus2r" ,r-splus2r)
        ("r-wmtsa" ,r-wmtsa)))
-    (home-page "http://cran.r-project.org/web/packages/fractal/")
+    (home-page "https://cran.r-project.org/web/packages/fractal/")
     (synopsis "Fractal time series modeling and analysis")
     (description
      "This package provides tools for stochastic fractal and deterministic
@@ -2589,7 +2620,7 @@ chaotic time series analysis.")
     (build-system r-build-system)
     (propagated-inputs `(("r-nlme" ,r-nlme)))
     (native-inputs `(("gfortran" ,gfortran)))
-    (home-page "http://cran.r-project.org/web/packages/urca/")
+    (home-page "https://cran.r-project.org/web/packages/urca/")
     (synopsis "Unit root and cointegration tests for time series data")
     (description
      "This package provides unit root and cointegration tests encountered in
@@ -2637,7 +2668,7 @@ interface.")
      `(("r-extradistr" ,r-extradistr)))
     (native-inputs
      `(("gfortran" ,gfortran)))
-    (home-page "http://cran.r-project.org/web/packages/trend/")
+    (home-page "https://cran.r-project.org/web/packages/trend/")
     (synopsis "Non-parametric trend tests and change-point detection")
     (description
      "The analysis of environmental data often requires the detection of
@@ -2666,7 +2697,7 @@ sample Robust Rank-Order Distributional Test.")
     (build-system r-build-system)
     (propagated-inputs `(("r-matrix" ,r-matrix)))
     (native-inputs `(("gfortran" ,gfortran)))
-    (home-page "http://r-forge.r-project.org/projects/expm/")
+    (home-page "https://r-forge.r-project.org/projects/expm/")
     (synopsis "Tools for matrix exponentials and related quantities")
     (description
      "This package provides tools for the computation of the matrix
@@ -2688,7 +2719,7 @@ exponential, logarithm, square root, and related quantities.")
     (propagated-inputs
      `(("r-expm" ,r-expm)
        ("r-matrix" ,r-matrix)))
-    (home-page "http://cran.r-project.org/web/packages/complexplus/")
+    (home-page "https://cran.r-project.org/web/packages/complexplus/")
     (synopsis "Functions of complex or real variables")
     (description
      "This package extends several functions to the complex domain, including
@@ -2759,7 +2790,7 @@ ordered factor data types.")
        ("r-mass" ,r-mass)
        ("r-matrix" ,r-matrix)
        ("r-phontools" ,r-phontools)))
-    (home-page "http://cran.r-project.org/web/packages/powerplus/")
+    (home-page "https://cran.r-project.org/web/packages/powerplus/")
     (synopsis "Exponentiation operations")
     (description
      "This package provides tools for the computation of matrix and scalar
@@ -2966,7 +2997,7 @@ and within plot factors interact.")
     (build-system r-build-system)
     (propagated-inputs `(("r-mass" ,r-mass)))
     (native-inputs `(("gfortran" ,gfortran)))
-    (home-page "http://cran.r-project.org/web/packages/signal/")
+    (home-page "https://cran.r-project.org/web/packages/signal/")
     (synopsis "Signal processing")
     (description
      "This package provides a set of signal processing functions originally
@@ -3075,7 +3106,7 @@ R itself can handle.")
         (base32
          "0b1zd8jbnl6l292cr9rb50m09fy3ylxvzkpgi5lfb1nbzddcwfis"))))
     (build-system r-build-system)
-    (home-page "http://cran.r-project.org/web/packages/abind/")
+    (home-page "https://cran.r-project.org/web/packages/abind/")
     (synopsis "Combine multidimensional arrays")
     (description
      "This package provides tools to combine multidimensional arrays into a
@@ -3098,7 +3129,7 @@ extracting and replacing data in arrays.")
          "03hvh92lq4i4w4mla9bvwrwb4626f4hvlxgdn57hamp70960vjyc"))))
     (properties `((upstream-name . "PRROC")))
     (build-system r-build-system)
-    (home-page "http://cran.r-project.org/web/packages/PRROC/")
+    (home-page "https://cran.r-project.org/web/packages/PRROC/")
     (synopsis "Precision-Recall and ROC curves for weighted and unweighted data")
     (description
      "This package computes the areas under the @dfn{precision-recall} (PR)
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index df0141b353..99a3b78b05 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -581,7 +581,7 @@ cryptographically-secure replacement for Perl's built-in @code{rand} function.
 @item No matter how many numbers you see generated by the random number
 generator, you cannot guess the future numbers, and you cannot guess the seed.
 @item There are so many possible seeds that it would take decades, centuries,
-or millenia for an attacker to try them all.
+or millennia for an attacker to try them all.
 @item The seed comes from a source that generates relatively strong random
 data on your platform, so the seed itself will be as random as possible.
 @end enumerate\n")
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index a54013b818..716c75d7f8 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -1360,7 +1360,7 @@ module, and nothing else.")
 (define-public perl-sql-abstract
   (package
     (name "perl-sql-abstract")
-    (version "1.84")
+    (version "1.85")
     (source
      (origin
        (method url-fetch)
@@ -1368,7 +1368,7 @@ module, and nothing else.")
                            "SQL-Abstract-" version ".tar.gz"))
        (sha256
         (base32
-         "0xayvgv6nic61jm3nhg41rzwgm8h83wfyazvpaks0z7asjillpv5"))))
+         "1aycggrvppy2zgkwwn85jkdz93n5gsx4dambrjk67k5067hayi4z"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-install" ,perl-module-install)
@@ -2769,9 +2769,9 @@ Monitor read/write activity on a mongo server
              (setenv "JEMALLOC_HOME" (assoc-ref %build-inputs "jemalloc"))
              (setenv "RAPIDJSON_HOME" (assoc-ref %build-inputs "rapidjson"))
              #t)))
+       #:build-type "Release"
        #:configure-flags
-       (list "-DCMAKE_BUILD_TYPE=Release"
-             "-DARROW_PYTHON=ON"
+       (list "-DARROW_PYTHON=ON"
 
              ;; Install to PREFIX/lib (the default is
              ;; PREFIX/lib64).
diff --git a/gnu/packages/datamash.scm b/gnu/packages/datamash.scm
index 60c9ba795b..e839a1d985 100644
--- a/gnu/packages/datamash.scm
+++ b/gnu/packages/datamash.scm
@@ -28,7 +28,7 @@
 (define-public datamash
   (package
     (name "datamash")
-    (version "1.2")
+    (version "1.3")
     (source
      (origin
       (method url-fetch)
@@ -36,7 +36,7 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "15jrv3ly0vgvwwi2qjmhi39n7wrklwifdk961wwfaxyc5jr6zm78"))))
+        "19jpcv4ryvbz0476d6dgpxpbjkpmih4q84wj06nslls338bm5fzf"))))
     (native-inputs
      `(("which" ,which)                 ;for tests
        ("perl" ,perl)))                 ;for help2man
diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index a901af6f14..4501b5c745 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -75,7 +75,7 @@
              (zero? (system* "python" "tests/runtests.py")))))))
     ;; TODO: Install extras/django_bash_completion.
     (native-inputs
-     `(("tzdata", tzdata-for-tests)
+     `(("tzdata" ,tzdata-for-tests)
        ;; bcrypt and argon2-cffi are extra requirements not yet in guix
        ;;("python-argon2-cffi" ,python-argon2-cffi) ; >= 16.1.0
        ;;("python-bcrypt" ,python-bcrypt) ; not py-bcrypt!
@@ -199,7 +199,7 @@ useful tools for testing Django applications and projects.")
     (native-inputs
      `(("python-django" ,python-django)
        ("python-djangorestframework" ,python-djangorestframework)
-       ("python-django-crispy-forms", python-django-crispy-forms)
+       ("python-django-crispy-forms" ,python-django-crispy-forms)
        ("python-mock" ,python-mock)))
     (home-page "https://django-filter.readthedocs.io/en/latest/")
     (synopsis "Reusable Django application to filter querysets dynamically")
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 735b2af9b4..78f3eff423 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -59,7 +59,7 @@
 (define-public dnsmasq
   (package
     (name "dnsmasq")
-    (version "2.78")
+    (version "2.79")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -67,7 +67,7 @@
                     version ".tar.xz"))
               (sha256
                (base32
-                "0ar5h5v3kas2qx2wgy5iqin15gc4jhqrqs067xacgc3lii1rz549"))))
+                "07w6cw706yyahwvbvslhkrbjf2ynv567cgy9pal8bz8lrbsp9bbq"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -79,16 +79,15 @@
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
                           "CC=gcc"
                           "COPTS=\"-DHAVE_DBUS\"")
-       ;; No 'check' target.
-       #:tests? #f))
+       #:tests? #f))                    ; no ‘check’ target
     (home-page "http://www.thekelleys.org.uk/dnsmasq/doc.html")
     (synopsis "Small caching DNS proxy and DHCP/TFTP server")
     (description
-     "Dnsmasq is a lightweight DNS forwarder and DHCP server.  It is designed
-to provide DNS and optionally, DHCP, to a small network.  It can serve the
+     "Dnsmasq is a light-weight DNS forwarder and DHCP server.  It is designed
+to provide DNS and, optionally, DHCP to a small network.  It can serve the
 names of local machines which are not in the global DNS.  The DHCP server
 integrates with the DNS server and allows machines with DHCP-allocated
-addresses to appear in the DNS with names configured either in each host or in
+addresses to appear in the DNS with names configured either on each host or in
 a central configuration file.  Dnsmasq supports static and dynamic DHCP leases
 and BOOTP/TFTP for network booting of diskless machines.")
     ;; Source files only say GPL2 and GPL3 are allowed.
diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 7ec189820d..0bac25c4e6 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -108,7 +108,7 @@ Executable and Linkable Format (@dfn{ELF}).  This includes @command{ld},
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "http://nixos.org/releases/patchelf/patchelf-"
+                   "https://nixos.org/releases/patchelf/patchelf-"
                    version
                    "/patchelf-" version ".tar.bz2"))
              (sha256
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index b6fa661f0e..186c1ae9f5 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -3780,7 +3780,7 @@ programming language.")
                                         texlive-latex-seminar
                                         texlive-latex-hyperref
                                         texlive-tex-texinfo)))))
-    (home-page "http://ess.r-project.org/")
+    (home-page "https://ess.r-project.org/")
     (synopsis "Emacs mode for statistical analysis programs")
     (description "Emacs Speaks Statistics (ESS) is an add-on package for GNU
 Emacs.  It is designed to support editing of scripts and interaction with
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index b4b585d51d..9e65d5f46b 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1098,7 +1098,7 @@ emulation community.  It provides highly accurate emulation.")
        ("sdl" ,sdl2)
        ("udev" ,eudev)
        ("vulkan-icd-loader" ,vulkan-icd-loader)
-       ("wayland", wayland)
+       ("wayland" ,wayland)
        ("zlib" ,zlib)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index aee60bd697..c236d8cd67 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -699,12 +699,12 @@ language.")
       (arguments
        `(#:out-of-source? #t
          #:tests? #f ; no tests
+         #:build-type "Release"
          #:configure-flags
          (list "-DKICAD_STABLE_VERSION=ON"
                "-DKICAD_REPO_NAME=stable"
                ,(string-append "-DKICAD_BUILD_VERSION=4.0-"
                                (string-take commit 7))
-               "-DCMAKE_BUILD_TYPE=Release"
                "-DKICAD_SKIP_BOOST=ON"; Use our system's boost library.
                "-DKICAD_SCRIPTING=ON"
                "-DKICAD_SCRIPTING_MODULES=ON"
@@ -865,7 +865,7 @@ the 'showing the effect of'-style of operation.")
     (inputs
      `(("boost" ,boost)))
     (native-inputs
-     `(("python-2", python-2)
+     `(("python-2" ,python-2)
        ("python2-cheetah" ,python2-cheetah)))
     (home-page "http://libvolk.org/")
     (synopsis "Vector-Optimized Library of Kernels")
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index 653996538d..950a74f3c4 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2015 Daniel Pimentel <d4n1@member.fsf.org>
 ;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 ng0 <ng0@infotropique.org>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -256,7 +257,7 @@ Libraries with some extra bells and whistles.")
 (define-public enlightenment
   (package
     (name "enlightenment")
-    (version "0.22.1")
+    (version "0.22.2")
     (source (origin
               (method url-fetch)
               (uri
@@ -264,7 +265,7 @@ Libraries with some extra bells and whistles.")
                               name "/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1q57fz57d0b26z06m1wiq7c1sniwh885b0vs02mk4jgwva46nyr0"))))
+                "0b33w75s4w7xmz9cv8dyp8vy2gcffnrvjys20fhcpw26abw1wn2d"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--enable-mount-eeze")
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 0e65213c72..6522662c4e 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -236,7 +236,7 @@ All of this is accomplished without a centralized metadata server.")
     (inputs
      `(("curl" ,curl)
        ("glib" ,glib)
-       ("fuse", fuse)))
+       ("fuse" ,fuse)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (home-page "http://curlftpfs.sourceforge.net/")
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 192f84c36c..36c8353ee0 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -104,7 +104,7 @@ programmer devices.")
         "1g4032c81wkk37wvbg1dxcqq6mnd76y9x7f2crmzqi6z4q9jcxmj"))))
     (build-system gnu-build-system)
     (inputs
-     `(("libusb",libusb-0.1))) ; doesn't work with libusb-compat
+     `(("libusb" ,libusb-0.1))) ; doesn't work with libusb-compat
     (arguments
      '(#:phases
        (modify-phases %standard-phases
@@ -300,8 +300,8 @@ RK3036, RK3066, RK312X, RK3168, RK3188, RK3288, RK3368.")
                 "1y7gwg3lipyp2zcysm2vid1qg5nwin9bxbvgzs28lz2rya4fz6sq"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:configure-flags '("-DCMAKE_BUILD_TYPE=Release")
-       #:tests? #f; no tests
+     `(#:build-type "Release"
+       #:tests? #f                      ; no tests
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-invocations
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 60a820cce1..1e2ad3b864 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -358,7 +358,7 @@ of a the system to know what users are logged in, and where.")
        ("glib:bin" ,glib "bin")))
     (inputs
      `(("glib" ,glib)
-       ("bash-completion", bash-completion)
+       ("bash-completion" ,bash-completion)
        ("polkit" ,polkit)))
     (propagated-inputs
      `(("sqlite" ,sqlite)))
@@ -1135,7 +1135,7 @@ manually by a user.")
 (define-public perl-file-basedir
   (package
     (name "perl-file-basedir")
-    (version "0.07")
+    (version "0.08")
     (source
      (origin
        (method url-fetch)
@@ -1143,7 +1143,7 @@ manually by a user.")
                            "File-BaseDir-" version ".tar.gz"))
        (sha256
         (base32
-         "0aq8d4hsaxqibp36f773y6dfck7zd82v85sp8vhi6pjkg3pmf2hj"))))
+         "1qq5ag9zffx8zc5i9b4z03ar80pqj4drgk3vjdlyfapjwb9zqrf0"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
diff --git a/gnu/packages/fvwm.scm b/gnu/packages/fvwm.scm
index 5ff3d5e4f2..a4c31aefc6 100644
--- a/gnu/packages/fvwm.scm
+++ b/gnu/packages/fvwm.scm
@@ -45,6 +45,27 @@
                (base32
                 "0wzghjgy65pkn31rgl14fngizw7nbkzbxsfa670xmrndpmd4sr81"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-xsession
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (xsessions (string-append out "/share/xsessions")))
+               (mkdir-p xsessions)
+               (with-output-to-file
+                   (string-append xsessions "/fvwm2.desktop")
+                 (lambda _
+                   (format #t
+                           "[Desktop Entry]~@
+                    Name=FVWM~@
+                    Comment=FVWM~@
+                    Exec=~a/bin/fvwm~@
+                    TryExec=~@*~a/bin/fvwm~@
+                    Icon=~@
+                    Type=Application~%"
+                           out))))
+             #t)))))
     (native-inputs
      `(("perl" ,perl)
        ("pkg-config" ,pkg-config)
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 543edbe94c..c4e55d3ae1 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -236,7 +236,7 @@ settings to tweak as well.")
        ("libvorbis" ,libvorbis)
        ("ncurses" ,ncurses)
        ("sdl2" ,sdl2)
-       ("sdl2-image", sdl2-image)
+       ("sdl2-image" ,sdl2-image)
        ("sdl2-ttf" ,sdl2-ttf)
        ("sdl2-mixer" ,sdl2-mixer)))
     (home-page "http://en.cataclysmdda.com/")
@@ -2240,19 +2240,19 @@ Transport Tycoon Deluxe.")
               (substitute* "cmake_install.cmake"
                 (("EXPECTED_HASH SHA1=b587d83de508d0b104d14c599b76f8565900fce0")
                 "")))))))
-    (inputs `(("curl", curl)
-              ("fontconfig", fontconfig)
-              ("freetype", freetype)
-              ("jansson", jansson)
-              ("libpng", libpng)
-              ("libzip", libzip)
-              ("mesa", mesa)
-              ("openssl", openssl)
-              ("sdl2", sdl2)
-              ("speexdsp", speexdsp)
-              ("zlib", zlib)))
+    (inputs `(("curl" ,curl)
+              ("fontconfig" ,fontconfig)
+              ("freetype" ,freetype)
+              ("jansson" ,jansson)
+              ("libpng" ,libpng)
+              ("libzip" ,libzip)
+              ("mesa" ,mesa)
+              ("openssl" ,openssl)
+              ("sdl2" ,sdl2)
+              ("speexdsp" ,speexdsp)
+              ("zlib" ,zlib)))
     (native-inputs
-      `(("pkg-config", pkg-config)))
+      `(("pkg-config" ,pkg-config)))
     (home-page "https://github.com/OpenRCT2/OpenRCT2")
     (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
     (description "OpenRCT2 is a free software re-implementation of
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index c98f686d41..2483885c95 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -175,12 +175,12 @@ buffers.")
        ("libjpeg" ,libjpeg-8)
        ("atk" ,atk)
        ("gtk+" ,gtk+-2)
-       ("exif" ,libexif)                         ;optional, EXIF + XMP support
-       ("lcms" ,lcms)                            ;optional, color management
-       ("librsvg" ,librsvg)                      ;optional, SVG support
-       ("poppler", poppler)             ; optional, PDF support
-       ("python" ,python-2)                      ;optional, Python support
-       ("python2-pygtk" ,python2-pygtk)          ;optional, Python support
+       ("exif" ,libexif)                ; optional, EXIF + XMP support
+       ("lcms" ,lcms)                   ; optional, color management
+       ("librsvg" ,librsvg)             ; optional, SVG support
+       ("poppler" ,poppler)             ; optional, PDF support
+       ("python" ,python-2)             ; optional, Python support
+       ("python2-pygtk" ,python2-pygtk) ; optional, Python support
        ("gegl" ,gegl)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 74875738e6..45aeebceea 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -755,7 +755,7 @@ mixed vector/bitmap output.")
               ("libjpeg-turbo" ,libjpeg-turbo)
               ("mesa" ,mesa)
               ("openssl" ,openssl)))
-    (native-inputs `(("pkg-config", pkg-config)))
+    (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "https://www.virtualgl.org")
     (synopsis "Redirects 3D commands from an OpenGL application onto a 3D
 graphics card")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 6e8701f812..747b6f9315 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -273,7 +273,7 @@ features to enable users to create their discs easily and quickly.")
        ("gettext" ,gettext-minimal)
        ("itstool" ,itstool)
        ("intltool" ,intltool)
-       ("cmake", cmake)))
+       ("cmake" ,cmake)))
     (home-page "https://launchpad.net/deja-dup")
     (synopsis "Simple backup tool, for regular encrypted backups")
     (description
@@ -4422,7 +4422,7 @@ metadata in photo and video files of various formats.")
 (define-public shotwell
   (package
     (name "shotwell")
-    (version "0.27.4")
+    (version "0.28.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4430,7 +4430,7 @@ metadata in photo and video files of various formats.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0g2vphhpxrljpy9sryfsgaayix807i1i9plj9bay72dk0zphqab2"))))
+                "1d797nmlz9gs6ri0h65b76s40ss6ma6h6405xqx03lhg5xni3kmg"))))
     (build-system glib-or-gtk-build-system)
     (propagated-inputs
      `(("dconf" ,dconf)))
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index cac6f42918..627e42c816 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -449,7 +449,10 @@ security standards.")
         (mozilla-patch "icecat-bug-1442127-pt2.patch"    "da5792b70f30" "116k9qja5ir9b3laazasp43f5jx59qq72nknmq5bn5v1ixya9r4l")
         (mozilla-patch "icecat-CVE-2018-5125-pt8.patch"  "62b831df8269" "109pn0hqn7s27580glv4z7qv1pmjzii9szvf3wkn97k5wybrzgkx")
         (mozilla-patch "icecat-bug-1442504.patch"        "8954ce68a364" "0bl65zw82bwqg0mmcri94pxqq6ibff7y5rclkzapb081p6yvf73q")
-        (mozilla-patch "icecat-CVE-2018-5125-pt9.patch"  "8a16f439117c" "108iarql6z7h1r4rlzac6n6lrzs78x7kcdbfa0b5dbr5xc66jmgb")))
+        (mozilla-patch "icecat-CVE-2018-5125-pt9.patch"  "8a16f439117c" "108iarql6z7h1r4rlzac6n6lrzs78x7kcdbfa0b5dbr5xc66jmgb")
+        (mozilla-patch "icecat-bug-1426603.patch"        "ca0b92ecedee" "0dc3mdl4a3hrq4j384zjavf3splj6blv4masign710hk7svlgbhq")
+        (mozilla-patch "icecat-CVE-2018-5146.patch"      "494e5d5278ba" "1yb4lxjw499ppwhk31vz0vzl0cfqvj9d4jwqag7ayj53ybwsqgjr")
+        (mozilla-patch "icecat-CVE-2018-5147.patch"      "5cd5586a2f48" "10s774pwvj6xfk3kk6ivnhp2acc8x9sqq6na8z47nkhgwl2712i5")))
       (modules '((guix build utils)))
       (snippet
        '(begin
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 20a8c538be..e0ce1032f7 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2017 Sergei Trofimovich <slyfox@inbox.ru>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -639,3 +640,54 @@ termination.")
 per-goroutine.")
     (home-page "https://github.com/jtolds/gls")
     (license license:expat)))
+
+(define-public go-github-com-tj-docopt
+  (package
+    (name "go-github-com-tj-docopt")
+    (version "1.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tj/docopt")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "06h8hdg1mh3s78zqlr01g4si7k0f0g6pr7fj7lnvfg446hgc7080"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/tj/docopt"))
+    (synopsis "Go implementation of docopt")
+    (description
+     "This library allows the user to define a command-line interface from a
+program's help message rather than specifying it programatically with
+command-line parsers.")
+    (home-page "https://github.com/tj/docopt")
+    (license license:expat)))
+
+(define-public go-github-com-hashicorp-hcl
+  (let ((commit "23c074d0eceb2b8a5bfdbb271ab780cde70f05a8")
+        (revision "0"))
+    (package
+      (name "go-github-com-hashicorp-hcl")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/hashicorp/hcl")
+                       (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                  (base32
+                    "0db4lpqb5m130rmfy3s3gjjf4dxllypmyrzxv6ggqhkmwmc7w4mc"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:tests? #f
+         #:import-path "github.com/hashicorp/hcl"))
+      (synopsis "Go implementation of HashiCorp Configuration Language")
+      (description
+       "This package contains the main implementation of the @acronym{HCL,
+HashiCorp Configuration Language}.  HCL is designed to be a language for
+expressing configuration which is easy for both humans and machines to read.")
+      (home-page "https://github.com/hashicorp/hcl")
+      (license license:mpl2.0))))
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index 6a5e0e753f..38924e42b2 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -142,7 +142,7 @@ more.")
      `(("r-igraph" ,r-igraph)
        ("r-matrix" ,r-matrix)
        ("r-scatterplot3d" ,r-scatterplot3d)))
-    (home-page "http://www.r-project.org")
+    (home-page "https://www.r-project.org")
     (synopsis "Diffusion map")
     (description "This package implements the diffusion map method of data
 parametrization, including creation and visualization of diffusion maps,
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 61cd4ef5b4..58a6f7bc13 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;; Copyright © 2017, 2018 Ben Woodcroft <donttrustben@gmail.com>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -424,25 +424,24 @@ visual effects work for film.")
        (file-name (string-append name "-" version ".zip"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f ;; No test target available.
+     `(#:tests? #f ; no test target available
+       ;; Without this flag, 'rd' will be added to the name of the
+       ;; library binaries and break linking with other programs.
+       #:build-type "Release"
        #:configure-flags
        (list (string-append "-DCMAKE_INSTALL_RPATH="
                             (assoc-ref %outputs "out") "/lib:"
-                            (assoc-ref %outputs "out") "/lib64")
-             ;; We need to set this flag or otherwise 'rd' will be added
-             ;; to the name of the library binaries and break linking
-             ;; with other programs.
-             "-DCMAKE_BUILD_TYPE=Release")))
+                            (assoc-ref %outputs "out") "/lib64"))))
     (native-inputs
      `(("unzip" ,unzip)))
     (inputs
-     `(("giflib", giflib)
-       ("jasper", jasper)
-       ("librsvg", librsvg)
-       ("pth", pth)
-       ("qtbase", qtbase)
-       ("ffmpeg", ffmpeg)
-       ("mesa", mesa)))
+     `(("giflib" ,giflib)
+       ("jasper" ,jasper)
+       ("librsvg" ,librsvg)
+       ("pth" ,pth)
+       ("qtbase" ,qtbase)
+       ("ffmpeg" ,ffmpeg)
+       ("mesa" ,mesa)))
     (synopsis "High performance real-time graphics toolkit")
     (description
      "The OpenSceneGraph is a high performance 3D graphics toolkit
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index f6f8ef9b95..160c4c3ea9 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -665,18 +665,51 @@ library.")
 (define-public mcron
   (package
     (name "mcron")
-    (version "1.0.8")
+    (version "1.1")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://gnu/mcron/mcron-"
-                                 version ".tar.gz"))
-             (sha256
-              (base32
-               "0zparwgf01jgl1x53ik71ghabldq6zz18ha4dscps1i0qrzgap1b"))
-             (patches (search-patches "mcron-install.patch"))))
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/mcron/mcron-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1f547sqqfbp0k02sqk4ivwx8y9mx8l0rrx1c9rrj033av073h6xq"))))
     (build-system gnu-build-system)
-    (native-inputs `(("pkg-config" ,pkg-config)))
-    (inputs `(("ed" ,ed) ("which" ,which) ("guile" ,guile-2.0)))
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-before 'check 'set-timezone
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      ;; 'tests/schedule.sh' expects to be running in UTC+1.
+                      (let ((tzdata (assoc-ref inputs "tzdata")))
+                        (setenv "TZDIR"
+                                (string-append tzdata
+                                               "/share/zoneinfo"))
+                        (setenv "TZ" "UTC+1")
+                        #t)))
+                  (add-before 'check 'disable-schedule-test
+                    (lambda _
+                      ;; But!  As it turns out, that test additionally relies
+                      ;; on non-deterministic behavior; see
+                      ;; <https://lists.gnu.org/archive/html/bug-mcron/2018-03/msg00001.html>.
+                      (substitute* "tests/schedule.sh"
+                        (("mkdir cron") "exit 77\n"))
+                      #t))
+                  (add-after 'install 'wrap-programs
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; By default mcron doesn't have its own modules in the
+                      ;; search path, so the 'mcron' command fails to start.
+                      (let* ((output  (assoc-ref outputs "out"))
+                             (modules (string-append output
+                                                     "/share/guile/site/2.2"))
+                             (go      (string-append output
+                                                     "/lib/guile/2.2/site-ccache")))
+                        (wrap-program (string-append output "/bin/mcron")
+                          `("GUILE_LOAD_PATH" ":" prefix
+                            (,modules))
+                          `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,go)))
+                        #t))))))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("tzdata" ,tzdata-for-tests)))
+    (inputs `(("ed" ,ed) ("which" ,which) ("guile" ,guile-2.2)))
     (home-page "https://www.gnu.org/software/mcron/")
     (synopsis "Run jobs at scheduled times")
     (description
@@ -687,64 +720,8 @@ format is also supported.")
     (license license:gpl3+)))
 
 (define-public mcron2
-  ;; This is mthl's mcron development branch, not yet merged in mcron.
-  (let ((commit "31baff1a5187d8ddc89324cbe42dbeffc309c962"))
-    (package
-      (inherit mcron)
-      (name "mcron2")
-      (version (string-append (package-version mcron) "-0."
-                              (string-take commit 7)))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://notabug.org/mthl/mcron/")
-                      (commit commit)))
-                (sha256
-                 (base32
-                  "1h5wxy997hxi718hpx419c23q09939kbxrjbbq54lv0cgw1bb63z"))
-                (file-name (string-append name "-" version "-checkout"))))
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("pkg-config" ,pkg-config)
-         ("texinfo" ,texinfo)
-         ("help2man" ,help2man)))
-      (inputs
-       `(("guile-2.2" ,guile-2.2)
-         ,@(srfi-1:alist-delete "guile" (package-inputs mcron))))
-      (arguments
-       `(#:modules ((ice-9 match) (ice-9 ftw)
-                    ,@%gnu-build-system-modules)
-         ;; When building the targets in parallel, help2man tries to generate
-         ;; the manpage from ./cron --help before it is built, which fails.
-         #:parallel-build? #f
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'use-guile-2.2
-             (lambda _
-               (substitute* "configure.ac"
-                 (("PKG_CHECK_MODULES\\(\\[GUILE\\],.*$")
-                  "PKG_CHECK_MODULES([GUILE], [guile-2.2])\n")
-                 (("guile/site/2.0")
-                  "guile/site/2.2"))
-               #t))
-           (add-after 'install 'wrap-mcron
-             (lambda* (#:key outputs #:allow-other-keys)
-               ;; Wrap the 'mcron' command to refer to the right
-               ;; modules.
-               (let* ((out  (assoc-ref outputs "out"))
-                      (bin  (string-append out "/bin"))
-                      (site (string-append
-                             out "/share/guile/site")))
-                 (match (scandir site)
-                   (("." ".." version)
-                    (let ((modules (string-append site "/" version)))
-                      (wrap-program (string-append bin "/mcron")
-                        `("GUILE_LOAD_PATH" ":" prefix
-                          (,modules))
-                        `("GUILE_LOAD_COMPILED_PATH" ":" prefix
-                          (,modules)))
-                      #t))))))))))))
+  ;; This was mthl's mcron development branch, and it became mcron 1.1.
+  (deprecated-package "mcron2" mcron))
 
 (define-public guile-ics
   (package
@@ -1974,8 +1951,8 @@ is not available for Guile 2.0.")
     (license license:lgpl3+)))
 
 (define-public guile-git
-  (let ((revision "4")
-        (commit "951a32c56cc4d80f8836e3c7394783e69c1fcbad"))
+  (let ((revision "5")
+        (commit "2bb9fbbf93cf93496718efc85ad9394aefa21029"))
     (package
       (name "guile-git")
       (version (string-append "0.0-" revision "." (string-take commit 7)))
@@ -1985,7 +1962,7 @@ is not available for Guile 2.0.")
                 (uri (git-reference (url home-page) (commit commit)))
                 (sha256
                  (base32
-                  "0qri9x73ij6g40ijs4hyhj8knxw39ydgghiafq74dp99bc8hh0qc"))
+                  "0z3v0v89dyp35zx2h2gsq6v29lba3wbzabc5n2g4hx2fcb6q5qqy"))
                 (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index d3869efba0..b5f73ba69b 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -6398,6 +6398,19 @@ and also has a mode for converting bibliographic databases a YAML format
 suitable for inclusion in pandoc YAML metadata.")
     (license license:bsd-3)))
 
+(define-public ghc-pandoc-citeproc-with-pandoc-1
+  (let ((for-pandoc-1
+         (package-input-rewriting
+          `((,ghc-aeson        . ,ghc-aeson-for-pandoc-1)
+            (,ghc-yaml         . ,ghc-yaml-for-pandoc-1)
+            (,ghc-texmath      . ,ghc-texmath-for-pandoc-1)
+            (,ghc-pandoc-types . ,ghc-pandoc-types-for-pandoc-1)
+            (,ghc-hslua        . ,ghc-hslua-for-pandoc-1)
+            (,ghc-skylighting  . ,ghc-skylighting-for-pandoc-1)
+            (,ghc-doctemplates . ,ghc-doctemplates-for-pandoc-1)
+            (,ghc-pandoc       . ,ghc-pandoc-1)))))
+    (for-pandoc-1 ghc-pandoc-citeproc)))
+
 (define-public ghc-union-find
   (package
     (name "ghc-union-find")
@@ -7883,7 +7896,7 @@ files in Haskell.")
     (inputs
      `(("ghc-mtl" ,ghc-mtl)
        ("ghc-network" ,ghc-network)
-       ("ghc-directory", ghc-directory)
+       ("ghc-directory" ,ghc-directory)
        ("ghc-old-locale" ,ghc-old-locale)))
     (native-inputs
      `(("ghc-hunit" ,ghc-hunit)))
@@ -8460,7 +8473,7 @@ that are much lighter weight than IO-threads.")
     (native-inputs
      `(("ghc-hunit" ,ghc-hunit)
        ("ghc-quickcheck" ,ghc-quickcheck)
-       ("ghc-ieee754", ghc-ieee754)
+       ("ghc-ieee754" ,ghc-ieee754)
        ("ghc-test-framework" ,ghc-test-framework)
        ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
        ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
@@ -8584,7 +8597,7 @@ statically known size.")
     (build-system haskell-build-system)
     (inputs `(("ghc-tuple-th" ,ghc-tuple-th)
               ("ghc-contravariant" ,ghc-contravariant)
-              ("ghc-base-prelude",ghc-base-prelude)))
+              ("ghc-base-prelude" ,ghc-base-prelude)))
     (home-page "https://github.com/nikita-volkov/contravariant-extras")
     (synopsis "Extras for the @code{ghc-contravariant} Haskell package")
     (description "This Haskell package provides extras for the
@@ -8899,7 +8912,7 @@ and are often as efficient as hand-written folds.")
               ("ghc-vector-algorithms" ,ghc-vector-algorithms)
               ("ghc-split" ,ghc-split)))
     (native-inputs `(("ghc-hspec" ,ghc-hspec)
-                     ("ghc-hunit",ghc-hunit)
+                     ("ghc-hunit" ,ghc-hunit)
                      ("ghc-quickcheck" ,ghc-quickcheck)
                      ("ghc-semigroups" ,ghc-semigroups)
                      ("ghc-foldl" ,ghc-foldl)))
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 12c4465253..2f9dd8b32a 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -626,7 +626,7 @@ compose, and analyze GIF images.")
 (define-public imlib2
   (package
     (name "imlib2")
-    (version "1.5.0")
+    (version "1.5.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -634,7 +634,7 @@ compose, and analyze GIF images.")
                     "/imlib2-" version ".tar.bz2"))
               (sha256
                (base32
-                "0kg28b5wp886hiy12v7abdybrvlymb7g3nvg0ysn2y8h883s5w8m"))))
+                "1bms2iwmvnvpz5jqq3r52glarqkafif47zbh1ykz8hw85d2mfkps"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkgconfig" ,pkg-config)))
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index d798833742..d3cc656f11 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -47,14 +47,14 @@
     ;; The 7 release series has an incompatible API, while the 6 series is still
     ;; maintained. Don't update to 7 until we've made sure that the ImageMagick
     ;; users are ready for the 7-series API.
-    (version "6.9.9-37")
+    (version "6.9.9-39")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://imagemagick/ImageMagick-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1hmfw0jcpc3s3gz9zrzjy9amyrfz6gzzjdsyaw3xw994aq9qf4lq"))))
+               "0cgrvfg8722cdv2y0hw2f7xhzdfmfiqc1348l71ki38dg4b0q4sn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch")
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index e349b1cb6b..d13cb35365 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -101,7 +101,7 @@
        ("qttools" ,qttools)))
     (inputs
      `(("qca" ,qca)
-       ("qtbase", qtbase)
+       ("qtbase" ,qtbase)
        ("qtscript" ,qtscript)
        ("snorenotify" ,snorenotify)
        ("zlib" ,zlib)))
@@ -156,14 +156,14 @@ SILC and ICB protocols via plugins.")
 (define-public weechat
   (package
     (name "weechat")
-    (version "2.0.1")
+    (version "2.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://weechat.org/files/src/weechat-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1l854dramvn9vfba7jpazkjwm4k4i5pshq58vjv6z2mxmcp5hhv9"))
+                "0f7d2vdbxc5kgjl7lkamnbxvidgxwa8f9j3nr9fd4gr4z0gzi86d"))
               (patches (search-patches "weechat-python.patch"))))
     (build-system cmake-build-system)
     (native-inputs
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 246860e3f3..b763a03476 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -157,7 +157,7 @@ common build settings used in software produced by the KDE community.")
      ;; TODO: Add building the super experimental QML support
      `(("extra-cmake-modules" ,extra-cmake-modules)
        ("pkg-config" ,pkg-config)
-       ("qttools", qttools)))
+       ("qttools" ,qttools)))
     (inputs
      `(("qtbase" ,qtbase)))
     (arguments
@@ -1186,7 +1186,7 @@ lower level classes for interaction with the X Windowing System.")
        ("pkg-config" ,pkg-config)))
     (propagated-inputs
      ;; Headers contain #include <ModemManager/ModemManager.h>
-     `(("modem-manager", modem-manager)))
+     `(("modem-manager" ,modem-manager)))
     (inputs
      `(("qtbase" ,qtbase)))
     (arguments
@@ -1284,7 +1284,7 @@ which are used in DBus communication.")
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
     (inputs
-     `(("libdmtx", libdmtx)
+     `(("libdmtx" ,libdmtx)
        ("qrencode" ,qrencode)
        ("qtbase" ,qtbase))) ;; TODO: rethink: nix propagates this
     (home-page "https://api.kde.org/frameworks/prison/html/index.html")
@@ -2209,7 +2209,7 @@ their settings.")
        ("kwidgetsaddons" ,kwidgetsaddons)
        ("kwindowsystem" ,kwindowsystem)
        ("kxmlgui" ,kxmlgui)
-       ("libepoxy", libepoxy)
+       ("libepoxy" ,libepoxy)
        ("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)
        ("solid" ,solid)))
@@ -3003,7 +3003,7 @@ types or handled by application specific code.")
        ("libgit2" ,libgit2)
        ("perl" ,perl)
        ("qtbase" ,qtbase)
-       ("qtdeclarative", qtdeclarative)
+       ("qtdeclarative" ,qtdeclarative)
        ("qtscript" ,qtscript)
        ("qtxmlpatterns" ,qtxmlpatterns)
        ("solid" ,solid)
@@ -3071,7 +3071,7 @@ library.")
        ("kwidgetsaddons" ,kwidgetsaddons)
        ("kwindowsystem" ,kwindowsystem)
        ("qtbase" ,qtbase)
-       ("qtspeech", qtspeech)))
+       ("qtspeech" ,qtspeech)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -3150,7 +3150,7 @@ the passwords on KDE work spaces.")
      `(("extra-cmake-modules" ,extra-cmake-modules)))
     (inputs
      `(("attica" ,attica)
-       ("kauth", kauth)
+       ("kauth" ,kauth)
        ("kcodecs" ,kcodecs)
        ("kcoreaddons" ,kcoreaddons)
        ("kglobalaccel" ,kglobalaccel)
@@ -3395,7 +3395,7 @@ workspace.")
      `(("dbus" ,dbus)
        ("docbook-xml" ,docbook-xml-4.4) ; optional
        ("extra-cmake-modules" ,extra-cmake-modules)
-       ("perl", perl)
+       ("perl" ,perl)
        ("perl-uri" ,perl-uri)
        ("pkg-config" ,pkg-config)
        ("shared-mime-info" ,shared-mime-info)
@@ -3421,7 +3421,7 @@ workspace.")
        ("knotifications" ,knotifications)
        ("kparts" ,kparts)
        ("ktextwidgets" ,ktextwidgets)
-       ("kunitconversion", kunitconversion)
+       ("kunitconversion" ,kunitconversion)
        ("kwindowsystem" ,kwindowsystem)
        ("qtbase" ,qtbase)))
     (inputs
@@ -3434,9 +3434,9 @@ workspace.")
        ("kservice" ,kservice)
        ("kwidgetsaddons" ,kwidgetsaddons)
        ("kxmlgui" ,kxmlgui)
-       ("libsm", libsm)
-       ("networkmanager-qt", networkmanager-qt)
-       ("openssl", openssl)
+       ("libsm" ,libsm)
+       ("networkmanager-qt" ,networkmanager-qt)
+       ("openssl" ,openssl)
        ("qtsvg" ,qtsvg)
        ("qttools" ,qttools)
        ("qtx11extras" ,qtx11extras)))
@@ -3507,7 +3507,7 @@ http://community.kde.org/Frameworks/Porting_Notes should help with this.")
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
-       ("perl", perl)))
+       ("perl" ,perl)))
     (inputs
      `(("giflib" ,giflib)
        ("gperf" ,gperf)
@@ -3521,14 +3521,14 @@ http://community.kde.org/Frameworks/Porting_Notes should help with this.")
        ("knotifications" ,knotifications)
        ("kparts" ,kparts)
        ("ktextwidgets" ,ktextwidgets)
-       ("kwallet", kwallet)
+       ("kwallet" ,kwallet)
        ("kwidgetsaddons" ,kwidgetsaddons)
        ("kwindowsystem" ,kwindowsystem)
        ("kxmlgui" ,kxmlgui)
-       ("libjpeg", libjpeg)
-       ("libpng", libpng)
-       ("openssl", openssl)
-       ("phonon", phonon)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("openssl" ,openssl)
+       ("phonon" ,phonon)
        ("qtbase" ,qtbase)
        ("qtx11extras" ,qtx11extras)
        ("sonnet" ,sonnet)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 6f450572c0..0c16f569da 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -383,8 +383,8 @@ It has been modified to remove all non-free binary blobs.")
 ;; supports qemu "virt" machine and possibly a large number of ARM boards.
 ;; See : https://wiki.debian.org/DebianKernel/ARMMP.
 
-(define %linux-libre-version "4.15.10")
-(define %linux-libre-hash "10fp8jmy0fxq8l01m1nnagpq1hznl9jmhcwknk8izjmdcb5snq6c")
+(define %linux-libre-version "4.15.11")
+(define %linux-libre-hash "0nrsmw7x5nsc3906dfvfakkibv8pv09r1sf5ckzbkcbkwpyq62h8")
 
 (define-public linux-libre
   (make-linux-libre %linux-libre-version
@@ -392,8 +392,8 @@ It has been modified to remove all non-free binary blobs.")
                     %linux-compatible-systems
                     #:configuration-file kernel-config))
 
-(define %linux-libre-4.14-version "4.14.27")
-(define %linux-libre-4.14-hash "0mgkka9niyd0lj4qliy4v7jjh9lg1a5jwlv60yw7z0s4k7ajyyrp")
+(define %linux-libre-4.14-version "4.14.28")
+(define %linux-libre-4.14-hash "0xg3zsm1yjsvxir8sz7zliz8gcc8d45xh23qyiszl75cfqjl36l3")
 
 (define-public linux-libre-4.14
   (make-linux-libre %linux-libre-4.14-version
@@ -402,14 +402,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.87"
-                    "1p8phvmxp04npzqzqcfmv8k9l5l65s7vpjcakdm0fxfkzvnswsp6"
+  (make-linux-libre "4.9.88"
+                    "0qlhd8xw3g00i7krpfndkwxzjszk067h26qsxxsszvxyx2s6gp4x"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.4
-  (make-linux-libre "4.4.121"
-                    "1d7djrhiib0ds9ssjkali6b5w6rzap4zgj5hf9jq1jmqpp54jkm4"
+  (make-linux-libre "4.4.122"
+                    "1ayilv7474vsif3jpb723jbcy4kymv1fpdr96c1g743bad1wkqqq"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
@@ -1776,9 +1776,9 @@ file system is as easy as logging into the server with an SSH client.")
         (base32
          "0v4si1ri6lhnq9q87gkx7fsh6lv6xz4bynknwndqncpvfp5cy1jg"))))
     (build-system gnu-build-system)
-    (inputs `(("fuse", fuse)
-              ("libarchive", libarchive)))
-    (native-inputs `(("pkg-config", pkg-config)))
+    (inputs `(("fuse" ,fuse)
+              ("libarchive" ,libarchive)))
+    (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "http://www.cybernoia.de/software/archivemount")
     (synopsis "Tool for mounting archive files with FUSE")
     (description "archivemount is a FUSE-based file system for Unix variants,
@@ -2033,7 +2033,7 @@ from the module-init-tools project.")
        ("docbook-xml" ,docbook-xml-4.2)
        ("docbook-xsl" ,docbook-xsl)
        ("libxml2" ,libxml2)             ;for $XML_CATALOG_FILES
-       ("xsltproc", libxslt)))
+       ("xsltproc" ,libxslt)))
     (inputs
      ;; When linked against libblkid, eudev can populate /dev/disk/by-label
      ;; and similar; it also installs the '60-persistent-storage.rules' file,
@@ -2542,14 +2542,14 @@ thanks to the use of namespaces.")
 (define-public hdparm
   (package
     (name "hdparm")
-    (version "9.54")
+    (version "9.55")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/" name "/" name "/"
                                   name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0ghnhdj7wfw6acfyhdawpfa5n9kvkvzgi1fw6i7sghgbjx5nhyjd"))))
+                "1ivdvrzimaayiq03by8mcq0mhmdljndj06h012zkdpw34irnpixm"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags (let ((out (assoc-ref %outputs "out")))
@@ -3403,8 +3403,8 @@ The package provides additional NTFS tools.")
        ;; Upstream uses the "ninja" build system and encourage distros
        ;; to do the same for consistency. They also recommend using the
        ;; "Release" build type.
-       #:configure-flags (list "-GNinja"
-                               "-DCMAKE_BUILD_TYPE=Release")
+       #:build-type "Release"
+       #:configure-flags (list "-GNinja")
        #:phases
        (modify-phases %standard-phases
          (replace 'build
@@ -3704,7 +3704,7 @@ are exceeded.")
     (inputs
      `(("acl" ,acl)
        ("libuuid" ,util-linux)
-       ("lzo", lzo)
+       ("lzo" ,lzo)
        ("zlib" ,zlib)))
     (build-system gnu-build-system)
     (arguments
@@ -4134,13 +4134,13 @@ used by nftables.")
         (base32
          "1i1gfy8l7qyhc5vlrpp63s0n5kybmc9pi4dywiq8rmkhrrnddsla"))))
     (build-system gnu-build-system)
-    (inputs `(("bison", bison)
-              ("flex", flex)
-              ("gmp", gmp)
-              ("libmnl", libmnl)
-              ("libnftnl", libnftnl)
-              ("readline", readline)))
-    (native-inputs `(("pkg-config", pkg-config)))
+    (inputs `(("bison" ,bison)
+              ("flex" ,flex)
+              ("gmp" ,gmp)
+              ("libmnl" ,libmnl)
+              ("libnftnl" ,libnftnl)
+              ("readline" ,readline)))
+    (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "http://www.nftables.org")
     (synopsis "Userspace utility for Linux packet filtering")
     (description "nftables is the project that aims to replace the existing
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index 0d4bf12817..69180abeac 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -354,12 +354,12 @@ secure session between the peers.")
     (inputs
      `(("gobject-introspection" ,gobject-introspection)
        ("glib" ,glib)
-       ("pango", pango)
-       ("gtk", gtk+-2)
+       ("pango" ,pango)
+       ("gtk" ,gtk+-2)
        ("lua" ,lua)
        ("cairo" ,cairo)
        ("libffi" ,libffi)
-       ("xorg-server", xorg-server)))
+       ("xorg-server" ,xorg-server)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("dbus" ,dbus)))                          ;tests use 'dbus-run-session'
@@ -397,7 +397,7 @@ Notable examples are GTK+, GStreamer and Webkit.")
                              (string-append out "/share/lua/" lua-version))
                #t))))
        #:test-target "test"))
-    (inputs `(("lua", lua)))
+    (inputs `(("lua" ,lua)))
     (synopsis "Pattern-matching library for Lua")
     (description
      "LPeg is a pattern-matching library for Lua, based on Parsing Expression
@@ -436,7 +436,7 @@ Grammars (PEGs).")
        #:phases
        (modify-phases %standard-phases
          (delete 'configure))))
-    (inputs `(("lua", lua)))
+    (inputs `(("lua" ,lua)))
     (home-page "https://bitop.luajit.org/index.html")
     (synopsis "Bitwise operations on numbers for Lua")
     (description
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index b579914e73..7557f1365f 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1814,7 +1814,7 @@ in Perl.")
              (patch-shebang "mb2md" (list (string-append perl "/bin")))
              (chmod "mb2md" #o555))
            #t))))
-    (native-inputs `(("gzip", gzip)))
+    (native-inputs `(("gzip" ,gzip)))
     (inputs `(("perl" ,perl)
               ("perl-timedate" ,perl-timedate)))
     (home-page "http://batleth.sapienti-sat.org/projects/mb2md/")
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 543aa919c3..a57491aeb4 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -110,7 +110,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
           ("gcc" ,(package (inherit gcc)
                     (outputs '("out")) ; all in one so libgcc_s is easily found
                     (inputs
-                     `(("libc",(glibc-for-bootstrap))
+                     `(("libc" ,(glibc-for-bootstrap))
                        ("libc:static" ,(glibc-for-bootstrap) "static")
                        ,@(package-inputs gcc)))))
           ,@(fold alist-delete (%final-inputs) '("libc" "gcc")))))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 5e7d7b2bd3..beafc22750 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -53,6 +53,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system ocaml)
   #:use-module (guix build-system r)
+  #:use-module (guix build-system ruby)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages bison)
@@ -97,6 +98,7 @@
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages ruby)
   #:use-module (gnu packages tbb)
   #:use-module (gnu packages scheme)
   #:use-module (gnu packages shells)
@@ -1947,6 +1949,38 @@ special functions.  It uses Matlab function names where appropriate to simplify
 porting.")
     (license license:gpl3+)))
 
+(define-public ruby-asciimath
+  (package
+    (name "ruby-asciimath")
+    (version "1.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "asciimath" version))
+       (sha256
+        (base32
+         "1d80kiph5mc78zps7si1hv48kv4k12mzaq8jk5kb3pqpjdr72qmc"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         ;; Apply this patch
+         ;; https://github.com/asciidoctor/asciimath/commit/1c06fdc8086077f4785479f78b0823a4a72d7948
+         (add-after 'unpack 'patch-remove-spurious-backslashes
+           (lambda _
+             (substitute* "spec/parser_spec.rb"
+               (("\\\\\"")
+                "\"")))))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec)))
+    (synopsis "AsciiMath parsing and conversion library")
+    (description
+     "A pure Ruby AsciiMath parsing and conversion library.  AsciiMath is an
+easy-to-write markup language for mathematics.")
+    (home-page "https://github.com/asciidoctor/asciimath")
+    (license license:expat)))
+
 (define-public superlu
   (package
     (name "superlu")
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 6df889e315..6fe7ff434a 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -144,9 +144,9 @@ keys, no previous conversation is compromised.")
      #:configure-flags '("-DBUILD_SHARED_LIBS=on" "-DBUILD_TESTING=1")))
   (build-system cmake-build-system)
   (inputs `( ;; Required for tests:
-            ("check", check)
-            ("openssl", openssl)))
-  (native-inputs `(("pkg-config", pkg-config)))
+            ("check" ,check)
+            ("openssl" ,openssl)))
+  (native-inputs `(("pkg-config" ,pkg-config)))
   (home-page "https://github.com/WhisperSystems/libsignal-protocol-c")
   (synopsis "Implementation of a ratcheting forward secrecy protocol")
   (description "libsignal-protocol-c is an implementation of a ratcheting
@@ -614,8 +614,8 @@ end-to-end encryption support; XML console.")
              (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
       (inputs
        `(("libgee" ,libgee)
-         ("libsignal-protocol-c", libsignal-protocol-c)
-         ("libgcrypt", libgcrypt)
+         ("libsignal-protocol-c" ,libsignal-protocol-c)
+         ("libgcrypt" ,libgcrypt)
          ("libsoup" ,libsoup)
          ("sqlite" ,sqlite)
          ("gpgme" ,gpgme)
@@ -624,7 +624,7 @@ end-to-end encryption support; XML console.")
          ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
       (native-inputs
        `(("pkg-config" ,pkg-config)
-         ("libsignal-protocol-c-source", (package-source libsignal-protocol-c))
+         ("libsignal-protocol-c-source" ,(package-source libsignal-protocol-c))
          ("glib" ,glib "bin")
          ("vala" ,vala)
          ("gettext" ,gettext-minimal)))
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index fee9575bb9..bbfa4957fc 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -28,6 +28,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages django)
   #:use-module (gnu packages gd)
@@ -264,3 +265,33 @@ and persisting them to disk using the Whisper time-series library.")
 two things: store numeric time-series data, and render graphs of this data on
 demand.")
     (license license:asl2.0)))
+
+(define-public python-prometheus-client
+  (package
+    (name "python-prometheus-client")
+    (version "0.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "prometheus_client" version))
+       (sha256
+        (base32
+         "164qzzg8q8awqk0angcm87p2sjiibaj1wgjz0xk6j0klvqi5q2mz"))))
+    (build-system python-build-system)
+    (arguments
+     '(;; No included tests.
+       #:tests? #f))
+    (home-page
+     "https://github.com/prometheus/client_python")
+    (synopsis "Python client for the Prometheus monitoring system")
+    (description
+     "The @code{prometheus_client} package supports exposing metrics from
+software written in Python, so that they can be scraped by a Prometheus
+service.
+
+Metrics can be exposed through a standalone web server, or through Twisted,
+WSGI and the node exporter textfile collector.")
+    (license license:asl2.0)))
+
+(define-public python2-prometheus-client
+  (package-with-python2 python-prometheus-client))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 7eb2896963..0899999576 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -401,7 +401,7 @@ many input formats and provides a customisable Vi-style user interface.")
                             "Clarinet in Bb.denemo"))
              #t)))))
     (native-inputs
-     `(("glib:bin", glib "bin")   ; for gtester
+     `(("glib:bin" ,glib "bin")   ; for gtester
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("alsa-lib" ,alsa-lib)
@@ -419,7 +419,7 @@ many input formats and provides a customisable Vi-style user interface.")
        ("libsndfile" ,libsndfile)
        ("libtool" ,libtool)
        ("libxml2" ,libxml2)
-       ("lilypond", lilypond)
+       ("lilypond" ,lilypond)
        ("portaudio" ,portaudio)
        ("portmidi" ,portmidi)
        ("rubberband" ,rubberband)))
@@ -1756,10 +1756,10 @@ projects.")
               (patches (list (search-patch "portmidi-modular-build.patch")))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f ; tests cannot be linked
+     `(#:tests? #f                      ; tests cannot be linked
+       #:build-type "Release"           ; needed to have PMALSA set
        #:configure-flags
        (list "-DPORTMIDI_ENABLE_JAVA=Off"
-             "-DCMAKE_BUILD_TYPE=Release"    ; needed to have PMALSA set
              "-DPORTMIDI_ENABLE_TEST=Off"))) ; tests fail linking
     (inputs
      `(("alsa-lib" ,alsa-lib)))
@@ -2520,7 +2520,7 @@ websites such as Libre.fm.")
     (build-system python-build-system)
     (propagated-inputs
      `(("python-requests" ,python-requests)
-       ("eyed3", eyed3)
+       ("eyed3" ,eyed3)
        ("python-beautifulsoup4" ,python-beautifulsoup4)
        ("youtube-dl" ,youtube-dl)))
     (arguments
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index c962a8d821..fa2ff1057e 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -1227,11 +1227,11 @@ gone wild and are suddenly taking up your bandwidth.")
                        (assoc-ref %build-inputs "ncurses") "/lib")
         (string-append "--with-tlslib=GnuTLS"))))
     (build-system gnu-build-system)
-    (inputs `(("gnutls", gnutls)
-              ("libxml2", libxml2)
-              ("ncurses", ncurses)
-              ("zlib", zlib)))
-    (native-inputs `(("pkg-config", pkg-config)))
+    (inputs `(("gnutls" ,gnutls)
+              ("libxml2" ,libxml2)
+              ("ncurses" ,ncurses)
+              ("zlib" ,zlib)))
+    (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "https://github.com/nzbget/nzbget")
     (synopsis "Usenet binary file downloader")
     (description
@@ -1457,11 +1457,11 @@ does not use SSH and requires a pre-shared symmetric key.")
               (patches
                (search-patches "quagga-reproducible-build.patch"))))
     (build-system gnu-build-system)
-    (native-inputs `(("pkg-config",pkg-config)
-                     ("perl",perl)
-                     ("dejagnu",dejagnu)))
-    (inputs `(("readline",readline)
-              ("c-ares",c-ares)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("perl" ,perl)
+                     ("dejagnu" ,dejagnu)))
+    (inputs `(("readline" ,readline)
+              ("c-ares" ,c-ares)))
     (synopsis "Routing Software Suite")
     (description "Quagga is a routing software suite, providing implementations
 of OSPFv2, OSPFv3, RIP v1 and v2, RIPng and BGP-4 for Unix platforms.
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 25ef8ccad0..5f67aa62aa 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3759,7 +3759,7 @@ sensitive completion, colors, and more.")
          (delete 'configure))))
     (inputs
      `(("topkg" ,ocaml-topkg)
-       ("opam", opam)))
+       ("opam" ,opam)))
     (synopsis "Various signed and unsigned integer types for OCaml")
     (description "The ocaml-integers library provides a number of 8-, 16-, 32-
 and 64-bit signed and unsigned integer types, together with aliases such as
@@ -3793,7 +3793,7 @@ long and size_t whose sizes depend on the host platform.")
       ("integers" ,ocaml-integers)
       ("lwt" ,ocaml-lwt)
       ("topkg" ,ocaml-topkg)
-      ("opam", opam)))
+      ("opam" ,opam)))
    (synopsis "Library for binding to C libraries using pure OCaml")
    (description "Ctypes is a library for binding to C libraries using pure
 OCaml.  The primary aim is to make writing C extensions as straightforward as
@@ -3826,7 +3826,7 @@ without writing or generating any C!")
         (delete 'configure))))
    (inputs
     `(("topkg" ,ocaml-topkg)
-      ("opam", opam)))
+      ("opam" ,opam)))
    (native-inputs
     `(("astring" ,ocaml-astring)))
    (synopsis "OCamlbuild plugin for C stubs")
diff --git a/gnu/packages/onc-rpc.scm b/gnu/packages/onc-rpc.scm
index 72f2dd6409..64887212d3 100644
--- a/gnu/packages/onc-rpc.scm
+++ b/gnu/packages/onc-rpc.scm
@@ -33,16 +33,15 @@
 (define-public libtirpc
   (package
     (name "libtirpc")
-    (version "1.0.2")
+    (version "1.0.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/libtirpc/libtirpc/"
                                   version "/libtirpc-"
                                   version ".tar.bz2"))
-              (patches (search-patches "libtirpc-missing-headers.patch"))
               (sha256
                (base32
-                "1xchbxy0xql7yl7z4n1icj8r7dmly46i22fvm00vdjq64zlmqg3j"))))
+                "0ppxl3k3nsz0qdakq844i2kj4fvh9h937lhx26bgmpmxq67sghw6"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -59,7 +58,8 @@
 
              ;; Remove the dangling symlinks since it breaks the
              ;; 'patch-source-shebangs' file tree traversal.
-             (delete-file "INSTALL"))))))
+             (delete-file "INSTALL")
+             #t)))))
     (inputs `(("mit-krb5" ,mit-krb5)))
     (home-page "https://sourceforge.net/projects/libtirpc/")
     (synopsis "Transport-independent Sun/ONC RPC implementation")
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm
index f0147bab59..5875562aa1 100644
--- a/gnu/packages/openstack.scm
+++ b/gnu/packages/openstack.scm
@@ -452,14 +452,14 @@ pipeline and used by various modules such as logging.")
 (define-public python-oslo.i18n
   (package
     (name "python-oslo.i18n")
-    (version "3.19.0")
+    (version "3.20.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "oslo.i18n" version))
         (sha256
           (base32
-           "18lbfq55cqrbmwm5p6vci9mkjfzr0zwz54ax3ysa463wba5m84cp"))))
+           "0kjcdw4bk3mi4vqmqwhhq053kxbbbj05si6nwxd1pzx33z067ky3"))))
     (build-system python-build-system)
     (propagated-inputs
       `(("python-babel" ,python-babel)
@@ -646,14 +646,14 @@ from the OpenStack project.")
 (define-public python-oslotest
   (package
     (name "python-oslotest")
-    (version "3.2.0")
+    (version "3.3.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "oslotest" version))
         (sha256
           (base32
-            "1xay6wjxzqm4bg87fahqas84dhvhgf1gghzldkcczsfx897mqdkh"))))
+            "006i73w8kbc9s0av2v5mbni6mnkb91c2nq17wa0lz7bwk5zss992"))))
     (build-system python-build-system)
     (propagated-inputs
       `(("python-fixtures" ,python-fixtures)
@@ -680,14 +680,14 @@ and better support for mocking results.")
 (define-public python-oslo.utils
   (package
     (name "python-oslo.utils")
-    (version "3.35.0")
+    (version "3.36.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "oslo.utils" version))
         (sha256
           (base32
-           "1ai9yyasyh1563khsri6ryk6iqdprmyiashg377m9h4nmv700ybx"))))
+           "0zvm31qdvqywxppqdjwbxxsqaga3dg4slpvbbmqqm9ig4n78mhay"))))
     (build-system python-build-system)
     (propagated-inputs
       `(("python-debtcollector" ,python-debtcollector)
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 46b6e795ab..8810392530 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -458,14 +458,14 @@ winner of the 2015 Password Hashing Competition.")
 (define-public python-bcrypt
   (package
     (name "python-bcrypt")
-    (version "3.1.0")
+    (version "3.1.4")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "bcrypt" version))
         (sha256
          (base32
-          "1giy0dvd8gvq6flxh44np1v2nqwsji5qsnrz038mgwzgp7c20j75"))))
+          "13cyrnqwkhc70rs6dg65z4yrrr3dc42fhk11804fqmci9hvimvb7"))))
         (build-system python-build-system)
     (native-inputs
      `(("python-pycparser" ,python-pycparser)
diff --git a/gnu/packages/patches/bash-completion-directories.patch b/gnu/packages/patches/bash-completion-directories.patch
index 351a8e02fb..164096f16c 100644
--- a/gnu/packages/patches/bash-completion-directories.patch
+++ b/gnu/packages/patches/bash-completion-directories.patch
@@ -8,9 +8,9 @@ directory, but also in the user's profile and in the system profile.
 This is what this patch does.
 
 
---- a/bash_completion	2016-08-03 10:23:02.356782287 +0200
-+++ b/bash_completion	2016-08-03 10:27:50.120140403 +0200
-@@ -1960,7 +1960,13 @@
+--- a/bash_completion
++++ b/bash_completion
+@@ -2016,7 +2016,13 @@ complete -F _minimal ''
  
  __load_completion()
  {
@@ -22,6 +22,6 @@ This is what this patch does.
 +        "/run/current-system/profile/etc/bash_completion.d/$base"
 +        ${BASH_COMPLETION_USER_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/bash-completion}/completions )
 +
-     local OIFS=$IFS IFS=: dir cmd="$1" compfile
+     local OIFS=$IFS IFS=: dir cmd="${1##*/}" compfile
      for dir in ${XDG_DATA_DIRS:-/usr/local/share:/usr/share}; do
          dirs+=( $dir/bash-completion/completions )
diff --git a/gnu/packages/patches/java-simple-xml-fix-tests.patch b/gnu/packages/patches/java-simple-xml-fix-tests.patch
new file mode 100644
index 0000000000..6270b87009
--- /dev/null
+++ b/gnu/packages/patches/java-simple-xml-fix-tests.patch
@@ -0,0 +1,37 @@
+From b3b7a305f1278ec414500bf96c4c7a7f634c941b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jens=20Thee=C3=9F?= <theess@subshell.com>
+Date: Thu, 15 Sep 2016 13:08:26 +0200
+Subject: [PATCH] Dictionary uses stable order. This fixes unit tests.
+
+This is upstream pull request #15:
+https://github.com/ngallagher/simplexml/pull/15
+This software is unmaintained, this pull request will no get merged.
+The patch is modified, to match the directory layout of the tarball.
+
+---
+ src/main/java/org/simpleframework/xml/util/Dictionary.java | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/main/java/org/simpleframework/xml/util/Dictionary.java b/src/main/java/org/simpleframework/xml/util/Dictionary.java
+index 077d2514..c7327426 100644
+--- a/src/org/simpleframework/xml/util/Dictionary.java
++++ b/src/org/simpleframework/xml/util/Dictionary.java
+@@ -19,8 +19,8 @@
+ package org.simpleframework.xml.util;
+ 
+ import java.util.AbstractSet;
+-import java.util.HashMap;
+ import java.util.Iterator;
++import java.util.LinkedHashMap;
+ 
+ /**
+  * The <code>Dictionary</code> object represents a mapped set of entry
+@@ -134,7 +134,7 @@ public T remove(String name) {
+     *
+     * @see org.simpleframework.xml.util.Entry
+     */
+-   private static class Table<T> extends HashMap<String, T> {
++   private static class Table<T> extends LinkedHashMap<String, T> {
+       
+       /**
+        * Constructor for the <code>Table</code> object. This will
diff --git a/gnu/packages/patches/libtirpc-missing-headers.patch b/gnu/packages/patches/libtirpc-missing-headers.patch
deleted file mode 100644
index 5a96711820..0000000000
--- a/gnu/packages/patches/libtirpc-missing-headers.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Fix compilation failure with glibc 2.26 caused by missing type
-declarations:
-
-------
-xdr_sizeof.c: In function ‘x_inline’:
-xdr_sizeof.c:93:13: error: ‘uintptr_t’ undeclared (first use in this function)
-  if (len < (uintptr_t)xdrs->x_base) {
-------
-
-Patch copied from upstream source repository:
-
-http://git.linux-nfs.org/?p=steved/libtirpc.git;a=commit;h=acb9a37977cf0a9630eac74af9adebf35e38e719
-
-From acb9a37977cf0a9630eac74af9adebf35e38e719 Mon Sep 17 00:00:00 2001
-From: Thorsten Kukuk <kukuk@thkukuk.de>
-Date: Tue, 14 Nov 2017 10:39:08 -0500
-Subject: [PATCH] Include stdint.h from xdr_sizeof.c to avoid missing
- declaration errors.
-
-Signed-off-by: Thorsten Kukuk <kukuk@suse.de>
-Signed-off-by: Steve Dickson <steved@redhat.com>
----
- src/xdr_sizeof.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/xdr_sizeof.c b/src/xdr_sizeof.c
-index d23fbd1..79d6707 100644
---- a/src/xdr_sizeof.c
-+++ b/src/xdr_sizeof.c
-@@ -39,6 +39,7 @@
- #include <rpc/xdr.h>
- #include <sys/types.h>
- #include <stdlib.h>
-+#include <stdint.h>
- #include "un-namespace.h"
- 
- /* ARGSUSED */
--- 
-1.8.3.1
-
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 4b0454d4e2..11765b8e17 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -2044,7 +2044,7 @@ Date::Calc.")
 (define-public perl-date-manip
   (package
     (name "perl-date-manip")
-    (version "6.50")
+    (version "6.70")
     (source
      (origin
        (method url-fetch)
@@ -2052,7 +2052,7 @@ Date::Calc.")
                            "Date-Manip-" version ".tar.gz"))
        (sha256
         (base32
-         "0zd0wbf91i49753rnf7m1lw197hdl5r97mxy0n43zdmcmhvkb3qq"))))
+         "0r4k4ypb09xwhvq6das0vpx2c0xbhhhx83knq6jfpf8m55h8qi9r"))))
     (build-system perl-build-system)
     (native-inputs `(("perl-module-build" ,perl-module-build)))
     (arguments
@@ -5760,7 +5760,7 @@ most specific one) is instantiated.")
        ("perl-file-configdir" ,perl-file-configdir)
        ("perl-file-find-rule" ,perl-file-find-rule)
        ("perl-hash-merge" ,perl-hash-merge)
-       ("perl-moo", perl-moo)
+       ("perl-moo" ,perl-moo)
        ("perl-moox-file-configdir" ,perl-moox-file-configdir)
        ("perl-namespace-clean" ,perl-namespace-clean)))
     (home-page "http://search.cpan.org/dist/MooX-ConfigFromFile/")
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 758ed3f6f1..90bc365d05 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -481,11 +481,11 @@ a complete panorama and stitch any series of overlapping pictures.")
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no test suite
+       #:build-type "release"
        #:configure-flags
        (list (string-append "-DLENSFUNDBDIR="
                             (assoc-ref %build-inputs "lensfun")
                             "/share/lensfun")
-             "-DCMAKE_BUILD_TYPE=release"
              ; Don't optimize the build for the host machine. See the file
              ; 'ProcessorTargets.cmake' in the source distribution for more
              ; information.
diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm
index 17d3bacf02..877c9c9c84 100644
--- a/gnu/packages/protobuf.scm
+++ b/gnu/packages/protobuf.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -149,14 +149,14 @@ code.")
 (define-public python-protobuf
   (package
     (name "python-protobuf")
-    (version "3.4.0")
+    (version "3.5.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "protobuf" version))
        (sha256
         (base32
-         "0x33xz85cy5ilg1n2rn92l4qwlcw25vzysx2ldv7k625yjg600pg"))))
+         "1q4b1m55w4gvcbzklbk8iylaii98n4in41k27d94w8ypbwlrm1q9"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-six" ,python-six)))
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index f35c8c5042..f709ed9e1d 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -122,14 +122,14 @@ John the Ripper).")
 (define-public python-paramiko
   (package
     (name "python-paramiko")
-    (version "2.1.2")
+    (version "2.1.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "paramiko" version))
        (sha256
         (base32
-         "04734n0wy3hxk6rij4fr29in5jmr70nxpc7pqi2ksbjysfz4kbjz"))))
+         "1pf0zxzhgyy4avby3ajg5hp18b0d8iirbkdfw53z0h6w611bp0wk"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -281,14 +281,14 @@ is used by the Requests library to verify HTTPS requests.")
 (define-public python-cryptography-vectors
   (package
     (name "python-cryptography-vectors")
-    (version "2.1.4")
+    (version "2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "cryptography_vectors" version))
        (sha256
         (base32
-         "1jm5c33qaz297sf99kz9kw8xi792ap9m6bwf0dfylls8z3rv9i3q"))))
+         "03cpmi5azvipphmva7dxv8k3w7ffblvn5452rs5r6smdhxyiqq6g"))))
     (build-system python-build-system)
     (home-page "https://github.com/pyca/cryptography")
     (synopsis "Test vectors for the cryptography package")
@@ -303,14 +303,14 @@ is used by the Requests library to verify HTTPS requests.")
 (define-public python-cryptography
   (package
     (name "python-cryptography")
-    (version "2.1.4")
+    (version "2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "cryptography" version))
        (sha256
         (base32
-         "14aj5ipbj1w5kba2hv6323954pachhflfrjhhmkjwssv3hvngng4"))))
+         "0j2gwr4qxvskip77z4n9nqvr4vi243n3bzij18ay4drc6sg2g87m"))))
     (build-system python-build-system)
     (inputs
      `(("openssl" ,openssl)))
@@ -556,7 +556,7 @@ PKCS#8, PKCS#12, PKCS#5, X.509 and TSP.")
 (define-public python-pynacl
   (package
     (name "python-pynacl")
-    (version "1.1.2")
+    (version "1.2.0")
     (source
      (origin
        (method url-fetch)
@@ -567,7 +567,7 @@ PKCS#8, PKCS#12, PKCS#5, X.509 and TSP.")
                         #t))
        (sha256
         (base32
-         "135gz0020fqx8fbr9izpwyq49aww202nkqacq0cw61xz99sjpx9j"))))
+         "01vjq0pxyw1mxaqy013hzs8nknmvg3kpzlzmh69jxznyipgvria5"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -577,7 +577,8 @@ PKCS#8, PKCS#12, PKCS#5, X.509 and TSP.")
              (setenv "SODIUM_INSTALL" "system")
              #t)))))
     (native-inputs
-     `(("python-pytest" ,python-pytest)))
+     `(("python-hypothesis" ,python-hypothesis)
+       ("python-pytest" ,python-pytest)))
     (propagated-inputs
      `(("python-cffi" ,python-cffi)
        ("python-six" ,python-six)
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 3b907cafcf..7974c005c2 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -823,7 +823,7 @@ internationalized messages within program source text.")
      '(#:tests? #f)) ; FIXME: Tests can't find zope.event.
     (propagated-inputs
      `(("python-zope-event" ,python-zope-event)
-       ("python-zope-exceptions", python-zope-exceptions)
+       ("python-zope-exceptions" ,python-zope-exceptions)
        ("python-zope-interface" ,python-zope-interface)))
     (native-inputs
      `(("python-zope-testing" ,python-zope-testing)
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index f3a75c30e1..51cc1cf5f0 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1232,14 +1232,14 @@ after Andy Lester’s Perl module WWW::Mechanize.")
 (define-public python-simplejson
   (package
     (name "python-simplejson")
-    (version "3.10.0")
+    (version "3.13.2")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "simplejson" version))
       (sha256
        (base32
-        "1qhwsykjlb85igb4cfl6v6gkprzbbg8gyqdd7zscc8w3x0ifcfwm"))))
+        "02jg5nixffqyicfqdl4dil82fh1z9p2as758wp0nqwalw0hcykjc"))))
     (build-system python-build-system)
     (home-page "http://simplejson.readthedocs.org/en/latest/")
     (synopsis
@@ -1925,7 +1925,7 @@ version numbers.")
 (define-public python-jsonschema
   (package
     (name "python-jsonschema")
-    (version "2.5.1")
+    (version "2.6.0")
     (source (origin
              (method url-fetch)
              (uri
@@ -1934,7 +1934,7 @@ version numbers.")
                version ".tar.gz"))
              (sha256
               (base32
-               "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
+               "00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -4125,13 +4125,13 @@ PNG, PostScript, PDF, and SVG file output.")
 (define-public python-decorator
   (package
     (name "python-decorator")
-    (version "4.1.2")
+    (version "4.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "decorator" version))
        (sha256
-        (base32 "1d8npb11kxyi36mrvjdpcjij76l5zfyrz2f820brf0l0rcw4vdkw"))))
+        (base32 "03iaf116rm3w8b4agb8hzf6z9331mrvi4khfxq35zkx17sgxsikx"))))
     (build-system python-build-system)
     (arguments '(#:tests? #f)) ; no test target
     (home-page "https://pypi.python.org/pypi/decorator/")
@@ -4497,14 +4497,14 @@ without using the configuration machinery.")
 (define-public python-jupyter-core
   (package
     (name "python-jupyter-core")
-    (version "4.2.1")
+    (version "4.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append (pypi-uri "jupyter_core" version)))
        (sha256
         (base32
-         "1cy7inv218dgh4m1fbzbsiqpz733ylgjrj62jxqpfzs3r2cm7ic9"))))
+         "1dy083rarba8prn9f9srxq3c7n7vyql02ycrqq306c40lr57aw5s"))))
     (build-system python-build-system)
     ;; FIXME: not sure how to run the tests
     (arguments `(#:tests? #f))
@@ -5683,7 +5683,7 @@ markdown_py is also provided to convert Markdown files to HTML.")
 (define-public python-ptyprocess
   (package
     (name "python-ptyprocess")
-    (version "0.5.1")
+    (version "0.5.2")
     (source
      (origin
        (method url-fetch)
@@ -5692,7 +5692,7 @@ markdown_py is also provided to convert Markdown files to HTML.")
              version ".tar.gz"))
        (sha256
         (base32
-         "19l1xrjn4l9gjz01s3vg92gn2dd9d8mw1v86ppkzlnr9m5iwwc05"))))
+         "0ra31k10v3629xq0kdn8lwmfbi97anmk48r03yvh7mks0kq96hg6"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-nose" ,python-nose)))
@@ -6502,14 +6502,14 @@ Debian-related files, such as:
 (define-public python-nbformat
   (package
     (name "python-nbformat")
-    (version "4.3.0")
+    (version "4.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "nbformat" version))
        (sha256
         (base32
-         "12s7j4qja8b5bs1kyw5dzmrqbjxxj8wk52cyasbiqbv7fblcrssz"))))
+         "00nlf08h8yc4q73nphfvfhxrcnilaqanb8z0mdy6nxk0vzq4wjgp"))))
     (build-system python-build-system)
     (arguments `(#:tests? #f)) ; no test target
     (propagated-inputs
@@ -6554,7 +6554,7 @@ Jupyter Notebook format and Python APIs for working with notebooks.")
 (define-public python-entrypoints
   (package
     (name "python-entrypoints")
-    (version "0.2.2")
+    (version "0.2.3")
     (source
      (origin
        (method url-fetch)
@@ -6563,7 +6563,7 @@ Jupyter Notebook format and Python APIs for working with notebooks.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0azqlkh3j0za080lsf5crnhaxx3c93k9dpv5ihkhf5cppgw5sjz5"))))
+         "1pdvgfr5bxyvnfvxbsd3zi0dh3il71pc4k6rinx6zpps91b84a56"))))
     (build-system python-build-system)
     ;; The package does not come with a setup.py file, so we have to generate
     ;; one ourselves.
@@ -6760,14 +6760,14 @@ in the data.")
 (define-public python-jupyter-console
   (package
     (name "python-jupyter-console")
-    (version "5.0.0")
+    (version "5.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "jupyter_console" version))
        (sha256
         (base32
-         "04acmkwsi99rcg3vb54c6n492zv35s92h2ahabc0w6wj976cipvx"))))
+         "1kam1qzgwr7srhm5r6aj90di5sws4bq0jmiw15452ddamb9yspal"))))
     (build-system python-build-system)
     ;; FIXME: it's not clear how to run the tests.
     (arguments `(#:tests? #f))
@@ -8954,14 +8954,14 @@ data in Python.")
 (define-public python-kazoo
   (package
     (name "python-kazoo")
-    (version "2.2.1")
+    (version "2.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "kazoo" version))
        (sha256
         (base32
-         "10pb864if9qi2pq9lfb9m8f7z7ss6rml80gf1d9h64lap5crjnjj"))))
+         "16y213k7r8shyn2zw1k6lkzjgcrvm441pqv8scvcjixhvpbx3hm7"))))
     (build-system python-build-system)
     (arguments '(#:tests? #f)) ; XXX: needs zookeeper
     (propagated-inputs
@@ -9061,13 +9061,13 @@ etc.")
 (define-public python-chai
   (package
     (name "python-chai")
-    (version "1.1.1")
+    (version "1.1.2")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "chai" version))
               (sha256
                (base32
-                "016kf3irrclpkpvcm7q0gmkfibq7jgy30a9v73pp42bq9h9a32bl"))))
+                "1k6n6zbgrrs83crp6mr3yqj9zlv40b8rpisyrliwsq7naml2p3gz"))))
     (build-system python-build-system)
     (home-page "https://github.com/agoragames/chai")
     (synopsis "Mocking framework for Python")
@@ -12044,7 +12044,7 @@ library.")
        "08if5yax1xn5yfp8p3765ccjmfcv9di7i4m5jckgnwvdsgznwkbj"))))
    (build-system python-build-system)
    (native-inputs `(("pkg-config" ,pkg-config)
-                    ("python-cython", python-cython)))
+                    ("python-cython" ,python-cython)))
    (home-page "https://github.com/aresch/rencode")
    (synopsis "Serialization of heterogeneous data structures")
    (description
@@ -12186,14 +12186,14 @@ design and layout.")
 (define-public python-pkginfo
   (package
     (name "python-pkginfo")
-    (version "1.4.1")
+    (version "1.4.2")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "pkginfo" version))
         (sha256
           (base32
-            "17pqjfpq3c6xzdmk8pski6jcjgjv78q00zjf2bgzb668pzm6l6mv"))))
+            "0x6lm17p1ks031mj6pajyp4rkq74vpqq8qwjb7ikgwmkli1day2q"))))
     (build-system python-build-system)
     (arguments
      ;; The tests are broken upstream.
@@ -12227,7 +12227,7 @@ created by running @code{python setup.py develop}).")
     (build-system python-build-system)
     (propagated-inputs
      `(("python-tqdm" ,python-tqdm)
-       ("python-pkginfo", python-pkginfo)
+       ("python-pkginfo" ,python-pkginfo)
        ("python-requests" ,python-requests)
        ("python-requests-toolbelt" ,python-requests-toolbelt)))
     (home-page "https://github.com/pypa/twine")
@@ -12637,7 +12637,7 @@ is the new Pyro version that is actively developed.")
      `(("netcdf" ,netcdf)))
     (propagated-inputs
      `(("python-numpy" ,python2-numpy-1.8)
-       ("python-pyro", python2-pyro)))
+       ("python-pyro" ,python2-pyro)))
     (arguments
      ;; ScientificPython is not compatible with Python 3
      `(#:python ,python-2
@@ -12702,14 +12702,14 @@ and works only with Python 2 and NumPy < 1.9.")
 (define-public python-phonenumbers
   (package
     (name "python-phonenumbers")
-    (version "8.8.9")
+    (version "8.9.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "phonenumbers" version))
        (sha256
         (base32
-         "1lhhxmx3hk0b5891nc0p82dl5bq2w9cqbawmh8j5zy587af2j6fq"))))
+         "03fmrgb4r8x3ykmddjs9i3zhs703in8smikj3a6447blqpimwyh1"))))
     (build-system python-build-system)
     (home-page
      "https://github.com/daviddrysdale/python-phonenumbers")
@@ -12984,7 +12984,7 @@ and other tools.")
              #t)))))
     (propagated-inputs
      `(("python-pygments" ,python-pygments)
-       ("python-requests", python-requests)
+       ("python-requests" ,python-requests)
        ("python-babel" ,python-babel) ; optional, for internationalization
        ("python-curtsies" ,python-curtsies) ; >= 0.1.18
        ("python-greenlet" ,python-greenlet)
@@ -13057,7 +13057,7 @@ interpreter. bpython's main features are
     (synopsis "Python library for monitoring inotify events")
     (description
      "@code{pyinotify} provides a Python interface for monitoring
-filesystem events on Linux.")
+file system events on Linux.")
     (license license:expat)))
 
 (define-public python2-pyinotify
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index ec8995a92b..b505d8d708 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -1944,7 +1944,7 @@ different kinds of sliders, and much more.")
        ("libwebp" ,libwebp)
        ("sqlite" ,sqlite)
        ("fontconfig" ,fontconfig)
-       ("libxrender", libxrender)
+       ("libxrender" ,libxrender)
        ("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)
        ("qtmultimedia" ,qtmultimedia)
diff --git a/gnu/packages/ratpoison.scm b/gnu/packages/ratpoison.scm
index b1f012eb79..901d6fc55a 100644
--- a/gnu/packages/ratpoison.scm
+++ b/gnu/packages/ratpoison.scm
@@ -78,7 +78,7 @@
        ("readline" ,readline)
        ("xorgproto" ,xorgproto)))
     (native-inputs
-     `(("perl",perl)
+     `(("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("ratpoison.desktop" ,ratpoison.desktop)))
     (home-page "https://www.nongnu.org/ratpoison/")
diff --git a/gnu/packages/rdesktop.scm b/gnu/packages/rdesktop.scm
index 1a2d0412d1..bd2b5737e9 100644
--- a/gnu/packages/rdesktop.scm
+++ b/gnu/packages/rdesktop.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; 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.
 ;;;
@@ -111,9 +112,9 @@ to remotely control a user's Windows desktop.")
          ("zlib" ,zlib)
          ("openssl" ,openssl)))
       (arguments
-       `(#:configure-flags
-         (list "-DCMAKE_BUILD_TYPE=RELEASE"
-               "-DWITH_JPEG=ON"
+       `(#:build-type "RELEASE"
+         #:configure-flags
+         (list "-DWITH_JPEG=ON"
                ,@(if (string-prefix? "x86_64"
                                      (or (%current-target-system)
                                          (%current-system)))
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index ee5d20955c..dcf4cda26a 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -36,6 +36,7 @@
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages java)
   #:use-module (gnu packages libffi)
+  #:use-module (gnu packages maths)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages python)
   #:use-module (gnu packages ragel)
@@ -665,6 +666,72 @@ line of code.")
     ;; of the Expat license.
     (license license:bsd-3)))
 
+(define-public ruby-asciidoctor
+  (package
+  (name "ruby-asciidoctor")
+  (version "1.5.6.1")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (rubygems-uri "asciidoctor" version))
+      (sha256
+        (base32
+          "1jnf9y8q5asfdzilp8vcqafrc2faj719df4yh1993mh6jd0iqdy4"))))
+  (build-system ruby-build-system)
+  (arguments
+   `(#:test-target "test:all"
+     #:phases
+     (modify-phases %standard-phases
+       (add-before 'check 'remove-circular-tests
+         (lambda _
+           ;; Remove tests that require circular dependencies to load or pass.
+           (delete-file "test/invoker_test.rb")
+           (delete-file "test/converter_test.rb")
+           (delete-file "test/options_test.rb")
+           #t)))))
+  (native-inputs
+   `(("ruby-minitest" ,ruby-minitest)
+     ("ruby-nokogiri" ,ruby-nokogiri)
+     ("ruby-asciimath" ,ruby-asciimath)
+     ("ruby-coderay" ,ruby-coderay)))
+  (synopsis "Converter from AsciiDoc content to other formats")
+  (description
+    "Asciidoctor is a text processor and publishing toolchain for converting
+AsciiDoc content to HTML5, DocBook 5 (or 4.5) and other formats.")
+  (home-page "http://asciidoctor.org")
+  (license license:expat)))
+
+(define-public ruby-sporkmonger-rack-mount
+  ;; Testing the addressable gem requires a newer commit than that released, so
+  ;; use an up to date version.
+  (let ((revision "1")
+        (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
+    (package
+      (name "ruby-sporkmonger-rack-mount")
+      (version (git-version "0.8.3" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/sporkmonger/rack-mount.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
+      (build-system ruby-build-system)
+      (arguments
+       ;; Tests currently fail so disable them.
+       ;; https://github.com/sporkmonger/rack-mount/pull/1
+       `(#:tests? #f))
+      (propagated-inputs `(("ruby-rack" ,ruby-rack)))
+      (synopsis "Stackable dynamic tree based Rack router")
+      (description
+       "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
+continue trying routes if the response returns pass.  This allows multiple
+routes to be nested or stacked on top of each other.")
+      (home-page "https://github.com/sporkmonger/rack-mount")
+      (license license:expat))))
+
 (define-public ruby-ci-reporter
   (package
     (name "ruby-ci-reporter")
@@ -824,6 +891,29 @@ functions.")
     (home-page "https://github.com/ahoward/options")
     (license license:ruby)))
 
+(define-public ruby-erubis
+  (package
+    (name "ruby-erubis")
+    (version "2.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "erubis" version))
+       (sha256
+        (base32
+         "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
+    (synopsis "Implementation of embedded Ruby (eRuby)")
+    (description
+     "Erubis is a fast implementation of embedded Ruby (eRuby) with several
+features such as multi-language support, auto escaping, auto trimming spaces
+around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
+support.")
+    (home-page "http://www.kuwata-lab.com/erubis/")
+    (license license:expat)))
+
 (define-public ruby-orderedhash
   (package
     (name "ruby-orderedhash")
@@ -3293,6 +3383,106 @@ into a single method call.")
     (home-page "https://rack.github.io/")
     (license license:expat)))
 
+(define-public ruby-rack-test
+  (package
+    (name "ruby-rack-test")
+    (version "0.8.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "rack-test" version))
+       (sha256
+        (base32
+         "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
+    (build-system ruby-build-system)
+    (arguments
+     ;; Disable tests because of circular dependencies: requires sinatra,
+     ;; which requires rack-protection, which requires rack-test.  Instead
+     ;; simply require the library.
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
+    (propagated-inputs
+     `(("ruby-rack" ,ruby-rack)))
+    (synopsis "Testing API for Rack applications")
+    (description
+     "Rack::Test is a small, simple testing API for Rack applications.  It can
+be used on its own or as a reusable starting point for Web frameworks and
+testing libraries to build on.")
+    (home-page "https://github.com/rack-test/rack-test")
+    (license license:expat)))
+
+(define-public ruby-rack-protection
+  (package
+    (name "ruby-rack-protection")
+    (version "2.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "rack-protection" version))
+       (sha256
+        (base32
+         "0ywmgh7x8ljf7jfnq5hmfzki3f803waji3fcvi107w7mlyflbng7"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; Tests missing from the gem
+       #:tests? #f))
+    (propagated-inputs
+     `(("ruby-rack" ,ruby-rack)))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec-2)
+       ("ruby-rack-test" ,ruby-rack-test)))
+    (synopsis "Rack middleware that protects against typical web attacks")
+    (description "Rack middleware that can be used to protect against typical
+web attacks.  It can protect all Rack apps, including Rails.  For instance, it
+protects against cross site request forgery, cross site scripting,
+clickjacking, directory traversal, session hijacking and IP spoofing.")
+    (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
+    (license license:expat)))
+
+(define-public ruby-contest
+  (package
+    (name "ruby-contest")
+    (version "0.1.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "contest" version))
+       (sha256
+        (base32
+         "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
+    (build-system ruby-build-system)
+    (synopsis "Write declarative tests using nested contexts")
+    (description
+     "Contest allows writing declarative @code{Test::Unit} tests using nested
+contexts without performance penalties.")
+    (home-page "https://github.com/citrusbyte/contest")
+    (license license:expat)))
+
+(define-public ruby-creole
+  (package
+    (name "ruby-creole")
+    (version "0.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "creole" version))
+       (sha256
+        (base32
+         "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     `(("ruby-bacon" ,ruby-bacon)))
+    (synopsis "Creole markup language converter")
+    (description
+     "Creole is a lightweight markup language and this library for converting
+creole to @code{HTML}.")
+    (home-page "https://github.com/minad/creole")
+    (license license:ruby)))
+
 (define-public ruby-docile
   (package
     (name "ruby-docile")
@@ -3526,6 +3716,55 @@ used to create both network servers and clients.")
     (home-page "http://rubyeventmachine.com")
     (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
 
+(define-public ruby-ruby-engine
+  (package
+    (name "ruby-ruby-engine")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "ruby_engine" version))
+       (sha256
+        (base32
+         "1d0sd4q50zkcqhr395wj1wpn2ql52r0fpwhzjfvi1bljml7k546v"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'clean-up
+           (lambda _
+             (delete-file "Gemfile.lock")
+             (substitute* "ruby_engine.gemspec"
+               ;; Remove unnecessary imports that would entail further
+               ;; dependencies.
+               ((".*<rdoc.*") "")
+               ((".*<rubygems-tasks.*") "")
+               ;; Remove extraneous .gem file
+               (("\\\"pkg/ruby_engine-1.0.0.gem\\\",") "")
+               ;; Soften rake dependency
+               (("%q<rake>.freeze, \\[\\\"~> 10.0\\\"\\]")
+                "%q<rake>.freeze, [\">= 10.0\"]")
+               ;; Soften the rspec dependency
+               (("%q<rspec>.freeze, \\[\\\"~> 2.4\\\"\\]")
+                "%q<rspec>.freeze, [\">= 2.4\"]"))
+             (substitute* "Rakefile"
+               (("require 'rubygems/tasks'") "")
+               (("Gem::Tasks.new") ""))
+             ;; Remove extraneous .gem file that otherwise gets installed.
+             (delete-file "pkg/ruby_engine-1.0.0.gem")
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rake" ,ruby-rake)
+       ("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Simplifies checking for Ruby implementation")
+    (description
+     "@code{ruby_engine} provides an RubyEngine class that can be used to
+check which implementation of Ruby is in use.  It can provide the interpreter
+name and provides query methods such as @{RubyEngine.mri?}.")
+    (home-page "https://github.com/janlelis/ruby_engine")
+    (license license:expat)))
+
 (define-public ruby-turn
   (package
     (name "ruby-turn")
@@ -4721,3 +4960,24 @@ thing this library does today is convert org-mode files to HTML or Textile or
 Markdown.")
     (home-page "https://github.com/wallyqs/org-ruby")
     (license license:expat)))
+
+(define-public ruby-rake
+  (package
+    (name "ruby-rake")
+    (version "12.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "rake" version))
+       (sha256
+        (base32
+         "190p7cs8zdn07mjj6xwwsdna3g0r98zs4crz7jh2j2q5b0nbxgjf"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     `(("bundler" ,bundler)))
+    (synopsis "Rake is a Make-like program implemented in Ruby")
+    (description
+     "Rake is a Make-like program where tasks and dependencies are specified
+in standard Ruby syntax.")
+    (home-page "https://github.com/ruby/rake")
+    (license license:expat)))
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index 1bc2778da1..f98ea8c048 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -122,9 +122,9 @@ joystick, and graphics hardware.")
                ("fcitx" ,fcitx) ; helps with CJK input
                ("glib" ,glib)
                ("ibus" ,ibus)
-               ("libxkbcommon", libxkbcommon)
-               ("wayland", wayland)
-               ("wayland-protocols", wayland-protocols))
+               ("libxkbcommon" ,libxkbcommon)
+               ("wayland" ,wayland)
+               ("wayland-protocols" ,wayland-protocols))
              (package-inputs sdl)))
     (license bsd-3)))
 
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 8e6f5d94d9..57ba682305 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
 ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
 ;;; Copyright © 2017 ng0 <ng0@infotropique.org>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -431,10 +431,10 @@ to generate and parse.  The two primary functions are @code{cbor.loads} and
           "0blc978wc5h91662vai24xj92c3bx56y6hzid90qva7il302jl64"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:configure-flags
+     '(#:build-type "Release"
+       #:configure-flags
        (list (string-append "-DCMAKE_INSTALL_LIBDIR="
-                            (assoc-ref %outputs "out") "/lib")
-             "-DCMAKE_BUILD_TYPE=Release")))
+                            (assoc-ref %outputs "out") "/lib"))))
     (home-page "https://google.github.io/flatbuffers/")
     (synopsis "Memory-efficient serialization library")
     (description "FlatBuffers is a cross platform serialization library for C++,
diff --git a/gnu/packages/sml.scm b/gnu/packages/sml.scm
index b9bd7a7e82..1d7fd3fb51 100644
--- a/gnu/packages/sml.scm
+++ b/gnu/packages/sml.scm
@@ -42,7 +42,7 @@
     (build-system gnu-build-system)
     (inputs
      `(("gmp" ,gmp)
-       ("lesstif",lesstif)
+       ("lesstif" ,lesstif)
        ("libffi" ,libffi)
        ("libx11" ,libx11)
        ("libxt" ,libxt)))
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 936cce429f..e140f4d043 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -271,7 +271,7 @@ as.POSIXct(if (\"\" != Sys.getenv(\"SOURCE_DATE_EPOCH\")) {\
      (list (search-path-specification
             (variable "R_LIBS_SITE")
             (files (list "site-library/")))))
-    (home-page "http://www.r-project.org/")
+    (home-page "https://www.r-project.org/")
     (synopsis "Environment for statistical computing and graphics")
     (description
      "R is a language and environment for statistical computing and graphics.
@@ -2358,13 +2358,13 @@ tools to simplify the devolpment of R packages.")
 (define-public r-withr
   (package
     (name "r-withr")
-    (version "2.1.1")
+    (version "2.1.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "withr" version))
               (sha256
                (base32
-                "17pbllxv18gf1mli9mm5px4wzp364907a4wrl20r1y5q8qwawpxx"))))
+                "11j6zykklxnvp4xqsr6a2xib665i38m3khdspp887nwagmvnydj1"))))
     (build-system r-build-system)
     (home-page "https://github.com/jimhester/withr")
     (synopsis "Run code with temporarily modified global state")
@@ -5018,7 +5018,7 @@ using modular prediction and response module classes.")
      `(("r-matrix" ,r-matrix)
        ("r-matrixmodels" ,r-matrixmodels)
        ("r-sparsem" ,r-sparsem)))
-    (home-page "http://www.r-project.org")
+    (home-page "https://www.r-project.org")
     (synopsis "Quantile regression")
     (description
      "This package provides an estimation and inference methods for models
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index ed59a5b922..22dc8af7f3 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -1693,7 +1693,7 @@ using sh's word-splitting rules.")
        '(#:import-path "github.com/zillode/notify"))
       (propagated-inputs
        `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
-      (synopsis "Filesystem event notification library")
+      (synopsis "File system event notification library")
       (description "This package provides @code{notify}, a file system event
 notification library in Go.")
       (home-page "https://github.com/zillode/notify")
@@ -1872,8 +1872,8 @@ Prometheus metrics.")
       (arguments
        '(#:import-path "github.com/prometheus/procfs"))
       (synopsis "Go library for reading @file{/proc}")
-      (description "This Go package @code{procfs} provides functions to retrieve
-system, kernel and process metrics from the pseudo-filesystem @file{/proc}.")
+      (description "The @code{procfs} Go package provides functions to retrieve
+system, kernel, and process metrics from the @file{/proc} pseudo file system.")
       (home-page "https://github.com/prometheus/procfs")
       (license asl2.0))))
 
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index efc57d36ed..48c5f1f979 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Mckinley Olsen <mck.olsen@gmail.com>
 ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
@@ -65,22 +65,21 @@
 (define-public tilda
   (package
     (name "tilda")
-    (version "1.3.3")
+    (version "1.4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/lanoxx/tilda/archive/"
                                   "tilda-" version ".tar.gz"))
               (sha256
                (base32
-                "1cc4qbg1m3i04lj5p6i6xbd0zvy1320pxdgmjhz5p3j95ibsbfki"))))
+                "0w2hry2bqcqrkik4l100b1a9jlsih6sq8zwhfpl8zzfq20i00lfs"))))
     (build-system glib-or-gtk-build-system)
     (arguments
-     `(#:phases (modify-phases %standard-phases
-                 (add-before 'patch-source-shebangs 'autogen
-                  (lambda _       ; Avoid running ./configure.
-                   (substitute* "autogen.sh"
-                                (("^.*\\$srcdir/configure.*") ""))
-                   (zero? (system* "sh" "autogen.sh")))))))
+     '(#:phases (modify-phases %standard-phases
+                 (add-before 'patch-source-shebangs 'bootstrap
+                  (lambda _
+                    (setenv "NOCONFIGURE" "true")
+                    (invoke "sh" "autogen.sh"))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -128,9 +127,9 @@ configurable through a graphical wizard.")
                            (string-append "DESTDIR="
                                           (assoc-ref %outputs "out")))))
     (inputs
-     `(("vte", vte-ng)
-       ("gtk+", gtk+)
-       ("ncurses", ncurses)))
+     `(("vte" ,vte-ng)
+       ("gtk+" ,gtk+)
+       ("ncurses" ,ncurses)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
 
@@ -293,10 +292,10 @@ multi-seat support, a replacement for @command{mingetty}, and more.")
        #:phases (modify-phases %standard-phases
                   (delete 'configure))
        #:test-target "test"))
-    (inputs `(("ncurses", ncurses)))
-    (native-inputs `(("libtool", libtool)
+    (inputs `(("ncurses" ,ncurses)))
+    (native-inputs `(("libtool" ,libtool)
                      ("perl-test-harness" ,perl-test-harness)
-                     ("pkg-config", pkg-config)))
+                     ("pkg-config" ,pkg-config)))
     (synopsis "Keyboard entry processing library for terminal-based programs")
     (description
      "Libtermkey handles all the necessary logic to recognise special keys, UTF-8
@@ -695,7 +694,7 @@ terminal or piped input.")
              (delete-file "tests/test_input_output.py")
              #t)))))
     (propagated-inputs
-     `(("python-wcwidth", python-wcwidth)))
+     `(("python-wcwidth" ,python-wcwidth)))
     (native-inputs
      `(("python-pytest-runner" ,python-pytest-runner)
        ("python-pytest" ,python-pytest)))
@@ -765,7 +764,7 @@ than a terminal.")
              (invoke "nosetests" "-v"))))))
     (propagated-inputs
      `(("python-blessings" ,python-blessings)
-       ("python-wcwidth", python-wcwidth)))
+       ("python-wcwidth" ,python-wcwidth)))
     (native-inputs
      `(("python-mock" ,python-mock)
        ("python-pyte" ,python-pyte)
diff --git a/gnu/packages/terraform.scm b/gnu/packages/terraform.scm
new file mode 100644
index 0000000000..71b214ed0a
--- /dev/null
+++ b/gnu/packages/terraform.scm
@@ -0,0 +1,52 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
+;;;
+;;; 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 terraform)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system go)
+  #:use-module (gnu packages golang))
+
+(define-public terraform-docs
+  (package
+    (name "terraform-docs")
+    (version "0.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/segmentio/terraform-docs")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0xchpik32ab8m89s6jv671vswg8xhprfvh6s5md0zd36482d2nmm"))))
+    (build-system go-build-system)
+    (native-inputs
+     `(("go-github-com-hashicorp-hcl" ,go-github-com-hashicorp-hcl)
+       ("go-github-com-tj-docopt" ,go-github-com-tj-docopt)))
+    (arguments
+     '(#:import-path "github.com/segmentio/terraform-docs"))
+    (synopsis "Generate documentation from Terraform modules")
+    (description
+     "The @code{terraform-docs} utility can generate documentation describing
+the inputs and outputs for modules of the Terraform infrastructure management
+tool.  These can be shown, or written to a file in JSON or Markdown formats.")
+    (home-page "https://github.com/segmentio/terraform-docs")
+    (license license:expat)))
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 30033e1041..1416a00251 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -3591,7 +3591,7 @@ this is particularly useful when using scalable versions of the CM
 fonts (Bakoma, or the versions from BSR/Y&Y, or True Type versions from Kinch,
 PCTeX, etc.).  In fact, since modern distributions will automatically generate
 any bitmap font you might need, @code{type1cm} has wider application than just
-those using scaleable versions of the fonts.  Note that the LaTeX distribution
+those using scalable versions of the fonts.  Note that the LaTeX distribution
 now contains a package @code{fix-cm},f which performs the task of
 @code{type1cm}, as well as doing the same job for T1- and TS1-encoded
 @code{ec} fonts.")
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index caec009f1a..efbea450e0 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -81,10 +81,10 @@
      (list (search-path-specification
             (variable "VIS_PATH")
             (files '("share/vis")))))
-    (inputs `(("lua", lua)
-              ("ncurses", ncurses)
-              ("libtermkey", libtermkey)
-              ("lua-lpeg", lua-lpeg)
+    (inputs `(("lua" ,lua)
+              ("ncurses" ,ncurses)
+              ("libtermkey" ,libtermkey)
+              ("lua-lpeg" ,lua-lpeg)
               ("tre" ,tre)))
     (synopsis "Vim-like text editor")
     (description
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 19c490cb57..a33c1a5235 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -500,13 +500,13 @@ netcat implementation that supports TLS.")
   (package
     (name "python-acme")
     ;; Remember to update the hash of certbot when updating python-acme.
-    (version "0.22.0")
+    (version "0.22.1")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "acme" version))
               (sha256
                (base32
-                "1s2zamyb99zdyga3c75xxgnj0z2hixw8wv24v1l4p49fncnxab2a"))))
+                "0cbw062xmaqhmdb5d04d2xs9aacmq1i7yvnd37gw1d71qgxlnmsz"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -555,7 +555,7 @@ netcat implementation that supports TLS.")
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "1cyb3lhxrw7ghyhrl2wc95vqhdaxz6n4pai66c573gcly7c7sc7f"))))
+                "1d9abvlwi2d4d991dakds7jyrzxcsqkl13sd0clkriav9cdqwhv4"))))
     (build-system python-build-system)
     (arguments
      `(,@(substitute-keyword-arguments (package-arguments python-acme)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 15e1e2caeb..fa5cdfdd78 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1062,7 +1062,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
        ("waf" ,python-waf)
        ("wayland" ,wayland)
        ("wayland-protocols" ,wayland-protocols)
-       ("libxkbcommon", libxkbcommon)
+       ("libxkbcommon" ,libxkbcommon)
        ("youtube-dl" ,youtube-dl)
        ("zlib" ,zlib)))
     (arguments
@@ -1158,7 +1158,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2018.03.10")
+    (version "2018.03.14")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://yt-dl.org/downloads/"
@@ -1166,7 +1166,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1ibmz91anli1vzkgw2i3h4wf1i8arzd74730ylwcwyg3375xryjb"))))
+                "0j8j797gqc29fd5ra3cjvwkp8dgvigdydsj0zzjs05zccfqrj9lh"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
@@ -2463,7 +2463,7 @@ MPEG-2, MPEG-4, DVD (VOB)...
        ("libtool" ,libtool)
        ("pkg-config" ,pkg-config)
        ("zlib" ,zlib)
-       ("libmediainfo", libmediainfo)
+       ("libmediainfo" ,libmediainfo)
        ("libzen" ,libzen)))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 24f7333cd8..55a92eca0d 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -747,7 +747,7 @@ Machine Protocol.")
              ("sdl2" ,sdl2)
              ("sdl2-ttf" ,sdl2-ttf)
              ("spice-protocol" ,spice-protocol)))
-   (native-inputs `(("pkg-config", pkg-config)))
+   (native-inputs `(("pkg-config" ,pkg-config)))
    (arguments
     `(#:tests? #f ;; No tests are available.
       #:phases (modify-phases %standard-phases
diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 478de6a444..12b1f93015 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -1,5 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -102,7 +104,7 @@ and for the GLSL.std.450 extended instruction set.
                                                (assoc-ref %build-inputs
                                                           "spirv-headers")))))
      (inputs `(("spirv-headers" ,spirv-headers)))
-     (native-inputs `(("pkg-config", pkg-config)
+     (native-inputs `(("pkg-config" ,pkg-config)
                       ("python" ,python)))
      (home-page "https://github.com/KhronosGroup/SPIRV-Tools")
      (synopsis "API and commands for processing SPIR-V modules")
@@ -189,7 +191,7 @@ interpretation of the specifications for these languages.")
               ("mesa" ,mesa)
               ("spirv-tools" ,spirv-tools)
               ("wayland" ,wayland)))
-    (native-inputs `(("pkg-config", pkg-config)
+    (native-inputs `(("pkg-config" ,pkg-config)
                      ("python" ,python)))
     (home-page
      "https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers")
@@ -210,74 +212,68 @@ and the ICD.")
   (let ((commit "773ec22d49f40b7161820f29d953be4a7e40190d")
         (revision "1"))
     (package
-     (name "shaderc")
-     (version (string-append "0.0-" revision "." (string-take commit 9)))
-     (source
-      (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/google/shaderc")
-             (commit commit)))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "0b41inb1czxv3mciip0lfdxv19ccx2ys31fivfywjn2q8va1gd1f"))))
-     (build-system meson-build-system)
-     (arguments
-      `(#:tests? #f ;; Tests don't work yet.
-        #:phases
-        (modify-phases %standard-phases
-          (replace 'configure
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     (let ((out (assoc-ref outputs "out")))
-                     ;; Remove various lines and touch build-version.inc or
-                     ;; configuring won't work.
-                     (invoke "touch" "glslc/src/build-version.inc")
-                     (substitute* "CMakeLists.txt" (("..PYTHON_EXE..*") ""))
-                     (substitute* "CMakeLists.txt"
-                                  ((".*update_build_version.py..*") ""))
-                     (substitute* "CMakeLists.txt"
-                                  ((".*add_custom_target.build-version.*") ""))
-                     (substitute* "CMakeLists.txt"
-                                  ((".*spirv-tools_SOURCE_DIR.*glslang_SOURCE_DIR.*")
-                                   ""))
-                     (substitute* "CMakeLists.txt"
-                                  ((".*Update build-version.inc.*") ""))
-                     (substitute* "CMakeLists.txt" ((".*--check.*") ""))
-                     (substitute* "glslc/src/main.cc" ((".*build-version.inc.*")
-                                                       "\"1\""))
-                     (invoke "cmake" "-GNinja" "-DCMAKE_BUILD_TYPE=Release"
-                                     "-DSHADERC_SKIP_TESTS=ON"
-                                     "-DCMAKE_INSTALL_LIBDIR=lib"
-                                     (string-append "-DCMAKE_INSTALL_PREFIX="
-                                                    out)))))
-          (add-after 'unpack 'unpack-sources
-                     (lambda* (#:key inputs #:allow-other-keys)
-                       (let ((spirv-tools-source (assoc-ref %build-inputs
-                                                            "spirv-tools-source"))
-                             (spirv-headers-source (assoc-ref %build-inputs
-                                                              "spirv-headers-source"))
-                             (glslang-source (assoc-ref %build-inputs
-                                                        "glslang-source")))
-                         (mkdir-p "third-party/spirv-tools")
-                         (copy-recursively spirv-tools-source
-                                           "third_party/spirv-tools")
-                         (mkdir-p "third-party/spirv-tools/external/spirv-headers")
-                         (copy-recursively spirv-headers-source
-                                           (string-append "third_party/spirv-tools"
-                                                          "/external/spirv-headers"))
-                         (mkdir-p "third-party/glslang")
-                         (copy-recursively glslang-source
-                                           "third_party/glslang")
-                         #t))))))
-     (inputs `(("python" ,python)))
-     (native-inputs `(("cmake" ,cmake)
-                      ("glslang-source", (package-source glslang))
-                      ("pkg-config", pkg-config)
-                      ("spirv-headers-source", (package-source spirv-headers))
-                      ("spirv-tools-source", (package-source spirv-tools))))
-     (home-page "https://github.com/google/shaderc")
-     (synopsis "Tools for shader compilation")
-     (description "Shaderc is a collection of tools, libraries and tests for
+      (name "shaderc")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/google/shaderc")
+               (commit commit)))
+         (file-name (string-append name "-" version ".tar.gz"))
+         (sha256
+          (base32
+           "0b41inb1czxv3mciip0lfdxv19ccx2ys31fivfywjn2q8va1gd1f"))))
+      (build-system meson-build-system)
+      (arguments
+       `(#:tests? #f                    ; tests don't work yet.
+         #:phases
+         (modify-phases %standard-phases
+           (replace 'configure
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 ;; Remove various lines and touch build-version.inc or
+                 ;; configuring won't work.
+                 (invoke "touch" "glslc/src/build-version.inc")
+                 (substitute* "CMakeLists.txt" (("..PYTHON_EXE..*") ""))
+                 (substitute* "CMakeLists.txt"
+                   ((".*update_build_version.py..*") ""))
+                 (substitute* "CMakeLists.txt"
+                   ((".*add_custom_target.build-version.*") ""))
+                 (substitute* "CMakeLists.txt"
+                   ((".*spirv-tools_SOURCE_DIR.*glslang_SOURCE_DIR.*")
+                    ""))
+                 (substitute* "CMakeLists.txt"
+                   ((".*Update build-version.inc.*") ""))
+                 (substitute* "CMakeLists.txt" ((".*--check.*") ""))
+                 (substitute* "glslc/src/main.cc" ((".*build-version.inc.*")
+                                                   "\"1\""))
+                 (invoke "cmake" "-GNinja" "-DCMAKE_BUILD_TYPE=Release"
+                         "-DSHADERC_SKIP_TESTS=ON"
+                         "-DCMAKE_INSTALL_LIBDIR=lib"
+                         (string-append "-DCMAKE_INSTALL_PREFIX="
+                                        out)))))
+           (add-after 'unpack 'unpack-sources
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((spirv-tools-source (assoc-ref inputs "spirv-tools-source"))
+                     (spirv-headers-source (assoc-ref inputs "spirv-headers-source"))
+                     (glslang-source (assoc-ref inputs "glslang-source")))
+                 (copy-recursively spirv-tools-source "third_party/spirv-tools")
+                 (copy-recursively spirv-headers-source
+                                   (string-append "third_party/spirv-tools"
+                                                  "/external/spirv-headers"))
+                 (copy-recursively glslang-source "third_party/glslang")
+                 #t))))))
+      (inputs
+       `(("python" ,python)))
+      (native-inputs
+       `(("cmake" ,cmake)
+         ("glslang-source" ,(package-source glslang))
+         ("pkg-config" ,pkg-config)
+         ("spirv-headers-source" ,(package-source spirv-headers))
+         ("spirv-tools-source" ,(package-source spirv-tools))))
+      (home-page "https://github.com/google/shaderc")
+      (synopsis "Tools for shader compilation")
+      (description "Shaderc is a collection of tools, libraries, and tests for
 shader compilation.")
-     (license license:asl2.0))))
+      (license license:asl2.0))))
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index a02ee5a64d..6cfe8fb1e9 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -957,9 +957,9 @@ of people.")
      ; named 'stubout'". The tests can be run by replacing the check phase with
      ; the command "python setup.py nosetests --verbosity=3".
     (native-inputs `(; Required for tests:
-                     ("python-mox3", python-mox3)
-                     ("python-nose", python-nose)))
-    (propagated-inputs `(("python-numpy", python-numpy)))
+                     ("python-mox3" ,python-mox3)
+                     ("python-nose" ,python-nose)))
+    (propagated-inputs `(("python-numpy" ,python-numpy)))
     (home-page "https://github.com/novnc/websockify")
     (synopsis "WebSockets support for any application/server")
     (description "Websockify translates WebSockets traffic to normal socket
@@ -986,7 +986,7 @@ directions.")
        #:tests? #f))                         ; no test target
     (native-inputs `(("flex" ,flex)))
     (inputs `(("gnutls" ,gnutls)
-              ("libcrypt", libgcrypt)))
+              ("libcrypt" ,libgcrypt)))
     (home-page "https://www.gedanken.org.uk/software/wwwoffle/")
     (synopsis "Caching web proxy optimized for intermittent internet links")
     (description "WWWOFFLE is a proxy web server that is especially good for
@@ -4048,14 +4048,14 @@ a pure C99 library.")
 (define-public uwsgi
   (package
     (name "uwsgi")
-    (version "2.0.15")
+    (version "2.0.17")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://projects.unbit.it/downloads/uwsgi-"
+              (uri (string-append "https://projects.unbit.it/downloads/uwsgi-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1zvj28wp3c1hacpd4c6ra5ilwvvfq3l8y6gn8i7mnncpddlzjbjp"))))
+                "1wlbaairsmhp6bx5wv282q9pgh6w7w6yrb8vxjznfaxrinsfkhix"))))
     (build-system gnu-build-system)
     (outputs '("out" "python"))
     (arguments
@@ -4968,10 +4968,10 @@ used to start services with both privileged and non-privileged port numbers.")
          "0n29wcgw32rhnraj9j21ibhwi0xagmmcskhbaz8ihxly7nx3p9h8"))))
     (build-system cmake-build-system)
     (outputs '("out"
-               "static")) ; 1.0MiB of .a files
+               "static"))               ; 1.0MiB of .a files
     (arguments
-     `(#:tests? #f ; No tests available
-       #:configure-flags (list "-DCMAKE_BUILD_TYPE=Release")
+     `(#:tests? #f                      ; no tests available
+       #:build-type "Release"
        #:phases
        (modify-phases %standard-phases
          (add-after 'install 'move-static-libraries
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index 06668d287b..9331af9a65 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -152,21 +152,21 @@ online pastebin services.")
           (zero? (system* "sh" "./bootstrap"
                           "--gnulib-srcdir=gnulib"
                           "--no-git")))))))
-   (inputs `(("autoconf", autoconf)
-             ("automake", automake)
-             ("doxygen", doxygen)
-             ("flex", flex)
-             ("gettext", gettext-minimal)
-             ("gnutls", gnutls/dane)
-             ("libiconv", libiconv)
-             ("libidn2", libidn2)
-             ("libmicrohttpd", libmicrohttpd)
-             ("libpsl", libpsl)
-             ("libtool", libtool)
-             ("pcre2", pcre2)
-             ("python", python)))
+   (inputs `(("autoconf" ,autoconf)
+             ("automake" ,automake)
+             ("doxygen" ,doxygen)
+             ("flex" ,flex)
+             ("gettext" ,gettext-minimal)
+             ("gnutls" ,gnutls/dane)
+             ("libiconv" ,libiconv)
+             ("libidn2" ,libidn2)
+             ("libmicrohttpd" ,libmicrohttpd)
+             ("libpsl" ,libpsl)
+             ("libtool" ,libtool)
+             ("pcre2" ,pcre2)
+             ("python" ,python)))
    ;; TODO: Add libbrotlidec, libnghttp2.
-   (native-inputs `(("pkg-config", pkg-config)))
+   (native-inputs `(("pkg-config" ,pkg-config)))
    (home-page "https://gitlab.com/gnuwget/wget2")
    (synopsis "Successor of GNU Wget")
    (description "GNU Wget2 is the successor of GNU Wget, a file and recursive
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index 0327deaf24..8496eb3365 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -221,7 +221,7 @@ integrate Windows applications into your desktop.")
 (define-public wine-staging-patchset-data
   (package
    (name "wine-staging-patchset-data")
-   (version "3.3")
+   (version "3.4")
    (source
     (origin
      (method url-fetch)
@@ -230,7 +230,7 @@ integrate Windows applications into your desktop.")
      (file-name (string-append name "-" version ".zip"))
      (sha256
       (base32
-       "16l28vrhqn27kipqwms622jz1prfky8qkjb8pj747k3qjnm2k1g9"))))
+       "00yzh9bqs2rjgvk78xv3gfkbv4f2bkch9vb1ii4xh883f7wvkz93"))))
    (build-system trivial-build-system)
    (native-inputs
     `(("bash" ,bash)
@@ -270,15 +270,16 @@ integrate Windows applications into your desktop.")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "https://dl.winehq.org/wine/source/3.x/wine-" version
-                    ".tar.xz"))
+                    "https://dl.winehq.org/wine/source/"
+                    (version-major version) ".x"
+                    "/wine-" version ".tar.xz"))
               (file-name (string-append name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0cx31jsll7mxd9r7v0vpahajqwb6da6cpwybv06l5ydkgfrbv505"))))
+                "14wf7536rkmhav9ibbvhqqkfqmbk1dckhd2679i5scizr5x290x4"))))
     (inputs `(("autoconf" ,autoconf) ; for autoreconf
-              ("gtk+", gtk+)
-              ("libva", libva)
+              ("gtk+" ,gtk+)
+              ("libva" ,libva)
               ("python" ,python)
               ("sdl2" ,sdl2)
               ("util-linux" ,util-linux) ; for hexdump
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index b16ef29ea5..97d5d577d3 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -706,7 +706,7 @@ experience.")
               ("libxdg-basedir" ,libxdg-basedir)
               ("libxkbcommon" ,libxkbcommon)
               ("lua" ,lua)
-              ("lua-lgi",lua-lgi)
+              ("lua-lgi" ,lua-lgi)
               ("pango" ,pango)
               ("startup-notification" ,startup-notification)
               ("xcb-util" ,xcb-util)
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index ceee6fa832..d8899e8c41 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -1096,7 +1096,7 @@ connectivity of the X server running on a particular @code{DISPLAY}.")
 (define-public rofi
   (package
     (name "rofi")
-    (version "1.5.0")
+    (version "1.5.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/DaveDavenport/rofi/"
@@ -1104,7 +1104,7 @@ connectivity of the X server running on a particular @code{DISPLAY}.")
                                   version "/rofi-" version ".tar.xz"))
               (sha256
                (base32
-                "0li2hl55sxzdpbxxiwgxsvkhyy6bh8qd2j1r8xh8y6q8a318zsz9"))))
+                "10r1jd3h5i22pdr619hmvxv6dhzf9i13j50c28g7yffdggx8ncjg"))))
     (build-system gnu-build-system)
     (inputs
      `(("pango" ,pango)
@@ -1329,9 +1329,9 @@ XCB util-xrm module provides the following libraries:
                         (install-file "README" doc)
                         ;; Avoid unspecified return value.
                         #t))))))
-    (inputs `(("libx11", libx11)
-              ("libxext", libxext)
-              ("libxxf86vm", libxxf86vm)))
+    (inputs `(("libx11" ,libx11)
+              ("libxext" ,libxext)
+              ("libxxf86vm" ,libxxf86vm)))
     (synopsis "Tiny monitor calibration loader for XFree86 (or X.org)")
     (description "xcalib is a tiny tool to load the content of vcgt-Tags in ICC
 profiles to the video card's gamma ramp.  It does work with most video card
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 293b47a653..54e969d6d1 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -560,7 +560,7 @@ callback.")
 (define-public perl-xml-simple
   (package
     (name "perl-xml-simple")
-    (version "2.22")
+    (version "2.25")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -568,7 +568,7 @@ callback.")
                    version ".tar.gz"))
              (sha256
               (base32
-               "0jgbk30jizafpl7078jhw1di1yh08gf8d85dsvjllr595vr0widr"))))
+               "1y6vh328zrh085d40852v4ij2l4g0amxykswxd1nfhd2pspds7sk"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-xml-parser" ,perl-xml-parser)
@@ -707,14 +707,14 @@ a schema.")
 (define-public perl-xml-compile-soap
   (package
     (name "perl-xml-compile-soap")
-    (version "3.21")
+    (version "3.24")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
                                   "XML-Compile-SOAP-" version ".tar.gz"))
               (sha256
                (base32
-                "0rxidh7kjyhnw2y789bqbwccnp8n0m3xskn524y9c752s64qpjcz"))))
+                "0pkcph562l2ij7rlwlvm58v6y062qsbydfpaz2qnph2ixqy0xfd1"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-file-slurp-tiny" ,perl-file-slurp-tiny)
@@ -1309,7 +1309,8 @@ SAX2 APIs.")
                                   version ".zip"))
               (sha256
                (base32
-                "0w19k1awslmihpwsxwjbg89hv0vjhk4k3i0vrfchy3mqknd988y5"))))
+                "0w19k1awslmihpwsxwjbg89hv0vjhk4k3i0vrfchy3mqknd988y5"))
+              (patches (search-patches "java-simple-xml-fix-tests.patch"))))
     (build-system ant-build-system)
     (arguments
      `(#:build-target "build"
@@ -1415,7 +1416,7 @@ characters into a single event.")
     (propagated-inputs
      `(("perl-libxml" ,perl-libxml)
        ("perl-xml-filter-buffertext" ,perl-xml-filter-buffertext)
-       ("perl-xml-namespacesupport", perl-xml-namespacesupport)
+       ("perl-xml-namespacesupport" ,perl-xml-namespacesupport)
        ("perl-xml-sax-base" ,perl-xml-sax-base)))
     (home-page "http://search.cpan.org/dist/XML-SAX-Writer/")
     (synopsis "SAX2 XML Writer")
@@ -1472,7 +1473,7 @@ It provides a flexible escaping technique and pretty printing.")
        ("perl-xml-sax-writer" ,perl-xml-sax-writer)
        ("perl-xml-simple" ,perl-xml-simple)
        ("perl-xml-xpathengine" ,perl-xml-xpathengine)
-       ("perl-test-pod", perl-test-pod)
+       ("perl-test-pod" ,perl-test-pod)
        ("perl-tree-xpathengine" ,perl-tree-xpathengine)))
     (home-page "http://search.cpan.org/dist/XML-Twig/")
     (synopsis "Perl module for processing huge XML documents in tree mode")
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index e2cfef3a94..0dbc36282e 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -5932,7 +5932,7 @@ basic eye-candy effects.")
               ("python2-rencode" ,python2-rencode)
               ("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)
-                     ("python2-cython", python2-cython)))
+                     ("python2-cython" ,python2-cython)))
     (arguments
      `(#:python ,python-2 ;; no full Python 3 support yet
        #:configure-flags '("--with-tests"
diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
index 72927c4534..8ae248ebe4 100644
--- a/gnu/services/databases.scm
+++ b/gnu/services/databases.scm
@@ -112,7 +112,7 @@ host	all	all	::1/128 	trust"))
   (match file
     (($ <postgresql-config-file> log-destination hba-file
                                  ident-file extra-config)
-     (define (quote' string)
+     (define (single-quote string)
        (if string
            (list "'" string "'")
            '()))
@@ -124,9 +124,9 @@ host	all	all	::1/128 	trust"))
           ((key . #f) '())
           ((key values ...) `(,key " = " ,@values "\n")))
 
-        `(("log_destination" ,@(quote' log-destination))
-          ("hba_file" ,@(quote' hba-file))
-          ("ident_file" ,@(quote' ident-file))
+        `(("log_destination" ,@(single-quote log-destination))
+          ("hba_file" ,@(single-quote hba-file))
+          ("ident_file" ,@(single-quote ident-file))
           ,@extra-config)))
 
      (gexp->derivation
diff --git a/gnu/services/mcron.scm b/gnu/services/mcron.scm
index b6cb8bc726..5bee02a587 100644
--- a/gnu/services/mcron.scm
+++ b/gnu/services/mcron.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,7 +20,7 @@
   #:use-module (gnu services)
   #:use-module (gnu services base)
   #:use-module (gnu services shepherd)
-  #:autoload   (gnu packages guile) (mcron2)
+  #:autoload   (gnu packages guile) (mcron)
   #:use-module (guix records)
   #:use-module (guix gexp)
   #:use-module (srfi srfi-1)
@@ -53,7 +53,7 @@
   make-mcron-configuration
   mcron-configuration?
   (mcron             mcron-configuration-mcron    ;package
-                     (default mcron2))
+                     (default mcron))
   (jobs              mcron-configuration-jobs     ;list of <mcron-job>
                      (default '())))
 
@@ -100,7 +100,7 @@
                                          jobs)))))
                 (default-value (mcron-configuration)))) ;empty job list
 
-(define* (mcron-service jobs #:optional (mcron mcron2))
+(define* (mcron-service jobs #:optional (mcron mcron))
   "Return an mcron service running @var{mcron} that schedules @var{jobs}, a
 list of gexps denoting mcron job specifications.
 
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm
index 301ba74041..f1d2be3f6b 100644
--- a/gnu/services/ssh.scm
+++ b/gnu/services/ssh.scm
@@ -302,6 +302,10 @@ The other options should be self-descriptive."
   (subsystems            openssh-configuration-subsystems
                          (default '(("sftp" "internal-sftp"))))
 
+  ;; list of strings
+  (accepted-environment  openssh-configuration-accepted-environment
+                         (default '()))
+
   ;; list of user-name/file-like tuples
   (authorized-keys       openssh-authorized-keys
                          (default '()))
@@ -430,6 +434,9 @@ of user-name/file-like tuples."
            (format port "AuthorizedKeysFile \
  .ssh/authorized_keys .ssh/authorized_keys2 /etc/ssh/authorized_keys.d/%u\n")
 
+           (for-each (lambda (s) (format port "AcceptEnv ~a\n" s))
+                     '#$(openssh-configuration-accepted-environment config))
+
            (for-each
             (match-lambda
               ((name command) (format port "Subsystem\t~a\t~a\n" name command)))
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index ae8780d2e1..594ba66ff4 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -144,6 +144,7 @@ made available under the /xchg CIFS share."
        (initrd       (if initrd                   ; use the default initrd?
                          (return initrd)
                          (base-initrd %linux-vm-file-systems
+                                      #:on-error 'backtrace
                                       #:linux linux
                                       #:linux-modules %base-initrd-modules
                                       #:qemu-networking? #t))))
diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm
index 378c7ff021..63d2789cc5 100644
--- a/gnu/tests/base.scm
+++ b/gnu/tests/base.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -477,7 +477,7 @@ in a loop.  See <http://bugs.gnu.org/26931>.")
 
 (define %mcron-os
   ;; System with an mcron service, with one mcron job for "root" and one mcron
-  ;; job for an unprivileged user (note: #:user is an 'mcron2' thing.)
+  ;; job for an unprivileged user.
   (let ((job1 #~(job next-second-from
                      (lambda ()
                        (call-with-output-file "witness"
diff --git a/guix/download.scm b/guix/download.scm
index 50aa78fe0d..a91d924af8 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -66,7 +66,6 @@
        "ftp://gcc.gnu.org/pub/gcc/"
        ,@(map (cut string-append <> "/gcc") gnu-mirrors))
       (gnupg
-       "http://gd.tuwien.ac.at/privacy/gnupg/"
        "http://artfiles.org/gnupg.org"
        "http://www.crysys.hu/"
        "https://gnupg.org/ftp/gcrypt/"
@@ -143,7 +142,6 @@
        "http://apache.belnet.be/"
        "http://mirrors.ircam.fr/pub/apache/"
        "http://apache-mirror.rbc.ru/pub/apache/"
-       "ftp://gd.tuwien.ac.at/pub/infosys/servers/http/apache/dist/"
 
        ;; As a last resort, try the archive.
        "http://archive.apache.org/dist/")
@@ -163,7 +161,6 @@
        "ftp://ftp.piotrkosoft.net/pub/mirrors/ftp.x.org/"
        "ftp://ftp.portal-to-web.de/pub/mirrors/x.org/"
        "ftp://ftp.solnet.ch/mirror/x.org/"
-       "ftp://gd.tuwien.ac.at/X11/"
        "ftp://mi.mirror.garr.it/mirrors/x.org/"
        "ftp://mirror.cict.fr/x.org/"
        "ftp://mirror.switch.ch/mirror/X11/"
diff --git a/guix/git-download.scm b/guix/git-download.scm
index 731e549b38..33f102bc6c 100644
--- a/guix/git-download.scm
+++ b/guix/git-download.scm
@@ -109,7 +109,7 @@ HASH-ALGO (a symbol).  Use NAME as the file name, or a generic name if #f."
           ;; grep, etc. to be in $PATH.
           (set-path-environment-variable "PATH" '("bin")
                                          (match '#+inputs
-                                           (((names dirs) ...)
+                                           (((names dirs outputs ...) ...)
                                             dirs)))
 
           (or (git-fetch (getenv "git url") (getenv "git commit")
diff --git a/guix/git.scm b/guix/git.scm
index fc41e2ace3..d31c35f64f 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,6 +28,8 @@
   #:use-module (rnrs bytevectors)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35)
   #:export (%repository-cache-directory
             latest-repository-commit))
 
@@ -94,17 +97,32 @@ create the store directory name."
 
 (define (switch-to-ref repository ref)
   "Switch to REPOSITORY's branch, commit or tag specified by REF."
-  (let* ((oid (match ref
-                (('branch . branch)
-                 (reference-target
-                  (branch-lookup repository branch BRANCH-REMOTE)))
-                (('commit . commit)
-                 (string->oid commit))
-                (('tag    . tag)
-                 (reference-name->oid repository
-                                      (string-append "refs/tags/" tag)))))
-         (obj (object-lookup repository oid)))
-    (reset repository obj RESET_HARD)))
+  (define obj
+    (match ref
+      (('branch . branch)
+       (let ((oid (reference-target
+                   (branch-lookup repository branch BRANCH-REMOTE))))
+         (object-lookup repository oid)))
+      (('commit . commit)
+       (let ((len (string-length commit)))
+         ;; 'object-lookup-prefix' appeared in Guile-Git in Mar. 2018, so we
+         ;; can't be sure it's available.  Furthermore, 'string->oid' used to
+         ;; read out-of-bounds when passed a string shorter than 40 chars,
+         ;; which is why we delay calls to it below.
+         (if (< len 40)
+             (if (module-defined? (resolve-interface '(git object))
+                                  'object-lookup-prefix)
+                 (object-lookup-prefix repository (string->oid commit) len)
+                 (raise (condition
+                         (&message
+                          (message "long Git object ID is required")))))
+             (object-lookup repository (string->oid commit)))))
+      (('tag    . tag)
+       (let ((oid (reference-name->oid repository
+                                       (string-append "refs/tags/" tag))))
+         (object-lookup repository oid)))))
+
+  (reset repository obj RESET_HARD))
 
 (define* (latest-repository-commit store url
                                    #:key
diff --git a/guix/glob.scm b/guix/glob.scm
index 4fc5173ac0..a9fc744802 100644
--- a/guix/glob.scm
+++ b/guix/glob.scm
@@ -18,80 +18,120 @@
 
 (define-module (guix glob)
   #:use-module (ice-9 match)
-  #:export (compile-glob-pattern
+  #:export (string->sglob
+            compile-sglob
+            string->compiled-sglob
             glob-match?))
 
 ;;; Commentary:
 ;;;
 ;;; This is a minimal implementation of "glob patterns" (info "(libc)
 ;;; Globbbing").  It is currently limited to simple patterns and does not
-;;; support braces and square brackets, for instance.
+;;; support braces, for instance.
 ;;;
 ;;; Code:
 
-(define (wildcard-indices str)
-  "Return the list of indices in STR where wildcards can be found."
-  (let loop ((index 0)
-             (result '()))
-    (if (= index (string-length str))
-        (reverse result)
-        (loop (+ 1 index)
-              (case (string-ref str index)
-                ((#\? #\*) (cons index result))
-                (else      result))))))
+(define (parse-bracket chars)
+  "Parse CHARS, a list of characters that extracted from a '[...]' sequence."
+  (match chars
+    ((start #\- end)
+     `(range ,start ,end))
+    (lst
+     `(set ,@lst))))
 
-(define (compile-glob-pattern str)
-  "Return an sexp that represents the compiled form of STR, a glob pattern
-such as \"foo*\" or \"foo??bar\"."
+(define (string->sglob str)
+  "Return an sexp, called an \"sglob\", that represents the compiled form of
+STR, a glob pattern such as \"foo*\" or \"foo??bar\"."
   (define flatten
     (match-lambda
       (((? string? str)) str)
       (x x)))
 
-  (let loop ((index   0)
-             (indices (wildcard-indices str))
+  (define (cons-string chars lst)
+    (match chars
+      (() lst)
+      (_ (cons (list->string (reverse chars)) lst))))
+
+  (let loop ((chars   (string->list str))
+             (pending '())
+             (brackets 0)
              (result '()))
-    (match indices
+    (match chars
       (()
-       (flatten (cond ((zero? index)
-                       (list str))
-                      ((= index (string-length str))
-                       (reverse result))
-                      (else
-                       (reverse (cons (string-drop str index)
-                                      result))))))
-      ((wildcard-index . rest)
-       (let ((wildcard (match (string-ref str wildcard-index)
+       (flatten (reverse (if (null? pending)
+                             result
+                             (cons-string pending result)))))
+      (((and chr (or #\? #\*)) . rest)
+       (let ((wildcard (match chr
                          (#\? '?)
                          (#\* '*))))
-         (match (substring str index wildcard-index)
-           (""  (loop (+ 1 wildcard-index)
-                      rest
-                      (cons wildcard result)))
-           (str (loop (+ 1 wildcard-index)
-                      rest
-                      (cons* wildcard str result)))))))))
+         (if (zero? brackets)
+             (loop rest '() 0
+                   (cons* wildcard (cons-string pending result)))
+             (loop rest (cons chr pending) brackets result))))
+      ((#\[ . rest)
+       (if (zero? brackets)
+           (loop rest '() (+ 1 brackets)
+                 (cons-string pending result))
+           (loop rest (cons #\[ pending) (+ 1 brackets) result)))
+      ((#\] . rest)
+       (cond ((zero? brackets)
+              (error "unexpected closing bracket" str))
+             ((= 1 brackets)
+              (loop rest '() 0
+                    (cons (parse-bracket (reverse pending)) result)))
+             (else
+              (loop rest (cons #\] pending) (- brackets 1) result))))
+      ((chr . rest)
+       (loop rest (cons chr pending) brackets result)))))
+
+(define (compile-sglob sglob)
+  "Compile SGLOB into a more efficient representation."
+  (if (string? sglob)
+      sglob
+      (let loop ((sglob sglob)
+                 (result '()))
+        (match sglob
+          (()
+           (reverse result))
+          (('? . rest)
+           (loop rest (cons char-set:full result)))
+          ((('range start end) . rest)
+           (loop rest (cons (ucs-range->char-set
+                             (char->integer start)
+                             (+ 1 (char->integer end)))
+                            result)))
+          ((('set . chars) . rest)
+           (loop rest (cons (list->char-set chars) result)))
+          ((head . rest)
+           (loop rest (cons head result)))))))
+
+(define string->compiled-sglob
+  (compose compile-sglob string->sglob))
 
 (define (glob-match? pattern str)
   "Return true if STR matches PATTERN, a compiled glob pattern as returned by
-'compile-glob-pattern'."
+'compile-sglob'."
   (let loop ((pattern pattern)
              (str str))
    (match pattern
-     ((? string? literal) (string=? literal str))
-     (((? string? one))   (string=? one str))
-     (('*)  #t)
-     (('?) (= 1 (string-length str)))
-     (()    #t)
+     ((? string? literal)
+      (string=? literal str))
+     (()
+      (string-null? str))
+     (('*)
+      #t)
      (('* suffix . rest)
       (match (string-contains str suffix)
         (#f    #f)
         (index (loop rest
                      (string-drop str
                                   (+ index (string-length suffix)))))))
-     (('? . rest)
+     (((? char-set? cs) . rest)
       (and (>= (string-length str) 1)
-           (loop rest (string-drop str 1))))
+           (let ((chr (string-ref str 0)))
+             (and (char-set-contains? cs chr)
+                  (loop rest (string-drop str 1))))))
      ((prefix . rest)
       (and (string-prefix? prefix str)
            (loop rest (string-drop str (string-length prefix))))))))
diff --git a/guix/import/elpa.scm b/guix/import/elpa.scm
index 45a419217c..43e9eb60c9 100644
--- a/guix/import/elpa.scm
+++ b/guix/import/elpa.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
-;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -67,15 +67,15 @@ NAMES (strings)."
         (string-append package-name-prefix (string-downcase name)))))
 
 (define* (elpa-url #:optional (repo 'gnu))
-  "Retrun the URL of REPO."
+  "Retrieve the URL of REPO."
   (let ((elpa-archives
-         '((gnu . "http://elpa.gnu.org/packages")
-           (melpa-stable . "http://stable.melpa.org/packages")
-           (melpa . "http://melpa.org/packages"))))
+         '((gnu . "https://elpa.gnu.org/packages")
+           (melpa-stable . "https://stable.melpa.org/packages")
+           (melpa . "https://melpa.org/packages"))))
     (assq-ref elpa-archives repo)))
 
 (define* (elpa-fetch-archive #:optional (repo 'gnu))
-  "Retrive the archive with the list of packages available from REPO."
+  "Retrieve the archive with the list of packages available from REPO."
   (let ((url (and=> (elpa-url repo)
                     (cut string-append <> "/archive-contents"))))
     (if url
@@ -190,7 +190,7 @@ include VERSION."
                             url)))
       (_ #f))))
 
-(define* (elpa-package->sexp pkg)
+(define* (elpa-package->sexp pkg #:optional license)
   "Return the `package' S-expression for the Emacs package PKG, a record of
 type '<elpa-package>'."
 
@@ -234,12 +234,17 @@ type '<elpa-package>'."
        (home-page ,(elpa-package-home-page pkg))
        (synopsis ,(elpa-package-synopsis pkg))
        (description ,(elpa-package-description pkg))
-       (license license:gpl3+))))
+       (license ,license))))
 
 (define* (elpa->guix-package name #:optional (repo 'gnu))
   "Fetch the package NAME from REPO and produce a Guix package S-expression."
-  (let ((pkg (fetch-elpa-package name repo)))
-    (and=> pkg elpa-package->sexp)))
+  (match (fetch-elpa-package name repo)
+    (#f #f)
+    (package
+      ;; ELPA is known to contain only GPLv3+ code.  Other repos may contain
+      ;; code under other license but there's no license metadata.
+      (let ((license (and (eq? 'gnu repo) 'license:gpl3+)))
+        (elpa-package->sexp package license)))))
 
 
 ;;;
diff --git a/tests/elpa.scm b/tests/elpa.scm
index 46c6ac2d75..44e3914f2e 100644
--- a/tests/elpa.scm
+++ b/tests/elpa.scm
@@ -81,24 +81,31 @@ information about package NAME. (Function 'elpa-package-info'.)"
                                 auctex-readme-mock
                                 url)))
           (_ #f)))))
-   (match (elpa->guix-package pkg)
-     (('package
-        ('name "emacs-auctex")
-        ('version "11.88.6")
-        ('source
-         ('origin
-           ('method 'url-fetch)
-           ('uri ('string-append
-                  "http://elpa.gnu.org/packages/auctex-" 'version ".tar"))
-           ('sha256 ('base32 (? string? hash)))))
-        ('build-system 'emacs-build-system)
-        ('home-page "http://www.gnu.org/software/auctex/")
-        ('synopsis "Integrated environment for *TeX*")
-        ('description (? string?))
-        ('license 'license:gpl3+))
-      #t)
-     (x
-      (pk 'fail x #f)))))
+   (mock
+    ((guix build download) url-fetch
+     (lambda (url file . _)
+       (call-with-output-file file
+         (lambda (port)
+           (display "fake tarball" port)))))
+
+    (match (elpa->guix-package pkg)
+      (('package
+         ('name "emacs-auctex")
+         ('version "11.88.6")
+         ('source
+          ('origin
+            ('method 'url-fetch)
+            ('uri ('string-append
+                   "https://elpa.gnu.org/packages/auctex-" 'version ".tar"))
+            ('sha256 ('base32 (? string? hash)))))
+         ('build-system 'emacs-build-system)
+         ('home-page "http://www.gnu.org/software/auctex/")
+         ('synopsis "Integrated environment for *TeX*")
+         ('description (? string?))
+         ('license 'license:gpl3+))
+       #t)
+      (x
+       (pk 'fail x #f))))))
 
 (test-assert "elpa->guix-package test 1"
   (eval-test-with-elpa "auctex"))
diff --git a/tests/glob.scm b/tests/glob.scm
index 033eeb10fe..3134069789 100644
--- a/tests/glob.scm
+++ b/tests/glob.scm
@@ -23,36 +23,47 @@
 
 (test-begin "glob")
 
-(test-equal "compile-glob-pattern, no wildcards"
-  "foo"
-  (compile-glob-pattern "foo"))
+(define-syntax test-string->sglob
+  (syntax-rules (=>)
+    ((_ pattern => result rest ...)
+     (begin
+       (test-equal (format #f "string->sglob, ~s" pattern)
+         result
+         (string->sglob pattern))
+       (test-string->sglob rest ...)))
+    ((_)
+     #t)))
 
-(test-equal "compile-glob-pattern, Kleene star"
-  '("foo" * "bar")
-  (compile-glob-pattern "foo*bar"))
+(define-syntax test-glob-match
+  (syntax-rules (matches and not)
+    ((_ (pattern-string matches strings ... (and not others ...)) rest ...)
+     (begin
+       (test-assert (format #f "glob-match? ~s" pattern-string)
+         (let ((pattern (string->compiled-sglob pattern-string)))
+           (and (glob-match? pattern strings) ...
+                (not (glob-match? pattern others)) ...)))
+       (test-glob-match rest ...)))
+    ((_)
+     #t)))
 
-(test-equal "compile-glob-pattern, question mark"
-  '(? "foo" *)
-  (compile-glob-pattern "?foo*"))
+(test-string->sglob
+ "foo" => "foo"
+ "?foo*" => '(? "foo" *)
+ "foo[1-5]" => '("foo" (range #\1 #\5))
+ "foo[abc]bar" => '("foo" (set #\a #\b #\c) "bar")
+ "foo[a[b]c]bar" => '("foo" (set #\a #\[ #\b #\] #\c) "bar")
+ "[123]x" => '((set #\1 #\2 #\3) "x")
+ "[a-z]" => '((range #\a #\z)))
 
-(test-assert "literal match"
-  (let ((pattern (compile-glob-pattern "foo")))
-    (and (glob-match? pattern "foo")
-         (not (glob-match? pattern "foobar"))
-         (not (glob-match? pattern "barfoo")))))
-
-(test-assert "trailing star"
-  (let ((pattern (compile-glob-pattern "foo*")))
-    (and (glob-match? pattern "foo")
-         (glob-match? pattern "foobar")
-         (not (glob-match? pattern "xfoo")))))
-
-(test-assert "question marks"
-  (let ((pattern (compile-glob-pattern "foo??bar")))
-    (and (glob-match? pattern "fooxxbar")
-         (glob-match? pattern "fooZZbar")
-         (not (glob-match? pattern "foobar"))
-         (not (glob-match? pattern "fooxxxbar"))
-         (not (glob-match? pattern "fooxxbarzz")))))
+(test-glob-match
+ ("foo" matches "foo" (and not "foobar" "barfoo"))
+ ("foo*" matches "foo" "foobar" (and not "xfoo"))
+ ("foo??bar" matches "fooxxbar" "fooZZbar"
+  (and not "foobar" "fooxxxbar" "fooxxbarzz"))
+ ("foo?" matches "foox" (and not "fooxx"))
+ ("ab[0-9]c" matches "ab0c" "ab7c" "ab9c"
+  (and not "ab-c" "ab00c" "ab3"))
+ ("ab[cdefg]" matches "abc" "abd" "abg"
+  (and not "abh" "abcd" "ab[")))
 
 (test-end "glob")