From 90ad5c8836138b7fd4d1bd0243dfa8b30ae0cf21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 16 Jan 2017 21:59:00 +0100 Subject: [PATCH 01/22] grafts: Actually cache grafts during the derivation DAG traversal. This fixes a regression introduced in d38bc9a9f6feefc465964531520fee5663a12f48 whereby the cache was effectively disabled. Reported by Thomas Danckaert . * guix/grafts.scm (with-cache): In the cache miss case, wrap body in 'mbegin'. --- guix/grafts.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/guix/grafts.scm b/guix/grafts.scm index 2006d3908e..b60c8cfd90 100644 --- a/guix/grafts.scm +++ b/guix/grafts.scm @@ -222,8 +222,9 @@ (define-syntax-rule (with-cache key exp ...) (return result)) (#f ;cache miss (mlet %state-monad ((result (begin exp ...))) - (set-current-state (vhash-consq key result cache)) - (return result)))))) + (mbegin %state-monad + (set-current-state (vhash-consq key result cache)) + (return result))))))) (define* (cumulative-grafts store drv grafts references From 0aeed5e310504a9ef2cf6a2b2a7e76086eb8c2fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 16 Jan 2017 22:05:43 +0100 Subject: [PATCH 02/22] grafts: Preserve the cache across recursive calls. Before this commit, we'd lose the cache across recursive calls to 'cumulative-grafts', which isn't great performance-wise. This bug was already present before d38bc9a9f6feefc465964531520fee5663a12f48. * guix/grafts.scm (with-cache): In the miss case, call 'current-state' after EXP has been evaluated. --- guix/grafts.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/guix/grafts.scm b/guix/grafts.scm index b60c8cfd90..e14a40f8d1 100644 --- a/guix/grafts.scm +++ b/guix/grafts.scm @@ -221,7 +221,8 @@ (define-syntax-rule (with-cache key exp ...) ((_ . result) ;cache hit (return result)) (#f ;cache miss - (mlet %state-monad ((result (begin exp ...))) + (mlet %state-monad ((result (begin exp ...)) + (cache (current-state))) (mbegin %state-monad (set-current-state (vhash-consq key result cache)) (return result))))))) From fc11b0d3b299aafd81f88135d51dc3b911d7be7f Mon Sep 17 00:00:00 2001 From: Thomas Danckaert Date: Wed, 11 Jan 2017 19:33:02 +0100 Subject: [PATCH 03/22] gnu: kdevelop: Update to 5.0.3. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/kde.scm (kdevelop, kdevplatform): Update to 5.0.3. Signed-off-by: Ludovic Courtès --- gnu/packages/kde.scm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm index db8609a645..5f227acef8 100644 --- a/gnu/packages/kde.scm +++ b/gnu/packages/kde.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Efraim Flashner -;;; Copyright © 2016 Thomas Danckaert +;;; Copyright © 2016, 2017 Thomas Danckaert ;;; ;;; This file is part of GNU Guix. ;;; @@ -39,7 +39,7 @@ (define-module (gnu packages kde) (define-public kdevelop (package (name "kdevelop") - (version "5.0.2") + (version "5.0.3") (source (origin (method url-fetch) @@ -48,7 +48,7 @@ (define-public kdevelop version ".tar.xz")) (sha256 (base32 - "0rl6csmzf14gf0r0mk7z2lj7cq8fggf5qmlbxq6j68vp2q0pj0cv")))) + "00gn2c66pyd9qaa0zhn2lqam0zsg7fbyi13hk32wclxq73y8v98p")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -145,14 +145,14 @@ (define-public kdevelop-pg-qt (define-public kdevplatform (package (name "kdevplatform") - (version "5.0.2") + (version "5.0.3") (source (origin (method url-fetch) (uri (string-append "https://github.com/KDE/kdevplatform/archive/v" version ".tar.gz")) (sha256 (base32 - "1m8c0ixv91diyy9bvq53d4jik4zrnf7bix7clad4ywxnlpcs4ahr")) + "1k40wg08iwyswnpbs4bfh4yq38pp0qi78shjh4pf7yfa2kbid30j")) (file-name (string-append name "-" version ".tar.gz")))) (build-system cmake-build-system) (native-inputs From 2f4d08ee7f897e254c6e533ad2d69c7fe4998f38 Mon Sep 17 00:00:00 2001 From: Thomas Danckaert Date: Wed, 11 Jan 2017 19:33:03 +0100 Subject: [PATCH 04/22] gnu: kdevelop: Set more paths in wrapper script. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/kde.scm (kdevelop)[arguments]: Add more paths in wrap-executable: add "/share" output of kdevplatform and kcmutils to $XDG_DATA_DIRS; add "lib/plugins" from user profile to $QT_PLUGIN_PATH. Signed-off-by: Ludovic Courtès --- gnu/packages/kde.scm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm index 5f227acef8..aef56bb202 100644 --- a/gnu/packages/kde.scm +++ b/gnu/packages/kde.scm @@ -98,15 +98,18 @@ (define-public kdevelop (let* ((out (assoc-ref outputs "out")) (kdevplatform (assoc-ref inputs "kdevplatform")) (kio (assoc-ref inputs "kio")) + (kcmutils (assoc-ref inputs "kcmutils")) (qtquickcontrols (assoc-ref inputs "qtquickcontrols")) (qtdeclarative (assoc-ref inputs "qtdeclarative")) - (plugins "/lib/plugins") + (profile "$HOME/.guix-profile") (qml "/qml")) (wrap-program (string-append out "/bin/kdevelop") + `("XDG_DATA_DIRS" ":" prefix + ,(map (lambda (s) (string-append s "/share")) + (list profile out kdevplatform kcmutils))) `("QT_PLUGIN_PATH" ":" prefix - (,(string-append out plugins) - ,(string-append kdevplatform plugins) - ,(string-append kio plugins))) + ,(map (lambda (s) (string-append s "/lib/plugins")) + (list profile out kdevplatform kio))) `("QML2_IMPORT_PATH" ":" prefix (,(string-append qtquickcontrols qml) ,(string-append qtdeclarative qml)))))))))) From 138adbbe051bcc83210b3197f62b8f7f70b0f16c Mon Sep 17 00:00:00 2001 From: Thomas Danckaert Date: Wed, 11 Jan 2017 19:33:05 +0100 Subject: [PATCH 05/22] gnu: Add python-autopep8. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python.scm (python-autopep8, python2-autopep8): New variables. Signed-off-by: Ludovic Courtès --- gnu/packages/python.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index ddf276de09..a9792afe25 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -4157,6 +4157,34 @@ (define-public python-alembic (define-public python2-alembic (package-with-python2 python-alembic)) +(define-public python-autopep8 + (package + (name "python-autopep8") + (version "1.2.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "autopep8" version)) + (sha256 + (base32 + "18parm383lfn42a00wklv3qf20p4v277f1x3cn58x019dqk1xqrq")))) + (build-system python-build-system) + (propagated-inputs + `(("python-pep8" ,python-pep8))) + (home-page "https://github.com/hhatto/autopep8") + (synopsis "Format Python code according to the PEP 8 style guide") + (description + "@code{autopep8} automatically formats Python code to conform to +the PEP 8 style guide. It uses the pycodestyle utility to determine +what parts of the code needs to be formatted. @code{autopep8} is +capable of fixing most of the formatting issues that can be reported +by pycodestyle.") + (license (license:non-copyleft + "https://github.com/hhatto/autopep8/blob/master/LICENSE")))) + +(define-public python2-autopep8 + (package-with-python2 python-autopep8)) + (define-public python-distutils-extra (package (name "python-distutils-extra") From 8fe6b9327d3598ae5fe5c0f71895f1fdb37c0516 Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Sun, 15 Jan 2017 12:30:09 +0100 Subject: [PATCH 06/22] gnu: camlzip: Install both modules. * gnu/packages/ocaml.scm (camlzip) [arguments]: Install both zip and camlzip modules. --- gnu/packages/ocaml.scm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 93020f1c06..f8609bdc9e 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -804,10 +804,19 @@ (define-public camlzip `(#:phases (modify-phases %standard-phases (delete 'configure) - (add-before 'install 'fix-install-name - (lambda* (#:key #:allow-other-keys) - (substitute* "Makefile" - (("install zip") "install camlzip"))))) + (add-after 'install 'install-camlzip + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (dir (string-append out "/lib/ocaml/site-lib/camlzip"))) + (mkdir-p dir) + (call-with-output-file (string-append dir "/META") + (lambda (port) + (format port "version=\"1.06\"\n") + (format port "requires=\"unix\"\n") + (format port "archive(byte)=\"zip.cma\"\n") + (format port "archive(native)=\"zip.cmxa\"\n") + (format port "archive(native,plugin)=\"zip.cmxs\"\n") + (format port "directory=\"../zip\"\n"))))))) #:install-target "install-findlib" #:make-flags (list "all" "allopt" From beeb2d419b23d941c58c5a653ab9fe5c14247cef Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Fri, 30 Dec 2016 11:45:15 +0100 Subject: [PATCH 07/22] gnu: Add ocaml-fmt. * gnu/packages/ocaml.scm (ocaml-fmt): New variable. --- gnu/packages/ocaml.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index f8609bdc9e..ace8424a9d 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -1227,3 +1227,31 @@ (define-public ocaml-cmdliner generation. It supports programs with single or multiple commands and respects most of the POSIX and GNU conventions.") (license license:bsd-3))) + +(define-public ocaml-fmt + (package + (name "ocaml-fmt") + (version "0.8.0") + (source + (origin + (method url-fetch) + (uri (string-append "http://erratique.ch/software/fmt/releases/fmt-" + version ".tbz")) + (sha256 (base32 + "16y7ibndnairb53j8a6qgipyqwjxncn4pl9jiw5bxjfjm59108px")))) + (build-system ocaml-build-system) + (native-inputs `(("opam" ,opam) + ("topkg" ,ocaml-topkg))) + (propagated-inputs `(("result" ,ocaml-result) + ("cmdliner" ,ocaml-cmdliner))) + (arguments `(#:tests? #f + #:build-flags (list "build" "--with-base-unix" "true" + "--with-cmdliner" "true") + #:phases + (modify-phases %standard-phases + (delete 'configure)))) + (home-page "http://erratique.ch/software/fmt") + (synopsis "OCaml Format pretty-printer combinators") + (description "Fmt exposes combinators to devise Format pretty-printing +functions.") + (license license:isc))) From f46bceb6708d76fc748e2d208c73ab8584b81504 Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Fri, 30 Dec 2016 11:46:33 +0100 Subject: [PATCH 08/22] gnu: Add ocaml-astring. * gnu/packages/ocaml.scm (ocaml-astring): New variable. --- gnu/packages/ocaml.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index ace8424a9d..096c3f1894 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -1255,3 +1255,33 @@ (define-public ocaml-fmt (description "Fmt exposes combinators to devise Format pretty-printing functions.") (license license:isc))) + +(define-public ocaml-astring + (package + (name "ocaml-astring") + (version "0.8.3") + (source + (origin + (method url-fetch) + (uri (string-append "http://erratique.ch/software/astring/releases/astring-" + version ".tbz")) + (sha256 (base32 + "0ixjwc3plrljvj24za3l9gy0w30lsbggp8yh02lwrzw61ls4cri0")))) + (build-system ocaml-build-system) + (native-inputs `(("opam" ,opam) + ("topkg" ,ocaml-topkg))) + (arguments `(#:tests? #f + #:build-flags (list "build") + #:phases + (modify-phases %standard-phases + (delete 'configure)))) + (home-page "http://erratique.ch/software/astring") + (synopsis "Alternative String module for OCaml") + (description "Astring exposes an alternative String module for OCaml. This +module balances minimality and expressiveness for basic, index-free, string +processing and provides types and functions for substrings, string sets and +string maps. The String module exposed by Astring has exception safe functions, +removes deprecated and rarely used functions, alters some signatures and names, +adds a few missing functions and fully exploits OCaml's newfound string +immutability.") + (license license:isc))) From 69705efe9414c1964bcab7c214688ca153529385 Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Fri, 30 Dec 2016 11:47:27 +0100 Subject: [PATCH 09/22] gnu: Add ocaml-alcotest. * gnu/packages/ocaml.scm (ocaml-alcotest): New variable. --- gnu/packages/ocaml.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 096c3f1894..cfe2eb1dac 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -1285,3 +1285,34 @@ (define-public ocaml-astring adds a few missing functions and fully exploits OCaml's newfound string immutability.") (license license:isc))) + +(define-public ocaml-alcotest + (package + (name "ocaml-alcotest") + (version "0.7.2") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/mirage/alcotest/releases/" + "download/" version "/alcotest-" version ".tbz")) + (sha256 + (base32 + "0g5lzk0gpfx4q8hyhr460gr4lab5wakfxsmhfwvb3yinxwzs95gc")))) + (build-system ocaml-build-system) + (arguments `(#:tests? #f + #:build-flags (list "build") + #:phases + (modify-phases %standard-phases + (delete 'configure)))) + (native-inputs `(("opam" ,opam) + ("topkg" ,ocaml-topkg))) + (propagated-inputs `(("fmt" ,ocaml-fmt) + ("astring" ,ocaml-astring))) + (home-page "https://github.com/mirage/alcotest") + (synopsis "Lightweight OCaml test framework") + (description "Alcotest exposes simple interface to perform unit tests. It +exposes a simple TESTABLE module type, a check function to assert test +predicates and a run function to perform a list of unit -> unit test callbacks. +Alcotest provides a quiet and colorful output where only faulty runs are fully +displayed at the end of the run (with the full logs ready to inspect), with a +simple (yet expressive) query language to select the tests to run.") + (license license:isc))) From 0a7b43a8187f8f374ab1a696fedf182679a5ae65 Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Fri, 30 Dec 2016 11:50:19 +0100 Subject: [PATCH 10/22] gnu: Add ocaml-ppx-tools. * gnu/packages/ocaml.scm (ocaml-ppx-tools): New variable. --- gnu/packages/ocaml.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index cfe2eb1dac..16d56febd1 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -1316,3 +1316,22 @@ (define-public ocaml-alcotest displayed at the end of the run (with the full logs ready to inspect), with a simple (yet expressive) query language to select the tests to run.") (license license:isc))) + +(define-public ocaml-ppx-tools + (package + (name "ocaml-ppx-tools") + (version "5.0+4.02.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/alainfrisch/ppx_tools/archive/" + version ".tar.gz")) + (sha256 (base32 + "0rjg4rngi8k9873z4zq95zn9hj8qyw1vcrf11y15aqasfpqq16rc")))) + (build-system ocaml-build-system) + (arguments `(#:phases (modify-phases %standard-phases (delete 'configure)) + #:tests? #f)) + (home-page "https://github.com/alainfrisch/ppx_tools") + (synopsis "Tools for authors of ppx rewriters and other syntactic tools") + (description "Tools for authors of ppx rewriters and other syntactic tools.") + (license license:expat))) From 1342fce1025eb3c9afca945f92ea05003a272434 Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Fri, 30 Dec 2016 11:51:50 +0100 Subject: [PATCH 11/22] gnu: Add ocaml-react. * gnu/packages/ocaml.scm (ocaml-react): New variable. --- gnu/packages/ocaml.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 16d56febd1..1fb2ccfb57 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -1335,3 +1335,29 @@ (define-public ocaml-ppx-tools (synopsis "Tools for authors of ppx rewriters and other syntactic tools") (description "Tools for authors of ppx rewriters and other syntactic tools.") (license license:expat))) + +(define-public ocaml-react + (package + (name "ocaml-react") + (version "1.2.0") + (source + (origin + (method url-fetch) + (uri (string-append "http://erratique.ch/software/react/releases/react-" + version ".tbz")) + (sha256 (base32 + "0knhgbngphv5sp1yskfd97crf169qhpc0igr6w7vqw0q36lswyl8")))) + (build-system ocaml-build-system) + (native-inputs `(("opam" ,opam))) + (arguments `(#:tests? #f + #:build-flags (list "native=true" "native-dynlink=true") + #:phases + (modify-phases %standard-phases + (delete 'configure)))) + (home-page "http://erratique.ch/software/react") + (synopsis "Declarative events and signals for OCaml") + (description "React is an OCaml module for functional reactive programming +(FRP). It provides support to program with time varying values: declarative +events and signals. React doesn't define any primitive event or signal, it +lets the client choose the concrete timeline.") + (license license:bsd-3))) From 37f17e2a1e797d3d1ea12da5afd69526e0abfd3e Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Fri, 30 Dec 2016 11:53:24 +0100 Subject: [PATCH 12/22] gnu: Add ocaml-ssl. * gnu/packages/ocaml.scm (ocaml-ssl): New variable. --- gnu/packages/ocaml.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 1fb2ccfb57..d73bad6552 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -44,6 +44,7 @@ (define-module (gnu packages ocaml) #:use-module (gnu packages tex) #:use-module (gnu packages texinfo) #:use-module (gnu packages time) + #:use-module (gnu packages tls) #:use-module (gnu packages version-control) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -1361,3 +1362,35 @@ (define-public ocaml-react events and signals. React doesn't define any primitive event or signal, it lets the client choose the concrete timeline.") (license license:bsd-3))) + +(define-public ocaml-ssl + (package + (name "ocaml-ssl") + (version "0.5.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/savonet/ocaml-ssl/archive/" + version ".tar.gz")) + (sha256 (base32 + "1ds5gzyzpcgwn7h40dmjkll7g990cr82ay05b2a7nrclvv6fdpg8")))) + (build-system ocaml-build-system) + (arguments `(#:tests? #f + #:make-flags (list "OCAMLFIND_LDCONF=ignore") + #:phases + (modify-phases %standard-phases + (add-before 'configure 'bootstrap + (lambda* (#:key #:allow-other-keys) + (system* "./bootstrap") + (substitute* "src/OCamlMakefile" + (("/bin/sh") (which "bash"))) + (substitute* "configure" + (("/bin/sh") (which "bash")))))))) + (native-inputs `(("autoconf" ,autoconf) + ("automake" ,automake) + ("which" ,which))) + (propagated-inputs `(("openssl" ,openssl))) + (home-page "https://github.com/savonet/ocaml-ssl/") + (synopsis "OCaml bindings for OpenSSL") + (description "OCaml bindings for OpenSSL.") + (license license:lgpl2.1))) From 1fdfbadff0c69efc3c5e5b5f013e494f6289c18a Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Fri, 30 Dec 2016 11:55:04 +0100 Subject: [PATCH 13/22] gnu: Add ocaml-lwt. * gnu/packages/ocaml.scm (ocaml-lwt): New variable. --- gnu/packages/ocaml.scm | 49 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index d73bad6552..9a70c47536 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -32,8 +32,10 @@ (define-module (gnu packages ocaml) #:use-module (gnu packages emacs) #:use-module (gnu packages gcc) #:use-module (gnu packages ghostscript) + #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) + #:use-module (gnu packages libevent) #:use-module (gnu packages lynx) #:use-module (gnu packages m4) #:use-module (gnu packages multiprecision) @@ -1394,3 +1396,50 @@ (define-public ocaml-ssl (synopsis "OCaml bindings for OpenSSL") (description "OCaml bindings for OpenSSL.") (license license:lgpl2.1))) + +(define-public ocaml-lwt + (package + (name "ocaml-lwt") + (version "2.6.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/ocsigen/lwt/archive/" version + ".tar.gz")) + (sha256 (base32 + "1gbw0g8a5a4b16diqrmlhc8ilnikrm4w3jjm1zq310maqg8z0zxz")))) + (build-system ocaml-build-system) + (arguments + `(#:configure-flags + (list "--enable-ssl" "--enable-glib" "--enable-react" + "--enable-ppx") + #:phases + (modify-phases %standard-phases + (add-before 'configure 'disable-some-checks + (lambda* (#:key #:allow-other-keys) + (substitute* "tests/unix/main.ml" + (("Test_mcast.suite;") "")))) + (add-after 'install 'link-stubs + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (stubs (string-append out "/lib/ocaml/site-lib/stubslibs")) + (lib (string-append out "/lib/ocaml/site-lib/lwt"))) + (mkdir-p stubs) + (symlink (string-append lib "/dlllwt-glib_stubs.so") + (string-append stubs "/dlllwt-glib_stubs.so")) + (symlink (string-append lib "/dlllwt-unix_stubs.so") + (string-append stubs "/dlllwt-unix_stubs.so")))))))) + (native-inputs `(("pkg-config" ,pkg-config) + ("ppx-tools" ,ocaml-ppx-tools))) + (inputs `(("libev" ,libev) + ("glib" ,glib))) + (propagated-inputs `(("result" ,ocaml-result) + ("ocaml-ssl" ,ocaml-ssl) + ("ocaml-react" ,ocaml-react))) + (home-page "https://github.com/ocsigen/lwt") + (synopsis "Cooperative threads and I/O in monadic style") + (description "Lwt provides typed, composable cooperative threads. These +make it easy to run normally-blocking I/O operations concurrently in a single +process. Also, in many cases, Lwt threads can interact without the need for +locks or other synchronization primitives.") + (license license:lgpl2.1))) From b91cfa22e1b9f3e5d3a62ee65ee71a6e708b9b53 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 16 Jan 2017 23:14:13 +0100 Subject: [PATCH 14/22] gnu: Add r-centipede. * gnu/packages/bioinformatics.scm (r-centipede): New variable. --- gnu/packages/bioinformatics.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 4b9cd22f86..b14b7d4caf 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -5159,6 +5159,30 @@ (define-public infernal (supported-systems '("i686-linux" "x86_64-linux")) (license license:bsd-3))) +(define-public r-centipede + (package + (name "r-centipede") + (version "1.2") + (source (origin + (method url-fetch) + (uri (string-append "http://download.r-forge.r-project.org/" + "src/contrib/CENTIPEDE_" version ".tar.gz")) + (sha256 + (base32 + "1hsx6qgwr0i67fhy9257zj7s0ppncph2hjgbia5nn6nfmj0ax6l9")))) + (build-system r-build-system) + (home-page "http://centipede.uchicago.edu/") + (synopsis "Predict transcription factor binding sites") + (description + "CENTIPEDE applies a hierarchical Bayesian mixture model to infer regions +of the genome that are bound by particular transcription factors. It starts +by identifying a set of candidate binding sites, and then aims to classify the +sites according to whether each site is bound or not bound by a transcription +factor. CENTIPEDE is an unsupervised learning algorithm that discriminates +between two different types of motif instances using as much relevant +information as possible.") + (license (list license:gpl2+ license:gpl3+)))) + (define-public r-vegan (package (name "r-vegan") From 384344198dcaa97847e66d3dd82f279ede08d690 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 16 Jan 2017 22:33:46 +0100 Subject: [PATCH 15/22] file-systems: 'file-system-needed-for-boot?' is #t for parents of the store. Suggested by John Darrington . * gnu/system/file-systems.scm (%not-slash): New variable. (file-prefix?): New procedure. (file-system-needed-for-boot?): Use it to check whether FS holds the store. * tests/file-systems.scm ("file-system-needed-for-boot?"): New test. * gnu/tests/install.scm (%separate-store-os)[file-systems]: Remove 'needed-for-boot?' field for "/gnu". --- gnu/system/file-systems.scm | 38 ++++++++++++++++++++++++++++++++----- gnu/tests/install.scm | 5 ++--- tests/file-systems.scm | 24 ++++++++++++++++++++++- 3 files changed, 58 insertions(+), 9 deletions(-) diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index 4cc1221eb8..fa56853fd1 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -95,11 +95,39 @@ (define-record-type* file-system (dependencies file-system-dependencies ; list of (default '()))) ; or -(define-inlinable (file-system-needed-for-boot? fs) - "Return true if FS has the 'needed-for-boot?' flag set, or if it's the root -file system." +(define %not-slash + (char-set-complement (char-set #\/))) + +(define (file-prefix? file1 file2) + "Return #t if FILE1 denotes the name of a file that is a parent of FILE2, +where both FILE1 and FILE2 are absolute file name. For example: + + (file-prefix? \"/gnu\" \"/gnu/store\") + => #t + + (file-prefix? \"/gn\" \"/gnu/store\") + => #f +" + (and (string-prefix? "/" file1) + (string-prefix? "/" file2) + (let loop ((file1 (string-tokenize file1 %not-slash)) + (file2 (string-tokenize file2 %not-slash))) + (match file1 + (() + #t) + ((head1 tail1 ...) + (match file2 + ((head2 tail2 ...) + (and (string=? head1 head2) (loop tail1 tail2))) + (() + #f))))))) + +(define (file-system-needed-for-boot? fs) + "Return true if FS has the 'needed-for-boot?' flag set, or if it holds the +store--e.g., if FS is the root file system." (or (%file-system-needed-for-boot? fs) - (string=? "/" (file-system-mount-point fs)))) + (and (file-prefix? (file-system-mount-point fs) (%store-prefix)) + (not (memq 'bind-mount (file-system-flags fs)))))) (define (file-system->spec fs) "Return a list corresponding to file-system FS that can be passed to the diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm index ae54154c5c..4e8d594054 100644 --- a/gnu/tests/install.scm +++ b/gnu/tests/install.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Ludovic Courtès +;;; Copyright © 2016, 2017 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -257,8 +257,7 @@ (define-os-with-source (%separate-store-os %separate-store-os-source) (device "store-fs") (title 'label) (mount-point "/gnu") - (type "ext4") - (needed-for-boot? #t)) ;definitely! + (type "ext4")) %base-file-systems)) (users %base-user-accounts) (services (cons (service marionette-service-type diff --git a/tests/file-systems.scm b/tests/file-systems.scm index aed27e89c2..fd1599e132 100644 --- a/tests/file-systems.scm +++ b/tests/file-systems.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015 Ludovic Courtès +;;; Copyright © 2015, 2017 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,6 +17,7 @@ ;;; along with GNU Guix. If not, see . (define-module (test-file-systems) + #:use-module (guix store) #:use-module (gnu system file-systems) #:use-module (srfi srfi-64) #:use-module (rnrs bytevectors)) @@ -50,4 +51,25 @@ (define-module (test-file-systems) (string-contains message "invalid UUID") (equal? form '(uuid "foobar")))))) +(test-assert "file-system-needed-for-boot?" + (let-syntax ((dummy-fs (syntax-rules () + ((_ directory) + (file-system + (device "foo") + (mount-point directory) + (type "ext4")))))) + (parameterize ((%store-prefix "/gnu/guix/store")) + (and (file-system-needed-for-boot? (dummy-fs "/")) + (file-system-needed-for-boot? (dummy-fs "/gnu")) + (file-system-needed-for-boot? (dummy-fs "/gnu/guix")) + (file-system-needed-for-boot? (dummy-fs "/gnu/guix/store")) + (not (file-system-needed-for-boot? + (dummy-fs "/gnu/guix/store/foo"))) + (not (file-system-needed-for-boot? (dummy-fs "/gn"))) + (not (file-system-needed-for-boot? + (file-system + (inherit (dummy-fs (%store-prefix))) + (device "/foo") + (flags '(bind-mount read-only))))))))) + (test-end) From ae21519f63a186a8c43aade39ecc6fd04ba75d86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 16 Jan 2017 23:26:35 +0100 Subject: [PATCH 16/22] gnu: guile-sqlite3: Provide a new source URL. * gnu/packages/guile.scm (guile-sqlite3)[home-page]: Change. --- gnu/packages/guile.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 7ce6683681..7b4653cc99 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -890,8 +890,10 @@ (define-public guile-sqlite3 (name "guile-sqlite3") (version (string-append "0.0-0." (string-take commit 7))) - ;; XXX: Gitorious being dead, this is not a reliable home page. - (home-page "https://www.gitorious.org/guile-sqlite3/guile-sqlite3.git/") + ;; XXX: This used to be available read-only at + ;; but it + ;; eventually disappeared, so we have our own copy here. + (home-page "https://notabug.org/civodul/guile-sqlite3.git") (source (origin (method git-fetch) (uri (git-reference From 0b35f11d7647747ad2372e153242807d921a7763 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sun, 15 Jan 2017 21:12:06 +0100 Subject: [PATCH 17/22] gnu: Add emacs-git-timemachine. * gnu/packages/emacs.scm (emacs-git-timemachine): New variable. --- gnu/packages/emacs.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 50cea76855..4c2ab794b6 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -1440,6 +1440,26 @@ (define-public emacs-git-gutter display and behaviour is easily customisable.") (license license:gpl3+))) +(define-public emacs-git-timemachine + (package + (name "emacs-git-timemachine") + (version "3.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/pidu/git-timemachine/" + "archive/" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1l4g0r69wfrnjsywv03v4bpdd53byg6zdx6mzabfxyymss3kvisa")))) + (build-system emacs-build-system) + (home-page "https://github.com/pidu/git-timemachine") + (synopsis "Step through historic versions of Git-controlled files") + (description "This package enables you to step through historic versions +of files under Git version control from within Emacs.") + (license license:gpl3+))) + (define-public emacs-el-mock (package (name "emacs-el-mock") From ce9701fb956d22346984dd9ed535b7034d0af247 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sun, 15 Jan 2017 21:34:08 +0100 Subject: [PATCH 18/22] gnu: Add emacs-stripe-buffer. * gnu/packages/emacs.scm (emacs-stripe-buffer): New variable. --- gnu/packages/emacs.scm | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 4c2ab794b6..e784a9ea13 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2014, 2015, 2016 Mark H Weaver ;;; Copyright © 2014, 2015, 2016, 2017 Alex Kost ;;; Copyright © 2015 Federico Beffa -;;; Copyright © 2015, 2016 Ricardo Wurmus +;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus ;;; Copyright © 2016 Chris Marusich ;;; Copyright © 2015, 2016 Christopher Allan Webber ;;; Copyright © 2016 humanitiesNerd @@ -1734,6 +1734,27 @@ (define-public emacs-skewer-mode in Lisp modes.") (license license:unlicense))) +(define-public emacs-stripe-buffer + (package + (name "emacs-stripe-buffer") + (version "0.2.5") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/sabof/stripe-buffer/" + "archive/" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1p515dq7raly5hw94kiwm3vzsfih0d8af622q4ipvvljsm98aiik")))) + (build-system emacs-build-system) + (home-page "https://github.com/sabof/stripe-buffer/") + (synopsis "Add stripes to list buffers") + (description + "This Emacs package adds faces to add stripes to list buffers and org +tables.") + (license license:gpl2+))) + (define-public emacs-rich-minority (package (name "emacs-rich-minority") From 9381a02a53540647b3949252d2cae4ccd19ad00b Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Mon, 16 Jan 2017 00:36:45 -0500 Subject: [PATCH 19/22] gnu: Add scrypt. * gnu/packages/crypto.scm (scrypt): New variable. --- gnu/packages/crypto.scm | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index e4a8a4bd54..d7888e6042 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 David Thompson ;;; Copyright © 2015 Ricardo Wurmus -;;; Copyright © 2016 Leo Famulari +;;; Copyright © 2016, 2017 Leo Famulari ;;; Copyright © 2016 Lukas Gradl ;;; Copyright © 2016 Tobias Geerinckx-Rice ;;; Copyright © 2016 ng0 @@ -378,3 +378,39 @@ (define-public tomb storage files: it can be operated from commandline and it can integrate with a user's graphical desktop.") (license license:gpl3+))) + +(define-public scrypt + (package + (name "scrypt") + (version "1.2.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.tarsnap.com/scrypt/scrypt-" + version ".tgz")) + (sha256 + (base32 + "1m39hpfby0fdjam842773i5w7pa0qaj7f0r22jnchxsj824vqm0p")))) + (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-command-invocations + (lambda _ + (substitute* "Makefile.in" + (("command -p") "")) + #t)) + (add-after 'install 'install-docs + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (misc (string-append out "/share/doc/scrypt"))) + (install-file "FORMAT" misc) + #t)))))) + (inputs + `(("openssl" ,openssl))) + (home-page "https://www.tarsnap.com/scrypt.html") + (synopsis "Memory-hard encryption tool based on scrypt") + (description "This packages provides a simple password-based encryption +utility as a demonstration of the @code{scrypt} key derivation function. +@code{Scrypt} is designed to be far more resistant against hardware brute-force +attacks than alternative functions such as @code{PBKDF2} or @code{bcrypt}.") + (license license:bsd-2))) From 19083a5eeef59a86ad6c00df289dbaa6c51e70e7 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Mon, 16 Jan 2017 18:33:36 -0500 Subject: [PATCH 20/22] gnu: imagemagick: Update to 6.9.7-4 [security fixes]. * gnu/packages/imagemagick.scm (imagemagick): Update to 6.9.7-4. --- gnu/packages/imagemagick.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm index d654c3be2e..3839dbbdb0 100644 --- a/gnu/packages/imagemagick.scm +++ b/gnu/packages/imagemagick.scm @@ -46,14 +46,14 @@ (define-public imagemagick ;; The 7 release series has an incompatible API, while the 6 series is still ;; maintained. Don't update to 7 until we've made sure that the ImageMagick ;; users are ready for the 7-series API. - (version "6.9.7-3") + (version "6.9.7-4") (source (origin (method url-fetch) (uri (string-append "mirror://imagemagick/ImageMagick-" version ".tar.xz")) (sha256 (base32 - "18cibh5rmxddwpsrpzjd4sbim80g5w36zhl8bw582nw39cs6f5w0")))) + "0acn5pfdn2aws6gz0ikipw945zzg3jb78yg1ma28p5cwxmajr138")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch") From 265afbdfe7fc335fb75d6a09e3ce44eb8b7412d2 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 17 Jan 2017 03:55:04 +0100 Subject: [PATCH 21/22] gnu: ghc-quickcheck-instances: Update to 0.3.12. * gnu/packages/haskell.scm (ghc-quickcheck-instances): Update to 0.3.12. [inputs]: Add ghc-scientific and ghc-vector. --- gnu/packages/haskell.scm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index b26234d405..f28009f176 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016 Ludovic Courtès ;;; Copyright © 2016 ng0 ;;; Copyright © 2016 Efraim Flashner -;;; Copyright © 2015, 2016 Ricardo Wurmus +;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus ;;; Copyright © 2016, 2017 David Craven ;;; Copyright © 2017 Danny Milosavljevic ;;; @@ -2976,7 +2976,7 @@ (define-public ghc-silently (define-public ghc-quickcheck-instances (package (name "ghc-quickcheck-instances") - (version "0.3.11") + (version "0.3.12") (source (origin (method url-fetch) @@ -2986,13 +2986,15 @@ (define-public ghc-quickcheck-instances version ".tar.gz")) (sha256 (base32 - "041s6963czs1pz0fc9cx17lgd6p83czqy2nxji7bhxqxwl2j15h2")))) + "1wwvkzpams7i0j7nk5qj8vvhj8x5zcbgbgrpczszgvshva4bkmfx")))) (build-system haskell-build-system) (inputs `(("ghc-old-time" ,ghc-old-time) ("ghc-unordered-containers" ,ghc-unordered-containers) ("ghc-hashable" ,ghc-hashable) ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-scientific" ,ghc-scientific) + ("ghc-vector" ,ghc-vector) ("ghc-text" ,ghc-text))) (home-page "https://github.com/aslatter/qc-instances") From ae6591efa5d5cd7a5e0b0ec70a2e9f549ef49b73 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Tue, 17 Jan 2017 03:45:37 -0500 Subject: [PATCH 22/22] gnu: perl-image-exiftool: Update to 10.40. * gnu/packages/photo.scm (perl-image-exiftool): Update to 10.40. [synopsis, description]: Mention more capabilities. --- gnu/packages/photo.scm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index 8e823cfc21..ce71d2a441 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -163,7 +163,7 @@ (define-public gphoto2 (define-public perl-image-exiftool (package (name "perl-image-exiftool") - (version "10.20") + (version "10.40") (source (origin (method url-fetch) (uri (string-append @@ -171,7 +171,7 @@ (define-public perl-image-exiftool version ".tar.gz")) (sha256 (base32 - "0akdnxvb23ibcwa63ncibaj5m5k56cb34x8gy90z9lqcjl0f4sph")))) + "1p05d9k94win8a24cr7lsllb6wjl3dagsmdbcxzv6f68z7i1jdly")))) (build-system perl-build-system) (arguments '(#:phases (alist-cons-after @@ -186,10 +186,10 @@ (define-public perl-image-exiftool `("PERL5LIB" prefix (,lib))))) %standard-phases))) (home-page "http://search.cpan.org/dist/Image-ExifTool") - (synopsis "Program and Perl library to manipulate EXIF tags") - (description - "This package provides the 'exiftool' command and the 'Image::ExifTool' -Perl library to manipulate EXIF tags of digital images.") + (synopsis "Program and Perl library to manipulate EXIF and other metadata") + (description "This package provides the @code{exiftool} command and the +@code{Image::ExifTool} Perl library to manipulate EXIF tags of digital images +and a wide variety of other metadata.") (license (package-license perl)))) (define-public libpano13