Merge branch 'master' into core-updates
This commit is contained in:
		
						commit
						d123f2f991
					
				
					 46 changed files with 844 additions and 368 deletions
				
			
		| 
						 | 
				
			
			@ -595,7 +595,6 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/gmp-faulty-test.patch			\
 | 
			
		||||
  %D%/packages/patches/gnome-tweak-tool-search-paths.patch	\
 | 
			
		||||
  %D%/packages/patches/gnucash-price-quotes-perl.patch		\
 | 
			
		||||
  %D%/packages/patches/gnupg-test-segfault-on-32bit-arch.patch	\
 | 
			
		||||
  %D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \
 | 
			
		||||
  %D%/packages/patches/gobject-introspection-cc.patch		\
 | 
			
		||||
  %D%/packages/patches/gobject-introspection-girepository.patch	\
 | 
			
		||||
| 
						 | 
				
			
			@ -647,7 +646,6 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/jbig2dec-ignore-testtest.patch		\
 | 
			
		||||
  %D%/packages/patches/jq-CVE-2015-8863.patch			\
 | 
			
		||||
  %D%/packages/patches/kdbusaddons-kinit-file-name.patch	\
 | 
			
		||||
  %D%/packages/patches/khal-disable-failing-tests.patch		\
 | 
			
		||||
  %D%/packages/patches/khmer-use-libraries.patch                \
 | 
			
		||||
  %D%/packages/patches/kmod-module-directory.patch		\
 | 
			
		||||
  %D%/packages/patches/kobodeluxe-paths.patch			\
 | 
			
		||||
| 
						 | 
				
			
			@ -701,8 +699,6 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/libtiff-tiffcp-underflow.patch		\
 | 
			
		||||
  %D%/packages/patches/libtool-skip-tests2.patch		\
 | 
			
		||||
  %D%/packages/patches/libunwind-CVE-2015-3239.patch		\
 | 
			
		||||
  %D%/packages/patches/libupnp-CVE-2016-6255.patch		\
 | 
			
		||||
  %D%/packages/patches/libupnp-CVE-2016-8863.patch		\
 | 
			
		||||
  %D%/packages/patches/libvpx-CVE-2016-2818.patch		\
 | 
			
		||||
  %D%/packages/patches/libwebp-CVE-2016-9085.patch		\
 | 
			
		||||
  %D%/packages/patches/libwmf-CAN-2004-0941.patch		\
 | 
			
		||||
| 
						 | 
				
			
			@ -782,6 +778,7 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/openjpeg-CVE-2016-5157.patch		\
 | 
			
		||||
  %D%/packages/patches/openjpeg-CVE-2016-7163.patch		\
 | 
			
		||||
  %D%/packages/patches/openjpeg-CVE-2016-9850-CVE-2016-9851.patch		\
 | 
			
		||||
  %D%/packages/patches/openjpeg-CVE-2016-9572-CVE-2016-9573.patch		\
 | 
			
		||||
  %D%/packages/patches/openjpeg-use-after-free-fix.patch	\
 | 
			
		||||
  %D%/packages/patches/openocd-nrf52.patch			\
 | 
			
		||||
  %D%/packages/patches/openssl-runpath.patch			\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -84,14 +84,13 @@ data units.")
 | 
			
		|||
(define-public khal
 | 
			
		||||
  (package
 | 
			
		||||
    (name "khal")
 | 
			
		||||
    (version "0.8.4")
 | 
			
		||||
    (version "0.9.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (pypi-uri "khal" version))
 | 
			
		||||
             (patches (search-patches "khal-disable-failing-tests.patch"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "03vy4dp9n43w51mwqjjy08dr5nj7wxqnb085visz3j43vzm42p1f"))))
 | 
			
		||||
               "138gxynw7zavwqqaw5nzmj8sbpkymmb95xzgxqbdi9fiiqm9kamr"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 | 
			
		||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 | 
			
		||||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -190,43 +191,30 @@ COCOMO model or user-provided parameters.")
 | 
			
		|||
(define-public the-silver-searcher
 | 
			
		||||
  (package
 | 
			
		||||
    (name "the-silver-searcher")
 | 
			
		||||
    (version "0.32.0")
 | 
			
		||||
    (version "1.0.2")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
                    "https://github.com/ggreer/the_silver_searcher/archive/"
 | 
			
		||||
                    "http://geoff.greer.fm/ag/releases/the_silver_searcher-"
 | 
			
		||||
                    version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1k543cjpignwvy8avhchz8pkqrqcgcryps36ycy8mz2w5rbhicn5"))
 | 
			
		||||
              (file-name (string-append name "-" version ".tar.gz"))))
 | 
			
		||||
                "0v54himv65w294l0k4lhdyc6kvpgijn8b9g5356479fzy7hphjkg"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("autoconf" ,autoconf)
 | 
			
		||||
       ("automake" ,automake)
 | 
			
		||||
       ("libtool" ,libtool)
 | 
			
		||||
       ("pkg-config" ,pkg-config)))
 | 
			
		||||
     `(("pkg-config" ,pkg-config)))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("pcre" ,pcre)
 | 
			
		||||
       ("xz" ,xz)
 | 
			
		||||
       ("zlib" ,zlib)))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
       ;; There is no configure yet, so let's create it, but let configure and
 | 
			
		||||
       ;; make do the work in later phases.
 | 
			
		||||
       (alist-cons-before 'configure 'autoconf
 | 
			
		||||
                          (lambda _
 | 
			
		||||
                            (substitute* "build.sh"
 | 
			
		||||
                              (("./configure") "true")
 | 
			
		||||
                              (("make -j4") "true"))
 | 
			
		||||
                            (zero? (system* "sh" "build.sh")))
 | 
			
		||||
                          %standard-phases)))
 | 
			
		||||
    (home-page "http://geoff.greer.fm/ag/")
 | 
			
		||||
    (synopsis "Fast code searching tool")
 | 
			
		||||
    (description
 | 
			
		||||
     "The silver searcher, or 'ag', is tool for quickly searching through
 | 
			
		||||
files, but compared to grep is much faster and respects files like .gitignore,
 | 
			
		||||
.hgignore, etc.")
 | 
			
		||||
     "The Silver Searcher (@command{ag}) is a tool for quickly searching large
 | 
			
		||||
numbers of files.  It's intended primarily for source code repositories, and
 | 
			
		||||
respects files like @file{.gitignore} and @file{.hgignore}.  It's also an order
 | 
			
		||||
of magnitude faster than its inspiration, @command{ack}, and less specialised
 | 
			
		||||
tools such as @command{grep}.")
 | 
			
		||||
    (license license:asl2.0)))
 | 
			
		||||
 | 
			
		||||
(define-public trio
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,7 @@
 | 
			
		|||
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 | 
			
		||||
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
 | 
			
		||||
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 | 
			
		||||
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -425,6 +426,33 @@ TIMESTAMP.  It also supports storage of binary large objects, including
 | 
			
		|||
pictures, sounds, or video.")
 | 
			
		||||
    (license (x11-style "file://COPYRIGHT"))))
 | 
			
		||||
 | 
			
		||||
(define-public qdbm
 | 
			
		||||
  (package
 | 
			
		||||
    (name "qdbm")
 | 
			
		||||
    (version "1.8.78")
 | 
			
		||||
    (source
 | 
			
		||||
      (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (string-append "http://fallabs.com/" name "/"
 | 
			
		||||
                           name "-" version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0gmpvhn02pkq280ffmn4da1g4mdr1xxz7l80b7y4n7km1mrzwrml"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `( #:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath="
 | 
			
		||||
                                               (assoc-ref %outputs "out")
 | 
			
		||||
                                               "/lib"))))
 | 
			
		||||
    (home-page "http://fallabs.com/qdbm")
 | 
			
		||||
    (synopsis "Key-value database")
 | 
			
		||||
    (description "QDBM is a library of routines for managing a
 | 
			
		||||
database.  The database is a simple data file containing key-value
 | 
			
		||||
pairs.  Every key and value is serial bytes with variable length.
 | 
			
		||||
Binary data as well as character strings can be used as a key or a
 | 
			
		||||
value.  There is no concept of data tables or data types.  Records are
 | 
			
		||||
organized in a hash table or B+ tree.")
 | 
			
		||||
    (license license:lgpl2.1+)))
 | 
			
		||||
 | 
			
		||||
(define-public recutils
 | 
			
		||||
  (package
 | 
			
		||||
    (name "recutils")
 | 
			
		||||
| 
						 | 
				
			
			@ -1050,7 +1078,7 @@ database and supports many programming languages.  It is a NoSQL database.")
 | 
			
		|||
(define-public wiredtiger
 | 
			
		||||
  (package
 | 
			
		||||
    (name "wiredtiger")
 | 
			
		||||
    (version "2.8.0")
 | 
			
		||||
    (version "2.9.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -1058,7 +1086,7 @@ database and supports many programming languages.  It is a NoSQL database.")
 | 
			
		|||
                    version ".tar.bz2"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1qh7y5paisdxq19jgg81ld7i32lz920n5k30hdpxnr8ll9c4hgjr"))))
 | 
			
		||||
                "0krwnb2zfbhvjaskwl875qzd3y626s84zcciq2mxr5c5riw3yh6s"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:configure-flags '("--enable-lz4" "--enable-zlib")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1130,7 +1130,7 @@ as a library for other Emacs packages.")
 | 
			
		|||
(define-public emacs-auctex
 | 
			
		||||
  (package
 | 
			
		||||
    (name "emacs-auctex")
 | 
			
		||||
    (version "11.88.6")
 | 
			
		||||
    (version "11.90.0")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -1140,7 +1140,7 @@ as a library for other Emacs packages.")
 | 
			
		|||
             ".tar"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1pmki8hdjjikxlvip3pzi350bln3gcimr27yjf0xfwjvnp5hh9nc"))))
 | 
			
		||||
         "04nsndwcf0dimgc2p1yzzrymc36amzdnjg0158nxplmjkzdp28gy"))))
 | 
			
		||||
    (build-system emacs-build-system)
 | 
			
		||||
    ;; We use 'emacs' because AUCTeX requires dbus at compile time
 | 
			
		||||
    ;; ('emacs-minimal' does not provide dbus).
 | 
			
		||||
| 
						 | 
				
			
			@ -2807,14 +2807,14 @@ be removed from the front.  This type of data structure is sometimes called an
 | 
			
		|||
(define-public emacs-spinner
 | 
			
		||||
  (package
 | 
			
		||||
    (name "emacs-spinner")
 | 
			
		||||
    (version "1.7.1")
 | 
			
		||||
    (version "1.7.3")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://elpa.gnu.org/packages/spinner-"
 | 
			
		||||
                                  version ".el"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1fmwzdih0kbyvs8bn38mpm4sbs2mikqy2vdykfy9g20wpa8vb681"))))
 | 
			
		||||
                "19kp1mmndbmw11sgvv2ggfjl4pyf5zrsbh3871f0965pw9z8vahd"))))
 | 
			
		||||
    (build-system emacs-build-system)
 | 
			
		||||
    (home-page "https://github.com/Malabarba/spinner.el")
 | 
			
		||||
    (synopsis "Emacs mode-line spinner for operations in progress")
 | 
			
		||||
| 
						 | 
				
			
			@ -2826,14 +2826,14 @@ ongoing operations.")
 | 
			
		|||
(define-public emacs-seq
 | 
			
		||||
  (package
 | 
			
		||||
    (name "emacs-seq")
 | 
			
		||||
    (version "2.15")
 | 
			
		||||
    (version "2.19")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://elpa.gnu.org/packages/seq-"
 | 
			
		||||
                                  version ".tar"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "09wi1765bmn7i8fg6ajjfaxgs4ipc42d58zx2fdqpidrdg9c7q73"))))
 | 
			
		||||
                "11hb7is6a4h1lscjcfrzh576j0g3m5yjydn16s6x5bxp5gsr6zha"))))
 | 
			
		||||
    (build-system emacs-build-system)
 | 
			
		||||
    (home-page "https://elpa.gnu.org/packages/seq.html")
 | 
			
		||||
    (synopsis "Sequence manipulation functions for Emacs")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 | 
			
		||||
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 | 
			
		||||
;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -26,6 +27,7 @@
 | 
			
		|||
 #:use-module (guix build utils)
 | 
			
		||||
 #:use-module (guix build-system gnu)
 | 
			
		||||
 #:use-module (guix build-system cmake)
 | 
			
		||||
 #:use-module (guix build-system python)
 | 
			
		||||
 #:use-module (gnu packages base)
 | 
			
		||||
 #:use-module (gnu packages boost)
 | 
			
		||||
 #:use-module (gnu packages databases)
 | 
			
		||||
| 
						 | 
				
			
			@ -240,3 +242,52 @@ 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+)))
 | 
			
		||||
 | 
			
		||||
(define-public electrum
 | 
			
		||||
  (package
 | 
			
		||||
    (name "electrum")
 | 
			
		||||
    (version "2.7.12")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (string-append "https://download.electrum.org/"
 | 
			
		||||
                           version "/Electrum-"
 | 
			
		||||
                           version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0vxdfl208if7mdsnva1jg37bnay2dsz3ww157aqwcv1j6512fi1n"))
 | 
			
		||||
       (modules '((guix build utils)))
 | 
			
		||||
       (snippet
 | 
			
		||||
        '(begin
 | 
			
		||||
           ;; Delete the bundled dependencies.
 | 
			
		||||
           (delete-file-recursively "packages")
 | 
			
		||||
           #t))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("python-slowaes" ,python2-slowaes)
 | 
			
		||||
       ("python-sip" ,python2-sip)
 | 
			
		||||
       ("python-pyqt" ,python2-pyqt-4)
 | 
			
		||||
       ("python-ecdsa" ,python2-ecdsa)
 | 
			
		||||
       ("python-pbkdf2" ,python2-pbkdf2)
 | 
			
		||||
       ("python-requests" ,python2-requests)
 | 
			
		||||
       ("python-qrcode" ,python2-qrcode)
 | 
			
		||||
       ("python-protobuf" ,python2-protobuf)
 | 
			
		||||
       ("python-dnspython" ,python2-dnspython)
 | 
			
		||||
       ("python-jsonrpclib" ,python2-jsonrpclib)))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:python ,python-2
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-before 'build 'patch-home
 | 
			
		||||
           (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
             (substitute* "setup.py"
 | 
			
		||||
               (("~/.local/share")
 | 
			
		||||
                (string-append (assoc-ref outputs "out") "/local/share"))))))))
 | 
			
		||||
    (home-page "https://electrum.org/")
 | 
			
		||||
    (synopsis "Bitcoin wallet")
 | 
			
		||||
    (description
 | 
			
		||||
     "Electrum is a lightweight Bitcoin client, based on a client-server
 | 
			
		||||
protocol.  It supports Simple Payment Verification (SPV) and deterministic key
 | 
			
		||||
generation from a seed.  Your secret keys are encrypted and are never sent to
 | 
			
		||||
other machines/servers.  Electrum does not download the Bitcoin blockchain.")
 | 
			
		||||
    (license license:expat)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -101,7 +101,7 @@ provided as well as the framework to add new color models and data types.")
 | 
			
		|||
            (("g_object_unref \\(buffer.\\);") ""))
 | 
			
		||||
 | 
			
		||||
          (substitute* "tests/compositions/Makefile"
 | 
			
		||||
            (("/bin/sh") (which "bash"))))
 | 
			
		||||
            (("/bin/sh") (which "sh"))))
 | 
			
		||||
        %standard-phases)))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("babl" ,babl)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -217,18 +217,14 @@ compatible to GNU Pth.")
 | 
			
		|||
(define-public gnupg
 | 
			
		||||
  (package
 | 
			
		||||
    (name "gnupg")
 | 
			
		||||
    (version "2.1.17")
 | 
			
		||||
    (version "2.1.18")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
 | 
			
		||||
                                  ".tar.bz2"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1js308b46ifx1gim0c9nivr5yxhans7iq1yvkf7zl2928gdm9p65"))
 | 
			
		||||
              (patches
 | 
			
		||||
               ;; This fixes a test failure on 32bit. Remove for next version.
 | 
			
		||||
               ;; https://lists.gnu.org/archive/html/guix-devel/2016-12/msg00869.html
 | 
			
		||||
               (search-patches "gnupg-test-segfault-on-32bit-arch.patch"))))
 | 
			
		||||
                "157rrv3ly9j2k0acz43nhiba5hfl6h7048jvj55wwqjmgsmnyk6h"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("pkg-config" ,pkg-config)))
 | 
			
		||||
| 
						 | 
				
			
			@ -310,7 +306,7 @@ libskba (working with X.509 certificates and CMS data).")
 | 
			
		|||
        (add-before 'configure 'patch-config-files
 | 
			
		||||
          (lambda _
 | 
			
		||||
            (substitute* "tests/openpgp/Makefile.in"
 | 
			
		||||
              (("/bin/sh") (which "bash")))
 | 
			
		||||
              (("/bin/sh") (which "sh")))
 | 
			
		||||
            #t))
 | 
			
		||||
        (add-after 'install 'rename-v2-commands
 | 
			
		||||
          (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
| 
						 | 
				
			
			@ -349,7 +345,7 @@ libskba (working with X.509 certificates and CMS data).")
 | 
			
		|||
         (add-after 'unpack 'patch-check-sh
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (substitute* "checks/Makefile.in"
 | 
			
		||||
               (("/bin/sh") (which "bash"))))))))))
 | 
			
		||||
               (("/bin/sh") (which "sh"))))))))))
 | 
			
		||||
 | 
			
		||||
(define-public gpgme
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			@ -573,7 +569,7 @@ PGP keysigning parties.")
 | 
			
		|||
              (substitute* "keyanalyze/Makefile"
 | 
			
		||||
                (("./configure") (string-append "./configure --prefix=" out)))
 | 
			
		||||
              (substitute* "keyanalyze/pgpring/configure"
 | 
			
		||||
                (("/bin/sh") (which "bash")))
 | 
			
		||||
                (("/bin/sh") (which "sh")))
 | 
			
		||||
              (substitute* "gpgwrap/Makefile"
 | 
			
		||||
                (("\\} clean")
 | 
			
		||||
                 (string-append "} clean\ninstall:\n\tinstall -D bin/gpgwrap "
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -342,28 +342,38 @@ standards.")
 | 
			
		|||
        (mozilla-patch "icecat-CVE-2016-9893-pt7.patch"  "9b78ab1e6d07" "19ib6bp96xk000ll40b8qxvizkncyzclz2rsb9w5fa42qs9978ff")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2016-9893-pt8.patch"  "78ebf9c9dfb0" "1shgr4rk6r2zxr1qqk1j3qnnqzqxnbi093qhlrfh8q5q1ivqf6k1")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2016-9893-pt9.patch"  "a46a9f16823c" "0dwkyz3kcqnfcbhbfh2lss7s0yh87rgzb871qxx3x4ynyqph9mnz")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1311687.patch"        "6bc7cc7a33a6" "1wggcqv84n8mp7xps7hy4rwy61fkh45imfqzc0b46s3w5hyhypn2")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5376.patch"      "6bc7cc7a33a6" "1wggcqv84n8mp7xps7hy4rwy61fkh45imfqzc0b46s3w5hyhypn2")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2016-9893-pt10.patch" "778f65148b40" "0j2a153sk0654vv2lnxjib4lwml3mlqn6vs46c2pp82iba8nyfrm")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2016-9895.patch"      "94bd2b43c766" "10h0qpr6m9cqyqxxnkbb6mzb3cagavzlynkxgd7a4izyq1bv28rk")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2016-9893-pt11.patch" "893de7431d51" "11gyik8mwipl6ipypkvdq519pw7ccbg0g0bnvxb7271n44cqqcq5")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1323338.patch"        "b21dee058b2c" "005khpimffqzas7slajid4dd2c15nyk7rjk6fsps87bgnx0gx0s4")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5383-pt1.patch"  "b21dee058b2c" "005khpimffqzas7slajid4dd2c15nyk7rjk6fsps87bgnx0gx0s4")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1258410-pt1.patch"    "cd23c5d74be8" "1myzkpzg6pmjacjz8az06m9kz84in1mwsiaw5sgx47pm02598wm5")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1258410-pt2.patch"    "b83594617d15" "171cqflc9jh47az96im1whwhyq4ayicspqsczsmn2x5ll9lqw5fq")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1322107.patch"        "d6c6f5e4e641" "10x9f46ylm2q3i669hj1csd6agdm8w7xa0iln691z8ayg2hcrxdz")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1285833.patch"        "122f5fbfc563" "05pp2f4pg4j8a8pdgjhfrc8g2chhkhsarn9n8sbyag0fy3ig1cvd")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1297361.patch"        "297c675ddadc" "1jc1b5i69vq1fvz3qfnnv52c9cj17bjbmfyzmqlw5ywna0wfvabz")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1325877.patch"        "3cff736e3bb6" "1nxqwnl9zksvkfkmis7zica4xrhwfndjyy2sxc1dvrh9rshk1swq")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1285960.patch"        "2732280adabc" "0zrpq3aybaw2yy38vs6883a4nw01x4kxn3lfqn9yhcgjvngmmyia")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1325938.patch"        "81c9fdbd96e8" "0scv1zyi4vbsjdsyj4w70n5jd50baq0dzw3qpxqf1n69nfb9k214")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1322420.patch"        "a386ca6a3013" "1m1scz2pxzmg9wya8is5dcr3mgvkx3g1xlykgigmw2mqs5zcdg9s")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1328834.patch"        "0521b0e4707c" "1mv057p4hcvapibpbd9apryag19aiqdzafc6df2angl97m4mcbjx")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5380.patch"      "d6c6f5e4e641" "10x9f46ylm2q3i669hj1csd6agdm8w7xa0iln691z8ayg2hcrxdz")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5373-pt1.patch"  "122f5fbfc563" "05pp2f4pg4j8a8pdgjhfrc8g2chhkhsarn9n8sbyag0fy3ig1cvd")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5390.patch"      "297c675ddadc" "1jc1b5i69vq1fvz3qfnnv52c9cj17bjbmfyzmqlw5ywna0wfvabz")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5373-pt2.patch"  "3cff736e3bb6" "1nxqwnl9zksvkfkmis7zica4xrhwfndjyy2sxc1dvrh9rshk1swq")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5373-pt3.patch"  "2732280adabc" "0zrpq3aybaw2yy38vs6883a4nw01x4kxn3lfqn9yhcgjvngmmyia")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5373-pt4.patch"  "81c9fdbd96e8" "0scv1zyi4vbsjdsyj4w70n5jd50baq0dzw3qpxqf1n69nfb9k214")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5373-pt5.patch"  "a386ca6a3013" "1m1scz2pxzmg9wya8is5dcr3mgvkx3g1xlykgigmw2mqs5zcdg9s")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5373-pt6.patch"  "0521b0e4707c" "1mv057p4hcvapibpbd9apryag19aiqdzafc6df2angl97m4mcbjx")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1290037.patch"        "bf0dd9ae6807" "02iw5ngsvvij95arnn69a744d6si27g1x41ixg16l51dbn900b3r")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1322666.patch"        "576f03e362c5" "0m88xs0jwhzx2lg12cvimxjknp7rpsvvhxxblhiqqjwnqip0pyc0")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1304266.patch"        "4d82e7314a72" "1rrrw4rw0xv7c2myiypcqh1fk47rk3fvic79zh6m04bl3knclr1r")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1322315.patch"        "0617dd4b444d" "1ipags2cl2p521pm0qx110h5di2mgif6h1r3g8l9b0rc5m9b1y2j")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1325200.patch"        "ead08c2a6c57" "1nnnwdr7411xpz6n9j869g6sz447cq6xsmds9cw6d24iprcinp5m")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1312001.patch"        "c5e67d41bdd0" "05kwn5zv381lsiw9vbzm8fh6s1lddx47l8f4pwg487h9dj7vbdfq")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1331058.patch"        "2ce94f2ea797" "1yrnjqpafjns68z99s1m6jins3agid7c1z3v9qgk5xzfcddl31pn")))
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5373-pt7.patch"  "0617dd4b444d" "1ipags2cl2p521pm0qx110h5di2mgif6h1r3g8l9b0rc5m9b1y2j")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5375.patch"      "ead08c2a6c57" "1nnnwdr7411xpz6n9j869g6sz447cq6xsmds9cw6d24iprcinp5m")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5378-pt1.patch"  "c5e67d41bdd0" "05kwn5zv381lsiw9vbzm8fh6s1lddx47l8f4pwg487h9dj7vbdfq")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5373-pt8.patch"  "2ce94f2ea797" "1yrnjqpafjns68z99s1m6jins3agid7c1z3v9qgk5xzfcddl31pn")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5373-pt9.patch"  "e4ac8a66d3db" "1ggbh6nk005plm7kvp7qznbnlpidqkipxc5hlaqbjc3m0z9mypzl")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5386.patch"      "8c171b75a0c6" "1cplkgwkhqvb62q7s8cya2drjdswnlicv5d9a60fxvnp6m7a3z02")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5383-pt2.patch"  "79a31d8153bf" "0dzwk2hc741c0jr8xya4y8q59lk8mcgnvfdrdk0vzq1gby16b9zi")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5378-pt2.patch"  "747085a1cd93" "0rpc8hl0jka4akdjnlwya4x9v4pqa1r5vc4pkmxsgvqpp2vkq4m2")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1331606.patch"        "f0329536734b" "1br5shyfwp009y623wgjq60vhcp5k5zpzkgy4r3s5yrm5xyfcprf")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1328642.patch"        "237c1ca6e035" "0808g5j17var6wv6ivj08i43fwkga9abmmgmz5w3hb8mhajkjw58")
 | 
			
		||||
        (mozilla-patch "icecat-CVE-2017-5396.patch"      "910ad552cbf5" "1qss3gc6n4myzwvwanc09xvyiq3hwhixn2xvpbk9xkfz2apdlfa6")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1312827.patch"        "5c894801eb1e" "03xyjwx9rfx5w7q6wq9if83fcfgrlvvbyxpsawzxxgybnizyy7g8")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1191841.patch"        "83ee87b301bd" "1kd9z4py372a2f1jg7jwvwri43vipf0k7lcvsg7b0cqr5p70zwcg")
 | 
			
		||||
        (mozilla-patch "icecat-bug-1234317.patch"        "eb6f18dbfe8d" "1dh3263fvg3dxav09g6fn41ax4q1jmwp5fk6pl6shn16mrfha1qq")))
 | 
			
		||||
      (modules '((guix build utils)))
 | 
			
		||||
      (snippet
 | 
			
		||||
       '(begin
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -925,14 +925,14 @@ Guile's foreign function interface.")
 | 
			
		|||
(define-public haunt
 | 
			
		||||
  (package
 | 
			
		||||
    (name "haunt")
 | 
			
		||||
    (version "0.2")
 | 
			
		||||
    (version "0.2.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://files.dthompson.us/haunt/haunt-"
 | 
			
		||||
                                  version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1id83n8fs7jxys1d8jy70vylg8gzcvlw1y7hb41y3qxv5zi4671m"))))
 | 
			
		||||
                "1fpaf1vm6s7j13fs35barjh5yajcc2rc3pi8r7278wpgp4i2vs3w"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:modules ((ice-9 match) (ice-9 ftw)
 | 
			
		||||
| 
						 | 
				
			
			@ -962,7 +962,8 @@ Guile's foreign function interface.")
 | 
			
		|||
    (inputs
 | 
			
		||||
     `(("guile" ,guile-2.0)))
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("guile-reader" ,guile-reader)))
 | 
			
		||||
     `(("guile-reader" ,guile-reader)
 | 
			
		||||
       ("guile-commonmark" ,guile-commonmark)))
 | 
			
		||||
    (synopsis "Functional static site generator")
 | 
			
		||||
    (description "Haunt is a static site generator written in Guile
 | 
			
		||||
Scheme.  Haunt features a functional build system and an extensible
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -498,7 +498,8 @@ error-resilience, a Java-viewer for j2k-images, ...")
 | 
			
		|||
         (base32
 | 
			
		||||
          "19yz4g0c45sm8y1z01j9djsrl1mkz3pmw7fykc6hkvrqymp7prsc"))
 | 
			
		||||
        (patches
 | 
			
		||||
          (search-patches "openjpeg-CVE-2016-9850-CVE-2016-9851.patch"))))))
 | 
			
		||||
          (search-patches "openjpeg-CVE-2016-9850-CVE-2016-9851.patch"
 | 
			
		||||
                          "openjpeg-CVE-2016-9572-CVE-2016-9573.patch"))))))
 | 
			
		||||
 | 
			
		||||
(define-public openjpeg-1
 | 
			
		||||
  (package (inherit openjpeg)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -337,7 +337,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
 | 
			
		|||
(define-public icedtea-6
 | 
			
		||||
  (package
 | 
			
		||||
    (name "icedtea")
 | 
			
		||||
    (version "1.13.12")
 | 
			
		||||
    (version "1.13.13")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -345,7 +345,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
 | 
			
		|||
                    version ".tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1q5iqm3dzqj8w3dwj6qqhczkkrslrfhmn3110klfwq9kyi2nimj8"))
 | 
			
		||||
                "0bg9sb4f7qbq77c0zf9m17p47ga0kf0r9622g9p12ysg26jd1ksg"))
 | 
			
		||||
              (modules '((guix build utils)))
 | 
			
		||||
              (snippet
 | 
			
		||||
               '(substitute* "Makefile.in"
 | 
			
		||||
| 
						 | 
				
			
			@ -764,10 +764,10 @@ build process and its dependencies, whereas Make uses Makefile format.")
 | 
			
		|||
       ("openjdk6-src"
 | 
			
		||||
        ,(origin
 | 
			
		||||
           (method url-fetch)
 | 
			
		||||
           (uri "https://java.net/downloads/openjdk6/openjdk-6-src-b40-22_aug_2016.tar.gz")
 | 
			
		||||
           (uri "https://java.net/downloads/openjdk6/openjdk-6-src-b41-04_jan_2017.tar.xz")
 | 
			
		||||
           (sha256
 | 
			
		||||
            (base32
 | 
			
		||||
             "01v4q7g9pa6w7m6yxply5yrin08jgv12fck665xnmp09bpxy8sa5"))))
 | 
			
		||||
             "058szix0j280g14jzajvsixx1j2dxmc10r848f5swpy6rr8x8d4f"))))
 | 
			
		||||
       ("lcms" ,lcms)
 | 
			
		||||
       ("zlib" ,zlib)
 | 
			
		||||
       ("gtk" ,gtk+-2)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,17 +26,15 @@
 | 
			
		|||
(define-public libupnp
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libupnp")
 | 
			
		||||
    (version "1.6.20")
 | 
			
		||||
    (version "1.6.21")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
      (method url-fetch)
 | 
			
		||||
      (uri (string-append "mirror://sourceforge/pupnp/pupnp/libUPnP%20"
 | 
			
		||||
                          version "/" name "-" version ".tar.bz2"))
 | 
			
		||||
      (patches (search-patches "libupnp-CVE-2016-6255.patch"
 | 
			
		||||
                               "libupnp-CVE-2016-8863.patch"))
 | 
			
		||||
      (sha256
 | 
			
		||||
       (base32
 | 
			
		||||
        "0qrsdsb1qm85hc4jy04qph895613d148f0x1mmk6z99y3q43fdgf"))))
 | 
			
		||||
        "16x3z6jg1krwyydmbd0z59z5c9x4pniaajmfmnp5pmx18q43qgxg"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     ;; The tests require a network device capable of multicasting which is
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -90,7 +90,7 @@
 | 
			
		|||
                #:select (gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+
 | 
			
		||||
                           non-copyleft (expat . license:expat) bsd-3
 | 
			
		||||
                           public-domain bsd-4 isc (openssl . license:openssl)
 | 
			
		||||
                           bsd-2))
 | 
			
		||||
                           bsd-2 x11-style))
 | 
			
		||||
  #:use-module (guix packages)
 | 
			
		||||
  #:use-module (guix download)
 | 
			
		||||
  #:use-module (guix git-download)
 | 
			
		||||
| 
						 | 
				
			
			@ -733,6 +733,27 @@ provides an API for C language.  It's the low-level API used by MailCore and
 | 
			
		|||
MailCore 2.")
 | 
			
		||||
    (license (non-copyleft "file://COPYING"))))
 | 
			
		||||
 | 
			
		||||
(define-public compface
 | 
			
		||||
  (package
 | 
			
		||||
    (name "compface")
 | 
			
		||||
    (version "1.5.2")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://ftp.heanet.ie/mirrors/"
 | 
			
		||||
                                  "ftp.xemacs.org/aux/"
 | 
			
		||||
                                  name "-" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "09b89wg63hg502hsz592cd2h87wdprb1dq1k1y07n89hym2q56d6"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f))
 | 
			
		||||
    (synopsis "Portrait image compressor")
 | 
			
		||||
    (description "This packages takes your 48x48x1 portrait image and
 | 
			
		||||
compresses it.")
 | 
			
		||||
    (home-page "http://www.cs.indiana.edu/pub/faces/")
 | 
			
		||||
    (license (x11-style "file://README"))))
 | 
			
		||||
 | 
			
		||||
(define-public claws-mail
 | 
			
		||||
  (package
 | 
			
		||||
    (name "claws-mail")
 | 
			
		||||
| 
						 | 
				
			
			@ -1536,10 +1557,10 @@ powerful user customization features.")
 | 
			
		|||
                        "contrib/mmuegel" "devtools/bin/configure.sh")
 | 
			
		||||
                  (find-files "." ".*\\.m4")
 | 
			
		||||
                  (find-files "." ".*\\.cf"))
 | 
			
		||||
               (("/bin/sh") (which "bash")))
 | 
			
		||||
               (("/bin/sh") (which "sh")))
 | 
			
		||||
 | 
			
		||||
             (substitute* "devtools/bin/Build"
 | 
			
		||||
               (("SHELL=/bin/sh") (string-append "SHELL=" (which "bash"))))
 | 
			
		||||
               (("SHELL=/bin/sh") (string-append "SHELL=" (which "sh"))))
 | 
			
		||||
             #t))
 | 
			
		||||
         (replace 'configure
 | 
			
		||||
           (lambda _
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -825,7 +825,7 @@ connect with friends and family without anyone else listening in.")
 | 
			
		|||
               (("mkdir -p \\$\\{DESTDIR\\}/usr") "")
 | 
			
		||||
               (("/usr/local") "")
 | 
			
		||||
               (("/usr") "")
 | 
			
		||||
               (("#!/bin/sh") (string-append "#!" (which "bash")))
 | 
			
		||||
               (("#!/bin/sh") (string-append "#!" (which "sh")))
 | 
			
		||||
               (("python2") (which "python"))
 | 
			
		||||
               (("/opt/openssl-compat-bitcoin/lib/")
 | 
			
		||||
                (string-append (assoc-ref inputs "openssl") "/lib/")))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,7 +64,7 @@
 | 
			
		|||
                            "lib/internal/v8_prof_polyfill.js"
 | 
			
		||||
                            "test/parallel/test-stdio-closed.js")
 | 
			
		||||
               (("'/bin/sh'")
 | 
			
		||||
                (string-append "'" (which "bash") "'")))
 | 
			
		||||
                (string-append "'" (which "sh") "'")))
 | 
			
		||||
 | 
			
		||||
             ;; Fix hardcoded /usr/bin/env references.
 | 
			
		||||
             (substitute* '("test/parallel/test-child-process-default-options.js"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -90,7 +90,7 @@
 | 
			
		|||
             (substitute* '("src/mp3track.cc"
 | 
			
		||||
                            "src/streamtrack.cc"
 | 
			
		||||
                            "src/oggtrack.cc")
 | 
			
		||||
               (("/bin/sh") (which "bash")))
 | 
			
		||||
               (("/bin/sh") (which "sh")))
 | 
			
		||||
             #t)))))
 | 
			
		||||
    (home-page "http://thekonst.net/en/orpheus")
 | 
			
		||||
    (synopsis "Text-mode audio player")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,40 +0,0 @@
 | 
			
		|||
This fixes a segfault on 32-bit architectures. Upstream discussion:
 | 
			
		||||
 | 
			
		||||
https://lists.gnupg.org/pipermail/gnupg-devel/2016-December/032364.html
 | 
			
		||||
 | 
			
		||||
Guix thread: https://lists.gnu.org/archive/html/guix-devel/2016-12/msg00631.html
 | 
			
		||||
 | 
			
		||||
Patch copied from upstream source repository:
 | 
			
		||||
 | 
			
		||||
https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commitdiff;h=6e96cdd41a0e55b672309431062f37c4a4a9f485
 | 
			
		||||
 | 
			
		||||
From 6e96cdd41a0e55b672309431062f37c4a4a9f485 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Justus Winter <justus@g10code.com>
 | 
			
		||||
Date: Wed, 21 Dec 2016 16:14:45 +0100
 | 
			
		||||
Subject: [PATCH] gpgscm: Guard use of union member.
 | 
			
		||||
 | 
			
		||||
* tests/gpgscm/scheme.c (opexe_5): Check that we have a file port
 | 
			
		||||
before accessing filename.  Fixes a crash on 32-bit architectures.
 | 
			
		||||
 | 
			
		||||
Fixes-commit: e7429b1ced0c69fa7901f888f8dc25f00fc346a4
 | 
			
		||||
Signed-off-by: Justus Winter <justus@g10code.com>
 | 
			
		||||
---
 | 
			
		||||
 tests/gpgscm/scheme.c | 2 +-
 | 
			
		||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/tests/gpgscm/scheme.c b/tests/gpgscm/scheme.c
 | 
			
		||||
index a5b7691..2844545 100644
 | 
			
		||||
--- a/tests/gpgscm/scheme.c
 | 
			
		||||
+++ b/tests/gpgscm/scheme.c
 | 
			
		||||
@@ -4838,7 +4838,7 @@ static pointer opexe_5(scheme *sc, enum scheme_opcodes op) {
 | 
			
		||||
                } else {
 | 
			
		||||
                     sc->nesting_stack[sc->file_i]++;
 | 
			
		||||
 #if USE_TAGS && SHOW_ERROR_LINE
 | 
			
		||||
-		    {
 | 
			
		||||
+		    if (sc->load_stack[sc->file_i].kind & port_file) {
 | 
			
		||||
 		      const char *filename =
 | 
			
		||||
 			sc->load_stack[sc->file_i].rep.stdio.filename;
 | 
			
		||||
 		      int lineno =
 | 
			
		||||
-- 
 | 
			
		||||
2.8.0.rc3
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,33 +0,0 @@
 | 
			
		|||
Disable some tests that are known to fail:
 | 
			
		||||
 | 
			
		||||
https://github.com/pimutils/khal/issues/546
 | 
			
		||||
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=844081
 | 
			
		||||
 | 
			
		||||
diff --git a/tests/khalendar_test.py b/tests/khalendar_test.py
 | 
			
		||||
index fd8dcc6..17732bf 100644
 | 
			
		||||
--- a/tests/khalendar_test.py
 | 
			
		||||
+++ b/tests/khalendar_test.py
 | 
			
		||||
@@ -65,6 +65,7 @@ class TestCalendar(object):
 | 
			
		||||
                 else:
 | 
			
		||||
                     mtimes[cal] = mtime
 | 
			
		||||
 
 | 
			
		||||
+    @pytest.mark.xfail
 | 
			
		||||
     def test_db_needs_update(self, coll_vdirs):
 | 
			
		||||
         coll, vdirs = coll_vdirs
 | 
			
		||||
 
 | 
			
		||||
@@ -321,6 +322,7 @@ class TestDbCreation(object):
 | 
			
		||||
             CalendarCollection(calendars, dbpath=dbpath, locale=aux.locale)
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
+@pytest.mark.xfail
 | 
			
		||||
 def test_default_calendar(coll_vdirs):
 | 
			
		||||
     """test if an update to the vdir is detected by the CalendarCollection"""
 | 
			
		||||
     coll, vdirs = coll_vdirs
 | 
			
		||||
@@ -341,6 +343,7 @@ def test_default_calendar(coll_vdirs):
 | 
			
		||||
     assert len(list(coll.get_events_on(today))) == 0
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
+@pytest.mark.xfail
 | 
			
		||||
 def test_only_update_old_event(coll_vdirs, monkeypatch):
 | 
			
		||||
     coll, vdirs = coll_vdirs
 | 
			
		||||
 
 | 
			
		||||
| 
						 | 
				
			
			@ -1,50 +0,0 @@
 | 
			
		|||
Fix CVE-2016-6255:
 | 
			
		||||
 | 
			
		||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6255
 | 
			
		||||
http://www.openwall.com/lists/oss-security/2016/07/18/13
 | 
			
		||||
 | 
			
		||||
Patch adapted from upstream commit:
 | 
			
		||||
 | 
			
		||||
https://github.com/mrjimenez/pupnp/commit/d64d6a44906b5aa5306bdf1708531d698654dda5
 | 
			
		||||
 | 
			
		||||
The upstream change is simplified to unconditionally disable the HTTP
 | 
			
		||||
POST feature.
 | 
			
		||||
 | 
			
		||||
From d64d6a44906b5aa5306bdf1708531d698654dda5 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Matthew Garrett <mjg59@srcf.ucam.org>
 | 
			
		||||
Date: Tue, 23 Feb 2016 13:53:20 -0800
 | 
			
		||||
Subject: [PATCH] Don't allow unhandled POSTs to write to the filesystem by
 | 
			
		||||
 default
 | 
			
		||||
 | 
			
		||||
If there's no registered handler for a POST request, the default behaviour
 | 
			
		||||
is to write it to the filesystem. Several million deployed devices appear
 | 
			
		||||
to have this behaviour, making it possible to (at least) store arbitrary
 | 
			
		||||
data on them. Add a configure option that enables this behaviour, and change
 | 
			
		||||
the default to just drop POSTs that aren't directly handled.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Marcelo Roberto Jimenez <mroberto@users.sourceforge.net>
 | 
			
		||||
(cherry picked from commit c91a8a3903367e1163765b73eb4d43be7d7927fa)
 | 
			
		||||
---
 | 
			
		||||
 configure.ac                         | 9 +++++++++
 | 
			
		||||
 upnp/inc/upnpconfig.h.in             | 9 +++++++++
 | 
			
		||||
 upnp/src/genlib/net/http/webserver.c | 4 ++++
 | 
			
		||||
 3 files changed, 22 insertions(+)
 | 
			
		||||
 | 
			
		||||
diff --git a/upnp/src/genlib/net/http/webserver.c b/upnp/src/genlib/net/http/webserver.c
 | 
			
		||||
index 26bf0f7..7ae8c1e 100644
 | 
			
		||||
--- a/upnp/src/genlib/net/http/webserver.c
 | 
			
		||||
+++ b/upnp/src/genlib/net/http/webserver.c
 | 
			
		||||
@@ -1367,9 +1367,13 @@ static int http_RecvPostMessage(
 | 
			
		||||
 		if (Fp == NULL)
 | 
			
		||||
 			return HTTP_INTERNAL_SERVER_ERROR;
 | 
			
		||||
 	} else {
 | 
			
		||||
+#if 0
 | 
			
		||||
 		Fp = fopen(filename, "wb");
 | 
			
		||||
 		if (Fp == NULL)
 | 
			
		||||
 			return HTTP_UNAUTHORIZED;
 | 
			
		||||
+#else
 | 
			
		||||
+		return HTTP_NOT_FOUND;
 | 
			
		||||
+#endif
 | 
			
		||||
 	}
 | 
			
		||||
 	parser->position = POS_ENTITY;
 | 
			
		||||
 	do {
 | 
			
		||||
| 
						 | 
				
			
			@ -1,72 +0,0 @@
 | 
			
		|||
Fix CVE-2016-8863:
 | 
			
		||||
 | 
			
		||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8863
 | 
			
		||||
https://sourceforge.net/p/pupnp/bugs/133/
 | 
			
		||||
 | 
			
		||||
Patch copied from upstream source repository:
 | 
			
		||||
 | 
			
		||||
https://sourceforge.net/p/pupnp/code/ci/9c099c2923ab4d98530ab5204af1738be5bddba7/
 | 
			
		||||
 | 
			
		||||
From 9c099c2923ab4d98530ab5204af1738be5bddba7 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <ukleinek@debian.org>
 | 
			
		||||
Date: Thu, 8 Dec 2016 17:11:53 +0100
 | 
			
		||||
Subject: [PATCH] Fix out-of-bound access in create_url_list() (CVE-2016-8863)
 | 
			
		||||
 | 
			
		||||
If there is an invalid URL in URLS->buf after a valid one, uri_parse is
 | 
			
		||||
called with out pointing after the allocated memory. As uri_parse writes
 | 
			
		||||
to *out before returning an error the loop in create_url_list must be
 | 
			
		||||
stopped early to prevent an out-of-bound access
 | 
			
		||||
 | 
			
		||||
Bug: https://sourceforge.net/p/pupnp/bugs/133/
 | 
			
		||||
Bug-CVE: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8863
 | 
			
		||||
Bug-Debian: https://bugs.debian.org/842093
 | 
			
		||||
Bug-Redhat: https://bugzilla.redhat.com/show_bug.cgi?id=1388771
 | 
			
		||||
(cherry picked from commit a0f6e719bc03c4d2fe6a4a42ef6b8761446f520b)
 | 
			
		||||
---
 | 
			
		||||
 upnp/src/gena/gena_device.c | 17 ++++++++++++-----
 | 
			
		||||
 1 file changed, 12 insertions(+), 5 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/upnp/src/gena/gena_device.c b/upnp/src/gena/gena_device.c
 | 
			
		||||
index fb04a29..245c56b 100644
 | 
			
		||||
--- a/upnp/src/gena/gena_device.c
 | 
			
		||||
+++ b/upnp/src/gena/gena_device.c
 | 
			
		||||
@@ -1113,7 +1113,7 @@ static int create_url_list(
 | 
			
		||||
 	/*! [out] . */
 | 
			
		||||
 	URL_list *out)
 | 
			
		||||
 {
 | 
			
		||||
-    size_t URLcount = 0;
 | 
			
		||||
+    size_t URLcount = 0, URLcount2 = 0;
 | 
			
		||||
     size_t i;
 | 
			
		||||
     int return_code = 0;
 | 
			
		||||
     uri_type temp;
 | 
			
		||||
@@ -1155,16 +1155,23 @@ static int create_url_list(
 | 
			
		||||
         }
 | 
			
		||||
         memcpy( out->URLs, URLS->buff, URLS->size );
 | 
			
		||||
         out->URLs[URLS->size] = 0;
 | 
			
		||||
-        URLcount = 0;
 | 
			
		||||
         for( i = 0; i < URLS->size; i++ ) {
 | 
			
		||||
             if( ( URLS->buff[i] == '<' ) && ( i + 1 < URLS->size ) ) {
 | 
			
		||||
                 if( ( ( return_code =
 | 
			
		||||
                         parse_uri( &out->URLs[i + 1], URLS->size - i + 1,
 | 
			
		||||
-                                   &out->parsedURLs[URLcount] ) ) ==
 | 
			
		||||
+                                   &out->parsedURLs[URLcount2] ) ) ==
 | 
			
		||||
                       HTTP_SUCCESS )
 | 
			
		||||
-                    && ( out->parsedURLs[URLcount].hostport.text.size !=
 | 
			
		||||
+                    && ( out->parsedURLs[URLcount2].hostport.text.size !=
 | 
			
		||||
                          0 ) ) {
 | 
			
		||||
-                    URLcount++;
 | 
			
		||||
+                    URLcount2++;
 | 
			
		||||
+                    if (URLcount2 >= URLcount)
 | 
			
		||||
+                        /*
 | 
			
		||||
+                         * break early here in case there is a bogus URL that
 | 
			
		||||
+                         * was skipped above. This prevents to access
 | 
			
		||||
+                         * out->parsedURLs[URLcount] which is beyond the
 | 
			
		||||
+                         * allocation.
 | 
			
		||||
+                         */
 | 
			
		||||
+                        break;
 | 
			
		||||
                 } else {
 | 
			
		||||
                     if( return_code == UPNP_E_OUTOF_MEMORY ) {
 | 
			
		||||
                         free( out->URLs );
 | 
			
		||||
-- 
 | 
			
		||||
2.11.0
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										233
									
								
								gnu/packages/patches/openjpeg-CVE-2016-9572-CVE-2016-9573.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										233
									
								
								gnu/packages/patches/openjpeg-CVE-2016-9572-CVE-2016-9573.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,233 @@
 | 
			
		|||
Fix CVE-2016-9572 and CVE-2016-9573:
 | 
			
		||||
 | 
			
		||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9572
 | 
			
		||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9573
 | 
			
		||||
https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2016-9572
 | 
			
		||||
https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2016-9573
 | 
			
		||||
 | 
			
		||||
Patch copied from 3rd-party repository:
 | 
			
		||||
 | 
			
		||||
https://github.com/szukw000/openjpeg/commit/7b28bd2b723df6be09fe7791eba33147c1c47d0d
 | 
			
		||||
 | 
			
		||||
From 7b28bd2b723df6be09fe7791eba33147c1c47d0d Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: szukw000 <szukw000@arcor.de>
 | 
			
		||||
Date: Mon, 28 Nov 2016 21:57:20 +0100
 | 
			
		||||
Subject: [PATCH] Changes for issues #863 and #862
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 src/bin/jp2/convert.c        | 59 +++++++++++++++++++++++++++++++++++++++-----
 | 
			
		||||
 src/bin/jp2/convertbmp.c     | 29 +++++++++++++++++++++-
 | 
			
		||||
 src/bin/jp2/opj_decompress.c |  2 +-
 | 
			
		||||
 src/lib/openjp2/j2k.c        | 11 ++++++---
 | 
			
		||||
 4 files changed, 90 insertions(+), 11 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/src/bin/jp2/convert.c b/src/bin/jp2/convert.c
 | 
			
		||||
index deee4f6..6a3f65b 100644
 | 
			
		||||
--- a/src/bin/jp2/convert.c
 | 
			
		||||
+++ b/src/bin/jp2/convert.c
 | 
			
		||||
@@ -906,7 +906,8 @@ int imagetotga(opj_image_t * image, const char *outfile) {
 | 
			
		||||
     for (i = 0; i < image->numcomps-1; i++)	{
 | 
			
		||||
         if ((image->comps[0].dx != image->comps[i+1].dx)
 | 
			
		||||
                 ||(image->comps[0].dy != image->comps[i+1].dy)
 | 
			
		||||
-                ||(image->comps[0].prec != image->comps[i+1].prec))	{
 | 
			
		||||
+                ||(image->comps[0].prec != image->comps[i+1].prec)
 | 
			
		||||
+				||(image->comps[0].sgnd != image->comps[i+1].sgnd))	{
 | 
			
		||||
             fclose(fdest);
 | 
			
		||||
             fprintf(stderr, "Unable to create a tga file with such J2K image charateristics.");
 | 
			
		||||
             return 1;
 | 
			
		||||
@@ -1743,7 +1744,7 @@ int imagetopnm(opj_image_t * image, const char *outfile, int force_split)
 | 
			
		||||
     int *red, *green, *blue, *alpha;
 | 
			
		||||
     int wr, hr, max;
 | 
			
		||||
     int i;
 | 
			
		||||
-    unsigned int compno, ncomp;
 | 
			
		||||
+    unsigned int compno, ncomp, ui;
 | 
			
		||||
     int adjustR, adjustG, adjustB, adjustA;
 | 
			
		||||
     int fails, two, want_gray, has_alpha, triple;
 | 
			
		||||
     int prec, v;
 | 
			
		||||
@@ -1768,6 +1769,27 @@ int imagetopnm(opj_image_t * image, const char *outfile, int force_split)
 | 
			
		||||
 
 | 
			
		||||
     if(want_gray) ncomp = 1;
 | 
			
		||||
 
 | 
			
		||||
+    for (ui = 1; ui < ncomp; ++ui) {
 | 
			
		||||
+        if (image->comps[0].dx != image->comps[ui].dx) {
 | 
			
		||||
+            break;
 | 
			
		||||
+        }
 | 
			
		||||
+        if (image->comps[0].dy != image->comps[ui].dy) {
 | 
			
		||||
+            break;
 | 
			
		||||
+        }
 | 
			
		||||
+        if (image->comps[0].prec != image->comps[ui].prec) {
 | 
			
		||||
+            break;
 | 
			
		||||
+        }
 | 
			
		||||
+        if (image->comps[0].sgnd != image->comps[ui].sgnd) {
 | 
			
		||||
+            break;
 | 
			
		||||
+        }
 | 
			
		||||
+    }
 | 
			
		||||
+    if (ui != ncomp) {
 | 
			
		||||
+        fprintf(stderr,"imagetopnm: All components\n    shall have "
 | 
			
		||||
+         "the same subsampling, same bit depth, same sign.\n"
 | 
			
		||||
+         "    Aborting\n");
 | 
			
		||||
+        return 1;
 | 
			
		||||
+    }
 | 
			
		||||
+
 | 
			
		||||
     if ((force_split == 0) &&
 | 
			
		||||
 				(ncomp == 2 /* GRAYA */
 | 
			
		||||
             || (ncomp > 2 /* RGB, RGBA */
 | 
			
		||||
@@ -2126,7 +2148,7 @@ static int imagetoraw_common(opj_image_t * image, const char *outfile, OPJ_BOOL
 | 
			
		||||
 {
 | 
			
		||||
     FILE *rawFile = NULL;
 | 
			
		||||
     size_t res;
 | 
			
		||||
-    unsigned int compno;
 | 
			
		||||
+    unsigned int compno, numcomps;
 | 
			
		||||
     int w, h, fails;
 | 
			
		||||
     int line, row, curr, mask;
 | 
			
		||||
     int *ptr;
 | 
			
		||||
@@ -2139,6 +2161,31 @@ static int imagetoraw_common(opj_image_t * image, const char *outfile, OPJ_BOOL
 | 
			
		||||
         return 1;
 | 
			
		||||
     }
 | 
			
		||||
 
 | 
			
		||||
+    numcomps = image->numcomps;
 | 
			
		||||
+
 | 
			
		||||
+    if (numcomps > 4) {
 | 
			
		||||
+        numcomps = 4;
 | 
			
		||||
+    }
 | 
			
		||||
+    for (compno = 1; compno < numcomps; ++compno) {
 | 
			
		||||
+        if (image->comps[0].dx != image->comps[compno].dx) {
 | 
			
		||||
+            break;
 | 
			
		||||
+        }
 | 
			
		||||
+        if (image->comps[0].dy != image->comps[compno].dy) {
 | 
			
		||||
+            break;
 | 
			
		||||
+        }
 | 
			
		||||
+        if (image->comps[0].prec != image->comps[compno].prec) {
 | 
			
		||||
+            break;
 | 
			
		||||
+        }
 | 
			
		||||
+        if (image->comps[0].sgnd != image->comps[compno].sgnd) {
 | 
			
		||||
+            break;
 | 
			
		||||
+        }
 | 
			
		||||
+    }
 | 
			
		||||
+    if (compno != numcomps) {
 | 
			
		||||
+        fprintf(stderr,"imagetoraw_common: All components shall have the same subsampling, same bit depth, same sign.\n");
 | 
			
		||||
+        fprintf(stderr,"\tAborting\n");
 | 
			
		||||
+        return 1;
 | 
			
		||||
+    }
 | 
			
		||||
+
 | 
			
		||||
     rawFile = fopen(outfile, "wb");
 | 
			
		||||
     if (!rawFile) {
 | 
			
		||||
         fprintf(stderr, "Failed to open %s for writing !!\n", outfile);
 | 
			
		||||
@@ -2146,9 +2193,9 @@ static int imagetoraw_common(opj_image_t * image, const char *outfile, OPJ_BOOL
 | 
			
		||||
     }
 | 
			
		||||
 
 | 
			
		||||
     fails = 1;
 | 
			
		||||
-    fprintf(stdout,"Raw image characteristics: %d components\n", image->numcomps);
 | 
			
		||||
+    fprintf(stdout,"Raw image characteristics: %d components\n", numcomps);
 | 
			
		||||
 
 | 
			
		||||
-    for(compno = 0; compno < image->numcomps; compno++)
 | 
			
		||||
+    for(compno = 0; compno < numcomps; compno++)
 | 
			
		||||
     {
 | 
			
		||||
         fprintf(stdout,"Component %u characteristics: %dx%dx%d %s\n", compno, image->comps[compno].w,
 | 
			
		||||
                 image->comps[compno].h, image->comps[compno].prec, image->comps[compno].sgnd==1 ? "signed": "unsigned");
 | 
			
		||||
@@ -2238,7 +2285,7 @@ static int imagetoraw_common(opj_image_t * image, const char *outfile, OPJ_BOOL
 | 
			
		||||
         }
 | 
			
		||||
         else if (image->comps[compno].prec <= 32)
 | 
			
		||||
         {
 | 
			
		||||
-            fprintf(stderr,"More than 16 bits per component no handled yet\n");
 | 
			
		||||
+            fprintf(stderr,"More than 16 bits per component not handled yet\n");
 | 
			
		||||
             goto fin;
 | 
			
		||||
         }
 | 
			
		||||
         else
 | 
			
		||||
diff --git a/src/bin/jp2/convertbmp.c b/src/bin/jp2/convertbmp.c
 | 
			
		||||
index ae83077..8017ba8 100644
 | 
			
		||||
--- a/src/bin/jp2/convertbmp.c
 | 
			
		||||
+++ b/src/bin/jp2/convertbmp.c
 | 
			
		||||
@@ -806,8 +806,35 @@ int imagetobmp(opj_image_t * image, const char *outfile) {
 | 
			
		||||
     FILE *fdest = NULL;
 | 
			
		||||
     int adjustR, adjustG, adjustB;
 | 
			
		||||
 
 | 
			
		||||
+   {
 | 
			
		||||
+    unsigned int ui, ncomp = image->numcomps;
 | 
			
		||||
+
 | 
			
		||||
+    if (ncomp > 4) { /* RGBA in bmpmask32toimage */
 | 
			
		||||
+        ncomp = 4;
 | 
			
		||||
+    }
 | 
			
		||||
+    for (ui = 1; ui < ncomp; ++ui) {
 | 
			
		||||
+        if (image->comps[0].dx != image->comps[ui].dx) {
 | 
			
		||||
+            break;
 | 
			
		||||
+        }
 | 
			
		||||
+        if (image->comps[0].dy != image->comps[ui].dy) {
 | 
			
		||||
+            break;
 | 
			
		||||
+        }
 | 
			
		||||
+        if (image->comps[0].prec != image->comps[ui].prec) {
 | 
			
		||||
+            break;
 | 
			
		||||
+        }
 | 
			
		||||
+        if (image->comps[0].sgnd != image->comps[ui].sgnd) {
 | 
			
		||||
+            break;
 | 
			
		||||
+        }
 | 
			
		||||
+    }
 | 
			
		||||
+    if (ui != ncomp) {
 | 
			
		||||
+        fprintf(stderr,"imagetobmp: All components shall have the same subsampling, same bit depth, same sign.\n");
 | 
			
		||||
+        fprintf(stderr,"\tAborting\n");
 | 
			
		||||
+        return 1;
 | 
			
		||||
+    }
 | 
			
		||||
+
 | 
			
		||||
+   }
 | 
			
		||||
     if (image->comps[0].prec < 8) {
 | 
			
		||||
-        fprintf(stderr, "Unsupported number of components: %d\n", image->comps[0].prec);
 | 
			
		||||
+        fprintf(stderr, "imagetobmp: Unsupported precision: %d\n", image->comps[0].prec);
 | 
			
		||||
         return 1;
 | 
			
		||||
     }
 | 
			
		||||
     if (image->numcomps >= 3 && image->comps[0].dx == image->comps[1].dx
 | 
			
		||||
diff --git a/src/bin/jp2/opj_decompress.c b/src/bin/jp2/opj_decompress.c
 | 
			
		||||
index 83160c3..c30079b 100644
 | 
			
		||||
--- a/src/bin/jp2/opj_decompress.c
 | 
			
		||||
+++ b/src/bin/jp2/opj_decompress.c
 | 
			
		||||
@@ -1607,7 +1607,7 @@ int main(int argc, char **argv)
 | 
			
		||||
 		if(dirptr->filename_buf) free(dirptr->filename_buf);
 | 
			
		||||
 		free(dirptr);
 | 
			
		||||
 	}
 | 
			
		||||
-	if (numDecompressedImages) {
 | 
			
		||||
+	if (numDecompressedImages && !failed) {
 | 
			
		||||
 		fprintf(stdout, "decode time: %d ms\n", (int)( (tCumulative * 1000.0) / (OPJ_FLOAT64)numDecompressedImages));
 | 
			
		||||
 	}
 | 
			
		||||
 	return failed ? EXIT_FAILURE : EXIT_SUCCESS;
 | 
			
		||||
diff --git a/src/lib/openjp2/j2k.c b/src/lib/openjp2/j2k.c
 | 
			
		||||
index 66802bb..b6daa32 100644
 | 
			
		||||
--- a/src/lib/openjp2/j2k.c
 | 
			
		||||
+++ b/src/lib/openjp2/j2k.c
 | 
			
		||||
@@ -2158,7 +2158,7 @@ static OPJ_BOOL opj_j2k_read_siz(opj_j2k_t *p_j2k,
 | 
			
		||||
                                   i, l_img_comp->dx, l_img_comp->dy);
 | 
			
		||||
                     return OPJ_FALSE;
 | 
			
		||||
                 }
 | 
			
		||||
-                if( l_img_comp->prec > 38) { /* TODO openjpeg won't handle more than ? */
 | 
			
		||||
+                if( l_img_comp->prec < 1 || l_img_comp->prec > 38) { /* TODO openjpeg won't handle more than ? */
 | 
			
		||||
                     opj_event_msg(p_manager, EVT_ERROR,
 | 
			
		||||
                                   "Invalid values for comp = %d : prec=%u (should be between 1 and 38 according to the JPEG2000 norm)\n",
 | 
			
		||||
                                   i, l_img_comp->prec);
 | 
			
		||||
@@ -10029,7 +10029,11 @@ OPJ_BOOL opj_j2k_decode(opj_j2k_t * p_j2k,
 | 
			
		||||
         /* Move data and copy one information from codec to output image*/
 | 
			
		||||
         for (compno = 0; compno < p_image->numcomps; compno++) {
 | 
			
		||||
                 p_image->comps[compno].resno_decoded = p_j2k->m_output_image->comps[compno].resno_decoded;
 | 
			
		||||
-                p_image->comps[compno].data = p_j2k->m_output_image->comps[compno].data;
 | 
			
		||||
+		p_image->comps[compno].data = p_j2k->m_output_image->comps[compno].data;
 | 
			
		||||
+
 | 
			
		||||
+		if(p_image->comps[compno].data == NULL) return OPJ_FALSE;
 | 
			
		||||
+
 | 
			
		||||
+                p_j2k->m_output_image->comps[compno].data = NULL;
 | 
			
		||||
 #if 0
 | 
			
		||||
                 char fn[256];
 | 
			
		||||
                 sprintf( fn, "/tmp/%d.raw", compno );
 | 
			
		||||
@@ -10037,7 +10041,6 @@ OPJ_BOOL opj_j2k_decode(opj_j2k_t * p_j2k,
 | 
			
		||||
                 fwrite( p_image->comps[compno].data, sizeof(OPJ_INT32), p_image->comps[compno].w * p_image->comps[compno].h, debug );
 | 
			
		||||
                 fclose( debug );
 | 
			
		||||
 #endif
 | 
			
		||||
-                p_j2k->m_output_image->comps[compno].data = NULL;
 | 
			
		||||
         }
 | 
			
		||||
 
 | 
			
		||||
         return OPJ_TRUE;
 | 
			
		||||
@@ -10131,6 +10134,8 @@ OPJ_BOOL opj_j2k_get_tile(      opj_j2k_t *p_j2k,
 | 
			
		||||
 
 | 
			
		||||
                 p_image->comps[compno].data = p_j2k->m_output_image->comps[compno].data;
 | 
			
		||||
 
 | 
			
		||||
+				if (p_image->comps[compno].data == NULL) return OPJ_FALSE;
 | 
			
		||||
+
 | 
			
		||||
                 p_j2k->m_output_image->comps[compno].data = NULL;
 | 
			
		||||
         }
 | 
			
		||||
 
 | 
			
		||||
| 
						 | 
				
			
			@ -1194,14 +1194,14 @@ under several distributions that's hard or impossible to figure out.")
 | 
			
		|||
(define-public python2-pysqlite
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python2-pysqlite")
 | 
			
		||||
    (version "2.8.1")
 | 
			
		||||
    (version "2.8.3")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
      (method url-fetch)
 | 
			
		||||
      (uri (pypi-uri "pysqlite" version))
 | 
			
		||||
      (sha256
 | 
			
		||||
       (base32
 | 
			
		||||
        "0rm0zqyb363y6wljhfmbxs16jjv7p8nk1d8zgq9sdwj6js7y3jkm"))))
 | 
			
		||||
        "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("sqlite" ,sqlite)))
 | 
			
		||||
| 
						 | 
				
			
			@ -2242,10 +2242,11 @@ executed.")
 | 
			
		|||
    (propagated-inputs
 | 
			
		||||
     `(("python-coverage" ,python-coverage)))
 | 
			
		||||
    (home-page "https://github.com/schlamar/cov-core")
 | 
			
		||||
    (synopsis "plugin core for use by pytest-cov, nose-cov and nose2-cov")
 | 
			
		||||
    (synopsis "Coverage plugin core for pytest-cov, nose-cov and nose2-cov")
 | 
			
		||||
    (description
 | 
			
		||||
     "This is a library package for use by pytest-cov, nose-cov and nose2-cov.
 | 
			
		||||
It is useful for developing coverage plugins for these testing frameworks.")
 | 
			
		||||
     "This is a library package for use by @code{pytest-cov}, @code{nose-cov}
 | 
			
		||||
and @code{nose2-cov}.  It is useful for developing coverage plugins for these
 | 
			
		||||
testing frameworks.")
 | 
			
		||||
    (license license:expat)))
 | 
			
		||||
 | 
			
		||||
(define-public python2-cov-core
 | 
			
		||||
| 
						 | 
				
			
			@ -2568,13 +2569,13 @@ cutting and pasting that code over and over.")
 | 
			
		|||
(define-public python-unidecode
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-unidecode")
 | 
			
		||||
    (version "0.04.18")
 | 
			
		||||
    (version "0.04.20")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (pypi-uri "Unidecode" version))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "12hhblqy1ajvidm38im4171x4arg83pfmziyn53nizp29p3m14gi"))))
 | 
			
		||||
               "1q00i8gpsq3d9r0q8wk4b290fxl0kqlsdk7iadvli45in6s1hi7d"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (home-page "https://pypi.python.org/pypi/Unidecode")
 | 
			
		||||
    (synopsis "ASCII transliterations of Unicode text")
 | 
			
		||||
| 
						 | 
				
			
			@ -4004,14 +4005,14 @@ Python code against some of the style conventions in
 | 
			
		|||
(define-public python-orderedmultidict
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-orderedmultidict")
 | 
			
		||||
    (version "0.7.10")
 | 
			
		||||
    (version "0.7.11")
 | 
			
		||||
    (source
 | 
			
		||||
      (origin
 | 
			
		||||
        (method url-fetch)
 | 
			
		||||
        (uri (pypi-uri "orderedmultidict" version))
 | 
			
		||||
        (sha256
 | 
			
		||||
          (base32
 | 
			
		||||
            "1gvqk0jd432wsn88kq4svad68xz3r012jfpnhh9in7bqrkyxidky"))))
 | 
			
		||||
            "0dls862ibm7qbq4fnvwx0xn1v9hwyzywbff8xjjdr42dd75208yw"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
| 
						 | 
				
			
			@ -4132,14 +4133,14 @@ You might also want to install the following optional dependencies:
 | 
			
		|||
(define-public python-alembic
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-alembic")
 | 
			
		||||
    (version "0.8.7")
 | 
			
		||||
    (version "0.8.10")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "alembic" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0ias6fdzwr2s220fnjspkdgm9510bd0cnap0hx5y4zy4srba9f3z"))))
 | 
			
		||||
         "06br9sfqypnjlal6fsbnky3zb0askwcn3diz8k3kwa0qcblm0fqf"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("python-mock" ,python-mock)
 | 
			
		||||
| 
						 | 
				
			
			@ -5535,13 +5536,13 @@ Python style, together with a fast and comfortable execution environment.")
 | 
			
		|||
(define-public python-seaborn
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-seaborn")
 | 
			
		||||
    (version "0.7.0")
 | 
			
		||||
    (version "0.7.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "seaborn" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "0ibi3xsfm2kysph61mnfy0pf8d5rkgxgrdb0z9nbizgcgdsb5a0m"))))
 | 
			
		||||
        (base32 "0pawrqc3mxpwd5g9pvi9gba02637bh5c8ldpp8izfwpfn52469zs"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("python-pandas" ,python-pandas)
 | 
			
		||||
| 
						 | 
				
			
			@ -5998,7 +5999,7 @@ complexity of Python source code.")
 | 
			
		|||
(define-public python-mistune
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-mistune")
 | 
			
		||||
    (version "0.7")
 | 
			
		||||
    (version "0.7.3")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -6008,7 +6009,7 @@ complexity of Python source code.")
 | 
			
		|||
             ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "17zqjp9m4d1w3jf2rbbq5xshcw24q1vlcv24gkgfqqyyymajxahx"))))
 | 
			
		||||
         "04xpk1zvslhq3xpnf01g3ag0dy9wfv4z28p093r8k49vvxlyil11"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("python-nose" ,python-nose)
 | 
			
		||||
| 
						 | 
				
			
			@ -7022,16 +7023,14 @@ serve the same purpose: provide Python bindings for libmagic.")))
 | 
			
		|||
(define-public python-debian
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-debian")
 | 
			
		||||
    (version "0.1.23")
 | 
			
		||||
    (version "0.1.28")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (string-append
 | 
			
		||||
             "https://pypi.python.org/packages/source/p/python-debian/python-debian-"
 | 
			
		||||
             version ".tar.gz"))
 | 
			
		||||
       (uri (pypi-uri name version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "193faznwnjc3n5991wyzim6h9gyq1zxifmfrnpm3avgkh7ahyynh"))))
 | 
			
		||||
         "0i15f0xzx679sd0ldq2sls9pnnps9fv6vhqvnv9dzf4qhma42i0y"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("python-six" ,python-six)))
 | 
			
		||||
| 
						 | 
				
			
			@ -8612,16 +8611,16 @@ supports url redirection and retries, and also gzip and deflate decoding.")
 | 
			
		|||
(define-public python-colorama
 | 
			
		||||
  (package
 | 
			
		||||
   (name "python-colorama")
 | 
			
		||||
   (version "0.3.3")
 | 
			
		||||
   (version "0.3.7")
 | 
			
		||||
   (source
 | 
			
		||||
    (origin
 | 
			
		||||
     (method url-fetch)
 | 
			
		||||
     (uri (pypi-uri "colorama" version))
 | 
			
		||||
     (sha256
 | 
			
		||||
      (base32
 | 
			
		||||
       "1716z9pq1r5ys3nkg7wdrb3h2f9rmd0zdxpxzmx3bgwgf6xg48gb"))))
 | 
			
		||||
       "0avqkn6362v7k2kg3afb35g4sfdvixjgy890clip4q174p9whhz0"))))
 | 
			
		||||
   (build-system python-build-system)
 | 
			
		||||
   (synopsis "colored terminal text rendering for Python")
 | 
			
		||||
   (synopsis "Colored terminal text rendering for Python")
 | 
			
		||||
   (description "Colorama is a Python library for rendering colored terminal
 | 
			
		||||
text.")
 | 
			
		||||
   (home-page "https://pypi.python.org/pypi/colorama")
 | 
			
		||||
| 
						 | 
				
			
			@ -9027,14 +9026,14 @@ file.")
 | 
			
		|||
(define-public python-paste
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-paste")
 | 
			
		||||
    (version "2.0.2")
 | 
			
		||||
    (version "2.0.3")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "Paste" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "16dsv9qi0r4qsrsb6dilpq2rx0fnglvh36flzywcdnm2jg43mb5d"))
 | 
			
		||||
         "062jk0nlxf6lb2wwj6zc20rlvrwsnikpkh90y0dn8cjch93s6ii3"))
 | 
			
		||||
       (patches (search-patches "python-paste-remove-website-test.patch"
 | 
			
		||||
                                "python-paste-remove-timing-test.patch"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
| 
						 | 
				
			
			@ -9042,12 +9041,6 @@ file.")
 | 
			
		|||
     `(("python-nose" ,python-nose)))
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("python-six" ,python-six)))
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(;; Tests don't pass on Python 3, but work fine on Python 2.
 | 
			
		||||
       ;; (As of 2.0.2, Python 3 support in Paste is presently a bit broken,
 | 
			
		||||
       ;; but is usable enough for the minimal amount it's used in MediaGoblin
 | 
			
		||||
       ;; still... things should be better by the next Paste release.)
 | 
			
		||||
       #:tests? #f))
 | 
			
		||||
    (home-page "http://pythonpaste.org")
 | 
			
		||||
    (synopsis
 | 
			
		||||
     "Python web development tools, focusing on WSGI")
 | 
			
		||||
| 
						 | 
				
			
			@ -9055,18 +9048,10 @@ file.")
 | 
			
		|||
     "Paste provides a variety of web development tools and middleware which
 | 
			
		||||
can be nested together to build web applications.  Paste's design closely
 | 
			
		||||
follows ideas flowing from WSGI (Web Standard Gateway Interface).")
 | 
			
		||||
    (license license:expat)
 | 
			
		||||
    (properties `((python2-variant . ,(delay python2-paste))))))
 | 
			
		||||
    (license license:expat)))
 | 
			
		||||
 | 
			
		||||
(define-public python2-paste
 | 
			
		||||
  (let ((paste (package-with-python2
 | 
			
		||||
                (strip-python2-variant python-paste))))
 | 
			
		||||
    (package
 | 
			
		||||
      (inherit paste)
 | 
			
		||||
      (arguments
 | 
			
		||||
       ;; Tests are back for Python 2!
 | 
			
		||||
       `(#:tests? #t
 | 
			
		||||
         ,@(package-arguments paste))))))
 | 
			
		||||
  (package-with-python2 python-paste))
 | 
			
		||||
 | 
			
		||||
(define-public python-pastescript
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			@ -10414,13 +10399,13 @@ It uses LR parsing and does extensive error checking.")
 | 
			
		|||
(define-public python-tabulate
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-tabulate")
 | 
			
		||||
    (version "0.7.5")
 | 
			
		||||
    (version "0.7.7")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (pypi-uri "tabulate" version))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "03l1r7ddd1a0j2snv1yd0hlnghjad3fg1an1jr8936ksv75slwch"))
 | 
			
		||||
               "1inqhspd4frxnp08c32yndr0lc4px1xfkqah184i5w09gkhvi843"))
 | 
			
		||||
             ;; Fix tests
 | 
			
		||||
             (modules '((guix build utils)))
 | 
			
		||||
             (snippet '(substitute* '("test/test_cli.py"
 | 
			
		||||
| 
						 | 
				
			
			@ -10720,13 +10705,13 @@ It supports TSIG authenticated messages and EDNS0.")
 | 
			
		|||
(define-public python-email-validator
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-email-validator")
 | 
			
		||||
    (version "1.0.1")
 | 
			
		||||
    (version "1.0.2")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin (method url-fetch)
 | 
			
		||||
             (uri (pypi-uri "email_validator" version))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "0mn8jg5h8ifl8w6a6m0hq8kbk0mzw9vm054qfamkn89b3npz52qw"))))
 | 
			
		||||
               "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:phases
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 | 
			
		||||
;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
 | 
			
		||||
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -19,7 +20,7 @@
 | 
			
		|||
 | 
			
		||||
(define-module (gnu packages search)
 | 
			
		||||
  #:use-module ((guix licenses)
 | 
			
		||||
                #:select (gpl2 gpl2+ gpl3+ bsd-3 x11))
 | 
			
		||||
                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ bsd-3 x11))
 | 
			
		||||
  #:use-module (guix packages)
 | 
			
		||||
  #:use-module (guix download)
 | 
			
		||||
  #:use-module (guix build-system gnu)
 | 
			
		||||
| 
						 | 
				
			
			@ -160,6 +161,33 @@ accounting for new lines and paragraph changes.  It also has robust support
 | 
			
		|||
for parsing HTML files.")
 | 
			
		||||
    (license gpl3+)))
 | 
			
		||||
 | 
			
		||||
(define-public hyperestraier
 | 
			
		||||
  (package
 | 
			
		||||
    (name "hyperestraier")
 | 
			
		||||
    (version "1.4.13")
 | 
			
		||||
    (source
 | 
			
		||||
      (origin
 | 
			
		||||
        (method url-fetch)
 | 
			
		||||
        (uri (string-append "http://fallabs.com/" name "/"
 | 
			
		||||
                            name "-" version ".tar.gz"))
 | 
			
		||||
        (sha256
 | 
			
		||||
         (base32
 | 
			
		||||
          "1qk3pxgzyrpcz5qfyd5xs2hw9q1cbb7j5zd4kp1diq501wcj2vs9"))))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("qdbm" ,qdbm)
 | 
			
		||||
       ("zlib" ,zlib)))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath="
 | 
			
		||||
                                              (assoc-ref %outputs "out")
 | 
			
		||||
                                              "/lib"))))
 | 
			
		||||
    (home-page "http://fallabs.com/hyperestraier")
 | 
			
		||||
    (synopsis "Full-text search system")
 | 
			
		||||
    (description "Hyper Estraier can be used to integrate full-text
 | 
			
		||||
search into applications, using either the provided command line and CGI
 | 
			
		||||
interfaces, or a C API.")
 | 
			
		||||
    (license lgpl2.1+)))
 | 
			
		||||
 | 
			
		||||
(define-public mlocate
 | 
			
		||||
  (package
 | 
			
		||||
    (name "mlocate")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,14 +58,14 @@ between various shells or commands.")
 | 
			
		|||
(define-public trash-cli
 | 
			
		||||
  (package
 | 
			
		||||
    (name "trash-cli")
 | 
			
		||||
    (version "0.17.1.1")
 | 
			
		||||
    (version "0.17.1.14")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "trash-cli" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "019sjab29jkps8zkf8icihhf3ng4lx9y4p1lxjd3wbnnynphc4is"))))
 | 
			
		||||
         "01q0cl04ljf214z6s3g256gsxx3pqsgaf6ac1zh0vrq5bnhnr85h"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:python ,python-2
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -25,6 +26,7 @@
 | 
			
		|||
  #:use-module (gnu packages compression)
 | 
			
		||||
  #:use-module (gnu packages databases)
 | 
			
		||||
  #:use-module (gnu packages linux)
 | 
			
		||||
  #:use-module (gnu packages lua)
 | 
			
		||||
  #:use-module (gnu packages perl)
 | 
			
		||||
  #:use-module (gnu packages pkg-config)
 | 
			
		||||
  #:use-module (gnu packages qt)
 | 
			
		||||
| 
						 | 
				
			
			@ -158,3 +160,49 @@ their folder.
 | 
			
		|||
@item Toggle for monochrome icon.
 | 
			
		||||
@end enumerate\n")
 | 
			
		||||
    (license license:lgpl3+)))
 | 
			
		||||
 | 
			
		||||
(define-public lsyncd
 | 
			
		||||
  (package
 | 
			
		||||
    (name "lsyncd")
 | 
			
		||||
    (version "2.2.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (string-append "https://github.com/axkibe/lsyncd/archive/release-"
 | 
			
		||||
                           version ".tar.gz"))
 | 
			
		||||
       (file-name (string-append name "-" version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0da7mrq2c578v2dd5x9v75l1fqrm28jvn28qkcd49y8p992nj6gl"))))
 | 
			
		||||
    (build-system cmake-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(;; The "tests" target is broken and assumes that tests are run in the
 | 
			
		||||
       ;; root directory.
 | 
			
		||||
       #:tests? #f
 | 
			
		||||
       #:test-target "tests"
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         ;; No install target.
 | 
			
		||||
         (replace 'install
 | 
			
		||||
           (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
             (let* ((out (assoc-ref outputs "out"))
 | 
			
		||||
                    (bin (string-append out "/bin"))
 | 
			
		||||
                    (man (string-append out "/share/man/man1")))
 | 
			
		||||
               (install-file "lsyncd" bin)
 | 
			
		||||
               (install-file (string-append "../lsyncd-release-"
 | 
			
		||||
                                            ,version
 | 
			
		||||
                                            "/doc/manpage/lsyncd.1")
 | 
			
		||||
                             man)
 | 
			
		||||
               #t))))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("lua" ,lua-5.2)))
 | 
			
		||||
    (home-page "https://github.com/axkibe/lsyncd")
 | 
			
		||||
    (synopsis "Synchronize local directories with remote targets")
 | 
			
		||||
    (description "Lsyncd watches a local directory trees event monitor
 | 
			
		||||
interface (inotify or fsevents).  It aggregates and combines events for a few
 | 
			
		||||
seconds and then spawns one (or more) process(es) to synchronize the changes.
 | 
			
		||||
By default this is rsync, which must be installed on all source and target
 | 
			
		||||
machines.  Lsyncd is thus a light-weight live mirror solution that is
 | 
			
		||||
comparatively easy to install not requiring new filesystems or block devices
 | 
			
		||||
and does not hamper local filesystem performance.")
 | 
			
		||||
    (license license:gpl2+)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,7 @@
 | 
			
		|||
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 | 
			
		||||
;;; Copyright © 2016, 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
 | 
			
		||||
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -362,3 +363,70 @@ scripts, notifying the user when something interesting occurs.  Of course, it
 | 
			
		|||
has no notion of what's interesing, but it's very good at that notifying part.")
 | 
			
		||||
    (home-page "http://www.johnath.com/beep")
 | 
			
		||||
    (license license:gpl2+)))
 | 
			
		||||
 | 
			
		||||
(define-public unibilium
 | 
			
		||||
  (package
 | 
			
		||||
    (name "unibilium")
 | 
			
		||||
    (version "1.2.0")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (string-append "https://github.com/mauke/unibilium/"
 | 
			
		||||
                           "archive/v" version ".tar.gz"))
 | 
			
		||||
       (file-name (string-append name "-" version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1n7a0jrlwhn9nnkna76sbnjrr808m0pmzbiwznmp7rhmjl4z2fk2"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:make-flags
 | 
			
		||||
       (list "CC=gcc"
 | 
			
		||||
             (string-append "PREFIX=" (assoc-ref %outputs "out")))
 | 
			
		||||
       #:test-target "test"
 | 
			
		||||
       ;; FIXME: tests require "prove"
 | 
			
		||||
       #:tests? #f
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (delete 'configure))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("libtool" ,libtool)))
 | 
			
		||||
    (home-page "https://github.com/mauke/unibilium")
 | 
			
		||||
    (synopsis "Terminfo parsing library")
 | 
			
		||||
    (description "Unibilium is a basic C terminfo library.  It doesn't depend
 | 
			
		||||
on curses or any other library.  It also doesn't use global variables, so it
 | 
			
		||||
should be thread-safe.")
 | 
			
		||||
    (license license:lgpl3+)))
 | 
			
		||||
 | 
			
		||||
(define-public libvterm
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libvterm")
 | 
			
		||||
    (version "0+bzr681")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (string-append "http://www.leonerd.org.uk/code/libvterm/"
 | 
			
		||||
                           "libvterm-" version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1s56c8p1qz6frkcri0hg4qyydv2wcccj6n2xmz1dwcdqn38ldsmb"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:make-flags
 | 
			
		||||
       (list "CC=gcc"
 | 
			
		||||
             (string-append "PREFIX=" (assoc-ref %outputs "out")))
 | 
			
		||||
       #:test-target "test"
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (delete 'configure))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("libtool" ,libtool)
 | 
			
		||||
       ("perl" ,perl)))
 | 
			
		||||
    (home-page "http://www.leonerd.org.uk/code/libvterm/")
 | 
			
		||||
    (synopsis "VT220/xterm/ECMA-48 terminal emulator library")
 | 
			
		||||
    (description "Libvterm is an abstract C99 library which implements a VT220
 | 
			
		||||
or xterm-like terminal emulator.  It doesn't use any particular graphics
 | 
			
		||||
toolkit or output system, instead it invokes callback function pointers that
 | 
			
		||||
its embedding program should provide it to draw on its behalf.  It avoids
 | 
			
		||||
calling @code{malloc} during normal running state, allowing it to be used in
 | 
			
		||||
embedded kernel situations.")
 | 
			
		||||
    (license license:expat)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 | 
			
		||||
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 | 
			
		||||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
 | 
			
		||||
;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -39,14 +39,14 @@
 | 
			
		|||
(define-public tor
 | 
			
		||||
  (package
 | 
			
		||||
    (name "tor")
 | 
			
		||||
    (version "0.2.9.8")
 | 
			
		||||
    (version "0.2.9.9")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (string-append "https://dist.torproject.org/tor-"
 | 
			
		||||
                                 version ".tar.gz"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "0sklgmx4nikcfhqd606kvpwy1l8840w24ikli1xjjx25739k7pgv"))))
 | 
			
		||||
               "0hqdk5p6dw4bpn7c8gmhyi8jjkhc37112pfw5nx4gl0g4lmmscik"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("python" ,python-2)))  ; for tests
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -580,7 +580,7 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
 | 
			
		|||
          (lambda* (#:key outputs configure-flags #:allow-other-keys)
 | 
			
		||||
            (let ((out (assoc-ref outputs "out")))
 | 
			
		||||
              (substitute* "configure"
 | 
			
		||||
                (("#! /bin/sh") (string-append "#!" (which "bash"))))
 | 
			
		||||
                (("#! /bin/sh") (string-append "#!" (which "sh"))))
 | 
			
		||||
              (setenv "SHELL" (which "bash"))
 | 
			
		||||
              (setenv "CONFIG_SHELL" (which "bash"))
 | 
			
		||||
              (zero? (apply system*
 | 
			
		||||
| 
						 | 
				
			
			@ -796,7 +796,7 @@ treaming protocols.")
 | 
			
		|||
            (let ((out (assoc-ref outputs "out"))
 | 
			
		||||
                  (libx11 (assoc-ref inputs "libx11")))
 | 
			
		||||
              (substitute* "configure"
 | 
			
		||||
                (("#! /bin/sh") (string-append "#!" (which "bash"))))
 | 
			
		||||
                (("#! /bin/sh") (string-append "#!" (which "sh"))))
 | 
			
		||||
              (setenv "SHELL" (which "bash"))
 | 
			
		||||
              (setenv "CONFIG_SHELL" (which "bash"))
 | 
			
		||||
              (zero? (system*
 | 
			
		||||
| 
						 | 
				
			
			@ -970,7 +970,7 @@ access to mpv's powerful playback capabilities.")
 | 
			
		|||
(define-public youtube-dl
 | 
			
		||||
  (package
 | 
			
		||||
    (name "youtube-dl")
 | 
			
		||||
    (version "2017.01.14")
 | 
			
		||||
    (version "2017.01.24")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://yt-dl.org/downloads/"
 | 
			
		||||
| 
						 | 
				
			
			@ -978,7 +978,7 @@ access to mpv's powerful playback capabilities.")
 | 
			
		|||
                                  version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1jlwz6p7ryj9ygmwqm4r3pykd9qw21rsiqpifbx0p0kcvdvvvj3n"))))
 | 
			
		||||
                "1n74s6kfs4v1lfg7xls9ymk6yrq09hxwd18sz3lziv5qd1pj14b6"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     ;; The problem here is that the directory for the man page and completion
 | 
			
		||||
| 
						 | 
				
			
			@ -1228,7 +1228,7 @@ for use with HTML5 video.")
 | 
			
		|||
         (lambda _
 | 
			
		||||
           (with-directory-excursion "avidemux_core/ffmpeg_package"
 | 
			
		||||
             (substitute* "ffmpeg-2.7.6/configure"
 | 
			
		||||
               (("#! /bin/sh") (string-append "#!" (which "bash"))))
 | 
			
		||||
               (("#! /bin/sh") (string-append "#!" (which "sh"))))
 | 
			
		||||
             (system* "tar" "cjf" "ffmpeg-2.7.6.tar.bz2" "ffmpeg-2.7.6"
 | 
			
		||||
                      ;; avoid non-determinism in the archive
 | 
			
		||||
                      "--sort=name" "--mtime=@0"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,6 +17,7 @@
 | 
			
		|||
;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
 | 
			
		||||
;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org>
 | 
			
		||||
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -3968,3 +3969,29 @@ useful for users behind restrictive firewalls.  As long as Web traffic is
 | 
			
		|||
allowed, even through a HTTP-only proxy, httptunnel can be combined with other
 | 
			
		||||
tools like SSH (Secure Shell) to reach the outside world.")
 | 
			
		||||
    (license l:gpl2+)))
 | 
			
		||||
 | 
			
		||||
(define-public stunnel
 | 
			
		||||
  (package
 | 
			
		||||
  (name "stunnel")
 | 
			
		||||
  (version "5.39")
 | 
			
		||||
  (source
 | 
			
		||||
    (origin
 | 
			
		||||
      (method url-fetch)
 | 
			
		||||
      (uri (string-append "https://www.stunnel.org/downloads/stunnel-"
 | 
			
		||||
                          version ".tar.gz"))
 | 
			
		||||
      (sha256
 | 
			
		||||
       (base32
 | 
			
		||||
        "1vjdn32iw11zqsygwxbjmqgs4644dk3ql1h8ap890ls6a1x0i318"))))
 | 
			
		||||
  (build-system gnu-build-system)
 | 
			
		||||
  (inputs `(("openssl" ,openssl)))
 | 
			
		||||
  (arguments
 | 
			
		||||
   `(#:configure-flags
 | 
			
		||||
     (list (string-append "--with-ssl=" (assoc-ref %build-inputs "openssl")))))
 | 
			
		||||
  (home-page "https://www.stunnel.org")
 | 
			
		||||
  (synopsis "TLS proxy for clients or servers")
 | 
			
		||||
  (description "Stunnel is a proxy designed to add TLS encryption
 | 
			
		||||
functionality to existing clients and servers without any changes in the
 | 
			
		||||
programs' code.  Its architecture is optimized for security, portability, and
 | 
			
		||||
scalability (including load-balancing), making it suitable for large
 | 
			
		||||
deployments.")
 | 
			
		||||
  (license l:gpl2+)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@
 | 
			
		|||
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 | 
			
		||||
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 | 
			
		||||
;;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
 | 
			
		||||
;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
 | 
			
		||||
;;; Copyright © 2013, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
 | 
			
		||||
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
 | 
			
		||||
;;; Copyright © 2015 Alexander I.Grafov <grafov@gmail.com>
 | 
			
		||||
;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
 | 
			
		||||
| 
						 | 
				
			
			@ -75,7 +75,14 @@
 | 
			
		|||
                                  "/files/" name "-" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1i3f1agixxbfy4kxikb2b241p7c2lg73cl9wqfvlwz3q6zf5faxv"))))
 | 
			
		||||
                "1i3f1agixxbfy4kxikb2b241p7c2lg73cl9wqfvlwz3q6zf5faxv"))
 | 
			
		||||
              (modules '((guix build utils)))
 | 
			
		||||
              (snippet
 | 
			
		||||
               ;; Do not record a timestamp and file name in gzipped man
 | 
			
		||||
               ;; pages (this is equivalent to 'gzip --no-name'.)
 | 
			
		||||
               '(substitute* "setup.py"
 | 
			
		||||
                  (("gzip\\.open\\(gzfile, 'w', 9\\)")
 | 
			
		||||
                   "gzip.GzipFile('', 'wb', 9, open(gzfile, 'wb'), 0.)")))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:python ,python-2     ;incompatible with python 3
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -300,7 +300,7 @@ ogginfo, to obtain information (tags, bitrate, length, etc.) about
 | 
			
		|||
(define opus
 | 
			
		||||
  (package
 | 
			
		||||
    (name "opus")
 | 
			
		||||
    (version "1.1.3")
 | 
			
		||||
    (version "1.1.4")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -308,7 +308,7 @@ ogginfo, to obtain information (tags, bitrate, length, etc.) about
 | 
			
		|||
                    ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0cxnd7pjxbgh6l3cbzsw29phpr5cq28fikfhjlp1hc3y5s0gxdjq"))))
 | 
			
		||||
                "14l6kpapmcnvl7p9hrmbqcnzj13zfzyppyc9a5kd4788h2rvc8li"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (synopsis "Versatile audio codec")
 | 
			
		||||
    (description
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -345,6 +345,10 @@ ACTIVATION-SCRIPT-TYPE."
 | 
			
		|||
                      ;; thus there is no accounting at all.
 | 
			
		||||
                      (close-port (open-file "/var/run/utmpx" "a0"))
 | 
			
		||||
 | 
			
		||||
                      ;; Same for 'wtmp', which is populated by mingetty et
 | 
			
		||||
                      ;; al.
 | 
			
		||||
                      (close-port (open-file "/var/log/wtmp" "a0"))
 | 
			
		||||
 | 
			
		||||
                      ;; Set up /run/current-system.  Among other things this
 | 
			
		||||
                      ;; sets up locales, which the activation snippets
 | 
			
		||||
                      ;; executed below may expect.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2016 Andy Wingo <wingo@pobox.com>
 | 
			
		||||
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -811,6 +812,7 @@ IPP specifications.")
 | 
			
		|||
  ;; Activation gexp.
 | 
			
		||||
  (with-imported-modules '((guix build utils))
 | 
			
		||||
    #~(begin
 | 
			
		||||
        (use-modules (guix build utils))
 | 
			
		||||
        (define (mkdir-p/perms directory owner perms)
 | 
			
		||||
          (mkdir-p directory)
 | 
			
		||||
          (chown "/var/run/cups" (passwd:uid owner) (passwd:gid owner))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
 | 
			
		||||
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -1601,6 +1602,7 @@ accept from local for any relay
 | 
			
		|||
    (($ <opensmtpd-configuration> package config-file)
 | 
			
		||||
     (let ((smtpd (file-append package "/sbin/smtpd")))
 | 
			
		||||
       #~(begin
 | 
			
		||||
           (use-modules (guix build utils))
 | 
			
		||||
           ;; Create mbox and spool directories.
 | 
			
		||||
           (mkdir-p "/var/mail")
 | 
			
		||||
           (mkdir-p "/var/spool/smtpd")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 | 
			
		||||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 | 
			
		||||
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -332,6 +333,7 @@ restrict -6 ::1\n"))
 | 
			
		|||
  "Return the activation gexp for CONFIG."
 | 
			
		||||
  (with-imported-modules '((guix build utils))
 | 
			
		||||
    #~(begin
 | 
			
		||||
        (use-modules (guix build utils))
 | 
			
		||||
        (define %user
 | 
			
		||||
          (getpw "ntpd"))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2016 David Craven <david@craven.ch>
 | 
			
		||||
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -35,7 +36,9 @@
 | 
			
		|||
 | 
			
		||||
(define (spice-vdagent-activation config)
 | 
			
		||||
  "Return the activation gexp for CONFIG."
 | 
			
		||||
  #~(mkdir-p "/var/run/spice-vdagentd"))
 | 
			
		||||
  #~(begin
 | 
			
		||||
      (use-modules (guix build utils))
 | 
			
		||||
      (mkdir-p "/var/run/spice-vdagentd")))
 | 
			
		||||
 | 
			
		||||
(define (spice-vdagent-shepherd-service config)
 | 
			
		||||
  "Return a <shepherd-service> for spice-vdagentd with CONFIG."
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,7 @@
 | 
			
		|||
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 | 
			
		||||
;;; Copyright © 2016 David Craven <david@craven.ch>
 | 
			
		||||
;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
 | 
			
		||||
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -292,6 +293,7 @@ The other options should be self-descriptive."
 | 
			
		|||
(define (openssh-activation config)
 | 
			
		||||
  "Return the activation GEXP for CONFIG."
 | 
			
		||||
  #~(begin
 | 
			
		||||
      (use-modules (guix build utils))
 | 
			
		||||
      (mkdir-p "/etc/ssh")
 | 
			
		||||
      (mkdir-p (dirname #$(openssh-configuration-pid-file config)))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -388,6 +390,7 @@ The other options should be self-descriptive."
 | 
			
		|||
(define (dropbear-activation config)
 | 
			
		||||
  "Return the activation gexp for CONFIG."
 | 
			
		||||
  #~(begin
 | 
			
		||||
      (use-modules (guix build utils))
 | 
			
		||||
      (mkdir-p "/etc/dropbear")))
 | 
			
		||||
 | 
			
		||||
(define (dropbear-shepherd-service config)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
 | 
			
		||||
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -444,7 +445,9 @@ is trunkated and rewritten every minute.")
 | 
			
		|||
         (shell (file-append shadow "/sbin/nologin")))))
 | 
			
		||||
 | 
			
		||||
(define %openvpn-activation
 | 
			
		||||
  #~(mkdir-p "/var/run/openvpn"))
 | 
			
		||||
  #~(begin
 | 
			
		||||
      (use-modules (guix build utils))
 | 
			
		||||
      (mkdir-p "/var/run/openvpn")))
 | 
			
		||||
 | 
			
		||||
(define openvpn-server-service-type
 | 
			
		||||
  (service-type (name 'openvpn-server)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,7 +54,7 @@
 | 
			
		|||
(define-record-type* <mapped-device> mapped-device
 | 
			
		||||
  make-mapped-device
 | 
			
		||||
  mapped-device?
 | 
			
		||||
  (source    mapped-device-source)                ;string
 | 
			
		||||
  (source    mapped-device-source)                ;string | list of strings
 | 
			
		||||
  (target    mapped-device-target)                ;string
 | 
			
		||||
  (type      mapped-device-type))                 ;<mapped-device-kind>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -194,6 +194,29 @@ info --version")
 | 
			
		|||
                            (utmpx-entries)))
 | 
			
		||||
             marionette))
 | 
			
		||||
 | 
			
		||||
          ;; Likewise for /var/log/wtmp (used by 'last').
 | 
			
		||||
          (test-assert "wtmp entry"
 | 
			
		||||
            (match (marionette-eval
 | 
			
		||||
                    '(begin
 | 
			
		||||
                       (use-modules (guix build syscalls)
 | 
			
		||||
                                    (srfi srfi-1))
 | 
			
		||||
 | 
			
		||||
                       (define (entry->list entry)
 | 
			
		||||
                         (list (utmpx-user entry) (utmpx-line entry)
 | 
			
		||||
                               (utmpx-host entry) (utmpx-login-type entry)))
 | 
			
		||||
 | 
			
		||||
                       (call-with-input-file "/var/log/wtmp"
 | 
			
		||||
                         (lambda (port)
 | 
			
		||||
                           (let loop ((result '()))
 | 
			
		||||
                             (if (eof-object? (peek-char port))
 | 
			
		||||
                                 (map entry->list (reverse result))
 | 
			
		||||
                                 (loop (cons (read-utmpx port) result)))))))
 | 
			
		||||
                    marionette)
 | 
			
		||||
              (((users lines hosts types) ..1)
 | 
			
		||||
               (every (lambda (type)
 | 
			
		||||
                        (eqv? type (login-type LOGIN_PROCESS)))
 | 
			
		||||
                      types))))
 | 
			
		||||
 | 
			
		||||
          (test-assert "host name resolution"
 | 
			
		||||
            (match (marionette-eval
 | 
			
		||||
                    '(begin
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,6 +21,7 @@
 | 
			
		|||
(define-module (guix build syscalls)
 | 
			
		||||
  #:use-module (system foreign)
 | 
			
		||||
  #:use-module (rnrs bytevectors)
 | 
			
		||||
  #:autoload   (ice-9 binary-ports) (get-bytevector-n)
 | 
			
		||||
  #:use-module (srfi srfi-1)
 | 
			
		||||
  #:use-module (srfi srfi-9)
 | 
			
		||||
  #:use-module (srfi srfi-9 gnu)
 | 
			
		||||
| 
						 | 
				
			
			@ -142,7 +143,8 @@
 | 
			
		|||
            utmpx-time
 | 
			
		||||
            utmpx-address
 | 
			
		||||
            login-type
 | 
			
		||||
            utmpx-entries))
 | 
			
		||||
            utmpx-entries
 | 
			
		||||
            (read-utmpx-from-port . read-utmpx)))
 | 
			
		||||
 | 
			
		||||
;;; Commentary:
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -1598,4 +1600,13 @@ always a positive integer."
 | 
			
		|||
      ((? utmpx? entry)
 | 
			
		||||
       (loop (cons entry entries))))))
 | 
			
		||||
 | 
			
		||||
(define (read-utmpx-from-port port)
 | 
			
		||||
  "Read a utmpx entry from PORT.  Return either the EOF object or a utmpx
 | 
			
		||||
entry."
 | 
			
		||||
  (match (get-bytevector-n port sizeof-utmpx)
 | 
			
		||||
    ((? eof-object? eof)
 | 
			
		||||
     eof)
 | 
			
		||||
    ((? bytevector? bv)
 | 
			
		||||
     (read-utmpx bv))))
 | 
			
		||||
 | 
			
		||||
;;; syscalls.scm ends here
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -78,11 +78,12 @@
 | 
			
		|||
(define* (graft-derivation/shallow store drv grafts
 | 
			
		||||
                                   #:key
 | 
			
		||||
                                   (name (derivation-name drv))
 | 
			
		||||
                                   (outputs (derivation-output-names drv))
 | 
			
		||||
                                   (guile (%guile-for-build))
 | 
			
		||||
                                   (system (%current-system)))
 | 
			
		||||
  "Return a derivation called NAME, based on DRV but with all the GRAFTS
 | 
			
		||||
applied.  This procedure performs \"shallow\" grafting in that GRAFTS are not
 | 
			
		||||
recursively applied to dependencies of DRV."
 | 
			
		||||
  "Return a derivation called NAME, which applies GRAFTS to the specified
 | 
			
		||||
OUTPUTS of DRV.  This procedure performs \"shallow\" grafting in that GRAFTS
 | 
			
		||||
are not recursively applied to dependencies of DRV."
 | 
			
		||||
  ;; XXX: Someday rewrite using gexps.
 | 
			
		||||
  (define mapping
 | 
			
		||||
    ;; List of store item pairs.
 | 
			
		||||
| 
						 | 
				
			
			@ -96,14 +97,12 @@ recursively applied to dependencies of DRV."
 | 
			
		|||
                     target))))
 | 
			
		||||
         grafts))
 | 
			
		||||
 | 
			
		||||
  (define outputs
 | 
			
		||||
    (map (match-lambda
 | 
			
		||||
           ((name . output)
 | 
			
		||||
            (cons name (derivation-output-path output))))
 | 
			
		||||
         (derivation-outputs drv)))
 | 
			
		||||
 | 
			
		||||
  (define output-names
 | 
			
		||||
    (derivation-output-names drv))
 | 
			
		||||
  (define output-pairs
 | 
			
		||||
    (map (lambda (output)
 | 
			
		||||
           (cons output
 | 
			
		||||
                 (derivation-output-path
 | 
			
		||||
                  (assoc-ref (derivation-outputs drv) output))))
 | 
			
		||||
         outputs))
 | 
			
		||||
 | 
			
		||||
  (define build
 | 
			
		||||
    `(begin
 | 
			
		||||
| 
						 | 
				
			
			@ -111,7 +110,7 @@ recursively applied to dependencies of DRV."
 | 
			
		|||
                    (guix build utils)
 | 
			
		||||
                    (ice-9 match))
 | 
			
		||||
 | 
			
		||||
       (let* ((old-outputs ',outputs)
 | 
			
		||||
       (let* ((old-outputs ',output-pairs)
 | 
			
		||||
              (mapping (append ',mapping
 | 
			
		||||
                               (map (match-lambda
 | 
			
		||||
                                      ((name . file)
 | 
			
		||||
| 
						 | 
				
			
			@ -143,10 +142,10 @@ recursively applied to dependencies of DRV."
 | 
			
		|||
                                                 (guix build utils))
 | 
			
		||||
                                     #:inputs `(,@(map (lambda (out)
 | 
			
		||||
                                                         `("x" ,drv ,out))
 | 
			
		||||
                                                       output-names)
 | 
			
		||||
                                                       outputs)
 | 
			
		||||
                                                ,@(append (map add-label sources)
 | 
			
		||||
                                                          (map add-label targets)))
 | 
			
		||||
                                     #:outputs output-names
 | 
			
		||||
                                     #:outputs outputs
 | 
			
		||||
                                     #:local-build? #t)))))
 | 
			
		||||
(define (item->deriver store item)
 | 
			
		||||
  "Return two values: the derivation that led to ITEM (a store item), and the
 | 
			
		||||
| 
						 | 
				
			
			@ -217,14 +216,14 @@ available."
 | 
			
		|||
(define-syntax-rule (with-cache key exp ...)
 | 
			
		||||
  "Cache the value of monadic expression EXP under KEY."
 | 
			
		||||
  (mlet %state-monad ((cache (current-state)))
 | 
			
		||||
    (match (vhash-assq key cache)
 | 
			
		||||
    (match (vhash-assoc key cache)
 | 
			
		||||
      ((_ . result)                               ;cache hit
 | 
			
		||||
       (return result))
 | 
			
		||||
      (#f                                         ;cache miss
 | 
			
		||||
       (mlet %state-monad ((result (begin exp ...))
 | 
			
		||||
                           (cache  (current-state)))
 | 
			
		||||
         (mbegin %state-monad
 | 
			
		||||
           (set-current-state (vhash-consq key result cache))
 | 
			
		||||
           (set-current-state (vhash-cons key result cache))
 | 
			
		||||
           (return result)))))))
 | 
			
		||||
 | 
			
		||||
(define* (cumulative-grafts store drv grafts
 | 
			
		||||
| 
						 | 
				
			
			@ -265,7 +264,7 @@ derivations to the corresponding set of grafts."
 | 
			
		|||
                                 #:system system))
 | 
			
		||||
          (state-return grafts))))
 | 
			
		||||
 | 
			
		||||
  (with-cache drv
 | 
			
		||||
  (with-cache (cons (derivation-file-name drv) outputs)
 | 
			
		||||
    (match (non-self-references references drv outputs)
 | 
			
		||||
      (()                                         ;no dependencies
 | 
			
		||||
       (return grafts))
 | 
			
		||||
| 
						 | 
				
			
			@ -282,29 +281,27 @@ derivations to the corresponding set of grafts."
 | 
			
		|||
              ;; applicable to DRV, to avoid creating several identical
 | 
			
		||||
              ;; grafted variants of DRV.
 | 
			
		||||
              (let* ((new    (graft-derivation/shallow store drv applicable
 | 
			
		||||
                                                       #:outputs outputs
 | 
			
		||||
                                                       #:guile guile
 | 
			
		||||
                                                       #:system system))
 | 
			
		||||
 | 
			
		||||
                     ;; Replace references to any of the outputs of DRV,
 | 
			
		||||
                     ;; even if that's more than needed.  This is so that
 | 
			
		||||
                     ;; the result refers only to the outputs of NEW and
 | 
			
		||||
                     ;; not to those of DRV.
 | 
			
		||||
                     (grafts (append (map (lambda (output)
 | 
			
		||||
                                            (graft
 | 
			
		||||
                                              (origin drv)
 | 
			
		||||
                                              (origin-output output)
 | 
			
		||||
                                              (replacement new)
 | 
			
		||||
                                              (replacement-output output)))
 | 
			
		||||
                                          (derivation-output-names drv))
 | 
			
		||||
                                          outputs)
 | 
			
		||||
                                     grafts)))
 | 
			
		||||
                (return grafts))))))))))
 | 
			
		||||
 | 
			
		||||
(define* (graft-derivation store drv grafts
 | 
			
		||||
                           #:key (guile (%guile-for-build))
 | 
			
		||||
                           #:key
 | 
			
		||||
                           (guile (%guile-for-build))
 | 
			
		||||
                           (outputs (derivation-output-names drv))
 | 
			
		||||
                           (system (%current-system)))
 | 
			
		||||
  "Applied GRAFTS to DRV and all its dependencies, recursively.  That is, if
 | 
			
		||||
GRAFTS apply only indirectly to DRV, graft the dependencies of DRV, and graft
 | 
			
		||||
DRV itself to refer to those grafted dependencies."
 | 
			
		||||
  "Apply GRAFTS to the OUTPUTS of DRV and all their dependencies, recursively.
 | 
			
		||||
That is, if GRAFTS apply only indirectly to DRV, graft the dependencies of
 | 
			
		||||
DRV, and graft DRV itself to refer to those grafted dependencies."
 | 
			
		||||
 | 
			
		||||
  ;; First, pre-compute the dependency tree of the outputs of DRV.  Do this
 | 
			
		||||
  ;; upfront to have as much parallelism as possible when querying substitute
 | 
			
		||||
| 
						 | 
				
			
			@ -314,6 +311,7 @@ DRV itself to refer to those grafted dependencies."
 | 
			
		|||
 | 
			
		||||
  (match (run-with-state
 | 
			
		||||
             (cumulative-grafts store drv grafts references
 | 
			
		||||
                                #:outputs outputs
 | 
			
		||||
                                #:guile guile #:system system)
 | 
			
		||||
           vlist-null)                            ;the initial cache
 | 
			
		||||
    ((first . rest)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -74,7 +74,14 @@ and the other containing arguments for the command to be executed."
 | 
			
		|||
      (let* ((opts (parse-command-line args %options '(())
 | 
			
		||||
                                       #:argument-handler
 | 
			
		||||
                                       handle-argument))
 | 
			
		||||
             (pid  (assoc-ref opts 'pid)))
 | 
			
		||||
             (pid  (assoc-ref opts 'pid))
 | 
			
		||||
             (environment (filter-map (lambda (name)
 | 
			
		||||
                                        (let ((value (getenv name)))
 | 
			
		||||
                                          (and value (cons name value))))
 | 
			
		||||
                                      ;; Pass through the TERM environment
 | 
			
		||||
                                      ;; variable to inform processes about
 | 
			
		||||
                                      ;; the capabilities of the terminal.
 | 
			
		||||
                                      '("TERM"))))
 | 
			
		||||
 | 
			
		||||
        (unless pid
 | 
			
		||||
          (leave (_ "no pid specified~%")))
 | 
			
		||||
| 
						 | 
				
			
			@ -89,6 +96,10 @@ and the other containing arguments for the command to be executed."
 | 
			
		|||
                        (lambda ()
 | 
			
		||||
                          (match command
 | 
			
		||||
                            ((program . program-args)
 | 
			
		||||
                             (for-each (match-lambda
 | 
			
		||||
                                         ((name . value)
 | 
			
		||||
                                          (setenv name value)))
 | 
			
		||||
                                       environment)
 | 
			
		||||
                             (apply execlp program program program-args)))))))
 | 
			
		||||
          (unless (zero? result)
 | 
			
		||||
            (leave (_ "exec failed with status ~d~%") result)))))))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										118
									
								
								tests/grafts.scm
									
										
									
									
									
								
							
							
						
						
									
										118
									
								
								tests/grafts.scm
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 | 
			
		||||
;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -43,6 +43,9 @@
 | 
			
		|||
(define %mkdir
 | 
			
		||||
  (bootstrap-binary "mkdir"))
 | 
			
		||||
 | 
			
		||||
(define make-derivation-input
 | 
			
		||||
  (@@ (guix derivations) make-derivation-input))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
(test-begin "grafts")
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -241,7 +244,18 @@
 | 
			
		|||
                (replacement p1r)
 | 
			
		||||
                (replacement-output "ONE")))
 | 
			
		||||
         (p3d (graft-derivation %store p3 (list p1g))))
 | 
			
		||||
    (and (build-derivations %store (list p3d))
 | 
			
		||||
 | 
			
		||||
    (and (not (find (lambda (input)
 | 
			
		||||
                      ;; INPUT should not be P2:zzz since the result of P3
 | 
			
		||||
                      ;; does not depend on it.  See
 | 
			
		||||
                      ;; <http://bugs.gnu.org/24886>.
 | 
			
		||||
                      (and (string=? (derivation-input-path input)
 | 
			
		||||
                                     (derivation-file-name p2))
 | 
			
		||||
                           (member "zzz"
 | 
			
		||||
                                   (derivation-input-sub-derivations input))))
 | 
			
		||||
                    (derivation-inputs p3d)))
 | 
			
		||||
 | 
			
		||||
         (build-derivations %store (list p3d))
 | 
			
		||||
         (let ((out (derivation->output-path (pk 'p2d p3d))))
 | 
			
		||||
           (and (not (string=? (readlink out)
 | 
			
		||||
                               (derivation->output-path p2 "aaa")))
 | 
			
		||||
| 
						 | 
				
			
			@ -249,6 +263,106 @@
 | 
			
		|||
                          (readlink (string-append out "/two")))
 | 
			
		||||
                (file-exists? (string-append out "/one/replacement")))))))
 | 
			
		||||
 | 
			
		||||
(test-assert "graft-derivation with #:outputs"
 | 
			
		||||
  ;; Call 'graft-derivation' with a narrowed set of outputs passed as
 | 
			
		||||
  ;; #:outputs.
 | 
			
		||||
  (let* ((p1  (build-expression->derivation
 | 
			
		||||
               %store "p1"
 | 
			
		||||
               `(let ((one (assoc-ref %outputs "one"))
 | 
			
		||||
                      (two (assoc-ref %outputs "two")))
 | 
			
		||||
                  (mkdir one)
 | 
			
		||||
                  (mkdir two))
 | 
			
		||||
               #:outputs '("one" "two")))
 | 
			
		||||
         (p1r (build-expression->derivation
 | 
			
		||||
               %store "P1"
 | 
			
		||||
               `(let ((other (assoc-ref %outputs "ONE")))
 | 
			
		||||
                  (mkdir other)
 | 
			
		||||
                  (call-with-output-file (string-append other "/replacement")
 | 
			
		||||
                    (const #t)))
 | 
			
		||||
               #:outputs '("ONE")))
 | 
			
		||||
         (p2  (build-expression->derivation
 | 
			
		||||
               %store "p2"
 | 
			
		||||
               `(let ((aaa (assoc-ref %outputs "aaa"))
 | 
			
		||||
                      (zzz (assoc-ref %outputs "zzz")))
 | 
			
		||||
                  (mkdir zzz) (chdir zzz)
 | 
			
		||||
                  (mkdir aaa) (chdir aaa)
 | 
			
		||||
                  (symlink (assoc-ref %build-inputs "p1:two") "two"))
 | 
			
		||||
               #:outputs '("aaa" "zzz")
 | 
			
		||||
               #:inputs `(("p1:one" ,p1 "one")
 | 
			
		||||
                          ("p1:two" ,p1 "two"))))
 | 
			
		||||
         (p1g (graft
 | 
			
		||||
                (origin p1)
 | 
			
		||||
                (origin-output "one")
 | 
			
		||||
                (replacement p1r)
 | 
			
		||||
                (replacement-output "ONE")))
 | 
			
		||||
         (p2g (graft-derivation %store p2 (list p1g)
 | 
			
		||||
                                #:outputs '("aaa"))))
 | 
			
		||||
    ;; P2:aaa depends on P1:two, but not on P1:one, so nothing to graft.
 | 
			
		||||
    (eq? p2g p2)))
 | 
			
		||||
 | 
			
		||||
(test-equal "graft-derivation, unused outputs not depended on"
 | 
			
		||||
  '("aaa")
 | 
			
		||||
 | 
			
		||||
  ;; Make sure that the result of 'graft-derivation' does not pull outputs
 | 
			
		||||
  ;; that are irrelevant to the grafting process.  See
 | 
			
		||||
  ;; <http://bugs.gnu.org/24886>.
 | 
			
		||||
  (let* ((p1  (build-expression->derivation
 | 
			
		||||
               %store "p1"
 | 
			
		||||
               `(let ((one (assoc-ref %outputs "one"))
 | 
			
		||||
                      (two (assoc-ref %outputs "two")))
 | 
			
		||||
                  (mkdir one)
 | 
			
		||||
                  (mkdir two))
 | 
			
		||||
               #:outputs '("one" "two")))
 | 
			
		||||
         (p1r (build-expression->derivation
 | 
			
		||||
               %store "P1"
 | 
			
		||||
               `(let ((other (assoc-ref %outputs "ONE")))
 | 
			
		||||
                  (mkdir other)
 | 
			
		||||
                  (call-with-output-file (string-append other "/replacement")
 | 
			
		||||
                    (const #t)))
 | 
			
		||||
               #:outputs '("ONE")))
 | 
			
		||||
         (p2  (build-expression->derivation
 | 
			
		||||
               %store "p2"
 | 
			
		||||
               `(let ((aaa (assoc-ref %outputs "aaa"))
 | 
			
		||||
                      (zzz (assoc-ref %outputs "zzz")))
 | 
			
		||||
                  (mkdir zzz) (chdir zzz)
 | 
			
		||||
                  (symlink (assoc-ref %build-inputs "p1:two") "two")
 | 
			
		||||
                  (mkdir aaa) (chdir aaa)
 | 
			
		||||
                  (symlink (assoc-ref %build-inputs "p1:one") "one"))
 | 
			
		||||
               #:outputs '("aaa" "zzz")
 | 
			
		||||
               #:inputs `(("p1:one" ,p1 "one")
 | 
			
		||||
                          ("p1:two" ,p1 "two"))))
 | 
			
		||||
         (p1g (graft
 | 
			
		||||
                (origin p1)
 | 
			
		||||
                (origin-output "one")
 | 
			
		||||
                (replacement p1r)
 | 
			
		||||
                (replacement-output "ONE")))
 | 
			
		||||
         (p2g (graft-derivation %store p2 (list p1g)
 | 
			
		||||
                                #:outputs '("aaa"))))
 | 
			
		||||
 | 
			
		||||
    ;; Here P2G should only depend on P1:one and P1R:one; it must not depend
 | 
			
		||||
    ;; on P1:two or P1R:two since these are unused in the grafting process.
 | 
			
		||||
    (and (not (eq? p2g p2))
 | 
			
		||||
         (let* ((inputs      (derivation-inputs p2g))
 | 
			
		||||
                (match-input (lambda (drv)
 | 
			
		||||
                               (lambda (input)
 | 
			
		||||
                                 (string=? (derivation-input-path input)
 | 
			
		||||
                                           (derivation-file-name drv)))))
 | 
			
		||||
                (p1-inputs   (filter (match-input p1) inputs))
 | 
			
		||||
                (p1r-inputs  (filter (match-input p1r) inputs))
 | 
			
		||||
                (p2-inputs   (filter (match-input p2) inputs)))
 | 
			
		||||
           (and (equal? p1-inputs
 | 
			
		||||
                        (list (make-derivation-input (derivation-file-name p1)
 | 
			
		||||
                                                     '("one"))))
 | 
			
		||||
                (equal? p1r-inputs
 | 
			
		||||
                        (list
 | 
			
		||||
                         (make-derivation-input (derivation-file-name p1r)
 | 
			
		||||
                                                '("ONE"))))
 | 
			
		||||
                (equal? p2-inputs
 | 
			
		||||
                        (list
 | 
			
		||||
                         (make-derivation-input (derivation-file-name p2)
 | 
			
		||||
                                                '("aaa"))))
 | 
			
		||||
                (derivation-output-names p2g))))))
 | 
			
		||||
 | 
			
		||||
(test-assert "graft-derivation, renaming"         ;<http://bugs.gnu.org/23132>
 | 
			
		||||
  (let* ((build `(begin
 | 
			
		||||
                   (use-modules (guix build utils))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -452,6 +452,15 @@
 | 
			
		|||
                 #t)))
 | 
			
		||||
            entries))))
 | 
			
		||||
 | 
			
		||||
(test-assert "read-utmpx, EOF"
 | 
			
		||||
  (eof-object? (read-utmpx (%make-void-port "r"))))
 | 
			
		||||
 | 
			
		||||
(unless (access? "/var/run/utmpx" O_RDONLY)
 | 
			
		||||
  (tes-skip 1))
 | 
			
		||||
(test-assert "read-utmpx"
 | 
			
		||||
  (let ((result (call-with-input-file "/var/run/utmpx" read-utmpx)))
 | 
			
		||||
    (or (utmpx? result) (eof-object? result))))
 | 
			
		||||
 | 
			
		||||
(test-end)
 | 
			
		||||
 | 
			
		||||
(false-if-exception (delete-file temp-file))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue