diff options
46 files changed, 844 insertions, 368 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index 532ea51dd2..9d835a8250 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -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 \ diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm index 70bf8f9573..03898dd263 100644 --- a/gnu/packages/calendar.scm +++ b/gnu/packages/calendar.scm @@ -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 diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index f5aa7f4faf..f91fdab153 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -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 diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index c2efc072bf..2638b229df 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -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") diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index e44dae784d..d3e64c04f6 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -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") diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index 7924827822..ee90c38eb7 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -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))) diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm index 904d7d9766..15eb5bc084 100644 --- a/gnu/packages/gimp.scm +++ b/gnu/packages/gimp.scm @@ -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) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index b0e0c261bc..cac6f02a30 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -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 " diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 678dc4e27f..7758f27f8b 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -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 diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 917f1357c7..393ee886db 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -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 diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 637819947c..54b7dd6e22 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -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) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index d7df4f6bad..5d53dffeec 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -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) diff --git a/gnu/packages/libupnp.scm b/gnu/packages/libupnp.scm index ea4d1bd25e..330ae6deb6 100644 --- a/gnu/packages/libupnp.scm +++ b/gnu/packages/libupnp.scm @@ -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 diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index dbbe629bca..2318ae9b64 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -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 _ diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 0c88059dca..5b3ed740d9 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -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/"))) diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index 617dffc937..2df7816b59 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -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" diff --git a/gnu/packages/orpheus.scm b/gnu/packages/orpheus.scm index 39118c9abc..d672ebce75 100644 --- a/gnu/packages/orpheus.scm +++ b/gnu/packages/orpheus.scm @@ -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") diff --git a/gnu/packages/patches/gnupg-test-segfault-on-32bit-arch.patch b/gnu/packages/patches/gnupg-test-segfault-on-32bit-arch.patch deleted file mode 100644 index 79bb41caaa..0000000000 --- a/gnu/packages/patches/gnupg-test-segfault-on-32bit-arch.patch +++ /dev/null @@ -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 - diff --git a/gnu/packages/patches/khal-disable-failing-tests.patch b/gnu/packages/patches/khal-disable-failing-tests.patch deleted file mode 100644 index e2c65df8ce..0000000000 --- a/gnu/packages/patches/khal-disable-failing-tests.patch +++ /dev/null @@ -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 - diff --git a/gnu/packages/patches/libupnp-CVE-2016-6255.patch b/gnu/packages/patches/libupnp-CVE-2016-6255.patch deleted file mode 100644 index c9a3fa284c..0000000000 --- a/gnu/packages/patches/libupnp-CVE-2016-6255.patch +++ /dev/null @@ -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 { diff --git a/gnu/packages/patches/libupnp-CVE-2016-8863.patch b/gnu/packages/patches/libupnp-CVE-2016-8863.patch deleted file mode 100644 index 9978b39487..0000000000 --- a/gnu/packages/patches/libupnp-CVE-2016-8863.patch +++ /dev/null @@ -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 - diff --git a/gnu/packages/patches/openjpeg-CVE-2016-9572-CVE-2016-9573.patch b/gnu/packages/patches/openjpeg-CVE-2016-9572-CVE-2016-9573.patch new file mode 100644 index 0000000000..545b5d0a71 --- /dev/null +++ b/gnu/packages/patches/openjpeg-CVE-2016-9572-CVE-2016-9573.patch @@ -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; + } + diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 7e086139c9..91e4d5675d 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -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 diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index cb8b670757..e2342266d6 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -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") diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm index c9a35ca3b6..e69df7d832 100644 --- a/gnu/packages/shellutils.scm +++ b/gnu/packages/shellutils.scm @@ -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 diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm index 429fe196de..4b026b93cb 100644 --- a/gnu/packages/sync.scm +++ b/gnu/packages/sync.scm @@ -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+))) diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index 20897860d2..e90ee6847f 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -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))) diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm index 6f26f404be..c7f97ab1b4 100644 --- a/gnu/packages/tor.scm +++ b/gnu/packages/tor.scm @@ -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 diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index e0de564e14..8ba229e582 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -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" diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index c8f8c63ecf..67b9797bbb 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -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+))) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 7771b16534..02d0c94119 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -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 diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm index fc5cd6ca95..ec84bdeedb 100644 --- a/gnu/packages/xiph.scm +++ b/gnu/packages/xiph.scm @@ -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 diff --git a/gnu/services.scm b/gnu/services.scm index f72d4d5785..e645889d30 100644 --- a/gnu/services.scm +++ b/gnu/services.scm @@ -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. diff --git a/gnu/services/cups.scm b/gnu/services/cups.scm index df1843e438..70b858479a 100644 --- a/gnu/services/cups.scm +++ b/gnu/services/cups.scm @@ -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)) diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm index c1381405d8..30b1672d33 100644 --- a/gnu/services/mail.scm +++ b/gnu/services/mail.scm @@ -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") diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 8f136f0dc1..f7412ff29e 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -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")) diff --git a/gnu/services/spice.scm b/gnu/services/spice.scm index bd0a538346..2f9dfd57ac 100644 --- a/gnu/services/spice.scm +++ b/gnu/services/spice.scm @@ -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." diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm index 6da612da67..58c35c9f5e 100644 --- a/gnu/services/ssh.scm +++ b/gnu/services/ssh.scm @@ -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) diff --git a/gnu/services/vpn.scm b/gnu/services/vpn.scm index f577e0851e..844a11b3d3 100644 --- a/gnu/services/vpn.scm +++ b/gnu/services/vpn.scm @@ -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) diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm index 8ab861bf73..2959802c96 100644 --- a/gnu/system/mapped-devices.scm +++ b/gnu/system/mapped-devices.scm @@ -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> diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm index 2687a6cdb8..a725ca90f3 100644 --- a/gnu/tests/base.scm +++ b/gnu/tests/base.scm @@ -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 diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index 475fc96490..b68c48a05a 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -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 diff --git a/guix/grafts.scm b/guix/grafts.scm index e14a40f8d1..11885db226 100644 --- a/guix/grafts.scm +++ b/guix/grafts.scm @@ -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) diff --git a/guix/scripts/container/exec.scm b/guix/scripts/container/exec.scm index 10e70568cc..d6d267daff 100644 --- a/guix/scripts/container/exec.scm +++ b/guix/scripts/container/exec.scm @@ -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))))))) diff --git a/tests/grafts.scm b/tests/grafts.scm index 6454a03b1f..08f05c0f75 100644 --- a/tests/grafts.scm +++ b/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)) diff --git a/tests/syscalls.scm b/tests/syscalls.scm index fb2c8e7100..92e02f3303 100644 --- a/tests/syscalls.scm +++ b/tests/syscalls.scm @@ -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)) |