Merge branch 'master' into staging

This commit is contained in:
Leo Famulari 2017-01-17 03:56:08 -05:00
commit 351ab2c13f
No known key found for this signature in database
GPG key ID: 2646FA30BACA7F08
14 changed files with 452 additions and 40 deletions

View file

@ -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")

View file

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
@ -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)))

View file

@ -4,7 +4,7 @@
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2016 humanitiesNerd <catonano@gmail.com>
@ -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")
@ -1714,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")

View file

@ -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
;; <https://www.gitorious.org/guile-sqlite3/guile-sqlite3.git/> 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

View file

@ -6,7 +6,7 @@
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org>
;;;
@ -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")

View file

@ -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")

View file

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;;
;;; 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)
@ -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))))))))))
@ -145,14 +148,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

View file

@ -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)
@ -44,6 +46,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)
@ -804,10 +807,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"
@ -1218,3 +1230,216 @@ (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)))
(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)))
(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)))
(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)))
(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)))
(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)))
(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)))

View file

@ -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

View file

@ -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")

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -95,11 +95,39 @@ (define-record-type* <file-system> file-system
(dependencies file-system-dependencies ; list of <file-system>
(default '()))) ; or <mapped-device>
(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

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; 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

View file

@ -221,9 +221,11 @@ (define-syntax-rule (with-cache key exp ...)
((_ . result) ;cache hit
(return result))
(#f ;cache miss
(mlet %state-monad ((result (begin exp ...)))
(set-current-state (vhash-consq key result cache))
(return result))))))
(mlet %state-monad ((result (begin exp ...))
(cache (current-state)))
(mbegin %state-monad
(set-current-state (vhash-consq key result cache))
(return result)))))))
(define* (cumulative-grafts store drv grafts
references

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -17,6 +17,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(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)