Merge branch 'master' into core-updates

master
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.
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.
KCONFIGS = \
gnu/packages/linux-libre-i686.conf \
@ -325,6 +320,7 @@ EXTRA_DIST = \
CODE-OF-CONDUCT \
.dir-locals.el \
build-aux/build-self.scm \
build-aux/compile-all.scm \
build-aux/hydra/gnu-system.scm \
build-aux/hydra/demo-os.scm \
build-aux/hydra/guix.scm \
@ -364,31 +360,21 @@ CLEANFILES = \
$(GOBJECTS) \
$(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
# $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
# user ran 'make install' recently). When that happens, we end up loading
# those previously-installed .go files, which may be stale, thereby breaking
# the whole thing.
#
# XXX: Use the C locale for when Guile lacks
# <http://git.sv.gnu.org/cgit/guile.git/commit/?h=stable-2.0&id=e2c6bf3866d1186c60bacfbd4fe5037087ee5e3f>.
.scm.go:
$(AM_V_GUILEC)$(MKDIR_P) `dirname "$@"` ; \
%.go: make-go ; @:
make-go: $(MODULES) guix/config.scm guix/tests.scm
$(AM_V_at)echo "Compiling Scheme modules..." ; \
unset GUILE_LOAD_COMPILED_PATH ; \
LC_ALL=C \
host=$(host) srcdir="$(top_srcdir)" \
$(top_builddir)/pre-inst-env \
$(GUILD) compile -L "$(top_builddir)" -L "$(top_srcdir)" \
$(GUILD_COMPILE_FLAGS) --target="$(host)" \
-o "$@" "$<"
$(GUILE) -L "$(top_builddir)" -L "$(top_srcdir)" \
--no-auto-compile \
-s "$(top_srcdir)"/build-aux/compile-all.scm $^
SUFFIXES = .go
@ -480,6 +466,6 @@ assert-final-inputs-self-contained:
$(top_builddir)/pre-inst-env "$(GUILE)" \
"$(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-final-inputs-self-contained

1
NEWS
View File

@ -14,6 +14,7 @@ Please send Guix bug reports to bug-guix@gnu.org.
** Package management
*** Emacs interface for system generations
*** Emacs interface for hydra.gnu.org
*** Changes in Emacs interface variables
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
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.
@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
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
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
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
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
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
@file{test-suite.log} file. When @file{tests/@var{something}.scm}
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
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
to run @command{guix-daemon} provided you pass @code{--disable-chroot}.
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
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
@code{guix-daemon} with @code{--no-substitutes} (@pxref{Invoking
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
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} @
[#:qemu-networking? #f] [#:virtio? #f] [#:volatile-root? #f] @
[#:extra-modules '()] [#:mapped-devices '()]

View File

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

View File

@ -1,6 +1,6 @@
;;; 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.
@ -91,14 +91,25 @@ For the meaning of location, see `guix-find-location'."
"Return the file name of a PROFILE's 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.
If GENERATION number is specified, return manifest file name for
this generation."
See `guix-packages-profile'."
(expand-file-name "manifest"
(if generation
(guix-generation-file profile generation)
profile)))
(guix-packages-profile profile generation system?)))
;;;###autoload
(defun guix-edit (id-or-name)

View File

@ -1,5 +1,5 @@
;;; 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.
;;;
@ -61,7 +61,8 @@
(guix scripts lint)
(guix scripts package)
(guix scripts pull)
(gnu packages))
(gnu packages)
(gnu system))
(define-syntax-rule (first-or-false 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)
(map manifest-entry->package-specification entries))
(define (generation-package-specifications profile number)
"Return a list of package specifications for generation NUMBER."
(let ((manifest (profile-manifest
(generation-file-name profile number))))
(define (profile-package-specifications profile)
"Return a list of package specifications for PROFILE."
(let ((manifest (profile-manifest profile)))
(manifest-entries->package-specifications
(manifest-entries manifest))))
(define (generation-package-specifications+paths profile number)
"Return a list of package specifications and paths for generation NUMBER.
(define (profile->specifications+paths profile)
"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."
(let ((manifest (profile-manifest
(generation-file-name profile number))))
(let ((manifest (profile-manifest profile)))
(map (lambda (entry)
(list (manifest-entry->package-specification entry)
(manifest-entry-item entry)))
(manifest-entries manifest))))
(define (generation-difference profile number1 number2)
"Return a list of package specifications for outputs installed in generation
NUMBER1 and not installed in generation NUMBER2."
(let ((specs1 (generation-package-specifications profile number1))
(specs2 (generation-package-specifications profile number2)))
(define (profile-difference profile1 profile2)
"Return a list of package specifications for outputs installed in PROFILE1
and not installed in PROFILE2."
(let ((specs1 (profile-package-specifications profile1))
(specs2 (profile-package-specifications profile2)))
(lset-difference string=? specs1 specs2)))
(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))
(name . ,(apply-to-rest specifications->package-patterns))
(installed . ,manifest-package-proc)
(generation . ,manifest-package-proc)
(obsolete . ,(apply-to-first obsolete-package-patterns))
(regexp . ,regexp-proc)
(all-available . ,all-proc)
@ -679,7 +677,6 @@ ENTRIES is a list of installed manifest entries."
(id . ,(apply-to-rest ids->output-patterns))
(name . ,(apply-to-rest specifications->output-patterns))
(installed . ,manifest-output-proc)
(generation . ,manifest-output-proc)
(obsolete . ,(apply-to-first obsolete-output-patterns))
(regexp . ,regexp-proc)
(all-available . ,all-proc)
@ -694,16 +691,13 @@ ENTRIES is a list of installed manifest entries."
search-type search-vals)
"Return information about packages or package outputs.
See 'entry-sexps' for details."
(let* ((profile (if (eq? search-type 'generation)
(generation-file-name profile (car search-vals))
profile))
(manifest (profile-manifest profile))
(let* ((manifest (profile-manifest profile))
(patterns (if (and (eq? entry-type 'output)
(eq? search-type 'generation-diff))
(eq? search-type 'profile-diff))
(match search-vals
((g1 g2)
((p1 p2)
(map specification->output-pattern
(generation-difference profile g1 g2)))
(profile-difference p1 p2)))
(_ '()))
(apply (patterns-maker entry-type search-type)
manifest search-vals)))
@ -765,6 +759,38 @@ See 'entry-sexps' for details."
params)))
(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).
@ -809,6 +835,9 @@ parameter/value pairs."
((generation)
(generation-sexps profile params
search-type search-vals))
((system-generation)
(system-generation-sexps profile params
search-type search-vals))
(else (entry-type-error entry-type))))

View File

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

View File

@ -1,6 +1,7 @@
;;; 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.
@ -25,6 +26,10 @@
(expand-file-name "~/.guix-profile")
"User profile.")
(defvar guix-system-profile
(concat guix-config-state-directory "/profiles/system")
"System profile.")
(defvar guix-default-profile
(concat guix-config-state-directory
"/profiles/per-user/"

View File

@ -1,6 +1,6 @@
;;; 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.
@ -78,6 +78,18 @@ Each element from GENERATIONS is a generation number."
'switch-to-generation* profile generation)
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'
@ -115,8 +127,9 @@ Each element from GENERATIONS is a generation number."
(lambda (btn)
(guix-buffer-get-display-entries
'list guix-package-list-type
(list (guix-ui-current-profile)
'generation (button-get btn 'number))
(list (guix-generation-current-packages-profile
(button-get btn 'number))
'installed)
'add))
"Show installed packages for this generation"
'number number)
@ -190,8 +203,8 @@ VAL is a boolean value."
"List installed packages for the generation at point."
(interactive)
(guix-package-get-display
(guix-ui-current-profile)
'generation (guix-list-current-id)))
(guix-generation-current-packages-profile (guix-list-current-id))
'installed))
(defun guix-generation-list-generations-to-compare ()
"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")
(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 ()
"List package outputs added to the latest marked generation.
If 2 generations are marked with \\[guix-list-mark], display
@ -209,8 +227,8 @@ installed in the other one."
(guix-buffer-get-display-entries
'list 'output
(cl-list* (guix-ui-current-profile)
'generation-diff
(reverse (guix-generation-list-generations-to-compare)))
'profile-diff
(reverse (guix-generation-list-profiles-to-compare)))
'add))
(defun guix-generation-list-show-removed-packages ()
@ -222,8 +240,8 @@ installed in the other one."
(guix-buffer-get-display-entries
'list 'output
(cl-list* (guix-ui-current-profile)
'generation-diff
(guix-generation-list-generations-to-compare))
'profile-diff
(guix-generation-list-profiles-to-compare))
'add))
(defun guix-generation-list-compare (diff-fun gen-fun)
@ -324,14 +342,13 @@ performance."
"Width of an output name \"column\".
This variable is used in auxiliary buffers for comparing generations.")
(defun guix-generation-packages (profile generation)
"Return a list of sorted packages installed in PROFILE's GENERATION.
(defun guix-generation-packages (profile)
"Return a list of sorted packages installed in PROFILE.
Each element of the list is a list of the package specification
and its store path."
(let ((names+paths (guix-eval-read
(guix-make-guile-expression
'generation-package-specifications+paths
profile generation))))
'profile->specifications+paths profile))))
(sort names+paths
(lambda (a b)
(string< (car a) (car b))))))
@ -360,8 +377,8 @@ Use the full PROFILE file name."
(indent-to guix-generation-output-name-width 2)
(insert path "\n"))
(defun guix-generation-insert-packages (buffer profile generation)
"Insert package outputs installed in PROFILE's GENERATION in BUFFER."
(defun guix-generation-insert-packages (buffer profile)
"Insert package outputs installed in PROFILE in BUFFER."
(with-current-buffer buffer
(setq buffer-read-only nil
indent-tabs-mode nil)
@ -369,9 +386,9 @@ Use the full PROFILE file name."
(mapc (lambda (name+path)
(guix-generation-insert-package
(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.
Create the buffer if needed."
(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)
(get-buffer 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))))
(defun guix-profile-generation-manifest-file (generation)
"Return the file name of a GENERATION's manifest.
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)
"Insert GENERATION's package outputs in a buffer and return it.
GENERATION is a generation number of the current profile."
(guix-generation-packages-buffer (guix-ui-current-profile)
generation))
generation
(guix-system-generation?)))
;;; Interactive commands

View File

@ -349,6 +349,10 @@ formatted with this string, an action button is inserted.")
'name (button-label btn))
'add)))
(define-button-type 'guix-package-heading
:supertype 'guix-package-name
'face 'guix-package-info-heading)
(define-button-type 'guix-package-source
:supertype 'guix
'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."
(guix-insert-button
(guix-package-entry->name-specification entry)
'guix-package-name
'face 'guix-package-info-heading))
'guix-package-heading))
(defun guix-package-info-insert-systems (systems entry)
"Insert supported package SYSTEMS at point."
@ -909,15 +912,15 @@ See `guix-package-info-type'."
"A history of minibuffer prompts.")
;;;###autoload
(defun guix-search-by-name (name &optional profile)
"Search for Guix packages by NAME.
(defun guix-packages-by-name (name &optional profile)
"Display Guix packages with NAME.
NAME is a string with name specification. It may optionally contain
a version number. Examples: \"guile\", \"guile-2.0.11\".
If PROFILE is nil, use `guix-current-profile'.
Interactively with prefix, prompt for PROFILE."
(interactive
(list (read-string "Package name: " nil 'guix-package-search-history)
(list (guix-read-package-name)
(guix-ui-read-profile)))
(guix-package-get-display profile 'name name))
@ -935,6 +938,17 @@ Interactively with prefix, prompt for PROFILE."
(guix-package-get-display profile 'regexp regexp
(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
(defun guix-installed-packages (&optional profile)
"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/datamash.scm \
gnu/packages/datastructures.scm \
gnu/packages/dav.scm \
gnu/packages/dc.scm \
gnu/packages/debug.scm \
gnu/packages/dejagnu.scm \
@ -89,6 +90,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/djvu.scm \
gnu/packages/dns.scm \
gnu/packages/docbook.scm \
gnu/packages/docker.scm \
gnu/packages/doxygen.scm \
gnu/packages/dunst.scm \
gnu/packages/dvtm.scm \
@ -417,7 +419,6 @@ dist_patch_DATA = \
gnu/packages/patches/avidemux-install-to-lib.patch \
gnu/packages/patches/avrdude-fix-libusb.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/binutils-ld-new-dtags.patch \
gnu/packages/patches/binutils-loongson-workaround.patch \

View File

@ -1,5 +1,5 @@
;;; 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.
;;;
@ -96,6 +96,11 @@ contains module names, not actual file names."
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
#:key (lookup-module dot-ko))
"Return the topologically-sorted list of file names of the modules depended
@ -130,6 +135,22 @@ LOOKUP-MODULE to the module name."
(((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)
"Return #t if MODULE is already loaded. MODULE must be a Linux module name,
not a file name."
@ -138,29 +159,44 @@ not a file name."
(define* (load-linux-module* file
#:key
(recursive? #t)
(lookup-module dot-ko))
"Load Linux module from FILE, the name of a `.ko' file. When RECURSIVE? is
true, load its dependencies first (à la 'modprobe'.) The actual files
containing modules depended on are obtained by calling LOOKUP-MODULE with the
module name."
(lookup-module dot-ko)
(black-list (module-black-list)))
"Load Linux module from FILE, the name of a '.ko' file; return true on
success, false otherwise. When RECURSIVE? is true, load its dependencies
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)
;; TODO: Use 'finit_module' to reduce memory usage.
(call-with-input-file file get-bytevector-all))
(when recursive?
(for-each (cut load-linux-module* <> #:lookup-module lookup-module)
(map lookup-module (module-dependencies file))))
(define (black-listed? module)
(let ((result (member module black-list)))
(when result
(format (current-module-debugging-port)
"not loading module '~a' because it's black-listed~%"
module))
result))
(format (current-module-debugging-port)
"loading Linux module from '~a'...~%" file)
(define (load-dependencies file)
(let ((dependencies (module-dependencies file)))
(every (cut load-linux-module* <> #:lookup-module lookup-module)
(map lookup-module dependencies))))
(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.
(unless (and recursive? (= EEXIST (system-error-errno args)))
(apply throw args)))))
(and (not (black-listed? (file-name->module-name file)))
(or (not recursive?)
(load-dependencies file))
(begin
(format (current-module-debugging-port)
"loading Linux module from '~a'...~%" file)
(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

View File

@ -2,7 +2,7 @@
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; 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 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
;;; 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
limits.")
(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
;;; 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 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
@ -603,7 +603,7 @@ errors at the end of reads.")
(define-public bowtie
(package
(name "bowtie")
(version "2.2.4")
(version "2.2.6")
(source (origin
(method url-fetch)
(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"))
(sha256
(base32
"15dnbqippwvhyh9zqjhaxkabk7lm1xbh1nvar1x4b5kwm117zijn"))
"1ssfvymxfrap6f9pf86s9bvsbqdgka4abr2r7j3mgr4w1l289m86"))
(modules '((guix build utils)))
(snippet
'(substitute* "Makefile"
(("^CC = .*$") "CC = gcc")
(("^CPP = .*$") "CPP = g++")
;; replace BUILD_HOST and BUILD_TIME for deterministic build
(("-DBUILD_HOST=.*") "-DBUILD_HOST=\"\\\"guix\\\"\"")
(("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\"")))
(patches (list (search-patch "bowtie-fix-makefile.patch")))))
(("-DBUILD_TIME=.*") "-DBUILD_TIME=\"\\\"0\\\"\"")))))
(build-system gnu-build-system)
(inputs `(("perl" ,perl)
("perl-clone" ,perl-clone)
("perl-test-deep" ,perl-test-deep)
("perl-test-simple" ,perl-test-simple)
("python" ,python-2)))
("python" ,python-2)
("tbb" ,tbb)))
(arguments
'(#:make-flags '("allall")
'(#:make-flags
(list "allall"
"WITH_TBB=1"
(string-append "prefix=" (assoc-ref %outputs "out")))
#:phases
(alist-delete
'configure
(alist-replace
'install
'check
(lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
(for-each (lambda (file)
(install-file file bin))
(find-files "." "bowtie2.*"))))
(alist-replace
'check
(lambda* (#:key outputs #:allow-other-keys)
(system* "perl"
"scripts/test/simple_tests.pl"
"--bowtie2=./bowtie2"
"--bowtie2-build=./bowtie2-build"))
%standard-phases)))))
(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")
(synopsis "Fast and sensitive nucleotide sequence read aligner")
(description
@ -2079,7 +2073,7 @@ that a read originated from a particular isoform.")
(define-public orfm
(package
(name "orfm")
(version "0.4.1")
(version "0.5.3")
(source (origin
(method url-fetch)
(uri (string-append
@ -2087,12 +2081,16 @@ that a read originated from a particular isoform.")
version "/orfm-" version ".tar.gz"))
(sha256
(base32
"05fmw145snk646ly076zby0fjav0k7ysbclck5d4s9pmgcfpijc2"))))
"0vb6d771gl4mix8bwx919x5ayy9pkj44n7ki336nz3rz2rx4c7gk"))))
(build-system gnu-build-system)
(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")
(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.")
(home-page "https://github.com/wwood/OrfM")
(license license:lgpl3+)))
@ -2458,18 +2456,21 @@ viewer.")
(sha256
(base32 "1m33xsfwz0s8qi45lylagfllqg7fphf4dr0780rsvw75av9wk06h"))))
(arguments
(substitute-keyword-arguments (package-arguments samtools)
((#:tests? tests) #f) ;no "check" target
((#:phases phases)
`(modify-phases ,phases
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append
(assoc-ref outputs "out") "/bin")))
(mkdir-p bin)
(copy-file "samtools"
(string-append bin "/samtools")))))
(delete 'patch-tests)))))))
`(#:tests? #f ;no "check" target
,@(substitute-keyword-arguments (package-arguments samtools)
((#:make-flags flags)
`(cons "LIBCURSES=-lncurses" ,flags))
((#:phases phases)
`(modify-phases ,phases
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append
(assoc-ref outputs "out") "/bin")))
(mkdir-p bin)
(copy-file "samtools"
(string-append bin "/samtools")))))
(delete 'patch-tests)
(delete 'configure))))))))
(define-public mosaik
(let ((commit "5c25216d"))
@ -3841,6 +3842,8 @@ extracting the desired features in a convenient format.")
(properties
`((upstream-name . "GO.db")))
(build-system r-build-system)
(propagated-inputs
`(("r-annotationdbi" ,r-annotationdbi)))
(home-page "http://bioconductor.org/packages/GO.db")
(synopsis "Annotation maps describing the entire Gene Ontology")
(description

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@ -21,9 +22,16 @@
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build utils)
#: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 perl))
#:use-module (gnu packages perl)
#:use-module (gnu packages python))
(define-public libical
(package
@ -50,3 +58,70 @@
"Libical is an implementation of the iCalendar protocols and protocol
data units.")
(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 © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; 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 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
@ -205,7 +205,7 @@ Language.")
(define-public mariadb
(package
(name "mariadb")
(version "10.0.20")
(version "10.0.23")
(source (origin
(method url-fetch)
(uri (string-append "https://downloads.mariadb.org/f/"
@ -213,7 +213,7 @@ Language.")
name "-" version ".tar.gz"))
(sha256
(base32
"0ywb730l68mxvmpik1x2ndbdaaks6dmc17pxspspm5wlqxinjkrs"))))
"0x52gfxk7zr84al83x62s4gh7mbngahy1svafdkbwd18i5lysvhm"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@ -27,7 +28,7 @@
(define-public datamash
(package
(name "datamash")
(version "1.0.7")
(version "1.1.0")
(source
(origin
(method url-fetch)
@ -35,7 +36,7 @@
version ".tar.gz"))
(sha256
(base32
"0y49zaadzirghy4xfajvsv1f5x805cjp61z212ggipx5243302qs"))))
"1c2bj0jrm4fxkf0ykxkzgyk1l9s0idqm8rbzmk3n9pgldb4arrd9"))))
(native-inputs
`(("which" ,which) ;for tests
("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 © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.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 Ricardo Wurmus <rekado@elephly.net>
;;;
@ -324,7 +324,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
(define-public magit
(package
(name "magit")
(version "2.3.1")
(version "2.4.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -332,7 +332,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
version "/" name "-" version ".tar.gz"))
(sha256
(base32
"1wnx034adkwhbsydd10il2099hpzz351kp39sri8s1yd43f795gf"))))
"1wbam4l36061mj79qlgzrv4xbzhk2dk6gnv45610zwfnf24ikdsp"))))
(build-system gnu-build-system)
(native-inputs `(("texinfo" ,texinfo)
("emacs" ,emacs-no-x)))

View File

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

View File

@ -751,22 +751,39 @@ API add-ons to make GTK+ widgets OpenGL-capable.")
(define-public glade3
(package
(name "glade")
(version "3.8.5")
(version "3.18.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "3-" version ".tar.xz"))
name "-" version ".tar.xz"))
(sha256
(base32
"0d97df5pfkrh5670a98r3d3w8zlbh1jcax6cvq6j6a20vzjgd9aq"))))
"0lk4nvd5s8px9i0pbq7bncikgn2lpx7vjh787d3cvzpvwx3cxnzc"))))
(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
`(("gtk+" ,gtk+-2)
`(("gtk+" ,gtk+)
("libxml2" ,libxml2)))
(native-inputs
`(("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)))
(home-page "https://glade.gnome.org")
(synopsis "GTK+ rapid application development tool")

View File

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

View File

@ -6,6 +6,7 @@
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;;
;;; 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)
(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).

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)
("gettext" ,gnu-gettext)
("gtk" ,gtk+)
;; TODO: Lilypond is optional. Produces errors at build time:
;; Drawing systems...Error: /undefinedresult in --glyphshow--
;; Fontconfig is needed to fix one of the errors, but other similar
;; errors remain.
;;("lilypond" ,lilypond)
("lilypond" ,lilypond)
("librsvg" ,librsvg) ; needed at runtime for icons
("libpng" ,libpng) ; needed at runtime for icons
;; 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)
("libxml2" ,libxml2) ; for tests
("ghostscript" ,ghostscript)
;;("fontconfig" ,fontconfig) ; only needed with lilypond
;;("freetype" ,freetype) ; only needed with lilypond
("texinfo" ,texinfo)))
(home-page "https://www.gnu.org/software/solfege/")
(synopsis "Ear training")
@ -659,6 +653,16 @@ Laurens Hammond and Don Leslie.")
(base32
"1fi2m4gmvxdi260821y09lxsimq82yv4k5bbgk3kyc3x1nyhn7vx"))))
(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
`(("alsa-lib" ,alsa-lib)
("jack" ,jack-1)
@ -818,14 +822,14 @@ browser.")
(define-public drumstick
(package
(name "drumstick")
(version "1.0.1")
(version "1.0.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/drumstick/"
version "/drumstick-" version ".tar.bz2"))
(sha256
(base32
"0mxgix85b2qqs859z91cxik5x0s60dykqiflbj62px9akvf91qdv"))))
"0l47gy9yywrc860db5g3wdqg8yc8qdb2lqq6wvw1dfim5j0vbail"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; no test target
@ -864,14 +868,15 @@ backends, including ALSA, OSS, Network and FluidSynth.")
(define-public vmpk
(package
(name "vmpk")
(version "0.6.1")
(version "0.6.2a")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/vmpk/vmpk/"
version "/vmpk-" version ".tar.bz2"))
(string-drop-right version 1)
"/vmpk-" version ".tar.bz2"))
(sha256
(base32
"0ranldd033bd31m9d2vkbkn9zp1k46xbaysllai2i95rf1nhirqc"))))
"0259iikvxnfdiifrh02g8xgcxikrkca4nhd3an8xzx0bd6bk8ifi"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; no test target

View File

@ -3,6 +3,7 @@
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -23,6 +24,7 @@
#:use-module ((guix licenses) #:hide (zlib))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix svn-download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
@ -36,6 +38,8 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages xorg)
#:use-module (gnu packages texlive)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages lynx)
#:use-module (gnu packages perl)
#:use-module (gnu packages python)
#:use-module (gnu packages ncurses)
@ -282,14 +286,14 @@ concrete syntax of the language (Quotations, Syntax Extensions).")
(define-public hevea
(package
(name "hevea")
(version "2.23")
(version "2.28")
(source (origin
(method url-fetch)
(uri (string-append "http://hevea.inria.fr/old/"
name "-" version ".tar.gz"))
(sha256
(base32
"1f9pj48518ixhjxbviv2zx27v4anp92zgg3x704g1s5cki2w33nv"))))
"14fns13wlnpiv9i05841kvi3cq4b9v2sw5x3ff6ziws28q701qnd"))))
(build-system gnu-build-system)
(inputs
`(("ocaml" ,ocaml)))
@ -297,7 +301,12 @@ concrete syntax of the language (Quotations, Syntax Extensions).")
`(#:tests? #f ; no test suite
#:make-flags (list (string-append "PREFIX=" %output))
#: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/")
(synopsis "LaTeX to HTML translator")
(description
@ -496,16 +505,65 @@ libpanel, librsvg and quartz.")
(version "2.48.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.seas.upenn.edu/~bcpierce/unison/"
"download/releases/stable/unison-" version
".tar.gz"))
(sha256
(base32
"10sln52rnnsj213jy3166m0q97qpwnrwl6mm529xfy10x3xkq3gl"))))
(method svn-fetch)
(uri (svn-reference
(url (string-append "https://webdav.seas.upenn.edu/svn/"
"unison/branches/"
(version-major+minor version)))
(revision 535)))
(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)
(outputs '("out"
"doc")) ; 1.9 MiB of documentation
(native-inputs
`(("ocaml" ,ocaml)))
`(("ocaml" ,ocaml)
;; For documentation
("ghostscript" ,ghostscript)
("texlive" ,texlive)
("hevea" ,hevea)
("lynx" ,lynx)))
(arguments
`(#:parallel-build? #f
#:parallel-tests? #f
@ -522,7 +580,30 @@ libpanel, librsvg and quartz.")
(bin (string-append out "/bin")))
(mkdir-p bin)
(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/")
(synopsis "File synchronizer")
(description

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; 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.
;;;
@ -19,12 +19,14 @@
(define-module (gnu packages openstack)
#:use-module (gnu packages python)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (guix build-system python)
#:use-module (guix download)
#:use-module ((guix licenses)
#:select (asl2.0))
#:use-module (guix packages))
#:use-module (guix packages)
#:use-module (srfi srfi-1))
(define-public python-bandit
(package
@ -302,7 +304,12 @@ portions of your testing code.")
(license asl2.0)))
(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
(package
@ -385,7 +392,12 @@ common features used in Tempest.")
(license asl2.0)))
(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
(define-public python-oslo.config
@ -594,7 +606,9 @@ from the OpenStack project.")
(license asl2.0)))
(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
(package
@ -679,3 +693,134 @@ handling.")
(define-public python2-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 Ben Woodcroft <donttrustben@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 Chris Marusich <cmmarusich@gmail.com>
;;;
@ -1016,31 +1016,16 @@ doing practical, real world data analysis in Python.")
(define-public python-tzlocal
(package
(name "python-tzlocal")
(version "1.1.1")
(version "1.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://pypi.python.org/packages/source/t/"
"tzlocal/tzlocal-" version ".zip"))
(uri (pypi-uri "tzlocal" version))
(sha256
(base32
"1m3y918c3chf41fwg2bx4w42bqsjzn3dyvvcmwwy13c8gj6zssv9"))))
"12wsw2fl3adrqrwghasld57bhqdrzn0crblqrci1p5acd0ni53s3"))))
(build-system python-build-system)
(native-inputs
`(("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)))
(propagated-inputs `(("python-pytz" ,python-pytz)))
(home-page "https://github.com/regebro/tzlocal")
(synopsis
"Local timezone information for Python")
@ -1627,18 +1612,18 @@ and many external plugins.")
(sha256
(base32
"1lf9jsmhqk5nc4w3kzwglmdzjvmi7ajvrsnwv826j3bn0wzx8c92"))))
(build-system python-build-system)
(propagated-inputs
`(("python-coverage" ,python-coverage)
("python-pytest" ,python-pytest)))
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/pytest-dev/pytest-cov")
(synopsis "Pytest plugin for measuring coverage")
(description
"Pytest-cov produces coverage reports. It supports centralised testing and
distributed testing in both load and each modes. It also supports coverage
of subprocesses.")
(build-system python-build-system)
(propagated-inputs
`(("python-coverage" ,python-coverage)
("python-pytest" ,python-pytest)))
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/pytest-dev/pytest-cov")
(synopsis "Pytest plugin for measuring coverage")
(description
"Pytest-cov produces coverage reports. It supports centralised testing and
distributed testing in both @code{load} and @code{each} modes. It also
supports coverage of subprocesses.")
(license license:expat)))
(define-public python2-pytest-cov
@ -2136,28 +2121,38 @@ with sensible defaults out of the box.")
(package
(name "python-wheel")
(version "0.26.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "wheel" version))
(sha256
(base32
"032k1ajijbqnv0z0k88bhf75mdimi18fcmm28mss90610lw3bbga"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)
("python-jsonschema" ,python-jsonschema)
("python-pytest-cov" ,python-pytest-cov)))
(home-page "https://bitbucket.org/pypa/wheel/")
(synopsis "Built-package format for Python")
(description
"A wheel is a ZIP-format archive with a specially formatted filename and the
.whl extension. It is designed to contain all the files for a PEP 376
compatible install in a way that is very close to the on-disk format.")
(license license:expat)))
(source
(origin
(method url-fetch)
(uri (pypi-uri "wheel" version))
(sha256
(base32
"032k1ajijbqnv0z0k88bhf75mdimi18fcmm28mss90610lw3bbga"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)
("python-jsonschema" ,python-jsonschema)
("python-pytest-cov" ,python-pytest-cov)))
(home-page "https://bitbucket.org/pypa/wheel/")
(synopsis "Format for built Python packages")
(description
"A wheel is a ZIP-format archive with a specially formatted filename and
the @code{.whl} extension. It is designed to contain all the files for a PEP
376 compatible install in a way that is very close to the on-disk format. Many
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
(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
(package
@ -2184,13 +2179,54 @@ compatible install in a way that is very close to the on-disk format.")
than Pythons urllib2 library.")
(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
(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
(package
(name "python-jsonschema")
(version "2.4.0")
(version "2.5.1")
(source (origin
(method url-fetch)
(uri
@ -2199,10 +2235,11 @@ than Pythons urllib2 library.")
version ".tar.gz"))
(sha256
(base32
"1yik3031ziygvq66rj3mzfqdgxj29sg1bkfc46wsgi7lnbqs560j"))))
"0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
(build-system python-build-system)
(inputs
`(("python-setuptools" ,python-setuptools)))
`(("python-setuptools" ,python-setuptools)
("python-vcversioner" ,python-vcversioner)))
(home-page "http://github.com/Julian/jsonschema")
(synopsis "Implementation of JSON Schema for Python")
(description
@ -2210,7 +2247,11 @@ than Pythons urllib2 library.")
(license license:expat)))
(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
(package
@ -4266,11 +4307,13 @@ computing.")
,@(alist-delete "python-terminado"
(package-propagated-inputs ipython))))
(inputs
`(("python2-mock" ,python2-mock)
`(("python2-jsonschema" ,python2-jsonschema)
("python2-mock" ,python2-mock)
("python2-matplotlib" ,python2-matplotlib)
("python2-numpy" ,python2-numpy)
("python2-requests" ,python2-requests)
,@(fold alist-delete (package-inputs ipython)
'("python-matplotlib" "python-numpy")))))))
'("python-jsonschema" "python-matplotlib" "python-numpy" "python-requests")))))))
(define-public python-isodate
(package
@ -4341,13 +4384,22 @@ and written in Python.")
(source
(origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/source/u/urwid/urwid-"
version ".tar.gz"))
(uri (pypi-uri "urwid" version))
(sha256
(base32
"18mb0yy94sjc434rd61m2sfnw27sa0nyrszpj5a9r9zh7fnlzw19"))))
(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)))
(home-page "http://urwid.org")
(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
(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
(package
(name "python2-ipaddress")
@ -6622,3 +6700,557 @@ the standard library.")
(define-public python2-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
;;; Copyright © 2012, 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -30,14 +31,14 @@
(define-public rsync
(package
(name "rsync")
(version "3.1.0")
(version "3.1.2")
(source (origin
(method url-fetch)
(uri (string-append "http://rsync.samba.org/ftp/rsync/src/rsync-"
version ".tar.gz"))
(sha256
(base32
"0kirw8wglqvwi1v8bwxp373g03xg857h59j5k3mmgff9gzvj7jl1"))))
"1hm1q04hz15509f0p9bflw4d6jzfvpm1d36dxjwihk1wzakn5ypc"))))
(build-system gnu-build-system)
(inputs `(("perl" ,perl)
("acl" ,acl)))

View File

@ -2978,3 +2978,67 @@ methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
device.")
(home-page "http://rubyworks.github.io/ansi")
(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
;;; 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>
;;;
;;; This file is part of GNU Guix.
@ -111,7 +111,7 @@ a server that supports the SSH-2 protocol.")
(define-public openssh
(package
(name "openssh")
(version "7.1p1")
(version "7.1p2")
(source (origin
(method url-fetch)
(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/"
tail))))
(sha256 (base32
"0a44mnr8bvw41zg83xh4sb55d8nds29j95gxvxk5qg863lnns2pw"))))
"1gbbvszz74lkc7b2mqr3ccgpm65zj0k5h7a2ssh0c7pjvhjg0xfx"))))
(build-system gnu-build-system)
(inputs `(("groff" ,groff)
("openssl" ,openssl)

View File

@ -1,5 +1,5 @@
;;; 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>
;;;
;;; This file is part of GNU Guix.
@ -1676,6 +1676,8 @@ worker processes and collect and return the results on the master.")
"0s9kab5khk7daqf6nfp1wm1qnhkssnnwnymisfwyk3kz4q5maqfz"))))
(properties
`((upstream-name . "SparseM")))
(inputs
`(("gfortran" ,gfortran)))
(build-system r-build-system)
(home-page "http://www.econ.uiuc.edu/~roger/research/sparse/sparse.html")
(synopsis "Sparse linear algebra")

View File

@ -1,5 +1,5 @@
;;; 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.
;;;
@ -28,7 +28,7 @@
(define-public sxiv
(package
(name "sxiv")
(version "1.3.1")
(version "1.3.2")
(source (origin
(method url-fetch)
(uri (string-append
@ -37,7 +37,7 @@
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"03hxy5ff7xbs15rhlbpgx8xmvmpjlffp0m4528975hg16sqa2c4s"))))
"0lxnd33gaw4drhdwbkk94wzrjyhh64d57jq2ps7ffmqgizg6hlwz"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no check target

View File

@ -56,6 +56,7 @@
#:use-module (gnu packages ncurses)
#:use-module (gnu packages ssh)
#:use-module (gnu packages web)
#:use-module (gnu packages openstack)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#: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,
Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.")
(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, 2016 Mark H Weaver <mhw@netris.org>
;;; 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 Ricardo Wurmus <rekado@elephly.net>
;;; 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
(package
(name "mpv")
(version "0.14.0")
(version "0.15.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -700,14 +700,14 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
".tar.gz"))
(sha256
(base32
"0cqjwl0xyg0sv1jflipfkvqjg32y0kqfh4gc3lyhqgv0hgs3fa84"))
"1p0b83048g66icpz5n66v3k4ldr1z0rmg5d2rr7kcbspm1xj2cbx"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system waf-build-system)
(native-inputs
`(("perl" ,perl)
("pkg-config" ,pkg-config)
("python-docutils" ,python-docutils)))
;; Missing features: libguess, Wayland, VDPAU, V4L2
;; Missing features: libguess, Wayland, V4L2
(inputs
`(("alsa-lib" ,alsa-lib)
("enca" ,enca)
@ -724,6 +724,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
("libdvdnav" ,libdvdnav)
("libjpeg" ,libjpeg)
("libva" ,libva)
("libvdpau" ,libvdpau)
("libx11" ,libx11)
("libxext" ,libxext)
("libxinerama" ,libxinerama)
@ -754,6 +755,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
(lambda* (#:key inputs #:allow-other-keys)
(copy-file (assoc-ref inputs "waf") "waf")
(setenv "CC" "gcc"))))
#:configure-flags (list "--enable-gpl3" "--enable-zsh-comp")
;; No check function defined.
#:tests? #f))
(home-page "http://mpv.io/")
@ -1299,3 +1301,53 @@ from many input sources such as webcams, X11 (for screencasting), PulseAudio,
and JACK.")
(home-page "https://obsproject.com")
(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-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
%setuid-programs
%base-packages
@ -709,4 +717,37 @@ this file is the reconstruction of GRUB menu entries for old configurations."
#$(operating-system-kernel-arguments os))
(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

View File

@ -1,5 +1,5 @@
;;; 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.
;;;
@ -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.
`("ahci" ;for SATA controllers
"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
,@(if (string-match "^(x86_64|i[3-6]86)-" (%current-system))
'("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)))
(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)
"Return the `package' s-expression for a CRAN package from the alist META,
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"))
(version (assoc-ref package "version"))
(hash (assoc-ref package "sha"))
(description (assoc-ref package "info"))
(description (beautify-description
(assoc-ref package "info")))
(home-page (assoc-ref package "homepage_uri"))
(dependencies (map (lambda (dep)
(let ((name (assoc-ref dep "name")))

View File

@ -37,7 +37,8 @@
string->license
license->symbol
snake-case))
snake-case
beautify-description))
(define (factorize-uri uri version)
"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
with dashes."
(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
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -189,39 +190,6 @@ the ownership of '~a' may be incorrect!~%")
(mwhen grub?
(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.
@ -285,22 +253,24 @@ it atomically, and then run OS's activation script."
"Return a list of 'menu-entry' for the generations of PROFILE."
(define (system->grub-entry system number time)
(unless-file-not-found
(let ((file (string-append system "/parameters")))
(match (call-with-input-file file read-boot-parameters)
(($ <boot-parameters> label root kernel kernel-arguments)
(menu-entry
(label (string-append label " (#"
(number->string number) ", "
(seconds->string time) ")"))
(linux kernel)
(linux-arguments
(cons* (string-append "--root=" root)
#~(string-append "--system=" #$system)
#~(string-append "--load=" #$system "/boot")
kernel-arguments))
(initrd #~(string-append #$system "/initrd"))))
(#f ;invalid format
#f)))))
(let* ((file (string-append system "/parameters"))
(params (call-with-input-file file
read-boot-parameters))
(label (boot-parameters-label params))
(root (boot-parameters-root-device params))
(kernel (boot-parameters-kernel params))
(kernel-arguments (boot-parameters-kernel-arguments params)))
(menu-entry
(label (string-append label " (#"
(number->string number) ", "
(seconds->string time) ")"))
(linux kernel)
(linux-arguments
(cons* (string-append "--root=" root)
#~(string-append "--system=" #$system)
#~(string-append "--load=" #$system "/boot")
kernel-arguments))
(initrd #~(string-append #$system "/initrd"))))))
(let* ((numbers (generation-numbers profile))
(systems (map (cut generation-file-name profile <>)
@ -366,18 +336,17 @@ list of services."
(unless (zero? number)
(let* ((generation (generation-file-name profile number))
(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)
(format #t (_ " file name: ~a~%") generation)
(format #t (_ " canonical file name: ~a~%") (readlink* generation))
(match params
(($ <boot-parameters> label root kernel)
;; TRANSLATORS: Please preserve the two-space indentation.
(format #t (_ " label: ~a~%") label)
(format #t (_ " root device: ~a~%") root)
(format #t (_ " kernel: ~a~%") kernel))
(_
#f)))))
;; TRANSLATORS: Please preserve the two-space indentation.
(format #t (_ " label: ~a~%") label)
(format #t (_ " root device: ~a~%") root)
(format #t (_ " kernel: ~a~%") kernel))))
(define* (list-generations pattern #:optional (profile %system-profile))
"Display in a human-readable format all the system generations matching

View File

@ -1,7 +1,7 @@
#!/bin/sh
# 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.
#
@ -31,7 +31,6 @@ unset CDPATH
if [ -x "@abs_top_builddir@/guix-daemon" ]
then
NIX_SETUID_HELPER="@abs_top_builddir@/nix-setuid-helper" # normally unused
NIX_STORE_DIR="@GUIX_TEST_ROOT@/store"
# Do that because store.scm calls `canonicalize-path' on it.
@ -87,10 +86,10 @@ then
# For the (guix import snix) tests.
NIXPKGS="@NIXPKGS@"
export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR \
NIX_LOCALSTATE_DIR NIX_LOG_DIR NIX_STATE_DIR NIX_DB_DIR \
NIX_ROOT_FINDER NIX_SETUID_HELPER GUIX_BINARY_SUBSTITUTE_URL \
GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES \
export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR \
NIX_LOCALSTATE_DIR NIX_LOG_DIR NIX_STATE_DIR NIX_DB_DIR \
NIX_ROOT_FINDER GUIX_BINARY_SUBSTITUTE_URL \
GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES \
NIX_CONF_DIR XDG_CACHE_HOME NIXPKGS
# Launch the daemon without chroot support because is may be

View File

@ -1,5 +1,5 @@
;;; 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.
;;;
@ -472,6 +472,22 @@
(build-derivations %store (list drv))
#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
(false-if-exception