Merge branch 'master' into core-updates

This commit is contained in:
Mark H Weaver 2016-01-19 00:18:37 -05:00
commit afe9f40949
47 changed files with 2156 additions and 400 deletions

View File

@ -164,11 +164,6 @@ endif BUILD_DAEMON_OFFLOAD
# Internal module with test suite support. # Internal module with test suite support.
dist_noinst_DATA = guix/tests.scm dist_noinst_DATA = guix/tests.scm
# Because of the autoload hack in (guix build download), we must build it
# first to avoid errors on systems where (gnutls) is unavailable.
guix/scripts/download.go: guix/build/download.go
guix/download.go: guix/build/download.go
# Linux-Libre configurations. # Linux-Libre configurations.
KCONFIGS = \ KCONFIGS = \
gnu/packages/linux-libre-i686.conf \ gnu/packages/linux-libre-i686.conf \
@ -325,6 +320,7 @@ EXTRA_DIST = \
CODE-OF-CONDUCT \ CODE-OF-CONDUCT \
.dir-locals.el \ .dir-locals.el \
build-aux/build-self.scm \ build-aux/build-self.scm \
build-aux/compile-all.scm \
build-aux/hydra/gnu-system.scm \ build-aux/hydra/gnu-system.scm \
build-aux/hydra/demo-os.scm \ build-aux/hydra/demo-os.scm \
build-aux/hydra/guix.scm \ build-aux/hydra/guix.scm \
@ -364,31 +360,21 @@ CLEANFILES = \
$(GOBJECTS) \ $(GOBJECTS) \
$(SCM_TESTS:tests/%.scm=%.log) $(SCM_TESTS:tests/%.scm=%.log)
AM_V_GUILEC = $(AM_V_GUILEC_$(V))
AM_V_GUILEC_ = $(AM_V_GUILEC_$(AM_DEFAULT_VERBOSITY))
AM_V_GUILEC_0 = @echo " GUILEC" $@;
# Flags passed to 'guild compile'.
GUILD_COMPILE_FLAGS = \
-Wformat -Wunbound-variable -Warity-mismatch
# Unset 'GUILE_LOAD_COMPILED_PATH' altogether while compiling. Otherwise, if # Unset 'GUILE_LOAD_COMPILED_PATH' altogether while compiling. Otherwise, if
# $GUILE_LOAD_COMPILED_PATH contains $(moduledir), we may find .go files in # $GUILE_LOAD_COMPILED_PATH contains $(moduledir), we may find .go files in
# there that are newer than the local .scm files (for instance because the # there that are newer than the local .scm files (for instance because the
# user ran 'make install' recently). When that happens, we end up loading # user ran 'make install' recently). When that happens, we end up loading
# those previously-installed .go files, which may be stale, thereby breaking # those previously-installed .go files, which may be stale, thereby breaking
# the whole thing. # the whole thing.
# %.go: make-go ; @:
# XXX: Use the C locale for when Guile lacks make-go: $(MODULES) guix/config.scm guix/tests.scm
# <http://git.sv.gnu.org/cgit/guile.git/commit/?h=stable-2.0&id=e2c6bf3866d1186c60bacfbd4fe5037087ee5e3f>. $(AM_V_at)echo "Compiling Scheme modules..." ; \
.scm.go:
$(AM_V_GUILEC)$(MKDIR_P) `dirname "$@"` ; \
unset GUILE_LOAD_COMPILED_PATH ; \ unset GUILE_LOAD_COMPILED_PATH ; \
LC_ALL=C \ host=$(host) srcdir="$(top_srcdir)" \
$(top_builddir)/pre-inst-env \ $(top_builddir)/pre-inst-env \
$(GUILD) compile -L "$(top_builddir)" -L "$(top_srcdir)" \ $(GUILE) -L "$(top_builddir)" -L "$(top_srcdir)" \
$(GUILD_COMPILE_FLAGS) --target="$(host)" \ --no-auto-compile \
-o "$@" "$<" -s "$(top_srcdir)"/build-aux/compile-all.scm $^
SUFFIXES = .go SUFFIXES = .go
@ -480,6 +466,6 @@ assert-final-inputs-self-contained:
$(top_builddir)/pre-inst-env "$(GUILE)" \ $(top_builddir)/pre-inst-env "$(GUILE)" \
"$(top_srcdir)/build-aux/check-final-inputs-self-contained.scm" "$(top_srcdir)/build-aux/check-final-inputs-self-contained.scm"
.PHONY: sync-descriptions gen-ChangeLog gen-AUTHORS clean-go .PHONY: sync-descriptions gen-ChangeLog gen-AUTHORS clean-go make-go
.PHONY: assert-no-store-file-names assert-binaries-available .PHONY: assert-no-store-file-names assert-binaries-available
.PHONY: assert-final-inputs-self-contained .PHONY: assert-final-inputs-self-contained

1
NEWS
View File

@ -14,6 +14,7 @@ Please send Guix bug reports to bug-guix@gnu.org.
** Package management ** Package management
*** Emacs interface for system generations
*** Emacs interface for hydra.gnu.org *** Emacs interface for hydra.gnu.org
*** Changes in Emacs interface variables *** Changes in Emacs interface variables
In the following names, BUFFER-TYPE means "info" or "list"; In the following names, BUFFER-TYPE means "info" or "list";

82
build-aux/compile-all.scm Normal file
View File

@ -0,0 +1,82 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;;
;;; 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/>.
(use-modules (system base target)
(ice-9 match)
(ice-9 threads)
(guix build utils))
(define compile-options '(format unbound-variable arity-mismatch))
(define host (getenv "host"))
(define srcdir (getenv "srcdir"))
(define (relative-file file)
(if (string-prefix? (string-append srcdir "/") file)
(string-drop file (+ 1 (string-length srcdir)))
file))
(define (file-mtime<? f1 f2)
(< (stat:mtime (stat f1))
(stat:mtime (stat f2))))
(define (scm->go file)
(let* ((relative (relative-file file))
(without-extension (string-drop-right relative 4)))
(string-append without-extension ".go")))
(define (file-needs-compilation? file)
(let ((go (scm->go file)))
(or (not (file-exists? go))
(file-mtime<? go file))))
(define (file->module file)
(let* ((relative (relative-file file))
(module-path (string-drop-right relative 4)))
(map string->symbol
(string-split module-path #\/))))
;;; To work around <http://bugs.gnu.org/15602> (FIXME), we want to load all
;;; files to be compiled first. We do this via resolve-interface so that the
;;; top-level of each file (module) is only executed once.
(define (load-module-file file)
(let ((module (file->module file)))
(format #t " LOAD ~a~%" module)
(resolve-interface module)))
(define (compile-file* file output-mutex)
(let ((go (scm->go file)))
(with-mutex output-mutex
(format #t " GUILEC ~a~%" go)
(force-output))
(mkdir-p (dirname go))
(with-target host
(lambda ()
(compile-file file
#:output-file go
#:opts compile-options)))))
(match (command-line)
((_ . files)
(let ((files (filter file-needs-compilation? files)))
(for-each load-module-file files)
(let ((mutex (make-mutex)))
(par-for-each (lambda (file)
(compile-file* file mutex))
files)))))

View File

@ -155,7 +155,7 @@ Display all installed packages.
Display obsolete packages (the packages that are installed in a profile Display obsolete packages (the packages that are installed in a profile
but cannot be found among available packages). but cannot be found among available packages).
@item M-x guix-search-by-name @item M-x guix-packages-by-name
Display package(s) with the specified name. Display package(s) with the specified name.
@item M-x guix-search-by-regexp @item M-x guix-search-by-regexp
@ -163,6 +163,11 @@ Search for packages by a specified regexp. By default ``name'',
``synopsis'' and ``description'' of the packages will be searched. This ``synopsis'' and ``description'' of the packages will be searched. This
can be changed by modifying @code{guix-package-search-params} variable. can be changed by modifying @code{guix-package-search-params} variable.
@item M-x guix-search-by-name
Search for packages with names matching a specified regexp. This
command is the same as @code{guix-search-by-regexp}, except only a
package ``name'' is searched.
@end table @end table
By default, these commands display each output on a separate line. If By default, these commands display each output on a separate line. If
@ -191,6 +196,14 @@ date/time prompt,,, org, The Org Manual}).
@end table @end table
Analogously on GuixSD you can also display system generations:
@table @kbd
@item M-x guix-system-generations
@item M-x guix-last-system-generations
@item M-x guix-system-generations-by-time
@end table
You can also invoke the @command{guix pull} command (@pxref{Invoking You can also invoke the @command{guix pull} command (@pxref{Invoking
guix pull}) from Emacs using: guix pull}) from Emacs using:

View File

@ -502,6 +502,13 @@ on a recent machine; subsequent runs will be faster because the store
that is created for test purposes will already have various things in that is created for test purposes will already have various things in
cache. cache.
It is also possible to run a subset of the tests by defining the
@code{TESTS} makefile variable as in this example:
@example
make check TESTS="tests/store.scm tests/cpio.scm"
@end example
Upon failure, please email @email{bug-guix@@gnu.org} and attach the Upon failure, please email @email{bug-guix@@gnu.org} and attach the
@file{test-suite.log} file. When @file{tests/@var{something}.scm} @file{test-suite.log} file. When @file{tests/@var{something}.scm}
fails, please also attach the @file{@var{something}.log} file available fails, please also attach the @file{@var{something}.log} file available
@ -627,6 +634,11 @@ This way, the value of @code{TMPDIR} does not leak inside build
environments, which avoids discrepancies in cases where build processes environments, which avoids discrepancies in cases where build processes
capture the name of their build tree. capture the name of their build tree.
@vindex http_proxy
The daemon also honors the @code{http_proxy} environment variable for
HTTP downloads it performs, be it for fixed-output derivations
(@pxref{Derivations}) or for substitutes (@pxref{Substitutes}).
If you are installing Guix as an unprivileged user, it is still possible If you are installing Guix as an unprivileged user, it is still possible
to run @command{guix-daemon} provided you pass @code{--disable-chroot}. to run @command{guix-daemon} provided you pass @code{--disable-chroot}.
However, build processes will not be isolated from one another, and not However, build processes will not be isolated from one another, and not
@ -1678,6 +1690,14 @@ Guix ignores substitutes that are not signed, or that are not signed by
one of the keys listed in the ACL. It also detects and raises an error one of the keys listed in the ACL. It also detects and raises an error
when attempting to use a substitute that has been tampered with. when attempting to use a substitute that has been tampered with.
@vindex http_proxy
Substitutes are downloaded over HTTP. The @code{http_proxy} environment
variable can be set in the environment of @command{guix-daemon} and is
honored for downloads of substitutes. Note that the value of
@code{http_proxy} in the environment where @command{guix build},
@command{guix package}, and other client commands are run has
@emph{absolutely no effect}.
The substitute mechanism can be disabled globally by running The substitute mechanism can be disabled globally by running
@code{guix-daemon} with @code{--no-substitutes} (@pxref{Invoking @code{guix-daemon} with @code{--no-substitutes} (@pxref{Invoking
guix-daemon}). It can also be disabled temporarily by passing the guix-daemon}). It can also be disabled temporarily by passing the
@ -8842,6 +8862,50 @@ The @code{base-initrd} procedure also handles common use cases that
involves using the system as a QEMU guest, or as a ``live'' system whose involves using the system as a QEMU guest, or as a ``live'' system whose
root file system is volatile. root file system is volatile.
The initial RAM disk produced by @code{base-initrd} honors several
options passed on the Linux kernel command line (that is, arguments
passed @i{via} GRUB's @code{linux} command, or with QEMU's
@code{-append} option), notably:
@table @code
@item --load=@var{boot}
Tell the initial RAM disk to load @var{boot}, a file containing a Scheme
program, once it has mounted the root file system.
GuixSD uses this option to yield control to a boot program that runs the
service activation programs and then spawns GNU@tie{}dmd, the
initialization system.
@item --root=@var{root}
Mount @var{root} as the root file system. @var{root} can be a device
device name like @code{/dev/sda1}, a partition label, or a partition
UUID.
@item --system=@var{system}
Have @file{/run/booted-system} and @file{/run/current-system} point to
@var{system}.
@item modprobe.blacklist=@var{modules}@dots{}
@cindex module, black-listing
@cindex black list, of kernel modules
Instruct the initial RAM disk as well as the @command{modprobe} command
(from the kmod package) to refuse to load @var{modules}. @var{modules}
must be a comma-separated list of module names---e.g.,
@code{usbkbd,9pnet}.
@item --repl
Start a read-eval-print loop (REPL) from the initial RAM disk before it
tries to load kernel modules and to mount the root file system. Our
marketing team calls it @dfn{boot-to-Guile}. The Schemer in you will
love it. @xref{Using Guile Interactively,,, guile, GNU Guile Reference
Manual}, for more information on Guile's REPL.
@end table
Now that you know all the features that initial RAM disks produced by
@code{base-initrd} provide, here is how to use it and customize it
further.
@deffn {Monadic Procedure} base-initrd @var{file-systems} @ @deffn {Monadic Procedure} base-initrd @var{file-systems} @
[#:qemu-networking? #f] [#:virtio? #f] [#:volatile-root? #f] @ [#:qemu-networking? #f] [#:virtio? #f] [#:volatile-root? #f] @
[#:extra-modules '()] [#:mapped-devices '()] [#:extra-modules '()] [#:mapped-devices '()]

View File

@ -47,6 +47,7 @@ ELFILES = \
emacs/guix-ui.el \ emacs/guix-ui.el \
emacs/guix-ui-package.el \ emacs/guix-ui-package.el \
emacs/guix-ui-generation.el \ emacs/guix-ui-generation.el \
emacs/guix-ui-system-generation.el \
emacs/guix-utils.el emacs/guix-utils.el
if HAVE_EMACS if HAVE_EMACS

View File

@ -1,6 +1,6 @@
;;; guix-base.el --- Common definitions -*- lexical-binding: t -*- ;;; guix-base.el --- Common definitions -*- lexical-binding: t -*-
;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com> ;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix. ;; This file is part of GNU Guix.
@ -91,14 +91,25 @@ For the meaning of location, see `guix-find-location'."
"Return the file name of a PROFILE's GENERATION." "Return the file name of a PROFILE's GENERATION."
(format "%s-%s-link" profile generation)) (format "%s-%s-link" profile generation))
(defun guix-manifest-file (profile &optional generation) (defun guix-packages-profile (profile &optional generation system?)
"Return a directory where packages are installed for the
PROFILE's GENERATION.
If SYSTEM? is non-nil, then PROFILE is considered to be a system
profile. Unlike usual profiles, for a system profile, packages
are placed in 'profile' subdirectory."
(let ((profile (if generation
(guix-generation-file profile generation)
profile)))
(if system?
(expand-file-name "profile" profile)
profile)))
(defun guix-manifest-file (profile &optional generation system?)
"Return the file name of a PROFILE's manifest. "Return the file name of a PROFILE's manifest.
If GENERATION number is specified, return manifest file name for See `guix-packages-profile'."
this generation."
(expand-file-name "manifest" (expand-file-name "manifest"
(if generation (guix-packages-profile profile generation system?)))
(guix-generation-file profile generation)
profile)))
;;;###autoload ;;;###autoload
(defun guix-edit (id-or-name) (defun guix-edit (id-or-name)

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com> ;;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -61,7 +61,8 @@
(guix scripts lint) (guix scripts lint)
(guix scripts package) (guix scripts package)
(guix scripts pull) (guix scripts pull)
(gnu packages)) (gnu packages)
(gnu system))
(define-syntax-rule (first-or-false lst) (define-syntax-rule (first-or-false lst)
(and (not (null? lst)) (and (not (null? lst))
@ -137,28 +138,26 @@ return two values: name and version. For example, for SPEC
(define (manifest-entries->package-specifications entries) (define (manifest-entries->package-specifications entries)
(map manifest-entry->package-specification entries)) (map manifest-entry->package-specification entries))
(define (generation-package-specifications profile number) (define (profile-package-specifications profile)
"Return a list of package specifications for generation NUMBER." "Return a list of package specifications for PROFILE."
(let ((manifest (profile-manifest (let ((manifest (profile-manifest profile)))
(generation-file-name profile number))))
(manifest-entries->package-specifications (manifest-entries->package-specifications
(manifest-entries manifest)))) (manifest-entries manifest))))
(define (generation-package-specifications+paths profile number) (define (profile->specifications+paths profile)
"Return a list of package specifications and paths for generation NUMBER. "Return a list of package specifications and paths for PROFILE.
Each element of the list is a list of the package specification and its path." Each element of the list is a list of the package specification and its path."
(let ((manifest (profile-manifest (let ((manifest (profile-manifest profile)))
(generation-file-name profile number))))
(map (lambda (entry) (map (lambda (entry)
(list (manifest-entry->package-specification entry) (list (manifest-entry->package-specification entry)
(manifest-entry-item entry))) (manifest-entry-item entry)))
(manifest-entries manifest)))) (manifest-entries manifest))))
(define (generation-difference profile number1 number2) (define (profile-difference profile1 profile2)
"Return a list of package specifications for outputs installed in generation "Return a list of package specifications for outputs installed in PROFILE1
NUMBER1 and not installed in generation NUMBER2." and not installed in PROFILE2."
(let ((specs1 (generation-package-specifications profile number1)) (let ((specs1 (profile-package-specifications profile1))
(specs2 (generation-package-specifications profile number2))) (specs2 (profile-package-specifications profile2)))
(lset-difference string=? specs1 specs2))) (lset-difference string=? specs1 specs2)))
(define (manifest-entries->hash-table entries) (define (manifest-entries->hash-table entries)
@ -670,7 +669,6 @@ ENTRIES is a list of installed manifest entries."
(id . ,(apply-to-rest ids->package-patterns)) (id . ,(apply-to-rest ids->package-patterns))
(name . ,(apply-to-rest specifications->package-patterns)) (name . ,(apply-to-rest specifications->package-patterns))
(installed . ,manifest-package-proc) (installed . ,manifest-package-proc)
(generation . ,manifest-package-proc)
(obsolete . ,(apply-to-first obsolete-package-patterns)) (obsolete . ,(apply-to-first obsolete-package-patterns))
(regexp . ,regexp-proc) (regexp . ,regexp-proc)
(all-available . ,all-proc) (all-available . ,all-proc)
@ -679,7 +677,6 @@ ENTRIES is a list of installed manifest entries."
(id . ,(apply-to-rest ids->output-patterns)) (id . ,(apply-to-rest ids->output-patterns))
(name . ,(apply-to-rest specifications->output-patterns)) (name . ,(apply-to-rest specifications->output-patterns))
(installed . ,manifest-output-proc) (installed . ,manifest-output-proc)
(generation . ,manifest-output-proc)
(obsolete . ,(apply-to-first obsolete-output-patterns)) (obsolete . ,(apply-to-first obsolete-output-patterns))
(regexp . ,regexp-proc) (regexp . ,regexp-proc)
(all-available . ,all-proc) (all-available . ,all-proc)
@ -694,16 +691,13 @@ ENTRIES is a list of installed manifest entries."
search-type search-vals) search-type search-vals)
"Return information about packages or package outputs. "Return information about packages or package outputs.
See 'entry-sexps' for details." See 'entry-sexps' for details."
(let* ((profile (if (eq? search-type 'generation) (let* ((manifest (profile-manifest profile))
(generation-file-name profile (car search-vals))
profile))
(manifest (profile-manifest profile))
(patterns (if (and (eq? entry-type 'output) (patterns (if (and (eq? entry-type 'output)
(eq? search-type 'generation-diff)) (eq? search-type 'profile-diff))
(match search-vals (match search-vals
((g1 g2) ((p1 p2)
(map specification->output-pattern (map specification->output-pattern
(generation-difference profile g1 g2))) (profile-difference p1 p2)))
(_ '())) (_ '()))
(apply (patterns-maker entry-type search-type) (apply (patterns-maker entry-type search-type)
manifest search-vals))) manifest search-vals)))
@ -765,6 +759,38 @@ See 'entry-sexps' for details."
params))) params)))
(map ->sexp generations))) (map ->sexp generations)))
(define system-generation-boot-parameters
(memoize
(lambda (profile generation)
"Return boot parameters for PROFILE's system GENERATION."
(let* ((gen-file (generation-file-name profile generation))
(param-file (string-append gen-file "/parameters")))
(call-with-input-file param-file read-boot-parameters)))))
(define (system-generation-param-alist profile)
"Return an alist of system generation parameters and procedures for
PROFILE."
(append (generation-param-alist profile)
`((label . ,(lambda (gen)
(boot-parameters-label
(system-generation-boot-parameters
profile gen))))
(root-device . ,(lambda (gen)
(boot-parameters-root-device
(system-generation-boot-parameters
profile gen))))
(kernel . ,(lambda (gen)
(boot-parameters-kernel
(system-generation-boot-parameters
profile gen)))))))
(define (system-generation-sexps profile params search-type search-vals)
"Return an alist with information about system generations."
(let ((generations (find-generations profile search-type search-vals))
(->sexp (object-transformer (system-generation-param-alist profile)
params)))
(map ->sexp generations)))
;;; Getting package/output/generation entries (alists). ;;; Getting package/output/generation entries (alists).
@ -809,6 +835,9 @@ parameter/value pairs."
((generation) ((generation)
(generation-sexps profile params (generation-sexps profile params
search-type search-vals)) search-type search-vals))
((system-generation)
(system-generation-sexps profile params
search-type search-vals))
(else (entry-type-error entry-type)))) (else (entry-type-error entry-type))))

View File

@ -55,14 +55,7 @@
(obsolete (obsolete
(0 "No obsolete packages in profile '%s'." profile) (0 "No obsolete packages in profile '%s'." profile)
(1 "A single obsolete package in profile '%s'." profile) (1 "A single obsolete package in profile '%s'." profile)
(many "%d obsolete packages in profile '%s'." count profile)) (many "%d obsolete packages in profile '%s'." count profile)))
(generation
(0 "No packages installed in generation %d of profile '%s'."
val profile)
(1 "A single package installed in generation %d of profile '%s'."
val profile)
(many "%d packages installed in generation %d of profile '%s'."
count val profile)))
(output (output
(id (id
@ -91,14 +84,7 @@
(0 "No obsolete package outputs in profile '%s'." profile) (0 "No obsolete package outputs in profile '%s'." profile)
(1 "A single obsolete package output in profile '%s'." profile) (1 "A single obsolete package output in profile '%s'." profile)
(many "%d obsolete package outputs in profile '%s'." count profile)) (many "%d obsolete package outputs in profile '%s'." count profile))
(generation (profile-diff
(0 "No package outputs installed in generation %d of profile '%s'."
val profile)
(1 "A single package output installed in generation %d of profile '%s'."
val profile)
(many "%d package outputs installed in generation %d of profile '%s'."
count val profile))
(generation-diff
guix-message-outputs-by-diff)) guix-message-outputs-by-diff))
(generation (generation
@ -183,25 +169,27 @@ Try \"M-x guix-search-by-name\"."
"matching time period '%s' - '%s'.") "matching time period '%s' - '%s'.")
str-beg profile time-beg time-end))) str-beg profile time-beg time-end)))
(defun guix-message-outputs-by-diff (profile entries generations) (defun guix-message-outputs-by-diff (_ entries profiles)
"Display a message for outputs searched by GENERATIONS difference." "Display a message for outputs searched by PROFILES difference."
(let* ((count (length entries)) (let* ((count (length entries))
(str-beg (guix-message-string-entries count 'output)) (str-beg (guix-message-string-entries count 'output))
(gen1 (car generations)) (profile1 (car profiles))
(gen2 (cadr generations))) (profile2 (cadr profiles)))
(cl-multiple-value-bind (new old str-action) (cl-multiple-value-bind (new old str-action)
(if (> gen1 gen2) (if (string-lessp profile2 profile1)
(list gen1 gen2 "added to") (list profile1 profile2 "added to")
(list gen2 gen1 "removed from")) (list profile2 profile1 "removed from"))
(message (concat "%s %s generation %d comparing with " (message "%s %s profile '%s' comparing with profile '%s'."
"generation %d of profile '%s'.") str-beg str-action new old))))
str-beg str-action new old profile))))
(defun guix-result-message (profile entries entry-type (defun guix-result-message (profile entries entry-type
search-type search-vals) search-type search-vals)
"Display an appropriate message after displaying ENTRIES." "Display an appropriate message after displaying ENTRIES."
(let* ((type-spec (guix-assq-value guix-messages (let* ((type-spec (guix-assq-value guix-messages
entry-type search-type)) (if (eq entry-type 'system-generation)
'generation
entry-type)
search-type))
(fun-or-count-spec (car type-spec))) (fun-or-count-spec (car type-spec)))
(if (functionp fun-or-count-spec) (if (functionp fun-or-count-spec)
(funcall fun-or-count-spec profile entries search-vals) (funcall fun-or-count-spec profile entries search-vals)

View File

@ -1,6 +1,7 @@
;;; guix-profiles.el --- Guix profiles ;;; guix-profiles.el --- Guix profiles
;; Copyright © 2014 Alex Kost <alezost@gmail.com> ;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
;; This file is part of GNU Guix. ;; This file is part of GNU Guix.
@ -25,6 +26,10 @@
(expand-file-name "~/.guix-profile") (expand-file-name "~/.guix-profile")
"User profile.") "User profile.")
(defvar guix-system-profile
(concat guix-config-state-directory "/profiles/system")
"System profile.")
(defvar guix-default-profile (defvar guix-default-profile
(concat guix-config-state-directory (concat guix-config-state-directory
"/profiles/per-user/" "/profiles/per-user/"

View File

@ -1,6 +1,6 @@
;;; guix-ui-generation.el --- Interface for displaying generations -*- lexical-binding: t -*- ;;; guix-ui-generation.el --- Interface for displaying generations -*- lexical-binding: t -*-
;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com> ;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix. ;; This file is part of GNU Guix.
@ -78,6 +78,18 @@ Each element from GENERATIONS is a generation number."
'switch-to-generation* profile generation) 'switch-to-generation* profile generation)
operation-buffer))) operation-buffer)))
(defun guix-system-generation? ()
"Return non-nil, if current generation is a system one."
(eq (guix-buffer-current-entry-type)
'system-generation))
(defun guix-generation-current-packages-profile (&optional generation)
"Return a directory where packages are installed for the
current profile's GENERATION."
(guix-packages-profile (guix-ui-current-profile)
generation
(guix-system-generation?)))
;;; Generation 'info' ;;; Generation 'info'
@ -115,8 +127,9 @@ Each element from GENERATIONS is a generation number."
(lambda (btn) (lambda (btn)
(guix-buffer-get-display-entries (guix-buffer-get-display-entries
'list guix-package-list-type 'list guix-package-list-type
(list (guix-ui-current-profile) (list (guix-generation-current-packages-profile
'generation (button-get btn 'number)) (button-get btn 'number))
'installed)
'add)) 'add))
"Show installed packages for this generation" "Show installed packages for this generation"
'number number) 'number number)
@ -190,8 +203,8 @@ VAL is a boolean value."
"List installed packages for the generation at point." "List installed packages for the generation at point."
(interactive) (interactive)
(guix-package-get-display (guix-package-get-display
(guix-ui-current-profile) (guix-generation-current-packages-profile (guix-list-current-id))
'generation (guix-list-current-id))) 'installed))
(defun guix-generation-list-generations-to-compare () (defun guix-generation-list-generations-to-compare ()
"Return a sorted list of 2 marked generations for comparing." "Return a sorted list of 2 marked generations for comparing."
@ -200,6 +213,11 @@ VAL is a boolean value."
(user-error "2 generations should be marked for comparing") (user-error "2 generations should be marked for comparing")
(sort numbers #'<)))) (sort numbers #'<))))
(defun guix-generation-list-profiles-to-compare ()
"Return a sorted list of 2 marked generation profiles for comparing."
(mapcar #'guix-generation-current-packages-profile
(guix-generation-list-generations-to-compare)))
(defun guix-generation-list-show-added-packages () (defun guix-generation-list-show-added-packages ()
"List package outputs added to the latest marked generation. "List package outputs added to the latest marked generation.
If 2 generations are marked with \\[guix-list-mark], display If 2 generations are marked with \\[guix-list-mark], display
@ -209,8 +227,8 @@ installed in the other one."
(guix-buffer-get-display-entries (guix-buffer-get-display-entries
'list 'output 'list 'output
(cl-list* (guix-ui-current-profile) (cl-list* (guix-ui-current-profile)
'generation-diff 'profile-diff
(reverse (guix-generation-list-generations-to-compare))) (reverse (guix-generation-list-profiles-to-compare)))
'add)) 'add))
(defun guix-generation-list-show-removed-packages () (defun guix-generation-list-show-removed-packages ()
@ -222,8 +240,8 @@ installed in the other one."
(guix-buffer-get-display-entries (guix-buffer-get-display-entries
'list 'output 'list 'output
(cl-list* (guix-ui-current-profile) (cl-list* (guix-ui-current-profile)
'generation-diff 'profile-diff
(guix-generation-list-generations-to-compare)) (guix-generation-list-profiles-to-compare))
'add)) 'add))
(defun guix-generation-list-compare (diff-fun gen-fun) (defun guix-generation-list-compare (diff-fun gen-fun)
@ -324,14 +342,13 @@ performance."
"Width of an output name \"column\". "Width of an output name \"column\".
This variable is used in auxiliary buffers for comparing generations.") This variable is used in auxiliary buffers for comparing generations.")
(defun guix-generation-packages (profile generation) (defun guix-generation-packages (profile)
"Return a list of sorted packages installed in PROFILE's GENERATION. "Return a list of sorted packages installed in PROFILE.
Each element of the list is a list of the package specification Each element of the list is a list of the package specification
and its store path." and its store path."
(let ((names+paths (guix-eval-read (let ((names+paths (guix-eval-read
(guix-make-guile-expression (guix-make-guile-expression
'generation-package-specifications+paths 'profile->specifications+paths profile))))
profile generation))))
(sort names+paths (sort names+paths
(lambda (a b) (lambda (a b)
(string< (car a) (car b)))))) (string< (car a) (car b))))))
@ -360,8 +377,8 @@ Use the full PROFILE file name."
(indent-to guix-generation-output-name-width 2) (indent-to guix-generation-output-name-width 2)
(insert path "\n")) (insert path "\n"))
(defun guix-generation-insert-packages (buffer profile generation) (defun guix-generation-insert-packages (buffer profile)
"Insert package outputs installed in PROFILE's GENERATION in BUFFER." "Insert package outputs installed in PROFILE in BUFFER."
(with-current-buffer buffer (with-current-buffer buffer
(setq buffer-read-only nil (setq buffer-read-only nil
indent-tabs-mode nil) indent-tabs-mode nil)
@ -369,9 +386,9 @@ Use the full PROFILE file name."
(mapc (lambda (name+path) (mapc (lambda (name+path)
(guix-generation-insert-package (guix-generation-insert-package
(car name+path) (cadr name+path))) (car name+path) (cadr name+path)))
(guix-generation-packages profile generation)))) (guix-generation-packages profile))))
(defun guix-generation-packages-buffer (profile generation) (defun guix-generation-packages-buffer (profile generation &optional system?)
"Return buffer with package outputs installed in PROFILE's GENERATION. "Return buffer with package outputs installed in PROFILE's GENERATION.
Create the buffer if needed." Create the buffer if needed."
(let ((buf-name (guix-generation-packages-buffer-name (let ((buf-name (guix-generation-packages-buffer-name
@ -379,19 +396,24 @@ Create the buffer if needed."
(or (and (null guix-generation-packages-update-buffer) (or (and (null guix-generation-packages-update-buffer)
(get-buffer buf-name)) (get-buffer buf-name))
(let ((buf (get-buffer-create buf-name))) (let ((buf (get-buffer-create buf-name)))
(guix-generation-insert-packages buf profile generation) (guix-generation-insert-packages
buf
(guix-packages-profile profile generation system?))
buf)))) buf))))
(defun guix-profile-generation-manifest-file (generation) (defun guix-profile-generation-manifest-file (generation)
"Return the file name of a GENERATION's manifest. "Return the file name of a GENERATION's manifest.
GENERATION is a generation number of the current profile." GENERATION is a generation number of the current profile."
(guix-manifest-file (guix-ui-current-profile) generation)) (guix-manifest-file (guix-ui-current-profile)
generation
(guix-system-generation?)))
(defun guix-profile-generation-packages-buffer (generation) (defun guix-profile-generation-packages-buffer (generation)
"Insert GENERATION's package outputs in a buffer and return it. "Insert GENERATION's package outputs in a buffer and return it.
GENERATION is a generation number of the current profile." GENERATION is a generation number of the current profile."
(guix-generation-packages-buffer (guix-ui-current-profile) (guix-generation-packages-buffer (guix-ui-current-profile)
generation)) generation
(guix-system-generation?)))
;;; Interactive commands ;;; Interactive commands

View File

@ -349,6 +349,10 @@ formatted with this string, an action button is inserted.")
'name (button-label btn)) 'name (button-label btn))
'add))) 'add)))
(define-button-type 'guix-package-heading
:supertype 'guix-package-name
'face 'guix-package-info-heading)
(define-button-type 'guix-package-source (define-button-type 'guix-package-source
:supertype 'guix :supertype 'guix
'face 'guix-package-info-source 'face 'guix-package-info-source
@ -362,8 +366,7 @@ formatted with this string, an action button is inserted.")
"Insert package ENTRY heading (name specification) at point." "Insert package ENTRY heading (name specification) at point."
(guix-insert-button (guix-insert-button
(guix-package-entry->name-specification entry) (guix-package-entry->name-specification entry)
'guix-package-name 'guix-package-heading))
'face 'guix-package-info-heading))
(defun guix-package-info-insert-systems (systems entry) (defun guix-package-info-insert-systems (systems entry)
"Insert supported package SYSTEMS at point." "Insert supported package SYSTEMS at point."
@ -909,15 +912,15 @@ See `guix-package-info-type'."
"A history of minibuffer prompts.") "A history of minibuffer prompts.")
;;;###autoload ;;;###autoload
(defun guix-search-by-name (name &optional profile) (defun guix-packages-by-name (name &optional profile)
"Search for Guix packages by NAME. "Display Guix packages with NAME.
NAME is a string with name specification. It may optionally contain NAME is a string with name specification. It may optionally contain
a version number. Examples: \"guile\", \"guile-2.0.11\". a version number. Examples: \"guile\", \"guile-2.0.11\".
If PROFILE is nil, use `guix-current-profile'. If PROFILE is nil, use `guix-current-profile'.
Interactively with prefix, prompt for PROFILE." Interactively with prefix, prompt for PROFILE."
(interactive (interactive
(list (read-string "Package name: " nil 'guix-package-search-history) (list (guix-read-package-name)
(guix-ui-read-profile))) (guix-ui-read-profile)))
(guix-package-get-display profile 'name name)) (guix-package-get-display profile 'name name))
@ -935,6 +938,17 @@ Interactively with prefix, prompt for PROFILE."
(guix-package-get-display profile 'regexp regexp (guix-package-get-display profile 'regexp regexp
(or params guix-package-search-params))) (or params guix-package-search-params)))
;;;###autoload
(defun guix-search-by-name (regexp &optional profile)
"Search for Guix packages matching REGEXP in a package name.
If PROFILE is nil, use `guix-current-profile'.
Interactively with prefix, prompt for PROFILE."
(interactive
(list (read-string "Package name by regexp: "
nil 'guix-package-search-history)
(guix-ui-read-profile)))
(guix-search-by-regexp regexp '(name) profile))
;;;###autoload ;;;###autoload
(defun guix-installed-packages (&optional profile) (defun guix-installed-packages (&optional profile)
"Display information about installed Guix packages. "Display information about installed Guix packages.

View File

@ -0,0 +1,105 @@
;;; guix-ui-system-generation.el --- Interface for displaying system generations -*- lexical-binding: t -*-
;; Copyright © 2016 Alex Kost <alezost@gmail.com>
;; 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 this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file provides an interface for displaying system generations
;; in 'list' and 'info' buffers, and commands for working with them.
;;; Code:
(require 'cl-lib)
(require 'guix-list)
(require 'guix-ui)
(require 'guix-ui-generation)
(require 'guix-profiles)
(guix-ui-define-entry-type system-generation)
(defun guix-system-generation-get-display (search-type &rest search-values)
"Search for system generations and show results.
See `guix-ui-get-entries' for the meaning of SEARCH-TYPE and
SEARCH-VALUES."
(apply #'guix-list-get-display-entries
'system-generation
guix-system-profile
search-type search-values))
;;; System generation 'info'
(guix-ui-info-define-interface system-generation
:buffer-name "*Guix Generation Info*"
:format '((number format guix-generation-info-insert-number)
(label format (format))
(prev-number format (format))
(current format guix-generation-info-insert-current)
(path format (format guix-file))
(time format (time))
(root-device format (format))
(kernel format (format guix-file)))
:titles guix-generation-info-titles)
;;; System generation 'list'
;; FIXME It is better to make `guix-generation-list-shared-map' with
;; common keys for both usual and system generations.
(defvar guix-system-generation-list-mode-map
(copy-keymap guix-generation-list-mode-map)
"Keymap for `guix-system-generation-list-mode' buffers.")
(guix-ui-list-define-interface system-generation
:buffer-name "*Guix Generation List*"
:format '((number nil 5 guix-list-sort-numerically-0 :right-align t)
(current guix-generation-list-get-current 10 t)
(label nil 40 t)
(time guix-list-get-time 20 t)
(path guix-list-get-file-path 30 t))
:titles guix-generation-list-titles
:sort-key '(number . t)
:marks '((delete . ?D)))
;;; Interactive commands
;;;###autoload
(defun guix-system-generations ()
"Display information about system generations."
(interactive)
(guix-system-generation-get-display 'all))
;;;###autoload
(defun guix-last-system-generations (number)
"Display information about last NUMBER of system generations."
(interactive "nThe number of last generations: ")
(guix-system-generation-get-display 'last number))
;;;###autoload
(defun guix-system-generations-by-time (from to)
"Display information about system generations created between FROM and TO."
(interactive
(list (guix-read-date "Find generations (from): ")
(guix-read-date "Find generations (to): ")))
(guix-system-generation-get-display
'time (float-time from) (float-time to)))
(provide 'guix-ui-system-generation)
;;; guix-ui-system-generation.el ends here

View File

@ -80,6 +80,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/databases.scm \ gnu/packages/databases.scm \
gnu/packages/datamash.scm \ gnu/packages/datamash.scm \
gnu/packages/datastructures.scm \ gnu/packages/datastructures.scm \
gnu/packages/dav.scm \
gnu/packages/dc.scm \ gnu/packages/dc.scm \
gnu/packages/debug.scm \ gnu/packages/debug.scm \
gnu/packages/dejagnu.scm \ gnu/packages/dejagnu.scm \
@ -89,6 +90,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/djvu.scm \ gnu/packages/djvu.scm \
gnu/packages/dns.scm \ gnu/packages/dns.scm \
gnu/packages/docbook.scm \ gnu/packages/docbook.scm \
gnu/packages/docker.scm \
gnu/packages/doxygen.scm \ gnu/packages/doxygen.scm \
gnu/packages/dunst.scm \ gnu/packages/dunst.scm \
gnu/packages/dvtm.scm \ gnu/packages/dvtm.scm \
@ -417,7 +419,6 @@ dist_patch_DATA = \
gnu/packages/patches/avidemux-install-to-lib.patch \ gnu/packages/patches/avidemux-install-to-lib.patch \
gnu/packages/patches/avrdude-fix-libusb.patch \ gnu/packages/patches/avrdude-fix-libusb.patch \
gnu/packages/patches/bash-completion-directories.patch \ gnu/packages/patches/bash-completion-directories.patch \
gnu/packages/patches/bowtie-fix-makefile.patch \
gnu/packages/patches/bigloo-gc-shebangs.patch \ gnu/packages/patches/bigloo-gc-shebangs.patch \
gnu/packages/patches/binutils-ld-new-dtags.patch \ gnu/packages/patches/binutils-ld-new-dtags.patch \
gnu/packages/patches/binutils-loongson-workaround.patch \ gnu/packages/patches/binutils-loongson-workaround.patch \

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2016 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -96,6 +96,11 @@ contains module names, not actual file names."
name name
(dot-ko name))) (dot-ko name)))
(define (file-name->module-name file)
"Return the module name corresponding to FILE, stripping the trailing '.ko',
etc."
(basename file ".ko"))
(define* (recursive-module-dependencies files (define* (recursive-module-dependencies files
#:key (lookup-module dot-ko)) #:key (lookup-module dot-ko))
"Return the topologically-sorted list of file names of the modules depended "Return the topologically-sorted list of file names of the modules depended
@ -130,6 +135,22 @@ LOOKUP-MODULE to the module name."
(((modules . _) ...) (((modules . _) ...)
modules)))) modules))))
(define (module-black-list)
"Return the black list of modules that must not be loaded. This black list
is specified using 'modprobe.blacklist=MODULE1,MODULE2,...' on the kernel
command line; it is honored by libkmod."
(define parameter
"modprobe.blacklist=")
(let ((command (call-with-input-file "/proc/cmdline"
get-string-all)))
(append-map (lambda (arg)
(if (string-prefix? parameter arg)
(string-tokenize (string-drop arg (string-length parameter))
%not-comma)
'()))
(string-tokenize command))))
(define (module-loaded? module) (define (module-loaded? module)
"Return #t if MODULE is already loaded. MODULE must be a Linux module name, "Return #t if MODULE is already loaded. MODULE must be a Linux module name,
not a file name." not a file name."
@ -138,29 +159,44 @@ not a file name."
(define* (load-linux-module* file (define* (load-linux-module* file
#:key #:key
(recursive? #t) (recursive? #t)
(lookup-module dot-ko)) (lookup-module dot-ko)
"Load Linux module from FILE, the name of a `.ko' file. When RECURSIVE? is (black-list (module-black-list)))
true, load its dependencies first (à la 'modprobe'.) The actual files "Load Linux module from FILE, the name of a '.ko' file; return true on
containing modules depended on are obtained by calling LOOKUP-MODULE with the success, false otherwise. When RECURSIVE? is true, load its dependencies
module name." first (à la 'modprobe'.) The actual files containing modules depended on are
obtained by calling LOOKUP-MODULE with the module name. Modules whose name
appears in BLACK-LIST are not loaded."
(define (slurp module) (define (slurp module)
;; TODO: Use 'finit_module' to reduce memory usage. ;; TODO: Use 'finit_module' to reduce memory usage.
(call-with-input-file file get-bytevector-all)) (call-with-input-file file get-bytevector-all))
(when recursive? (define (black-listed? module)
(for-each (cut load-linux-module* <> #:lookup-module lookup-module) (let ((result (member module black-list)))
(map lookup-module (module-dependencies file)))) (when result
(format (current-module-debugging-port)
"not loading module '~a' because it's black-listed~%"
module))
result))
(format (current-module-debugging-port) (define (load-dependencies file)
"loading Linux module from '~a'...~%" file) (let ((dependencies (module-dependencies file)))
(every (cut load-linux-module* <> #:lookup-module lookup-module)
(map lookup-module dependencies))))
(catch 'system-error (and (not (black-listed? (file-name->module-name file)))
(lambda () (or (not recursive?)
(load-linux-module (slurp file))) (load-dependencies file))
(lambda args (begin
;; If this module was already loaded and we're in modprobe style, ignore (format (current-module-debugging-port)
;; the error. "loading Linux module from '~a'...~%" file)
(unless (and recursive? (= EEXIST (system-error-errno args)))
(apply throw args))))) (catch 'system-error
(lambda ()
(load-linux-module (slurp file)))
(lambda args
;; If this module was already loaded and we're in modprobe style, ignore
;; the error.
(or (and recursive? (= EEXIST (system-error-errno args)))
(apply throw args)))))))
;;; linux-modules.scm ends here ;;; linux-modules.scm ends here

View File

@ -2,7 +2,7 @@
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Alex Sassmannshausen <alex.sassmannshausen@gmail.com> ;;; Copyright © 2015 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
@ -1318,3 +1318,62 @@ able to adapt itself dynamically to the overall system load. Children
processes and threads of the specified process may optionally share the same processes and threads of the specified process may optionally share the same
limits.") limits.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public autojump
(package
(name "autojump")
(version "22.2.4")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/wting/autojump/archive/"
"release-v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0xglj7nb8xczaqy2dhn78drqdwqj64rqpymxhqmmwwqzfaqassw1"))))
(build-system gnu-build-system)
(native-inputs ;for tests
`(("python-mock" ,python-mock)
("python-pytest" ,python-pytest)))
(inputs
`(("python" ,python-wrapper)))
(arguments
`(#:phases (modify-phases %standard-phases
(delete 'configure)
(delete 'build)
(replace 'check
(lambda _
(zero?
(system* "python" "tests/autojump_utils_test.py"))))
(replace 'install
;; The install.py script doesn't allow system installation
;; into an arbitrary prefix, so do our own install.
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(share (string-append out "/share/autojump"))
(py (string-append out "/lib/python"
,(version-major+minor
(package-version python-wrapper))
"/site-packages"))
(man (string-append out "/share/man/man1")))
(install-file "bin/autojump" bin)
(for-each (λ (f) (install-file f py))
(find-files "bin" "\\.py$"))
(for-each (λ (f) (install-file f share))
(find-files "bin" "autojump\\..*$"))
(substitute* (string-append share "/autojump.sh")
(("/usr/local") out))
(install-file "docs/autojump.1" man)
(wrap-program (string-append bin "/autojump")
`("PYTHONPATH" ":" prefix (,py)))
#t))))))
(home-page "https://github.com/wting/autojump")
(synopsis "Shell extension for filesystem navigation")
(description
"Autojump provides a faster way to navigate your filesystem, with a \"cd
command that learns\". It works by maintaining a database of the directories
you use the most from the command line and allows you to \"jump\" to
frequently used directories by typing only a small pattern.")
(license license:gpl3+)))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2014, 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2015, 2016 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl> ;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
@ -603,7 +603,7 @@ errors at the end of reads.")
(define-public bowtie (define-public bowtie
(package (package
(name "bowtie") (name "bowtie")
(version "2.2.4") (version "2.2.6")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/BenLangmead/bowtie2/archive/v" (uri (string-append "https://github.com/BenLangmead/bowtie2/archive/v"
@ -611,42 +611,36 @@ errors at the end of reads.")
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"15dnbqippwvhyh9zqjhaxkabk7lm1xbh1nvar1x4b5kwm117zijn")) "1ssfvymxfrap6f9pf86s9bvsbqdgka4abr2r7j3mgr4w1l289m86"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(substitute* "Makefile" '(substitute* "Makefile"
(("^CC = .*$") "CC = gcc")
(("^CPP = .*$") "CPP = g++")
;; replace BUILD_HOST and BUILD_TIME for deterministic build ;; replace BUILD_HOST and BUILD_TIME for deterministic build
(("-DBUILD_HOST=.*") "-DBUILD_HOST=\"\\\"guix\\\"\"") (("-DBUILD_HOST=.*") "-DBUILD_HOST=\"\\\"guix\\\"\"")
(("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\""))) (("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\"")))))
(patches (list (search-patch "bowtie-fix-makefile.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("perl" ,perl) (inputs `(("perl" ,perl)
("perl-clone" ,perl-clone) ("perl-clone" ,perl-clone)
("perl-test-deep" ,perl-test-deep) ("perl-test-deep" ,perl-test-deep)
("perl-test-simple" ,perl-test-simple) ("perl-test-simple" ,perl-test-simple)
("python" ,python-2))) ("python" ,python-2)
("tbb" ,tbb)))
(arguments (arguments
'(#:make-flags '("allall") '(#:make-flags
(list "allall"
"WITH_TBB=1"
(string-append "prefix=" (assoc-ref %outputs "out")))
#:phases #:phases
(alist-delete (alist-delete
'configure 'configure
(alist-replace (alist-replace
'install 'check
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin/"))) (system* "perl"
(for-each (lambda (file) "scripts/test/simple_tests.pl"
(install-file file bin)) "--bowtie2=./bowtie2"
(find-files "." "bowtie2.*")))) "--bowtie2-build=./bowtie2-build"))
(alist-replace %standard-phases))))
'check
(lambda* (#:key outputs #:allow-other-keys)
(system* "perl"
"scripts/test/simple_tests.pl"
"--bowtie2=./bowtie2"
"--bowtie2-build=./bowtie2-build"))
%standard-phases)))))
(home-page "http://bowtie-bio.sourceforge.net/bowtie2/index.shtml") (home-page "http://bowtie-bio.sourceforge.net/bowtie2/index.shtml")
(synopsis "Fast and sensitive nucleotide sequence read aligner") (synopsis "Fast and sensitive nucleotide sequence read aligner")
(description (description
@ -2079,7 +2073,7 @@ that a read originated from a particular isoform.")
(define-public orfm (define-public orfm
(package (package
(name "orfm") (name "orfm")
(version "0.4.1") (version "0.5.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -2087,12 +2081,16 @@ that a read originated from a particular isoform.")
version "/orfm-" version ".tar.gz")) version "/orfm-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"05fmw145snk646ly076zby0fjav0k7ysbclck5d4s9pmgcfpijc2")))) "0vb6d771gl4mix8bwx919x5ayy9pkj44n7ki336nz3rz2rx4c7gk"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("zlib" ,zlib))) (inputs `(("zlib" ,zlib)))
(native-inputs
`(("ruby-bio-commandeer" ,ruby-bio-commandeer)
("ruby-rspec" ,ruby-rspec)
("ruby" ,ruby)))
(synopsis "Simple and not slow open reading frame (ORF) caller") (synopsis "Simple and not slow open reading frame (ORF) caller")
(description (description
"An ORF caller finds stretches of DNA that when translated are not "An ORF caller finds stretches of DNA that, when translated, are not
interrupted by stop codons. OrfM finds and prints these ORFs.") interrupted by stop codons. OrfM finds and prints these ORFs.")
(home-page "https://github.com/wwood/OrfM") (home-page "https://github.com/wwood/OrfM")
(license license:lgpl3+))) (license license:lgpl3+)))
@ -2458,18 +2456,21 @@ viewer.")
(sha256 (sha256
(base32 "1m33xsfwz0s8qi45lylagfllqg7fphf4dr0780rsvw75av9wk06h")))) (base32 "1m33xsfwz0s8qi45lylagfllqg7fphf4dr0780rsvw75av9wk06h"))))
(arguments (arguments
(substitute-keyword-arguments (package-arguments samtools) `(#:tests? #f ;no "check" target
((#:tests? tests) #f) ;no "check" target ,@(substitute-keyword-arguments (package-arguments samtools)
((#:phases phases) ((#:make-flags flags)
`(modify-phases ,phases `(cons "LIBCURSES=-lncurses" ,flags))
(replace 'install ((#:phases phases)
(lambda* (#:key outputs #:allow-other-keys) `(modify-phases ,phases
(let ((bin (string-append (replace 'install
(assoc-ref outputs "out") "/bin"))) (lambda* (#:key outputs #:allow-other-keys)
(mkdir-p bin) (let ((bin (string-append
(copy-file "samtools" (assoc-ref outputs "out") "/bin")))
(string-append bin "/samtools"))))) (mkdir-p bin)
(delete 'patch-tests))))))) (copy-file "samtools"
(string-append bin "/samtools")))))
(delete 'patch-tests)
(delete 'configure))))))))
(define-public mosaik (define-public mosaik
(let ((commit "5c25216d")) (let ((commit "5c25216d"))
@ -3841,6 +3842,8 @@ extracting the desired features in a convenient format.")
(properties (properties
`((upstream-name . "GO.db"))) `((upstream-name . "GO.db")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs
`(("r-annotationdbi" ,r-annotationdbi)))
(home-page "http://bioconductor.org/packages/GO.db") (home-page "http://bioconductor.org/packages/GO.db")
(synopsis "Annotation maps describing the entire Gene Ontology") (synopsis "Annotation maps describing the entire Gene Ontology")
(description (description

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -21,9 +22,16 @@
#:use-module (guix licenses) #:use-module (guix licenses)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix build utils)
#:use-module (guix build-system cmake) #:use-module (guix build-system cmake)
#:use-module (guix build-system python)
#:use-module (gnu packages base)
#:use-module (gnu packages databases)
#:use-module (gnu packages dav)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages icu4c) #:use-module (gnu packages icu4c)
#:use-module (gnu packages perl)) #:use-module (gnu packages perl)
#:use-module (gnu packages python))
(define-public libical (define-public libical
(package (package
@ -50,3 +58,70 @@
"Libical is an implementation of the iCalendar protocols and protocol "Libical is an implementation of the iCalendar protocols and protocol
data units.") data units.")
(license lgpl2.1))) (license lgpl2.1)))
(define-public khal
(package
(name "khal")
(version "0.7.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "khal" version))
(sha256
(base32
"00llxj7cv31mjsx0j6zxmyi9s1q20yvfkn025xcy8cv1ylfwic66"))
(modules '((guix build utils)))
;; Patch broken path in 'doc' Makefile.
;; Patch sent upstream: https://github.com/geier/khal/pull/307
(snippet
'(substitute* "doc/source/Makefile"
(("../../../khal/khal/settings/khal.spec")
"../../khal/settings/khal.spec" )))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
;; Bug reported: https://github.com/geier/khal/issues/309
(add-after 'unpack 'disable-test
(lambda _
(substitute* "tests/khalendar_test.py"
(("test_only_update_old_event")
"disabled_only_update_old_event"))))
;; Building the manpage requires khal to be installed.
(add-after 'install 'manpage
(lambda* (#:key outputs #:allow-other-keys)
(setenv "PYTHONPATH"
(string-append
(getenv "PYTHONPATH") ":" (assoc-ref outputs "out")))
(zero? (system* "make" "--directory=doc/" "man"))
(install-file
"doc/build/man/khal.1"
(string-append (assoc-ref outputs "out") "/share/man/man1"))))
;; The tests require us to choose a timezone.
(replace 'check
(lambda* (#:key inputs #:allow-other-keys)
(setenv "TZ"
(string-append (assoc-ref inputs "tzdata")
"/share/zoneinfo/Zulu"))
(zero? (system* "py.test" "tests")))))))
(native-inputs
`(("python-pytest" ,python-pytest)
("python-setuptools-scm" ,python-setuptools-scm)
;; Required for tests
("tzdata" ,tzdata)
;; Required to build manpage
("python-sphinxcontrib-newsfeed" ,python-sphinxcontrib-newsfeed)
("python-sphinx" ,python-sphinx)))
(inputs
`(("sqlite" ,sqlite)))
(propagated-inputs
`(("python-configobj" ,python-configobj)
("python-dateutil-2" ,python-dateutil-2)
("python-icalendar" ,python-icalendar)
("python-tzlocal" ,python-tzlocal)
("python-urwid" ,python-urwid)
("python-pyxdg" ,python-pyxdg)
("vdirsyncer" ,vdirsyncer)))
(synopsis "Console calendar program")
(description "Khal is a standards based console calendar program,
able to synchronize with CalDAV servers through vdirsyncer.")
(home-page "http://lostpackets.de/khal/")
(license expat)))

View File

@ -3,7 +3,7 @@
;;; Copyright © 2012, 2014, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2012, 2014, 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014 David Thompson <davet@gnu.org> ;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2015 Leo Famulari <leo@famulari.name> ;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
@ -205,7 +205,7 @@ Language.")
(define-public mariadb (define-public mariadb
(package (package
(name "mariadb") (name "mariadb")
(version "10.0.20") (version "10.0.23")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://downloads.mariadb.org/f/" (uri (string-append "https://downloads.mariadb.org/f/"
@ -213,7 +213,7 @@ Language.")
name "-" version ".tar.gz")) name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0ywb730l68mxvmpik1x2ndbdaaks6dmc17pxspspm5wlqxinjkrs")))) "0x52gfxk7zr84al83x62s4gh7mbngahy1svafdkbwd18i5lysvhm"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
'(#:configure-flags '(#:configure-flags

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -27,7 +28,7 @@
(define-public datamash (define-public datamash
(package (package
(name "datamash") (name "datamash")
(version "1.0.7") (version "1.1.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -35,7 +36,7 @@
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0y49zaadzirghy4xfajvsv1f5x805cjp61z212ggipx5243302qs")))) "1c2bj0jrm4fxkf0ykxkzgyk1l9s0idqm8rbzmk3n9pgldb4arrd9"))))
(native-inputs (native-inputs
`(("which" ,which) ;for tests `(("which" ,which) ;for tests
("perl" ,perl))) ;for help2man ("perl" ,perl))) ;for help2man

108
gnu/packages/dav.scm Normal file
View File

@ -0,0 +1,108 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
;;;
;;; 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 packages dav)
#:use-module (guix build-system python)
#:use-module (guix download)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (gnu packages python))
(define-public radicale
(package
(name "radicale")
(version "1.1.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "Radicale" version))
(sha256
(base32
"1c5lv8qca21mndkx350wxv34qypqh6gb4rhzms4anr642clq3jg2"))))
(build-system python-build-system)
(propagated-inputs
;; TODO: Add python-pam
`(("python-requests" ,python-requests)))
(synopsis "Basic CalDAV and CardDAV server")
(description "Radicale is a CalDAV and CardDAV server for UNIX-like
platforms. Calendars and address books are available for both local and remote
access, possibly limited through authentication policies. They can be viewed
and edited by calendar and contact clients on mobile phones or computers.
Radicale intentionally does not fully comply with the CalDAV and CardDAV RFCs.
Instead, it supports the CalDAV and CardDAV implementations of popular
clients.")
(home-page "http://radicale.org/")
(license gpl3+)))
(define-public vdirsyncer
(package
(name "vdirsyncer")
(version "0.7.5")
(source (origin
(method url-fetch)
(uri (pypi-uri "vdirsyncer" version))
(sha256
(base32
"0dvar4k95n689fgw5gy19mb7ggaw32c8j2gbglr33wn7pbxc2l9z"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(replace 'check
(lambda _
(setenv "DAV_SERVER" "radicale")
(setenv "REMOTESTORAGE_SERVER" "skip")
(zero? (system* "py.test"))))
;; vdirsyncer requires itself to be installed in order to build
;; the manpage.
(add-after 'install 'manpage
(lambda* (#:key outputs #:allow-other-keys)
(setenv "PYTHONPATH"
(string-append
(getenv "PYTHONPATH")
":" (assoc-ref outputs "out")))
(zero? (system* "make" "--directory=docs/" "man"))
(install-file
"docs/_build/man/vdirsyncer.1"
(string-append
(assoc-ref outputs "out")
"/share/man/man1")))))))
(native-inputs
`(("python-oauthlib" ,python-oauthlib)
("python-setuptools-scm" ,python-setuptools-scm)
("python-sphinx" ,python-sphinx)
;; Required for testing
("python-pytest" ,python-pytest)
("python-pytest-localserver" ,python-pytest-localserver)
("python-pytest-xprocess" ,python-pytest-xprocess)
("python-wsgi-intercept" ,python-wsgi-intercept)
("radicale" ,radicale)))
(propagated-inputs
`(("python-atomicwrites" ,python-atomicwrites)
("python-click" ,python-click)
("python-click-log" ,python-click-log)
("python-click-threading" ,python-click-threading)
("python-lxml" ,python-lxml) ; which one?
("python-requests-toolbelt" ,python-requests-toolbelt)))
(synopsis "Synchronize calendars and contacts")
(description "Vdirsyncer synchronizes your calendars and addressbooks
between two storage locations. The most popular purpose is to
synchronize a CalDAV or CardDAV server with a local folder or file. The
local data can then be accessed via a variety of programs, none of which
have to know or worry about syncing to a server.")
(home-page "https://github.com/untitaker/vdirsyncer")
(license expat)))

107
gnu/packages/docker.scm Normal file
View File

@ -0,0 +1,107 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 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 packages docker)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system python)
#:use-module (guix utils)
#:use-module (gnu packages python))
(define-public python-docker-py
(package
(name "python-docker-py")
(version "1.6.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "docker-py" version))
(sha256
(base32
"16ba4xyd46hkj9nkfpz15r8kskl7ljx1afjzchyrhdsrklvzgzim"))))
(build-system python-build-system)
;; TODO: Tests require a running Docker daemon.
(arguments '(#:tests? #f))
(inputs
`(("python-requests" ,python-requests)
("python-setuptools" ,python-setuptools)
("python-six" ,python-six)
("python-websocket-client" ,python-websocket-client)))
(home-page "https://github.com/docker/docker-py/")
(synopsis "Python client for Docker")
(description "Docker-Py is a Python client for the Docker container
management tool.")
(license license:asl2.0)))
(define-public python-dockerpty
(package
(name "python-dockerpty")
(version "0.3.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "dockerpty" version))
(sha256
(base32
"0za6rr349641wv76ww9l3zcic2xyxrirlxpnzl4296h897648455"))))
(build-system python-build-system)
(native-inputs
`(("python-six" ,python-six)))
(home-page "https://github.com/d11wtq/dockerpty")
(synopsis "Python library to use the pseudo-TTY of a Docker container")
(description "Docker PTY provides the functionality needed to operate the
pseudo-terminal (PTY) allocated to a Docker container using the Python
client.")
(license license:asl2.0)))
(define-public docker-compose
(package
(name "docker-compose")
(version "1.5.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "docker-compose" version))
(sha256
(base32
"0ksg7hm2yvc977968dixxisrhcmvskzpcx3pz0v1kazrdqp7xakr"))))
(build-system python-build-system)
;; TODO: Tests require running Docker daemon.
(arguments '(#:tests? #f))
(inputs
`(("python-docker-py" ,python-docker-py)
("python-dockerpty" ,python-dockerpty)
("python-docopt" ,python-docopt)
("python-enum34" ,python-enum34)
("python-jsonschema" ,python-jsonschema)
("python-pyyaml" ,python-pyyaml)
("python-requests" ,python-requests-2.7)
("python-setuptools" ,python-setuptools)
("python-six" ,python-six)
("python-texttable" ,python-texttable)
("python-websocket-client" ,python-websocket-client)))
(home-page "https://www.docker.com/")
(synopsis "Multi-container orchestration for Docker")
(description "Docker Compose is a tool for defining and running
multi-container Docker applications. A Compose file is used to configure an
applications services. Then, using a single command, the containers are
created and all the services are started as specified in the configuration.")
(license license:asl2.0)))

View File

@ -2,7 +2,7 @@
;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com> ;;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; ;;;
@ -324,7 +324,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
(define-public magit (define-public magit
(package (package
(name "magit") (name "magit")
(version "2.3.1") (version "2.4.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -332,7 +332,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
version "/" name "-" version ".tar.gz")) version "/" name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1wnx034adkwhbsydd10il2099hpzz351kp39sri8s1yd43f795gf")))) "1wbam4l36061mj79qlgzrv4xbzhk2dk6gnv45610zwfnf24ikdsp"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("texinfo" ,texinfo) (native-inputs `(("texinfo" ,texinfo)
("emacs" ,emacs-no-x))) ("emacs" ,emacs-no-x)))

View File

@ -11,7 +11,7 @@
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com> ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org> ;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; ;;;
@ -1180,7 +1180,7 @@ is programmed in Haskell.")
(define-public manaplus (define-public manaplus
(package (package
(name "manaplus") (name "manaplus")
(version "1.5.12.5") (version "1.6.1.16")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -1188,7 +1188,7 @@ is programmed in Haskell.")
version "/manaplus-" version ".tar.xz")) version "/manaplus-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0kmd743q40v82221wj8b09n30lqiwl7096v3m7ki3ynsgszkm326")))) "1vrsjvdbdzbnqmr8sp110b2d93kp5yfnifsn6zjm60kdvvbphdir"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:configure-flags '(#:configure-flags

View File

@ -751,22 +751,39 @@ API add-ons to make GTK+ widgets OpenGL-capable.")
(define-public glade3 (define-public glade3
(package (package
(name "glade") (name "glade")
(version "3.8.5") (version "3.18.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/" (uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/" (version-major+minor version) "/"
name "3-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0d97df5pfkrh5670a98r3d3w8zlbh1jcax6cvq6j6a20vzjgd9aq")))) "0lk4nvd5s8px9i0pbq7bncikgn2lpx7vjh787d3cvzpvwx3cxnzc"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
`(#:tests? #f ; needs X, GL, and software rendering
#:phases
(modify-phases %standard-phases
(add-before 'configure 'fix-docbook
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "man/Makefile.in"
(("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
(string-append (assoc-ref inputs "docbook-xsl")
"/xml/xsl/docbook-xsl-"
,(package-version docbook-xsl)
"/manpages/docbook.xsl")))
#t)))))
(inputs (inputs
`(("gtk+" ,gtk+-2) `(("gtk+" ,gtk+)
("libxml2" ,libxml2))) ("libxml2" ,libxml2)))
(native-inputs (native-inputs
`(("intltool" ,intltool) `(("intltool" ,intltool)
("python" ,python) ("itstool" ,itstool)
("libxslt" ,libxslt) ;for xsltproc
("docbook-xml" ,docbook-xml-4.2)
("docbook-xsl" ,docbook-xsl)
("python" ,python-2)
("pkg-config" ,pkg-config))) ("pkg-config" ,pkg-config)))
(home-page "https://glade.gnome.org") (home-page "https://glade.gnome.org")
(synopsis "GTK+ rapid application development tool") (synopsis "GTK+ rapid application development tool")

View File

@ -31,6 +31,7 @@
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages readline) #:use-module (gnu packages readline)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages databases)
#:use-module (gnu packages gtk) #:use-module (gnu packages gtk)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages gnome) #:use-module (gnu packages gnome)
@ -218,8 +219,9 @@ compatible to GNU Pth.")
("libksba" ,libksba) ("libksba" ,libksba)
("npth" ,npth) ("npth" ,npth)
("openldap" ,openldap) ("openldap" ,openldap)
("zlib" ,zlib) ("readline" ,readline)
("readline" ,readline))) ("sqlite" ,sqlite)
("zlib" ,zlib)))
(arguments (arguments
`(#:phases `(#:phases
(alist-cons-before (alist-cons-before

View File

@ -6,6 +6,7 @@
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -317,6 +318,22 @@ It has been modified to remove all non-free binary blobs.")
(license license:gpl2) (license license:gpl2)
(home-page "http://www.gnu.org/software/linux-libre/")))) (home-page "http://www.gnu.org/software/linux-libre/"))))
;; This older version of linux-libre is being added because it was found
;; that newer versions (or at least 4.3.3) of linux-libre were not reading
;; the hardware clock on (at least Libreboot-enabled) Thinkpad x200
;; machines. See <http://bugs.gnu.org/22274>.
(define-public linux-libre-4.2.5
(package
(inherit linux-libre)
(version "4.2.5")
(source (origin
(method url-fetch)
(uri (linux-libre-urls version))
(sha256
(base32
"13ar9sghm2g5w2km9x2d07q3lh81rz286d6slklv56qanm24chzx"))))))
;;; ;;;
;;; Pluggable authentication modules (PAM). ;;; Pluggable authentication modules (PAM).

View File

@ -462,11 +462,7 @@ for path in [path for path in sys.path if 'site-packages' in path]: site.addsite
("pygtk" ,python2-pygtk) ("pygtk" ,python2-pygtk)
("gettext" ,gnu-gettext) ("gettext" ,gnu-gettext)
("gtk" ,gtk+) ("gtk" ,gtk+)
;; TODO: Lilypond is optional. Produces errors at build time: ("lilypond" ,lilypond)
;; Drawing systems...Error: /undefinedresult in --glyphshow--
;; Fontconfig is needed to fix one of the errors, but other similar
;; errors remain.
;;("lilypond" ,lilypond)
("librsvg" ,librsvg) ; needed at runtime for icons ("librsvg" ,librsvg) ; needed at runtime for icons
("libpng" ,libpng) ; needed at runtime for icons ("libpng" ,libpng) ; needed at runtime for icons
;; players needed at runtime ;; players needed at runtime
@ -480,8 +476,6 @@ for path in [path for path in sys.path if 'site-packages' in path]: site.addsite
("txt2man" ,txt2man) ("txt2man" ,txt2man)
("libxml2" ,libxml2) ; for tests ("libxml2" ,libxml2) ; for tests
("ghostscript" ,ghostscript) ("ghostscript" ,ghostscript)
;;("fontconfig" ,fontconfig) ; only needed with lilypond
;;("freetype" ,freetype) ; only needed with lilypond
("texinfo" ,texinfo))) ("texinfo" ,texinfo)))
(home-page "https://www.gnu.org/software/solfege/") (home-page "https://www.gnu.org/software/solfege/")
(synopsis "Ear training") (synopsis "Ear training")
@ -659,6 +653,16 @@ Laurens Hammond and Don Leslie.")
(base32 (base32
"1fi2m4gmvxdi260821y09lxsimq82yv4k5bbgk3kyc3x1nyhn7vx")))) "1fi2m4gmvxdi260821y09lxsimq82yv4k5bbgk3kyc3x1nyhn7vx"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'remove-sse-flags
(lambda* (#:key system #:allow-other-keys)
(when (not (or (string-prefix? "x86_64" system)
(string-prefix? "i686" system)))
(substitute* "bristol/Makefile.in"
(("-msse -mfpmath=sse") "")))
#t)))))
(inputs (inputs
`(("alsa-lib" ,alsa-lib) `(("alsa-lib" ,alsa-lib)
("jack" ,jack-1) ("jack" ,jack-1)
@ -818,14 +822,14 @@ browser.")
(define-public drumstick (define-public drumstick
(package (package
(name "drumstick") (name "drumstick")
(version "1.0.1") (version "1.0.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/drumstick/" (uri (string-append "mirror://sourceforge/drumstick/"
version "/drumstick-" version ".tar.bz2")) version "/drumstick-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0mxgix85b2qqs859z91cxik5x0s60dykqiflbj62px9akvf91qdv")))) "0l47gy9yywrc860db5g3wdqg8yc8qdb2lqq6wvw1dfim5j0vbail"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
`(#:tests? #f ; no test target `(#:tests? #f ; no test target
@ -864,14 +868,15 @@ backends, including ALSA, OSS, Network and FluidSynth.")
(define-public vmpk (define-public vmpk
(package (package
(name "vmpk") (name "vmpk")
(version "0.6.1") (version "0.6.2a")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/vmpk/vmpk/" (uri (string-append "mirror://sourceforge/vmpk/vmpk/"
version "/vmpk-" version ".tar.bz2")) (string-drop-right version 1)
"/vmpk-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0ranldd033bd31m9d2vkbkn9zp1k46xbaysllai2i95rf1nhirqc")))) "0259iikvxnfdiifrh02g8xgcxikrkca4nhd3an8xzx0bd6bk8ifi"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
`(#:tests? #f ; no test target `(#:tests? #f ; no test target

View File

@ -3,6 +3,7 @@
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com> ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -23,6 +24,7 @@
#:use-module ((guix licenses) #:hide (zlib)) #:use-module ((guix licenses) #:hide (zlib))
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix svn-download)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (gnu packages) #:use-module (gnu packages)
@ -36,6 +38,8 @@
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
#:use-module (gnu packages texlive) #:use-module (gnu packages texlive)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages lynx)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages ncurses) #:use-module (gnu packages ncurses)
@ -282,14 +286,14 @@ concrete syntax of the language (Quotations, Syntax Extensions).")
(define-public hevea (define-public hevea
(package (package
(name "hevea") (name "hevea")
(version "2.23") (version "2.28")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://hevea.inria.fr/old/" (uri (string-append "http://hevea.inria.fr/old/"
name "-" version ".tar.gz")) name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1f9pj48518ixhjxbviv2zx27v4anp92zgg3x704g1s5cki2w33nv")))) "14fns13wlnpiv9i05841kvi3cq4b9v2sw5x3ff6ziws28q701qnd"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("ocaml" ,ocaml))) `(("ocaml" ,ocaml)))
@ -297,7 +301,12 @@ concrete syntax of the language (Quotations, Syntax Extensions).")
`(#:tests? #f ; no test suite `(#:tests? #f ; no test suite
#:make-flags (list (string-append "PREFIX=" %output)) #:make-flags (list (string-append "PREFIX=" %output))
#:phases (modify-phases %standard-phases #:phases (modify-phases %standard-phases
(delete 'configure)))) (delete 'configure)
(add-before 'build 'patch-/bin/sh
(lambda _
(substitute* "_tags"
(("/bin/sh") (which "sh")))
#t)))))
(home-page "http://hevea.inria.fr/") (home-page "http://hevea.inria.fr/")
(synopsis "LaTeX to HTML translator") (synopsis "LaTeX to HTML translator")
(description (description
@ -496,16 +505,65 @@ libpanel, librsvg and quartz.")
(version "2.48.3") (version "2.48.3")
(source (source
(origin (origin
(method url-fetch) (method svn-fetch)
(uri (string-append "https://www.seas.upenn.edu/~bcpierce/unison/" (uri (svn-reference
"download/releases/stable/unison-" version (url (string-append "https://webdav.seas.upenn.edu/svn/"
".tar.gz")) "unison/branches/"
(sha256 (version-major+minor version)))
(base32 (revision 535)))
"10sln52rnnsj213jy3166m0q97qpwnrwl6mm529xfy10x3xkq3gl")))) (file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"0486s53wyayicj9f2raj2dvwvk4xyzar219rccc1iczdwixm4x05"))
(modules '((guix build utils)
(ice-9 rdelim)
(ice-9 regex)
(srfi srfi-1)))
(snippet
`(begin
;; The svn revision in the release tarball appears to be
;; artificially manipulated in order to set the desired point
;; version number. Because the point version is calculated during
;; the build, we can offset pointVersionOrigin by the desired
;; point version and write that into "Rev: %d". We do this rather
;; than hardcoding the necessary revision number, for
;; maintainability.
(with-atomic-file-replacement "src/mkProjectInfo.ml"
(lambda (in out)
(let ((pt-ver (string->number (third (string-split ,version #\.))))
(pt-rx (make-regexp "^let pointVersionOrigin = ([0-9]+)"))
(rev-rx (make-regexp "Rev: [0-9]+")))
(let loop ((pt-origin #f))
(let ((line (read-line in 'concat)))
(cond
((regexp-exec pt-rx line)
=> (lambda (m)
(display line out)
(loop (string->number (match:substring m 1)))))
((regexp-exec rev-rx line)
=> (lambda (m)
(format out "~aRev: ~d~a"
(match:prefix m)
(+ pt-origin pt-ver)
(match:suffix m))
(dump-port in out))) ;done
(else
(display line out)
(loop pt-origin))))))))
;; Without the '-fix' argument, the html file produced does not
;; have functioning internal hyperlinks.
(substitute* "doc/Makefile"
(("hevea unison") "hevea -fix unison"))))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("out"
"doc")) ; 1.9 MiB of documentation
(native-inputs (native-inputs
`(("ocaml" ,ocaml))) `(("ocaml" ,ocaml)
;; For documentation
("ghostscript" ,ghostscript)
("texlive" ,texlive)
("hevea" ,hevea)
("lynx" ,lynx)))
(arguments (arguments
`(#:parallel-build? #f `(#:parallel-build? #f
#:parallel-tests? #f #:parallel-tests? #f
@ -522,7 +580,30 @@ libpanel, librsvg and quartz.")
(bin (string-append out "/bin"))) (bin (string-append out "/bin")))
(mkdir-p bin) (mkdir-p bin)
(setenv "HOME" out) ; forces correct INSTALLDIR in Makefile (setenv "HOME" out) ; forces correct INSTALLDIR in Makefile
#t)))))) #t)))
(add-after 'install 'install-doc
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((doc (string-append (assoc-ref outputs "doc")
"/share/doc/unison")))
(mkdir-p doc)
;; This file needs write-permissions, because it's
;; overwritten by 'docs' during documentation generation.
(chmod "src/strings.ml" #o600)
(and (zero? (system* "make" "docs"
"TEXDIRECTIVES=\\\\draftfalse"))
(begin
(for-each (lambda (f)
(install-file f doc))
(map (lambda (ext)
(string-append
"doc/unison-manual." ext))
;; Install only html documentation,
;; since the build is currently
;; non-reproducible with the ps, pdf,
;; and dvi docs.
'(;;"ps" "pdf" "dvi"
"html")))
#t))))))))
(home-page "https://www.cis.upenn.edu/~bcpierce/unison/") (home-page "https://www.cis.upenn.edu/~bcpierce/unison/")
(synopsis "File synchronizer") (synopsis "File synchronizer")
(description (description

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -19,12 +19,14 @@
(define-module (gnu packages openstack) (define-module (gnu packages openstack)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control) #:use-module (gnu packages version-control)
#:use-module (guix build-system python) #:use-module (guix build-system python)
#:use-module (guix download) #:use-module (guix download)
#:use-module ((guix licenses) #:use-module ((guix licenses)
#:select (asl2.0)) #:select (asl2.0))
#:use-module (guix packages)) #:use-module (guix packages)
#:use-module (srfi srfi-1))
(define-public python-bandit (define-public python-bandit
(package (package
@ -302,7 +304,12 @@ portions of your testing code.")
(license asl2.0))) (license asl2.0)))
(define-public python2-requests-mock (define-public python2-requests-mock
(package-with-python2 python-requests-mock)) (let ((requests-mock (package-with-python2 python-requests-mock)))
(package (inherit requests-mock)
(propagated-inputs
`(("python2-requests" ,python2-requests)
,@(alist-delete "python-requests"
(package-propagated-inputs requests-mock)))))))
(define-public python-stevedore (define-public python-stevedore
(package (package
@ -385,7 +392,12 @@ common features used in Tempest.")
(license asl2.0))) (license asl2.0)))
(define-public python2-tempest-lib (define-public python2-tempest-lib
(package-with-python2 python-tempest-lib)) (let ((tempest-lib (package-with-python2 python-tempest-lib)))
(package (inherit tempest-lib)
(propagated-inputs
`(("python2-jsonschema", python2-jsonschema)
,@(alist-delete "python-jsonschema"
(package-propagated-inputs tempest-lib)))))))
;; Packages from the Oslo library ;; Packages from the Oslo library
(define-public python-oslo.config (define-public python-oslo.config
@ -594,7 +606,9 @@ from the OpenStack project.")
(license asl2.0))) (license asl2.0)))
(define-public python2-oslosphinx (define-public python2-oslosphinx
(package-with-python2 python-oslosphinx)) (let ((oslosphinx (package-with-python2 python-oslosphinx)))
(package (inherit oslosphinx)
(propagated-inputs `(("python2-requests" ,python2-requests))))))
(define-public python-oslotest (define-public python-oslotest
(package (package
@ -679,3 +693,134 @@ handling.")
(define-public python2-oslo.utils (define-public python2-oslo.utils
(package-with-python2 python-oslo.utils)) (package-with-python2 python-oslo.utils))
(define-public python-keystoneclient
(package
(name "python-keystoneclient")
(version "1.8.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-keystoneclient" version))
(sha256
(base32
"1w4csvkah67rfpxylxnvs2s3594i0f9isy8pf4gnsqs5zirvjaa4"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)
("python-sphinx" ,python-sphinx)
;; and some packages for the tests
("openssl" ,openssl)
("python-coverage" ,python-coverage)
("python-discover" ,python-discover)
("python-fixtures" ,python-fixtures)
("python-hacking" ,python-hacking)
("python-keyring" ,python-keyring)
("python-lxml" ,python-lxml)
("python-mock" ,python-mock)
("python-mox3" ,python-mox3)
("python-oauthlib" ,python-oauthlib)
("python-oslosphinx" ,python-oslosphinx)
("python-oslotest" ,python-oslotest)
("python-pycrypto" ,python-pycrypto)
("python-requests-mock" ,python-requests-mock)
("python-temptest-lib" ,python-tempest-lib)
("python-testrepository" ,python-testrepository)
("python-testresources" ,python-testresources)
("python-testtools" ,python-testtools)
("python-webob" ,python-webob)))
(propagated-inputs
`(("python-babel" ,python-babel)
("python-debtcollector" ,python-debtcollector)
("python-iso8601" ,python-iso8601)
("python-netaddr" ,python-netaddr)
("python-oslo.config" ,python-oslo.config)
("python-oslo.i18n" ,python-oslo.i18n)
("python-oslo.serialization" ,python-oslo.serialization)
("python-oslo.utils" ,python-oslo.utils)
("python-pbr" ,python-pbr)
("python-prettytable" ,python-prettytable)
("python-requests" ,python-requests)
("python-six" ,python-six)
("python-stevedore" ,python-stevedore)))
(home-page "http://www.openstack.org/")
(synopsis "Client Library for OpenStack Identity")
(description
"Python-keystoneclient is the identity service used by OpenStack for
authentication (authN) and high-level authorization (authZ). It currently
supports token-based authN with user/service authZ, and is scalable to support
OAuth, SAML, and OpenID in future versions. Out of the box, Keystone uses
SQLite for its identity store database, with the option to connect to external
LDAP.")
(license asl2.0)))
(define-public python2-keystoneclient
(let ((keystoneclient (package-with-python2 python-keystoneclient)))
(package (inherit keystoneclient)
(propagated-inputs
`(("python2-requests" ,python2-requests)
,@(alist-delete "python-requests"
(package-propagated-inputs keystoneclient))))
(native-inputs
`(("python2-oauthlib" ,python2-oauthlib)
("python2-oslosphinx" ,python2-oslosphinx)
("python2-requests-mock" ,python2-requests-mock)
("python2-tempest-lib" ,python2-tempest-lib)
,@(fold alist-delete (package-native-inputs keystoneclient)
'("python-oauthlib" "python-oslosphinx" "python-requests-mock" "python-tempest-lib")))))))
(define-public python-swiftclient
(package
(name "python-swiftclient")
(version "2.6.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-swiftclient" version))
(sha256
(base32
"1j33l4z9vqh0scfncl4fxg01zr1hgqxhhai6gvcih1gccqm4nd7p"))))
(build-system python-build-system)
(native-inputs
`(("python-pbr", python-pbr)
("python-setuptools" ,python-setuptools)
("python-sphinx" ,python-sphinx)
;; The folloing packages are needed for the tests.
("python-coverage" ,python-coverage)
("python-discover" ,python-discover)
("python-hacking" ,python-hacking)
("python-mock" ,python-mock)
("python-oslosphinx" ,python-oslosphinx)
("python-keystoneclient" ,python-keystoneclient)
("python-testrepository" ,python-testrepository)
("python-testtools" ,python-testtools)))
(propagated-inputs
`(("python-requests" ,python-requests)
("python-six" ,python-six)))
(home-page "http://www.openstack.org/")
(synopsis "OpenStack Object Storage API Client Library")
(description
"OpenStack Object Storage (code-named Swift) creates redundant, scalable
object storage using clusters of standardized servers to store petabytes of
accessible data. It is not a file system or real-time data storage system, but
rather a long-term storage system for a more permanent type of static data that
can be retrieved, leveraged, and then updated if necessary. Primary examples of
data that best fit this type of storage model are virtual machine images, photo
storage, email storage and backup archiving. Having no central \"brain\" or
master point of control provides greater scalability, redundancy and
permanence.")
(license asl2.0)))
(define-public python2-swiftclient
(let ((swiftclient (package-with-python2 python-swiftclient)))
(package (inherit swiftclient)
(propagated-inputs
`(("python2-futures" ,python2-futures)
("python2-requests" ,python2-requests)
,@(alist-delete "python-requests"
(package-propagated-inputs swiftclient))))
(native-inputs
`(("python2-keystoneclient" ,python2-keystoneclient)
("python2-oslosphinx" ,python2-oslosphinx)
,@(fold alist-delete (package-native-inputs swiftclient)
'("python-keystoneclient" "python-oslosphinx")))))))

View File

@ -1,31 +0,0 @@
From 4a99b0023bdfbbe486b9649489a32ea184c18c9a Mon Sep 17 00:00:00 2001
From: Valentin Antonescu <valentin@jhu.edu>
Date: Tue, 2 Dec 2014 11:19:13 -0500
Subject: [PATCH] Make sure the Mavericks test happens only under Darwin.
---
Makefile | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/Makefile b/Makefile
index d74f7c8..a4cdfa7 100644
--- a/Makefile
+++ b/Makefile
@@ -54,12 +54,11 @@ endif
MACOS = 0
ifneq (,$(findstring Darwin,$(shell uname)))
MACOS = 1
-endif
-
-ifneq (,$(findstring 13,$(shell uname -r)))
- CPP = clang++
- CC = clang
- EXTRA_FLAGS += -stdlib=libstdc++
+ ifneq (,$(findstring 13,$(shell uname -r)))
+ CPP = clang++
+ CC = clang
+ EXTRA_FLAGS += -stdlib=libstdc++
+ endif
endif
POPCNT_CAPABILITY ?= 1

View File

@ -14,7 +14,7 @@
;;; Copyright © 2015 Leo Famulari <leo@famulari.name> ;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com> ;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com> ;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2015 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2015 Chris Marusich <cmmarusich@gmail.com>
;;; ;;;
@ -1016,31 +1016,16 @@ doing practical, real world data analysis in Python.")
(define-public python-tzlocal (define-public python-tzlocal
(package (package
(name "python-tzlocal") (name "python-tzlocal")
(version "1.1.1") (version "1.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://pypi.python.org/packages/source/t/" (uri (pypi-uri "tzlocal" version))
"tzlocal/tzlocal-" version ".zip"))
(sha256 (sha256
(base32 (base32
"1m3y918c3chf41fwg2bx4w42bqsjzn3dyvvcmwwy13c8gj6zssv9")))) "12wsw2fl3adrqrwghasld57bhqdrzn0crblqrci1p5acd0ni53s3"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (propagated-inputs `(("python-pytz" ,python-pytz)))
`(("unzip" ,unzip)
("python-setuptools" ,python-setuptools)))
(inputs `(("python-pytz" ,python-pytz)))
(arguments
`(#:phases
(alist-replace
'unpack
(lambda _
(let ((unzip (string-append (assoc-ref %build-inputs "unzip")
"/bin/unzip"))
(source (assoc-ref %build-inputs "source")))
(and (zero? (system* unzip source))
(chdir (string-append "tzlocal-" ,version)))))
%standard-phases)))
(home-page "https://github.com/regebro/tzlocal") (home-page "https://github.com/regebro/tzlocal")
(synopsis (synopsis
"Local timezone information for Python") "Local timezone information for Python")
@ -1627,18 +1612,18 @@ and many external plugins.")
(sha256 (sha256
(base32 (base32
"1lf9jsmhqk5nc4w3kzwglmdzjvmi7ajvrsnwv826j3bn0wzx8c92")))) "1lf9jsmhqk5nc4w3kzwglmdzjvmi7ajvrsnwv826j3bn0wzx8c92"))))
(build-system python-build-system) (build-system python-build-system)
(propagated-inputs (propagated-inputs
`(("python-coverage" ,python-coverage) `(("python-coverage" ,python-coverage)
("python-pytest" ,python-pytest))) ("python-pytest" ,python-pytest)))
(native-inputs (native-inputs
`(("python-setuptools" ,python-setuptools))) `(("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/pytest-dev/pytest-cov") (home-page "https://github.com/pytest-dev/pytest-cov")
(synopsis "Pytest plugin for measuring coverage") (synopsis "Pytest plugin for measuring coverage")
(description (description
"Pytest-cov produces coverage reports. It supports centralised testing and "Pytest-cov produces coverage reports. It supports centralised testing and
distributed testing in both load and each modes. It also supports coverage distributed testing in both @code{load} and @code{each} modes. It also
of subprocesses.") supports coverage of subprocesses.")
(license license:expat))) (license license:expat)))
(define-public python2-pytest-cov (define-public python2-pytest-cov
@ -2136,28 +2121,38 @@ with sensible defaults out of the box.")
(package (package
(name "python-wheel") (name "python-wheel")
(version "0.26.0") (version "0.26.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "wheel" version)) (uri (pypi-uri "wheel" version))
(sha256 (sha256
(base32 (base32
"032k1ajijbqnv0z0k88bhf75mdimi18fcmm28mss90610lw3bbga")))) "032k1ajijbqnv0z0k88bhf75mdimi18fcmm28mss90610lw3bbga"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (native-inputs
`(("python-setuptools" ,python-setuptools) `(("python-setuptools" ,python-setuptools)
("python-jsonschema" ,python-jsonschema) ("python-jsonschema" ,python-jsonschema)
("python-pytest-cov" ,python-pytest-cov))) ("python-pytest-cov" ,python-pytest-cov)))
(home-page "https://bitbucket.org/pypa/wheel/") (home-page "https://bitbucket.org/pypa/wheel/")
(synopsis "Built-package format for Python") (synopsis "Format for built Python packages")
(description (description
"A wheel is a ZIP-format archive with a specially formatted filename and the "A wheel is a ZIP-format archive with a specially formatted filename and
.whl extension. It is designed to contain all the files for a PEP 376 the @code{.whl} extension. It is designed to contain all the files for a PEP
compatible install in a way that is very close to the on-disk format.") 376 compatible install in a way that is very close to the on-disk format. Many
(license license:expat))) packages will be properly installed with only the @code{Unpack} step and the
unpacked archive preserves enough information to @code{Spread} (copy data and
scripts to their final locations) at any later time. Wheel files can be
installed with a newer @code{pip} or with wheel's own command line utility.")
(license license:expat)))
(define-public python2-wheel (define-public python2-wheel
(package-with-python2 python-wheel)) (let ((wheel (package-with-python2 python-wheel)))
(package (inherit wheel)
(native-inputs
`(("python2-functools32" ,python2-functools32)
("python2-jsonschema" ,python2-jsonschema)
,@(alist-delete "python-jsonschema"
(package-native-inputs wheel)))))))
(define-public python-requests (define-public python-requests
(package (package
@ -2184,13 +2179,54 @@ compatible install in a way that is very close to the on-disk format.")
than Pythons urllib2 library.") than Pythons urllib2 library.")
(license asl2.0))) (license asl2.0)))
;; Some software requires an older version of Requests, notably Docker
;; Compose.
(define-public python-requests-2.7
(package (inherit python-requests)
(version "2.7.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "requests" version))
(sha256
(base32
"0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
(define-public python2-requests (define-public python2-requests
(package-with-python2 python-requests)) (let ((requests (package-with-python2 python-requests)))
(package (inherit requests)
(propagated-inputs
`(("python2-wheel" ,python2-wheel)
,@(alist-delete "python-wheel"
(package-propagated-inputs requests)))))))
(define-public python-vcversioner
(package
(name "python-vcversioner")
(version "2.14.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "vcversioner" version))
(sha256
(base32
"11ivq1bm7v0yb4nsfbv9m7g7lyjn112gbvpjnjz8nv1fx633dm5c"))))
(build-system python-build-system)
(inputs
`(("python-setuptools" ,python-setuptools)))
(synopsis "Python library for version number discovery")
(description "Vcversioner is a Python library that inspects tagging
information in a variety of version control systems in order to discover
version numbers.")
(home-page "https://github.com/habnabit/vcversioner")
(license isc)))
(define-public python2-vcversioner
(package-with-python2 python-vcversioner))
(define-public python-jsonschema (define-public python-jsonschema
(package (package
(name "python-jsonschema") (name "python-jsonschema")
(version "2.4.0") (version "2.5.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -2199,10 +2235,11 @@ than Pythons urllib2 library.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1yik3031ziygvq66rj3mzfqdgxj29sg1bkfc46wsgi7lnbqs560j")))) "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
(build-system python-build-system) (build-system python-build-system)
(inputs (inputs
`(("python-setuptools" ,python-setuptools))) `(("python-setuptools" ,python-setuptools)
("python-vcversioner" ,python-vcversioner)))
(home-page "http://github.com/Julian/jsonschema") (home-page "http://github.com/Julian/jsonschema")
(synopsis "Implementation of JSON Schema for Python") (synopsis "Implementation of JSON Schema for Python")
(description (description
@ -2210,7 +2247,11 @@ than Pythons urllib2 library.")
(license license:expat))) (license license:expat)))
(define-public python2-jsonschema (define-public python2-jsonschema
(package-with-python2 python-jsonschema)) (let ((jsonschema (package-with-python2 python-jsonschema)))
(package (inherit jsonschema)
(inputs
`(("python2-functools32" ,python2-functools32)
,@(package-inputs jsonschema))))))
(define-public python-unidecode (define-public python-unidecode
(package (package
@ -4266,11 +4307,13 @@ computing.")
,@(alist-delete "python-terminado" ,@(alist-delete "python-terminado"
(package-propagated-inputs ipython)))) (package-propagated-inputs ipython))))
(inputs (inputs
`(("python2-mock" ,python2-mock) `(("python2-jsonschema" ,python2-jsonschema)
("python2-mock" ,python2-mock)
("python2-matplotlib" ,python2-matplotlib) ("python2-matplotlib" ,python2-matplotlib)
("python2-numpy" ,python2-numpy) ("python2-numpy" ,python2-numpy)
("python2-requests" ,python2-requests)
,@(fold alist-delete (package-inputs ipython) ,@(fold alist-delete (package-inputs ipython)
'("python-matplotlib" "python-numpy"))))))) '("python-jsonschema" "python-matplotlib" "python-numpy" "python-requests")))))))
(define-public python-isodate (define-public python-isodate
(package (package
@ -4341,13 +4384,22 @@ and written in Python.")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (pypi-uri "urwid" version))
"https://pypi.python.org/packages/source/u/urwid/urwid-"
version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"18mb0yy94sjc434rd61m2sfnw27sa0nyrszpj5a9r9zh7fnlzw19")))) "18mb0yy94sjc434rd61m2sfnw27sa0nyrszpj5a9r9zh7fnlzw19"))))
(build-system python-build-system) (build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
;; Disable failing test. Bug filed upstream:
;; https://github.com/wardi/urwid/issues/164
;; TODO: check again for python-urwid > 1.3.0 or python > 3.4.3.
(add-after 'unpack 'disable-failing-test
(lambda _
(substitute* "urwid/tests/test_event_loops.py"
(("test_remove_watch_file")
"disable_remove_watch_file")))))))
(native-inputs `(("python-setuptools" ,python-setuptools))) (native-inputs `(("python-setuptools" ,python-setuptools)))
(home-page "http://urwid.org") (home-page "http://urwid.org")
(synopsis "Console user interface library for Python") (synopsis "Console user interface library for Python")
@ -5613,6 +5665,32 @@ suitable for a wide range of protocols based on the ASN.1 specification.")
(define-public python2-pyasn1 (define-public python2-pyasn1
(package-with-python2 python-pyasn1)) (package-with-python2 python-pyasn1))
(define-public python-pyasn1-modules
(package
(name "python-pyasn1-modules")
(version "0.0.8")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyasn1-modules" version))
(sha256
(base32
"0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(propagated-inputs
`(("python-pyasn1" ,python-pyasn1)))
(home-page "http://sourceforge.net/projects/pyasn1/")
(synopsis "ASN.1 codec implementations")
(description
"Pyasn1-modules is a collection of Python modules providing ASN.1 types and
implementations of ASN.1-based codecs and protocols.")
(license bsd-3)))
(define-public python2-pyasn1-modules
(package-with-python2 python-pyasn1-modules))
(define-public python2-ipaddress (define-public python2-ipaddress
(package (package
(name "python2-ipaddress") (name "python2-ipaddress")
@ -6622,3 +6700,557 @@ the standard library.")
(define-public python2-contextlib2 (define-public python2-contextlib2
(package-with-python2 python-contextlib2)) (package-with-python2 python-contextlib2))
(define-public python-texttable
(package
(name "python-texttable")
(version "0.8.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "texttable" version))
(sha256
(base32
"0bkhs4dx9s6g7fpb969hygq56hyz4ncfamlynw72s0n6nqfbd1w5"))))
(build-system python-build-system)
(arguments '(#:tests? #f)) ; no tests
(home-page "https://github.com/foutaise/texttable/")
(synopsis "Python module for creating simple ASCII tables")
(description "Texttable is a Python module for creating simple ASCII
tables.")
(license lgpl2.1+)))
(define-public python2-texttable
(package-with-python2 python-texttable))
(define-public python-websocket-client
(package
(name "python-websocket-client")
(version "0.34.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://pypi.python.org/packages/source/w"
"/websocket-client/websocket_client-"
version ".tar.gz"))
(sha256
(base32
"1prdx6d49f1cff17kzj15bnz09palfdgc1m5dkq9jd4mr90n4ak8"))))
(build-system python-build-system)
(native-inputs
`(("python-six" ,python-six))) ; for tests
(inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/liris/websocket-client")
(synopsis "WebSocket client for Python")
(description "The Websocket-client module provides the low level APIs for
WebSocket usage in Python programs.")
(license lgpl2.1+)))
(define-public python2-websocket-client
(package-with-python2 python-websocket-client))
(define-public python-atomicwrites
(package
(name "python-atomicwrites")
(version "0.1.8")
(source (origin
(method url-fetch)
(uri (pypi-uri "atomicwrites" version))
(sha256
(base32
"13nwk0gw0yb61pnf5vxs3fvhav6q3zrf08x9ggc93bnk5fsssx1j"))))
(build-system python-build-system)
(synopsis "Atomic file writes in Python")
(description "Library for atomic file writes using platform dependent tools
for atomic filesystem operations.")
(home-page "https://github.com/untitaker/python-atomicwrites")
(license license:expat)))
(define-public python-requests-toolbelt
(package
(name "python-requests-toolbelt")
(version "0.5.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "requests-toolbelt" version))
(sha256
(base32
"1kbms1s52dhb98vbpaprr15b0ijdbqp500lpfsyjccpd8cjkyngk"))))
(build-system python-build-system)
(propagated-inputs
`(("python-requests" ,python-requests)))
(synopsis "Extensions to python-requests")
(description "This is a toolbelt of useful classes and functions to be used
with python-requests.")
(home-page "https://github.com/sigmavirus24/requests-toolbelt")
(license asl2.0)))
(define-public python-click-threading
(package
(name "python-click-threading")
(version "0.1.2")
(source (origin
(method url-fetch)
(uri (pypi-uri "click-threading" version))
(sha256
(base32
"0jmrv4334lfxa2ss53c06dafdwqbk1pb3ihd26izn5igw1bm8145"))))
(build-system python-build-system)
(propagated-inputs
`(("python-click" ,python-click)))
(synopsis "Utilities for multithreading in Click")
(description "This package provides utilities for multithreading in Click
applications.")
(home-page "https://github.com/click-contrib/click-threading")
(license license:expat)))
(define-public python-click-log
(package
(name "python-click-log")
(version "0.1.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "click-log" version))
(sha256
(base32
"1z3jdwjmwax159zrnyx830xa968rfqrpkm04ad5xqyh0269ydiqb"))))
(build-system python-build-system)
(propagated-inputs
`(("python-click" ,python-click)))
(synopsis "Logging for click applications")
(description "This package provides a Python library for logging Click
applications.")
(home-page "https://github.com/click-contrib/click-log")
(license license:expat)))
(define-public python-apipkg
(package
(name "python-apipkg")
(version "1.4")
(source (origin
(method url-fetch)
(uri (pypi-uri "apipkg" version))
(sha256
(base32
"1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
(build-system python-build-system)
(native-inputs
`(("unzip" ,unzip)))
(propagated-inputs
`(("python-pytest" ,python-pytest)))
(synopsis "Namespace control and lazy-import mechanism")
(description "With apipkg you can control the exported namespace of a Python
package and greatly reduce the number of imports for your users. It is a small
pure Python module that works on virtually all Python versions.")
(home-page "https://bitbucket.org/hpk42/apipkg")
(license license:expat)))
(define-public python-execnet
(package
(name "python-execnet")
(version "1.4.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "execnet" version))
(sha256
(base32
"1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools-scm" ,python-setuptools-scm)))
(propagated-inputs
`(("python-apipkg" ,python-apipkg)))
(synopsis "Rapid multi-Python deployment")
(description "Execnet provides a share-nothing model with
channel-send/receive communication for distributing execution across many
Python interpreters across version, platform and network barriers. It has a
minimal and fast API targetting the following uses:
@enumerate
@item distribute tasks to (many) local or remote CPUs
@item write and deploy hybrid multi-process applications
@item write scripts to administer multiple environments
@end enumerate")
(home-page "http://codespeak.net/execnet/")
(license license:expat)))
;;; The software provided by this package was integrated into pytest 2.8.
(define-public python-pytest-cache
(package
(name "python-pytest-cache")
(version "1.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "pytest-cache" version))
(sha256
(base32
"1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
(build-system python-build-system)
(propagated-inputs
`(("python-execnet" ,python-execnet)))
(synopsis "Py.test plugin with mechanisms for caching across test runs")
(description "The pytest-cache plugin provides tools to rerun failures from
the last py.test invocation.")
(home-page "https://bitbucket.org/hpk42/pytest-cache/")
(license license:expat)))
(define-public python-pytest-localserver
(package
(name "python-pytest-localserver")
(version "0.3.4")
(source (origin
(method url-fetch)
(uri (pypi-uri "pytest-localserver" version ".zip"))
(sha256
(base32
"050q505a7gnsz7vqidw0w5dvxjb2flzi7z734agpjzmsl85c2bcx"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(replace 'check
(lambda _
(zero? (system* "py.test" "--genscript=runtests.py"))
(zero? (system* "py.test")))))))
(native-inputs
`(("unzip" ,unzip)))
(propagated-inputs
`(("python-pytest" ,python-pytest)
("python-requests" ,python-requests)
("python-six" ,python-six)
("python-werkzeug" ,python-werkzeug)))
(synopsis "Py.test plugin to test server connections locally")
(description "Pytest-localserver is a plugin for the pytest testing
framework which enables you to test server connections locally.")
(home-page "https://pypi.python.org/pypi/pytest-localserver")
(license license:expat)))
(define-public python-wsgi-intercept
(package
(name "python-wsgi-intercept")
(version "0.10.3")
(source (origin
(method url-fetch)
(uri (pypi-uri "wsgi_intercept" version))
(sha256
(base32
"0xyfchacywb1mql84270mcidsqc5ssyspd18yacjk82x2xc68h0r"))))
(build-system python-build-system)
(native-inputs
`(("python-pytest" ,python-pytest)))
(propagated-inputs
`(("python-httplib2" ,python-httplib2)
("python-requests" ,python-requests)))
(synopsis "Puts a WSGI application in place of a real URI for testing")
(description "Wsgi_intercept installs a WSGI application in place of a real
URI for testing. Testing a WSGI application normally involves starting a
server at a local host and port, then pointing your test code to that address.
Instead, this library lets you intercept calls to any specific host/port
combination and redirect them into a WSGI application importable by your test
program. Thus, you can avoid spawning multiple processes or threads to test
your Web app.")
(home-page "https://github.com/cdent/wsgi-intercept")
(license license:expat)))
(define-public python-pytest-xprocess
(package
(name "python-pytest-xprocess")
(version "0.9.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "pytest-xprocess" version))
(sha256
(base32
"17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
(build-system python-build-system)
(propagated-inputs
`(("python-pytest" ,python-pytest)
("python-pytest-cache" ,python-pytest-cache)
("python-psutil" ,python-psutil)))
(synopsis "Pytest plugin to manage external processes across test runs")
(description "Pytest-xprocess is an experimental py.test plugin for managing
processes across test runs.")
(home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
(license license:expat)))
(define-public python-icalendar
(package
(name "python-icalendar")
(version "3.9.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "icalendar" version))
(sha256
(base32
"0fhrczdj3jxy5bvswphp3vys7vwv5c9bpwg7asykqwa3z6253q6q"))))
(build-system python-build-system)
(propagated-inputs
`(("python-dateutil-2" ,python-dateutil-2)
("python-pytz" ,python-pytz)))
(synopsis "Python library for parsing iCalendar files")
(description "The icalendar package is a parser/generator of iCalendar
files for use with Python.")
(home-page "https://github.com/collective/icalendar")
(license bsd-2)))
(define-public python-sphinxcontrib-newsfeed
(package
(name "python-sphinxcontrib-newsfeed")
(version "0.1.4")
(source (origin
(method url-fetch)
(uri (pypi-uri "sphinxcontrib-newsfeed" version))
(sha256
(base32
"1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
(build-system python-build-system)
(propagated-inputs
`(("python-docutils" ,python-docutils)
("python-sphinx" ,python-sphinx)))
(synopsis "News Feed extension for Sphinx")
(description "Sphinxcontrib-newsfeed is an extension for adding a simple
Blog, News or Announcements section to a Sphinx website.")
(home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
(license bsd-2)))
(define-public python-args
(package
(name "python-args")
(version "0.1.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "args" version))
(sha256
(base32
"057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
(build-system python-build-system)
(inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/kennethreitz/args")
(synopsis "Command-line argument parser")
(description
"This library provides a Python module to parse command-line arguments.")
(license bsd-3)))
(define-public python2-args
(package-with-python2 python-args))
(define-public python-clint
(package
(name "python-clint")
(version "0.5.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "clint" version))
(sha256
(base32
"1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
(build-system python-build-system)
(inputs
`(("python-args" ,python-args)
("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/kennethreitz/clint")
(synopsis "Command-line interface tools")
(description
"Clint is a Python module filled with a set of tools for developing
command-line applications, including tools for colored and indented
output, progress bar display, and pipes.")
(license isc)))
(define-public python2-clint
(package-with-python2 python-clint))
(define-public python-astor
(package
(name "python-astor")
(version "0.5")
(source (origin
(method url-fetch)
(uri (pypi-uri "astor" version))
(sha256
(base32
"1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
(build-system python-build-system)
(inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/berkerpeksag/astor")
(synopsis "Read and write Python ASTs")
(description
"Astor is designed to allow easy manipulation of Python source via the
Abstract Syntax Tree.")
(license bsd-3)))
(define-public python2-astor
(package-with-python2 python-astor))
(define-public python-rply
(package
(name "python-rply")
(version "0.7.4")
(source (origin
(method url-fetch)
(uri (pypi-uri "rply" version))
(sha256
(base32
"12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
(build-system python-build-system)
(inputs
`(("python-appdirs" ,python-appdirs)
("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/alex/rply")
(synopsis "Parser generator for Python")
(description
"This package provides a pure Python based parser generator, that also
works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
with a new public API, and RPython support.")
(license bsd-3)))
(define-public python2-rply
(package-with-python2 python-rply))
(define-public python-hy
(package
(name "python-hy")
(version "0.11.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "hy" version))
(sha256
(base32
"1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs"))))
(build-system python-build-system)
(inputs
`(("python-astor" ,python-astor)
("python-clint" ,python-clint)
("python-rply" ,python-rply)
("python-setuptools" ,python-setuptools)))
(home-page "http://hylang.org/")
(synopsis "Lisp frontend to Python")
(description
"Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
Python at your fingertips, in Lisp form.")
(license license:expat)))
(define-public python2-hy
(package-with-python2 python-hy))
(define-public python-rauth
(package
(name "python-rauth")
(version "0.7.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "rauth" version))
(sha256
(base32
"00pq7zw429hhza9c0qzxiqp77m653jv09z92nralnmzwdf6pzicf"))))
(build-system python-build-system)
(arguments
`(#:test-target "check"))
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(propagated-inputs
`(("python-requests" ,python-requests)))
(home-page "https://github.com/litl/rauth")
(synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
(description
"Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
provides service wrappers for convenient connection initialization and
authenticated session objects providing things like keep-alive.")
(license license:expat)))
(define-public python2-rauth
(let ((rauth (package-with-python2 python-rauth)))
(package (inherit rauth)
(propagated-inputs `(("python2-requests" ,python2-requests)))
(native-inputs
`(("python2-unittest2", python2-unittest2)
,@(package-native-inputs rauth))))))
(define-public python2-functools32
(package
(name "python2-functools32")
(version "3.2.3-2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "functools32" version))
(sha256
(base32
"0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
(build-system python-build-system)
(arguments
`(#:python ,python-2
#:tests? #f)) ; no test target
(native-inputs
`(("python2-setuptools" ,python2-setuptools)))
(home-page "https://github.com/MiCHiLU/python-functools32")
(synopsis
"Backport of the functools module from Python 3.2.3")
(description
"This package is a backport of the @code{functools} module from Python
3.2.3 for use with older versions of Python and PyPy.")
(license license:expat)))
(define-public python-futures
(package
(name "python-futures")
(version "3.0.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "futures" version))
(sha256
(base32
"1vcb34dqhzkhbq1957vdjszhhm5y3j9ba88dgwhqx2zynhmk9qig"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/agronholm/pythonfutures")
(synopsis
"Backport of the concurrent.futures package from Python 3.2")
(description
"The concurrent.futures module provides a high-level interface for
asynchronously executing callables. This package backports the
concurrent.futures package from Python 3.2")
(license bsd-3)))
(define-public python2-futures
(package-with-python2 python-futures))
(define-public python-urllib3
(package
(name "python-urllib3")
(version "1.13.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "urllib3" version))
(sha256
(base32
"10rrbr6c6k7j5dvfsyj4b2gsgxg9gggnn708qixf6ll57xqivfkf"))))
(build-system python-build-system)
(arguments `(#:tests? #f))
(native-inputs
`(("python-setuptools" ,python-setuptools)
;; some packages for tests
("python-nose" ,python-nose)
("python-mock" ,python-mock)
("python-tornado" ,python-tornado)))
(propagated-inputs
`(;; packages for https security
("python-certifi" ,python-certifi)
("python-ndg-httpsclient" ,python-ndg-httpsclient)
("python-pyasn1" ,python-pyasn1)
("python-pyopenssl" ,python-pyopenssl)))
(home-page "http://urllib3.readthedocs.org/")
(synopsis "HTTP library with thread-safe connection pooling")
(description
"Urllib3 supports features left out of urllib and urllib2 libraries. It
can reuse the same socket connection for multiple requests, it can POST files,
supports url redirection and retries, and also gzip and deflate decoding.")
(license license:expat)))
(define-public python2-urllib3
(package-with-python2 python-urllib3))

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2012, 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -30,14 +31,14 @@
(define-public rsync (define-public rsync
(package (package
(name "rsync") (name "rsync")
(version "3.1.0") (version "3.1.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://rsync.samba.org/ftp/rsync/src/rsync-" (uri (string-append "http://rsync.samba.org/ftp/rsync/src/rsync-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0kirw8wglqvwi1v8bwxp373g03xg857h59j5k3mmgff9gzvj7jl1")))) "1hm1q04hz15509f0p9bflw4d6jzfvpm1d36dxjwihk1wzakn5ypc"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("perl" ,perl) (inputs `(("perl" ,perl)
("acl" ,acl))) ("acl" ,acl)))

View File

@ -2978,3 +2978,67 @@ methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
device.") device.")
(home-page "http://rubyworks.github.io/ansi") (home-page "http://rubyworks.github.io/ansi")
(license license:bsd-2))) (license license:bsd-2)))
(define-public ruby-systemu
(package
(name "ruby-systemu")
(version "2.6.5")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "systemu" version))
(sha256
(base32
"0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
(build-system ruby-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'check 'set-version
(lambda _
(setenv "VERSION" ,version)
#t)))))
(synopsis "Capture of stdout/stderr and handling of child processes")
(description
"Systemu can be used on any platform to return status, stdout, and stderr
of any command. Unlike other methods like @code{open3} and @code{popen4}
there is no danger of full pipes or threading issues hanging your process or
subprocess.")
(home-page "https://github.com/ahoward/systemu")
(license license:ruby)))
(define-public ruby-bio-commandeer
(package
(name "ruby-bio-commandeer")
(version "0.1.2")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "bio-commandeer" version))
(sha256
(base32
"061jxa6km92qfwzl058r2gp8gfcsbyr7m643nw1pxvmjdswaf6ly"))))
(build-system ruby-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
;; Run test without calling 'rake' so that jeweler is
;; not required as an input.
(lambda _
(zero? (system* "rspec" "spec/bio-commandeer_spec.rb")))))))
(propagated-inputs
`(("ruby-bio-logger" ,ruby-bio-logger)
("ruby-systemu" ,ruby-systemu)))
(native-inputs
`(("bundler" ,bundler)
("ruby-rspec" ,ruby-rspec)))
(synopsis "Simplified running of shell commands from within Ruby")
(description
"Bio-commandeer provides an opinionated method of running shell commands
from within Ruby. The advantage of bio-commandeer over other methods of
running external commands is that when something goes wrong, messages printed
to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
detail to ease debugging.")
(home-page "http://github.com/wwood/bioruby-commandeer")
(license license:expat)))

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -111,7 +111,7 @@ a server that supports the SSH-2 protocol.")
(define-public openssh (define-public openssh
(package (package
(name "openssh") (name "openssh")
(version "7.1p1") (version "7.1p2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (let ((tail (string-append name "-" version ".tar.gz"))) (uri (let ((tail (string-append name "-" version ".tar.gz")))
@ -122,7 +122,7 @@ a server that supports the SSH-2 protocol.")
(string-append "http://ftp2.fr.openbsd.org/pub/OpenBSD/OpenSSH/portable/" (string-append "http://ftp2.fr.openbsd.org/pub/OpenBSD/OpenSSH/portable/"
tail)))) tail))))
(sha256 (base32 (sha256 (base32
"0a44mnr8bvw41zg83xh4sb55d8nds29j95gxvxk5qg863lnns2pw")))) "1gbbvszz74lkc7b2mqr3ccgpm65zj0k5h7a2ssh0c7pjvhjg0xfx"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("groff" ,groff) (inputs `(("groff" ,groff)
("openssl" ,openssl) ("openssl" ,openssl)

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Vicente Vera Parra <vicentemvp@gmail.com> ;;; Copyright © 2015 Vicente Vera Parra <vicentemvp@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -1676,6 +1676,8 @@ worker processes and collect and return the results on the master.")
"0s9kab5khk7daqf6nfp1wm1qnhkssnnwnymisfwyk3kz4q5maqfz")))) "0s9kab5khk7daqf6nfp1wm1qnhkssnnwnymisfwyk3kz4q5maqfz"))))
(properties (properties
`((upstream-name . "SparseM"))) `((upstream-name . "SparseM")))
(inputs
`(("gfortran" ,gfortran)))
(build-system r-build-system) (build-system r-build-system)
(home-page "http://www.econ.uiuc.edu/~roger/research/sparse/sparse.html") (home-page "http://www.econ.uiuc.edu/~roger/research/sparse/sparse.html")
(synopsis "Sparse linear algebra") (synopsis "Sparse linear algebra")

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -28,7 +28,7 @@
(define-public sxiv (define-public sxiv
(package (package
(name "sxiv") (name "sxiv")
(version "1.3.1") (version "1.3.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -37,7 +37,7 @@
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"03hxy5ff7xbs15rhlbpgx8xmvmpjlffp0m4528975hg16sqa2c4s")))) "0lxnd33gaw4drhdwbkk94wzrjyhh64d57jq2ps7ffmqgizg6hlwz"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:tests? #f ; no check target '(#:tests? #f ; no check target

View File

@ -56,6 +56,7 @@
#:use-module (gnu packages ncurses) #:use-module (gnu packages ncurses)
#:use-module (gnu packages ssh) #:use-module (gnu packages ssh)
#:use-module (gnu packages web) #:use-module (gnu packages web)
#:use-module (gnu packages openstack)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python) #:use-module (gnu packages python)
@ -1028,3 +1029,33 @@ fetching updates) over a collection of version control repositories. It
supports a large number of version control systems: Git, Subversion, supports a large number of version control systems: Git, Subversion,
Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.") Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.")
(license gpl2+))) (license gpl2+)))
(define-public git-annex-remote-hubic
(package
(name "git-annex-remote-hubic")
(version "0.3.1")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/Schnouki/" name "/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"196g3jkaybjx11nbr51n0cjps3wjzb145ab76y717diqvvxp5v4r"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)
;; for the tests
("python-six" ,python-six)))
(propagated-inputs
`(("python-dateutil" ,python-dateutil-2)
("python-futures" ,python-futures)
("python-rauth" ,python-rauth)
("python-swiftclient" ,python-swiftclient)))
(home-page "https://github.com/Schnouki/git-annex-remote-hubic/")
(synopsis "Use hubic as a git-annex remote")
(description
"This package allows you to use your hubic account as a \"special
repository\" with git-annex.")
(license gpl3+)))

View File

@ -3,7 +3,7 @@
;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca> ;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2015 Alex Vong <alexvong1995@gmail.com>
@ -692,7 +692,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
(define-public mpv (define-public mpv
(package (package
(name "mpv") (name "mpv")
(version "0.14.0") (version "0.15.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -700,14 +700,14 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
".tar.gz")) ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0cqjwl0xyg0sv1jflipfkvqjg32y0kqfh4gc3lyhqgv0hgs3fa84")) "1p0b83048g66icpz5n66v3k4ldr1z0rmg5d2rr7kcbspm1xj2cbx"))
(file-name (string-append name "-" version ".tar.gz")))) (file-name (string-append name "-" version ".tar.gz"))))
(build-system waf-build-system) (build-system waf-build-system)
(native-inputs (native-inputs
`(("perl" ,perl) `(("perl" ,perl)
("pkg-config" ,pkg-config) ("pkg-config" ,pkg-config)
("python-docutils" ,python-docutils))) ("python-docutils" ,python-docutils)))
;; Missing features: libguess, Wayland, VDPAU, V4L2 ;; Missing features: libguess, Wayland, V4L2
(inputs (inputs
`(("alsa-lib" ,alsa-lib) `(("alsa-lib" ,alsa-lib)
("enca" ,enca) ("enca" ,enca)
@ -724,6 +724,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
("libdvdnav" ,libdvdnav) ("libdvdnav" ,libdvdnav)
("libjpeg" ,libjpeg) ("libjpeg" ,libjpeg)
("libva" ,libva) ("libva" ,libva)
("libvdpau" ,libvdpau)
("libx11" ,libx11) ("libx11" ,libx11)
("libxext" ,libxext) ("libxext" ,libxext)
("libxinerama" ,libxinerama) ("libxinerama" ,libxinerama)
@ -754,6 +755,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(copy-file (assoc-ref inputs "waf") "waf") (copy-file (assoc-ref inputs "waf") "waf")
(setenv "CC" "gcc")))) (setenv "CC" "gcc"))))
#:configure-flags (list "--enable-gpl3" "--enable-zsh-comp")
;; No check function defined. ;; No check function defined.
#:tests? #f)) #:tests? #f))
(home-page "http://mpv.io/") (home-page "http://mpv.io/")
@ -1299,3 +1301,53 @@ from many input sources such as webcams, X11 (for screencasting), PulseAudio,
and JACK.") and JACK.")
(home-page "https://obsproject.com") (home-page "https://obsproject.com")
(license license:gpl2+))) (license license:gpl2+)))
(define-public libvdpau
(package
(name "libvdpau")
(version "1.1.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://secure.freedesktop.org/~aplattner/vdpau/"
name "-" version ".tar.bz2"))
(sha256
(base32
"0dnpb0yh7v6rvckx82kxg045rd9rbsw25wjv7ad5n8h94s9h2yl5"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("dri2proto" ,dri2proto)
("libx11" ,libx11 "out")
("libxext" ,libxext)))
(home-page "https://wiki.freedesktop.org/www/Software/VDPAU/")
(synopsis "Video Decode and Presentation API")
(description "VDPAU is the Video Decode and Presentation API for UNIX. It
provides an interface to video decode acceleration and presentation hardware
present in modern GPUs.")
(license (license:x11-style "file://COPYING"))))
(define-public vdpauinfo
(package
(name "vdpauinfo")
(version "1.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://secure.freedesktop.org/~aplattner/vdpau/"
name "-" version ".tar.gz"))
(sha256
(base32
"1i2b0k9h8r0lnxlrkgqzmrjakgaw3f1ygqqwzx8w6676g85rcm20"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
("libx11" ,libx11)))
(propagated-inputs
`(("libvdpau" ,libvdpau)))
(home-page "https://wiki.freedesktop.org/www/Software/VDPAU/")
(synopsis "Tool to query the capabilities of a VDPAU implementation")
(description "Vdpauinfo is a tool to query the capabilities of a VDPAU
implementation.")
(license (license:x11-style "file://COPYING"))))

View File

@ -88,6 +88,14 @@
operating-system-locale-directory operating-system-locale-directory
operating-system-boot-script operating-system-boot-script
boot-parameters
boot-parameters?
boot-parameters-label
boot-parameters-root-device
boot-parameters-kernel
boot-parameters-kernel-arguments
read-boot-parameters
local-host-aliases local-host-aliases
%setuid-programs %setuid-programs
%base-packages %base-packages
@ -709,4 +717,37 @@ this file is the reconstruction of GRUB menu entries for old configurations."
#$(operating-system-kernel-arguments os)) #$(operating-system-kernel-arguments os))
(initrd #$initrd))))) (initrd #$initrd)))))
;;;
;;; Boot parameters
;;;
(define-record-type* <boot-parameters>
boot-parameters make-boot-parameters boot-parameters?
(label boot-parameters-label)
(root-device boot-parameters-root-device)
(kernel boot-parameters-kernel)
(kernel-arguments boot-parameters-kernel-arguments))
(define (read-boot-parameters port)
"Read boot parameters from PORT and return the corresponding
<boot-parameters> object or #f if the format is unrecognized."
(match (read port)
(('boot-parameters ('version 0)
('label label) ('root-device root)
('kernel linux)
rest ...)
(boot-parameters
(label label)
(root-device root)
(kernel linux)
(kernel-arguments
(match (assq 'kernel-arguments rest)
((_ args) args)
(#f '()))))) ;the old format
(x ;unsupported format
(warning (_ "unrecognized boot parameters for '~a'~%")
system)
#f)))
;;; system.scm ends here ;;; system.scm ends here

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -179,7 +179,7 @@ loaded at boot time in the order in which they appear."
;; Modules added to the initrd and loaded from the initrd. ;; Modules added to the initrd and loaded from the initrd.
`("ahci" ;for SATA controllers `("ahci" ;for SATA controllers
"usb-storage" "uas" ;for the installation image etc. "usb-storage" "uas" ;for the installation image etc.
"usbkbd" "usbhid" ;USB keyboards, for debugging "usbhid" ;USB keyboards, for debugging
"dm-crypt" "xts" ;for encrypted root partitions "dm-crypt" "xts" ;for encrypted root partitions
,@(if (string-match "^(x86_64|i[3-6]86)-" (%current-system)) ,@(if (string-match "^(x86_64|i[3-6]86)-" (%current-system))
'("pata_acpi" "pata_atiixp" ;for ATA controllers '("pata_acpi" "pata_atiixp" ;for ATA controllers

View File

@ -136,17 +136,6 @@ empty list when the FIELD cannot be found."
(string-any char-set:whitespace item))) (string-any char-set:whitespace item)))
(map string-trim-both items)))))) (map string-trim-both items))))))
(define (beautify-description description)
"Improve the package DESCRIPTION by turning a beginning sentence fragment
into a proper sentence and by using two spaces between sentences."
(let ((cleaned (if (string-prefix? "A " description)
(string-append "This package provides a"
(substring description 1))
description)))
;; Use double spacing between sentences
(regexp-substitute/global #f "\\. \\b"
cleaned 'pre ". " 'post)))
(define (description->package meta) (define (description->package meta)
"Return the `package' s-expression for a CRAN package from the alist META, "Return the `package' s-expression for a CRAN package from the alist META,
which was derived from the R package's DESCRIPTION file." which was derived from the R package's DESCRIPTION file."

View File

@ -117,7 +117,8 @@ VERSION, HASH, HOME-PAGE, DESCRIPTION, DEPENDENCIES, and LICENSES."
(let ((name (assoc-ref package "name")) (let ((name (assoc-ref package "name"))
(version (assoc-ref package "version")) (version (assoc-ref package "version"))
(hash (assoc-ref package "sha")) (hash (assoc-ref package "sha"))
(description (assoc-ref package "info")) (description (beautify-description
(assoc-ref package "info")))
(home-page (assoc-ref package "homepage_uri")) (home-page (assoc-ref package "homepage_uri"))
(dependencies (map (lambda (dep) (dependencies (map (lambda (dep)
(let ((name (assoc-ref dep "name"))) (let ((name (assoc-ref dep "name")))

View File

@ -37,7 +37,8 @@
string->license string->license
license->symbol license->symbol
snake-case)) snake-case
beautify-description))
(define (factorize-uri uri version) (define (factorize-uri uri version)
"Factorize URI, a package tarball URI as a string, such that any occurrences "Factorize URI, a package tarball URI as a string, such that any occurrences
@ -136,3 +137,14 @@ to in the (guix licenses) module, or #f if there is no such known license."
"Return a downcased version of the string STR where underscores are replaced "Return a downcased version of the string STR where underscores are replaced
with dashes." with dashes."
(string-join (string-split (string-downcase str) #\_) "-")) (string-join (string-split (string-downcase str) #\_) "-"))
(define (beautify-description description)
"Improve the package DESCRIPTION by turning a beginning sentence fragment
into a proper sentence and by using two spaces between sentences."
(let ((cleaned (if (string-prefix? "A " description)
(string-append "This package provides a"
(substring description 1))
description)))
;; Use double spacing between sentences
(regexp-substitute/global #f "\\. \\b"
cleaned 'pre ". " 'post)))

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -189,39 +190,6 @@ the ownership of '~a' may be incorrect!~%")
(mwhen grub? (mwhen grub?
(install-grub* grub.cfg device target))))) (install-grub* grub.cfg device target)))))
;;;
;;; Boot parameters
;;;
(define-record-type* <boot-parameters>
boot-parameters make-boot-parameters boot-parameters?
(label boot-parameters-label)
(root-device boot-parameters-root-device)
(kernel boot-parameters-kernel)
(kernel-arguments boot-parameters-kernel-arguments))
(define (read-boot-parameters port)
"Read boot parameters from PORT and return the corresponding
<boot-parameters> object or #f if the format is unrecognized."
(match (read port)
(('boot-parameters ('version 0)
('label label) ('root-device root)
('kernel linux)
rest ...)
(boot-parameters
(label label)
(root-device root)
(kernel linux)
(kernel-arguments
(match (assq 'kernel-arguments rest)
((_ args) args)
(#f '()))))) ;the old format
(x ;unsupported format
(warning (_ "unrecognized boot parameters for '~a'~%")
system)
#f)))
;;; ;;;
;;; Reconfiguration. ;;; Reconfiguration.
@ -285,22 +253,24 @@ it atomically, and then run OS's activation script."
"Return a list of 'menu-entry' for the generations of PROFILE." "Return a list of 'menu-entry' for the generations of PROFILE."
(define (system->grub-entry system number time) (define (system->grub-entry system number time)
(unless-file-not-found (unless-file-not-found
(let ((file (string-append system "/parameters"))) (let* ((file (string-append system "/parameters"))
(match (call-with-input-file file read-boot-parameters) (params (call-with-input-file file
(($ <boot-parameters> label root kernel kernel-arguments) read-boot-parameters))
(menu-entry (label (boot-parameters-label params))
(label (string-append label " (#" (root (boot-parameters-root-device params))
(number->string number) ", " (kernel (boot-parameters-kernel params))
(seconds->string time) ")")) (kernel-arguments (boot-parameters-kernel-arguments params)))
(linux kernel) (menu-entry
(linux-arguments (label (string-append label " (#"
(cons* (string-append "--root=" root) (number->string number) ", "
#~(string-append "--system=" #$system) (seconds->string time) ")"))
#~(string-append "--load=" #$system "/boot") (linux kernel)
kernel-arguments)) (linux-arguments
(initrd #~(string-append #$system "/initrd")))) (cons* (string-append "--root=" root)
(#f ;invalid format #~(string-append "--system=" #$system)
#f))))) #~(string-append "--load=" #$system "/boot")
kernel-arguments))
(initrd #~(string-append #$system "/initrd"))))))
(let* ((numbers (generation-numbers profile)) (let* ((numbers (generation-numbers profile))
(systems (map (cut generation-file-name profile <>) (systems (map (cut generation-file-name profile <>)
@ -366,18 +336,17 @@ list of services."
(unless (zero? number) (unless (zero? number)
(let* ((generation (generation-file-name profile number)) (let* ((generation (generation-file-name profile number))
(param-file (string-append generation "/parameters")) (param-file (string-append generation "/parameters"))
(params (call-with-input-file param-file read-boot-parameters))) (params (call-with-input-file param-file read-boot-parameters))
(label (boot-parameters-label params))
(root (boot-parameters-root-device params))
(kernel (boot-parameters-kernel params)))
(display-generation profile number) (display-generation profile number)
(format #t (_ " file name: ~a~%") generation) (format #t (_ " file name: ~a~%") generation)
(format #t (_ " canonical file name: ~a~%") (readlink* generation)) (format #t (_ " canonical file name: ~a~%") (readlink* generation))
(match params ;; TRANSLATORS: Please preserve the two-space indentation.
(($ <boot-parameters> label root kernel) (format #t (_ " label: ~a~%") label)
;; TRANSLATORS: Please preserve the two-space indentation. (format #t (_ " root device: ~a~%") root)
(format #t (_ " label: ~a~%") label) (format #t (_ " kernel: ~a~%") kernel))))
(format #t (_ " root device: ~a~%") root)
(format #t (_ " kernel: ~a~%") kernel))
(_
#f)))))
(define* (list-generations pattern #:optional (profile %system-profile)) (define* (list-generations pattern #:optional (profile %system-profile))
"Display in a human-readable format all the system generations matching "Display in a human-readable format all the system generations matching

View File

@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# GNU Guix --- Functional package management for GNU # GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> # Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
# #
# This file is part of GNU Guix. # This file is part of GNU Guix.
# #
@ -31,7 +31,6 @@ unset CDPATH
if [ -x "@abs_top_builddir@/guix-daemon" ] if [ -x "@abs_top_builddir@/guix-daemon" ]
then then
NIX_SETUID_HELPER="@abs_top_builddir@/nix-setuid-helper" # normally unused
NIX_STORE_DIR="@GUIX_TEST_ROOT@/store" NIX_STORE_DIR="@GUIX_TEST_ROOT@/store"
# Do that because store.scm calls `canonicalize-path' on it. # Do that because store.scm calls `canonicalize-path' on it.
@ -87,10 +86,10 @@ then
# For the (guix import snix) tests. # For the (guix import snix) tests.
NIXPKGS="@NIXPKGS@" NIXPKGS="@NIXPKGS@"
export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR \ export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR \
NIX_LOCALSTATE_DIR NIX_LOG_DIR NIX_STATE_DIR NIX_DB_DIR \ NIX_LOCALSTATE_DIR NIX_LOG_DIR NIX_STATE_DIR NIX_DB_DIR \
NIX_ROOT_FINDER NIX_SETUID_HELPER GUIX_BINARY_SUBSTITUTE_URL \ NIX_ROOT_FINDER GUIX_BINARY_SUBSTITUTE_URL \
GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES \ GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES \
NIX_CONF_DIR XDG_CACHE_HOME NIXPKGS NIX_CONF_DIR XDG_CACHE_HOME NIXPKGS
# Launch the daemon without chroot support because is may be # Launch the daemon without chroot support because is may be

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -472,6 +472,22 @@
(build-derivations %store (list drv)) (build-derivations %store (list drv))
#f))) #f)))
;; Here we should get the value of $NIX_STATE_DIR that the daemon sees, which
;; is a unique value for each test process; this value is the same as the one
;; we see in the process executing this file since it is set by 'test-env'.
(test-equal "derivation #:leaked-env-vars"
(getenv "NIX_STATE_DIR")
(let* ((value (getenv "NIX_STATE_DIR"))
(drv (derivation %store "leaked-env-vars" %bash
'("-c" "echo -n $NIX_STATE_DIR > $out")
#:hash (sha256 (string->utf8 value))
#:hash-algo 'sha256
#:inputs `((,%bash))
#:leaked-env-vars '("NIX_STATE_DIR"))))
(and (build-derivations %store (list drv))
(call-with-input-file (derivation->output-path drv)
get-string-all))))
(define %coreutils (define %coreutils
(false-if-exception (false-if-exception