aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/build/linux-boot.scm20
-rw-r--r--gnu/packages/abiword.scm15
-rw-r--r--gnu/packages/audio.scm20
-rw-r--r--gnu/packages/autogen.scm6
-rw-r--r--gnu/packages/base.scm29
-rw-r--r--gnu/packages/bioinformatics.scm155
-rw-r--r--gnu/packages/compression.scm14
-rw-r--r--gnu/packages/databases.scm3
-rw-r--r--gnu/packages/emacs.scm74
-rw-r--r--gnu/packages/game-development.scm14
-rw-r--r--gnu/packages/gnome.scm125
-rw-r--r--gnu/packages/gnu-pw-mgr.scm4
-rw-r--r--gnu/packages/guile.scm27
-rw-r--r--gnu/packages/libusb.scm3
-rw-r--r--gnu/packages/linux.scm4
-rw-r--r--gnu/packages/music.scm14
-rw-r--r--gnu/packages/networking.scm43
-rw-r--r--gnu/packages/openstack.scm263
-rw-r--r--gnu/packages/password-utils.scm37
-rw-r--r--gnu/packages/patches/libmtp-devices.patch554
-rw-r--r--gnu/packages/python.scm187
-rw-r--r--gnu/packages/ruby.scm291
-rw-r--r--gnu/packages/scheme.scm177
-rw-r--r--gnu/packages/statistics.scm462
-rw-r--r--gnu/packages/version-control.scm42
-rw-r--r--gnu/packages/vpn.scm2
-rw-r--r--gnu/system.scm30
-rw-r--r--gnu/system/file-systems.scm15
-rw-r--r--gnu/system/linux-container.scm119
-rw-r--r--gnu/system/linux-initrd.scm1
30 files changed, 2620 insertions, 130 deletions
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index 3081a93a97..30d6570b04 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -48,7 +48,7 @@
;;; Code:
(define* (mount-essential-file-systems #:key (root "/"))
- "Mount /proc and /sys under ROOT."
+ "Mount /dev, /proc, and /sys under ROOT."
(define (scope dir)
(string-append root
(if (string-suffix? "/" root)
@@ -60,6 +60,10 @@
(mkdir (scope "proc")))
(mount "none" (scope "proc") "proc")
+ (unless (file-exists? (scope "dev"))
+ (mkdir (scope "dev")))
+ (mount "none" (scope "dev") "devtmpfs")
+
(unless (file-exists? (scope "sys"))
(mkdir (scope "sys")))
(mount "none" (scope "sys") "sysfs"))
@@ -71,7 +75,7 @@
(unless (file-exists? target)
(mkdir target))
(mount dir target "" MS_MOVE)))
- '("/proc" "/sys")))
+ '("/dev" "/proc" "/sys")))
(define (linux-command-line)
"Return the Linux kernel command line as a list of strings."
@@ -100,7 +104,7 @@ with the given MAJOR number, starting with MINOR."
(define* (make-essential-device-nodes #:key (root "/"))
"Make essential device nodes under ROOT/dev."
- ;; The hand-made udev!
+ ;; The hand-made devtmpfs/udev!
(define (scope dir)
(string-append root
@@ -255,7 +259,8 @@ UNIONFS."
(mount "none" "/rw-root" "tmpfs")
;; We want read-write /dev nodes.
- (make-essential-device-nodes #:root "/rw-root")
+ (mkdir-p "/rw-root/dev")
+ (mount "none" "/rw-root/dev" "devtmpfs")
;; Make /root a union of the tmpfs and the actual root. Use
;; 'max_files' to set a high RLIMIT_NOFILE for the unionfs process
@@ -385,9 +390,6 @@ to it are lost."
(unless (configure-qemu-networking)
(display "network interface is DOWN\n")))
- ;; Make /dev nodes.
- (make-essential-device-nodes)
-
;; Prepare the real root file system under /root.
(unless (file-exists? "/root")
(mkdir "/root"))
@@ -405,10 +407,6 @@ to it are lost."
#:volatile-root? volatile-root?)
(mount "none" "/root" "tmpfs"))
- (unless (file-exists? "/root/dev")
- (mkdir "/root/dev")
- (make-essential-device-nodes #:root "/root"))
-
;; Mount the specified file systems.
(for-each mount-file-system
(remove root-mount-point? mounts))
diff --git a/gnu/packages/abiword.scm b/gnu/packages/abiword.scm
index a76b16c5af..c6f259a2dd 100644
--- a/gnu/packages/abiword.scm
+++ b/gnu/packages/abiword.scm
@@ -99,8 +99,15 @@
("pkg-config" ,pkg-config)))
(home-page "http://abisource.org/")
(synopsis "Word processing program")
- (description
- "AbiWord is a word processing program. It is rapidly becoming a state
-of the art word processor, with lots of features useful for your daily work,
-personal needs, or for just some good old typing fun.")
+
+ ;; HACKERS: The comment below is here so that it shows up early in the
+ ;; .pot file.
+
+ ;; TRANSLATORS: Dear translator, We would like to inform you that package
+ ;; descriptions may occasionally include Texinfo markup. Texinfo markup
+ ;; looks like "@code{rm -rf}", "@emph{important}", etc. When translating,
+ ;; please leave markup as is.
+ (description "AbiWord is a word processing program. It is rapidly
+becoming a state of the art word processor, with lots of features useful for
+your daily work, personal needs, or for just some good old typing fun.")
(license license:gpl2+)))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 65859f6bed..cbf06250d0 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -1052,7 +1052,25 @@ lv2-c++-tools.")
"0mmhdqiyb3c9dzvxspm8h2v8jibhi8pfjxnf6m0wn744y1ia2a8f"))))
(build-system cmake-build-system)
(arguments
- `(#:tests? #f)) ; no check target
+ `(#:tests? #f ; no check target
+ #:phases
+ (modify-phases %standard-phases
+ (add-after
+ 'unpack 'use-full-library-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "Alc/backends/pulseaudio.c"
+ (("#define PALIB \"libpulse\\.so\\.0\"")
+ (string-append "#define PALIB \""
+ (assoc-ref inputs "pulseaudio")
+ "/lib/libpulse.so.0"
+ "\"")))
+ (substitute* "Alc/backends/alsa.c"
+ (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
+ (string-append "LoadLib(\""
+ (assoc-ref inputs "alsa-lib")
+ "/lib/libasound.so.2"
+ "\")")))
+ #t)))))
(inputs
`(("alsa-lib" ,alsa-lib)
("pulseaudio" ,pulseaudio)))
diff --git a/gnu/packages/autogen.scm b/gnu/packages/autogen.scm
index 45b7cb81cc..615839f463 100644
--- a/gnu/packages/autogen.scm
+++ b/gnu/packages/autogen.scm
@@ -30,16 +30,16 @@
(define-public autogen
(package
(name "autogen")
- (version "5.18.5")
+ (version "5.18.6")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/autogen/rel"
version "/autogen-"
- version ".tar.gz"))
+ version ".tar.xz"))
(sha256
(base32
- "1flnbnmkbqmbfgammkl8m36wrlk6rhpgnf9pdm6gdfhqalxvggbv"))))
+ "0sfmmy19k9z0j3f738fyk6ljf6b66410cvd5zzyplxi2683j10qs"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl) ;for doc generator mdoc
("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index f60a6cfeef..69db178e05 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -52,22 +52,23 @@
(define-public hello
(package
- (name "hello")
- (version "2.10")
- (source (origin
- (method url-fetch)
- (uri (string-append "mirror://gnu/hello/hello-" version
- ".tar.gz"))
- (sha256
- (base32 "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
- (build-system gnu-build-system)
- (synopsis "Hello, GNU world: An example GNU package")
- (description
- "GNU Hello prints the message \"Hello, world!\" and then exits. It
+ (name "hello")
+ (version "2.10")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/hello/hello-" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
+ (build-system gnu-build-system)
+ (synopsis "Hello, GNU world: An example GNU package")
+ (description
+ "GNU Hello prints the message \"Hello, world!\" and then exits. It
serves as an example of standard GNU coding practices. As such, it supports
command-line arguments, multiple languages, and so on.")
- (home-page "http://www.gnu.org/software/hello/")
- (license gpl3+)))
+ (home-page "http://www.gnu.org/software/hello/")
+ (license gpl3+)))
(define-public grep
(package
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index bbd02f3123..1977fd3bf9 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -1,6 +1,8 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -27,6 +29,8 @@
#:use-module (guix build-system cmake)
#:use-module (guix build-system perl)
#:use-module (guix build-system python)
+ #:use-module (guix build-system r)
+ #:use-module (guix build-system ruby)
#:use-module (guix build-system trivial)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
@@ -45,6 +49,7 @@
#:use-module (gnu packages popt)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
+ #:use-module (gnu packages ruby)
#:use-module (gnu packages statistics)
#:use-module (gnu packages tbb)
#:use-module (gnu packages textutils)
@@ -1539,6 +1544,64 @@ resolution of binding sites through combining the information of both
sequencing tag position and orientation.")
(license license:bsd-3)))
+(define-public mafft
+ (package
+ (name "mafft")
+ (version "7.221")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://mafft.cbrc.jp/alignment/software/mafft-" version
+ "-without-extensions-src.tgz"))
+ (file-name (string-append name "-" version ".tgz"))
+ (sha256
+ (base32
+ "0xi7klbsgi049vsrk6jiwh9wfj3b770gz3c8c7zwij448v0dr73d"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; no automated tests, though there are tests in the read me
+ #:make-flags (let ((out (assoc-ref %outputs "out")))
+ (list (string-append "PREFIX=" out)
+ (string-append "BINDIR="
+ (string-append out "/bin"))))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'enter-dir
+ (lambda _ (chdir "core") #t))
+ (add-after 'enter-dir 'patch-makefile
+ (lambda _
+ ;; on advice from the MAFFT authors, there is no need to
+ ;; distribute mafft-profile, mafft-distance, or
+ ;; mafft-homologs.rb as they are too "specialised".
+ (substitute* "Makefile"
+ ;; remove mafft-homologs.rb from SCRIPTS
+ (("^SCRIPTS = mafft mafft-homologs.rb")
+ "SCRIPTS = mafft")
+ ;; remove mafft-distance from PROGS
+ (("^PROGS = dvtditr dndfast7 dndblast sextet5 mafft-distance")
+ "PROGS = dvtditr dndfast7 dndblast sextet5")
+ ;; remove mafft-profile from PROGS
+ (("splittbfast disttbfast tbfast mafft-profile 2cl mccaskillwrap")
+ "splittbfast disttbfast tbfast f2cl mccaskillwrap")
+ (("^rm -f mafft-profile mafft-profile.exe") "#")
+ (("^rm -f mafft-distance mafft-distance.exe") ")#")
+ ;; do not install MAN pages in libexec folder
+ (("^\t\\$\\(INSTALL\\) -m 644 \\$\\(MANPAGES\\) \
+\\$\\(DESTDIR\\)\\$\\(LIBDIR\\)") "#"))
+ #t))
+ (delete 'configure))))
+ (inputs
+ `(("perl" ,perl)))
+ (home-page "http://mafft.cbrc.jp/alignment/software/")
+ (synopsis "Multiple sequence alignment program")
+ (description
+ "MAFFT offers a range of multiple alignment methods for nucleotide and
+protein sequences. For instance, it offers L-INS-i (accurate; for alignment
+of <~200 sequences) and FFT-NS-2 (fast; for alignment of <~30,000
+sequences).")
+ (license (license:non-copyleft
+ "http://mafft.cbrc.jp/alignment/software/license.txt"
+ "BSD-3 with different formatting"))))
(define-public metabat
(package
@@ -2607,3 +2670,95 @@ data in the form of VCF files.")
;; The license is declared as LGPLv3 in the README and
;; at http://vcftools.sourceforge.net/license.html
(license license:lgpl3)))
+
+(define-public bio-locus
+ (package
+ (name "bio-locus")
+ (version "0.0.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "bio-locus" version))
+ (sha256
+ (base32
+ "02vmrxyimkj9sahsp4zhfhnmbvz6dbbqz1y01vglf8cbwvkajfl0"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec)))
+ (synopsis "Tool for fast querying of genome locations")
+ (description
+ "Bio-locus is a tabix-like tool for fast querying of genome
+locations. Many file formats in bioinformatics contain records that
+start with a chromosome name and a position for a SNP, or a start-end
+position for indels. Bio-locus allows users to store this chr+pos or
+chr+pos+alt information in a database.")
+ (home-page "https://github.com/pjotrp/bio-locus")
+ (license license:expat)))
+
+(define-public bioruby
+ (package
+ (name "bioruby")
+ (version "1.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "bio" version))
+ (sha256
+ (base32
+ "01k2fyjl5fpx4zn8g6gqiqvsg2j1fgixrs9p03vzxckynxdq3wmc"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-libxml" ,ruby-libxml)))
+ (native-inputs
+ `(("which" ,which))) ; required for test phase
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'patch-test-command
+ (lambda _
+ (substitute* '("test/functional/bio/test_command.rb")
+ (("/bin/sh") (which "sh")))
+ (substitute* '("test/functional/bio/test_command.rb")
+ (("/bin/ls") (which "ls")))
+ (substitute* '("test/functional/bio/test_command.rb")
+ (("which") (which "which")))
+ (substitute* '("test/functional/bio/test_command.rb",
+ "test/data/command/echoarg2.sh")
+ (("/bin/echo") (which "echo")))
+ #t)))))
+ (synopsis "Ruby library, shell and utilities for bioinformatics")
+ (description "BioRuby comes with a comprehensive set of Ruby development
+tools and libraries for bioinformatics and molecular biology. BioRuby has
+components for sequence analysis, pathway analysis, protein modelling and
+phylogenetic analysis; it supports many widely used data formats and provides
+easy access to databases, external programs and public web services, including
+BLAST, KEGG, GenBank, MEDLINE and GO.")
+ (home-page "http://bioruby.org/")
+ ;; Code is released under Ruby license, except for setup
+ ;; (LGPLv2.1+) and scripts in samples (which have GPL2 and GPL2+)
+ (license (list license:ruby license:lgpl2.1+ license:gpl2+ ))))
+
+(define-public r-qtl
+ (package
+ (name "r-qtl")
+ (version "1.37-11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://cran/src/contrib/qtl_"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0h20d36mww7ljp51pfs66xq33yq4b4fwq9nsh02dpmfhlaxgx1xi"))))
+ (build-system r-build-system)
+ (home-page "http://rqtl.org/")
+ (synopsis "R package for analyzing QTL experiments in genetics")
+ (description "R/qtl is an extension library for the R statistics
+system. It is used to analyze experimental crosses for identifying
+genes contributing to variation in quantitative traits (so-called
+quantitative trait loci, QTLs).
+
+Using a hidden Markov model, R/qtl allows to estimate genetic maps, to
+identify genotyping errors, and to perform single-QTL and two-QTL,
+two-dimensional genome scans.")
+ (license license:gpl3)))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index df62e9963e..f4b327ecec 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -357,17 +357,15 @@ This package is mostly for compatibility and historical interest.")
(define-public sfarklib
(package
(name "sfarklib")
- (version "2.23.5ca96b779")
+ (version "2.24")
(source (origin
- ;; The 2.23 tarball does not include the Makefile, but only
- ;; Makefile.am.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/raboof/sfArkLib.git")
- (commit (last (string-split version #\.)))))
+ (method url-fetch)
+ (uri (string-append "https://github.com/raboof/sfArkLib/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1hk1x88dl5b9jq016r6rx5wyszxknyv0sa7gmil4m4alnhwl4h7h"))))
+ "0bzs2d98rk1xw9qwpnc7gmlbxwmwc3dg1rpn310afy9pq1k9clzi"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ;no "check" target
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index e1cac39cc5..a17424196a 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -289,7 +289,8 @@ pictures, sounds, or video.")
(arguments '(#:parallel-tests? #f))
(native-inputs `(("emacs" ,emacs-no-x)
- ("bc" ,bc)))
+ ("bc" ,bc)
+ ("libuuid", util-linux)))
;; TODO: Add more optional inputs.
;; FIXME: Our Bash doesn't have development headers (need for the 'readrec'
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index b6ca6cfc66..dcbe5e5bd5 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -1092,3 +1092,77 @@ prefer the listing of bugs as TODO items of @code{org-mode}, you could use
A minor mode @code{debbugs-browse-mode} let you browse URLs to the GNU Bug
Tracker as well as bug identifiers prepared for @code{bug-reference-mode}.")
(license license:gpl3+)))
+
+(define-public emacs-deferred
+ (package
+ (name "emacs-deferred")
+ (version "0.3.2")
+ (home-page "https://github.com/kiwanami/emacs-deferred")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))))
+ (sha256
+ (base32
+ "0059jy01ni5irpgrj9fa81ayd9j25nvmjjm79ms3210ysx4pgqdr"))
+ (file-name (string-append name "-" version))))
+ (build-system emacs-build-system)
+ ;; FIXME: Would need 'el-expectations' to actually run tests.
+ (synopsis "Simple asynchronous functions for Emacs Lisp")
+ (description
+ "The @code{deferred.el} library provides support for asynchronous tasks.
+The API is almost the same as that of
+@uref{https://github.com/cho45/jsdeferred, JSDeferred}, a JavaScript library
+for asynchronous tasks.")
+ (license license:gpl3+)))
+
+(define-public butler
+ (package
+ (name "emacs-butler")
+ (version "0.2.4")
+ (home-page "https://github.com/AshtonKem/Butler")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit version)))
+ (sha256
+ (base32
+ "1pii9dw4skq7nr4na6qxqasl36av8cwjp71bf1fgppqpcd9z8skj"))
+ (file-name (string-append name "-" version))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-deferred" ,emacs-deferred)))
+ (synopsis "Emacs client for Jenkins")
+ (description
+ "Butler provides an interface to connect to Jenkins continuous
+integration servers. Users can specify a list of server in the
+@code{butler-server-list} variable and then use @code{M-x butler-status} to
+view the build status of those servers' build jobs, and possibly to trigger
+build jobs.")
+ (license license:gpl3+)))
+
+(define-public typo
+ (package
+ (name "emacs-typo")
+ (version "1.1")
+ (home-page "https://github.com/jorgenschaefer/typoel")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))))
+ (sha256
+ (base32
+ "1jhd4grch5iz12gyxwfbsgh4dmz5hj4bg4gnvphccg8dsnni05k2"))
+ (file-name (string-append name "-" version))))
+ (build-system emacs-build-system)
+ (synopsis "Minor mode for typographic editing")
+ (description
+ "This package provides two Emacs modes, @code{typo-mode} and
+@code{typo-global-mode}. These modes automatically insert Unicode characters
+for quotation marks, dashes, and ellipses. For example, typing @kbd{\"}
+automatically inserts a Unicode opening or closing quotation mark, depending
+on context.")
+ (license license:gpl3+)))
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 9c918dee35..c1757ac4de 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -102,19 +102,21 @@ clone.")
(define-public sfml
(package
(name "sfml")
- (version "2.3.1")
+ (version "2.3.2")
(source (origin
(method url-fetch)
- (uri (string-append "http://mirror0.sfml-dev.org/files/SFML-"
- version "-sources.zip"))
+ ;; Do not fetch the archives from
+ ;; http://mirror0.sfml-dev.org/files/ because files there seem
+ ;; to be changed in place.
+ (uri (string-append "https://github.com/SFML/SFML/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0mjpkgfnz6ka4p0ir219pcqsbdy7gwcjydk7xxmjjfm2k5sw2qys"))))
+ "0k2fl5xk3ni2q8bsxl0551inx26ww3w6cp6hssvww0wfjdjcirsm"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f)) ; no tests
- (native-inputs
- `(("unzip" ,unzip)))
(inputs
`(("mesa" ,mesa)
("glew" ,glew)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index b55058b169..b4b5c237c9 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -44,6 +44,7 @@
#:use-module (gnu packages djvu)
#:use-module (gnu packages flex)
#:use-module (gnu packages docbook)
+ #:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages gnuzilla)
@@ -60,6 +61,7 @@
#:use-module (gnu packages libusb)
#:use-module (gnu packages lirc)
#:use-module (gnu packages lua)
+ #:use-module (gnu packages m4)
#:use-module (gnu packages image)
#:use-module (gnu packages perl)
#:use-module (gnu packages photo)
@@ -69,6 +71,7 @@
#:use-module (gnu packages scanner)
#:use-module (gnu packages ssh)
#:use-module (gnu packages xml)
+ #:use-module (gnu packages geeqie)
#:use-module (gnu packages gl)
#:use-module (gnu packages qt) ; for libxkbcommon
#:use-module (gnu packages compression)
@@ -3500,3 +3503,125 @@ manage, and publish documentation for Yelp and the web. Most of the heavy
lifting is done by packages like yelp-xsl and itstool. This package just
wraps things up in a developer-friendly way.")
(license license:gpl2+)))
+
+(define-public libgee
+ (package
+ (name "libgee")
+ (version "0.18.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnome/sources/" name "/"
+ (version-major+minor version) "/"
+ name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "16a34js81w9m2bw4qd8csm4pcgr3zq5z87867j4b8wfh6zwrxnaa"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-introspection-install-dir
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "gee/Makefile.in"
+ (("@INTROSPECTION_GIRDIR@")
+ (string-append out "/share/gir-1.0/"))
+ (("@INTROSPECTION_TYPELIBDIR@")
+ (string-append out "/lib/girepository-1.0/")))))))))
+ (native-inputs
+ `(("glib" ,glib "bin")
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("glib" ,glib)
+ ("gobject-introspection" ,gobject-introspection)))
+ (home-page "https://wiki.gnome.org/Projects/Libgee")
+ (synopsis "GObject collection library")
+ (description
+ "Libgee is a utility library providing GObject-based interfaces and
+classes for commonly used data structures.")
+ (license license:lgpl2.1+)))
+
+(define-public gexiv2
+ (package
+ (name "gexiv2")
+ (version "0.10.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnome/sources/" name "/"
+ (version-major+minor version) "/"
+ name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "121r5lv6l82pjr0ycdf2b01mdwy7sxwca2r068zrzylpc6bgn31r"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("glib" ,glib "bin")
+ ("pkg-config" ,pkg-config)))
+ (propagated-inputs
+ ;; Listed in "Requires" section of gexiv2.pc
+ `(("exiv2" ,exiv2)))
+ (inputs
+ `(("glib" ,glib)
+ ("gobject-introspection" ,gobject-introspection)))
+ (home-page "https://wiki.gnome.org/Projects/gexiv2")
+ (synopsis "GObject wrapper around the Exiv2 photo metadata library")
+ (description
+ "Gexiv2 is a GObject wrapper around the Exiv2 photo metadata library. It
+allows for GNOME applications to easily inspect and update EXIF, IPTC, and XMP
+metadata in photo and video files of various formats.")
+ (license license:gpl2+)))
+
+(define-public shotwell
+ (package
+ (name "shotwell")
+ (version "0.22.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnome/sources/" name "/"
+ (version-major+minor version) "/"
+ name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0cgqaaikrb10plhf6zxbgqy32zqpiwyi9dpx3g8yr261q72r5c81"))))
+ (build-system glib-or-gtk-build-system)
+ (arguments
+ `(#:tests? #f ;no "check" target
+ #:make-flags '("CC=gcc")
+ #:configure-flags '("--disable-gsettings-convert-install")
+ #:out-of-source? #f))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("gettext" ,gnu-gettext)
+ ("m4" ,m4)
+ ("desktop-file-utils" ,desktop-file-utils)
+ ("vala" ,vala)
+ ("which" ,which)
+ ("gnome-doc-utils" ,gnome-doc-utils)
+ ;; FIXME: I only added python2-libxml2 because xml2po needs it at
+ ;; runtime. It should be propagated.
+ ("python2-libxml2" ,python2-libxml2)
+ ("python2" ,python-2)))
+ (inputs
+ `(("gstreamer" ,gstreamer)
+ ("gst-plugins-base" ,gst-plugins-base)
+ ("gst-plugins-good" ,gst-plugins-good)
+ ("libgee" ,libgee)
+ ("gexiv2" ,gexiv2)
+ ("libraw" ,libraw)
+ ("json-glib" ,json-glib)
+ ("rest" ,rest)
+ ("webkitgtk" ,webkitgtk-2.4)
+ ("sqlite" ,sqlite)
+ ("libsoup" ,libsoup)
+ ("libxml2" ,libxml2)
+ ("gtk+" ,gtk+)
+ ("libgudev" ,libgudev)
+ ("libgphoto2" ,libgphoto2)))
+ (home-page "https://wiki.gnome.org/Apps/Shotwell")
+ (synopsis "Photo manager for GNOME 3")
+ (description
+ "Shotwell is a digital photo manager designed for the GNOME desktop
+environment. It allows you to import photos from disk or camera, organize
+them by keywords and events, view them in full-window or fullscreen mode, and
+share them with others via social networking and more.")
+ (license license:lgpl2.1+)))
diff --git a/gnu/packages/gnu-pw-mgr.scm b/gnu/packages/gnu-pw-mgr.scm
index 7a9b0b9810..e7b93f024e 100644
--- a/gnu/packages/gnu-pw-mgr.scm
+++ b/gnu/packages/gnu-pw-mgr.scm
@@ -29,7 +29,7 @@
(define-public gnu-pw-mgr
(package
(name "gnu-pw-mgr")
- (version "1.4")
+ (version "1.5")
(source
(origin
(method url-fetch)
@@ -37,7 +37,7 @@
version ".tar.xz"))
(sha256
(base32
- "0a352y1m33vp6zmdbn96fdrq9gr9lchc9vcrj14mfx7g0dsvxjns"))))
+ "1winmckl4h8lypg57hd3nd7jscpdr7f1v8zi432k5h648izkf2dg"))))
(build-system gnu-build-system)
(native-inputs
`(("which" ,which)
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index f06f66c7a5..d5a95a0444 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -185,18 +185,19 @@ without requiring the source code to be rewritten.")
;; in the `base' module, and thus changing it entails a full rebuild.
guile-2.0)
-(define-public guile-for-guile-emacs
+(define-public guile-next
(package (inherit guile-2.0)
- (name "guile-for-guile-emacs")
- (version "20150510.d8d9a8d")
+ (name "guile-next")
+ (version "20150815.00884bb")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "git://git.hcoop.net/git/bpt/guile.git")
- (commit "d8d9a8da05ec876acba81a559798eb5eeceb5a17")))
+ (url "git://git.sv.gnu.org/guile.git")
+ (commit "00884bb79fff41fdf5f22f24a74e366a94a14c9b")))
(sha256
(base32
- "00sprsshy16y8pxjy126hr2adqcvvzzz96hjyjwgg8swva1qh6b0"))))
+ "0qk8m9aq3i7pzw6npim58xmsvjqfz5kl1pkyb6b43awn2vydydi5"))))
+
(arguments
(substitute-keyword-arguments `(;; Tests aren't passing for now.
;; Obviously we should re-enable this!
@@ -212,6 +213,7 @@ without requiring the source code to be rewritten.")
(substitute* "build-aux/git-version-gen"
(("#!/bin/sh") (string-append "#!" (which "sh"))))
#t))))))
+ (synopsis "Snapshot of what will become version 2.2 of GNU Guile")
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
@@ -221,6 +223,19 @@ without requiring the source code to be rewritten.")
("gettext" ,gnu-gettext)
,@(package-native-inputs guile-2.0)))))
+(define-public guile-for-guile-emacs
+ (package (inherit guile-next)
+ (name "guile-for-guile-emacs")
+ (version "20150510.d8d9a8d")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "git://git.hcoop.net/git/bpt/guile.git")
+ (commit "d8d9a8da05ec876acba81a559798eb5eeceb5a17")))
+ (sha256
+ (base32
+ "00sprsshy16y8pxjy126hr2adqcvvzzz96hjyjwgg8swva1qh6b0"))))))
+
;;;
;;; Extensions.
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index e7f5b8b119..266669061e 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -96,7 +96,8 @@ version of libusb to run with newer libusb.")
"/libmtp-" version ".tar.gz"))
(sha256
(base32
- "12dinqic0ljnhrwx3rc61jc7q24ybr0mckc2ya5kh1s1np0d7w93"))))
+ "12dinqic0ljnhrwx3rc61jc7q24ybr0mckc2ya5kh1s1np0d7w93"))
+ (patches (list (search-patch "libmtp-devices.patch")))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index e7127ffa58..d2619335a3 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -210,7 +210,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
#f)))
(define-public linux-libre
- (let* ((version "4.2")
+ (let* ((version "4.2.1")
(build-phase
'(lambda* (#:key system inputs #:allow-other-keys #:rest args)
;; Apply the neat patch.
@@ -283,7 +283,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
(uri (linux-libre-urls version))
(sha256
(base32
- "0jfgbr9qc92bk7hyfdvw030xyic2bg834l8cxp25rw9qbbdck3rs"))))
+ "140cqnk1hyhavfra572wwzwz7pddczc78j8anbxyciw35kh8z2hl"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl)
("bc" ,bc)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 05a490574b..78310edf0e 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -187,7 +187,7 @@ you to define complex tempo maps for entire songs or performances.")
(define-public lilypond
(package
(name "lilypond")
- (version "2.18.2")
+ (version "2.19.27")
(source (origin
(method url-fetch)
(uri (string-append
@@ -196,14 +196,15 @@ you to define complex tempo maps for entire songs or performances.")
name "-" version ".tar.gz"))
(sha256
(base32
- "01xs9x2wjj7w9appaaqdhk15r1xvvdbz9qwahzhppfmhclvp779j"))))
+ "11v4jr4qj1jpqvjw1ww7riv8pxfyasif8mf16l447f1xq1ifhkhs"))))
(build-system gnu-build-system)
(arguments
- `(;; Tests fail with this error:
- ;; Undefined subroutine &main::get_index called at
- ;; ./lilypond-2.18.2/Documentation/lilypond-texi2html.init line 2127.
- #:tests? #f
+ `(#:tests? #f ; out-test/collated-files.html fails
#:out-of-source? #t
+ #:configure-flags
+ (list (string-append "--with-texgyre-dir="
+ (assoc-ref %build-inputs "font-tex-gyre")
+ "/share/fonts/opentype/"))
#:phases
(alist-cons-before
'configure 'prepare-configuration
@@ -216,6 +217,7 @@ you to define complex tempo maps for entire songs or performances.")
(inputs
`(("guile" ,guile-1.8)
("font-dejavu" ,font-dejavu)
+ ("font-tex-gyre" ,font-tex-gyre)
("fontconfig" ,fontconfig)
("freetype" ,freetype)
("ghostscript" ,ghostscript)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index dc139e28fe..0a7cde0b0d 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015 Stefan Reichör <stefan@xsteve.at>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,7 +24,8 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
- #:use-module (gnu packages tls))
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages ncurses))
(define-public miredo
(package
@@ -146,3 +148,42 @@ receiving NDP messages.")
auto-negotiation and checksum offload on many network devices, especially
Ethernet devices.")
(license license:gpl2)))
+
+(define-public ifstatus
+ (package
+ (name "ifstatus")
+ (version "1.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/ifstatus/ifstatus-v"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "045cbsq9ps32j24v8y5hpyqxnqn9mpaf3mgvirlhgpqyb9jsia0c"))
+ (modules '((guix build utils)))
+ (snippet
+ '(substitute* "Main.h"
+ (("#include <stdio.h>")
+ "#include <stdio.h>\n#include <stdlib.h>")))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ; no "check" target
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure) ; no configure script
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ (mkdir-p bin)
+ (copy-file "ifstatus"
+ (string-append bin "/ifstatus"))))))))
+ (inputs `(("ncurses" ,ncurses)))
+ (home-page "http://ifstatus.sourceforge.net/graphic/index.html")
+ (synopsis "Text based network interface status monitor")
+ (description
+ "IFStatus is a simple, easy-to-use program for displaying commonly
+needed/wanted real-time traffic statistics of multiple network
+interfaces, with a simple and efficient view on the command line. It is
+intended as a substitute for the PPPStatus and EthStatus projects.")
+ (license license:gpl2+)))
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm
index 91686441ba..39584d566f 100644
--- a/gnu/packages/openstack.scm
+++ b/gnu/packages/openstack.scm
@@ -25,6 +25,41 @@
#:select (asl2.0))
#:use-module (guix packages))
+(define-public python-debtcollector
+ (package
+ (name "python-debtcollector")
+ (version "0.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/d/debtcollector/"
+ "debtcollector-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0amlcg5f98lk2mfzdg44slh1nsi2y4ds123g5d57376fjk2b3njd"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-six" ,python-six)
+ ("python-wrapt" ,python-wrapt)))
+ (inputs
+ `(("python-babel" ,python-babel)
+ ("python-pbr" ,python-pbr)
+ ("python-setuptools" ,python-setuptools)
+ ;; Tests.
+ ("python-oslotest" ,python-oslotest)))
+ (home-page "http://www.openstack.org/")
+ (synopsis
+ "Find deprecated patterns and strategies in Python code")
+ (description
+ "This package provides a collection of Python deprecation patterns and
+strategies that help you collect your technical debt in a non-destructive
+manner.")
+ (license asl2.0)))
+
+(define-public python2-debtcollector
+ (package-with-python2 python-debtcollector))
+
(define-public python-mox3
(package
(name "python-mox3")
@@ -139,7 +174,147 @@ and sensible default behaviors into your setuptools run.")
(define-public python2-pbr
(package-with-python2 python-pbr))
+(define-public python-requests-mock
+ (package
+ (name "python-requests-mock")
+ (version "0.6.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/r/requests-mock/"
+ "requests-mock-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0gmd88c224y53b1ai8cfsrcxm9kw3gdqzysclmnaqspg7zjhxwd1"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-requests" ,python-requests)
+ ("python-six" ,python-six)))
+ (inputs
+ `(("python-mock" ,python-mock)
+ ("python-pbr" ,python-pbr)
+ ("python-setuptools" ,python-setuptools)))
+ (home-page "https://requests-mock.readthedocs.org/")
+ (synopsis "Mock out responses from the requests package")
+ (description
+ "This module provides a building block to stub out the HTTP requests
+portions of your testing code.")
+ (license asl2.0)))
+
+(define-public python2-requests-mock
+ (package-with-python2 python-requests-mock))
+
+(define-public python-stevedore
+ (package
+ (name "python-stevedore")
+ (version "1.7.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/s/stevedore/stevedore-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "149pjc0c3z6khjisn4yil3f94qjnzwafz093wc8rrzbw828qdkv8"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-six" ,python-six)))
+ (inputs
+ `(("python-pbr" ,python-pbr)
+ ("python-setuptools" ,python-setuptools)
+ ;; Tests
+ ("python-docutils" ,python-docutils)
+ ("python-mock" ,python-mock)
+ ("python-oslotest" ,python-oslotest)
+ ("python-sphinx" ,python-sphinx)))
+ (home-page "https://github.com/dreamhost/stevedore")
+ (synopsis "Manage dynamic plugins for Python applications")
+ (description
+ "Python makes loading code dynamically easy, allowing you to configure
+and extend your application by discovering and loading extensions (“plugins”)
+at runtime. Many applications implement their own library for doing this,
+using __import__ or importlib. stevedore avoids creating yet another extension
+mechanism by building on top of setuptools entry points. The code for managing
+entry points tends to be repetitive, though, so stevedore provides manager
+classes for implementing common patterns for using dynamically loaded
+extensions.")
+ (license asl2.0)))
+
+(define-public python2-stevedore
+ (package-with-python2 python-stevedore))
+
;; Packages from the Oslo library
+(define-public python-oslo.config
+ (package
+ (name "python-oslo.config")
+ (version "2.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/o/oslo.config/oslo.config-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "13r778jfb0fhna37c2pd1f2xipnsbd7zli7qhn96acrzymrwj5k1"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-netaddr" ,python-netaddr)
+ ("python-six" ,python-six)
+ ("python-stevedore" ,python-stevedore)))
+ (inputs
+ `(("python-pbr" ,python-pbr)
+ ("python-setuptools" ,python-setuptools)
+ ;; Tests
+ ("python-oslo.i18n" ,python-oslo.i18n)
+ ("python-mock" ,python-mock)
+ ("python-oslotest" ,python-oslotest)
+ ("python-testscenarios" ,python-testscenarios)))
+ (home-page "https://launchpad.net/oslo")
+ (synopsis "Oslo Configuration API")
+ (description
+ "The Oslo configuration API supports parsing command line arguments and
+.ini style configuration files.")
+ (license asl2.0)))
+
+(define-public python2-oslo.config
+ (package-with-python2 python-oslo.config))
+
+(define-public python-oslo.context
+ (package
+ (name "python-oslo.context")
+ (version "0.6.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/o/oslo.context/"
+ "oslo.context-" version ".tar.gz"))
+ (sha256
+ (base32
+ "16wr9qrkc3lb94ssb14qid4liza66x316fvzjw0izg67h1a0fm86"))))
+ (build-system python-build-system)
+ (inputs
+ `(("python-babel" ,python-babel)
+ ("python-pbr" ,python-pbr)
+ ("python-setuptools" ,python-setuptools)
+ ;; Tests.
+ ("python-oslotest" ,python-oslotest)))
+ (home-page "http://launchpad.net/oslo")
+ (synopsis "Oslo context library")
+ (description
+ "The Oslo context library has helpers to maintain useful information
+about a request context. The request context is usually populated in the WSGI
+pipeline and used by various modules such as logging.")
+ (license asl2.0)))
+
+(define-public python2-oslo.context
+ (package-with-python2 python-oslo.context))
+
(define-public python-oslo.i18n
(package
(name "python-oslo.i18n")
@@ -177,6 +352,45 @@ in an application or library.")
(define-public python2-oslo.i18n
(package-with-python2 python-oslo.i18n))
+(define-public python-oslo.serialization
+ (package
+ (name "python-oslo.serialization")
+ (version "1.9.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/o/oslo.serialization/"
+ "oslo.serialization-" version ".tar.gz"))
+ (sha256
+ (base32
+ "00qaxg155s61ylh4fqc7m5fh0gijf33khhai9xvcsc9k106i3c9c"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-iso8601" ,python-iso8601)
+ ("python-netaddr" ,python-netaddr)
+ ("python-oslo.utils" ,python-oslo.utils)
+ ("python-simplejson" ,python-simplejson)
+ ("python-six" ,python-six)
+ ("python-pytz" ,python-pytz)))
+ (inputs
+ `(("python-babel" ,python-babel)
+ ("python-pbr" ,python-pbr)
+ ("python-setuptools" ,python-setuptools)
+ ;; Tests.
+ ("python-mock" ,python-mock)
+ ("python-oslo.i18n" ,python-oslo.i18n)
+ ("python-oslotest" ,python-oslotest)))
+ (home-page "http://launchpad.net/oslo")
+ (synopsis "Oslo serialization library")
+ (description
+ "The oslo.serialization library provides support for representing objects
+in transmittable and storable formats, such as JSON and MessagePack.")
+ (license asl2.0)))
+
+(define-public python2-oslo.serialization
+ (package-with-python2 python-oslo.serialization))
+
(define-public python-oslotest
(package
(name "python-oslotest")
@@ -214,3 +428,52 @@ and better support for mocking results.")
(define-public python2-oslotest
(package-with-python2 python-oslotest))
+
+(define-public python-oslo.utils
+ (package
+ (name "python-oslo.utils")
+ (version "2.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/o/oslo.utils/oslo.utils-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "11b073gblhzkxhi1j6sqk3apq2ll8xhi9h9g9kxzx9dycqdq0qp0"))
+ (snippet
+ '(begin
+ ;; FIXME: setuptools fails to import this file during the test
+ ;; phase.
+ (delete-file "oslo_utils/tests/test_netutils.py")))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-debtcollector" ,python-debtcollector)
+ ("python-oslo.i18n" ,python-oslo.i18n)
+ ("python-iso8601" ,python-iso8601)
+ ("python-monotonic" ,python-monotonic)
+ ("python-netaddr" ,python-netaddr)
+ ("python-netifaces" ,python-netifaces)
+ ("python-pytz" ,python-pytz)
+ ("python-six" ,python-six)))
+ (inputs
+ `(("python-babel" ,python-babel)
+ ("python-pbr" ,python-pbr)
+ ("python-setuptools" ,python-setuptools)
+ ;; Tests.
+ ("python-oslotest" ,python-oslotest)
+ ("python-mock" ,python-mock)
+ ("python-mox3" ,python-mox3)
+ ("python-testscenarios" ,python-testscenarios)))
+ (home-page "http://launchpad.net/oslo")
+ (synopsis "Oslo utility library")
+ (description
+ "The @code{oslo.utils} library provides support for common utility type
+functions, such as encoding, exception handling, string manipulation, and time
+handling.")
+ (license asl2.0)))
+
+(define-public python2-oslo.utils
+ (package-with-python2 python-oslo.utils))
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 4aef371615..8619f14f38 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Steve Sprang <scs@stevesprang.com>
+;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -18,9 +19,14 @@
(define-module (gnu packages password-utils)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix download)
- #:use-module (guix packages))
+ #:use-module (guix packages)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages qt)
+ #:use-module (gnu packages xorg))
(define-public pwgen
(package
@@ -41,3 +47,32 @@
(description "Pwgen generates passwords which can be easily memorized by a
human.")
(license license:gpl2)))
+
+(define-public keepassx
+ (package
+ (name "keepassx")
+ (version "2.0-beta2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/keepassx/keepassx/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0ljf9ws3wh62zd0gyb0vk2qw6pqsmxrlybrfs5mqahf44q92ca2q"))))
+ (build-system cmake-build-system)
+ (inputs
+ `(("libgcrypt" ,libgcrypt)
+ ("libxtst" ,libxtst)
+ ("qt" ,qt-4)))
+ (native-inputs
+ `(("zlib" ,zlib)))
+ (home-page "https://www.keepassx.org")
+ (synopsis "Password manager")
+ (description "KeePassX is a password manager or safe which helps you to
+manage your passwords in a secure way. You can put all your passwords in one
+database, which is locked with one master key or a key-file which can be stored
+on an external storage device. The databases are encrypted using the
+algorithms AES or Twofish.")
+ ;; Non functional parts use various licences.
+ (license license:gpl3)))
diff --git a/gnu/packages/patches/libmtp-devices.patch b/gnu/packages/patches/libmtp-devices.patch
new file mode 100644
index 0000000000..9b985e526d
--- /dev/null
+++ b/gnu/packages/patches/libmtp-devices.patch
@@ -0,0 +1,554 @@
+Add additional devices; the patched file corresponds to git commit 8e471b,
+to which one additional device has been added as reported at
+ http://sourceforge.net/p/libmtp/bugs/1422/
+
+diff -u -r libmtp-1.1.9.orig/src/music-players.h libmtp-1.1.9/src/music-players.h
+--- libmtp-1.1.9.orig/src/music-players.h 2015-09-19 22:54:24.537330594 +0200
++++ libmtp-1.1.9/src/music-players.h 2015-09-19 23:16:41.079206331 +0200
+@@ -47,82 +47,61 @@
+ * and properties.
+ */
+ { "Creative", 0x041e, "ZEN Vision", 0x411f,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ { "Creative", 0x041e, "Portable Media Center", 0x4123,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ { "Creative", 0x041e, "ZEN Xtra (MTP mode)", 0x4128,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ { "Dell", 0x041e, "DJ (2nd generation)", 0x412f,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ { "Creative", 0x041e, "ZEN Micro (MTP mode)", 0x4130,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ { "Creative", 0x041e, "ZEN Touch (MTP mode)", 0x4131,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ { "Dell", 0x041e, "Dell Pocket DJ (MTP mode)", 0x4132,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
+- { "Creative", 0x041e, "ZEN MicroPhoto (alternate version)", 0x4133,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
++ { "Creative", 0x041e, "ZEN MicroPhoto (alternate version)", 0x4133,
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ { "Creative", 0x041e, "ZEN Sleek (MTP mode)", 0x4137,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ { "Creative", 0x041e, "ZEN MicroPhoto", 0x413c,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ { "Creative", 0x041e, "ZEN Sleek Photo", 0x413d,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ { "Creative", 0x041e, "ZEN Vision:M", 0x413e,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ // Reported by marazm@o2.pl
+ { "Creative", 0x041e, "ZEN V", 0x4150,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ // Reported by danielw@iinet.net.au
+ // This version of the Vision:M needs the no release interface flag,
+ // unclear whether the other version above need it too or not.
+ { "Creative", 0x041e, "ZEN Vision:M (DVP-HD0004)", 0x4151,
+ DEVICE_FLAG_NO_RELEASE_INTERFACE |
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ // Reported by Darel on the XNJB forums
+ { "Creative", 0x041e, "ZEN V Plus", 0x4152,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ { "Creative", 0x041e, "ZEN Vision W", 0x4153,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ // Don't add 0x4155: this is a Zen Stone device which is not MTP
+ // Reported by Paul Kurczaba <paul@kurczaba.com>
+ { "Creative", 0x041e, "ZEN", 0x4157,
+ DEVICE_FLAG_IGNORE_HEADER_ERRORS |
+ DEVICE_FLAG_BROKEN_SET_SAMPLE_DIMENSIONS |
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ // Reported by Ringofan <mcroman@users.sourceforge.net>
+ { "Creative", 0x041e, "ZEN V 2GB", 0x4158,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ // Reported by j norment <stormzen@gmail.com>
+ { "Creative", 0x041e, "ZEN Mozaic", 0x4161,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ // Reported by Aaron F. Gonzalez <sub_tex@users.sourceforge.net>
+ { "Creative", 0x041e, "ZEN X-Fi", 0x4162,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ // Reported by farmerstimuli <farmerstimuli@users.sourceforge.net>
+ { "Creative", 0x041e, "ZEN X-Fi 3", 0x4169,
+- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
+- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
++ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
+ // Reported by Todor Gyumyushev <yodor1@users.sourceforge.net>
+ { "ZiiLABS", 0x041e, "Zii EGG", 0x6000,
+ DEVICE_FLAG_UNLOAD_DRIVER |
+@@ -607,8 +586,17 @@
+ /* https://sourceforge.net/p/libmtp/bugs/1251/ */
+ { "Acer", 0x0502, "E39", 0x3643,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1369/ */
++ { "Acer", 0x0502, "liquid e700", 0x3644,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ { "Acer", 0x0502, "One 7", 0x3657,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/support-requests/183/ */
++ { "Acer", 0x0502, "Z200", 0x3683,
++ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1341/ */
++ { "Acer", 0x0502, "Liquid S56", 0x3725,
++ DEVICE_FLAGS_ANDROID_BUGS },
+
+ /*
+ * SanDisk
+@@ -952,6 +940,7 @@
+ { "Archos", 0x0e79, "SPOD (MTP mode)", 0x1341, DEVICE_FLAG_UNLOAD_DRIVER },
+ { "Archos", 0x0e79, "5S IT (MTP mode)", 0x1351, DEVICE_FLAG_UNLOAD_DRIVER },
+ { "Archos", 0x0e79, "5H IT (MTP mode)", 0x1357, DEVICE_FLAG_UNLOAD_DRIVER },
++ { "Archos", 0x0e79, "48 (MTP mode)", 0x1421, DEVICE_FLAGS_ANDROID_BUGS },
+ { "Archos", 0x0e79, "Arnova Childpad", 0x1458, DEVICE_FLAGS_ANDROID_BUGS },
+ { "Archos", 0x0e79, "Arnova 8c G3", 0x145e, DEVICE_FLAGS_ANDROID_BUGS },
+ { "Archos", 0x0e79, "Arnova 10bG3 Tablet", 0x146b, DEVICE_FLAGS_ANDROID_BUGS },
+@@ -973,9 +962,17 @@
+ { "Archos", 0x0e79, "70it2 (ID 2)", 0x1569, DEVICE_FLAGS_ANDROID_BUGS },
+ { "Archos", 0x0e79, "50c", 0x2008, DEVICE_FLAGS_ANDROID_BUGS },
+ { "Archos", 0x0e79, "C40", 0x31ab, DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1393/ */
++ { "Archos", 0x0e79, "Phone", 0x31e1, DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1325/ */
++ { "Archos", 0x0e79, "45 Neon", 0x31f3, DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1352/ */
++ { "Archos", 0x0e79, "50 Diamond", 0x3229, DEVICE_FLAGS_ANDROID_BUGS },
+ { "Archos", 0x0e79, "101 G4", 0x4002, DEVICE_FLAGS_ANDROID_BUGS },
+ { "Archos (for Tesco)", 0x0e79, "Hudl (ID1)", 0x5008, DEVICE_FLAGS_ANDROID_BUGS },
+ { "Archos (for Tesco)", 0x0e79, "Hudl (ID2)", 0x5009, DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1404/ */
++ { "Archos", 0x0e79, "AC40DTI", 0x5217, DEVICE_FLAGS_ANDROID_BUGS },
+
+ /*
+ * Dunlop (OEM of EGOMAN ltd?) reported by Nanomad
+@@ -1181,6 +1178,10 @@
+ { "Qualcomm (for OnePlus)", 0x05c6, "One (MTP+ADB)",
+ 0x6765, DEVICE_FLAGS_ANDROID_BUGS },
+
++ /* https://sourceforge.net/p/libmtp/bugs/1377/ */
++ { "Qualcomm (for Xolo)", 0x901b, "Xolo Black (MTP)",
++ 0x9039, DEVICE_FLAGS_ANDROID_BUGS },
++
+ { "Qualcomm (for PhiComm)", 0x05c6, "C230w (MTP)",
+ 0x9039, DEVICE_FLAGS_ANDROID_BUGS },
+
+@@ -1221,6 +1222,9 @@
+ // Reported by Thomas Bretthauer
+ { "Fujitsu, Ltd", 0x04c5, "STYLISTIC M532", 0x133b,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/feature-requests/137/ */
++ { "Fujitsu, Ltd", 0x04c5, "F02-E", 0x1378,
++ DEVICE_FLAGS_ANDROID_BUGS },
+
+ /*
+ * Palm device userland program named Pocket Tunes
+@@ -1247,6 +1251,9 @@
+ // Reported by anonymous SourceForge user
+ { "Medion", 0x066f, "MD8333 (ID2)", 0x8588,
+ DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST },
++ /* https://sourceforge.net/p/libmtp/bugs/1359/ */
++ { "Verizon", 0x0408, "Ellipsis 7", 0x3899,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ // The vendor ID is "Quanta Computer, Inc."
+ // same as Olivetti Olipad 110
+ // Guessing on device flags
+@@ -1403,6 +1410,9 @@
+ DEVICE_FLAGS_ANDROID_BUGS },
+ { "LG Electronics Inc.", 0x1004, "LG2 Optimus", 0x6225,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1386/ */
++ { "LG Electronics Inc.", 0x1004, "LG VS950", 0x622a,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ { "LG Electronics Inc.", 0x1004, "LG VS870", 0x6239,
+ DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/bugs/992/ */
+@@ -1410,6 +1420,8 @@
+ DEVICE_FLAGS_ANDROID_BUGS },
+ { "LG Electronics Inc.", 0x1004, "VK810", 0x6265,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ { "LG Electronics Inc.", 0x1004, "G3", 0x627f,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/support-requests/134/ */
+ { "LG Electronics Inc.", 0x1004, "G3 (VS985)", 0x626e,
+ DEVICE_FLAGS_ANDROID_BUGS },
+@@ -1723,8 +1735,12 @@
+ DEVICE_FLAG_NONE },
+ { "SONY", 0x0fce, "Xperia M2 MTP", 0x01aa,
+ DEVICE_FLAG_NONE },
++ { "SONY", 0x0fce, "Xperia M2 Dual MTP", 0x01ab,
++ DEVICE_FLAG_NONE },
+ { "SONY", 0x0fce, "Xperia Z2 MTP", 0x01af,
+ DEVICE_FLAG_NONE },
++ { "SONY", 0x0fce, "Xperia Z2 Tablet MTP", 0x01b1,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ { "SONY", 0x0fce, "Xperia Z Ultra MTP", 0x01b6,
+ DEVICE_FLAGS_ANDROID_BUGS },
+ { "SONY", 0x0fce, "Xperia Z3 MTP", 0x01ba,
+@@ -1733,6 +1749,10 @@
+ DEVICE_FLAG_NONE },
+ { "SONY", 0x0fce, "Xperia E3 MTP", 0x01bc,
+ DEVICE_FLAG_NONE },
++ { "SONY", 0x0fce, "XPeria Z3+ MTP", 0x01c9,
++ DEVICE_FLAG_NONE },
++ { "SONY", 0x0fce, "XPeria E4g MTP", 0x01cb,
++ DEVICE_FLAG_NONE },
+
+
+ /*
+@@ -1788,6 +1808,8 @@
+ DEVICE_FLAG_NONE },
+ { "SONY", 0x0fce, "Xperia M MTP+CDROM", 0x419b,
+ DEVICE_FLAG_NONE },
++ { "SONY", 0x0fce, "Xperia Z Ultra MTP+CDROM (ID3)", 0x419c,
++ DEVICE_FLAG_NONE },
+ { "SONY", 0x0fce, "Xperia Z1 MTP+CDROM", 0x419e,
+ DEVICE_FLAG_NONE },
+ { "SONY", 0x0fce, "Xperia C MTP+CDROM", 0x41a3,
+@@ -1796,10 +1818,20 @@
+ DEVICE_FLAG_NONE },
+ { "SONY", 0x0fce, "Xperia M2 MTP+CDROM", 0x41aa,
+ DEVICE_FLAG_NONE },
++ { "SONY", 0x0fce, "Xperia M2 Dual MTP+CDROM", 0x41ab,
++ DEVICE_FLAG_NONE },
+ { "SONY", 0x0fce, "Xperia Z2 MTP+CDROM", 0x41af,
+ DEVICE_FLAG_NONE },
+ { "SONY", 0x0fce, "Xperia Z3 MTP+CDROM", 0x41ba,
+ DEVICE_FLAG_NONE },
++ { "SONY", 0x0fce, "Xperia Z3 Compact MTP+CDROM", 0x41bb,
++ DEVICE_FLAG_NONE },
++ { "SONY", 0x0fce, "Xperia E3 MTP+CDROM", 0x01bc,
++ DEVICE_FLAG_NONE },
++ { "SONY", 0x0fce, "XPeria Z3+ MTP+CDROM", 0x41c9,
++ DEVICE_FLAG_NONE },
++ { "SONY", 0x0fce, "XPeria E4g MTP+CDROM", 0x41cb,
++ DEVICE_FLAG_NONE },
+
+ /*
+ * MTP+ADB personalities of MTP devices (see above)
+@@ -1888,6 +1920,8 @@
+ DEVICE_FLAG_NONE },
+ { "SONY", 0x0fce, "Xperia M2 MTP+ADB", 0x51aa,
+ DEVICE_FLAG_NONE },
++ { "SONY", 0x0fce, "Xperia M2 Dual MTP+ADB", 0x51ab,
++ DEVICE_FLAG_NONE },
+ { "SONY", 0x0fce, "Xperia Z2 MTP+ADB", 0x51af,
+ DEVICE_FLAG_NONE },
+ { "SONY", 0x0fce, "Xperia Z Ultra MTP+ADB", 0x51b6,
+@@ -1898,6 +1932,10 @@
+ DEVICE_FLAG_NONE },
+ { "SONY", 0x0fce, "Xperia E3 MTP+ADB", 0x51bc,
+ DEVICE_FLAG_NONE },
++ { "SONY", 0x0fce, "XPeria Z3+ MTP+ADB", 0x51c9,
++ DEVICE_FLAG_NONE },
++ { "SONY", 0x0fce, "XPeria E4g MTP+ADB", 0x51cb,
++ DEVICE_FLAG_NONE },
+
+ /*
+ * MTP+UMS modes
+@@ -1936,6 +1974,9 @@
+ * Motorola
+ * Assume DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST on all of these.
+ */
++ /* https://sourceforge.net/p/libmtp/feature-requests/136/ */
++ { "Motorola", 0x22b8, "XT1524 (MTP)", 0x002e,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ // Reported by David Boyd <tiggrdave@users.sourceforge.net>
+ { "Motorola", 0x22b8, "V3m/V750 verizon", 0x2a65,
+ DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST |
+@@ -1952,6 +1993,9 @@
+ DEVICE_FLAGS_ANDROID_BUGS },
+ { "Motorola", 0x22b8, "Moto X (XT1058)", 0x2e63,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1323/ */
++ { "Motorola", 0x22b8, "Moto X (XT1080)", 0x2e66,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ { "Motorola", 0x22b8, "Droid Maxx (XT1080)", 0x2e67,
+ DEVICE_FLAGS_ANDROID_BUGS },
+ { "Motorola", 0x22b8, "Droid Ultra", 0x2e68,
+@@ -2345,6 +2389,14 @@
+ /* https://sourceforge.net/p/libmtp/bugs/1244/ */
+ { "Asus", 0x0b05, "MemoPad 8 ME181 CX (MTP)", 0x5561,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1406/ */
++ { "Asus", 0x0b05, "Zenfone 2 (MTP)", 0x5600,
++ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1364/ */
++ { "Asus", 0x0b05, "Z00AD (MTP)", 0x5601,
++ DEVICE_FLAGS_ANDROID_BUGS },
++ { "Asus", 0x0b05, "TX201LA (MTP)", 0x561f,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/bugs/1271/ */
+ { "Asus", 0x0b05, "ZenFone 4 (MTP)", 0x580f,
+ DEVICE_FLAGS_ANDROID_BUGS },
+@@ -2354,9 +2406,20 @@
+ /* https://sourceforge.net/p/libmtp/bugs/1258/ */
+ { "Asus", 0x0b05, "A450CG (MTP)", 0x5a0f,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1350/ */
++ { "Asus", 0x0b05, "Zenfone 2 ZE550ML (MTP)", 0x5f02,
++ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1364/ */
++ { "Asus", 0x0b05, "Zenfone 2 ZE551ML (MTP)", 0x5f03,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/bugs/1232/ */
+ { "Asus", 0x0b05, "MemoPad 7 (ME572CL)", 0x7772,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1351/ */
++ { "Asus", 0x0b05, "Fonepad 7 (FE375CXG)", 0x7773,
++ DEVICE_FLAGS_ANDROID_BUGS },
++ { "Asus", 0x0b05, "ZenFone 5 A500KL (MTP)", 0x7780,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/bugs/1247/ */
+ { "Asus", 0x0b05, "ZenFone 5 A500KL (MTP+ADB)", 0x7781,
+ DEVICE_FLAGS_ANDROID_BUGS },
+@@ -2365,6 +2428,12 @@
+ /*
+ * Lenovo
+ */
++ /* https://sourceforge.net/p/libmtp/support-requests/178/ */
++ { "Lenovo", 0x17ef, "P70-A", 0x0c02,
++ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1415/ */
++ { "Lenovo", 0x17ef, "P70", 0x2008,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ // Reported by Richard Körber <shredzone@users.sourceforge.net>
+ { "Lenovo", 0x17ef, "K1", 0x740a,
+ DEVICE_FLAGS_ANDROID_BUGS },
+@@ -2407,6 +2476,9 @@
+ DEVICE_FLAGS_ANDROID_BUGS },
+ { "Lenovo", 0x17ef, "Toga Tablet B6000-F", 0x76f2,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1122/ */
++ { "Lenovo", 0x17ef, "S930", 0x7718,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/bugs/1250/ */
+ { "Lenovo", 0x17ef, "A5500-F", 0x772b,
+ DEVICE_FLAGS_ANDROID_BUGS },
+@@ -2417,15 +2489,24 @@
+ /* https://sourceforge.net/p/libmtp/bugs/1155/ */
+ { "Lenovo", 0x17ef, "Yoga Tablet 10 B8000-H", 0x76ff,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1391/ */
++ { "Lenovo", 0x17ef, "A7600-F", 0x7731,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/bugs/1291/ */
+ { "Lenovo", 0x17ef, "A3500-F", 0x7737,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/support-requests/186/ */
++ { "Lenovo", 0x17ef, "Yoga Tablet 2 - 1050F", 0x77a4,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/support-requests/168/ */
+ { "Lenovo", 0x17ef, "Yoga Tablet 2 Pro", 0x77b1,
+ DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/feature-requests/125/ */
+ { "Lenovo", 0x17ef, "Vibe Z2", 0x77ea,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1360/ */
++ { "Lenovo", 0x17ef, "K3 Note", 0x7883,
++ DEVICE_FLAGS_ANDROID_BUGS },
+
+ /*
+ * Huawei
+@@ -2435,6 +2516,15 @@
+ DEVICE_FLAGS_ANDROID_BUGS },
+ { "Huawei", 0x12d1, "MTP device (ID2)", 0x1052,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1381/ */
++ { "Huawei", 0x12d1, "H60-L11", 0x1079,
++ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1361/ */
++ { "Huawei", 0x12d1, "Ascend P8 ", 0x1082,
++ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1418/ */
++ { "Huawei", 0x12d1, "Honor 3C ", 0x2012,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ { "Huawei", 0x12d1, "Mediapad (mode 0)", 0x360f,
+ DEVICE_FLAGS_ANDROID_BUGS },
+ // Reported by Bearsh <bearsh@users.sourceforge.net>
+@@ -2452,6 +2542,8 @@
+ /* https://sourceforge.net/p/libmtp/bugs/672/ */
+ { "ZTE", 0x19d2, "Grand X In", 0x0343, DEVICE_FLAGS_ANDROID_BUGS },
+ { "ZTE", 0x19d2, "V985", 0x0383, DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1328/ */
++ { "ZTE", 0x19d2, "V5", 0xffce, DEVICE_FLAGS_ANDROID_BUGS },
+
+ /*
+ * HTC (High Tech Computer Corp)
+@@ -2459,6 +2551,12 @@
+ * Steven Eastland <grassmonk@users.sourceforge.net>
+ * Kevin Cheng <kache@users.sf.net>
+ */
++ /* https://sourceforge.net/p/libmtp/support-requests/181/ */
++ { "HTC", 0x0bb4, "HTC One M9 (MTP)", 0x040b,
++ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1398/ */
++ { "HTC", 0x0bb4, "Spreadtrum SH57MYZ03342 (MTP)", 0x05e3,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ /* reported by Mikkel Oscar Lyderik <mikkeloscar@gmail.com> */
+ { "HTC", 0x0bb4, "HTC Desire 510 (MTP+ADB)", 0x05fd,
+ DEVICE_FLAGS_ANDROID_BUGS },
+@@ -2545,6 +2643,9 @@
+ /* https://sourceforge.net/p/libmtp/bugs/1182/ */
+ { "HTC", 0x0bb4, "Desire 310 (MTP)", 0x0ec6,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1420/ */
++ { "HTC", 0x0bb4, "Desire 816G (MTP)", 0x0edb,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ { "HTC", 0x0bb4, "HTC One (MTP+ADB+CDC)", 0x0f5f,
+ DEVICE_FLAGS_ANDROID_BUGS },
+ { "HTC", 0x0bb4, "HTC One (MTP+CDC)", 0x0f60,
+@@ -2658,6 +2759,9 @@
+ DEVICE_FLAGS_ANDROID_BUGS },
+ { "Amazon", 0x1949, "Kindle Fire (ID5)", 0x0012,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1353/ */
++ { "Amazon", 0x1949, "Kindle Fire HD6", 0x00f2,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ { "Amazon", 0x1949, "Fire Phone", 0x0800,
+ DEVICE_FLAGS_ANDROID_BUGS },
+
+@@ -2677,6 +2781,9 @@
+ DEVICE_FLAGS_ANDROID_BUGS },
+ { "YiFang", 0x2207, "BQ Tesla", 0x0006,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1354/ */
++ { "Various", 0x2207, "Viewpia DR/bq Kepler Debugging", 0x0011,
++ DEVICE_FLAGS_ANDROID_BUGS },
+
+ /*
+ * Kobo
+@@ -2708,6 +2815,8 @@
+ { "Intel", 0x8087, "Foxconn iView i700", 0x0a15, DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/bugs/1237/ */
+ { "Intel", 0x8087, "Telcast Air 3G", 0x0a5e, DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1338/ */
++ { "Intel", 0x8087, "Chuwi vi8", 0x0a5f, DEVICE_FLAGS_ANDROID_BUGS },
+
+ /*
+ * Xiaomi
+@@ -2738,6 +2847,15 @@
+ DEVICE_FLAGS_ANDROID_BUGS },
+ { "Xiaomi", 0x2717, "Mi-2 (MTP)", 0xf003,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1397/ */
++ { "Xiaomi", 0x2717, "Mi-2s (id2) (MTP)", 0xff40,
++ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1339/ */
++ { "Xiaomi", 0x2717, "Mi-2s (MTP)", 0xff48,
++ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1402/ */
++ { "Xiaomi", 0x2717, "Redmi 2 (MTP)", 0xff60,
++ DEVICE_FLAGS_ANDROID_BUGS },
+
+ /*
+ * XO Learning Tablet
+@@ -2774,6 +2892,9 @@
+ /* https://sourceforge.net/p/libmtp/bugs/1304/ */
+ { "Alcatel", 0x1bbb, "OneTouch 5042D (MTP)", 0xa00e,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1401/ */
++ { "Alcatel", 0x1bbb, "OneTouch Idol 3 (MTP)", 0xaf2b,
++ DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/feature-requests/114/ */
+ { "Alcatel", 0x1bbb, "OneTouch 6034R", 0xf003,
+ DEVICE_FLAGS_ANDROID_BUGS },
+@@ -2782,8 +2903,12 @@
+ * Kyocera
+ */
+ { "Kyocera", 0x0482, "Rise", 0x0571, DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/feature-requests/134/ */
++ { "Kyocera", 0x0482, "Torque Model E6715", 0x0059a, DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/discussion/535190/thread/6270f5ce/ */
+ { "Kyocera", 0x0482, "KYL22", 0x0810, DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1345/ */
++ { "Kyocera", 0x0482, "DuraForce", 0x0979, DEVICE_FLAGS_ANDROID_BUGS },
+
+ /*
+ * HiSense
+@@ -2798,12 +2923,20 @@
+ DEVICE_FLAGS_ANDROID_BUGS },
+ { "Hewlett-Packard", 0x03f0, "Slate 7 2800", 0x5d1d,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/bugs/1366/ */
++ { "Hewlett-Packard", 0x03f0, "Slate 10 HD", 0x7e1d,
++ DEVICE_FLAGS_ANDROID_BUGS },
+
+ /*
+ * MediaTek Inc.
+ */
+ { "MediaTek Inc", 0x0e8d, "MT5xx and MT6xx SoCs", 0x0050,
+ DEVICE_FLAGS_ANDROID_BUGS },
++ { "MediaTek Inc", 0x0e8d, "MT65xx", 0x2008,
++ DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/feature-requests/79/ */
++ { "MediaTek Inc", 0x0e8d, "Elephone P8000", 0x201d,
++ DEVICE_FLAGS_ANDROID_BUGS },
+
+ /*
+ * Jolla
+@@ -2860,6 +2993,8 @@
+ { "Prestigio", 0x29e4, "5505 DUO ", 0x1103, DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/bugs/1243/ */
+ { "Prestigio", 0x29e4, "5504 DUO ", 0x1203, DEVICE_FLAGS_ANDROID_BUGS },
++ /* https://sourceforge.net/p/libmtp/feature-requests/141/ */
++ { "Prestigio", 0x29e4, "3405 DUO ", 0x3201, DEVICE_FLAGS_ANDROID_BUGS },
+
+ /* https://sourceforge.net/p/libmtp/bugs/1283/ */
+ { "Megafon", 0x201e, "MFLogin3T", 0x42ab, DEVICE_FLAGS_ANDROID_BUGS },
+@@ -2867,6 +3002,8 @@
+ /* https://sourceforge.net/p/libmtp/bugs/1287/ */
+ { "Gensis", 0x040d, "GT-7305 ", 0x885c, DEVICE_FLAGS_ANDROID_BUGS },
+
++ /* https://sourceforge.net/p/libmtp/support-requests/182/ */
++ { "Oppo", 0x22d9, "Find 5", 0x2764, DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/bugs/1207/ */
+ { "Oppo", 0x22d9, "Find 7 (ID 1)", 0x2765, DEVICE_FLAGS_ANDROID_BUGS },
+ /* https://sourceforge.net/p/libmtp/bugs/1277/ */
+@@ -2916,6 +3053,14 @@
+ /* https://sourceforge.net/p/libmtp/bugs/1314/ */
+ { "BenQ", 0x1d45, "F5", 0x459d, DEVICE_FLAGS_ANDROID_BUGS },
+
++ /* https://sourceforge.net/p/libmtp/bugs/1362/ */
++ { "TomTom", 0x1390, "Rider 40", 0x5455, DEVICE_FLAGS_ANDROID_BUGS },
++
++ /* https://sourceforge.net/p/libmtp/feature-requests/135/. guessed android. */
++ { "OUYA", 0x2836, "Videogame Console", 0x0010, DEVICE_FLAGS_ANDROID_BUGS },
++
++ /* https://sourceforge.net/p/libmtp/bugs/1383/ */
++ { "BLU", 0x0e8d, "Studio HD", 0x2008, DEVICE_FLAGS_ANDROID_BUGS },
+ /*
+ * Other strange stuff.
+ */
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index f57bd839ab..ca367929e0 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -783,6 +783,9 @@ password storage.")
;; "MIT" and PSF dual license
(license x11)))
+(define-public python2-keyring
+ (package-with-python2 python-keyring))
+
(define-public python-six
(package
(name "python-six")
@@ -3719,13 +3722,15 @@ computing.")
`(#:tests? #f ,@(package-arguments ipython)))
;; Make sure we use custom python2-NAME packages.
;; FIXME: add pyreadline once available.
+ (propagated-inputs
+ `(("python2-terminado" ,python2-terminado)
+ ,@(alist-delete "python-terminado"
+ (package-propagated-inputs ipython))))
(inputs
`(("python2-mock" ,python2-mock)
("python2-matplotlib" ,python2-matplotlib)
- ("python2-terminado" ,python2-terminado)
- ,@(alist-delete "python-terminado"
- (alist-delete "python-matplotlib"
- (package-inputs ipython))))))))
+ ,@(alist-delete "python-matplotlib"
+ (package-inputs ipython)))))))
(define-public python-isodate
(package
@@ -4432,6 +4437,9 @@ PEP 8.")
"Pyflakes statically checks Python source code for common errors.")
(license license:expat)))
+(define-public python2-pyflakes
+ (package-with-python2 python-pyflakes))
+
(define-public python-mccabe
(package
(name "python-mccabe")
@@ -4495,7 +4503,7 @@ complexity of Python source code.")
"0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))))
(define-public python2-pyflakes-0.8.1
- (package-with-python2 python-pyflakes))
+ (package-with-python2 python-pyflakes-0.8.1))
(define-public python-flake8
(package
@@ -4768,3 +4776,172 @@ reading and writing MessagePack data.")
(define-public python2-msgpack
(package-with-python2 python-msgpack))
+
+(define-public python-netaddr
+ (package
+ (name "python-netaddr")
+ (version "0.7.18")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "06dxjlbcicq7q3vqy8agq11ra01kvvd47j4mk6dmghjsyzyckxd1"))))
+ (build-system python-build-system)
+ (arguments `(#:tests? #f)) ;; No tests.
+ (inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (home-page "https://github.com/drkjam/netaddr/")
+ (synopsis "Pythonic manipulation of network addresses")
+ (description
+ "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
+and MAC network addresses.")
+ (license bsd-3)))
+
+(define-public python2-netaddr
+ (package-with-python2 python-netaddr))
+
+(define-public python-wrapt
+ (package
+ (name "python-wrapt")
+ (version "1.10.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/w/wrapt/wrapt-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0cq8rlpzkxzk48b50yrfhzn1d1hrq4gjcdqlrgq4v5palgiv9jwr"))))
+ (build-system python-build-system)
+ (arguments
+ ;; Tests are not included in the tarball, they are only available in the
+ ;; git repository.
+ `(#:tests? #f))
+ (inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (home-page "https://github.com/GrahamDumpleton/wrapt")
+ (synopsis "Module for decorators, wrappers and monkey patching")
+ (description
+ "The aim of the wrapt module is to provide a transparent object proxy for
+ Python, which can be used as the basis for the construction of function
+ wrappers and decorator functions.")
+ (license bsd-2)))
+
+(define-public python2-wrapt
+ (package-with-python2 python-wrapt))
+
+(define-public python-iso8601
+ (package
+ (name "python-iso8601")
+ (version "0.1.10")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/i/iso8601/iso8601-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1qf01afxh7j4gja71vxv345if8avg6nnm0ry0zsk6j3030xgy4p7"))))
+ (build-system python-build-system)
+ (inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (home-page "https://bitbucket.org/micktwomey/pyiso8601")
+ (synopsis "Module to parse ISO 8601 dates")
+ (description
+ "This module parses the most common forms of ISO 8601 date strings (e.g.
+@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
+ (license license:expat)))
+
+(define-public python2-iso8601
+ (package-with-python2 python-iso8601))
+
+(define-public python-monotonic
+ (package
+ (name "python-monotonic")
+ (version "0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/m/monotonic/monotonic-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0yz0bcbwx8r2c01czzfpbrxddynxyk9k95jj8h6sgcb7xmfvl998"))))
+ (build-system python-build-system)
+ (inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (home-page "https://github.com/atdt/monotonic")
+ (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
+ (description
+ "This module provides a monotonic() function which returns the value (in
+fractional seconds) of a clock which never goes backwards.")
+ (license asl2.0)))
+
+(define-public python2-monotonic
+ (package-with-python2 python-monotonic))
+
+(define-public python-webob
+ (package
+ (name "python-webob")
+ (version "1.5.0b0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/W/WebOb/WebOb-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "140b3iczclk1j0405rvw5gxshqfkhcc8254fj520z3m23cwbql4a"))))
+ (build-system python-build-system)
+ (inputs
+ `(("python-nose" ,python-nose)
+ ("python-setuptools" ,python-setuptools)))
+ (home-page "http://webob.org/")
+ (synopsis "WSGI request and response object")
+ (description
+ "WebOb provides wrappers around the WSGI request environment, and an
+object to help create WSGI responses.")
+ (license license:expat)))
+
+(define-public python2-webob
+ (package-with-python2 python-webob))
+
+(define-public python-prettytable
+ (package
+ (name "python-prettytable")
+ (version "0.7.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pypi.python.org/packages/source/P/PrettyTable/"
+ "prettytable-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
+ (build-system python-build-system)
+ (inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (home-page "http://code.google.com/p/prettytable/")
+ (synopsis "Display tabular data in an ASCII table format")
+ (description
+ "A library designed to represent tabular data in visually appealing ASCII
+tables. PrettyTable allows for selection of which columns are to be printed,
+independent alignment of columns (left or right justified or centred) and
+printing of sub-tables by specifying a row range.")
+ (license bsd-3)))
+
+(define-public python2-prettytable
+ (package-with-python2 python-prettytable))
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index ee0acc8639..c906361971 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -421,6 +421,30 @@ Java Native Interface.")
(home-page "http://www.artonx.org/collabo/backyard/?RubyJavaBridge")
(license license:lgpl2.1+)))
+(define-public ruby-log4r
+ (package
+ (name "ruby-log4r")
+ (version "1.1.10")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "log4r" version))
+ (sha256
+ (base32
+ "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; no Rakefile in gem
+ (synopsis "Flexible logging library for Ruby")
+ (description "Comprehensive and flexible logging library written
+in Ruby for use in Ruby programs. It features a hierarchical logging
+system of any number of levels, custom level names, logger
+inheritance, multiple output destinations per log event, execution
+tracing, custom formatting, thread safteyness, XML and YAML
+configuration, and more.")
+ (home-page "http://log4r.rubyforge.org/")
+ (license license:bsd-3)))
+
(define-public ruby-atoulme-antwrap
(package
(name "ruby-atoulme-antwrap")
@@ -465,6 +489,34 @@ extensions.")
(home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
(license license:public-domain)))
+(define-public ruby-libxml
+ (package
+ (name "ruby-libxml")
+ (version "2.8.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "libxml-ruby" version))
+ (sha256
+ (base32
+ "1dhjqp4r9vkdp00l6h1cj8qfndzxlhlxk6b9g0w4v55gz857ilhb"))))
+ (build-system ruby-build-system)
+ (inputs
+ `(("zlib" ,zlib)
+ ("libxml2" ,libxml2)))
+ (arguments
+ '(#:tests? #f ; test suite hangs for unknown reason
+ #:gem-flags
+ (list "--"
+ (string-append "--with-xml2-include="
+ (assoc-ref %build-inputs "libxml2")
+ "/include/libxml2" ))))
+ (synopsis "Ruby bindings for GNOME Libxml2")
+ (description "The Libxml-Ruby project provides Ruby language bindings for
+the GNOME Libxml2 XML toolkit.")
+ (home-page "http://xml4r.github.com/libxml-ruby")
+ (license license:expat)))
+
(define-public ruby-xml-simple
(package
(name "ruby-xml-simple")
@@ -505,6 +557,152 @@ interfaces.")
(home-page "http://whatisthor.com/")
(license license:expat)))
+(define-public ruby-lumberjack
+ (package
+ (name "ruby-lumberjack")
+ (version "1.0.9")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "lumberjack" version))
+ (sha256
+ (base32
+ "162frm2bwy58pj8ccsdqa4a6i0csrhb9h5l3inhkl1ivgfc8814l"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec)))
+ (synopsis "Logging utility library for Ruby")
+ (description "Lumberjack is a simple logging utility that can be a drop in
+replacement for Logger or ActiveSupport::BufferedLogger. It provides support
+for automatically rolling log files even with multiple processes writing the
+same log file.")
+ (home-page "http://github.com/bdurand/lumberjack")
+ (license license:expat)))
+
+(define-public ruby-nenv
+ (package
+ (name "ruby-nenv")
+ (version "0.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "nenv" version))
+ (sha256
+ (base32
+ "152wxwri0afwgnxdf93gi6wjl9rr5z7vwp8ln0gpa3rddbfc27s6"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; no tests included
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec)
+ ("bundler" ,bundler)))
+ (synopsis "Ruby interface for modifying the environment")
+ (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
+and inspect the environment.")
+ (home-page "https://github.com/e2/nenv")
+ (license license:expat)))
+
+(define-public ruby-shellany
+ (package
+ (name "ruby-shellany")
+ (version "0.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "shellany" version))
+ (sha256
+ (base32
+ "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:test-target "default"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-version-test
+ (lambda _
+ (substitute* "spec/shellany_spec.rb"
+ (("^RSpec") "require \"shellany\"\nRSpec"))
+ #t)))))
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec)
+ ("ruby-nenv" ,ruby-nenv)
+ ("bundler" ,bundler)))
+ (synopsis "Capture command output")
+ (description "Shellany is a Ruby library providing functions to capture
+the output produced by running shell commands.")
+ (home-page "https://rubygems.org/gems/shellany")
+ (license license:expat)))
+
+(define-public ruby-notiffany
+ (package
+ (name "ruby-notiffany")
+ (version "0.0.7")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "notiffany" version))
+ (sha256
+ (base32
+ "1v5x1w59qq85r6dpv3y9ga34dfd7hka1qxyiykaw7gm0i6kggbhi"))))
+ (build-system ruby-build-system)
+ ;; Tests are not included in the gem.
+ (arguments `(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-shellany" ,ruby-shellany)
+ ("ruby-nenv" ,ruby-nenv)))
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (synopsis "Wrapper libray for notification libraries")
+ (description "Notiffany is a Ruby wrapper libray for notification
+libraries such as Libnotify.")
+ (home-page "https://github.com/guard/notiffany")
+ (license license:expat)))
+
+(define-public ruby-formatador
+ (package
+ (name "ruby-formatador")
+ (version "0.2.5")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "formatador" version))
+ (sha256
+ (base32
+ "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
+ (build-system ruby-build-system)
+ ;; Circular dependency: Tests require ruby-shindo, which requires
+ ;; ruby-formatador at runtime.
+ (arguments `(#:tests? #f))
+ (synopsis "Ruby library to format text on stdout")
+ (description "Formatador is a Ruby library to format text printed to the
+standard output stream.")
+ (home-page "http://github.com/geemus/formatador")
+ (license license:expat)))
+
+(define-public ruby-shindo
+ (package
+ (name "ruby-shindo")
+ (version "0.3.8")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "shindo" version))
+ (sha256
+ (base32
+ "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:test-target "shindo_tests"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-tests
+ (lambda _
+ (substitute* "Rakefile"
+ (("system \"shindo") "system \"./bin/shindo")
+ ;; This test doesn't work, so we disable it.
+ (("fail \"The build_error test should fail") "#"))
+ #t)))))
+ (propagated-inputs
+ `(("ruby-formatador" ,ruby-formatador)))
+ (synopsis "Simple depth first Ruby testing")
+ (description "Shindo is a simple depth first testing library for Ruby.")
+ (home-page "https://github.com/geemus/shindo")
+ (license license:expat)))
+
(define-public ruby-useragent
(package
(name "ruby-useragent")
@@ -1124,3 +1322,96 @@ it unifies the API for web servers, web frameworks, and software in between
into a single method call.")
(home-page "http://rack.github.io/")
(license license:expat)))
+
+(define-public ruby-docile
+ (package
+ (name "ruby-docile")
+ (version "1.1.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "docile" version))
+ (sha256
+ (base32
+ "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; needs github-markup, among others
+ (synopsis "Ruby EDSL helper library")
+ (description "Docile is a Ruby library that provides an interface for
+creating embedded domain specific languages (EDSLs) that manipulate existing
+Ruby classes.")
+ (home-page "https://ms-ati.github.io/docile/")
+ (license license:expat)))
+
+(define-public ruby-gherkin3
+ (package
+ (name "ruby-gherkin3")
+ (version "3.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "gherkin3" version))
+ (sha256
+ (base32
+ "0xsyxhqa1gwcxzvsdy4didaiq5vam8ma3fbwbw2w60via4k6r1z9"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (arguments
+ '(#:tests? #f)) ; needs simplecov, among others
+ (synopsis "Gherkin parser for Ruby")
+ (description "Gherkin 3 is a parser and compiler for the Gherkin language.
+It is intended to replace Gherkin 2 and be used by all Cucumber
+implementations to parse '.feature' files.")
+ (home-page "https://github.com/cucumber/gherkin3")
+ (license license:expat)))
+
+(define-public ruby-cucumber-core
+ (package
+ (name "ruby-cucumber-core")
+ (version "1.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "cucumber-core" version))
+ (sha256
+ (base32
+ "12mrzf0s96izpq0k10lahlkgwc4fjs0zfs344rh8r8h3w3jyppr8"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-gherkin3" ,ruby-gherkin3)))
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (arguments
+ '(#:tests? #f)) ; needs simplecov, among others
+ (synopsis "Core library for the Cucumber BDD app")
+ (description "Cucumber is a tool for running automated tests
+written in plain language. Because they're written in plain language,
+they can be read by anyone on your team. Because they can be read by
+anyone, you can use them to help improve communication, collaboration
+and trust on your team.")
+ (home-page "https://cucumber.io/")
+ (license license:expat)))
+
+(define-public ruby-bio-logger
+ (package
+ (name "ruby-bio-logger")
+ (version "1.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "bio-logger" version))
+ (sha256
+ (base32
+ "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; rake errors, missing shoulda
+ (propagated-inputs
+ `(("ruby-log4r" ,ruby-log4r)))
+ (synopsis "Log4r wrapper for Ruby")
+ (description "Bio-logger is a wrapper around Log4r adding extra logging
+features such as filtering and fine grained logging.")
+ (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
+ (license license:expat)))
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 803b8d5a20..7465b1b58c 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -486,3 +487,179 @@ addition to support for lightweight VM-based threads, each VM itself runs in
an isolated heap allowing multiple VMs to run simultaneously in different OS
threads.")
(license bsd-3)))
+
+;; FIXME: This function is temporarily in the engineering module and not
+;; exported. It will be moved to an utility module for general use. Once
+;; this is done, we should remove this definition.
+(define broken-tarball-fetch
+ (@@ (gnu packages engineering) broken-tarball-fetch))
+
+(define-public scmutils
+ (let ()
+ (define (system-suffix)
+ (cond
+ ((string-prefix? "x86_64" (or (%current-target-system)
+ (%current-system)))
+ "x86-64")
+ (else "i386")))
+
+ (package
+ (name "scmutils")
+ (version "20140302")
+ (source
+ (origin
+ (method broken-tarball-fetch)
+ (modules '((guix build utils)))
+ (snippet
+ ;; Remove binary code
+ '(delete-file-recursively "scmutils/mit-scheme"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (uri (string-append "http://groups.csail.mit.edu/mac/users/gjs/6946"
+ "/scmutils-tarballs/" name "-" version
+ "-x86-64-gnu-linux.tar.gz"))
+ (sha256
+ (base32 "10cnbm7nh78m5mrl1di85s29gny81jb1am9zd9f9yx725xb6dnfg"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("mit-scheme" ,mit-scheme)
+ ("emacs" ,emacs-no-x)))
+ (arguments
+ `(#:tests? #f ;; no tests-suite
+ #:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (guix build emacs-utils))
+ #:imported-modules (,@%gnu-build-system-modules
+ (guix build emacs-utils))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ ;; No standard build procedure is used. We set the correct
+ ;; runtime path in the custom build system.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ ;; Required to find .bci files at runtime.
+ (with-directory-excursion "scmutils"
+ (rename-file "src" "scmutils"))
+ (substitute* "scmutils/scmutils/load.scm"
+ (("/usr/local/scmutils/")
+ (string-append out "/lib/mit-scheme-"
+ ,(system-suffix) "/")))
+ #t)))
+ (replace 'build
+ ;; Compile the code and build a band.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (make-img (string-append
+ "echo '(load \"load\") "
+ "(disk-save \"edwin-mechanics.com\")'"
+ "| mit-scheme")))
+ (with-directory-excursion "scmutils/scmutils"
+ (and (zero? (system "mit-scheme < compile.scm"))
+ (zero? (system make-img)))))))
+ (add-before 'install 'fix-directory-names
+ ;; Correct directory names in the startup script.
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (scm-root (assoc-ref inputs "mit-scheme")))
+ (substitute* "bin/mechanics"
+ (("ROOT=\"\\$\\{SCMUTILS_ROOT:-/.*\\}\"")
+ (string-append
+ "ROOT=\"${SCMUTILS_ROOT:-" scm-root "}\"\n"
+ "LIB=\"${ROOT}/lib/mit-scheme-"
+ ,(system-suffix) ":"
+ out "/lib/mit-scheme-" ,(system-suffix) "\""))
+ (("EDWIN_INFO_DIRECTORY=.*\n") "")
+ (("SCHEME=.*\n")
+ (string-append "SCHEME=\"${ROOT}/bin/scheme "
+ "--library ${LIB}\"\n"))
+ (("export EDWIN_INFO_DIRECTORY") ""))
+ #t)))
+ (add-before 'install 'emacs-tags
+ ;; Generate Emacs's tags for easy reference to source
+ ;; code.
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (with-directory-excursion "scmutils/scmutils"
+ (zero? (apply system* "etags"
+ (find-files "." "\\.scm"))))))
+ (replace 'install
+ ;; Copy files to the store.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (define* (copy-files-to-directory files dir
+ #:optional (delete? #f))
+ (for-each (lambda (f)
+ (copy-file f (string-append dir "/" f))
+ (when delete? (delete-file f)))
+ files))
+
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (doc (string-append out "/share/doc/"
+ ,name "-" ,version))
+ (lib (string-append out "/lib/mit-scheme-"
+ ,(system-suffix)
+ "/scmutils")))
+ (for-each mkdir-p (list lib doc bin))
+ (with-directory-excursion "scmutils/scmutils"
+ (copy-files-to-directory '("COPYING" "LICENSE")
+ doc #t)
+ (for-each delete-file (find-files "." "\\.bin"))
+ (copy-files-to-directory '("edwin-mechanics.com")
+ (string-append lib "/..") #t)
+ (copy-recursively "." lib))
+ (with-directory-excursion "bin"
+ (copy-files-to-directory (find-files ".") bin))
+ (with-directory-excursion "scmutils/manual"
+ (copy-files-to-directory (find-files ".") doc))
+ #t)))
+ (add-after 'install 'emacs-helpers
+ ;; Add convenience Emacs commands to easily load the
+ ;; Scmutils band in an MIT-Scheme buffer inside of Emacs
+ ;; and to easily load code tags.
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (mit-root (assoc-ref inputs "mit-scheme"))
+ (emacs-lisp-dir
+ (string-append out "/share/emacs/site-lisp"
+ "/guix.d/" ,name "-" ,version))
+ (el-file (string-append emacs-lisp-dir
+ "/scmutils.el"))
+ (lib-relative-path
+ (string-append "/lib/mit-scheme-"
+ ,(system-suffix))))
+ (mkdir-p emacs-lisp-dir)
+ (call-with-output-file el-file
+ (lambda (p)
+ (format p
+ ";;;###autoload
+(defun scmutils-load ()
+ (interactive)
+ (require 'xscheme)
+ (let ((mit-root \"~a\")
+ (scmutils \"~a\"))
+ (run-scheme
+ (concat mit-root \"/bin/scheme --library \"
+ mit-root \"~a:\" scmutils \"~a\"
+ \" --band edwin-mechanics.com\"
+ \" --emacs\"))))
+
+;;;###autoload
+(defun scmutils-load-tags ()
+ (interactive)
+ (let ((scmutils \"~a\"))
+ (visit-tags-table (concat scmutils \"/TAGS\"))))
+"
+ mit-root out
+ lib-relative-path
+ lib-relative-path
+ (string-append out lib-relative-path
+ "/scmutils"))))
+ (emacs-byte-compile-directory (dirname el-file))
+ #t))))))
+ (home-page
+ "http://groups.csail.mit.edu/mac/users/gjs/6946/linux-install.htm")
+ (synopsis "Scmutils library for MIT Scheme")
+ (description "The Scmutils system is an integrated library of
+procedures, embedded in the programming language Scheme, and intended to
+support teaching and research in mathematical physics and electrical
+engineering.")
+ (license gpl2+))))
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 2e89fa9f03..cbcef49153 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015 Vicente Vera Parra <vicentemvp@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -140,8 +141,7 @@ available, greatly increasing its breadth and scope.")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/colorspace_"
- version ".tar.gz"))
+ (uri (cran-uri "colorspace" version))
(sha256
(base32 "0y8n4ljwhbdvkysdwgqzcnpv107pb3px1jip3k6svv86p72nacds"))))
(build-system r-build-system)
@@ -161,8 +161,7 @@ colors are provided.")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/dichromat_"
- version ".tar.gz"))
+ (uri (cran-uri "dichromat" version))
(sha256
(base32 "1l8db1nk29ccqg3mkbafvfiw0775iq4gapysf88xq2zp6spiw59i"))))
(build-system r-build-system)
@@ -180,8 +179,7 @@ effects of different types of color-blindness.")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/digest_"
- version ".tar.gz"))
+ (uri (cran-uri "digest" version))
(sha256
(base32 "0m9grqv67hhf51lz10whymhw0g0d98466ka694kya5x95hn44qih"))))
(build-system r-build-system)
@@ -206,8 +204,7 @@ OpenSSL should be used.")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/gtable_"
- version ".tar.gz"))
+ (uri (cran-uri "gtable" version))
(sha256
(base32 "0k9hfj6r5y238gqh92s3cbdn34biczx3zfh79ix5xq0c5vkai2xh"))))
(build-system r-build-system)
@@ -225,8 +222,7 @@ OpenSSL should be used.")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/labeling_"
- version ".tar.gz"))
+ (uri (cran-uri "labeling" version))
(sha256
(base32 "13sk7zrrrzry6ky1bp8mmnzcl9jhvkig8j4id9nny7z993mnk00d"))))
(build-system r-build-system)
@@ -243,8 +239,7 @@ algorithms.")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/magrittr_"
- version ".tar.gz"))
+ (uri (cran-uri "magrittr" version))
(sha256
(base32 "1s1ar6rag8m277qcqmdp02gn4awn9bdj9ax0r8s32i59mm1mki05"))))
(build-system r-build-system)
@@ -265,8 +260,7 @@ see package vignette. To quote Rene Magritte, \"Ceci n'est pas un pipe.\"")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/munsell_"
- version ".tar.gz"))
+ (uri (cran-uri "munsell" version))
(sha256
(base32 "1bi5yi0i80778bbzx2rm4f0glpc34kvh24pwwfhm4v32izsqgrw4"))))
(build-system r-build-system)
@@ -286,8 +280,7 @@ Munsell colour system.")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/Rcpp_"
- version ".tar.gz"))
+ (uri (cran-uri "Rcpp" version))
(sha256
(base32 "182109z0yc1snqgd833ssl2cix6cbq83bcxmy5344b15ym820y38"))))
(build-system r-build-system)
@@ -311,8 +304,7 @@ and Francois (2011, JSS), and the book by Eddelbuettel (2013, Springer); see
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/plyr_"
- version ".tar.gz"))
+ (uri (cran-uri "plyr" version))
(sha256
(base32 "06v4zxawpjz37rp2q2ii5q43g664z9s29j4ydn0cz3crn7lzl6pk"))))
(build-system r-build-system)
@@ -334,7 +326,7 @@ panels or collapse high-dimensional arrays to simpler summary statistics.")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/proto_" version ".tar.gz"))
+ (uri (cran-uri "proto" version))
(sha256
(base32 "03mvzi529y6kjcp9bkpk7zlgpcakb3iz73hca6rpjy14pyzl3nfh"))))
(build-system r-build-system)
@@ -352,8 +344,7 @@ prototype-based, rather than class-based object oriented ideas.")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/RColorBrewer_"
- version ".tar.gz"))
+ (uri (cran-uri "RColorBrewer" version))
(sha256
(base32 "1pfcl8z1pnsssfaaz9dvdckyfnnc6rcq56dhislbf571hhg7isgk"))))
(build-system r-build-system)
@@ -372,10 +363,7 @@ designed by Cynthia Brewer as described at http://colorbrewer2.org")
(source
(origin
(method url-fetch)
- (uri (string-append
- "mirror://cran/src/contrib/stringi_"
- version
- ".tar.gz"))
+ (uri (cran-uri "stringi" version))
(sha256
(base32
"183wrrjhpgl1wbnn9lhghyvhz7l2mc64mpcmzplckal7y9j7pmhw"))))
@@ -401,8 +389,7 @@ transliteration, concatenation, date-time formatting and parsing, etc.")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/stringr_"
- version ".tar.gz"))
+ (uri (cran-uri "stringr" version))
(sha256
(base32 "0jnz6r9yqyf7dschr2fnn1slg4wn6b4ik5q00j4zrh43bfw7s9pq"))))
(build-system r-build-system)
@@ -426,8 +413,7 @@ the input of another.")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/reshape2_"
- version ".tar.gz"))
+ (uri (cran-uri "reshape2" version))
(sha256
(base32 "0hl082dyk3pk07nqprpn5dvnrkqhnf6zjnjig1ijddxhlmsrzm7v"))))
(build-system r-build-system)
@@ -449,8 +435,7 @@ using just two functions: melt and dcast (or acast).")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/scales_"
- version ".tar.gz"))
+ (uri (cran-uri "scales" version))
(sha256
(base32 "1kkgpqzb0a6lnpblhcprr4qzyfk5lhicdv4639xs5cq16n7bkqgl"))))
(build-system r-build-system)
@@ -476,8 +461,7 @@ legends.")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://cran/src/contrib/ggplot2_"
- version ".tar.gz"))
+ (uri (cran-uri "ggplot2" version))
(sha256
(base32 "0794kjqi3lrxb33lr1mykd58959hlgkhdn259vj8fxrh65mqw920"))))
(build-system r-build-system)
@@ -498,3 +482,415 @@ by step from multiple data sources. It also implements a sophisticated
multidimensional conditioning system and a consistent interface to map data to
aesthetic attributes.")
(license license:gpl2+)))
+
+(define-public r-assertthat
+ (package
+ (name "r-assertthat")
+ (version "0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "assertthat" version))
+ (sha256
+ (base32
+ "0dwsqajyglfscqilj843qfqn1ndbqpswa7b4l1d633qjk9d68qqk"))))
+ (build-system r-build-system)
+ (home-page "https://github.com/hadley/assertthat")
+ (synopsis "Easy pre and post assertions")
+ (description
+ "Assertthat is an extension to stopifnot() that makes it easy to declare
+the pre and post conditions that your code should satisfy, while also
+producing friendly error messages so that your users know what they've done
+wrong.")
+ (license license:gpl3+)))
+
+(define-public r-lazyeval
+ (package
+ (name "r-lazyeval")
+ (version "0.1.10")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "lazyeval" version))
+ (sha256
+ (base32
+ "02qfpn2fmy78vx4jxr7g7rhqzcm1kcivfwai7lbh0vvpawia0qwh"))))
+ (build-system r-build-system)
+ (home-page "https://github.com/hadley/lazyeval")
+ (synopsis "Lazy (non-standard) evaluation in R")
+ (description
+ "This package provides the tools necessary to do non-standard
+evaluation (NSE) in R.")
+ (license license:gpl3+)))
+
+(define-public r-dbi
+ (package
+ (name "r-dbi")
+ (version "0.3.1")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "DBI" version))
+ (sha256
+ (base32
+ "0xj5baxwnhl23rd5nskhjvranrwrc68f3xlyrklglipi41bm69hw"))))
+ (build-system r-build-system)
+ (home-page "https://github.com/rstats-db/DBI")
+ (synopsis "R database interface")
+ (description
+ "The DBI package provides a database interface (DBI) definition for
+communication between R and relational database management systems. All
+classes in this package are virtual and need to be extended by the various
+R/DBMS implementations.")
+ (license license:lgpl2.0+)))
+
+(define-public r-bh
+ (package
+ (name "r-bh")
+ (version "1.58.0-1")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "BH" version))
+ (sha256
+ (base32
+ "17rnwyw9ib2pvm60iixzkbz7ff4fslpifp1nlx4czp42hy67kqpf"))))
+ (build-system r-build-system)
+ (home-page "https://github.com/eddelbuettel/bh")
+ (synopsis "R package providing subset of Boost headers")
+ (description
+ "This package aims to provide the most useful subset of Boost libraries
+for template use among CRAN packages.")
+ (license license:boost1.0)))
+
+(define-public r-evaluate
+ (package
+ (name "r-evaluate")
+ (version "0.8")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "evaluate" version))
+ (sha256
+ (base32
+ "137gc35jlizhqnx19mxim3llrkm403abj8ghb2b7v5ls9rvd40pq"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-stringr" ,r-stringr)))
+ (home-page "https://github.com/hadley/evaluate")
+ (synopsis "Parsing and evaluation tools for R")
+ (description
+ "This package provides tools that allow you to recreate the parsing,
+evaluation and display of R code, with enough information that you can
+accurately recreate what happens at the command line. The tools can easily be
+adapted for other output formats, such as HTML or LaTeX.")
+ (license license:gpl3+)))
+
+(define-public r-formatr
+ (package
+ (name "r-formatr")
+ (version "1.2.1")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "formatR" version))
+ (sha256
+ (base32
+ "0f4cv2zv5wayyqx99ybfyl0p83kgjvnsv8dhcwa4s49kw6jsx1lr"))))
+ (build-system r-build-system)
+ (home-page "http://yihui.name/formatR")
+ (synopsis "Format R code automatically")
+ (description
+ "This package provides a function to format R source code. Spaces and
+indent will be added to the code automatically, and comments will be preserved
+under certain conditions, so that R code will be more human-readable and tidy.
+There is also a Shiny app as a user interface in this package.")
+ (license license:gpl3+)))
+
+(define-public r-highr
+ (package
+ (name "r-highr")
+ (version "0.5.1")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "highr" version))
+ (sha256
+ (base32
+ "11hyawzhaw3ph5y5xphi7alx6df1d0i6wh0a2n5m4sxxhdrzswnb"))))
+ (build-system r-build-system)
+ (home-page "https://github.com/yihui/highr")
+ (synopsis "Syntax highlighting for R source code")
+ (description
+ "This package provides syntax highlighting for R source code. Currently
+it supports LaTeX and HTML output. Source code of other languages is
+supported via Andre Simon's highlight package.")
+ (license license:gpl3+)))
+
+(define-public r-mime
+ (package
+ (name "r-mime")
+ (version "0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "mime" version))
+ (sha256
+ (base32
+ "145cdcg252w2zsq67dmvmsqka60msfp7agymlxs3gl3ihgiwg46p"))))
+ (build-system r-build-system)
+ (home-page "https://github.com/yihui/mime")
+ (synopsis "R package to map filenames to MIME types")
+ (description
+ "This package guesses the MIME type from a filename extension using the
+data derived from /etc/mime.types in UNIX-type systems.")
+ (license license:gpl2)))
+
+(define-public r-markdown
+ (package
+ (name "r-markdown")
+ (version "0.7.7")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "markdown" version))
+ (sha256
+ (base32
+ "00j1hlib3il50azs2vlcyhi0bjpx1r50mxr9w9dl5g1bwjjc71hb"))))
+ (build-system r-build-system)
+ ;; Skip check phase because the tests require the r-knitr package to be
+ ;; installed. This prevents installation failures. Knitr normally
+ ;; shouldn't be available since r-markdown is a dependency of the r-knitr
+ ;; package.
+ (arguments `(#:tests? #f))
+ (propagated-inputs
+ `(("r-mime" ,r-mime)))
+ (home-page "https://github.com/rstudio/markdown")
+ (synopsis "Markdown rendering for R")
+ (description
+ "This package provides R bindings to the Sundown Markdown rendering
+library (https://github.com/vmg/sundown). Markdown is a plain-text formatting
+syntax that can be converted to XHTML or other formats.")
+ (license license:gpl2)))
+
+(define-public r-yaml
+ (package
+ (name "r-yaml")
+ (version "2.1.13")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "yaml" version))
+ (sha256
+ (base32
+ "18kz5mfn7qpif5pn91w4vbrc5bkycsj85vwm5wxwzjlb02i9mxi6"))))
+ (build-system r-build-system)
+ (home-page "https://cran.r-project.org/web/packages/yaml/")
+ (synopsis "Methods to convert R data to YAML and back")
+ (description
+ "This package implements the libyaml YAML 1.1 parser and
+emitter (http://pyyaml.org/wiki/LibYAML) for R.")
+ (license license:bsd-3)))
+
+(define-public r-knitr
+ (package
+ (name "r-knitr")
+ (version "1.11")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "knitr" version))
+ (sha256
+ (base32
+ "1ikjla0hnpjfkdbydqhhqypc0aiizbi4nyn8c694sdk9ca4jasdd"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-evaluate" ,r-evaluate)
+ ("r-digest" ,r-digest)
+ ("r-formatr" ,r-formatr)
+ ("r-highr" ,r-highr)
+ ("r-markdown" ,r-markdown)
+ ("r-stringr" ,r-stringr)
+ ("r-yaml" ,r-yaml)))
+ (home-page "http://yihui.name/knitr/")
+ (synopsis "General-purpose package for dynamic report generation in R")
+ (description
+ "This package provides a general-purpose tool for dynamic report
+generation in R using Literate Programming techniques.")
+ ;; The code is released under any version of the GPL. As it is used by
+ ;; r-markdown which is available under GPLv2 only, we have chosen GPLv2+
+ ;; here.
+ (license license:gpl2+)))
+
+(define-public r-microbenchmark
+ (package
+ (name "r-microbenchmark")
+ (version "1.4-2")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "microbenchmark" version))
+ (sha256
+ (base32
+ "05yxvdnkxr2ll94h6f2m5sn3gg7vrlm9nbdxgmj2g8cp8gfxpfkg"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-ggplot2" ,r-ggplot2)))
+ (home-page "https://cran.r-project.org/web/packages/microbenchmark/")
+ (synopsis "Accurate timing functions for R")
+ (description
+ "This package provides infrastructure to accurately measure and compare
+the execution time of R expressions.")
+ (license license:bsd-2)))
+
+(define-public r-codetools
+ (package
+ (name "r-codetools")
+ (version "0.2-14")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "codetools" version))
+ (sha256
+ (base32
+ "0y9r4m2b8xgavr89sc179knzwpz54xljbc1dinpq2q07i4xn0397"))))
+ (build-system r-build-system)
+ (home-page "https://cran.r-project.org/web/packages/codetools/index.html")
+ (synopsis "Code analysis tools for R")
+ (description "This package provides code analysis tools for R.")
+ (license license:gpl3+)))
+
+(define-public r-pryr
+ (package
+ (name "r-pryr")
+ (version "0.1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "pryr" version))
+ (sha256
+ (base32
+ "1in350a8hxwf580afavasvn3jc7x2p1b7nlwmj1scakfz74vghk5"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-stringr" ,r-stringr)
+ ("r-codetools" ,r-codetools)))
+ (native-inputs
+ `(("r-rcpp" ,r-rcpp)))
+ (home-page "https://github.com/hadley/pryr")
+ (synopsis "Tools for computing on the R language")
+ (description
+ "This package provides useful tools to pry back the covers of R and
+understand the language at a deeper level.")
+ (license license:gpl2)))
+
+(define-public r-memoise
+ (package
+ (name "r-memoise")
+ (version "0.2.1")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "memoise" version))
+ (sha256
+ (base32
+ "19wm4b3kq6xva43kga3xydnl7ybl5mq7b4y2fczgzzjz63jd75y4"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-digest" ,r-digest)))
+ (home-page "http://github.com/hadley/memoise")
+ (synopsis "Memoise functions for R")
+ (description
+ "This R package allows to cache the results of a function so that when
+you call it again with the same arguments it returns the pre-computed value.")
+ (license license:expat)))
+
+(define-public r-crayon
+ (package
+ (name "r-crayon")
+ (version "1.3.1")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "crayon" version))
+ (sha256
+ (base32
+ "0d38fm06h272a8iqlc0d45m2rh36giwqw7mwq4z8hkp4vs975fmm"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-memoise" ,r-memoise)))
+ (home-page "https://github.com/gaborcsardi/crayon")
+ (synopsis "Colored terminal output for R")
+ (description
+ "Colored terminal output on terminals that support ANSI color and
+highlight codes. It also works in Emacs ESS. ANSI color support is
+automatically detected. Colors and highlighting can be combined and nested.
+New styles can also be created easily. This package was inspired by the
+\"chalk\" JavaScript project.")
+ (license license:expat)))
+
+(define-public r-testthat
+ (package
+ (name "r-testthat")
+ (version "0.10.0")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "testthat" version))
+ (sha256
+ (base32
+ "0b3akwcx5mv9dmi8vssbk91hr3yrrdxd2fm6zhr31fnyz8kjx4pw"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-digest" ,r-digest)
+ ("r-crayon" ,r-crayon)))
+ (home-page "https://github.com/hadley/testthat")
+ (synopsis "Unit testing for R")
+ (description
+ "This package provides a unit testing system for R designed to be fun,
+flexible and easy to set up.")
+ (license license:expat)))
+
+(define-public r-r6
+ (package
+ (name "r-r6")
+ (version "2.1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "R6" version))
+ (sha256
+ (base32
+ "16qq35bgxgswf989yvsqkb6fv7srpf8n8dv2s2c0z9n6zgmwq66m"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-knitr" ,r-knitr)
+ ("r-microbenchmark" ,r-microbenchmark)
+ ("r-pryr" ,r-pryr)
+ ("r-testthat" ,r-testthat)
+ ("r-ggplot2" ,r-ggplot2)
+ ("r-scales" ,r-scales)))
+ (home-page "https://github.com/wch/R6/")
+ (synopsis "Classes with reference semantics in R")
+ (description
+ "The R6 package allows the creation of classes with reference semantics,
+similar to R's built-in reference classes. Compared to reference classes, R6
+classes are simpler and lighter-weight, and they are not built on S4 classes
+so they do not require the methods package. These classes allow public and
+private members, and they support inheritance, even when the classes are
+defined in different packages.")
+ (license license:expat)))
+
+(define-public r-dplyr
+ (package
+ (name "r-dplyr")
+ (version "0.4.3")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "dplyr" version))
+ (sha256
+ (base32
+ "1p8rbn4p4yrx2840dapwiahf9iqa8gnvd35nyc200wfhmrxlqdlc"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-assertthat" ,r-assertthat)
+ ("r-r6" ,r-r6)
+ ("r-magrittr" ,r-magrittr)
+ ("r-lazyeval" ,r-lazyeval)
+ ("r-dbi" ,r-dbi)))
+ (native-inputs
+ `(("r-rcpp" ,r-rcpp)
+ ("r-bh" ,r-bh)))
+ (home-page "https://github.com/hadley/dplyr")
+ (synopsis "Tools for working with data frames in R")
+ (description
+ "dplyr is the next iteration of plyr. It is focussed on tools for
+working with data frames. It has three main goals: 1) identify the most
+important data manipulation tools needed for data analysis and make them easy
+to use in R; 2) provide fast performance for in-memory data by writing key
+pieces of code in C++; 3) use the same code interface to work with data no
+matter where it is stored, whether in a data frame, a data table or
+database.")
+ (license license:expat)))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 7f4f7f8f0e..b4c518acf7 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
@@ -34,10 +35,12 @@
#:use-module (guix build-system trivial)
#:use-module (guix build utils)
#:use-module (gnu packages apr)
+ #:use-module (gnu packages asciidoc)
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages cook)
#:use-module (gnu packages curl)
+ #:use-module (gnu packages docbook)
#:use-module (gnu packages ed)
#:use-module (gnu packages file)
#:use-module (gnu packages flex)
@@ -681,6 +684,45 @@ sources files, and documents. It fills a similar role to the free software
RCS, PRCS, and Aegis packages.")
(license gpl1+)))
+(define-public cvs-fast-export
+ (package
+ (name "cvs-fast-export")
+ (version "1.33")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://www.catb.org/~esr/"
+ name "/" name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1c3s4nacbwlaaccx1fr7hf72kxxrzy49y2rdz5hhqbk8r29vm8w1"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases (delete 'configure))
+ #:make-flags
+ (list "CC=gcc" (string-append "prefix?=" (assoc-ref %outputs "out")))))
+ (inputs `(("git" ,git)))
+ (native-inputs `(("asciidoc" ,asciidoc)
+ ("docbook-xml" ,docbook-xml)
+ ("docbook-xsl" ,docbook-xsl)
+ ("xmllint" ,libxml2)
+ ("xsltproc" ,libxslt)
+ ;; These are needed for the tests.
+ ("cvs" ,cvs)
+ ("python" ,python-2)
+ ("rcs" ,rcs)))
+ (home-page "http://www.catb.org/esr/cvs-fast-export/")
+ (synopsis "Export an RCS or CVS history as a fast-import stream")
+ (description "This program analyzes a collection of RCS files in a CVS
+repository (or outside of one) and, when possible, emits an equivalent history
+in the form of a fast-import stream. Not all possible histories can be
+rendered this way; the program tries to emit useful warnings when it can't.
+
+The program can also produce a visualization of the resulting commit directed
+acyclic graph (DAG) in the input format of @uref{http://www.graphviz.org,
+Graphviz}. The package also includes @command{cvssync}, a tool for mirroring
+masters from remote CVS hosts.")
+ (license gpl2+)))
+
(define-public vc-dwim
(package
(name "vc-dwim")
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 4cd5cd9b11..6af87d2657 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -63,7 +63,7 @@ endpoints.")
(version "0.5.3")
(source (origin
(method url-fetch)
- (uri (string-append "http://www.unix-ag.uni-kl.de/~massar/vpnc/vpnc-"
+ (uri (string-append "https://www.unix-ag.uni-kl.de/~massar/vpnc/vpnc-"
version ".tar.gz"))
(sha256 (base32
"1128860lis89g1s21hqxvap2nq426c9j4bvgghncc1zj0ays7kj6"))
diff --git a/gnu/system.scm b/gnu/system.scm
index ea6e9c13ea..cee5f37bcb 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -83,6 +83,11 @@
operating-system-derivation
operating-system-profile
operating-system-grub.cfg
+ operating-system-etc-directory
+ operating-system-locale-directory
+ operating-system-boot-script
+
+ file-union
local-host-aliases
%setuid-programs
@@ -689,7 +694,7 @@ variable is not set---hence the need for this wrapper."
(apply execl #$modprobe
(cons #$modprobe (cdr (command-line))))))))
-(define (operating-system-activation-script os)
+(define* (operating-system-activation-script os #:key container?)
"Return the activation script for OS---i.e., the code that \"activates\" the
stateful part of OS, including user accounts and groups, special directories,
etc."
@@ -763,12 +768,15 @@ etc."
;; Tell the kernel to use our 'modprobe' command.
(activate-modprobe #$modprobe)
- ;; Tell the kernel where firmware is.
- (activate-firmware
- (string-append #$firmware "/lib/firmware"))
-
- ;; Let users debug their own processes!
- (activate-ptrace-attach)
+ ;; Tell the kernel where firmware is, unless we are
+ ;; activating a container.
+ #$@(if container?
+ #~()
+ ;; Tell the kernel where firmware is.
+ #~((activate-firmware
+ (string-append #$firmware "/lib/firmware"))
+ ;; Let users debug their own processes!
+ (activate-ptrace-attach)))
;; Run the services' activation snippets.
;; TODO: Use 'load-compiled'.
@@ -777,11 +785,13 @@ etc."
;; Set up /run/current-system.
(activate-current-system)))))
-(define (operating-system-boot-script os)
+(define* (operating-system-boot-script os #:key container?)
"Return the boot script for OS---i.e., the code started by the initrd once
-we're running in the final root."
+we're running in the final root. When CONTAINER? is true, skip all
+hardware-related operations as necessary when booting a Linux container."
(mlet* %store-monad ((services (operating-system-services os))
- (activate (operating-system-activation-script os))
+ (activate (operating-system-activation-script
+ os #:container? container?))
(dmd-conf (dmd-configuration-file services)))
(gexp->file "boot"
#~(begin
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index b177f93398..8155b273e3 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -47,7 +47,6 @@
%binary-format-file-system
%shared-memory-file-system
%pseudo-terminal-file-system
- %devtmpfs-file-system
%immutable-store
%control-groups
%elogind-file-systems
@@ -186,17 +185,6 @@ UUID representation."
(type "binfmt_misc")
(check? #f)))
-(define %devtmpfs-file-system
- ;; /dev as a 'devtmpfs' file system, needed for udev.
- (file-system
- (device "none")
- (mount-point "/dev")
- (type "devtmpfs")
- (check? #f)
-
- ;; Mount it from the initrd so /dev/pts & co. can then be mounted over it.
- (needed-for-boot? #t)))
-
(define %tty-gid
;; ID of the 'tty' group. Allocate it statically to make it easy to refer
;; to it from here and from the 'tty' group definitions.
@@ -282,8 +270,7 @@ UUID representation."
(define %base-file-systems
;; List of basic file systems to be mounted. Note that /proc and /sys are
;; currently mounted by the initrd.
- (append (list %devtmpfs-file-system
- %pseudo-terminal-file-system
+ (append (list %pseudo-terminal-file-system
%shared-memory-file-system
%immutable-store)
%elogind-file-systems
diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm
new file mode 100644
index 0000000000..fdf7460872
--- /dev/null
+++ b/gnu/system/linux-container.scm
@@ -0,0 +1,119 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 David Thompson <davet@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu system linux-container)
+ #:use-module (ice-9 match)
+ #:use-module (srfi srfi-1)
+ #:use-module (guix config)
+ #:use-module (guix store)
+ #:use-module (guix gexp)
+ #:use-module (guix derivations)
+ #:use-module (guix monads)
+ #:use-module (gnu build linux-container)
+ #:use-module (gnu system)
+ #:use-module (gnu system file-systems)
+ #:export (mapping->file-system
+ system-container
+ containerized-operating-system
+ container-script))
+
+(define (mapping->file-system mapping)
+ "Return a file system that realizes MAPPING."
+ (match mapping
+ (($ <file-system-mapping> source target writable?)
+ (file-system
+ (mount-point target)
+ (device source)
+ (type "none")
+ (flags (if writable?
+ '(bind-mount)
+ '(bind-mount read-only)))
+ (check? #f)
+ (create-mount-point? #t)))))
+
+(define (system-container os)
+ "Return a derivation that builds OS as a Linux container."
+ (mlet* %store-monad
+ ((profile (operating-system-profile os))
+ (etc (operating-system-etc-directory os))
+ (boot (operating-system-boot-script os #:container? #t))
+ (locale (operating-system-locale-directory os)))
+ (file-union "system-container"
+ `(("boot" ,#~#$boot)
+ ("profile" ,#~#$profile)
+ ("locale" ,#~#$locale)
+ ("etc" ,#~#$etc)))))
+
+(define (containerized-operating-system os mappings)
+ "Return an operating system based on OS for use in a Linux container
+environment. MAPPINGS is a list of <file-system-mapping> to realize in the
+containerized OS."
+ (define user-file-systems
+ (remove (lambda (fs)
+ (let ((target (file-system-mount-point fs))
+ (source (file-system-device fs)))
+ (or (string=? target (%store-prefix))
+ (string=? target "/")
+ (string-prefix? "/dev/" source)
+ (string-prefix? "/dev" target)
+ (string-prefix? "/sys" target))))
+ (operating-system-file-systems os)))
+
+ (define (mapping->fs fs)
+ (file-system (inherit (mapping->file-system fs))
+ (needed-for-boot? #t)))
+
+ (operating-system (inherit os)
+ (swap-devices '()) ; disable swap
+ (file-systems (append (map mapping->fs (cons %store-mapping mappings))
+ %container-file-systems
+ user-file-systems))))
+
+(define* (container-script os #:key (mappings '()))
+ "Return a derivation of a script that runs OS as a Linux container.
+MAPPINGS is a list of <file-system> objects that specify the files/directories
+that will be shared with the host system."
+ (let* ((os (containerized-operating-system os mappings))
+ (file-systems (filter file-system-needed-for-boot?
+ (operating-system-file-systems os)))
+ (specs (map file-system->spec file-systems)))
+
+ (mlet* %store-monad ((os-drv (system-container os)))
+
+ (define script
+ #~(begin
+ (use-modules (gnu build linux-container)
+ (guix build utils))
+
+ (call-with-container '#$specs
+ (lambda ()
+ (setenv "HOME" "/root")
+ (setenv "TMPDIR" "/tmp")
+ (setenv "GUIX_NEW_SYSTEM" #$os-drv)
+ (for-each mkdir-p '("/run" "/bin" "/etc" "/home" "/var"))
+ (primitive-load (string-append #$os-drv "/boot"))))))
+
+ (gexp->script "run-container" script
+ #:modules '((ice-9 match)
+ (srfi srfi-98)
+ (guix config)
+ (guix utils)
+ (guix build utils)
+ (guix build syscalls)
+ (gnu build file-systems)
+ (gnu build linux-container))))))
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 48b855b567..519373fe34 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -182,6 +182,7 @@ loaded at boot time in the order in which they appear."
"isci" ;for SAS controllers like Intel C602
"usb-storage" "uas" ;for the installation image etc.
"usbkbd" "usbhid" ;USB keyboards, for debugging
+ "dm-crypt" "xts" ;for encrypted root partitions
,@(if (or virtio? qemu-networking?)
virtio-modules
'())