~ruther/guix-local

dcaf70897a0bad38a4638a2905aaa3c46b1f1402 — Mark H Weaver 9 years ago bf62b8f + 040b629
Merge branch 'master' into core-updates
M doc/guix.texi => doc/guix.texi +14 -0
@@ 5546,6 5546,20 @@ example, the command below produces the reference graph of your profile
@example
guix graph -t references `readlink -f ~/.guix-profile`
@end example

@item referrers
This is the graph of the @dfn{referrers} of a store item, as returned by
@command{guix gc --referrers} (@pxref{Invoking guix gc}).

This relies exclusively on local information from your store.  For
instance, let us suppose that the current Inkscape is available in 10
profiles on your machine; @command{guix graph -t referrers inkscape}
will show a graph rooted at Inkscape and with those 10 profiles linked
to it.

It can help determine what is preventing a store item from being garbage
collected.

@end table

The available options are the following:

M gnu/local.mk => gnu/local.mk +7 -1
@@ 6,6 6,7 @@
# Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
# Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
# Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
# Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
#
# This file is part of GNU Guix.
#


@@ 456,6 457,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/antiword-CVE-2014-8123.patch			\
  %D%/packages/patches/apr-skip-getservbyname-test.patch	\
  %D%/packages/patches/arb-ldconfig.patch			\
  %D%/packages/patches/artanis-fix-Makefile.in.patch		\
  %D%/packages/patches/ath9k-htc-firmware-binutils.patch	\
  %D%/packages/patches/ath9k-htc-firmware-gcc.patch		\
  %D%/packages/patches/ath9k-htc-firmware-objcopy.patch		\


@@ 527,13 529,17 @@ dist_patch_DATA =						\
  %D%/packages/patches/fltk-xfont-on-demand.patch		\
  %D%/packages/patches/fontforge-svg-modtime.patch		\
  %D%/packages/patches/freeimage-CVE-2015-0852.patch		\
  %D%/packages/patches/freeimage-CVE-2016-5684.patch		\
  %D%/packages/patches/gawk-shell.patch				\
  %D%/packages/patches/gcc-arm-bug-71399.patch			\
  %D%/packages/patches/gcc-arm-link-spec-fix.patch		\
  %D%/packages/patches/gcc-cross-environment-variables.patch	\
  %D%/packages/patches/gcc-libvtv-runpath.patch			\
  %D%/packages/patches/gcc-5.0-libvtv-runpath.patch		\
  %D%/packages/patches/gcc-6-arm-none-eabi-multilib.patch	\
  %D%/packages/patches/gcc-6-cross-environment-variables.patch	\
  %D%/packages/patches/gd-CVE-2016-7568.patch			\
  %D%/packages/patches/gd-CVE-2016-8670.patch			\
  %D%/packages/patches/gd-fix-gd2-read-test.patch		\
  %D%/packages/patches/gd-fix-tests-on-i686.patch		\
  %D%/packages/patches/gegl-CVE-2012-4433.patch			\


@@ 597,7 603,6 @@ dist_patch_DATA =						\
  %D%/packages/patches/id3lib-CVE-2007-4460.patch			\
  %D%/packages/patches/ilmbase-fix-tests.patch			\
  %D%/packages/patches/inkscape-drop-wait-for-targets.patch	\
  %D%/packages/patches/irrlicht-mesa-10.patch			\
  %D%/packages/patches/isl-0.11.1-aarch64-support.patch	\
  %D%/packages/patches/jansson-CVE-2016-4425.patch		\
  %D%/packages/patches/jasper-CVE-2007-2721.patch		\


@@ 712,6 717,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/ngircd-no-dns-in-tests.patch		\
  %D%/packages/patches/ninja-tests.patch			\
  %D%/packages/patches/ninja-zero-mtime.patch			\
  %D%/packages/patches/node-9077.patch				\
  %D%/packages/patches/nss-pkgconfig.patch			\
  %D%/packages/patches/nvi-assume-preserve-path.patch		\
  %D%/packages/patches/nvi-dbpagesize-binpower.patch		\

M gnu/packages/audio.scm => gnu/packages/audio.scm +2 -2
@@ 910,7 910,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
(define-public guitarix
  (package
    (name "guitarix")
    (version "0.35.1")
    (version "0.35.2")
    (source (origin
             (method url-fetch)
             (uri (string-append


@@ 918,7 918,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
                   version ".tar.xz"))
             (sha256
              (base32
               "066qva1zk63qw60s0vbi9g9jh22ljw67p91pk82kv11gw24h3vg6"))))
               "1qj3adjhg511jygbjkl9k5v0gcjmg6ifc479rspfyf45m383pp3p"))))
    (build-system waf-build-system)
    (arguments
     `(#:tests? #f ; no "check" target

M gnu/packages/bioinformatics.scm => gnu/packages/bioinformatics.scm +92 -0
@@ 56,6 56,8 @@
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages groff)
  #:use-module (gnu packages guile)
  #:use-module (gnu packages haskell)
  #:use-module (gnu packages image)
  #:use-module (gnu packages imagemagick)
  #:use-module (gnu packages java)


@@ 7137,6 7139,96 @@ ranges and it computes reads profiles and coverage profiles.  It also handles
paired-end data.")
    (license license:gpl2+)))

(define-public r-rcas
  (package
    (name "r-rcas")
    (version "0.99.6")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/BIMSBbioinfo/RCAS/archive/v"
                                  version ".tar.gz"))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1ljgl2b4r6w2n0i9i04d9xaphajsvhfkjdj2i2z830nha4m3w8f0"))))
    (build-system r-build-system)
    (native-inputs
     `(("r-knitr" ,r-knitr)
       ("r-testthat" ,r-testthat)
       ;; During vignette building knitr checks that "pandoc-citeproc"
       ;; is in the PATH.
       ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)))
    (propagated-inputs
     `(("r-data-table" ,r-data-table)
       ("r-biomart" ,r-biomart)
       ("r-org-hs-eg-db" ,r-org-hs-eg-db)
       ("r-org-ce-eg-db" ,r-org-ce-eg-db)
       ("r-org-dm-eg-db" ,r-org-dm-eg-db)
       ("r-org-mm-eg-db" ,r-org-mm-eg-db)
       ("r-bsgenome-hsapiens-ucsc-hg19" ,r-bsgenome-hsapiens-ucsc-hg19)
       ("r-bsgenome-mmusculus-ucsc-mm9" ,r-bsgenome-mmusculus-ucsc-mm9)
       ("r-bsgenome-celegans-ucsc-ce10" ,r-bsgenome-celegans-ucsc-ce10)
       ("r-bsgenome-dmelanogaster-ucsc-dm3" ,r-bsgenome-dmelanogaster-ucsc-dm3)
       ("r-topgo" ,r-topgo)
       ("r-dt" ,r-dt)
       ("r-plotly" ,r-plotly)
       ("r-motifrg" ,r-motifrg)
       ("r-genomation" ,r-genomation)
       ("r-genomicfeatures" ,r-genomicfeatures)
       ("r-rtracklayer" ,r-rtracklayer)
       ("r-rmarkdown" ,r-rmarkdown)))
    (synopsis "RNA-centric annotation system")
    (description
     "RCAS aims to be a standalone RNA-centric annotation system that provides
intuitive reports and publication-ready graphics.  This package provides the R
library implementing most of the pipeline's features.")
    (home-page "https://github.com/BIMSBbioinfo/RCAS")
    (license license:expat)))

(define-public rcas-web
  (package
    (name "rcas-web")
    (version "0.0.3")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://github.com/BIMSBbioinfo/rcas-web/"
                           "releases/download/v" version
                           "/rcas-web-" version ".tar.gz"))
       (sha256
        (base32
         "0d3my0g8i7js59n184zzzjdki7hgmhpi4rhfvk7i6jsw01ba04qq"))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (add-after 'install 'wrap-executable
           (lambda* (#:key inputs outputs #:allow-other-keys)
             (let* ((out (assoc-ref outputs "out"))
                    (json   (assoc-ref inputs "guile-json"))
                    (redis  (assoc-ref inputs "guile-redis"))
                    (path   (string-append
                             json  "/share/guile/site/2.2:"
                             redis "/share/guile/site/2.2")))
               (wrap-program (string-append out "/bin/rcas-web")
                 `("GUILE_LOAD_PATH" ":" = (,path))
                 `("GUILE_LOAD_COMPILED_PATH" ":" = (,path))
                 `("R_LIBS_SITE" ":" = (,(getenv "R_LIBS_SITE")))))
             #t)))))
    (inputs
     `(("r" ,r)
       ("r-rcas" ,r-rcas)
       ("guile-next" ,guile-next)
       ("guile-json" ,guile2.2-json)
       ("guile-redis" ,guile2.2-redis)))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (home-page "https://github.com/BIMSBbioinfo/rcas-web")
    (synopsis "Web interface for RNA-centric annotation system (RCAS)")
    (description "This package provides a simple web interface for the
@dfn{RNA-centric annotation system} (RCAS).")
    (license license:agpl3+)))

(define-public emboss
  (package
    (name "emboss")

M gnu/packages/cdrom.scm => gnu/packages/cdrom.scm +9 -4
@@ 288,7 288,7 @@ from an audio CD.")
(define-public abcde
  (package
    (name "abcde")
    (version "2.7.1")
    (version "2.7.2")
    (home-page "https://abcde.einval.com/")
    (source (origin
              (method url-fetch)


@@ 296,7 296,7 @@ from an audio CD.")
                                  version ".tar.gz"))
              (sha256
               (base32
                "0l7j0nk8p30s97285i418rv9ym9bgns7bn6l8gldw3mjhnby609l"))
                "1pakpi41k8yd780mfp0snhia6mmwjwxk9lcrq6gynimch8b8hfda"))
              (modules '((guix build utils)))
              (snippet
               '(substitute* "Makefile"


@@ 314,7 314,12 @@ from an audio CD.")
               (("^prefix = .*$")
                (string-append "prefix = "
                               (assoc-ref outputs "out")
                               "\n")))))
                               "\n"))
               (("^sysconfdir = .*$")
                (string-append "sysconfdir = "
                               (assoc-ref outputs "out")
                               "/etc/\n")))
             #t))
         (add-after 'install 'wrap
           (lambda* (#:key inputs outputs #:allow-other-keys)
             (let ((wget   (assoc-ref inputs "wget"))


@@ 336,7 341,7 @@ from an audio CD.")
               (for-each wrap
                         (find-files (string-append out "/bin")
                                     ".*"))))))
       #:tests? #f))
       #:tests? #f)) ; no test target

    (inputs `(("wget" ,wget)
              ("which" ,which)

M gnu/packages/emacs.scm => gnu/packages/emacs.scm +70 -1
@@ 12,7 12,7 @@
;;; Copyright © 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016 ng0 <ngillmann@runbox.com>
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2016 Alex Vong <alexvong1995@gmail.com>


@@ 2981,6 2981,54 @@ Lua programing language}.")
news items, openrc and runscripts.")
    (license license:gpl2+)))

(define-public emacs-evil
  (package
    (name "emacs-evil")
    (version "1.2.12")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://bitbucket.org/lyro/evil/get/"
                           version ".tar.bz2"))
       (file-name (string-append name "-" version ".tar.bz2"))
       (sha256
        (base32
         "17cda9fnbq3gmjcxs3lyq64gxswrf37y864bm53rldwsk3khq2yi"))))
    (build-system emacs-build-system)
    (propagated-inputs
     `(("emacs-undo-tree" ,emacs-undo-tree)
       ("emacs-goto-chg" ,emacs-goto-chg)))
    (home-page "https://bitbucket.com/lyro/evil")
    (synopsis "Extensible Vi layer for Emacs")
    (description
     "Evil is an extensible vi layer for Emacs.  It emulates the
main features of Vim, and provides facilities for writing custom
extensions.")
    (license license:gpl3+)))

(define-public emacs-goto-chg
  (package
    (name "emacs-goto-chg")
    (version "1.6")
    (source
     (origin
       (method url-fetch)
       ;; There is no versioned source.
       (uri "https://www.emacswiki.org/emacs/download/goto-chg.el")
       (sha256
        (base32
         "078d6p4br5vips7b9x4v6cy0wxf6m5ij9gpqd4g33bryn22gnpij"))))
    (build-system emacs-build-system)
    ;; There is no other home page.
    (home-page "https://www.emacswiki.org/emacs/goto-chg.el")
    (synopsis "Go to the last change in the Emacs buffer")
    (description
     "This package provides @code{M-x goto-last-change} command that goes to
the point of the most recent edit in the current Emacs buffer.  When repeated,
go to the second most recent edit, etc.  Negative argument, @kbd{C-u -}, is
used for reverse direction.")
    (license license:gpl2+)))

(define-public emacs-writegood-mode
  (package
    (name "emacs-writegood-mode")


@@ 3183,3 3231,24 @@ display and edit the text.

This package contains the library runtime.")
    (license license:lgpl2.1+)))

(define-public emacs-nginx-mode
  (package
    (name "emacs-nginx-mode")
    (version "1.1.4")
    (source
     (origin
       (method url-fetch)
       (uri (string-append
             "https://github.com/ajc/nginx-mode/archive/v"
             version ".tar.gz"))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "1lvkj07kq0jkskr2f61vqb5rlrbnaz9a76ikq40w6925i2r970rr"))))
    (build-system emacs-build-system)
    (home-page "https://github.com/ajc/nginx-mode")
    (synopsis "Emacs major mode for editing nginx config files")
    (description "This package provides an Emacs major mode for
editing nginx config files.")
    (license license:gpl2+)))

M gnu/packages/embedded.scm => gnu/packages/embedded.scm +60 -0
@@ 1,5 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Theodoros Foradis <theodoros.for@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 24,9 25,12 @@
  #:use-module (guix git-download)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system trivial)
  #:use-module (guix build utils)
  #:use-module (gnu packages)
  #:use-module (gnu packages cross-base)
  #:use-module (gnu packages flex)
  #:use-module (gnu packages gcc)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages texinfo))



@@ 97,6 101,17 @@
              (variable "CROSS_LIBRARY_PATH")
              (files '("arm-none-eabi/lib"))))))))

(define-public gcc-arm-none-eabi-6
  (package
    (inherit gcc-arm-none-eabi-4.9)
    (version (package-version gcc-6))
    (source (origin (inherit (package-source gcc-6))
                    (patches
                     (append
                      (origin-patches (package-source gcc-6))
                      (search-patches "gcc-6-cross-environment-variables.patch"
                                      "gcc-6-arm-none-eabi-multilib.patch")))))))

(define-public newlib-arm-none-eabi
  (package
    (name "newlib")


@@ 163,3 178,48 @@ usable on embedded products.")
           "--enable-newlib-nano-formatted-io"
           "--disable-nls"))))
    (synopsis "Newlib variant for small systems with limited memory")))

(define (arm-none-eabi-toolchain xgcc newlib)
  "Produce a cross-compiler toolchain package with the compiler XGCC and the C
library variant NEWLIB."
  (let ((newlib-with-xgcc (package (inherit newlib)
                            (native-inputs
                             (alist-replace "xgcc" (list xgcc)
                                            (package-native-inputs newlib))))))
    (package
      (name (string-append "arm-none-eabi"
                           (if (string=? (package-name newlib-with-xgcc)
                                         "newlib-nano")
                               "-nano" "")
                           "-toolchain"))
      (version (package-version xgcc))
      (source #f)
      (build-system trivial-build-system)
      (arguments '(#:builder (mkdir %output)))
      (propagated-inputs
       `(("binutils" ,(cross-binutils "arm-none-eabi"))
         ("gcc" ,xgcc)
         ("newlib" ,newlib-with-xgcc)))
      (synopsis "Complete GCC tool chain for ARM bare metal development")
      (description "This package provides a complete GCC tool chain for ARM
bare metal development.  This includes the GCC arm-none-eabi cross compiler
and newlib (or newlib-nano) as the C library.  The supported programming
languages are C and C++.")
      (home-page (package-home-page xgcc))
      (license (package-license xgcc)))))

(define-public arm-none-eabi-toolchain-4.9
  (arm-none-eabi-toolchain gcc-arm-none-eabi-4.9
                           newlib-arm-none-eabi))

(define-public arm-none-eabi-nano-toolchain-4.9
  (arm-none-eabi-toolchain gcc-arm-none-eabi-4.9
                           newlib-nano-arm-none-eabi))

(define-public arm-none-eabi-toolchain-6
  (arm-none-eabi-toolchain gcc-arm-none-eabi-6
                           newlib-arm-none-eabi))

(define-public arm-none-eabi-nano-toolchain-6
  (arm-none-eabi-toolchain gcc-arm-none-eabi-6
                           newlib-nano-arm-none-eabi))

M gnu/packages/finance.scm => gnu/packages/finance.scm +53 -1
@@ 2,6 2,7 @@
;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 41,7 42,8 @@
 #:use-module (gnu packages texinfo)
 #:use-module (gnu packages textutils)
 #:use-module (gnu packages tls)
 #:use-module (gnu packages upnp))
 #:use-module (gnu packages upnp)
 #:use-module (gnu packages gnuzilla))

(define-public bitcoin-core
  (package


@@ 188,3 190,53 @@ in ability, and easy to use.")
                    "file://src/wcwidth.cc"
                    "See src/wcwidth.cc in the distribution.")
                   license:gpl2+))))  ; lisp/*

(define-public geierlein
  (package
    (name "geierlein")
    (version "0.9.5")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://github.com/stesie/geierlein"
                           "/archive/V" version ".tar.gz"))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "0b11fq8v5w8nxjb20jl4dsfhv76xky6n3sq3k3fbb0m2sq9ikikw"))))
    (build-system gnu-build-system)
    (arguments
     `(#:tests? #f ; would require npm, python and a lot more
       #:phases
        (modify-phases %standard-phases
          (delete 'configure)
          (add-after 'unpack 'override-target-directory-and-tool-paths
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (substitute* "Makefile"
                (("prefix := .*")
                 (string-append "prefix := " (assoc-ref outputs "out") "\n"))
                ;; Required for tests, unused for now:
                ;;(("PYTHON := .*")
                ;; (string-append (which "python") "\n")))
                (("INSTALL := .*")
                 (string-append "INSTALL := " (which "install") "\n")))
              (substitute* "bin/xgeierlein.in"
                ;; Use icecat as XULRUNNER
                (("^for search ")
                 (string-append "XULRUNNER=" (which "icecat") "\n"
                                "for search ")))
              #t)))))
    (inputs
     `(("icecat" ,icecat)))
    (home-page "http://stesie.github.io/geierlein/")
    (synopsis "Free Elster client, for sending Germany VAT declarations")
    (description
     "Geierlein is a free Elster client, i.e. an application that
allows to send VAT declarations to Germany's fiscal authorities.

Currently it is *not* possible to send returns that are due annually
(especially the income tax return) since the fiscal authority doesn't
allow to do that off the ERiC library (which is proprietary however).
It's not clear at the moment whether one day it will be possible to
do so.")
    (license license:agpl3+)))

M gnu/packages/game-development.scm => gnu/packages/game-development.scm +3 -1
@@ 183,7 183,9 @@ clone.")
                "0k2fl5xk3ni2q8bsxl0551inx26ww3w6cp6hssvww0wfjdjcirsm"))))
    (build-system cmake-build-system)
    (arguments
     '(#:tests? #f)) ; no tests
     '(#:configure-flags
       (list "-DSFML_INSTALL_PKGCONFIG_FILES=TRUE")
       #:tests? #f)) ; no tests
    (inputs
     `(("mesa" ,mesa)
       ("glew" ,glew)

M gnu/packages/games.scm => gnu/packages/games.scm +11 -39
@@ 545,7 545,7 @@ are primarily in English, however some in other languages are provided.")
(define-public irrlicht
  (package
    (name "irrlicht")
    (version "1.8.1")
    (version "1.8.4")
    (source (origin
              (method url-fetch)
              (uri (string-append


@@ 554,10 554,10 @@ are primarily in English, however some in other languages are provided.")
                    "/" version "/irrlicht-" version ".zip"))
              (sha256
               (base32
                "0yz9lvsc8aqk8wj4rnpanxrw90gqpwn9w5hxp94r8hnm2q0vjjw1"))))
                "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases (alist-cons-after
     `(#:phases (alist-cons-after
                 'unpack 'fix-build-env
                 (lambda* (#:key outputs #:allow-other-keys)
                   (let ((out (assoc-ref outputs "out")))


@@ 572,19 572,13 @@ are primarily in English, however some in other languages are provided.")
                  (lambda* (#:key source #:allow-other-keys)
                    (and (zero? (system* "unzip" source))
                         ;; The actual source is buried a few directories deep.
                         (chdir "irrlicht-1.8.1/source/Irrlicht/")))
                  (alist-cons-after
                   'unpack 'apply-patch/mesa-10-fix
                   (lambda* (#:key inputs #:allow-other-keys)
                     (zero? (system* "patch" "--force" "-p3" "-i"
                                     (assoc-ref inputs "patch/mesa-10-fix"))))
                   ;; No configure script
                   (alist-delete 'configure %standard-phases))))
                         (chdir (string-append "irrlicht-" ,version "/source/Irrlicht/"))))
                  ;; No configure script
                  (alist-delete 'configure %standard-phases)))
       #:tests? #f ; no check target
       #:make-flags '("CC=gcc" "sharedlib")))
    (native-inputs
     `(("patch/mesa-10-fix" ,(search-patch "irrlicht-mesa-10.patch"))
       ("unzip" ,unzip)))
     `(("unzip" ,unzip)))
    (inputs
     `(("mesa" ,mesa)
       ("glu" ,glu)))


@@ 946,7 940,7 @@ Protocol).")
(define-public extremetuxracer
  (package
    (name "extremetuxracer")
    (version "0.6.0")
    (version "0.7.3")
    (source (origin
              (method url-fetch)
              (uri (string-append


@@ 954,35 948,13 @@ Protocol).")
                    version "/etr-" version ".tar.xz"))
              (sha256
               (base32
                "0fl9pwkywqnsmgr6plfj9zb05xrdnl5xb2hcmbjk7ap9l4cjfca4"))))
                "1lg3z7jhzmsjym53qss8mbydny8hafwjnfsc7x91hrr9zrkwblly"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("freetype" ,freetype)
       ("mesa" ,mesa)
       ("glu" ,glu)
       ("libice" ,libice)
       ("libpng" ,libpng)
       ("sdl" ,sdl)
       ("sdl-mixer" ,sdl-mixer)
       ("sdl-image" ,sdl-image)
       ("libsm" ,libsm)
       ("libunwind" ,libunwind)
       ("libx11" ,libx11)
       ("libxext" ,libxext)
       ("libxi" ,libxi)
       ("libxmu" ,libxmu)
       ("libxt" ,libxt)
       ("tcl" ,tcl)
       ("zlib" ,zlib)))
    (arguments
     '(#:phases
       (modify-phases %standard-phases
         (add-after 'configure 'patch-makefile
           (lambda _
             (substitute* "Makefile"
               (("CXXFLAGS =") "CXXFLAGS = ${CFLAGS}")))))))
     `(("glu" ,glu)
       ("sfml" ,sfml)))
    (synopsis "High speed arctic racing game based on Tux Racer")
    ;; Snarfed straight from Debian
    (description "Extreme Tux Racer, or etracer as it is called for short, is

M gnu/packages/gd.scm => gnu/packages/gd.scm +1 -0
@@ 51,6 51,7 @@
              (base32
               "0g3xz8jpz1pl2zzmssglrpa9nxiaa7rmcmvgpbrjz8k9cyynqsvl"))
             (patches (search-patches "gd-CVE-2016-7568.patch"
                                      "gd-CVE-2016-8670.patch"
                                      "gd-fix-gd2-read-test.patch"
                                      "gd-fix-tests-on-i686.patch"))))
    (build-system gnu-build-system)

M gnu/packages/glib.scm => gnu/packages/glib.scm +1 -0
@@ 140,6 140,7 @@ shared NFS home directories.")
      (let ((version "1.10.12"))
        (origin
          (method url-fetch)
          (inherit (package-source dbus))
          (uri (string-append
                "https://dbus.freedesktop.org/releases/dbus/dbus-"
                version ".tar.gz"))

M gnu/packages/gnome.scm => gnu/packages/gnome.scm +28 -0
@@ 5583,3 5583,31 @@ handling the startup notification side.")
     "Calculator is an application that solves mathematical equations and
is suitable as a default application in a Desktop environment.")
    (license license:gpl3)))

(define-public xpad
  (package
    (name "xpad")
    (version "4.8.0")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://launchpad.net/xpad/trunk/4.8.0/+download/"
                           name "-" version ".tar.bz2"))
       (sha256
        (base32
         "17f915yyvfa2fsavq6wh0q0dfhib28b4k1gc0292b9xdlrvy7f22"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("intltool" ,intltool)
       ("pkg-config" ,pkg-config)))
    (inputs
     `(("gtk+" ,gtk+)
       ("gtksourceview" ,gtksourceview)
       ("libsm" ,libsm)))
    (home-page "https://wiki.gnome.org/Apps/Xpad")
    (synopsis "Virtual sticky note")
    (description
     "Xpad is a sticky note that strives to be simple, fault tolerant,
and customizable.  Xpad consists of independent pad windows, each is
basically a text box in which notes can be written.")
    (license license:gpl3+)))

M gnu/packages/graphics.scm => gnu/packages/graphics.scm +4 -6
@@ 142,20 142,18 @@ application can be customized via its API for Python scripting.")
(define-public assimp
  (package
    (name "assimp")
    (version "3.2")
    (version "3.3.1")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/assimp/assimp/archive/v"
                                  version ".zip"))
              (file-name (string-append name "-" version ".zip"))
                                  version ".tar.gz"))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "11sfahmbwnjjpd8vpzdsng1bx5mb0cmaqb20dz6sdwapqanqwmar"))))
                "1gy7zlgkf4nmyv8n674p3f30asis0gjz8icyy11i693n13ww71fk"))))
    (build-system cmake-build-system)
    (inputs
     `(("zlib" ,zlib)))
    (native-inputs
     `(("unzip" ,unzip)))
    (home-page "http://assimp.org/")
    (synopsis "Asset import library")
    (description

M gnu/packages/guile.scm => gnu/packages/guile.scm +4 -3
@@ 7,6 7,7 @@
;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
;;; Copyright © 2016 Eraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 321,7 322,8 @@ applicable."
                                  version ".tar.gz"))
              (sha256
               (base32
                "19m3ak12cqk8js9d2mdg11kh4fjsq8frfpd10qw75h0zpr5cywpp"))))
                "19m3ak12cqk8js9d2mdg11kh4fjsq8frfpd10qw75h0zpr5cywpp"))
              (patches (search-patches "artanis-fix-Makefile.in.patch"))))
    (build-system gnu-build-system)
    ;; TODO: Add guile-dbi and guile-dbd optional dependencies.
    (inputs `(("guile" ,guile-2.0)))


@@ 335,8 337,7 @@ applicable."
              (dir (string-append out "/share/guile/site/2.0")))
         ;; Don't use (%site-dir) for site paths.
         (list (string-append "MOD_PATH=" dir)
               (string-append "MOD_COMPILED_PATH=" dir)
               (string-append "DESTDIR=" out)))
               (string-append "MOD_COMPILED_PATH=" dir)))
       #:test-target "test"
       #:phases
       (modify-phases %standard-phases

M gnu/packages/image.scm => gnu/packages/image.scm +11 -10
@@ 570,18 570,19 @@ supplies a generic doubly-linked list and some string functions.")
            (sha256
             (base32
              "12bz57asdcfsz3zr9i9nska0fb6h3z2aizy412qjqkixkginbz7v"))
            (patches (search-patches "freeimage-CVE-2015-0852.patch"))))
            (patches (search-patches "freeimage-CVE-2015-0852.patch"
                                     "freeimage-CVE-2016-5684.patch"))))
   (build-system gnu-build-system)
   (arguments
    '(#:phases (alist-delete
                'configure
                (alist-cons-before
                 'build 'patch-makefile
                 (lambda* (#:key outputs #:allow-other-keys)
                   (substitute* "Makefile.gnu"
                     (("/usr") (assoc-ref outputs "out"))
                     (("-o root -g root") "")))
                 %standard-phases))
    '(#:phases
      (modify-phases %standard-phases
        (delete 'configure)
        (add-before 'build 'patch-makefile
          (lambda* (#:key outputs #:allow-other-keys)
            (substitute* "Makefile.gnu"
              (("/usr") (assoc-ref outputs "out"))
              (("-o root -g root") ""))
            #t)))
      #:make-flags '("CC=gcc")
      #:tests? #f)) ; no check target
   (native-inputs

M gnu/packages/linux.scm => gnu/packages/linux.scm +8 -8
@@ 322,26 322,26 @@ It has been modified to remove all non-free binary blobs.")
(define %intel-compatible-systems '("x86_64-linux" "i686-linux"))

(define-public linux-libre
  (make-linux-libre "4.8.1"
                    "0l57ab8v52nvx4d898qfvkl7c6zlrm7qd080z6jg0bg0adn4w5lf"
  (make-linux-libre "4.8.2"
                    "111v014j9b2zgyhv8f0aka5lmyc3imdc5yag7azw6hv3vjqqkn67"
                    %intel-compatible-systems
                    #:configuration-file kernel-config))

(define-public linux-libre-4.4
  (make-linux-libre "4.4.24"
                    "1wg1d9rq29612psr5v4krabx7nv1y1gzfshq7wpx6i1lpqf3lill"
  (make-linux-libre "4.4.25"
                    "1a677h8vvjkbzqwnklqnjvhq33lwig5z453dwi125zzzvawgr463"
                    %intel-compatible-systems
                    #:configuration-file kernel-config))

(define-public linux-libre-4.1
  (make-linux-libre "4.1.33"
                    "1s45vymx7zp7qwj4rx63dpj9xwm8hv5fd9nm27wqvmgnmd3q548h"
  (make-linux-libre "4.1.34"
                    "0dajsb363p9lgga22ml8gp9k9lxd8mvrzxk9y3h9c6hpzfcmqdqr"
                    %intel-compatible-systems
                    #:configuration-file kernel-config))

;; Avoid rebuilding kernel variants when there is a minor version bump.
(define %linux-libre-version "4.8.1")
(define %linux-libre-hash "0l57ab8v52nvx4d898qfvkl7c6zlrm7qd080z6jg0bg0adn4w5lf")
(define %linux-libre-version "4.8.2")
(define %linux-libre-hash "111v014j9b2zgyhv8f0aka5lmyc3imdc5yag7azw6hv3vjqqkn67")

(define-public linux-libre-arm-generic
  (make-linux-libre %linux-libre-version

M gnu/packages/mail.scm => gnu/packages/mail.scm +48 -0
@@ 443,6 443,54 @@ attachments, create new maildirs, and so on.")
@code{notmuch} mail.  It is written in Python using the @code{urwid} toolkit.")
    (license gpl3+)))

(define-public notifymuch
  (let
      ((commit "9d4aaf54599282ce80643b38195ff501120807f0")
       (revision "1"))
    (package
      (name "notifymuch")
      (version (string-append "0.1-" revision "." (string-take commit 7)))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/kspi/notifymuch.git")
               (commit commit)))
         (sha256
          (base32
           "1lssr7iv43mp5v6nzrfbqlfzx8jcc7m636wlfyhhnd8ydd39n6k4"))
         (file-name (string-append name "-" version "-checkout"))))
      (build-system python-build-system)
      (inputs
       `(("python-notmuch" ,python-notmuch)
         ("python-pygobject" ,python-pygobject)
         ("gobject-introspection" ,gobject-introspection)
         ("libnotify" ,libnotify)
         ("gtk+" ,gtk+)))
      (arguments
       `(#:phases
         (modify-phases %standard-phases
           (add-after 'install 'wrap-binary
             (lambda* (#:key outputs #:allow-other-keys)
               (let* ((out (assoc-ref outputs "out"))
                      (bin (string-append out "/bin/notifymuch")))
                 (wrap-program bin
                   `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))
                   `("GI_TYPELIB_PATH" ":" prefix
                     (,(getenv "GI_TYPELIB_PATH")
                      ,(string-append out "/lib/girepository-1.0")))))
               #t)))))
      (home-page "https://github.com/kspi/notifymuch")
      (synopsis "Displays notifications for changes in the notmuch email database")
      (description "notifymuch displays desktop notifications for messages in
the notmuch database.  The notifications are sent using libnotify to a
notification daemon.  The query to find messages to send a notification about
is configurable, and a notification for the same message will not be send
within a configurable period (defaults to 48 hours).  To use notifymuch, run
@command{notifymuch} after new mail is indexed, this can be automated by
invoking @command{notifymuch} from the post-new hook.")
      (license gpl3))))

(define-public notmuch
  (package
    (name "notmuch")

M gnu/packages/music.scm => gnu/packages/music.scm +388 -0
@@ 1521,6 1521,31 @@ synths, microtonal capabilities, custom envelopes, effects, etc.  Yoshimi
improves on support for JACK features, such as JACK MIDI.")
    (license license:gpl2)))

(define-public jack-keyboard
  (package
    (name "jack-keyboard")
    (version "2.5")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://sourceforge/jack-keyboard/jack-keyboard/"
                           version "/jack-keyboard-" version ".tar.gz"))
       (sha256
        (base32
         "0mzmg8aavybcfdlq2yd9d0vscqd6is5p6jzrgfpfm5j3xdcvh2s3"))))
    (build-system gnu-build-system)
    (inputs
     `(("jack" ,jack-1)
       ("lash" ,lash)
       ("gtk+" ,gtk+-2)))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (home-page "http://jack-keyboard.sourceforge.net/")
    (synopsis "Virtual MIDI keyboard")
    (description "Jack-keyboard is a virtual MIDI keyboard, a program that
allows you to send JACK MIDI events (i.e. play) using your PC keyboard.")
    (license license:bsd-2)))

(define-public cursynth
  (package
    (name "cursynth")


@@ 1965,3 1990,366 @@ CSV file in the format created by midicsv may be converted back into a
standard MIDI file with the csvmidi program.")
    (home-page "http://www.fourmilab.ch/webtools/midicsv/")
    (license license:public-domain)))

(define-public gx-guvnor-lv2
  (let ((commit "9f528a7623a201383e119bb6a2df32b18396a9d5")
        (revision "1"))
    (package
      (name "gx-guvnor-lv2")
      (version (string-append "0-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/brummer10/GxGuvnor.lv2")
                      (commit commit)))
                (sha256
                 (base32
                  "10zx84p2vd7i1yqc5ma9p17927265j4g0zfwv9rxladw0nm8y45k"))
                (file-name (string-append name "-" version "-checkout"))))
      (build-system gnu-build-system)
      (arguments
       `(;; The check target is used only to output a warning.
         #:tests? #f
         #:make-flags
         (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
         #:phases
         (modify-phases %standard-phases
           (replace 'configure
             (lambda _
               (substitute* "Makefile"
                 (("INSTALL_DIR = .*") "INSTALL_DIR=/lib/lv2\n")
                 ;; Avoid rebuilding everything
                 (("install : all") "install:"))
               #t)))))
      (inputs
       `(("lv2" ,lv2)))
      (home-page "https://github.com/brummer10/GxGuvnor.lv2")
      (synopsis "Overdrive/distortion pedal simulation")
      (description "This package provides the LV2 plugin \"GxGuvnor\", a
simulation of an overdrive or distortion pedal for guitars.")
      ;; The LICENSE file says GPLv3 but the license headers in the files say
      ;; GPLv2 or later.
      (license license:gpl2+))))

(define-public gx-vbass-preamp-lv2
  (let ((commit "0e599abab10c7669dd444e5d06f671c2fc1b9c6c")
        (revision "1"))
    (package (inherit gx-guvnor-lv2)
      (name "gx-vbass-preamp-lv2")
      (version (string-append "0-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/brummer10/GxVBassPreAmp.lv2")
                      (commit commit)))
                (sha256
                 (base32
                  "1dzksdfrva666gpi62fd2ni9rhf18sl917f1894qr0b17pbdh9k1"))
                (file-name (string-append name "-" version "-checkout"))))
      (home-page "https://github.com/brummer10/GxVBassPreAmp.lv2")
      (synopsis "Simulation of the Vox Venue Bass 100 Pre Amp Section")
      (description "This package provides the LV2 plugin \"GxVBassPreAmp\", a
pre-amplifier simulation modelled after the 1984 Vox Venue Bass 100 Pre Amp
Section."))))

(define-public gx-overdriver-lv2
  (let ((commit "ed71801987449414bf3adaa0dbfac68e8775f1ce")
        (revision "1"))
    (package (inherit gx-guvnor-lv2)
      (name "gx-overdriver-lv2")
      (version (string-append "0-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/brummer10/GxOverDriver.lv2")
                      (commit commit)))
                (sha256
                 (base32
                  "13j614jh525fbkby79nnzwj0z1ac0c9wclyn5pfqvkmx6a7j24r8"))
                (file-name (string-append name "-" version "-checkout"))))
      (home-page "https://github.com/brummer10/GxOverDriver.lv2")
      (synopsis "Overdrive effect with level and tone control")
      (description "This package provides the LV2 plugin \"GxOverDriver\", an
overdrive effect."))))

(define-public gx-tone-mender-lv2
  (let ((commit "b6780b4a3e4782b3ed0e5882d6788f178aed138f")
        (revision "1"))
    (package (inherit gx-guvnor-lv2)
      (name "gx-tone-mender-lv2")
      (version (string-append "0-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/brummer10/GxToneMender.lv2")
                      (commit commit)))
                (sha256
                 (base32
                  "07qdcfsvv2vdnfnjh91pfgvjdcs5y91nvwfm8c0z8fp6b4bk7a9q"))
                (file-name (string-append name "-" version "-checkout"))))
      (home-page "https://github.com/brummer10/GxToneMender.lv2")
      (synopsis "Clean boost with a 3-knob tonestack")
      (description "This package provides the LV2 plugin \"GxToneMender\", a
clean boost effect with a 3-knob tonestack."))))

(define-public gx-push-pull-lv2
  (let ((commit "7f76ae2068498643ac8671ee0930b13ee3fd8eb5")
        (revision "1"))
    (package (inherit gx-guvnor-lv2)
      (name "gx-push-pull-lv2")
      (version (string-append "0-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/brummer10/GxPushPull.lv2")
                      (commit commit)))
                (sha256
                 (base32
                  "12f5hwck2irph0gjbj8xy8jqcqdwb8l1hlwf29k0clz52h1jhb5q"))
                (file-name (string-append name "-" version "-checkout"))))
      (home-page "https://github.com/brummer10/GxPushPull.lv2")
      (synopsis "Octave up push pull transistor fuzz simulation")
      (description "This package provides the LV2 plugin \"GxPushPull\", a
simulation of a push pull transistor fuzz effect with added high octave."))))

(define-public gx-suppa-tone-bender-lv2
  (let ((commit "4e6dc713ec24e7fcf5ea23b7e685af627c01b9c9")
        (revision "1"))
    (package (inherit gx-guvnor-lv2)
      (name "gx-suppa-tone-bender-lv2")
      (version (string-append "0-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/brummer10/GxSuppaToneBender.lv2")
                      (commit commit)))
                (sha256
                 (base32
                  "1i22xr252nkbazkwidll2zb3i96610gx65qn5djdkijlz7j77138"))
                (file-name (string-append name "-" version "-checkout"))))
      (home-page "https://github.com/brummer10/GxSuppaToneBender.lv2")
      (synopsis "Simulation of the Vox Suppa Tone Bender pedal")
      (description "This package provides the LV2 plugin
\"GxSuppaToneBender\", a simulation modelled after the Vox Suppa Tone Bender
pedal."))))

(define-public gx-saturator-lv2
  (let ((commit "361399245d234b4d02f11f066d25ac15d90c6bf8")
        (revision "1"))
    (package (inherit gx-guvnor-lv2)
      (name "gx-saturator-lv2")
      (version (string-append "0-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/brummer10/GxSaturator.lv2")
                      (commit commit)))
                (sha256
                 (base32
                  "13cf5gxr2wzp5954hdhbl79v98a665ll5434mb3668p4j33sv217"))
                (file-name (string-append name "-" version "-checkout"))))
      (arguments
       (substitute-keyword-arguments (package-arguments gx-guvnor-lv2)
         ((#:phases phases)
          `(modify-phases ,phases
             (add-after 'unpack 'escape-shell-commands
               (lambda _
                 (substitute* "Makefile"
                   (("cat ") "$(shell cat ")
                   (("/dev/null") "/dev/null)")
                   (("SSE_CFLAGS = \"\"") "SSE_CFLAGS ="))
                 #t))))))
      (home-page "https://github.com/brummer10/GxSaturator.lv2")
      (synopsis "Saturation effect")
      (description "This package provides the LV2 plugin \"GxSaturator\", a
saturation effect."))))

(define-public gx-hyperion-lv2
  (let ((commit "7d993bc77f9946b3df0e481632c61b2dcbb6549f")
        (revision "1"))
    (package (inherit gx-guvnor-lv2)
      (name "gx-hyperion-lv2")
      (version (string-append "0-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/brummer10/GxHyperion.lv2")
                      (commit commit)))
                (sha256
                 (base32
                  "12klcyc6l9v93ii3478mqz44jzvh5np1sk8zzdmz42jp0w8qd429"))
                (file-name (string-append name "-" version "-checkout"))))
      (arguments
       (substitute-keyword-arguments (package-arguments gx-guvnor-lv2)
         ((#:phases phases)
          `(modify-phases ,phases
             (add-after 'unpack 'escape-shell-commands
               (lambda _
                 (substitute* "Makefile"
                   (("cat ") "$(shell cat ")
                   (("/dev/null") "/dev/null)")
                   (("SSE_CFLAGS = \"\"") "SSE_CFLAGS ="))
                 #t))))))
      (home-page "https://github.com/brummer10/GxHyperion.lv2")
      (synopsis "Simulation of the Hyperion Fuzz pedal")
      (description "This package provides the LV2 plugin \"GxHyperion\", a
simulation of the Hyperion Fuzz pedal."))))

(define-public gx-voodoo-fuzz-lv2
  (let ((commit "d2d6b27bc279f98c2fd11bbd58ffe2fb2c321ec4")
        (revision "1"))
    (package (inherit gx-guvnor-lv2)
      (name "gx-voodoo-fuzz-lv2")
      (version (string-append "0-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/brummer10/GxVoodoFuzz.lv2")
                      (commit commit)))
                (sha256
                 (base32
                  "1ji915bly588a8xwvwspvsqv0nh8ljgi6rky2mk1d9d6nz96jrbk"))
                (file-name (string-append name "-" version "-checkout"))))
      (arguments
       (substitute-keyword-arguments (package-arguments gx-guvnor-lv2)
         ((#:phases phases)
          `(modify-phases ,phases
             (add-after 'unpack 'escape-shell-commands
               (lambda _
                 (substitute* "Makefile"
                   (("cat ") "$(shell cat ")
                   (("/dev/null") "/dev/null)")
                   (("SSE_CFLAGS = \"\"") "SSE_CFLAGS ="))
                 #t))))))
      (home-page "https://github.com/brummer10/GxVoodoFuzz.lv2")
      (synopsis "Fuzz effect modelled after the Voodoo Lab SuperFuzz")
      (description "This package provides the LV2 plugin \"GxVoodooFuzz\", a
simulation modelled after the Voodoo Lab SuperFuzz pedal.  It's basically a
Bosstone circuit, followed by the tone control of the FoxToneMachine in
parallel with a DarkBooster, followed by a volume control."))))

(define-public gx-super-fuzz-lv2
  (let ((commit "9800354caeb4082a64ca55b2daa9a9a1f79b8c21")
        (revision "1"))
    (package (inherit gx-guvnor-lv2)
      (name "gx-super-fuzz-lv2")
      (version (string-append "0-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/brummer10/GxSuperFuzz.lv2")
                      (commit commit)))
                (sha256
                 (base32
                  "1jclp53p01h94cpx17wm4765r7klbr41g7bvq87l53qwlrgkc7a9"))
                (file-name (string-append name "-" version "-checkout"))))
      (arguments
       (substitute-keyword-arguments (package-arguments gx-guvnor-lv2)
         ((#:phases phases)
          `(modify-phases ,phases
             (add-after 'unpack 'escape-shell-commands
               (lambda _
                 (substitute* "Makefile"
                   (("cat ") "$(shell cat ")
                   (("/dev/null") "/dev/null)")
                   (("SSE_CFLAGS = \"\"") "SSE_CFLAGS ="))
                 #t))))))
      (home-page "https://github.com/brummer10/GxSuperFuzz.lv2")
      (synopsis "Fuzz effect modelled after the UniVox SuperFuzz")
      (description "This package provides the LV2 plugin \"GxVoodooFuzz\", an
analog simulation of the UniVox SuperFuzz pedal.  In this simulation the trim
pot, which is usualy in the housing, is exposed as a control parameter.  It
adjusts the amount of harmonics."))))

(define-public gx-vintage-fuzz-master-lv2
  (let ((commit "c3ab9a3019a8381a398718b98615940b4a225b9e")
        (revision "1"))
    (package (inherit gx-guvnor-lv2)
      (name "gx-vintage-fuzz-master-lv2")
      (version (string-append "0-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
                      (commit commit)))
                (sha256
                 (base32
                  "0s1ghysggx6psalyhcpgjnmf38vama6jcqgbldqmxii5c2w2ybsc"))
                (file-name (string-append name "-" version "-checkout"))))
      (arguments
       (substitute-keyword-arguments (package-arguments gx-guvnor-lv2)
         ((#:phases phases)
          `(modify-phases ,phases
             (add-after 'unpack 'escape-shell-commands
               (lambda _
                 (substitute* "Makefile"
                   (("cat ") "$(shell cat ")
                   (("/dev/null") "/dev/null)")
                   (("SSE_CFLAGS = \"\"") "SSE_CFLAGS ="))
                 #t))))))
      (home-page "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
      (synopsis "Fuzz effect simulation of the vintage Fuzz Master")
      (description "This package provides the LV2 plugin
\"GxVintageFuzzMaster\", a simulation of the vintage Fuzz Master pedal."))))

(define-public gx-slow-gear-lv2
  (let ((commit "1071c2b2936ebad859242cb578af2f3415f8900f")
        (revision "1"))
    (package (inherit gx-guvnor-lv2)
      (name "gx-slow-gear-lv2")
      (version (string-append "0-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/brummer10/GxSlowGear.lv2")
                      (commit commit)))
                (sha256
                 (base32
                  "0c6099h5qkv7ilsvxxcrzwy1h6lkld1srh3fvbjxyw9q34kbqsyl"))
                (file-name (string-append name "-" version "-checkout"))))
      (arguments
       (substitute-keyword-arguments (package-arguments gx-guvnor-lv2)
         ((#:phases phases)
          `(modify-phases ,phases
             (add-after 'unpack 'escape-shell-commands
               (lambda _
                 (substitute* "Makefile"
                   (("cat ") "$(shell cat ")
                   (("/dev/null") "/dev/null)")
                   (("SSE_CFLAGS = \"\"") "SSE_CFLAGS ="))
                 #t))))))
      (home-page "https://github.com/brummer10/GxSlowGear.lv2")
      (synopsis "Slow gear audio effect")
      (description "This package provides the LV2 plugin \"GxSlowGear\", a
slow gear audio effect to produce volume swells."))))

(define-public gx-switchless-wah-lv2
  (let ((commit "1d466240c482b7ce9136aee39044068ab96f1c92")
        (revision "1"))
    (package (inherit gx-guvnor-lv2)
      (name "gx-switchless-wah-lv2")
      (version (string-append "0-" revision "." (string-take commit 9)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/brummer10/GxSwitchlessWah.lv2")
                      (commit commit)))
                (sha256
                 (base32
                  "0g6njgsm8s76n6yys09a8w77z93pjjgqq9hzhhsrl73hhvyr9qmy"))
                (file-name (string-append name "-" version "-checkout"))))
      (arguments
       (substitute-keyword-arguments (package-arguments gx-guvnor-lv2)
         ((#:phases phases)
          `(modify-phases ,phases
             (add-after 'unpack 'escape-shell-commands
               (lambda _
                 (substitute* "Makefile"
                   (("cat ") "$(shell cat ")
                   (("/dev/null") "/dev/null)")
                   (("SSE_CFLAGS = \"\"") "SSE_CFLAGS ="))
                 #t))))))
      (home-page "https://github.com/brummer10/GxSwitchlessWah.lv2")
      (synopsis "Wah emulation with switchless activation")
      (description "This package provides the LV2 plugin \"GxSwitchlessWah\",
a simulation of an analog Wah pedal with switchless activation."))))

M gnu/packages/networking.scm => gnu/packages/networking.scm +73 -3
@@ 40,6 40,7 @@
  #:use-module (gnu packages audio)
  #:use-module (gnu packages bison)
  #:use-module (gnu packages check)
  #:use-module (gnu packages code)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages databases)
  #:use-module (gnu packages flex)


@@ 54,7 55,9 @@
  #:use-module (gnu packages perl)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages python)
  #:use-module (gnu packages tls))
  #:use-module (gnu packages textutils)
  #:use-module (gnu packages tls)
  #:use-module (gnu packages valgrind))

(define-public macchanger
  (package


@@ 474,7 477,7 @@ network frames.")
(define-public httping
  (package
    (name "httping")
    (version "2.4")
    (version "2.5")
    (source
     (origin
       (method url-fetch)


@@ 482,7 485,7 @@ network frames.")
                           version ".tgz"))
       (sha256
        (base32
         "1110r3gpsj9xmybdw7w4zkhj3zmn5mnv2nq0ijbvrywbn019zdfs"))))
         "1y7sbgkhgadmd93x1zafqc4yp26ssiv16ni5bbi9vmvvdl55m29y"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("gettext" ,gettext-minimal)))


@@ 857,3 860,70 @@ other similar tasks that are particularly application specific so that the
library remains flexible, portable, and easily embeddable.")
    (home-page "http://enet.bespin.org")
    (license license:expat)))

(define-public sslh
  (package
    (name "sslh")
    (version "1.18")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/yrutschle/sslh/archive/v"
                                  version ".tar.gz"))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1vzw7a7s9lhspbn5zn3hw8hir4pkjgbd68yys4hfsnjp1h7bzjpn"))))
    (build-system gnu-build-system)
    (native-inputs
     `(;; Tests dependencies.
       ("lcov" ,lcov)
       ("perl" ,perl)
       ("perl-io-socket-inet6" ,perl-io-socket-inet6)
       ("perl-socket6" ,perl-socket6)
       ("psmisc" ,psmisc)
       ("valgrind" ,valgrind)))
    (inputs
     `(("libcap" ,libcap)
       ("libconfig" ,libconfig)
       ("tcp-wrappers" ,tcp-wrappers)))
    (arguments
     '(#:phases
       (modify-phases %standard-phases
         (delete 'configure)            ; no configure script
         (add-before 'check 'fix-tests
                     (lambda _
                       (substitute* "./t"
                         (("\"/tmp") "$ENV{\"TMPDIR\"} . \"")
                         ;; The Guix build environment lacks ‘ip6-localhost’.
                         (("ip6-localhost") "localhost"))
                       #t))
         ;; Many of these files are mentioned in the man page. Install them.
         (add-after 'install 'install-documentation
                    (lambda* (#:key outputs #:allow-other-keys)
                      (let* ((out (assoc-ref outputs "out"))
                             (doc (string-append out "/share/doc/sslh")))
                        (install-file "README.md" doc)
                        (for-each
                         (lambda (file)
                           (install-file file (string-append doc "/examples")))
                         (append (find-files "." "\\.cfg")
                                 (find-files "scripts"))))
                      #t)))
       #:make-flags (list "CC=gcc"
                          "USELIBCAP=1"
                          "USELIBWRAP=1"
                          (string-append "PREFIX=" (assoc-ref %outputs "out")))
       #:test-target "test"))
    (home-page "http://www.rutschle.net/tech/sslh.shtml")
    (synopsis "Applicative network protocol demultiplexer")
    (description
     "sslh is a network protocol demultiplexer.  It acts like a switchboard,
accepting connections from clients on one port and forwarding them to different
servers based on the contents of the first received data packet.  Detection of
common protocols like HTTP(S), SSL, SSH, OpenVPN, tinc, and XMPP is already
implemented, but any other protocol that matches a regular expression can be
added.  sslh's name comes from its original application of serving both SSH and
HTTPS on port 443, allowing SSH connections from inside corporate firewalls
that block port 22.")
    (license (list license:bsd-2        ; tls.[ch]
                   license:gpl2+))))    ; everything else

M gnu/packages/node.scm => gnu/packages/node.scm +15 -19
@@ 25,6 25,7 @@
  #:use-module (guix derivations)
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (gnu packages)
  #:use-module (gnu packages base)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages gcc)


@@ 37,14 38,16 @@
(define-public node
  (package
    (name "node")
    (version "6.0.0")
    (version "6.8.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://nodejs.org/dist/v" version
                                  "/node-v" version ".tar.gz"))
              (sha256
               (base32
                "0cpw7ng193jgfbw2g1fd0kcglmjjkbj4xb89g00z8zz0lj0nvdbd"))))
                "0lj3250hglz4w5ic4svd7wlg2r3qc49hnasvbva1v69l8yvx98m8"))
              ;; https://github.com/nodejs/node/pull/9077
              (patches (search-patches "node-9077.patch"))))
    (build-system gnu-build-system)
    (arguments
     ;; TODO: Package http_parser and add --shared-http-parser.


@@ 78,10 81,10 @@
             ;; FIXME: These tests fail in the build container, but they don't
             ;; seem to be indicative of real problems in practice.
             (for-each delete-file
                       '("test/parallel/test-cluster-master-error.js"
                       '("test/parallel/test-dgram-membership.js"
                         "test/parallel/test-cluster-master-error.js"
                         "test/parallel/test-cluster-master-kill.js"
                         "test/parallel/test-npm-install.js"
                         "test/parallel/test-stdout-close-unref.js"
                         "test/sequential/test-child-process-emfile.js"))
             #t))
         (replace 'configure


@@ 101,22 104,15 @@
                             (string-append (assoc-ref inputs "python")
                                            "/bin/python")
                             "configure" flags)))))
         (replace 'patch-shebangs
           (lambda* (#:key outputs #:allow-other-keys #:rest all)
             ;; Work around <http://bugs.gnu.org/23723>.
             (let* ((patch  (assoc-ref %standard-phases 'patch-shebangs))
                    (npm    (string-append (assoc-ref outputs "out")
                                           "/bin/npm"))
         (add-after 'patch-shebangs 'patch-npm-shebang
           (lambda* (#:key outputs #:allow-other-keys)
             (let* ((bindir (string-append (assoc-ref outputs "out")
                                           "/bin"))
                    (npm    (string-append bindir "/npm"))
                    (target (readlink npm)))
               (and (apply patch all)
                    (with-directory-excursion (dirname npm)
                      ;; Turn NPM into a symlink to TARGET again, which 'npm'
                      ;; relies on for the resolution of relative file names
                      ;; in JS files.
                      (delete-file target)
                      (rename-file npm target)
                      (symlink target npm)
                      #t))))))))
               (with-directory-excursion bindir
                 (patch-shebang target (list bindir))
                 #t)))))))
    (native-inputs
     `(("python" ,python-2)
       ("perl" ,perl)

A gnu/packages/patches/artanis-fix-Makefile.in.patch => gnu/packages/patches/artanis-fix-Makefile.in.patch +70 -0
@@ 0,0 1,70 @@
Applies until an Artanis release comes with the following patches
applied:
* <https://savannah.gnu.org/patch/?func=detailitem&item_id=9130>
* <https://savannah.gnu.org/patch/?func=detailitem&item_id=9131>
diff -ru artanis-0.1.2/Makefile.in artanis-0.1.2.1/Makefile.in
--- artanis-0.1.2/Makefile.in	2016-02-10 12:35:18.800490571 -0200
+++ artanis-0.1.2.1/Makefile.in	2016-10-15 19:44:35.140907367 -0300
@@ -19,9 +19,18 @@
 MOD_OBJ := $(OBJ)/artanis
 BIN := bin
 TEMP_LIB_PATH := $(OBJ)
-MOD_PATH := $(shell guile -c "(display (%site-dir))")
 MOD_COMPILED_PATH := $(shell guile -c "(display (%site-ccache-dir))")
+
+ifdef DESTDIR
+INFO_DIR := $(DESTDIR)/share/info/
+MOD_PATH := $(DESTDIR)/$(shell guile -c "(display (%site-dir))")
 MOD_TARGET_PATH := $(DESTDIR)/$(MOD_COMPILED_PATH)
+else
+INFO_DIR := $(PREFIX)/share/info/
+MOD_PATH := $(shell guile -c "(display (%site-dir))")
+MOD_TARGET_PATH := $(MOD_COMPILED_PATH)
+endif
+
 GUILE_CFLAGS := -Wunsupported-warning -Wunbound-variable -Warity-mismatch -Wduplicate-case-datum -Wbad-case-datum -Wformat
 GUILEC := GUILE_LOAD_COMPILED_PATH=$(TEMP_LIB_PATH) guild compile $(GUILE_CFLAGS)
 ARTANIS_ETC := $(SRC)/etc/artanis
@@ -36,7 +45,6 @@
 GENDOCS :=$(BUILD_AUX)/gendocs.sh
 CHK_TEXINFO := $(BUILD_AUX)/check_texinfo.scm
 CP := cp -frd -P
-INFO_DIR := $(PREFIX)/share/info/
 TARBALL_NAME := artanis-$(VERSION)
 TMP_DIR := $(shell mktemp -d)
 ANN_GEN := $(BUILD_AUX)/announce-gen
@@ -124,18 +132,29 @@
 	-rm -f config.{h,log}
 
 install: $(ALL_TARGETS)
-	mkdir -p $(DESTDIR)/$(MOD_PATH)
-	$(CP) $(MOD) $(DESTDIR)/$(MOD_PATH)/
+	mkdir -p $(MOD_PATH)
+	$(CP) $(MOD) $(MOD_PATH)/
 	mkdir -p $(MOD_TARGET_PATH)/
 	$(CP) $(MOD_OBJ) $(MOD_TARGET_PATH)/
+
+ifdef DESTDIR
 	$(CP) $(ARTANIS_ETC) $(DESTDIR)/etc/
 	$(CP) $(ARTANIS_PAGES) $(DESTDIR)/etc/artanis/
-	mkdir -p $(DESTDIR)/$(PREFIX)/bin/
-	$(CP) $(BIN)/art $(DESTDIR)/$(PREFIX)/bin/
+	mkdir -p $(DESTDIR)/bin/
+	$(CP) $(BIN)/art $(DESTDIR)/bin/
 	mkdir -p $(DESTDIR)/etc/bash_completion.d/
 	$(CP) $(CMDCOMP) $(DESTDIR)/etc/bash_completion.d/
+else
+	$(CP) $(ARTANIS_ETC) $(PREFIX)/etc/
+	$(CP) $(ARTANIS_PAGES) $(PREFIX)/etc/artanis/
+	mkdir -p $(PREFIX)/bin/
+	$(CP) $(BIN)/art $(PREFIX)/bin/
+	mkdir -p $(PREFIX)/etc/bash_completion.d/
+	$(CP) $(CMDCOMP) $(PREFIX)/etc/bash_completion.d/
+endif
+
 	if [ -e /etc/bash.bashrc ]; then source /etc/bash.bashrc; fi
-	if [ -e artanis.info ]; then mkdir -p $(DESTDIR)/$(INFO_DIR); $(CP) artanis.info $(DESTDIR)/$(INFO_DIR)/; fi
+	if [ -e artanis.info ]; then mkdir -p $(INFO_DIR); $(CP) artanis.info $(INFO_DIR)/; fi
 
 distclean: distclean-mk clean clean-config clean-tarball
 	-rm -f $(BIN)/art

A gnu/packages/patches/freeimage-CVE-2016-5684.patch => gnu/packages/patches/freeimage-CVE-2016-5684.patch +34 -0
@@ 0,0 1,34 @@
From: Debian Science Maintainers
 <debian-science-maintainers@lists.alioth.debian.org>
Date: Mon, 10 Oct 2016 08:22:44 +0100
Subject: CVE-2016-5684

---
 Source/FreeImage/PluginXPM.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/Source/FreeImage/PluginXPM.cpp b/Source/FreeImage/PluginXPM.cpp
index a698321..cc7bd07 100644
--- a/Source/FreeImage/PluginXPM.cpp
+++ b/Source/FreeImage/PluginXPM.cpp
@@ -181,6 +181,11 @@ Load(FreeImageIO *io, fi_handle handle, int page, int flags, void *data) {
 		}
 		free(str);
 
+		// check info string
+		if((width <= 0) || (height <= 0) || (colors <= 0) || (cpp <= 0)) {
+			throw "Improperly formed info string";
+		}
+
         if (colors > 256) {
 			dib = FreeImage_AllocateHeader(header_only, width, height, 24, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK);
 		} else {
@@ -193,7 +198,7 @@ Load(FreeImageIO *io, fi_handle handle, int page, int flags, void *data) {
 			FILE_RGBA rgba;
 
 			str = ReadString(io, handle);
-			if(!str)
+			if(!str || (strlen(str) < (size_t)cpp))
 				throw "Error reading color strings";
 
 			std::string chrs(str,cpp); //create a string for the color chars using the first cpp chars

A gnu/packages/patches/gcc-6-arm-none-eabi-multilib.patch => gnu/packages/patches/gcc-6-arm-none-eabi-multilib.patch +206 -0
@@ 0,0 1,206 @@
From Anatol Pomozov <anatol.pomozov@gmail.com>
Taken from Arch Linux arm-none-eabi-gcc package.

Modified version of ARM patch https://gcc.gnu.org/ml/gcc-patches/2012-05/msg00083/enable-with-multilib-list-for-arm.patch

This patch enables the use of the "--with-multilib-list" flag, when
configuring GCC 6.2.  It makes GCC 6 compatible with the configure flags used
in the "gcc-arm-none-eabi-4.9" package.


diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 4ab7405..6e1ea2c 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -535,6 +535,7 @@ lang_opt_files=@lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt
 lang_specs_files=@lang_specs_files@
 lang_tree_files=@lang_tree_files@
 target_cpu_default=@target_cpu_default@
+with_multilib_list=@with_multilib_list@
 OBJC_BOEHM_GC=@objc_boehm_gc@
 extra_modes_file=@extra_modes_file@
 extra_opt_files=@extra_opt_files@
diff --git a/gcc/config.gcc b/gcc/config.gcc
index cb08a5c..7bded02 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1072,7 +1072,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
 	case ${target} in
 	arm*-*-eabi*)
 	  tm_file="$tm_file newlib-stdint.h"
-	  tmake_file="${tmake_file} arm/t-bpabi"
+	  tmake_file="${tmake_file} arm/t-bpabi arm/t-mlibs"
 	  use_gcc_stdint=wrap
 	  ;;
 	arm*-*-rtems*)
@@ -3684,42 +3684,6 @@ case "${target}" in
 			exit 1
 		fi
 
-		# Add extra multilibs
-		if test "x$with_multilib_list" != x; then
-			arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
-			for arm_multilib in ${arm_multilibs}; do
-				case ${arm_multilib} in
-				aprofile)
-				# Note that arm/t-aprofile is a
-				# stand-alone make file fragment to be
-				# used only with itself.  We do not
-				# specifically use the
-				# TM_MULTILIB_OPTION framework because
-				# this shorthand is more
-				# pragmatic. Additionally it is only
-				# designed to work without any
-				# with-cpu, with-arch with-mode
-				# with-fpu or with-float options.
-					if test "x$with_arch" != x \
-					    || test "x$with_cpu" != x \
-					    || test "x$with_float" != x \
-					    || test "x$with_fpu" != x \
-					    || test "x$with_mode" != x ; then
-					    echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=aprofile" 1>&2
-					    exit 1
-					fi
-					tmake_file="${tmake_file} arm/t-aprofile"
-					break
-					;;
-				default)
-					;;
-				*)
-					echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
-					exit 1
-					;;
-				esac
-			done
-		fi
 		;;
 
 	fr*-*-*linux*)
diff --git a/gcc/config/arm/t-mlibs b/gcc/config/arm/t-mlibs
new file mode 100644
index 0000000..5720cf7
--- /dev/null
+++ b/gcc/config/arm/t-mlibs
@@ -0,0 +1,89 @@
+# A set of predefined MULTILIB which can be used for different ARM targets.
+# Via the configure option --with-multilib-list, user can customize the
+# final MULTILIB implementation.
+
+comma := ,
+space :=
+space +=
+
+MULTILIB_OPTIONS   = mthumb/marm
+MULTILIB_DIRNAMES  = thumb arm
+MULTILIB_OPTIONS  += march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7
+MULTILIB_DIRNAMES += armv6-m armv7-m armv7e-m armv7-ar
+MULTILIB_OPTIONS  += mfloat-abi=softfp/mfloat-abi=hard
+MULTILIB_DIRNAMES += softfp fpu
+MULTILIB_OPTIONS  += mfpu=fpv4-sp-d16/mfpu=vfpv3-d16
+MULTILIB_DIRNAMES += fpv4-sp-d16 vfpv3-d16
+
+MULTILIB_MATCHES   = march?armv6s-m=mcpu?cortex-m0
+MULTILIB_MATCHES  += march?armv6s-m=mcpu?cortex-m0plus
+MULTILIB_MATCHES  += march?armv6s-m=mcpu?cortex-m1
+MULTILIB_MATCHES  += march?armv6s-m=march?armv6-m
+MULTILIB_MATCHES  += march?armv7-m=mcpu?cortex-m3
+MULTILIB_MATCHES  += march?armv7e-m=mcpu?cortex-m4
+MULTILIB_MATCHES  += march?armv7e-m=mcpu?cortex-m7
+MULTILIB_MATCHES  += march?armv7=march?armv7-r
+MULTILIB_MATCHES  += march?armv7=march?armv7-a
+MULTILIB_MATCHES  += march?armv7=mcpu?cortex-r4
+MULTILIB_MATCHES  += march?armv7=mcpu?cortex-r4f
+MULTILIB_MATCHES  += march?armv7=mcpu?cortex-r5
+MULTILIB_MATCHES  += march?armv7=mcpu?cortex-r7
+MULTILIB_MATCHES  += march?armv7=mcpu?cortex-a5
+MULTILIB_MATCHES  += march?armv7=mcpu?cortex-a7
+MULTILIB_MATCHES  += march?armv7=mcpu?cortex-a8
+MULTILIB_MATCHES  += march?armv7=mcpu?cortex-a9
+MULTILIB_MATCHES  += march?armv7=mcpu?cortex-a15
+MULTILIB_MATCHES  += mfpu?fpv4-sp-d16=mfpu?fpv5-sp-d16
+MULTILIB_MATCHES  += mfpu?fpv4-sp-d16=mfpu?fpv5-d16
+MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?vfpv3
+MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?vfpv3-fp16
+MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?vfpv3-d16-fp16
+MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?vfpv3xd
+MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?vfpv3xd-fp16
+MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?vfpv4
+MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?vfpv4-d16
+MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?neon
+MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?neon-fp16
+MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?neon-vfpv4
+
+MULTILIB_EXCEPTIONS =
+MULTILIB_REUSE =
+
+MULTILIB_REQUIRED  = mthumb
+MULTILIB_REQUIRED += marm
+MULTILIB_REQUIRED += mfloat-abi=hard
+
+MULTILIB_OSDIRNAMES  = mthumb=!thumb
+MULTILIB_OSDIRNAMES += marm=!arm
+MULTILIB_OSDIRNAMES += mfloat-abi.hard=!fpu
+
+ifneq (,$(findstring armv6-m,$(subst $(comma),$(space),$(with_multilib_list))))
+MULTILIB_REQUIRED   += mthumb/march=armv6s-m
+MULTILIB_OSDIRNAMES += mthumb/march.armv6s-m=!armv6-m
+endif
+
+ifneq (,$(findstring armv7-m,$(subst $(comma),$(space),$(with_multilib_list))))
+MULTILIB_REQUIRED   += mthumb/march=armv7-m
+MULTILIB_OSDIRNAMES += mthumb/march.armv7-m=!armv7-m
+endif
+
+ifneq (,$(findstring armv7e-m,$(subst $(comma),$(space),$(with_multilib_list))))
+MULTILIB_REQUIRED   += mthumb/march=armv7e-m
+MULTILIB_REQUIRED   += mthumb/march=armv7e-m/mfloat-abi=softfp/mfpu=fpv4-sp-d16
+MULTILIB_REQUIRED   += mthumb/march=armv7e-m/mfloat-abi=hard/mfpu=fpv4-sp-d16
+MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m=!armv7e-m
+MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m/mfloat-abi.hard/mfpu.fpv4-sp-d16=!armv7e-m/fpu
+MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m/mfloat-abi.softfp/mfpu.fpv4-sp-d16=!armv7e-m/softfp
+endif
+
+ifneq (,$(filter armv7 armv7-r armv7-a,$(subst $(comma),$(space),$(with_multilib_list))))
+MULTILIB_REQUIRED   += mthumb/march=armv7
+MULTILIB_REQUIRED   += mthumb/march=armv7/mfloat-abi=softfp/mfpu=vfpv3-d16
+MULTILIB_REQUIRED   += mthumb/march=armv7/mfloat-abi=hard/mfpu=vfpv3-d16
+MULTILIB_OSDIRNAMES += mthumb/march.armv7=!armv7-ar/thumb
+MULTILIB_OSDIRNAMES += mthumb/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16=!armv7-ar/thumb/fpu
+MULTILIB_OSDIRNAMES += mthumb/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16=!armv7-ar/thumb/softfp
+MULTILIB_REUSE      += mthumb/march.armv7=marm/march.armv7
+MULTILIB_REUSE      += mthumb/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16=marm/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16
+MULTILIB_REUSE      += mthumb/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16=marm/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16
+endif
diff --git a/gcc/configure b/gcc/configure
index 9523773..24952e3 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -763,6 +763,7 @@ SET_MAKE
 accel_dir_suffix
 real_target_noncanonical
 enable_as_accelerator
+with_multilib_list
 REPORT_BUGS_TEXI
 REPORT_BUGS_TO
 PKGVERSION
@@ -7462,6 +7463,7 @@ else
 fi
 
 
+
 # -------------------------
 # Checks for other programs
 # -------------------------
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 68b0ee8..f8a1097 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -925,6 +925,7 @@ AC_ARG_WITH(multilib-list,
 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
 :,
 with_multilib_list=default)
+AC_SUBST(with_multilib_list)
 
 # -------------------------
 # Checks for other programs


A gnu/packages/patches/gcc-6-cross-environment-variables.patch => gnu/packages/patches/gcc-6-cross-environment-variables.patch +65 -0
@@ 0,0 1,65 @@
Search path environment variables for cross-compilers.  See the discussion
at <http://gcc.gnu.org/ml/gcc/2013-02/msg00124.html>.

Note: Touch 'C_INCLUDE_PATH' et al. rather than 'CPATH', as discussed
at <http://bugs.gnu.org/22186>.

--- a/gcc/incpath.c
+++ b/gcc/incpath.c
@@ -461,8 +461,8 @@ register_include_chains (cpp_reader *pfile, const char *sysroot,
 			 int stdinc, int cxx_stdinc, int verbose)
 {
   static const char *const lang_env_vars[] =
-    { "C_INCLUDE_PATH", "CPLUS_INCLUDE_PATH",
-      "OBJC_INCLUDE_PATH", "OBJCPLUS_INCLUDE_PATH" };
+    { "CROSS_C_INCLUDE_PATH", "CROSS_CPLUS_INCLUDE_PATH",
+      "CROSS_OBJC_INCLUDE_PATH", "CROSS_OBJCPLUS_INCLUDE_PATH" };
   cpp_options *cpp_opts = cpp_get_options (pfile);
   size_t idx = (cpp_opts->objc ? 2: 0);
 
@@ -473,7 +473,7 @@ register_include_chains (cpp_reader *pfile, const char *sysroot,
 
   /* CPATH and language-dependent environment variables may add to the
      include chain.  */
-  add_env_var_paths ("CPATH", BRACKET);
+  add_env_var_paths ("CROSS_CPATH", BRACKET);
   add_env_var_paths (lang_env_vars[idx], SYSTEM);
 
   target_c_incpath.extra_pre_includes (sysroot, iprefix, stdinc);
diff --git a/gcc/system.h b/gcc/system.h
index 42bc509..af3b9ad 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -1063,4 +1063,6 @@ helper_const_non_const_cast (const char *p)
 /* Get definitions of HOST_WIDE_INT and HOST_WIDEST_INT.  */
 #include "hwint.h"
 
+#define LIBRARY_PATH_ENV "CROSS_LIBRARY_PATH"
+
 #endif /* ! GCC_SYSTEM_H */
diff --git a/gcc/tlink.c b/gcc/tlink.c
index bc358b8..ad6242f 100644
--- a/gcc/tlink.c
+++ b/gcc/tlink.c
@@ -458,7 +458,7 @@ recompile_files (void)
   file *f;
 
   putenv (xstrdup ("COMPILER_PATH="));
-  putenv (xstrdup ("LIBRARY_PATH="));
+  putenv (xstrdup (LIBRARY_PATH_ENV "="));
 
   while ((f = file_pop ()) != NULL)
     {
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 0f042b0..c23fb0b 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -4264,7 +4264,7 @@ process_command (unsigned int decoded_options_count,
     }
 
   temp = env.get (LIBRARY_PATH_ENV);
-  if (temp && *cross_compile == '0')
+  if (temp)
     {
       const char *startp, *endp;
       char *nstore = (char *) alloca (strlen (temp) + 3);

A gnu/packages/patches/gd-CVE-2016-8670.patch => gnu/packages/patches/gd-CVE-2016-8670.patch +38 -0
@@ 0,0 1,38 @@
Fix CVE-2016-8670 (buffer overflow in dynamicGetbuf()):

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8670
http://seclists.org/oss-sec/2016/q4/138

Patch copied from upstream source repository:

https://github.com/libgd/libgd/commit/53110871935244816bbb9d131da0bccff734bfe9

From 53110871935244816bbb9d131da0bccff734bfe9 Mon Sep 17 00:00:00 2001
From: "Christoph M. Becker" <cmbecker69@gmx.de>
Date: Wed, 12 Oct 2016 11:15:32 +0200
Subject: [PATCH] Avoid potentially dangerous signed to unsigned conversion

We make sure to never pass a negative `rlen` as size to memcpy(). See
also <https://bugs.php.net/bug.php?id=73280>.

Patch provided by Emmanuel Law.
---
 src/gd_io_dp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gd_io_dp.c b/src/gd_io_dp.c
index 135eda3..228bfa5 100644
--- a/src/gd_io_dp.c
+++ b/src/gd_io_dp.c
@@ -276,7 +276,7 @@ static int dynamicGetbuf(gdIOCtxPtr ctx, void *buf, int len)
 	if(remain >= len) {
 		rlen = len;
 	} else {
-		if(remain == 0) {
+		if(remain <= 0) {
 			/* 2.0.34: EOF is incorrect. We use 0 for
 			 * errors and EOF, just like fileGetbuf,
 			 * which is a simple fread() wrapper.
-- 
2.10.1


A gnu/packages/patches/hdf4-architectures.patch => gnu/packages/patches/hdf4-architectures.patch +579 -0
@@ 0,0 1,579 @@
Copied from Debian.

Description: Support additional architectures.
Author: Francesco Paolo Lovergine <frankie@debian.org>

--- a/hdf/src/hdfi.h
+++ b/hdf/src/hdfi.h
@@ -48,6 +48,7 @@
 /*      8 - Cray IEEE                                                       */
 /*          (i.e. Big-Endian, all 64-bit architecture w/IEEE Floats)        */
 /*--------------------------------------------------------------------------*/
+#define     DFMT_S390           0x1111
 #define     DFMT_SUN            0x1111 
 #define     DFMT_SUN_INTEL      0x4441
 #define     DFMT_ALLIANT        0x1111
@@ -62,6 +63,7 @@
 #define     DFMT_CTSS           0x3331
 #define     DFMT_VAX            0x2221
 #define     DFMT_MIPSEL         0x4441
+#define     DFMT_MIPSEB         0x1111
 #define     DFMT_PC             0x4441
 #define     DFMT_APPLE          0x1111
 #define     DFMT_APPLE_INTEL    0x4441
@@ -75,6 +77,12 @@
 #define     DFMT_IA64           0x4441
 #define     DFMT_LINUX64        0x4441
 #define     DFMT_POWERPC64      0x1111
+#define     DFMT_POWERPC64LE    0x4441
+#define     DFMT_ARMV4L         0x4441
+#define     DFMT_AARCH64        0x4441
+#define     DFMT_X86_64         0x4441
+#define     DFMT_SH		0x4441
+#define     DFMT_SHEB		0x1111
 
 /* I/O library constants */
 #define UNIXUNBUFIO 1
@@ -288,7 +296,7 @@ typedef int               hdf_pint_t;
 
 #endif /* IBM6000 */
 
-#if defined(HP9000) || (!defined(__convexc__) && (defined(hpux) || defined(__hpux)))
+#if defined(HP9000) || (!defined(__convexc__) && (defined(hpux) || defined(__hpux) || defined(__hppa__)))
 
 #ifndef HP9000
 #define HP9000
@@ -347,6 +355,10 @@ typedef int               hdf_pint_t;
 /*  what each does */
 #define JMEMSYS         MEM_ANSI
 
+#ifdef __linux__
+#define FNAME_POST_UNDERSCORE
+#endif
+
 #endif /* HP9000 */
 
 
@@ -666,6 +678,410 @@ typedef int               hdf_pint_t;
 #endif /* !(defined(__APPLE__)) */
 
 /*-----------------------------------------------------*/
+#if defined (__linux__) && defined (__mc68000__)
+
+#ifdef GOT_MACHINE
+If you get an error on this line more than one machine type has been defined.
+Please check your Makefile.
+#endif
+#define GOT_MACHINE 1
+
+#include <fcntl.h>
+#include <sys/types.h>      /* for unbuffered file I/O */
+#include <sys/stat.h>
+#include <unistd.h>
+#include <ctype.h>          /* for character macros */
+
+#define DF_MT             DFMT_MOTOROLA
+
+#ifndef VOID    /* The stupid windows.h header file uses a #define instead of a typedef */
+typedef void              VOID;
+#endif  /* end VOID */
+typedef void *            VOIDP;
+typedef char *            _fcd;
+typedef char              char8;
+typedef unsigned char     uchar8;
+typedef char              int8;
+typedef unsigned char     uint8;
+typedef short int         int16;
+typedef unsigned short int uint16;
+typedef long int          int32;
+typedef unsigned long int uint32;
+typedef int               intn;
+typedef unsigned int      uintn;
+typedef float             float32;
+typedef double            float64;
+typedef long              intf;     /* size of INTEGERs in Fortran compiler */
+typedef int               hdf_pint_t;   /* an integer the same size as a pointer */
+#define FNAME_POST_UNDERSCORE
+#define _fcdtocp(desc) (desc)
+
+#ifdef  HAVE_FMPOOL
+#define FILELIB PAGEBUFIO  /* enable page buffering */
+#else
+#define FILELIB UNIXBUFIO
+#endif
+
+/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
+
+/* Determine the memory manager we are going to use. Valid values are: */
+/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
+/*  what each does */
+#define JMEMSYS         MEM_ANSI
+#define HAVE_STDC
+#define INCLUDES_ARE_ANSI
+
+#endif /* Linux/m68k */
+
+#if defined (__linux__) && defined (__sparc__)
+
+#ifdef GOT_MACHINE
+If you get an error on this line more than one machine type has been defined.
+Please check your Makefile.
+#endif
+#define GOT_MACHINE 1
+
+#include <fcntl.h>
+#include <sys/types.h>      /* for unbuffered file I/O */
+#include <sys/stat.h>
+#include <unistd.h>
+#include <ctype.h>          /* for character macros */
+
+#define DF_MT             DFMT_SUN
+
+#ifndef VOID    /* The stupid windows.h header file uses a #define instead of a typedef */
+typedef void              VOID;
+#endif  /* end VOID */
+typedef void *            VOIDP;
+typedef char *            _fcd;
+typedef char              char8;
+typedef unsigned char     uchar8;
+typedef char              int8;
+typedef unsigned char     uint8;
+typedef short int         int16;
+typedef unsigned short int uint16;
+#ifdef _LP64 /* 64-bit environment */
+typedef int               int32;
+typedef unsigned int      uint32;
+#else /* 32-bit environment */
+typedef long int          int32;
+typedef unsigned long int uint32;
+#endif
+typedef int               intn;
+typedef unsigned int      uintn;
+typedef float             float32;
+typedef double            float64;
+typedef long              intf;     /* size of INTEGERs in Fortran compiler */
+#ifdef _LP64 /* 64-bit environment */
+typedef long              hdf_pint_t;   /* an integer the same size as a pointer */
+#else /* 32-bit environment */
+typedef int               hdf_pint_t;   /* an integer the same size as a pointer */
+#endif
+#define FNAME_POST_UNDERSCORE
+#define _fcdtocp(desc) (desc)
+
+#ifdef  HAVE_FMPOOL
+#define FILELIB PAGEBUFIO  /* enable page buffering */
+#else
+#define FILELIB UNIXBUFIO
+#endif
+
+/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
+
+/* Determine the memory manager we are going to use. Valid values are: */
+/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
+/*  what each does */
+#define JMEMSYS         MEM_ANSI
+#define HAVE_STDC
+#define INCLUDES_ARE_ANSI
+
+#endif /* Linux/Sparc */
+
+#if defined (__linux__) && defined (__powerpc__) && !defined(__powerpc64__)
+
+#ifdef GOT_MACHINE
+If you get an error on this line more than one machine type has been defined.
+Please check your Makefile.
+#endif
+#define GOT_MACHINE 1
+
+#include <fcntl.h>
+#include <sys/types.h>      /* for unbuffered file I/O */
+#include <sys/stat.h>
+#include <unistd.h>
+#include <ctype.h>          /* for character macros */
+
+#define DF_MT             DFMT_MOTOROLA
+
+#ifndef VOID    /* The stupid windows.h header file uses a #define instead of a typedef */
+typedef void              VOID;
+#endif  /* end VOID */
+typedef void *            VOIDP;
+typedef char *            _fcd;
+typedef char              char8;
+typedef unsigned char     uchar8;
+typedef signed char       int8;
+typedef unsigned char     uint8;
+typedef short int         int16;
+typedef unsigned short int uint16;
+typedef long int          int32;
+typedef unsigned long int uint32;
+typedef int               intn;
+typedef unsigned int      uintn;
+typedef float             float32;
+typedef double            float64;
+typedef long              intf;     /* size of INTEGERs in Fortran compiler */
+typedef int               hdf_pint_t;   /* an integer the same size as a pointer */
+#define FNAME_POST_UNDERSCORE
+#define _fcdtocp(desc) (desc)
+
+#ifdef  HAVE_FMPOOL
+#define FILELIB PAGEBUFIO  /* enable page buffering */
+#else
+#define FILELIB UNIXBUFIO
+#endif
+
+/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
+
+/* Determine the memory manager we are going to use. Valid values are: */
+/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
+/*  what each does */
+#define JMEMSYS         MEM_ANSI
+#define HAVE_STDC
+#define INCLUDES_ARE_ANSI
+
+#endif /* Linux/powerpc */
+
+#if defined (__linux__) && defined (__s390__)
+
+#ifdef GOT_MACHINE
+If you get an error on this line more than one machine type has been defined.
+Please check your Makefile.
+#endif
+#define GOT_MACHINE 1
+
+#include <fcntl.h>
+#include <sys/types.h>      /* for unbuffered file I/O */
+#include <sys/stat.h>
+#include <unistd.h>
+#include <ctype.h>          /* for character macros */
+
+#define DF_MT             DFMT_S390
+
+#ifndef VOID    /* The stupid windows.h header file uses a #define instead of a typedef */
+typedef void              VOID;
+#endif  /* end VOID */
+typedef void *            VOIDP;
+typedef char *            _fcd;
+typedef char              char8;
+typedef unsigned char     uchar8;
+typedef signed char       int8;
+typedef unsigned char     uint8;
+typedef short int         int16;
+typedef unsigned short int uint16;
+#ifdef _LP64 /* 64-bit environment */
+typedef int               int32;
+typedef unsigned int      uint32;
+#else /* 32-bit environment */
+typedef long int          int32;
+typedef unsigned long int uint32;
+#endif
+typedef int               intn;
+typedef unsigned int      uintn;
+typedef float             float32;
+typedef double            float64;
+typedef long              intf;     /* size of INTEGERs in Fortran compiler */
+#ifdef _LP64 /* 64-bit environment */
+typedef long              hdf_pint_t;   /* an integer the same size as a pointer */
+#else /* 32-bit environment */
+typedef int               hdf_pint_t;   /* an integer the same size as a pointer */
+#endif
+#define FNAME_POST_UNDERSCORE
+#define _fcdtocp(desc) (desc)
+
+#ifdef  HAVE_FMPOOL
+#define FILELIB PAGEBUFIO  /* enable page buffering */
+#else
+#define FILELIB UNIXBUFIO
+#endif
+
+/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
+
+/* Determine the memory manager we are going to use. Valid values are: */
+/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
+/*  what each does */
+#define JMEMSYS         MEM_ANSI
+#define HAVE_STDC
+#define INCLUDES_ARE_ANSI
+
+#endif /* Linux/s390 */
+
+#if defined (__linux__) && (defined (__MIPSEB__) || defined(__MIPSEL__))
+
+#ifdef GOT_MACHINE
+If you get an error on this line more than one machine type has been defined.
+Please check your Makefile.
+#endif
+#define GOT_MACHINE 1
+
+#include <fcntl.h>
+#include <sys/types.h>      /* for unbuffered file I/O */
+#include <sys/stat.h>
+#include <unistd.h>
+#include <ctype.h>          /* for character macros */
+
+#if defined (__MIPSEB__)
+#define DF_MT             DFMT_MIPSEB
+#elif defined(__MIPSEL__)
+#define DF_MT		  DFMT_MIPSEL
+#endif
+
+#ifndef VOID    /* The stupid windows.h header file uses a #define instead of a typedef */
+typedef void              VOID;
+#endif  /* end VOID */
+typedef void *            VOIDP;
+typedef char *            _fcd;
+typedef char              char8;
+typedef unsigned char     uchar8;
+typedef signed char       int8;
+typedef unsigned char     uint8;
+typedef short int         int16;
+typedef unsigned short int uint16;
+typedef int          int32;
+typedef unsigned int uint32;
+typedef int               intn;
+typedef unsigned int      uintn;
+typedef float             float32;
+typedef double            float64;
+typedef long              intf;     /* size of INTEGERs in Fortran compiler */
+typedef long int               hdf_pint_t;   /* an integer the same size as a pointer */
+#define FNAME_POST_UNDERSCORE
+#define _fcdtocp(desc) (desc)
+
+#ifdef  HAVE_FMPOOL
+#define FILELIB PAGEBUFIO  /* enable page buffering */
+#else
+#define FILELIB UNIXBUFIO
+#endif
+
+/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
+
+/* Determine the memory manager we are going to use. Valid values are: */
+/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
+/*  what each does */
+#define JMEMSYS         MEM_ANSI
+#define HAVE_STDC
+#define INCLUDES_ARE_ANSI
+
+#endif /* Linux/mips */
+
+#if defined (__linux__) && defined (__arm__)
+
+#ifdef GOT_MACHINE
+If you get an error on this line more than one machine type has been defined.
+Please check your Makefile.
+#endif
+#define GOT_MACHINE 1
+
+#include <fcntl.h>
+#include <sys/types.h>      /* for unbuffered file I/O */
+#include <sys/stat.h>
+#include <unistd.h>
+#include <ctype.h>          /* for character macros */
+
+#define DF_MT             DFMT_ARMV4L
+
+#ifndef VOID    /* The stupid windows.h header file uses a #define instead of a typedef */
+typedef void              VOID;
+#endif  /* end VOID */
+typedef void *            VOIDP;
+typedef char *            _fcd;
+typedef char              char8;
+typedef unsigned char     uchar8;
+typedef signed char       int8;
+typedef unsigned char     uint8;
+typedef short int         int16;
+typedef unsigned short int uint16;
+typedef int          int32;
+typedef unsigned int uint32;
+typedef int               intn;
+typedef unsigned int      uintn;
+typedef float             float32;
+typedef double            float64;
+typedef long              intf;     /* size of INTEGERs in Fortran compiler */
+typedef long              hdf_pint_t;   /* an integer the same size as a pointer */
+#define FNAME_POST_UNDERSCORE
+#define _fcdtocp(desc) (desc)
+
+#ifdef  HAVE_FMPOOL
+#define FILELIB PAGEBUFIO  /* enable page buffering */
+#else
+#define FILELIB UNIXBUFIO
+#endif
+
+/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
+
+/* Determine the memory manager we are going to use. Valid values are: */
+/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
+/*  what each does */
+#define JMEMSYS         MEM_ANSI
+#define HAVE_STDC
+#define INCLUDES_ARE_ANSI
+
+#endif /* Linux/arm */
+
+#if defined (__linux__) && defined (__aarch64__)
+
+#ifdef GOT_MACHINE
+If you get an error on this line more than one machine type has been defined.
+Please check your Makefile.
+#endif
+#define GOT_MACHINE 1
+
+#include <fcntl.h>
+#include <sys/types.h>      /* for unbuffered file I/O */
+#include <sys/stat.h>
+#include <unistd.h>
+#include <ctype.h>          /* for character macros */
+
+#define DF_MT             DFMT_AARCH64
+
+typedef void              VOID;
+typedef void *            VOIDP;
+typedef char *            _fcd;
+typedef char              char8;
+typedef unsigned char     uchar8;
+typedef signed char       int8;
+typedef unsigned char     uint8;
+typedef short int         int16;
+typedef unsigned short int uint16;
+typedef int               int32;
+typedef unsigned int      uint32;
+typedef int               intn;
+typedef unsigned int      uintn;
+typedef float             float32;
+typedef double            float64;
+typedef int               intf;     /* size of INTEGERs in Fortran compiler */
+typedef long              hdf_pint_t;   /* an integer the same size as a pointer */
+#define FNAME_POST_UNDERSCORE
+#define _fcdtocp(desc) (desc)
+#define FILELIB UNIXBUFIO
+
+#ifndef BIG_LONGS
+#define BIG_LONGS
+#endif
+
+/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
+
+/* Determine the memory manager we are going to use. Valid values are: */
+/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
+/*  what each does */
+#define JMEMSYS         MEM_ANSI
+#define HAVE_STDC
+#define INCLUDES_ARE_ANSI
+
+#endif /* Linux/aarch64 */
+
 #if defined(NEXT) || defined(NeXT)
 
 #ifndef NEXT
@@ -928,7 +1344,11 @@ Please check your Makefile.
 
 #include <sys/file.h>               /* for unbuffered i/o stuff */
 #include <sys/stat.h>
-#define DF_MT             DFMT_POWERPC64
+#ifdef __LITTLE_ENDIAN__
+#define DF_MT DFMT_POWERPC64LE
+#else
+#define DF_MT DFMT_POWERPC64
+#endif
 typedef void              VOID;
 typedef void              *VOIDP;
 typedef char              *_fcd;
@@ -952,6 +1372,11 @@ typedef long              hdf_pint_t;
 #define _fcdtocp(desc) (desc)
 #define FILELIB UNIXBUFIO
 
+#ifndef BIG_LONGS
+#define BIG_LONGS
+#endif
+
+
 /* JPEG #define's - Look in the JPEG docs before changing - (Q) */
 
 /* Determine the memory manager we are going to use. Valid values are: */
@@ -1097,6 +1522,8 @@ typedef long              hdf_pint_t;
 #define _fcdtocp(desc) (desc)
 #define FILELIB UNIXBUFIO
 
+#define BIG_LONGS
+
 /* JPEG #define's - Look in the JPEG docs before changing - (Q) */
 
 /* Determine the memory manager we are going to use. Valid values are: */
@@ -1111,6 +1538,66 @@ typedef long              hdf_pint_t;
 
 #endif /* IA64 */
 
+/* Renesas SuperH SH3(little/big)/SH4(little/big) */
+#if defined (__linux__) && defined(__sh__)
+
+#ifdef GOT_MACHINE
+If you get an error on this line more than one machine type has been defined.
+Please check your Makefile.
+#endif
+#define GOT_MACHINE 1
+
+#include <fcntl.h>
+#include <sys/types.h>      /* for unbuffered file I/O */
+#include <sys/stat.h>
+#include <unistd.h>
+#include <ctype.h>          /* for character macros */
+
+#if defined (__LITTLE_ENDIAN__)
+#define DF_MT             DFMT_SH
+#elif defined(__BIG_ENDIAN__)
+#define DF_MT		  DFMT_SHEB
+#endif
+
+#ifndef VOID /* The stupid windows.h header file uses a #define instead of a typedef */
+typedef void              VOID;
+#endif  /* end VOID */
+
+typedef void *            VOIDP;
+typedef char *            _fcd;
+typedef char              char8;
+typedef unsigned char     uchar8;
+typedef signed char       int8;
+typedef unsigned char     uint8;
+typedef short int         int16;
+typedef unsigned short int uint16;
+typedef long int          int32;
+typedef unsigned long int uint32;
+typedef int               intn;
+typedef unsigned int      uintn;
+typedef float             float32;
+typedef double            float64;
+typedef long              intf;
+typedef int               hdf_pint_t;
+#define FNAME_POST_UNDERSCORE
+#define _fcdtocp(desc) (desc)
+
+#ifdef  HAVE_FMPOOL
+#define FILELIB PAGEBUFIO  /* enable page buffering */
+#else
+#define FILELIB UNIXBUFIO
+#endif
+
+/* JPEG #define's - Look in the JPEG docs before changing - (Q) */
+/* Determine the memory manager we are going to use. Valid values are: */
+/*  MEM_DOS, MEM_ANSI, MEM_NAME, MEM_NOBS.  See the JPEG docs for details on */
+/*  what each does */
+#define JMEMSYS         MEM_ANSI
+#define HAVE_STDC
+#define INCLUDES_ARE_ANSI
+
+#endif /* Linux/sh */
+
 #ifndef GOT_MACHINE
 No machine type has been defined.  Your Makefile needs to have someing like
 -DSUN or -DUNICOS in order for the HDF internal structures to be defined
--- a/hdf/src/hconv.h
+++ b/hdf/src/hconv.h
@@ -59,7 +59,7 @@
 /* CONSTANT DEFINITIONS                                                      */
 /*****************************************************************************/
 /* Generally Big-Endian machines */
-#if !defined(INTEL86) && !defined(MIPSEL) && !defined(DEC_ALPHA) && !defined(I860) && !defined(SUN386) && !(defined(__ia64) && !(defined(hpux) || defined(__hpux))) && !defined(__x86_64__)
+#if !defined(INTEL86) && !defined(MIPSEL) && !defined(DEC_ALPHA) && !defined(I860) && !defined(SUN386) && !(defined(__ia64) && !(defined(hpux) || defined(__hpux))) && !defined(__x86_64__) && !(defined(__powerpc__) && defined(__LITTLE_ENDIAN__)) && !defined(__aarch64__) && !defined(__ARM_EABI__)
 #       define UI8_IN     DFKnb1b   /* Unsigned Integer, 8 bits */
 #       define UI8_OUT    DFKnb1b
 #       define SI16_IN    DFKnb2b   /* S = Signed */

D gnu/packages/patches/irrlicht-mesa-10.patch => gnu/packages/patches/irrlicht-mesa-10.patch +0 -46
@@ 1,46 0,0 @@
Patch to work around incompatibility between irrlicht-1.8.1 and mesa-10.x.
Upstream bug (fixed in trunk): http://sourceforge.net/p/irrlicht/bugs/429/
Upstream fix: http://sourceforge.net/p/irrlicht/code/4810
This patch copied from:
http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-games/irrlicht/files/irrlicht-1.8.1-mesa-10.x.patch?view=markup

From 244d00280c1b082ca164f92337773e9e4e1a3898 Mon Sep 17 00:00:00 2001
From: hiker <henrichsjoerg@mgail.com>
Date: Wed, 26 Feb 2014 11:13:03 +1100
Subject: [PATCH] Applied patch from jpirie for fixing mesa 10 compilation
 problems.

--- irrlicht-1.8.1/source/Irrlicht/COpenGLExtensionHandler.h
+++ irrlicht-1.8.1/source/Irrlicht/COpenGLExtensionHandler.h
@@ -21,6 +21,7 @@
 	#endif
 	#include <GL/gl.h>
 	#if defined(_IRR_OPENGL_USE_EXTPOINTER_)
+		typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
 		#include "glext.h"
 	#endif
 	#include "wglext.h"
@@ -35,6 +36,7 @@
 	#endif
 	#include <OpenGL/gl.h>
 	#if defined(_IRR_OPENGL_USE_EXTPOINTER_)
+		typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
 		#include "glext.h"
 	#endif
 #elif defined(_IRR_COMPILE_WITH_SDL_DEVICE_) && !defined(_IRR_COMPILE_WITH_X11_DEVICE_)
@@ -48,6 +50,7 @@
 	#define NO_SDL_GLEXT
 	#include <SDL/SDL_video.h>
 	#include <SDL/SDL_opengl.h>
+	typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
 	#include "glext.h"
 #else
 	#if defined(_IRR_OPENGL_USE_EXTPOINTER_)
@@ -60,6 +63,7 @@
 	#include <GL/gl.h>
 	#include <GL/glx.h>
 	#if defined(_IRR_OPENGL_USE_EXTPOINTER_)
+	typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
 	#include "glext.h"
 	#undef GLX_ARB_get_proc_address // avoid problems with local glxext.h
 	#include "glxext.h"

A gnu/packages/patches/node-9077.patch => gnu/packages/patches/node-9077.patch +30 -0
@@ 0,0 1,30 @@
From fc164acbbb700fd50ab9c04b47fc1b2687e9c0f4 Mon Sep 17 00:00:00 2001
From: "Bradley T. Hughes" <bradleythughes@fastmail.fm>
Date: Thu, 13 Oct 2016 07:38:38 +0000
Subject: [PATCH] build: add -DZLIB_CONST when building with --shared-zlib

Commit 782620f added the define only when building with the bundled
zlib. Using a shared zlib results in build breakage:

../src/inspector_agent.cc:179:16: error: assigning to 'Bytef *' (aka 'unsigned char *') from incompatible type
      'const uint8_t *' (aka 'const unsigned char *')
  strm.next_in = PROTOCOL_JSON + 3;
               ^ ~~~~~~~~~~~~~~~~~
1 error generated.
---
 node.gyp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/node.gyp b/node.gyp
index fa98547..d799ba1 100644
--- a/node.gyp
+++ b/node.gyp
@@ -480,6 +480,8 @@
         }],
         [ 'node_shared_zlib=="false"', {
           'dependencies': [ 'deps/zlib/zlib.gyp:zlib' ],
+        }, {
+          'defines': [ 'ZLIB_CONST' ],
         }],
 
         [ 'node_shared_http_parser=="false"', {

M gnu/packages/pdf.scm => gnu/packages/pdf.scm +54 -0
@@ 8,6 8,7 @@
;;; Coypright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Coypright © 2016 Marius Bakke <mbakke@fastmail.com>
;;; Coypright © 2016 Ludovic Courtès <ludo@gnu.org>
;;; Coypright © 2016 Julien Lepiller <julien@lepiller.eu>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 46,6 47,11 @@
  #:use-module (gnu packages gettext)
  #:use-module (gnu packages backup)
  #:use-module (gnu packages lesstif)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages xdisorg)
  #:use-module (gnu packages imagemagick)
  #:use-module (gnu packages gl)
  #:use-module (gnu packages photo)
  #:use-module (gnu packages image)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages qt)


@@ 697,3 703,51 @@ such as smooth alpha-blended slide transitions.  It provides additional tools
such as zooming, highlighting an area of the screen, and a tool to navigate
the PDF pages.")
    (license license:gpl2)))

(define-public fbida
  (package
    (name "fbida")
    (version "2.12")
    (home-page "https://www.kraxel.org/blog/linux/fbida/")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://www.kraxel.org/releases/fbida/"
                                  name "-" version ".tar.gz"))
              (sha256
               (base32
                "0bw224vb7jh0lrqaf4jgxk48xglvxs674qcpj5y0axyfbh896cfk"))))
    (build-system gnu-build-system)
    (arguments
      '(#:phases (alist-cons-after
                  'unpack 'patch-ldconfig
                  (lambda _
                   (substitute* "mk/Autoconf.mk"
                    (("/sbin/ldconfig -p") "echo lib")) #t)
                  (alist-delete 'configure %standard-phases))
        #:tests? #f
        #:make-flags (list "CC=gcc"
                           (string-append "prefix=" (assoc-ref %outputs "out")))))
    (inputs `(("libjpeg" ,libjpeg)
              ("curl" ,curl)
              ("libtiff" ,libtiff)
              ("libudev" ,eudev)
              ("libwebp" ,libwebp)
              ("libdrm" ,libdrm)
              ("imagemagick" ,imagemagick)
              ("giflib" ,giflib)
              ("glib" ,glib)
              ("cairo-xcb" ,cairo-xcb)
              ("freetype" ,freetype)
              ("fontconfig" ,fontconfig)
              ("libexif" ,libexif)
              ("mesa" ,mesa)
              ("libepoxy" ,libepoxy)
              ("libpng" ,libpng)
              ("poppler" ,poppler)))
    (native-inputs `(("pkg-config" ,pkg-config)))
    (synopsis "Framebuffer and drm-based image viewer")
    (description
      "fbida contains a few applications for viewing and editing images on
the framebuffer.")

    (license license:gpl2+)))

M gnu/packages/photo.scm => gnu/packages/photo.scm +2 -2
@@ 51,14 51,14 @@
(define-public libraw
  (package
    (name "libraw")
    (version "0.17.0")
    (version "0.17.2")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://www.libraw.org/data/LibRaw-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "043kckxjqanw8dl3m9f6kvsf0l20ywxmgxd1xb0slj6m8l4w4hz6"))))
                "0p6imxpsfn82i0i9w27fnzq6q6gwzvb9f7sygqqakv36fqnc9c4j"))))
    (build-system gnu-build-system)
    (home-page "http://www.libraw.org")
    (synopsis "Raw image decoder")

M gnu/packages/python.scm => gnu/packages/python.scm +64 -23
@@ 785,7 785,7 @@ concepts.")
    (arguments '(#:test-target "check"))
    (native-inputs
     `(("python-pbr" ,python-pbr)))
    (home-page "http://code.google.com/p/pylockfile/")
    (home-page "https://launchpad.net/pylockfile")
    (synopsis "Platform-independent file locking module")
    (description
     "The lockfile package exports a LockFile class which provides a simple


@@ 922,7 922,7 @@ etc.).  The package is structured to make adding new modules easy.")
     `(("python-pycrypto" ,python-pycrypto)))
    (arguments
     `(#:tests? #f))                      ;TODO: tests require pytest
    (home-page "http://bitbucket.org/kang/python-keyring-lib")
    (home-page "https://github.com/jaraco/keyring")
    (synopsis "Store and access your passwords safely")
    (description
     "The Python keyring lib provides a easy way to access the system keyring


@@ 1737,9 1737,6 @@ supports coverage of subprocesses.")
      (native-inputs `(("python2-setuptools" ,python2-setuptools)
                       ,@(package-native-inputs base))))))

(define-public python2-pytest-runner
  (package-with-python2 python-pytest-runner))

(define-public python-pytest-mock
  (package
    (name "python-pytest-mock")


@@ 1789,7 1786,15 @@ same arguments.")
       (uri (pypi-uri "pytest-xdist" version ".zip"))
       (sha256
        (base32
         "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))))
         "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))
       (modules '((guix build utils)))
       (snippet
        '(begin
           ;; Remove pre-compiled .pyc files from source.
           (for-each delete-file-recursively
                     (find-files "." "__pycache__" #:directories? #t))
           (for-each delete-file (find-files "." "\\.pyc$"))
           #t))))
    (build-system python-build-system)
    (native-inputs
     `(("unzip" ,unzip)


@@ 5776,9 5781,6 @@ reading and writing MessagePack data.")
    (native-inputs
     `(("python2-setuptools" ,python2-setuptools)))))

(define-public python2-msgpack
  (package-with-python2 python-msgpack))

(define-public python-netaddr
  (package
    (name "python-netaddr")


@@ 6033,15 6035,14 @@ designed to efficently cope with extremely large amounts of data.")
(define-public python-pyasn1
  (package
    (name "python-pyasn1")
    (version "0.1.8")
    (version "0.1.9")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://pypi.python.org/packages/source/p/"
                           "pyasn1/pyasn1-" version ".tar.gz"))
       (uri (pypi-uri "pyasn1" version))
       (sha256
        (base32
         "0iw31d9l0zwx35szkzq72hiw002wnqrlrsi9dpbrfngcl1ybwcsx"))))
         "0zraxni14bqi20kr4bi6nwsh32aibz0fq0xaczfisw0zdpcsqg45"))))
    (build-system python-build-system)
    (home-page "http://pyasn1.sourceforge.net/")
    (synopsis "ASN.1 types and codecs")


@@ 6285,15 6286,14 @@ message digests and key derivation functions.")
(define-public python-pyopenssl
  (package
    (name "python-pyopenssl")
    (version "16.0.0")
    (version "16.1.0")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://pypi.python.org/packages/source/p/"
                           "pyOpenSSL/pyOpenSSL-" version ".tar.gz"))
       (uri (pypi-uri "pyOpenSSL" version))
       (sha256
        (base32
         "0zfijaxlq4vgi6jz0d4i5xq9ygqnyps6br7lmigjhqnh8gp10g9n"))))
         "0prm06zz7hl6bk5s2lqzw25lq6smayfv2fgiliw2rbqxlyiavxw8"))))
    (build-system python-build-system)
    (propagated-inputs
     `(("python-cryptography" ,python-cryptography)


@@ 6684,7 6684,13 @@ that have uses outside of the Zope framework.")
                           "/zope.testing/zope.testing-" version ".tar.gz"))
       (sha256
        (base32
         "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))))
         "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))
       (modules '((guix build utils)))
       (snippet
        '(begin
           ;; Remove pre-compiled .pyc files backup files from source.
           (for-each delete-file (find-files "." "(\\.pyc|~)$"))
           #t))))
    (build-system python-build-system)
    (native-inputs
     `(("python-zope-exceptions" ,python-zope-exceptions)))


@@ 7010,14 7016,14 @@ timestamps.")
(define-public python-werkzeug
  (package
    (name "python-werkzeug")
    (version "0.11.5")
    (version "0.11.11")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "Werkzeug" version))
       (sha256
        (base32
         "0r41xqp4cypzcgsf6zbspbqd272wnzf20igb4w4b5wzfhgqh9nxg"))))
         "1rgpq8a2qv26d75v9j3b074inirlyy6y4b5x4rxblp202jy4cb77"))))
    (build-system python-build-system)
    (native-inputs
     `(("python-pytest" ,python-pytest)))


@@ 8884,6 8890,36 @@ library.")
      (native-inputs `(("python2-setuptools" ,python2-setuptools)
                       ,@(package-native-inputs responses))))))

(define-public python-whoosh
  (package
    (name "python-whoosh")
    (version "2.7.4")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "Whoosh" version))
       (sha256
        (base32
         "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw"))))
    (build-system python-build-system)
    (native-inputs
     `(("python-setuptools" ,python-setuptools)
       ("python-pytest" ,python-pytest)))
    (home-page "http://bitbucket.org/mchaput/whoosh")
    (synopsis "Full text indexing, search, and spell checking library")
    (description
     "Whoosh is a fast, pure-Python full text indexing, search, and spell
checking library.")
    (license license:bsd-2)))

(define-public python2-whoosh
  (let ((whoosh (package-with-python2 (strip-python2-variant python-whoosh))))
    (package (inherit whoosh)
      (propagated-inputs
       `(("python2-backport-ssl-match-hostname"
          ,python2-backport-ssl-match-hostname)
          ,@(package-propagated-inputs whoosh))))))

(define-public python-pathlib
  (package
    (name "python-pathlib")


@@ 8910,7 8946,12 @@ be done easily through operators, attribute accesses, and method calls.
comparing Windows paths ignores casing.
@item Well-defined semantics, eliminating any inconsistencies or
ambiguities (forward vs. backward slashes, etc.).
@end enumerate\n")
@end enumerate

Note: In Python 3.4, pathlib is now part of the standard library.  For other
Python versions please consider python-pathlib2 instead, which tracks the
standard library module.  This module (python-pathlib) isn't maintained
anymore.")
    (license license:expat)))

(define-public python2-pathlib


@@ 9886,14 9927,14 @@ until the object is actually required, and caches the result of said call.")
(define-public python-dnspython
  (package
  (name "python-dnspython")
  (version "1.14.0")
  (version "1.15.0")
  (source (origin
            (method url-fetch)
            (uri (string-append "http://www.dnspython.org/kits/"
                                version "/dnspython-" version ".tar.gz"))
            (sha256
             (base32
              "1z472r63gdqsxhsxj3plr5vs478yf4303vrqxxpsccc940g441hl"))))
              "0jr4v2pd90i6l1xxbss2m05psbjaxvyvvvpq44wycijpfgjqln8i"))))
  (build-system python-build-system)
  (arguments '(#:tests? #f)) ; XXX: requires internet access
  (native-inputs

M gnu/packages/qt.scm => gnu/packages/qt.scm +3 -3
@@ 61,7 61,7 @@
(define-public qt
  (package
    (name "qt")
    (version "5.6.1-1")
    (version "5.6.2")
    (source (origin
             (method url-fetch)
             (uri


@@ 73,7 73,7 @@
                 version ".tar.xz"))
             (sha256
               (base32
                 "1nrn2wivjwdxc9q03gpsi336gcl9l2axi0xjbzsha5v6akmsf26f"))
                 "1cw93mrlkqbwndfqyjpsvjzkpzi39px2is040xvk18mvg3y1prl3"))
             (modules '((guix build utils)))
             (snippet
              '(begin


@@ 203,7 203,7 @@
                       "-no-avx2"
                       "-no-mips_dsp"
                       "-no-mips_dspr2"))))))))
    (home-page "http://qt-project.org/")
    (home-page "https://www.qt.io/")
    (synopsis "Cross-platform GUI library")
    (description "Qt is a cross-platform application and UI framework for
developers using C++ or QML, a CSS & JavaScript like language.")

M gnu/packages/ruby.scm => gnu/packages/ruby.scm +4 -2
@@ 423,13 423,13 @@ expectations and mocks frameworks.")
(define-public bundler
  (package
    (name "bundler")
    (version "1.13.2")
    (version "1.13.5")
    (source (origin
              (method url-fetch)
              (uri (rubygems-uri "bundler" version))
              (sha256
               (base32
                "05gwyhfn103vrmrw13r3n78bcl75mrj82ipsbazcl08wg1bql7x6"))))
                "0fxr7aq7qhlga423mygy7q96cwxmvqlcy676v2x5swlw8rlha2in"))))
    (build-system ruby-build-system)
    (arguments
     '(#:tests? #f)) ; avoid dependency cycles


@@ 2477,6 2477,8 @@ a native C extension.")
               (substitute* "Rakefile"
                 (("FileList\\[`git ls-files`\\.split\\(/\\\\n/\\)\\]")
                  (string-append "FileList" files))))
             (substitute* "Gemfile"
               ((".*json-java.*") "\n"))
             #t)))))
    (native-inputs
     `(("ruby-permutation" ,ruby-permutation)

M gnu/packages/serialization.scm => gnu/packages/serialization.scm +5 -4
@@ 3,6 3,7 @@
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 37,7 38,7 @@
(define-public cereal
  (package
    (name "cereal")
    (version "1.1.2")
    (version "1.2.1")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/USCiLab/cereal/archive/v"


@@ 45,7 46,7 @@
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "13bvsfzvm7yyp97k20iznq2j14dj3qiczvpq7g8897njw46psq25"))))
                "0kj32h3j2128anig0g9gzw82kfyd5xqfkwq6vdyv900jx8i1qckx"))))
    (build-system cmake-build-system)
    (arguments
     `(;; The only included tests are portability tests requiring


@@ 153,7 154,7 @@ serialization.")
(define-public jsoncpp
  (package
    (name "jsoncpp")
    (version "1.7.4")
    (version "1.7.7")
    (source (origin
              (method url-fetch)
              (uri (string-append


@@ 162,7 163,7 @@ serialization.")
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0sgp6nc4c6pfn92f369v08zdwpqswn9j2ihy59bpwwl0grkx1p0h"))))
                "15wg14480lrbrhc2myk9rwpwb2gzix9bk80p4y7gxg3zrzml0xh8"))))
    (build-system cmake-build-system)
    (home-page "https://github.com/open-source-parsers/jsoncpp")
    (synopsis "C++ library for interacting with JSON")

M gnu/packages/ssh.scm => gnu/packages/ssh.scm +9 -2
@@ 37,6 37,7 @@
  #:use-module (gnu packages multiprecision)
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages nettle)
  #:use-module (gnu packages mit-krb5)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages pkg-config)
  #:autoload   (gnu packages protobuf) (protobuf)


@@ 126,15 127,21 @@ a server that supports the SSH-2 protocol.")
   (inputs `(("groff" ,groff)
             ("openssl" ,openssl)
             ("pam" ,linux-pam)
             ("mit-krb5" ,mit-krb5)
             ("zlib" ,zlib)
             ("xauth" ,xauth)))                   ;for 'ssh -X' and 'ssh -Y'
   (arguments
    `(#:test-target "tests"
      #:configure-flags '("--sysconfdir=/etc/ssh"
      #:configure-flags  `("--sysconfdir=/etc/ssh"

                          ;; Default value of 'PATH' used by sshd.
                           ;; Default value of 'PATH' used by sshd.
                          "--with-default-path=/run/current-system/profile/bin"

                          ;; configure needs to find krb5-config
                          ,(string-append "--with-kerberos5="
                                          (assoc-ref %build-inputs "mit-krb5")
                                          "/bin")

                          ;; Enable PAM support in sshd.
                          "--with-pam")


M gnu/packages/terminals.scm => gnu/packages/terminals.scm +8 -6
@@ 88,7 88,7 @@ configureable through a graphical wizard.")
(define-public termite
  (package
    (name "termite")
    (version "11")
    (version "12")
    (source
      (origin
        (method git-fetch)


@@ 99,11 99,13 @@ configureable through a graphical wizard.")
              (recursive? #t)))
        (file-name (string-append name "-" version "-checkout"))
        (sha256
          (base32
            "1cw4yw7n9m2si8b7zcfyz9pyihncabxm5g39v1mxslfajxgwzmd8"))))
         (base32
          "0s6dyg3vcqk5qcx90bs24wdnd3p56rdjdcanx4pcxvp6ksjl61jz"))))
    (build-system gnu-build-system)
    (arguments
      `(#:phases (alist-delete 'configure %standard-phases)
      `(#:phases
        (modify-phases %standard-phases
          (delete 'configure))
        #:tests? #f
        ;; This sets the destination when installing the necessary terminal
        ;; capability data, which are not provided by 'ncurses'.  See


@@ 263,7 265,7 @@ multi-seat support, a replacement for @command{mingetty}, and more.")
(define-public picocom
  (package
    (name "picocom")
    (version "2.1")
    (version "2.2")
    (source (origin
              (method url-fetch)
              (uri (string-append


@@ 272,7 274,7 @@ multi-seat support, a replacement for @command{mingetty}, and more.")
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1v891cx18vx3lnpfaq90f5y6njgigkn4qsikhrmyzshnz32jy5bb"))))
                "1knl6dglnrynx1fhy21nylw56i1q3dkizkgxzkq42mb7ilah8f9y"))))
    (build-system gnu-build-system)
    (arguments
     `(#:make-flags '("CC=gcc")

M gnu/packages/tls.scm => gnu/packages/tls.scm +6 -12
@@ 426,16 426,13 @@ security, and applying best practice development processes.")
(define-public python-acme
  (package
    (name "python-acme")
    (version "0.8.1")
    (version "0.9.3")
    (source (origin
              (method url-fetch)
              (uri (string-append
                     "https://pypi.python.org/packages/"
                     "f5/7a/11a99b5d1d1c692f6eed27cfab69e6ba4d2f0c2a461d2607e6a930ff2c68/"
                     "acme-" version ".tar.gz"))
              (uri (pypi-uri "acme" version))
      (sha256
        (base32
         "17vx2miczpd8ww4xizmc0nca2c7jf04wnhfnswx2bxhb537lmsnk"))))
         "16a02bb0apnk1bm68bcabdmmwd6rnvnjzanrmcb46bpbapwz3vx6"))))
    (build-system python-build-system)
    (arguments
     `(#:phases


@@ 488,16 485,13 @@ security, and applying best practice development processes.")
(define-public certbot
  (package
    (name "certbot")
    (version "0.8.1")
    (version "0.9.3")
    (source (origin
              (method url-fetch)
              (uri (string-append
                     "https://pypi.python.org/packages/"
                     "a2/3b/4756e6a0ceb14e084042a2a65c615d68d25621c6fd446d0fc10d14c4ce7d/"
                     name "-" version ".tar.gz"))
              (uri (pypi-uri name version))
              (sha256
               (base32
                "0w972cf2mk74aji5d8dylg3jw6wczg01gb4asf3ndv8c64yxza3c"))))
                "1c7k4lfq5j78d1rvrwrb9082ngwibz92cwkf4kazaa9b76w9q538"))))
    (build-system python-build-system)
    (arguments
     `(#:python ,python-2

M gnu/packages/version-control.scm => gnu/packages/version-control.scm +3 -3
@@ 313,7 313,7 @@ everything from small to very large projects with speed and efficiency.")
(define-public libgit2
  (package
    (name "libgit2")
    (version "0.24.1")
    (version "0.24.2")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/libgit2/libgit2/"


@@ 321,7 321,7 @@ everything from small to very large projects with speed and efficiency.")
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1ppyfwxc276d2p2pwbzlmvs2bkgng425rl8k2rf9nsq66jxqq6b0"))))
                "1rkmfjiv5h80ycra42w9idbcrgj9rz581k5c06badys3650agw00"))))
    (build-system cmake-build-system)
    (arguments
     `(#:phases


@@ 344,7 344,7 @@ everything from small to very large projects with speed and efficiency.")
       ("openssl" ,openssl)))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (home-page "http://libgit2.github.com/")
    (home-page "https://libgit2.github.com/")
    (synopsis "Library providing Git core methods")
    (description
     "Libgit2 is a portable, pure C implementation of the Git core methods

M gnu/packages/webkit.scm => gnu/packages/webkit.scm +2 -2
@@ 53,14 53,14 @@
(define-public webkitgtk
  (package
    (name "webkitgtk")
    (version "2.14.0")
    (version "2.14.1")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://www.webkitgtk.org/releases/"
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
                "02paj0anbnqn1z3hn5c4csmq9nga995rzagiplj3sjk2dj1ss4q5"))))
                "1dffnz20psgc604azhbzn9a6cdhafar9dw74w3bbwrfy531pcb9f"))))
    (build-system cmake-build-system)
    (arguments
     '(#:tests? #f ; no tests

M gnu/services/sddm.scm => gnu/services/sddm.scm +1 -1
@@ 29,7 29,7 @@
  #:use-module (guix gexp)
  #:use-module (guix records)
  #:export (sddm-configuration
            sddm-confiugration?
            sddm-configuration?
            sddm-service-type
            sddm-service))


M guix/grafts.scm => guix/grafts.scm +23 -9
@@ 227,17 227,33 @@ resulting list of grafts.

This is a monadic procedure in %STATE-MONAD where the state is a vhash mapping
derivations to the corresponding set of grafts."
  (define (graft-origin? drv graft)
    ;; Return true if DRV corresponds to the origin of GRAFT.
    (match graft
      (($ <graft> (? derivation? origin) output)
       (match (assoc-ref (derivation->output-paths drv) output)
         ((? string? result)
          (string=? result
                    (derivation->output-path origin output)))
         (_
          #f)))
      (_
       #f)))

  (define (dependency-grafts item)
    (let-values (((drv output) (item->deriver store item)))
      (if drv
          (cumulative-grafts store drv grafts references
                             #:outputs (list output)
                             #:guile guile
                             #:system system)
          ;; If GRAFTS already contains a graft from DRV, do not override it.
          (if (find (cut graft-origin? drv <>) grafts)
              (state-return grafts)
              (cumulative-grafts store drv grafts references
                                 #:outputs (list output)
                                 #:guile guile
                                 #:system system))
          (state-return grafts))))

  (define (return/cache cache value)
    (mbegin %store-monad
    (mbegin %state-monad
      (set-current-state (vhash-consq drv value cache))
      (return value)))



@@ 250,10 266,8 @@ derivations to the corresponding set of grafts."
         (()                                      ;no dependencies
          (return/cache cache grafts))
         (deps                                    ;one or more dependencies
          (mlet %state-monad ((grafts (mapm %state-monad dependency-grafts deps))
                              (cache  (current-state)))
            (let* ((grafts     (delete-duplicates (concatenate grafts) equal?))
                   (origins    (map graft-origin-file-name grafts)))
          (mlet %state-monad ((grafts (mapm %state-monad dependency-grafts deps)))
            (let ((grafts (delete-duplicates (concatenate grafts) equal?)))
              (match (filter (lambda (graft)
                               (member (graft-origin-file-name graft) deps))
                             grafts)

M guix/import/utils.scm => guix/import/utils.scm +0 -1
@@ 26,7 26,6 @@
  #:use-module (guix utils)
  #:use-module (ice-9 match)
  #:use-module (ice-9 regex)
  #:use-module (json)
  #:use-module (srfi srfi-1)
  #:export (factorize-uri


M guix/packages.scm => guix/packages.scm +4 -2
@@ 919,7 919,8 @@ and return it."
            (cached (=> %graft-cache) package system
                    (let ((orig (package-derivation store package system
                                                    #:graft? #f))
                          (new  (package-derivation store replacement system)))
                          (new  (package-derivation store replacement system
                                                    #:graft? #t)))
                      (graft
                        (origin orig)
                        (replacement new)))))))


@@ 935,7 936,8 @@ and return it."
           (let ((orig (package-cross-derivation store package target system
                                                 #:graft? #f))
                 (new  (package-cross-derivation store replacement
                                                 target system)))
                                                 target system
                                                 #:graft? #t)))
             (graft
               (origin orig)
               (replacement new))))))

M guix/scripts/graph.scm => guix/scripts/graph.scm +38 -15
@@ 42,6 42,7 @@
            %bag-emerged-node-type
            %derivation-node-type
            %reference-node-type
            %referrer-node-type
            %node-types

            guix-graph))


@@ 257,6 258,24 @@ derivation graph")))))))
;;; DAG of residual references (aka. run-time dependencies).
;;;

(define ensure-store-items
  ;; Return a list of store items as a monadic value based on the given
  ;; argument, which may be a store item or a package.
  (match-lambda
    ((? package? package)
     ;; Return the output file names of PACKAGE.
     (mlet %store-monad ((drv (package->derivation package)))
       (return (match (derivation->output-paths drv)
                 (((_ . file-names) ...)
                  file-names)))))
    ((? store-path? item)
     (with-monad %store-monad
       (return (list item))))
    (x
     (raise
      (condition (&message (message "unsupported argument for \
this type of graph")))))))

(define (references* item)
  "Return as a monadic value the references of ITEM, based either on the
information available in the local store or using information about


@@ 275,24 294,27 @@ substitutes."
  (node-type
   (name "references")
   (description "the DAG of run-time dependencies (store references)")
   (convert (match-lambda
              ((? package? package)
               ;; Return the output file names of PACKAGE.
               (mlet %store-monad ((drv (package->derivation package)))
                 (return (match (derivation->output-paths drv)
                           (((_ . file-names) ...)
                            file-names)))))
              ((? store-path? item)
               (with-monad %store-monad
                 (return (list item))))
              (x
               (raise
                (condition (&message (message "unsupported argument for \
reference graph")))))))
   (convert ensure-store-items)
   (identifier (lift1 identity %store-monad))
   (label store-path-package-name)
   (edges references*)))

(define non-derivation-referrers
  (let ((referrers (store-lift referrers)))
    (lambda (item)
      "Return the referrers of ITEM, except '.drv' files."
      (mlet %store-monad ((items (referrers item)))
        (return (remove derivation-path? items))))))

(define %referrer-node-type
  (node-type
   (name "referrers")
   (description "the DAG of referrers in the store")
   (convert ensure-store-items)
   (identifier (lift1 identity %store-monad))
   (label store-path-package-name)
   (edges non-derivation-referrers)))


;;;
;;; List of node types.


@@ 305,7 327,8 @@ reference graph")))))))
        %bag-with-origins-node-type
        %bag-emerged-node-type
        %derivation-node-type
        %reference-node-type))
        %reference-node-type
        %referrer-node-type))

(define (lookup-node-type name)
  "Return the node type called NAME.  Raise an error if it is not found."

M tests/grafts.scm => tests/grafts.scm +62 -0
@@ 218,4 218,66 @@
         (let ((out (derivation->output-path grafted)))
           (file-is-directory? (string-append out "/" repl))))))

(test-assert "graft-derivation, grafts are not shadowed"
  ;; We build a DAG as below, where dotted arrows represent replacements and
  ;; solid arrows represent dependencies:
  ;;
  ;;  P1  ·············>  P1R
  ;;  |\__________________.
  ;;  v                   v
  ;;  P2  ·············>  P2R
  ;;  |
  ;;  v
  ;;  P3
  ;;
  ;; We want to make sure that the two grafts we want to apply to P3 are
  ;; honored and not shadowed by other computed grafts.
  (let* ((p1     (build-expression->derivation
                  %store "p1"
                  '(mkdir (assoc-ref %outputs "out"))))
         (p1r    (build-expression->derivation
                  %store "P1"
                  '(let ((out (assoc-ref %outputs "out")))
                     (mkdir out)
                     (call-with-output-file (string-append out "/replacement")
                       (const #t)))))
         (p2     (build-expression->derivation
                  %store "p2"
                  `(let ((out (assoc-ref %outputs "out")))
                     (mkdir out)
                     (chdir out)
                     (symlink (assoc-ref %build-inputs "p1") "p1"))
                  #:inputs `(("p1" ,p1))))
         (p2r    (build-expression->derivation
                  %store "P2"
                  `(let ((out (assoc-ref %outputs "out")))
                     (mkdir out)
                     (chdir out)
                     (symlink (assoc-ref %build-inputs "p1") "p1")
                     (call-with-output-file (string-append out "/replacement")
                       (const #t)))
                  #:inputs `(("p1" ,p1))))
         (p3     (build-expression->derivation
                  %store "p3"
                  `(let ((out (assoc-ref %outputs "out")))
                     (mkdir out)
                     (chdir out)
                     (symlink (assoc-ref %build-inputs "p2") "p2"))
                  #:inputs `(("p2" ,p2))))
         (p1g    (graft
                   (origin p1)
                   (replacement p1r)))
         (p2g    (graft
                   (origin p2)
                   (replacement (graft-derivation %store p2r (list p1g)))))
         (p3d    (graft-derivation %store p3 (list p1g p2g))))
    (and (build-derivations %store (list p3d))
         (let ((out (derivation->output-path (pk p3d))))
           ;; Make sure OUT refers to the replacement of P2, which in turn
           ;; refers to the replacement of P1, as specified by P1G and P2G.
           ;; It used to be the case that P2G would be shadowed by a simple
           ;; P2->P2R graft, which is not what we want.
           (and (file-exists? (string-append out "/p2/replacement"))
                (file-exists? (string-append out "/p2/p1/replacement")))))))

(test-end)

M tests/graph.scm => tests/graph.scm +22 -0
@@ 232,6 232,28 @@ edges."
                          (list out txt))
                  (equal? edges `((,out ,txt)))))))))))

(test-assert "referrer DAG"
  (let-values (((backend nodes+edges) (make-recording-backend)))
    (run-with-store %store
      (mlet* %store-monad ((txt   (text-file "referrer-node" (random-text)))
                           (drv   (gexp->derivation "referrer"
                                                    #~(symlink #$txt #$output)))
                           (out -> (derivation->output-path drv)))
        ;; We should see only TXT and OUT, with an edge from the former to the
        ;; latter.
        (mbegin %store-monad
          (built-derivations (list drv))
          (export-graph (list txt) 'port
                        #:node-type %referrer-node-type
                        #:backend backend)
          (let-values (((nodes edges) (nodes+edges)))
            (return
             (and (equal? (match nodes
                            (((ids labels) ...)
                             ids))
                          (list txt out))
                  (equal? edges `((,txt ,out)))))))))))

(test-assert "node-edges"
  (run-with-store %store
    (let ((packages (fold-packages cons '())))

M tests/packages.scm => tests/packages.scm +90 -16
@@ 662,22 662,25 @@
                    (origin (package-derivation %store dep))
                    (replacement (package-derivation %store new)))))))

(test-assert "package-grafts, indirect grafts, cross"
  (let* ((new    (dummy-package "dep"
                   (arguments '(#:implicit-inputs? #f))))
         (dep    (package (inherit new) (version "0.0")))
         (dep*   (package (inherit dep) (replacement new)))
         (dummy  (dummy-package "dummy"
                   (arguments '(#:implicit-inputs? #f))
                   (inputs `(("dep" ,dep*)))))
         (target "mips64el-linux-gnu"))
    ;; XXX: There might be additional grafts, for instance if the distro
    ;; defines replacements for core packages like Perl.
    (member (graft
              (origin (package-cross-derivation %store dep target))
              (replacement
               (package-cross-derivation %store new target)))
            (package-grafts %store dummy #:target target))))
;; XXX: This test would require building the cross toolchain just to see if it
;; needs grafting, which is obviously too expensive, and thus disabled.
;;
;; (test-assert "package-grafts, indirect grafts, cross"
;;   (let* ((new    (dummy-package "dep"
;;                    (arguments '(#:implicit-inputs? #f))))
;;          (dep    (package (inherit new) (version "0.0")))
;;          (dep*   (package (inherit dep) (replacement new)))
;;          (dummy  (dummy-package "dummy"
;;                    (arguments '(#:implicit-inputs? #f))
;;                    (inputs `(("dep" ,dep*)))))
;;          (target "mips64el-linux-gnu"))
;;     ;; XXX: There might be additional grafts, for instance if the distro
;;     ;; defines replacements for core packages like Perl.
;;     (member (graft
;;               (origin (package-cross-derivation %store dep target))
;;               (replacement
;;                (package-cross-derivation %store new target)))
;;             (package-grafts %store dummy #:target target))))

(test-assert "package-grafts, indirect grafts, propagated inputs"
  (let* ((new   (dummy-package "dep"


@@ 719,6 722,77 @@
                                                         (replacement #f))))
                    (replacement (package-derivation %store new)))))))

(test-assert "replacement also grafted"
  ;; We build a DAG as below, where dotted arrows represent replacements and
  ;; solid arrows represent dependencies:
  ;;
  ;;  P1  ·············>  P1R
  ;;  |\__________________.
  ;;  v                   v
  ;;  P2  ·············>  P2R
  ;;  |
  ;;  v
  ;;  P3
  ;;
  ;; We want to make sure that:
  ;;   grafts(P3) = (P1,P1R) + (P2, grafted(P2R, (P1,P1R)))
  ;; where:
  ;;   (A,B) is a graft to replace A by B
  ;;   grafted(DRV,G) denoted DRV with graft G applied
  (let* ((p1r (dummy-package "P1"
                (build-system trivial-build-system)
                (arguments
                 `(#:guile ,%bootstrap-guile
                   #:builder (let ((out (assoc-ref %outputs "out")))
                               (mkdir out)
                               (call-with-output-file
                                   (string-append out "/replacement")
                                 (const #t)))))))
         (p1  (package
                (inherit p1r) (name "p1") (replacement p1r)
                (arguments
                 `(#:guile ,%bootstrap-guile
                   #:builder (mkdir (assoc-ref %outputs "out"))))))
         (p2r (dummy-package "P2"
                (build-system trivial-build-system)
                (inputs `(("p1" ,p1)))
                (arguments
                 `(#:guile ,%bootstrap-guile
                   #:builder (let ((out (assoc-ref %outputs "out")))
                               (mkdir out)
                               (chdir out)
                               (symlink (assoc-ref %build-inputs "p1") "p1")
                               (call-with-output-file (string-append out "/replacement")
                                 (const #t)))))))
         (p2  (package
                (inherit p2r) (name "p2") (replacement p2r)
                (arguments
                 `(#:guile ,%bootstrap-guile
                   #:builder (let ((out (assoc-ref %outputs "out")))
                               (mkdir out)
                               (chdir out)
                               (symlink (assoc-ref %build-inputs "p1")
                                        "p1"))))))
         (p3  (dummy-package "p3"
                (build-system trivial-build-system)
                (inputs `(("p2" ,p2)))
                (arguments
                 `(#:guile ,%bootstrap-guile
                   #:builder (let ((out (assoc-ref %outputs "out")))
                               (mkdir out)
                               (chdir out)
                               (symlink (assoc-ref %build-inputs "p2")
                                        "p2")))))))
    (lset= equal?
           (package-grafts %store p3)
           (list (graft
                   (origin (package-derivation %store p1 #:graft? #f))
                   (replacement (package-derivation %store p1r)))
                 (graft
                   (origin (package-derivation %store p2 #:graft? #f))
                   (replacement
                    (package-derivation %store p2r #:graft? #t)))))))

;;; XXX: Nowadays 'graft-derivation' needs to build derivations beforehand to
;;; find out about their run-time dependencies, so this test is no longer
;;; applicable since it would trigger a full rebuild.