aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2018-04-10 00:42:22 -0400
committerMark H Weaver <mhw@netris.org>2018-04-10 00:42:22 -0400
commitf89aa1521af69b0e1a1350c2380579788b0f8945 (patch)
tree5009cca687ac669ef846920877cbfb6fffdd9893
parent169c658f7f286efae397fa3eda55b1c56fa92a01 (diff)
parent60e1de6d95bd32b4996c199708541781b8f828fd (diff)
downloadgnu-guix-f89aa1521af69b0e1a1350c2380579788b0f8945.tar
gnu-guix-f89aa1521af69b0e1a1350c2380579788b0f8945.tar.gz
Merge branch 'master' into core-updates
-rw-r--r--Makefile.am16
-rw-r--r--build-aux/build-self.scm460
-rw-r--r--build-aux/compile-as-derivation.scm53
-rw-r--r--build-aux/cuirass/gnu-system.scm28
-rw-r--r--build-aux/cuirass/guix-modular.scm6
-rw-r--r--build-aux/cuirass/hydra-to-cuirass.scm47
-rw-r--r--build-aux/hydra/evaluate.scm11
-rw-r--r--build-aux/hydra/gnu-system.scm11
-rw-r--r--build-aux/hydra/guix-modular.scm54
-rw-r--r--build-aux/hydra/guix.scm4
-rw-r--r--doc/guix.texi22
-rw-r--r--gnu/bootloader.scm3
-rw-r--r--gnu/local.mk5
-rw-r--r--gnu/packages.scm27
-rw-r--r--gnu/packages/backup.scm15
-rw-r--r--gnu/packages/bioconductor.scm32
-rw-r--r--gnu/packages/bioinformatics.scm114
-rw-r--r--gnu/packages/build-tools.scm24
-rw-r--r--gnu/packages/check.scm29
-rw-r--r--gnu/packages/ci.scm6
-rw-r--r--gnu/packages/cobol.scm2
-rw-r--r--gnu/packages/cran.scm70
-rw-r--r--gnu/packages/crypto.scm52
-rw-r--r--gnu/packages/databases.scm23
-rw-r--r--gnu/packages/debian.scm5
-rw-r--r--gnu/packages/dictionaries.scm17
-rw-r--r--gnu/packages/django.scm23
-rw-r--r--gnu/packages/emacs.scm159
-rw-r--r--gnu/packages/emulators.scm6
-rw-r--r--gnu/packages/engineering.scm94
-rw-r--r--gnu/packages/fontutils.scm4
-rw-r--r--gnu/packages/freedesktop.scm4
-rw-r--r--gnu/packages/game-development.scm4
-rw-r--r--gnu/packages/gnome.scm4
-rw-r--r--gnu/packages/gnunet.scm9
-rw-r--r--gnu/packages/gnupg.scm11
-rw-r--r--gnu/packages/gps.scm4
-rw-r--r--gnu/packages/graphviz.scm35
-rw-r--r--gnu/packages/gstreamer.scm5
-rw-r--r--gnu/packages/guile.scm9
-rw-r--r--gnu/packages/haskell-check.scm31
-rw-r--r--gnu/packages/haskell-crypto.scm130
-rw-r--r--gnu/packages/haskell-web.scm278
-rw-r--r--gnu/packages/haskell.scm615
-rw-r--r--gnu/packages/image.scm6
-rw-r--r--gnu/packages/java.scm329
-rw-r--r--gnu/packages/javascript.scm4
-rw-r--r--gnu/packages/ldc.scm8
-rw-r--r--gnu/packages/libcanberra.scm4
-rw-r--r--gnu/packages/license.scm5
-rw-r--r--gnu/packages/linux.scm40
-rw-r--r--gnu/packages/llvm.scm107
-rw-r--r--gnu/packages/mail.scm12
-rw-r--r--gnu/packages/mate.scm4
-rw-r--r--gnu/packages/maths.scm42
-rw-r--r--gnu/packages/messaging.scm15
-rw-r--r--gnu/packages/mp3.scm17
-rw-r--r--gnu/packages/music.scm90
-rw-r--r--gnu/packages/networking.scm4
-rw-r--r--gnu/packages/ocaml.scm6
-rw-r--r--gnu/packages/openstack.scm4
-rw-r--r--gnu/packages/package-management.scm27
-rw-r--r--gnu/packages/password-utils.scm49
-rw-r--r--gnu/packages/patches/4store-unset-preprocessor-directive.patch16
-rw-r--r--gnu/packages/patches/clang-3.5-libc-search-path.patch (renamed from gnu/packages/patches/clang-libc-search-path.patch)0
-rw-r--r--gnu/packages/patches/clang-6.0-libc-search-path.patch67
-rw-r--r--gnu/packages/patches/delly-use-system-libraries.patch56
-rw-r--r--gnu/packages/patches/libgnomeui-utf8.patch6
-rw-r--r--gnu/packages/patches/racket-fix-xform-issue.patch63
-rw-r--r--gnu/packages/perl.scm351
-rw-r--r--gnu/packages/php.scm4
-rw-r--r--gnu/packages/plotutils.scm5
-rw-r--r--gnu/packages/python-crypto.scm10
-rw-r--r--gnu/packages/python.scm71
-rw-r--r--gnu/packages/regex.scm11
-rw-r--r--gnu/packages/ruby.scm8
-rw-r--r--gnu/packages/rust.scm1375
-rw-r--r--gnu/packages/samba.scm4
-rw-r--r--gnu/packages/scheme.scm8
-rw-r--r--gnu/packages/search.scm50
-rw-r--r--gnu/packages/ssh.scm7
-rw-r--r--gnu/packages/statistics.scm28
-rw-r--r--gnu/packages/syncthing.scm14
-rw-r--r--gnu/packages/syndication.scm4
-rw-r--r--gnu/packages/textutils.scm10
-rw-r--r--gnu/packages/tls.scm23
-rw-r--r--gnu/packages/upnp.scm4
-rw-r--r--gnu/packages/version-control.scm82
-rw-r--r--gnu/packages/video.scm38
-rw-r--r--gnu/packages/virtualization.scm10
-rw-r--r--gnu/packages/vpn.scm4
-rw-r--r--gnu/packages/web.scm26
-rw-r--r--gnu/packages/wine.scm6
-rw-r--r--gnu/packages/wm.scm4
-rw-r--r--gnu/packages/xdisorg.scm34
-rw-r--r--gnu/packages/xorg.scm4
-rw-r--r--gnu/services.scm3
-rw-r--r--gnu/services/certbot.scm22
-rw-r--r--gnu/services/desktop.scm22
-rw-r--r--gnu/system/shadow.scm3
-rw-r--r--guix/build-system/cargo.scm21
-rw-r--r--guix/build/union.scm40
-rw-r--r--guix/discovery.scm31
-rw-r--r--guix/gexp.scm15
-rw-r--r--guix/git.scm87
-rw-r--r--guix/modules.scm7
-rw-r--r--guix/scripts/package.scm17
-rw-r--r--guix/self.scm599
-rw-r--r--guix/upstream.scm5
-rw-r--r--nix/libstore/globals.cc44
-rw-r--r--nix/libstore/globals.hh4
-rw-r--r--nix/libstore/local-store.cc159
-rw-r--r--nix/libstore/local-store.hh7
-rw-r--r--nix/libstore/misc.cc114
-rw-r--r--nix/libstore/misc.hh7
-rw-r--r--nix/libstore/store-api.cc31
-rw-r--r--nix/libstore/store-api.hh17
-rw-r--r--po/guix/LINGUAS1
-rw-r--r--po/guix/es.po2994
-rw-r--r--tests/guix-package.sh8
-rw-r--r--tests/syscalls.scm10
-rw-r--r--tests/union.scm42
122 files changed, 7541 insertions, 2506 deletions
diff --git a/Makefile.am b/Makefile.am
index e647f270d3..517322b7ac 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -81,6 +81,7 @@ MODULES = \
guix/derivations.scm \
guix/grafts.scm \
guix/gnu-maintenance.scm \
+ guix/self.scm \
guix/upstream.scm \
guix/licenses.scm \
guix/glob.scm \
@@ -459,7 +460,7 @@ EXTRA_DIST = \
TODO \
CODE-OF-CONDUCT \
.dir-locals.el \
- bin/guix.in \
+ scripts/guix.in \
etc/guix-install.sh \
build-aux/build-self.scm \
build-aux/compile-all.scm \
@@ -467,8 +468,12 @@ EXTRA_DIST = \
build-aux/hydra/gnu-system.scm \
build-aux/hydra/guix.scm \
build-aux/hydra/guix-modular.scm \
+ build-aux/cuirass/gnu-system.scm \
+ build-aux/cuirass/guix-modular.scm \
+ build-aux/cuirass/hydra-to-cuirass.scm \
build-aux/check-available-binaries.scm \
build-aux/check-final-inputs-self-contained.scm \
+ build-aux/compile-as-derivation.scm \
build-aux/generate-authors.scm \
build-aux/test-driver.scm \
build-aux/update-guix-package.scm \
@@ -534,6 +539,13 @@ $(guix_install_go_files): install-nobase_dist_guilemoduleDATA
install-data-hook: set-bootstrap-executable-permissions
touch "$(DESTDIR)$(guileobjectdir)/guix/config.go"
+# Assuming Guix is already installed and the daemon is up and running, this
+# rule builds from $(srcdir), creating and building derivations.
+as-derivation:
+ $(AM_V_at)echo "Building Guix in Guix..." ; \
+ $(GUILE) --no-auto-compile \
+ "$(top_srcdir)/build-aux/compile-as-derivation.scm" \
+ "$(abs_top_srcdir)"
SUBDIRS = po/guix po/packages
BUILT_SOURCES =
@@ -762,7 +774,7 @@ cuirass-jobs.scm: $(GOBJECTS)
.PHONY: gen-ChangeLog gen-AUTHORS gen-tarball-version
.PHONY: assert-no-store-file-names assert-binaries-available
.PHONY: assert-final-inputs-self-contained
-.PHONY: clean-go make-go
+.PHONY: clean-go make-go as-derivation
.PHONY: update-guix-package update-NEWS release
## -------------- ##
diff --git a/build-aux/build-self.scm b/build-aux/build-self.scm
index 4c85c09df6..bccb7a959e 100644
--- a/build-aux/build-self.scm
+++ b/build-aux/build-self.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -19,10 +19,14 @@
(define-module (build-self)
#:use-module (gnu)
#:use-module (guix)
+ #:use-module (guix ui)
#:use-module (guix config)
+ #:use-module (guix modules)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
+ #:use-module (rnrs io ports)
#:use-module (ice-9 match)
+ #:use-module (ice-9 popen)
#:export (build))
;;; Commentary:
@@ -40,242 +44,256 @@
;;; Code:
-;; The dependencies. Don't refer explicitly to the variables because they
-;; could be renamed or shuffled around in modules over time. Conversely,
-;; 'find-best-packages-by-name' is expected to always have the same semantics.
-
-(define guix
- (first (find-best-packages-by-name "guix" #f)))
-
-(define libgcrypt
- (first (find-best-packages-by-name "libgcrypt" #f)))
-
-(define zlib
- (first (find-best-packages-by-name "zlib" #f)))
-
-(define gzip
- (first (find-best-packages-by-name "gzip" #f)))
-
-(define bzip2
- (first (find-best-packages-by-name "bzip2" #f)))
-
-(define xz
- (first (find-best-packages-by-name "xz" #f)))
-
-(define (false-if-wrong-guile package)
- "Return #f if PACKAGE depends on the \"wrong\" major version of Guile (e.g.,
-2.0 instead of 2.2), otherwise return PACKAGE."
- (let ((guile (any (match-lambda
- ((label (? package? dep) _ ...)
- (and (string=? (package-name dep) "guile")
- dep)))
- (package-direct-inputs package))))
- (and (or (not guile)
- (string-prefix? (effective-version)
- (package-version guile)))
- package)))
-
-(define (package-for-current-guile . names)
- "Return the package with one of the given NAMES that depends on the current
-Guile major version (2.0 or 2.2), or #f if none of the packages matches."
- (let loop ((names names))
- (match names
- (()
- #f)
- ((name rest ...)
- (match (find-best-packages-by-name name #f)
- (()
- (loop rest))
- ((first _ ...)
- (or (false-if-wrong-guile first)
- (loop rest))))))))
-
-(define guile-json
- (package-for-current-guile "guile-json"
- "guile2.2-json"
- "guile2.0-json"))
-
-(define guile-ssh
- (package-for-current-guile "guile-ssh"
- "guile2.2-ssh"
- "guile2.0-ssh"))
-
-(define guile-git
- (package-for-current-guile "guile-git"
- "guile2.0-git"))
-
-(define guile-bytestructures
- (package-for-current-guile "guile-bytestructures"
- "guile2.0-bytestructures"))
-
-;; The actual build procedure.
+;;;
+;;; Generating (guix config).
+;;;
+;;; This is copied from (guix self) because we cannot assume (guix self) is
+;;; available at this point.
+;;;
+
+(define %dependency-variables
+ ;; (guix config) variables corresponding to dependencies.
+ '(%libgcrypt %libz %xz %gzip %bzip2 %nix-instantiate))
+
+(define %persona-variables
+ ;; (guix config) variables that define Guix's persona.
+ '(%guix-package-name
+ %guix-version
+ %guix-bug-report-address
+ %guix-home-page-url))
+
+(define %config-variables
+ ;; (guix config) variables corresponding to Guix configuration (storedir,
+ ;; localstatedir, etc.)
+ (sort (filter pair?
+ (module-map (lambda (name var)
+ (and (not (memq name %dependency-variables))
+ (not (memq name %persona-variables))
+ (cons name (variable-ref var))))
+ (resolve-interface '(guix config))))
+ (lambda (name+value1 name+value2)
+ (string<? (symbol->string (car name+value1))
+ (symbol->string (car name+value2))))))
+
+(define* (make-config.scm #:key libgcrypt zlib gzip xz bzip2
+ (package-name "GNU Guix")
+ (package-version "0")
+ (bug-report-address "bug-guix@gnu.org")
+ (home-page-url "https://gnu.org/s/guix"))
+
+ ;; Hack so that Geiser is not confused.
+ (define defmod 'define-module)
+
+ (scheme-file "config.scm"
+ #~(begin
+ (#$defmod (guix config)
+ #:export (%guix-package-name
+ %guix-version
+ %guix-bug-report-address
+ %guix-home-page-url
+ %libgcrypt
+ %libz
+ %gzip
+ %bzip2
+ %xz
+ %nix-instantiate))
+
+ ;; XXX: Work around <http://bugs.gnu.org/15602>.
+ (eval-when (expand load eval)
+ #$@(map (match-lambda
+ ((name . value)
+ #~(define-public #$name #$value)))
+ %config-variables)
+
+ (define %guix-package-name #$package-name)
+ (define %guix-version #$package-version)
+ (define %guix-bug-report-address #$bug-report-address)
+ (define %guix-home-page-url #$home-page-url)
+
+ (define %gzip
+ #+(and gzip (file-append gzip "/bin/gzip")))
+ (define %bzip2
+ #+(and bzip2 (file-append bzip2 "/bin/bzip2")))
+ (define %xz
+ #+(and xz (file-append xz "/bin/xz")))
+
+ (define %libgcrypt
+ #+(and libgcrypt
+ (file-append libgcrypt "/lib/libgcrypt")))
+ (define %libz
+ #+(and zlib
+ (file-append zlib "/lib/libz")))
+
+ (define %nix-instantiate ;for (guix import snix)
+ "nix-instantiate")))))
-(define (top-source-directory)
- "Return the name of the top-level directory of this source tree."
- (and=> (assoc-ref (current-source-location) 'filename)
- (lambda (file)
- (string-append (dirname file) "/.."))))
+
+;;;
+;;; 'gexp->script'.
+;;;
+;;; This is our own variant of 'gexp->script' with an extra #:module-path
+;;; parameter, which was unavailable in (guix gexp) until commit
+;;; 1ae16033f34cebe802023922436883867010850f (March 2018.)
+;;;
+(define (load-path-expression modules path)
+ "Return as a monadic value a gexp that sets '%load-path' and
+'%load-compiled-path' to point to MODULES, a list of module names. MODULES
+are searched for in PATH."
+ (mlet %store-monad ((modules (imported-modules modules
+ #:module-path path))
+ (compiled (compiled-modules modules
+ #:module-path path)))
+ (return (gexp (eval-when (expand load eval)
+ (set! %load-path
+ (cons (ungexp modules) %load-path))
+ (set! %load-compiled-path
+ (cons (ungexp compiled)
+ %load-compiled-path)))))))
+
+(define* (gexp->script name exp
+ #:key (guile (default-guile))
+ (module-path %load-path))
+ "Return an executable script NAME that runs EXP using GUILE, with EXP's
+imported modules in its search path."
+ (mlet %store-monad ((set-load-path
+ (load-path-expression (gexp-modules exp)
+ module-path)))
+ (gexp->derivation name
+ (gexp
+ (call-with-output-file (ungexp output)
+ (lambda (port)
+ ;; Note: that makes a long shebang. When the store
+ ;; is /gnu/store, that fits within the 128-byte
+ ;; limit imposed by Linux, but that may go beyond
+ ;; when running tests.
+ (format port
+ "#!~a/bin/guile --no-auto-compile~%!#~%"
+ (ungexp guile))
+
+ (write '(ungexp set-load-path) port)
+ (write '(ungexp exp) port)
+ (chmod port #o555))))
+ #:module-path module-path)))
+
(define (date-version-string)
"Return the current date and hour in UTC timezone, for use as a poor
person's version identifier."
;; XXX: Replace with a Git commit id.
(date->string (current-date 0) "~Y~m~d.~H"))
-(define (matching-guile-2.2)
- "Return a Guile 2.2 with the same version as the current one or immediately
-older than then current one. This is so that we do not build ABI-incompatible
-objects. See <https://bugs.gnu.org/29570>."
- (let loop ((packages (find-packages-by-name "guile" "2.2"))
- (best #f))
- (match packages
- (()
- best)
- ((head tail ...)
- (if (string=? (package-version head) (version))
- head
- (if best
- (if (version>? (package-version head) (version))
- (loop tail best)
- (loop tail head))
- (loop tail head)))))))
-
-(define (guile-for-build)
- "Return a derivation for Guile 2.0 or 2.2, whichever matches the currently
-running Guile."
- (package->derivation (cond-expand
- (guile-2.2
- (canonical-package (matching-guile-2.2)))
- (else
- (canonical-package
- (specification->package "guile@2.0"))))))
+(define* (build-program source version
+ #:optional (guile-version (effective-version)))
+ "Return a program that computes the derivation to build Guix from SOURCE."
+ (define select?
+ ;; Select every module but (guix config) and non-Guix modules.
+ (match-lambda
+ (('guix 'config) #f)
+ (('guix _ ...) #t)
+ (('gnu _ ...) #t)
+ (_ #f)))
+
+ (with-imported-modules `(((guix config)
+ => ,(make-config.scm
+ #:libgcrypt
+ (specification->package "libgcrypt")))
+ ,@(source-module-closure `((guix store)
+ (guix self)
+ (guix derivations)
+ (gnu packages bootstrap))
+ (list source)
+ #:select? select?))
+ (gexp->script "compute-guix-derivation"
+ #~(begin
+ (use-modules (ice-9 match))
+
+ (eval-when (expand load eval)
+ ;; Don't augment '%load-path'.
+ (unsetenv "GUIX_PACKAGE_PATH")
+
+ ;; (gnu packages …) modules are going to be looked up
+ ;; under SOURCE. (guix config) is looked up in FRONT.
+ (match %load-path
+ ((#$source _ ...)
+ #t) ;already done
+ ((front _ ...)
+ (set! %load-path (list #$source front))))
+
+ ;; Only load our own modules or those of Guile.
+ (match %load-compiled-path
+ ((front _ ... sys1 sys2)
+ (set! %load-compiled-path
+ (list front sys1 sys2)))))
+
+ (use-modules (guix store)
+ (guix self)
+ (guix derivations)
+ (srfi srfi-1))
+
+ (define (spin system)
+ (define spin
+ (circular-list "-" "\\" "|" "/" "-" "\\" "|" "/"))
+
+ (format (current-error-port)
+ "Computing Guix derivation for '~a'... "
+ system)
+ (let loop ((spin spin))
+ (display (string-append "\b" (car spin))
+ (current-error-port))
+ (force-output (current-error-port))
+ (sleep 1)
+ (loop (cdr spin))))
+
+ (match (command-line)
+ ((_ _ system)
+ (with-store store
+ (call-with-new-thread
+ (lambda ()
+ (spin system)))
+
+ (display
+ (derivation-file-name
+ (run-with-store store
+ (guix-derivation #$source #$version
+ #$guile-version)
+ #:system system)))))))
+ #:module-path (list source))))
;; The procedure below is our return value.
(define* (build source
- #:key verbose? (version (date-version-string))
+ #:key verbose? (version (date-version-string)) system
+ (guile-version (match ((@ (guile) version))
+ ("2.2.2" "2.2.2")
+ (_ (effective-version))))
#:allow-other-keys
#:rest rest)
"Return a derivation that unpacks SOURCE into STORE and compiles Scheme
files."
- ;; The '%xxxdir' variables were added to (guix config) in July 2016 so we
- ;; cannot assume that they are defined. Try to guess their value when
- ;; they're undefined (XXX: we get an incorrect guess when environment
- ;; variables such as 'NIX_STATE_DIR' are defined!).
- (define storedir
- (if (defined? '%storedir) %storedir %store-directory))
- (define localstatedir
- (if (defined? '%localstatedir) %localstatedir (dirname %state-directory)))
- (define sysconfdir
- (if (defined? '%sysconfdir) %sysconfdir (dirname %config-directory)))
-
- (define builder
- #~(begin
- (use-modules (guix build pull))
-
- (letrec-syntax ((maybe-load-path
- (syntax-rules ()
- ((_ item rest ...)
- (let ((tail (maybe-load-path rest ...)))
- (if (string? item)
- (cons (string-append item
- "/share/guile/site/"
- #$(effective-version))
- tail)
- tail)))
- ((_)
- '()))))
- (set! %load-path
- (append
- (maybe-load-path #$guile-json #$guile-ssh
- #$guile-git #$guile-bytestructures)
- %load-path)))
-
- (letrec-syntax ((maybe-load-compiled-path
- (syntax-rules ()
- ((_ item rest ...)
- (let ((tail (maybe-load-compiled-path rest ...)))
- (if (string? item)
- (cons (string-append item
- "/lib/guile/"
- #$(effective-version)
- "/site-ccache")
- tail)
- tail)))
- ((_)
- '()))))
- (set! %load-compiled-path
- (append
- (maybe-load-compiled-path #$guile-json #$guile-ssh
- #$guile-git #$guile-bytestructures)
- %load-compiled-path)))
-
- ;; XXX: The 'guile-ssh' package prior to Guix commit 92b7258 was
- ;; broken: libguile-ssh could not be found. Work around that.
- ;; FIXME: We want Guile-SSH 0.10.2 or later anyway.
- #$(if (string-prefix? "0.9." (package-version guile-ssh))
- #~(setenv "LTDL_LIBRARY_PATH" (string-append #$guile-ssh "/lib"))
- #t)
-
- (build-guix #$output #$source
-
- #:system #$%system
- #:storedir #$storedir
- #:localstatedir #$localstatedir
- #:sysconfdir #$sysconfdir
- #:sbindir (string-append #$guix "/sbin")
-
- #:package-name #$%guix-package-name
- #:package-version #$version
- #:bug-report-address #$%guix-bug-report-address
- #:home-page-url #$%guix-home-page-url
-
- #:libgcrypt #$libgcrypt
- #:zlib #$zlib
- #:gzip #$gzip
- #:bzip2 #$bzip2
- #:xz #$xz
-
- ;; XXX: This is not perfect, enabling VERBOSE? means
- ;; building a different derivation.
- #:debug-port (if #$verbose?
- (current-error-port)
- (%make-void-port "w")))))
-
- (unless guile-git
- ;; XXX: Guix before February 2017 lacks a 'guile-git' package altogether.
- ;; If we try to upgrade anyway, the logic in (guix scripts pull) will not
- ;; build (guix git), which will leave us with an unusable 'guix pull'. To
- ;; avoid that, fail early.
- (format (current-error-port)
- "\
-Your installation is too old and lacks a '~a' package.
-Please upgrade to an intermediate version first, for instance with:
-
- guix pull --url=https://git.savannah.gnu.org/cgit/guix.git/snapshot/v0.13.0.tar.gz
-\n"
- (match (effective-version)
- ("2.0" "guile2.0-git")
- (_ "guile-git")))
- (exit 1))
-
- (mlet %store-monad ((guile (guile-for-build)))
- (gexp->derivation "guix-latest" builder
- #:modules '((guix build pull)
- (guix build utils)
- (guix build compile)
-
- ;; Closure of (guix modules).
- (guix modules)
- (guix memoization)
- (guix profiling)
- (guix sets))
-
- ;; Arrange so that our own (guix build …) modules are
- ;; used.
- #:module-path (list (top-source-directory))
-
- #:guile-for-build guile)))
+ ;; Build the build program and then use it as a trampoline to build from
+ ;; SOURCE.
+ (mlet %store-monad ((build (build-program source version guile-version))
+ (system (if system (return system) (current-system))))
+ (mbegin %store-monad
+ (show-what-to-build* (list build))
+ (built-derivations (list build))
+ (let* ((pipe (begin
+ (setenv "GUILE_WARN_DEPRECATED" "no") ;be quiet and drive
+ (open-pipe* OPEN_READ
+ (derivation->output-path build)
+ source system)))
+ (str (get-string-all pipe))
+ (status (close-pipe pipe)))
+ (match str
+ ((? eof-object?)
+ (error "build program failed" (list build status)))
+ ((? derivation-path? drv)
+ (mbegin %store-monad
+ (return (newline (current-output-port)))
+ ((store-lift add-temp-root) drv)
+ (return (read-derivation-from-file drv))))
+ ((? string? str)
+ (error "invalid build result" (list build str))))))))
;; This file is loaded by 'guix pull'; return it the build procedure.
build
diff --git a/build-aux/compile-as-derivation.scm b/build-aux/compile-as-derivation.scm
new file mode 100644
index 0000000000..afb134a92a
--- /dev/null
+++ b/build-aux/compile-as-derivation.scm
@@ -0,0 +1,53 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Ludovic Courtès <ludo@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/>.
+
+;; Build Guix using Guix.
+
+(use-modules (srfi srfi-26))
+
+;; Add ~/.config/guix/latest to the search path.
+(add-to-load-path
+ (and=> (or (getenv "XDG_CONFIG_HOME")
+ (and=> (getenv "HOME")
+ (cut string-append <> "/.config")))
+ (cut string-append <> "/guix/latest")))
+
+(use-modules (guix) (guix ui)
+ (guix git-download)
+ (ice-9 match))
+
+(match (command-line)
+ ((program source)
+ (with-error-handling
+ (with-store store
+ (let* ((script (string-append source "/build-aux/build-self.scm"))
+ (build (primitive-load script))
+ (git? (git-predicate source)))
+ (run-with-store store
+ ;; TODO: Extract #:version and #:commit using Guile-Git.
+ (mlet* %store-monad ((source (interned-file source "guix-source"
+ #:select? git?
+ #:recursive? #t))
+ (drv (build source)))
+ (mbegin %store-monad
+ (show-what-to-build* (list drv))
+ (built-derivations (list drv))
+ (with-monad %store-monad
+ (display (derivation->output-path drv))
+ (newline)
+ (return drv))))))))))
diff --git a/build-aux/cuirass/gnu-system.scm b/build-aux/cuirass/gnu-system.scm
index f545ba03bc..0eb834cfba 100644
--- a/build-aux/cuirass/gnu-system.scm
+++ b/build-aux/cuirass/gnu-system.scm
@@ -21,29 +21,5 @@
;;; tool.
;;;
-(include-from-path "build-aux/hydra/gnu-system.scm")
-
-(use-modules ((guix licenses)
- #:select (license? license-name license-uri license-comment)))
-
-(define (cuirass-jobs store arguments)
- "Return Cuirass jobs."
- (map hydra-job->cuirass-job (hydra-jobs store arguments)))
-
-(define (hydra-job->cuirass-job hydra-job)
- (let ((name (car hydra-job))
- (job ((cdr hydra-job))))
- (lambda _ (acons #:job-name (symbol->string name)
- (map symbol-alist-entry->keyword-alist-entry job)))))
-
-(define (symbol-alist-entry->keyword-alist-entry entry)
- (cons (symbol->keyword (car entry)) (entry->sexp-entry (cdr entry))))
-
-(define (entry->sexp-entry o)
- (match o
- ((? license?) `((name . (license-name o))
- (uri . ,(license-uri o))
- (comment . ,(license-comment o))))
- ((lst ...)
- (map entry->sexp-entry lst))
- (_ o)))
+(include "../hydra/gnu-system.scm")
+(include "hydra-to-cuirass.scm")
diff --git a/build-aux/cuirass/guix-modular.scm b/build-aux/cuirass/guix-modular.scm
new file mode 100644
index 0000000000..cbbdbf1133
--- /dev/null
+++ b/build-aux/cuirass/guix-modular.scm
@@ -0,0 +1,6 @@
+;;;
+;;; This file defines Cuirass build jobs to build Guix itself.
+;;;
+
+(include "../hydra/guix-modular.scm")
+(include "hydra-to-cuirass.scm")
diff --git a/build-aux/cuirass/hydra-to-cuirass.scm b/build-aux/cuirass/hydra-to-cuirass.scm
new file mode 100644
index 0000000000..75c77ea35a
--- /dev/null
+++ b/build-aux/cuirass/hydra-to-cuirass.scm
@@ -0,0 +1,47 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@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/>.
+
+;;;
+;;; This file defines the conversion of Hydra build jobs to Cuirass build
+;;; jobs. It is meant to be included in other files.
+;;;
+
+(use-modules ((guix licenses)
+ #:select (license? license-name license-uri license-comment)))
+
+(define (cuirass-jobs store arguments)
+ "Return Cuirass jobs."
+ (map hydra-job->cuirass-job (hydra-jobs store arguments)))
+
+(define (hydra-job->cuirass-job hydra-job)
+ (let ((name (car hydra-job))
+ (job ((cdr hydra-job))))
+ (lambda _ (acons #:job-name (symbol->string name)
+ (map symbol-alist-entry->keyword-alist-entry job)))))
+
+(define (symbol-alist-entry->keyword-alist-entry entry)
+ (cons (symbol->keyword (car entry)) (entry->sexp-entry (cdr entry))))
+
+(define (entry->sexp-entry o)
+ (match o
+ ((? license?) `((name . (license-name o))
+ (uri . ,(license-uri o))
+ (comment . ,(license-comment o))))
+ ((lst ...)
+ (map entry->sexp-entry lst))
+ (_ o)))
diff --git a/build-aux/hydra/evaluate.scm b/build-aux/hydra/evaluate.scm
index 8e391f44fd..5793c022ff 100644
--- a/build-aux/hydra/evaluate.scm
+++ b/build-aux/hydra/evaluate.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
@@ -79,7 +79,8 @@ Otherwise return THING."
(match (command-line)
((command file cuirass? ...)
;; Load FILE, a Scheme file that defines Hydra jobs.
- (let ((port (current-output-port)))
+ (let ((port (current-output-port))
+ (real-build-things build-things))
(save-module-excursion
(lambda ()
(set-current-module %user-module)
@@ -93,13 +94,15 @@ Otherwise return THING."
;; Grafts can trigger early builds. We do not want that to happen
;; during evaluation, so use a sledgehammer to catch such problems.
+ ;; An exception, though, is the evaluation of Guix itself, which
+ ;; requires building a "trampoline" program.
(set! build-things
(lambda (store . args)
(format (current-error-port)
- "error: trying to build things during evaluation!~%")
+ "warning: building things during evaluation~%")
(format (current-error-port)
"'build-things' arguments: ~s~%" args)
- (exit 1)))
+ (apply real-build-things store args)))
;; Call the entry point of FILE and print the resulting job sexp.
(pretty-print
diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm
index 8178871747..62eb957f83 100644
--- a/build-aux/hydra/gnu-system.scm
+++ b/build-aux/hydra/gnu-system.scm
@@ -24,7 +24,7 @@
(use-modules (system base compile))
-(eval-when (compile load eval)
+(eval-when (expand load eval)
;; Pre-load the compiler so we don't end up auto-compiling it.
(compile #t)
@@ -32,6 +32,15 @@
;; Use our very own Guix modules.
(set! %fresh-auto-compile #t)
+ ;; Ignore .go files except for Guile's. This is because our checkout in the
+ ;; store has mtime set to the epoch, and thus .go files look newer, even
+ ;; though they may not correspond. Use 'reverse' so that /gnu/store/…-guile
+ ;; comes before /run/current-system/profile.
+ (set! %load-compiled-path
+ (list
+ (dirname (dirname (search-path (reverse %load-compiled-path)
+ "ice-9/boot-9.go")))))
+
(and=> (assoc-ref (current-source-location) 'filename)
(lambda (file)
(let ((dir (string-append (dirname file) "/../..")))
diff --git a/build-aux/hydra/guix-modular.scm b/build-aux/hydra/guix-modular.scm
index bdbb2fa8d5..58e09e1831 100644
--- a/build-aux/hydra/guix-modular.scm
+++ b/build-aux/hydra/guix-modular.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,35 +21,14 @@
;;; Guix as 'guix pull', which is defined in (guix self).
;;;
-;; Attempt to use our very own Guix modules.
-(eval-when (compile load eval)
-
- ;; Ignore any available .go, and force recompilation. This is because our
- ;; checkout in the store has mtime set to the epoch, and thus .go files look
- ;; newer, even though they may not correspond.
- (set! %fresh-auto-compile #t)
-
- (and=> (assoc-ref (current-source-location) 'filename)
- (lambda (file)
- (let ((dir (canonicalize-path
- (string-append (dirname file) "/../.."))))
- (format (current-error-port) "prepending ~s to the load path~%"
- dir)
- (set! %load-path (cons dir %load-path))))))
-
-
(use-modules (guix store)
(guix config)
(guix utils)
- (guix grafts)
((guix packages) #:select (%hydra-supported-systems))
(guix derivations)
(guix monads)
- (guix gexp)
- (guix self)
((guix licenses) #:prefix license:)
(srfi srfi-1)
- (srfi srfi-26)
(ice-9 match))
;; XXX: Debugging hack: since `hydra-eval-guile-jobs' redirects the output
@@ -61,11 +40,13 @@
"Return a Hydra job a list building the modular Guix derivation from SOURCE
for SYSTEM. Use VERSION as the version identifier."
(lambda ()
+ (define build
+ (primitive-load (string-append source "/build-aux/build-self.scm")))
+
`((derivation . ,(derivation-file-name
- (parameterize ((%graft? #f))
- (run-with-store store
- (lower-object (compiled-guix source
- #:version version))))))
+ (run-with-store store
+ (build source #:version version #:system system
+ #:guile-version "2.2")))) ;the latest 2.2.x
(description . "Modular Guix")
(long-description
. "This is the modular Guix package as produced by 'guix pull'.")
@@ -76,29 +57,26 @@ for SYSTEM. Use VERSION as the version identifier."
(define (hydra-jobs store arguments)
"Return Hydra jobs."
(define systems
- (match (filter-map (match-lambda
- (('system . value) value)
- (_ #f))
- arguments)
- ((lst ..1)
- lst)
- (_
- (list (%current-system)))))
+ (match (assoc-ref arguments 'systems)
+ (#f %hydra-supported-systems)
+ ((lst ...) lst)
+ ((? string? str) (call-with-input-string str read))))
(define guix-checkout
- (assq-ref arguments 'guix))
+ (or (assq-ref arguments 'guix) ;Hydra on hydra
+ (assq-ref arguments 'guix-modular))) ;Cuirass on berlin
(define version
(or (assq-ref guix-checkout 'revision)
"0.unknown"))
(let ((file (assq-ref guix-checkout 'file-name)))
- (format (current-error-port) "using checkout ~s (~s)~%"
- guix-checkout file)
+ (format (current-error-port) "using checkout ~s (~s; arguments: ~s)~%"
+ guix-checkout file arguments)
(map (lambda (system)
(let ((name (string->symbol
(string-append "guix." system))))
`(,name
. ,(build-job store file version system))))
- %hydra-supported-systems)))
+ systems)))
diff --git a/build-aux/hydra/guix.scm b/build-aux/hydra/guix.scm
index 659b8bfbc1..08193ec82e 100644
--- a/build-aux/hydra/guix.scm
+++ b/build-aux/hydra/guix.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,7 +22,7 @@
;;;
;; Attempt to use our very own Guix modules.
-(eval-when (compile load eval)
+(eval-when (expand load eval)
;; Ignore any available .go, and force recompilation. This is because our
;; checkout in the store has mtime set to the epoch, and thus .go files look
diff --git a/doc/guix.texi b/doc/guix.texi
index 25c08b9f06..738fdf65ca 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -2039,6 +2039,16 @@ variable, even though, taken individually, neither @file{foo} nor
@itemx -p @var{profile}
Use @var{profile} instead of the user's default profile.
+@cindex collisions, in a profile
+@cindex colliding packages in profiles
+@cindex profile collisions
+@item --allow-collisions
+Allow colliding packages in the new profile. Use at your own risk!
+
+By default, @command{guix package} reports as an error @dfn{collisions}
+in the profile. Collisions happen when two or more different versions
+or variants of a given package end up in the profile.
+
@item --verbose
Produce verbose output. In particular, emit the build log of the
environment on the standard error port.
@@ -8325,10 +8335,10 @@ ifconfig @var{interface} up
To configure wireless networking, you can create a configuration file
for the @command{wpa_supplicant} configuration tool (its location is not
important) using one of the available text editors such as
-@command{zile}:
+@command{nano}:
@example
-zile wpa_supplicant.conf
+nano wpa_supplicant.conf
@end example
As an example, the following stanza can go to this file and will work
@@ -8509,8 +8519,10 @@ builds to @file{/gnu/store} which, initially, is an in-memory file system.
Next, you have to edit a file and
provide the declaration of the operating system to be installed. To
-that end, the installation system comes with three text editors: GNU nano
-(@pxref{Top,,, nano, GNU nano Manual}), GNU Zile (an Emacs clone), and
+that end, the installation system comes with three text editors. We
+recommend GNU nano (@pxref{Top,,, nano, GNU nano Manual}), which
+supports syntax highlighting and parentheses matching; other editors
+include GNU Zile (an Emacs clone), and
nvi (a clone of the original BSD @command{vi} editor).
We strongly recommend storing that file on the target root file system, say,
as @file{/mnt/etc/config.scm}. Failing to do that, you will have lost your
@@ -8526,7 +8538,7 @@ something along these lines:
@example
# mkdir /mnt/etc
# cp /etc/configuration/desktop.scm /mnt/etc/config.scm
-# zile /mnt/etc/config.scm
+# nano /mnt/etc/config.scm
@end example
You should pay attention to what your configuration file contains, and
diff --git a/gnu/bootloader.scm b/gnu/bootloader.scm
index 736f119527..4f2c71cb5a 100644
--- a/gnu/bootloader.scm
+++ b/gnu/bootloader.scm
@@ -146,7 +146,8 @@
"Return the list of bootloader modules."
(all-modules (map (lambda (entry)
`(,entry . "gnu/bootloader"))
- %load-path)))
+ %load-path)
+ #:warn warn-about-load-error))
(define %bootloaders
;; The list of publically-known bootloaders.
diff --git a/gnu/local.mk b/gnu/local.mk
index 91ccb474bc..f0ee61b642 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -544,6 +544,7 @@ MODULES_NOT_COMPILED += \
patchdir = $(guilemoduledir)/%D%/packages/patches
dist_patch_DATA = \
%D%/packages/patches/4store-fix-buildsystem.patch \
+ %D%/packages/patches/4store-unset-preprocessor-directive.patch \
%D%/packages/patches/a2ps-CVE-2001-1593.patch \
%D%/packages/patches/a2ps-CVE-2014-0466.patch \
%D%/packages/patches/abiword-explictly-cast-bools.patch \
@@ -589,8 +590,9 @@ dist_patch_DATA = \
%D%/packages/patches/ceph-skip-collect-sys-info-test.patch \
%D%/packages/patches/ceph-skip-unittest_blockdev.patch \
%D%/packages/patches/chmlib-inttypes.patch \
- %D%/packages/patches/clang-libc-search-path.patch \
+ %D%/packages/patches/clang-3.5-libc-search-path.patch \
%D%/packages/patches/clang-3.8-libc-search-path.patch \
+ %D%/packages/patches/clang-6.0-libc-search-path.patch \
%D%/packages/patches/clang-runtime-asan-build-fixes.patch \
%D%/packages/patches/clang-runtime-esan-build-fixes.patch \
%D%/packages/patches/classpath-aarch64-support.patch \
@@ -619,6 +621,7 @@ dist_patch_DATA = \
%D%/packages/patches/cyrus-sasl-CVE-2013-4122.patch \
%D%/packages/patches/dbus-helper-search-path.patch \
%D%/packages/patches/deja-dup-use-ref-keyword-for-iter.patch \
+ %D%/packages/patches/delly-use-system-libraries.patch \
%D%/packages/patches/dfu-programmer-fix-libusb.patch \
%D%/packages/patches/diffutils-gets-undeclared.patch \
%D%/packages/patches/diffutils-getopt.patch \
diff --git a/gnu/packages.scm b/gnu/packages.scm
index 97e6cb347f..1a37a17342 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
@@ -110,8 +110,25 @@ for system '~a'")
file-name system)))))))
(define %distro-root-directory
- ;; Absolute file name of the module hierarchy.
- (dirname (search-path %load-path "guix.scm")))
+ ;; Absolute file name of the module hierarchy. Since (gnu packages …) might
+ ;; live in a directory different from (guix), try to get the best match.
+ (letrec-syntax ((dirname* (syntax-rules ()
+ ((_ file)
+ (dirname file))
+ ((_ file head tail ...)
+ (dirname (dirname* file tail ...)))))
+ (try (syntax-rules ()
+ ((_ (file things ...) rest ...)
+ (match (search-path %load-path file)
+ (#f
+ (try rest ...))
+ (absolute
+ (dirname* absolute things ...))))
+ ((_)
+ #f))))
+ (try ("gnu/packages/base.scm" gnu/ packages/)
+ ("gnu/packages.scm" gnu/)
+ ("guix.scm"))))
(define %package-module-path
;; Search path for package modules. Each item must be either a directory
@@ -142,7 +159,9 @@ for system '~a'")
(define* (fold-packages proc init
#:optional
- (modules (all-modules (%package-module-path)))
+ (modules (all-modules (%package-module-path)
+ #:warn
+ warn-about-load-error))
#:key (select? (negate hidden-package?)))
"Call (PROC PACKAGE RESULT) for each available package defined in one of
MODULES that matches SELECT?, using INIT as the initial value of RESULT. It
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 408a4a5f41..8d988a08a2 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -471,13 +471,13 @@ detection, and lossless compression.")
(define-public borg
(package
(name "borg")
- (version "1.1.4")
+ (version "1.1.5")
(source
(origin
(method url-fetch)
(uri (pypi-uri "borgbackup" version))
(sha256
- (base32 "1cicqwh85wfp65y00qaq6q4i4jcyy9b66qz5gpl80qc880wab912"))
+ (base32 "0gbdnq7ks46diz6y2pf6wpwkb9hy6hp3immi7jg3h7w72b3ycmj3"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -510,6 +510,17 @@ detection, and lossless compression.")
;; HOME=/homeless-shelter.
(setenv "HOME" "/tmp")
#t)))
+ ;; Later versions of msgpack were disallowed to some warnings and lack
+ ;; of support for Python versions that we don't support anyways. So,
+ ;; it's okay to to keep using more recents versions of msgpack for
+ ;; Borg. Also see the note about msgpack in the list of inputs.
+ ;; https://github.com/borgbackup/borg/issues/3517#issuecomment-357221978
+ (add-before 'build 'adjust-msgpack-dependency
+ (lambda _
+ (substitute* "setup.py"
+ (("msgpack-python>=0.4.6,<0.5.0")
+ "msgpack-python>=0.4.6"))
+ #t))
;; The tests need to be run after Borg is installed.
(delete 'check)
(add-after 'install 'check
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index f557dce8e5..09581d9fde 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,7 +22,9 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system r)
- #:use-module (gnu packages))
+ #:use-module (gnu packages)
+ #:use-module (gnu packages statistics)
+ #:use-module (gnu packages bioinformatics))
(define-public r-hpar
(package
@@ -40,3 +43,30 @@
(description "This package provides a simple interface to and data from
the Human Protein Atlas project.")
(license license:artistic2.0)))
+
+(define-public r-regioner
+ (package
+ (name "r-regioner")
+ (version "1.10.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "regioneR" version))
+ (sha256
+ (base32
+ "1vprp3l929hwzmvgskbhawfgnrymwc9n2rxd16rgagnv1dxnjxfp"))))
+ (properties `((upstream-name . "regioneR")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-memoise" ,r-memoise)
+ ("r-genomicranges" ,r-genomicranges)
+ ("r-bsgenome" ,r-bsgenome)
+ ("r-rtracklayer" ,r-rtracklayer)
+ ("r-genomeinfodb" ,r-genomeinfodb)
+ ("r-iranges" ,r-iranges)))
+ (home-page "https://bioconductor.org/packages/regioneR/")
+ (synopsis "Association analysis of genomic regions")
+ (description "This package offers a statistical framework based on
+customizable permutation tests to assess the association between genomic
+region sets and other genomic features.")
+ (license license:artistic2.0)))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index d4380f86ac..5af4947b68 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -2039,10 +2039,57 @@ normalized and standardized files, multiple visualizations can be created to
identify enrichments with functional annotations of the genome.")
(license license:gpl3+)))
+(define-public delly
+ (package
+ (name "delly")
+ (version "0.7.7")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/tobiasrausch/delly/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0dkwy3pyxmi6dhh1lpsr3698ri5sslw9qz67hfys0bz8dgrqwabj"))
+ (patches (search-patches "delly-use-system-libraries.patch"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; There are no tests to run.
+ #:make-flags '("PARALLEL=1") ; Allow parallel execution at run-time.
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure) ; There is no configure phase.
+ (replace 'install
+ (lambda _
+ (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
+ (templates (string-append (assoc-ref %outputs "out")
+ "/share/delly/templates")))
+ (mkdir-p bin)
+ (mkdir-p templates)
+ (copy-recursively "excludeTemplates" templates)
+ (install-file "src/cov" bin)
+ (install-file "src/delly" bin)
+ (install-file "src/dpe" bin)))))))
+ (native-inputs
+ `(("python" ,python-2)))
+ (inputs
+ `(("boost" ,boost)
+ ("htslib" ,htslib)
+ ("zlib" ,zlib)
+ ("bzip2" ,bzip2)))
+ (home-page "https://github.com/tobiasrausch/delly")
+ (synopsis "Integrated structural variant prediction method")
+ (description "Delly is an integrated structural variant prediction method
+that can discover and genotype deletions, tandem duplications, inversions and
+translocations at single-nucleotide resolution in short-read massively parallel
+sequencing data. It uses paired-ends and split-reads to sensitively and
+accurately delineate genomic rearrangements throughout the genome.")
+ (license license:gpl3+)))
+
(define-public diamond
(package
(name "diamond")
- (version "0.9.18")
+ (version "0.9.19")
(source (origin
(method url-fetch)
(uri (string-append
@@ -2051,7 +2098,7 @@ identify enrichments with functional annotations of the genome.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1vi2nddmy7knrv8gsprwqp6a40k63n3f2dfvx22ipjhrg9xir96f"))))
+ "0c4y8l90vdxmglb0w37y0413v11qzcwg8sdmy9k0c0gr3bsq7dzs"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f ; no "check" target
@@ -3698,7 +3745,7 @@ sequencing tag position and orientation.")
(define-public mafft
(package
(name "mafft")
- (version "7.313")
+ (version "7.394")
(source (origin
(method url-fetch)
(uri (string-append
@@ -3707,7 +3754,7 @@ sequencing tag position and orientation.")
(file-name (string-append name "-" version ".tgz"))
(sha256
(base32
- "0r83qmg2if8mi6jyx3xdf8ar2gcxl7r9nmj98jr7lxym97v61a2k"))))
+ "0bacjkxfg944p5khhyh5rd4y7wkjc9qk4v2jjj442sqlq0f8ar7b"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no automated tests, though there are tests in the read me
@@ -3784,7 +3831,7 @@ sequences).")
(define-public mash
(package
(name "mash")
- (version "1.1.1")
+ (version "2.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -3793,7 +3840,7 @@ sequences).")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "08znbvqq5xknfhmpp3wcj574zvi4p7i8zifi67c9qw9a6ikp42fj"))
+ "00fx14vpmgsijwxd1xql3if934l82v8ckqgjjyyhnr36qb9qrskv"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -3813,7 +3860,9 @@ sequences).")
(modify-phases %standard-phases
(add-after 'unpack 'fix-includes
(lambda _
- (substitute* '("src/mash/Sketch.cpp" "src/mash/CommandFind.cpp")
+ (substitute* '("src/mash/Sketch.cpp"
+ "src/mash/CommandFind.cpp"
+ "src/mash/CommandScreen.cpp")
(("^#include \"kseq\\.h\"")
"#include \"htslib/kseq.h\""))
#t))
@@ -10960,34 +11009,41 @@ droplet sequencing. It has been particularly tailored for Drop-seq.")
(define-public sambamba
(package
(name "sambamba")
- (version "0.6.5")
+ (version "0.6.7-10-g223fa20")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://github.com/lomereiter/sambamba/"
- "archive/v" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/lomereiter/sambamba.git")
+ (commit (string-append "v" version))))
+ (file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "17076gijd65a3f07zns2gvbgahiz5lriwsa6dq353ss3jl85d8vy"))))
+ "1zb9hrxglxqh13ava9wwri30cvf85hjnbn8ccnr8l60a3k5avczn"))))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f ; there is no test target
- #:make-flags
- '("D_COMPILER=ldc2"
- ;; Override "--compiler" flag only.
- "D_FLAGS=--compiler=ldc2 -IBioD -g -d"
- "sambamba-ldmd2-64")
+ `(#:tests? #f ; there is no test target
+ #:parallel-build? #f ; not supported
#:phases
(modify-phases %standard-phases
(delete 'configure)
- (add-after 'unpack 'place-biod
+ (add-after 'unpack 'fix-ldc-version
+ (lambda _
+ (substitute* "gen_ldc_version_info.py"
+ (("/usr/bin/env.*") (which "python")))
+ (substitute* "Makefile"
+ (("\\$\\(shell which ldmd2\\)") (which "ldmd2")))
+ #t))
+ (add-after 'unpack 'place-biod-and-undead
(lambda* (#:key inputs #:allow-other-keys)
(copy-recursively (assoc-ref inputs "biod") "BioD")
+ (copy-recursively (assoc-ref inputs "undead") "undeaD")
#t))
(add-after 'unpack 'unbundle-prerequisites
(lambda _
(substitute* "Makefile"
+ (("htslib/libhts.a lz4/lib/liblz4.a")
+ "-L-lhts -L-llz4")
((" htslib-static lz4-static") ""))
#t))
(replace 'install
@@ -11000,8 +11056,9 @@ droplet sequencing. It has been particularly tailored for Drop-seq.")
(native-inputs
`(("ldc" ,ldc)
("rdmd" ,rdmd)
+ ("python" ,python2-minimal)
("biod"
- ,(let ((commit "1248586b54af4bd4dfb28ebfebfc6bf012e7a587"))
+ ,(let ((commit "c778e4f2d8bacea7499283ce39f5577b232732c6"))
(origin
(method git-fetch)
(uri (git-reference
@@ -11012,7 +11069,20 @@ droplet sequencing. It has been particularly tailored for Drop-seq.")
"-checkout"))
(sha256
(base32
- "1m8hi1n7x0ri4l6s9i0x6jg4z4v94xrfdzp7mbizdipfag0m17g3")))))))
+ "1z90562hg47i63gx042wb3ak2vqjg5z7hwgn9bp2pdxfg3nxrw37")))))
+ ("undead"
+ ,(let ((commit "92803d25c88657e945511f0976a0c79d8da46e89"))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dlang/undeaD.git")
+ (commit commit)))
+ (file-name (string-append "undead-"
+ (string-take commit 9)
+ "-checkout"))
+ (sha256
+ (base32
+ "0vq6n81vzqvgphjw54lz2isc1j8lcxwjdbrhqz1h5gwrvw9w5138")))))))
(inputs
`(("lz4" ,lz4)
("htslib" ,htslib-for-sambamba)))
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index b1534e09a4..98d12a12f6 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Corentin Bocquillon <corentin@nybble.fr>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,6 +24,7 @@
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix build-system cmake)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages python)
@@ -68,6 +70,28 @@ from scons. While scons focuses on being 100% correct when building, bam
makes a few sacrifices to acquire fast full and incremental build times.")
(license license:bsd-3)))
+(define-public bear
+ (package
+ (name "bear")
+ (version "2.3.11")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/rizsotto/Bear/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1m0w0wqnz983l7fpp5p9pdsqr7n3ybrzp8ywjcvn0rihsrzj65j6"))))
+ (build-system cmake-build-system)
+ (home-page "https://github.com/rizsotto/Bear")
+ (synopsis "Tool for generating a compilation database")
+ (description "A JSON compilation database is used in the Clang project to
+provide information on how a given compilation unit is processed. With this,
+it is easy to re-run the compilation with alternate programs. Bear is used to
+generate such a compilation database.")
+ (license license:gpl3+)))
+
(define-public meson
(package
(name "meson")
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index c214f8bf8e..4578961acc 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -273,13 +273,13 @@ format.")
(define-public cppcheck
(package
(name "cppcheck")
- (version "1.82")
+ (version "1.83")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/danmar/cppcheck/archive/"
version ".tar.gz"))
(sha256
- (base32 "0zywpd9hbsx23aj33pk5mbr0fz1ijhqzxlnqgwjfwgg6g2k48i2j"))
+ (base32 "15ghxwmyy09cd9mi008k4jn09c441j86qyaa4dz0is7f5dv5cdkx"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system cmake-build-system)
(home-page "http://cppcheck.sourceforge.net")
@@ -2025,3 +2025,28 @@ retried.")
(define-public python2-pyhamcrest
(package-with-python2 python-pyhamcrest))
+
+(define-public unittest-cpp
+ (package
+ (name "unittest-cpp")
+ (version "2.0.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/unittest-cpp/unittest-cpp/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1fgmna2la7z4pwwy2gd10gpgi2q1fk89npjfvkmzvhkxhyc231bl"))))
+ (arguments
+ `(#:tests? #f)) ; It's run after build automatically.
+ (build-system cmake-build-system)
+ (home-page "https://github.com/unittest-cpp/unittest-cpp")
+ (synopsis "Lightweight unit testing framework for C++")
+ (description "UnitTest++ is a lightweight unit testing framework for C++.
+It was designed to do test-driven development on a wide variety of platforms.
+Simplicity, portability, speed, and small footprint are all very important
+aspects of UnitTest++. UnitTest++ is mostly standard C++ and makes minimal use
+of advanced library and language features, which means it should be easily
+portable to just about any platform.")
+ (license license:expat)))
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index 98632bd412..59561b18bb 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -184,8 +184,8 @@ their dependencies.")
(license l:gpl3+))))
(define-public cuirass
- (let ((commit "326264c8e9445cb94d7fb33aab5ef93dc99ffe57")
- (revision "14"))
+ (let ((commit "f090c0f4786c789070e2eae740914e06ab0ab989")
+ (revision "15"))
(package
(name "cuirass")
(version (string-append "0.0.1-" revision "." (string-take commit 7)))
@@ -197,7 +197,7 @@ their dependencies.")
(file-name (string-append name "-" version))
(sha256
(base32
- "0l6433l63r1zyq9hg89q9l6zgydm7bm35xdvb0g22w1d6wvi48ls"))))
+ "0aj1z9svsjvjlb6gas6032ygwhv7ld4iw7g3as852x9nfd2zck98"))))
(build-system gnu-build-system)
(arguments
'(#:modules ((guix build utils)
diff --git a/gnu/packages/cobol.scm b/gnu/packages/cobol.scm
index 752e028374..75c8c53bbe 100644
--- a/gnu/packages/cobol.scm
+++ b/gnu/packages/cobol.scm
@@ -59,7 +59,7 @@
("ncurses" ,ncurses)
("newcob" ,(origin
(method url-fetch)
- (uri "http://www.itl.nist.gov/div897/ctg/suites/newcob.val.Z")
+ (uri "https://www.itl.nist.gov/div897/ctg/suites/newcob.val.Z")
(sha256
(base32
"1yb1plmv4firfnbb119r2vh1hay221w1ya34nyz0qwsxppfr56hy"))))))
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 10b191051d..6ce0ed1424 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2018 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Raoul Bonnal <ilpuccio.febo@gmail.com>
;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com>
;;; Copyright © 2018 Sahithi Yarlagadda <sahi@swecha.net>
@@ -1027,14 +1027,14 @@ or excesses over a high threshold.")
(define-public r-lmtest
(package
(name "r-lmtest")
- (version "0.9-35")
+ (version "0.9-36")
(source
(origin
(method url-fetch)
(uri (cran-uri "lmtest" version))
(sha256
(base32
- "107br1l7p52wxvazs031f4h5ryply97qywg9dzrkw4ydnvqq4j9g"))))
+ "0sym9sm1vl6bbgq01jhz1plxqmgh8hrgrn7rw0mwvsalcn6id7xy"))))
(build-system r-build-system)
(propagated-inputs
`(("r-zoo" ,r-zoo)))
@@ -1619,14 +1619,14 @@ created using basic graphics.")
(define-public r-broom
(package
(name "r-broom")
- (version "0.4.3")
+ (version "0.4.4")
(source
(origin
(method url-fetch)
(uri (cran-uri "broom" version))
(sha256
(base32
- "119pc2jnxvm13cvd77c7d14p3bn68f4jm310vj3yfck40101n9if"))))
+ "081x87sy6dmfvkgwfjrl5ax51k77ciyzg9x3xql25vdi92rmwj3m"))))
(build-system r-build-system)
(propagated-inputs
`(("r-dplyr" ,r-dplyr)
@@ -2601,16 +2601,16 @@ published results; and a routine for graphical display.")
(define-public r-network
(package
(name "r-network")
- (version "1.13.0")
+ (version "1.13.0.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "network" version))
(sha256
(base32
- "11sg330xb7gcnl3f6lwhhjdabz6mk43828i2np635pqw4s4yl13s"))))
+ "1bbkbqkqf1d7irfwh08c13c2pfypir1ssvlqrln83irqns1ikdv0"))))
(build-system r-build-system)
- (home-page "http://statnet.org/")
+ (home-page "https://statnet.org/")
(synopsis "Classes for relational data")
(description
"This package provides tools to create and modify network objects. The
@@ -2632,7 +2632,7 @@ supports arbitrary vertex/edge/graph attributes.")
(properties
`((upstream-name . "statnet.common")))
(build-system r-build-system)
- (home-page "http://www.statnet.org")
+ (home-page "https://statnet.org")
(synopsis "R scripts and utilities used by the Statnet software")
(description "This package provides non-statistical utilities used by the
software developed by the Statnet Project.")
@@ -2653,7 +2653,7 @@ software developed by the Statnet Project.")
(propagated-inputs
`(("r-network" ,r-network)
("r-statnet-common" ,r-statnet-common)))
- (home-page "http://www.statnet.org")
+ (home-page "https://statnet.org")
(synopsis "Tools for social network analysis")
(description
"This package provides a range of tools for social network analysis,
@@ -3654,3 +3654,53 @@ and Eclat.")
time formats, @code{parse_date} parses dates in unspecified formats,
and @code{format_iso_8601} formats a date in ISO 8601 format.")
(license license:gpl2)))
+
+(define-public r-abc-data
+ (package
+ (name "r-abc-data")
+ (version "1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "abc.data" version))
+ (sha256
+ (base32
+ "1bv1n68ah714ws58cf285n2s2v5vn7382lfjca4jxph57lyg8hmj"))))
+ (properties `((upstream-name . "abc.data")))
+ (build-system r-build-system)
+ (home-page "https://cran.r-project.org/web/packages/abc.data/")
+ (synopsis "Data for Approximate Bayesian Computation (ABC) package")
+ (description
+ "This package contains data which are used by functions of the abc
+package which implements several @dfn{Approximate Bayesian Computation} (ABC)
+algorithms for performing parameter estimation, model selection, and
+goodness-of-fit.")
+ (license license:gpl3+)))
+
+(define-public r-abc
+ (package
+ (name "r-abc")
+ (version "2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "abc" version))
+ (sha256
+ (base32
+ "0ngzaaz2y2s03fhngvwipmy4kq38xrmyddaz6a6l858rxvadrlhb"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-abc-data" ,r-abc-data)
+ ("r-locfit" ,r-locfit)
+ ("r-mass" ,r-mass)
+ ("r-nnet" ,r-nnet)
+ ("r-quantreg" ,r-quantreg)))
+ (home-page "https://cran.r-project.org/web/packages/abc/")
+ (synopsis "Tools for Approximate Bayesian Computation (ABC)")
+ (description
+ "This package implements several @dfn{Approximate Bayesian
+Computation} (ABC) algorithms for performing parameter estimation, model
+selection, and goodness-of-fit. Cross-validation tools are also available for
+measuring the accuracy of ABC estimates, and to calculate the
+misclassification probabilities of different models.")
+ (license license:gpl3+)))
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 00d19a8d12..a574e652eb 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016, 2017, 2018 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
@@ -34,10 +34,10 @@
#:use-module (gnu packages boost)
#:use-module (gnu packages compression)
#:use-module (gnu packages cryptsetup)
+ #:use-module (gnu packages databases)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages image)
- #:use-module (gnu packages pkg-config)
#:use-module (gnu packages libbsd)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
@@ -45,6 +45,8 @@
#:use-module (gnu packages password-utils)
#:use-module (gnu packages perl)
#:use-module (gnu packages perl-check)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
#:use-module (gnu packages readline)
#:use-module (gnu packages search)
#:use-module (gnu packages serialization)
@@ -711,3 +713,49 @@ of magnet links and a wide range of hash sums like CRC32, MD4, MD5, SHA1,
SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R
34.11-94, RIPEMD-160, HAS-160, EDON-R, Whirlpool and Snefru.")
(license (license:non-copyleft "file://COPYING"))))
+
+(define-public botan
+ (package
+ (name "botan")
+ (version "2.5.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://botan.randombit.net/releases/"
+ "Botan-" version ".tgz"))
+ (sha256
+ (base32
+ "06zvwknhwfrkdvq2sybqbqhnd2d4nq2cszlnsddql13z7vh1z8xq"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref %outputs "out"))
+ (lib (string-append out "/lib")))
+ (invoke "python" "./configure.py"
+ (string-append "--prefix=" out)
+ ;; Otherwise, the `botan` executable cannot find
+ ;; libbotan.
+ (string-append "--ldflags=-Wl,-rpath=" lib)
+ "--with-rst2man"
+ ;; Recommended by upstream
+ "--with-zlib" "--with-bzip2" "--with-sqlite3"))))
+ (replace 'check
+ (lambda _ (invoke "./botan-test"))))))
+ (native-inputs
+ `(("python" ,python-minimal-wrapper)
+ ("python-docutils" ,python-docutils)))
+ (inputs
+ `(("sqlite" ,sqlite)
+ ("bzip2" ,bzip2)
+ ("zlib" ,zlib)))
+ (synopsis "Cryptographic library in C++11")
+ (description "Botan is a cryptography library, written in C++11, offering
+the tools necessary to implement a range of practical systems, such as TLS/DTLS,
+PKIX certificate handling, PKCS#11 and TPM hardware support, password hashing,
+and post-quantum crypto schemes. In addition to the C++, botan has a C89 API
+specifically designed to be easy to call from other languages. A Python binding
+using ctypes is included, and several other language bindings are available.")
+ (home-page "https://botan.randombit.net")
+ (license license:bsd-2)))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 1b3941b623..01b897da22 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -12,7 +12,7 @@
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
-;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2016, 2017, 2018 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
@@ -125,7 +125,8 @@
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "004fmcf1w75zhc1x3zc6kc97j4jqn2v5nhk6yb3z3cpfrhzi9j50"))
- (patches (list (search-patch "4store-fix-buildsystem.patch")))))
+ (patches (search-patches "4store-unset-preprocessor-directive.patch"
+ "4store-fix-buildsystem.patch"))))
(build-system gnu-build-system)
(native-inputs
`(("perl" ,perl)
@@ -1650,7 +1651,7 @@ database. Various higher level database abstractions.")
(define-public perl-db-file
(package
(name "perl-db-file")
- (version "1.840")
+ (version "1.841")
(source
(origin
(method url-fetch)
@@ -1660,7 +1661,7 @@ database. Various higher level database abstractions.")
".tar.gz"))
(sha256
(base32
- "1i5jz85z4hpx15lw6ix27pyvrf0ziyh4z33lii4d3wnhz83lg1mp"))))
+ "11fks42kgscpia0mxx4lc9krm7q4gv6w7m5h3m2jr3dl7viv36hn"))))
(build-system perl-build-system)
(inputs `(("bdb" ,bdb)))
(native-inputs `(("perl-test-pod" ,perl-test-pod)))
@@ -1682,14 +1683,14 @@ database. Various higher level database abstractions.")
(define-public lmdb
(package
(name "lmdb")
- (version "0.9.21")
+ (version "0.9.22")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/LMDB/lmdb/archive/"
"LMDB_" version ".tar.gz"))
(sha256
(base32
- "0ndmj07hkm2ic60z1f4rdscxs7pq45hk9fibjyv5nhfclhsvd1qi"))))
+ "0a7a8535csrvw71mrgx680m5d17bnxmmhcccij30idifi1cpi4pk"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
@@ -2038,10 +2039,16 @@ implementation for Python.")
(base32 "12dqam1gc1v93l0bj0vlpvjqppki6y1hqrlznywxnw0rrz9pb002"))))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f)) ; Tests require a network connection.
+ `(#:tests? #f ; Tests require a network connection.
+ ;; TODO: Removing the libsrc/zlib source directory breaks the build.
+ ;; This indicates that the internal zlib code may still be used.
+ #:configure-flags '("--without-internal-zlib"
+ "--with-readline")))
(inputs
`(("openssl" ,openssl)
- ("net-tools" ,net-tools)))
+ ("net-tools" ,net-tools)
+ ("readline" ,readline)
+ ("zlib" ,zlib)))
(home-page "http://vos.openlinksw.com/owiki/wiki/VOS/")
(synopsis "Multi-model database system")
(description "Virtuoso is a scalable cross-platform server that combines
diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
index 3c3189e073..01df30c558 100644
--- a/gnu/packages/debian.scm
+++ b/gnu/packages/debian.scm
@@ -1,4 +1,5 @@
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; 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
@@ -111,7 +112,7 @@ contains the archive keys used for that.")
(define-public debootstrap
(package
(name "debootstrap")
- (version "1.0.93")
+ (version "1.0.95")
(source
(origin
(method url-fetch)
@@ -119,7 +120,7 @@ contains the archive keys used for that.")
name "_" version ".tar.gz"))
(sha256
(base32
- "1nyp9fwb7xrk1vin81dmgx2g9rb52yg4gwz4rcx97gamw4mlvbfd"))))
+ "1xpd1yblcgwhri64hzgxhalpf5j8gqbmkrsm1fs0pbwiy0wdz0ry"))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index 4334203f7b..d09280a3d4 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -211,7 +211,7 @@ It comes with a German-English dictionary with approximately 270,000 entries.")
(define-public grammalecte
(package
(name "grammalecte")
- (version "0.6.2")
+ (version "0.6.3.1")
(source
(origin
(method url-fetch/zipbomb)
@@ -219,8 +219,21 @@ It comes with a German-English dictionary with approximately 270,000 entries.")
"Grammalecte-fr-v" version ".zip"))
(sha256
(base32
- "0pvblclvbxbfgmq0cvmpmzpf6bi6r41arndwprl7ab9kci9hi8j2"))))
+ "0jlzrhpx9qvjdq679w188p86x09yfjf3l0h4scjl9w26yyp53gr8"))))
(build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-setup
+ ;; Fix typos in "setup.py". In particular, add the new
+ ;; "graphspell" module introduced in 0.6.2. Reported upstream:
+ ;; <https://www.dicollecte.org/thread.php?prj=fr&t=709>
+ (lambda _
+ (substitute* "setup.py"
+ (("packages=\\['grammalecte', 'grammalecte.fr'\\],")
+ "packages=['grammalecte', 'grammalecte.fr', 'grammalecte.graphspell'],")
+ (("_dictionaries/French.bdic") "graphspell/_dictionaries/fr.bdic"))
+ #t)))))
(home-page "https://www.dicollecte.org")
(synopsis "French spelling and grammar checker")
(description "Grammalecte is a grammar checker dedicated to the French
diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 4bb2e69049..d42afb2285 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -809,3 +810,25 @@ provides features like a web browseable API and authentication policies.")
"@code{django-crispy-forms} lets you easily build, customize and reuse
forms using your favorite CSS framework, without writing template code.")
(license license:expat)))
+
+(define-public python-django-override-storage
+ (package
+ (name "python-django-override-storage")
+ (version "0.1.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "django-override-storage" version))
+ (sha256
+ (base32
+ "0sqz1mh0yn8b1bzz2gr2azfiynljigm5gkzavp5n17zd3j2jg57x"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-django" ,python-django)))
+ (home-page
+ "https://github.com/danifus/django-override-storage")
+ (synopsis "Django test helpers to manage file storage side effects")
+ (description
+ "This project provides tools to help reduce the side effects of using
+FileFields during tests.")
+ (license license:expat)))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 0011ee057b..7a5bef2a70 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -21,7 +21,7 @@
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
-;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com>
+;;; Copyright © 2017, 2018 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2017 George Clemmer <myglc2@gmail.com>
;;; Copyright © 2017 Feng Shu <tumashu@163.com>
@@ -29,9 +29,11 @@
;;; Copyright © 2017, 2018 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org>
;;; Copyright © 2017, 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018 Sohom Bhattacharjee <soham.bhattacharjee15@gmail.com>
+;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -99,6 +101,7 @@
#:use-module (gnu packages fribidi)
#:use-module (gnu packages gd)
#:use-module (gnu packages fontutils)
+ #:use-module (gnu packages password-utils)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match))
@@ -383,7 +386,7 @@ when typing parentheses directly or commenting out code line by line.")
(define-public git-modes
(package
(name "emacs-git-modes")
- (version "1.2.6")
+ (version "1.2.7")
(source (origin
(method url-fetch)
(uri (string-append
@@ -392,7 +395,7 @@ when typing parentheses directly or commenting out code line by line.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "18z04wn5ird9l0h6n6x97v0kyzdj73832bj9qakm3fjjl7vcn0pw"))))
+ "1mzl70s0xyysnjq1j10mc5vn9i022n5vd82kxsgp4xxqq7gc4qnx"))))
(build-system emacs-build-system)
(home-page "https://github.com/magit/git-modes")
(synopsis "Emacs major modes for Git configuration files")
@@ -3911,7 +3914,7 @@ If you want to mark a folder manually as a project just create an empty
(define-public emacs-elfeed
(package
(name "emacs-elfeed")
- (version "2.2.0")
+ (version "2.3.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/skeeto/elfeed/archive/"
@@ -3919,7 +3922,7 @@ If you want to mark a folder manually as a project just create an empty
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0d7i93l3b0ck3iad9ddqp7sqa8w16hnamrby8bwvl316rqk4lzlf"))))
+ "1fd1mx0q1qb9vgdzls5ppxfriyid48blg8smgjspiazp7kxakzxv"))))
(build-system emacs-build-system)
(arguments
`(#:phases
@@ -4164,7 +4167,7 @@ the file buffer.")
(define-public emacs-helm
(package
(name "emacs-helm")
- (version "2.8.5")
+ (version "2.9.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -4173,7 +4176,7 @@ the file buffer.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "15xlnjm9rsbn0xq7xc09y52h2kn41zwn7ldryammf6i46wl02kq3"))))
+ "1798gn0za11cxdbi436javfczv4abniccxcl0jppl463r8lzb8is"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-async" ,emacs-async)
@@ -4193,7 +4196,7 @@ not tied in the trap of backward compatibility.")
(define-public emacs-helm-swoop
(package
(name "emacs-helm-swoop")
- (version "1.7.2")
+ (version "1.7.4")
(source (origin
(method url-fetch)
(uri (string-append
@@ -4203,7 +4206,7 @@ not tied in the trap of backward compatibility.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1z34pfi0gsk054pxr906ilaalaw0xz3s536163gf9ykkwmc2356d"))))
+ "1ssivsjzlnkg049cg993l8fp09l5nhpz6asj7w5c91zp5kpc6fh7"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-helm" ,emacs-helm)))
@@ -4511,14 +4514,14 @@ passive voice.")
(name "emacs-org")
;; emacs-org-contrib inherits from this package. Please update its sha256
;; checksum as well.
- (version "20180327")
+ (version "9.1.9")
(source (origin
(method url-fetch)
- (uri (string-append "https://orgmode.org/elpa/org-"
+ (uri (string-append "http://elpa.gnu.org/packages/org-"
version ".tar"))
(sha256
(base32
- "0xmlzlxf15996sd3gj3naiz383d17ngjd9963p4h9kssrkjlwljy"))))
+ "16yr0srfzsrzv2b1f2wjk8gb2pyhsgj2hxbscixirkxqz674c5cl"))))
(build-system emacs-build-system)
(home-page "https://orgmode.org/")
(synopsis "Outline-based notes management and organizer")
@@ -4532,13 +4535,14 @@ reproducible research.")
(package
(inherit emacs-org)
(name "emacs-org-contrib")
+ (version "20180327")
(source (origin
(method url-fetch)
(uri (string-append "https://orgmode.org/elpa/org-plus-contrib-"
- (package-version emacs-org) ".tar"))
+ version ".tar"))
(sha256
(base32
- "1nqn7m1x9w5y356ylv5hia6v62pqfz9g3rzjbiffjxyyc34xvpfm"))))
+ "1y1nn0bxnh9y4a3zrqng8n639j5da5387q2314sr3a8ggy1nb93s"))))
(arguments
`(#:modules ((guix build emacs-build-system)
(guix build utils)
@@ -4559,8 +4563,7 @@ reproducible research.")
string=? contrib-files org+contrib-files)))
(with-directory-excursion
(string-append
- out "/share/emacs/site-lisp/guix.d/org-contrib-"
- ,(package-version emacs-org))
+ out "/share/emacs/site-lisp/guix.d/org-contrib-" ,version)
(for-each delete-file duplicates))
#t))))))
(propagated-inputs
@@ -7425,3 +7428,125 @@ the same values you get in a terminal.")
"Deft is an Emacs mode for quickly browsing, filtering, and editing
directories of plain text notes, inspired by Notational Velocity.")
(license license:bsd-3)))
+
+(define-public emacs-anzu
+ (package
+ (name "emacs-anzu")
+ (version "0.62")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/syohex/emacs-anzu/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "16cg3897x5znbmgk7sdy0qyd0fbic9dmmz0dchq2vz5z29yhg4cz"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/syohex/emacs-anzu")
+ (synopsis "Show number of matches in mode-line while searching")
+ (description
+ "Anzu provides a minor mode which displays \"current match/total
+matches\" in the mode line in various search modes. This is an Emacs port of
+Anzu.zim.")
+ (license license:gpl3+)))
+
+(define-public emacs-emmet-mode
+ (package
+ (name "emacs-emmet-mode")
+ (version "1.0.8")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/smihica/emmet-mode"
+ "/archive/" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0g3p22yabfcp98cfv9dgl9il2m2pd53isq2q11vb3s7qyn31f7zj"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/smihica/emmet-mode")
+ (synopsis "Unofficial Emmet's support for Emacs")
+ (description
+ "Unfold CSS-selector-like expressions to markup. It is intended to be
+used with SGML-like languages: XML, HTML, XHTML, XSL, etc.")
+ (license license:gpl3+)))
+
+(define-public emacs-password-store
+ (package
+ (name "emacs-password-store")
+ (version "1.7.1")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append "https://git.zx2c4.com/password-store/snapshot/"
+ "password-store-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0scqkpll2q8jhzcgcsh9kqz0gwdpvynivqjmmbzax2irjfaiklpn"))))
+ (build-system emacs-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'extract-el-file
+ (lambda _
+ (copy-file "contrib/emacs/password-store.el" "password-store.el")
+ (delete-file-recursively "contrib")
+ (delete-file-recursively "man")
+ (delete-file-recursively "src")
+ (delete-file-recursively "tests"))))))
+ (propagated-inputs
+ `(("emacs-f" ,emacs-f)
+ ("emacs-s" ,emacs-s)
+ ("password-store" ,password-store)))
+ (home-page "https://git.zx2c4.com/password-store/tree/contrib/emacs")
+ (synopsis "Password store (pass) support for Emacs")
+ (description
+ "This package provides functions for working with pass (\"the
+standard Unix password manager\").")
+ (license license:gpl2+)))
+
+(define-public emacs-pass
+ (package
+ (name "emacs-pass")
+ (version "1.7")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/NicolasPetton/pass/archive/"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0zlx9v6z0q3w9qhq9bq6vb7sli4c9x7qccm2wq55j0nw7bwy2yvj"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-password-store" ,emacs-password-store)
+ ("emacs-f" ,emacs-f)))
+ (home-page "https://github.com/NicolasPetton/pass")
+ (synopsis "Major mode for @file{password-store.el}")
+ (description "This is a major mode for managing password-store (pass)
+keychains. The keychain entries are displayed in a directory-like structure
+and can be consulted and modified.")
+ (license license:gpl3+)))
+
+(define-public emacs-evil-anzu
+ (package
+ (name "emacs-evil-anzu")
+ (version "0.03")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/syohex/emacs-evil-anzu"
+ "/archive/" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "032hh2946z529cizqsg8pm6cpn5qdj8lfk3qskmx6xv3g2ra56ns"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-evil" ,emacs-evil)
+ ("emacs-anzu" ,emacs-anzu)))
+ (home-page "https://github.com/syohex/emacs-evil-anzu")
+ (synopsis "Anzu for evil-mode")
+ (description "@code{anzu} provides a minor mode that displays the current
+match and total match information in the mode-line in various search modes.")
+ (license license:gpl3+)))
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 9e65d5f46b..b0da0bb423 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -398,7 +398,7 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
(define-public mgba
(package
(name "mgba")
- (version "0.6.1")
+ (version "0.6.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/mgba-emu/mgba/archive/"
@@ -406,7 +406,7 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0xmq1q1j71hnpd49wm91cqq8w5zdhb921cm17jchp4qjmaqgwy3w"))
+ "0x7a9i1jdic3haf5fkd7x16vwqpf4jqdiw56a5fc4gx4jhn9yhi2"))
(modules '((guix build utils)))
(snippet
;; Make sure we don't use the bundled software.
@@ -1061,7 +1061,7 @@ emulation community. It provides highly accurate emulation.")
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0fdribjfc5zz9brzhqcxw6m76kvyg13l67aiigszv4wsjd5j3gpz"))))
+ (base32 "1wykv0w0kdlh7lh0k1ig0lpk5vh4c7r19jlfa9103jmjlryrq679"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no tests
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index c236d8cd67..ee62eb5a8b 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -568,43 +568,24 @@ image, etc. Besides viewing Gerbers, you may also view Excellon drill files
as well as pick-place files.")
(license license:gpl2+)))
-(define-public ao
- (let ((commit "fb288c945aa7e30d9be10a564edad7e1b6a6c1ae")
- (revision "1"))
+(define-public libfive
+ (let ((commit "9d857d1923abecb0e5935b9287d22661f6efaac5")
+ (revision "2"))
(package
- (name "ao-cad") ;XXX: really "ao", but it collides with libao
+ (name "libfive")
(version (git-version "0" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/mkeeter/ao")
+ (url "https://github.com/libfive/libfive")
(commit commit)))
(sha256
(base32
- "0syplfqiq7ng7md44yriq5cz41jp8q9z3pl2iwkkllds6p9ylyal"))
- (file-name (git-file-name name version))
- (patches (search-patches "ao-cad-aarch64-support.patch"))
- (modules '((guix build utils)))
- (snippet
- ;; Remove bundled libraries: Eigen, glm, and catch. TODO:
- ;; Unbundle efsw <https://github.com/diegostamigni/efsw>.
- '(begin
- (delete-file-recursively "vendor")
-
- ;; Use #include <catch.hpp>.
- (substitute* (find-files "." "\\.[ch]pp$")
- (("catch/catch\\.hpp")
- "catch.hpp"))
- #t))))
+ "1r40kyx30wz31cwwlfvfh7fgqkxq3n8dxhswpi9qpf4r5h3l8wsn"))
+ (file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments
- `(;; Have the RUNPATH of libao.so point to $libdir, where libefsw.so
- ;; lives.
- #:configure-flags (list (string-append "-DCMAKE_SHARED_LINKER_FLAGS="
- "-Wl,-rpath="
- (assoc-ref %outputs "out")
- "/lib"))
-
+ `(#:tests? #f ; no "test" target
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'remove-native-compilation
@@ -618,64 +599,29 @@ as well as pick-place files.")
(setenv "CPLUS_INCLUDE_PATH"
(string-append eigen "/include/eigen3:"
(getenv "CPLUS_INCLUDE_PATH")))
- #t)))
- (add-after 'install 'install-guile-bindings
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; Install the Guile bindings (the build system only installs
- ;; libao.so.)
- (let* ((out (assoc-ref outputs "out"))
- (moddir (string-append out "/share/guile/site/2.0")))
- (install-file "bind/libao.so"
- (string-append out "/lib"))
-
- ;; Go to the source directory.
- (with-directory-excursion ,(string-append "../"
- name "-" version
- "-checkout")
- (substitute* "bind/guile/ao/sys/libao.scm"
- (("\\(define libao \\(dynamic-link .*$")
- (string-append "(define libao (dynamic-link \""
- out "/lib/libao\")) ;")))
-
- (copy-recursively "bind/guile/ao" (string-append moddir "/ao"))
-
- (substitute* "bin/ao-guile"
- (("\\(add-to-load-path .*")
- (string-append "(add-to-load-path \"" moddir "\")")))
-
- (install-file "bin/ao-guile"
- (string-append out "/bin"))
-
- ;; Allow Ao to dlopen the relevant GL libraries. Otherwise
- ;; it fails with:
- ;; Couldn't find current GLX or EGL context.
- (let ((mesa (assoc-ref inputs "mesa")))
- (wrap-program (string-append out "/bin/ao-guile")
- `("LD_LIBRARY_PATH" ":" prefix
- (,(string-append mesa "/lib")))))
- #t)))))))
+ #t))))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("boost" ,boost)
("catch" ,catch-framework)
("libpng" ,libpng)
- ("glfw" ,glfw)
- ("libepoxy" ,libepoxy)
- ("mesa" ,mesa)
+ ("qtbase" ,qtbase)
("eigen" ,eigen)
- ("glm" ,glm)
- ("guile" ,guile-2.0)))
- (home-page "http://www.mattkeeter.com/projects/ao/")
+ ("guile" ,guile-2.2)))
+ (home-page "https://libfive.com")
(synopsis "Tool for programmatic computer-aided design")
(description
- "Ao is a tool for programmatic computer-aided design (CAD). In Ao,
-solid models are defined as Scheme scripts, and there are no opaque function
-calls into the geometry kernel: everything is visible to the user. Even
-fundamental, primitive shapes are represented as code in the user-level
+ "Libfive is a tool for programmatic computer-aided design (CAD). In
+libfive, solid models are defined as Scheme scripts, and there are no opaque
+function calls into the geometry kernel: everything is visible to the user.
+Even fundamental, primitive shapes are represented as code in the user-level
language.")
(license (list license:lgpl2.1+ ;library
- license:gpl2+))))) ;Guile bindings
+ license:gpl2+))))) ;Guile bindings and GUI
+
+(define-public ao
+ (deprecated-package "ao-cad" libfive))
;; We use kicad from a git commit, because support for boost 1.61.0 has been
;; recently added.
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index f296afec5a..e158cab2be 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -431,13 +431,13 @@ resolution.")
(define-public libotf
(package
(name "libotf")
- (version "0.9.13")
+ (version "0.9.16")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/m17n/libotf-"
version ".tar.gz"))
(sha256
- (base32 "0239zvfan56w7vrppriwy77fzb10ag9llaz15nsraps2a2x6di3v"))))
+ (base32 "0sq6g3xaxw388akws6qrllp3kp2sxgk2dv4j79k6mm52rnihrnv8"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index a0134c37fe..0f2a3d66e3 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -766,7 +766,7 @@ interfaces, based on the useradd, usermod and userdel commands.")
(define-public libmbim
(package
(name "libmbim")
- (version "1.12.4")
+ (version "1.16.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -774,7 +774,7 @@ interfaces, based on the useradd, usermod and userdel commands.")
name "-" version ".tar.xz"))
(sha256
(base32
- "0flpgzsqpjgybjkx4smbb4rjxf2w1xgd1v9gmz61rvl89qasznbv"))))
+ "1hpsjc7bzmakzvj8z9fffvqknc38fa8ridpmklq46jyxxnz51jn8"))))
(build-system gnu-build-system)
(native-inputs
`(("glib:bin" ,glib "bin") ; for glib-mkenums
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index db13ac0eff..d73c536d4c 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -386,7 +386,7 @@ support.")
(define-public tiled
(package
(name "tiled")
- (version "1.1.3")
+ (version "1.1.4")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/bjorn/tiled/archive/v"
@@ -394,7 +394,7 @@ support.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "08bxl6vc7ynnji4r6ij9ayr2jixvfhv4daplw5p96s0gkhdqd90k"))))
+ "0xb3zwcdk7khdrza6spl02g5n2xbij6nbszv8vi27vagjnmz1wxh"))))
(build-system gnu-build-system)
(inputs
`(("qtbase" ,qtbase)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index cb7d6c8c5b..fda8c5c661 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2578,7 +2578,7 @@ and the GLib main loop, to integrate well with GNOME applications.")
(define-public libsecret
(package
(name "libsecret")
- (version "0.18.5")
+ (version "0.18.6")
(source (origin
(method url-fetch)
(uri (string-append
@@ -2587,7 +2587,7 @@ and the GLib main loop, to integrate well with GNOME applications.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1cychxc3ff8fp857iikw0n2s13s2mhw2dn1mr632f7w3sn6vvrww"))))
+ "0vynag97a9bnnb8ipah45av8xg8jzmhd572rw3zj78s1pa8ciysy"))))
(build-system gnu-build-system)
(outputs '("out" "doc"))
(arguments
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 288e14ebcd..939bdf9148 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -186,13 +186,16 @@ authentication and support for SSL3 and TLS.")
(define-public gnurl
(package
(name "gnurl")
- (version "7.58.0")
+ (version "7.59.0")
(source (origin
(method url-fetch)
- (uri (string-append "mirror://gnu/gnunet/" name "-" version ".tar.xz"))
+ (uri (list (string-append "mirror://gnu/gnunet/" name "-" version ".tar.xz")
+ ;; TODO: Remove once gnurl-7.59.0 release has synced to ftp.gnu.org
+ (string-append "https://ftp.n0.is/pub/releases/gnurl/"
+ name "-" version ".tar.xz")))
(sha256
(base32
- "1yyswsz0csplqi8hlhqaxlafqn5kh5016j8k2gaxziv4cb343znx"))))
+ "0fdwqxs4crzj1nbq3lz0xbqjiiqpq16vpll09gryyq4c1y6lbyib"))))
(build-system gnu-build-system)
(outputs '("out"
"doc")) ; 1.5 MiB of man3 pages
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 08c78ec790..6405c985f5 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -38,6 +38,7 @@
#:use-module (gnu packages base)
#:use-module (gnu packages curl)
#:use-module (gnu packages crypto)
+ #:use-module (gnu packages emacs)
#:use-module (gnu packages openldap)
#:use-module (gnu packages perl)
#:use-module (gnu packages perl-check)
@@ -740,6 +741,16 @@ including tools for signing keys, keyring analysis, and party preparation.
(ftp-directory . "/gcrypt/pinentry")
(upstream-name . "pinentry")))))
+(define-public pinentry-emacs
+ (package
+ (inherit pinentry-tty)
+ (name "pinentry-emacs")
+ (arguments
+ `(#:configure-flags '("--enable-pinentry-emacs")))
+ (description
+ "Pinentry provides a console and an Emacs interface that allows users to
+enter a passphrase when required by @code{gpg} or other software.")))
+
(define-public pinentry-gtk2
(package
(inherit pinentry-tty)
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index e07c9f4acb..e913c25904 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -147,7 +147,7 @@ between two other data points.")
(define-public gama
(package
(name "gama")
- (version "1.21")
+ (version "1.22")
(source
(origin
(method url-fetch)
@@ -155,7 +155,7 @@ between two other data points.")
version ".tar.gz"))
(sha256
(base32
- "0yy8czw5dldbw1qj5v2h2wfh397bfx5wd3lrrgs8m1qdf1njnhcq"))))
+ "01q3g2zi5d5r2l10hc8jwwz6w61dwkv7nyj9xd67vvq0gajw0a7r"))))
(build-system gnu-build-system)
(arguments '(#:parallel-tests? #f)) ; race condition
(native-inputs
diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm
index 35ea129326..2b7438c902 100644
--- a/gnu/packages/graphviz.scm
+++ b/gnu/packages/graphviz.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com>
+;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -43,6 +44,7 @@
#:use-module (gnu packages gd)
#:use-module (gnu packages swig)
#:use-module (gnu packages python)
+ #:use-module (gnu packages tex)
#:use-module ((guix licenses) #:prefix license:))
(define-public graphviz
@@ -240,3 +242,36 @@ graphs in Graphviz's DOT language, written in pure Python.")
(define-public python2-pydot
(package-with-python2 python-pydot))
+
+(define-public dot2tex
+ (package
+ (name "dot2tex")
+ (version "2.9.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "dot2tex" version))
+ (sha256
+ (base32
+ "0jhdwp0wv2h0xb7j2s5xiv7i8yaqgfpwwqcyrjvaxkfwsynm8gkx"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2))
+ (inputs
+ `(("texlive-latex-preview" ,texlive-latex-preview)
+ ("graphviz" ,graphviz)))
+ (propagated-inputs
+ `(("python-pyparsing" ,python2-pyparsing)))
+ (home-page "https://github.com/kjellmf/dot2tex")
+ (synopsis "Graphviz to LaTeX converter")
+ (description
+ "The purpose of @code{dot2tex} is to give graphs generated by Graphviz a
+more LaTeX friendly look and feel. This is accomplished by converting
+@code{xdot} output from Graphviz to a series of PSTricks or PGF/TikZ commands.
+This approach allows:
+
+@itemize @bullet
+@item Typesetting labels with LaTeX, allowing mathematical notation
+@item Using native PSTricks and PGF/TikZ commands for drawing arrows
+@item Using backend specific styles to customize the output
+@end itemize")
+ (license license:expat)))
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index ef4f5e15ee..58b0abcecf 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -416,7 +417,7 @@ compression formats through the use of the libav library.")
(define-public python-gst
(package
(name "python-gst")
- (version "1.12.4")
+ (version "1.12.5")
(source (origin
(method url-fetch)
(uri (string-append
@@ -424,7 +425,7 @@ compression formats through the use of the libav library.")
"gst-python-" version ".tar.xz"))
(sha256
(base32
- "1sm3dy10klf6i3w6a6mz0rnm29l2lxci5hr8346496jwc7v6mki0"))))
+ "1x8g9mdkf6hzhlkx6nhrrp607p8g4zkhl3crs8vh504zpbbf71ip"))))
(build-system gnu-build-system)
(arguments
;; XXX: Factorize python-sitedir with python-build-system.
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index a9c0a21fce..e008e3b167 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -1951,8 +1951,8 @@ is not available for Guile 2.0.")
(license license:lgpl3+)))
(define-public guile-git
- (let ((revision "5")
- (commit "2bb9fbbf93cf93496718efc85ad9394aefa21029"))
+ (let ((revision "6")
+ (commit "36f93c174adc396c90ec3a6923487f0444fe5d69"))
(package
(name "guile-git")
(version (string-append "0.0-" revision "." (string-take commit 7)))
@@ -1962,14 +1962,15 @@ is not available for Guile 2.0.")
(uri (git-reference (url home-page) (commit commit)))
(sha256
(base32
- "0z3v0v89dyp35zx2h2gsq6v29lba3wbzabc5n2g4hx2fcb6q5qqy"))
+ "0z1dvn0scx59pbgjkpacam7p5n7630z4qm8fazim7ixq9xv3s8wx"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
;; FIXME: On i686, bytestructures miscalculates the offset
;; of the 'old-file' and 'new-file' fields within the
- ;; '%diff-delta' structure.
+ ;; '%diff-delta' structure. See
+ ;; <https://github.com/TaylanUB/scheme-bytestructures/issues/30>.
,@(if (string=? (%current-system) "x86_64-linux")
'()
'((add-before 'check 'skip-tests
diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index 9593e4c109..6b1d769313 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -27,6 +27,7 @@
(define-module (gnu packages haskell-check)
#:use-module (gnu packages)
#:use-module (gnu packages haskell)
+ #:use-module (gnu packages haskell-crypto)
#:use-module (guix build-system haskell)
#:use-module (guix download)
#:use-module ((guix licenses) #:prefix license:)
@@ -793,3 +794,33 @@ Haskell, inspired by the Ruby library RSpec.")
"Nanospec is a lightweight implementation of a subset of Hspec's API with
minimal dependencies.")
(license license:expat)))
+
+(define-public ghc-crypto-cipher-tests
+ (package
+ (name "ghc-crypto-cipher-tests")
+ (version "0.0.11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "crypto-cipher-tests-" version "/"
+ "crypto-cipher-tests-" version ".tar.gz"))
+ (sha256
+ (base32
+ "19wqignlq90qwpam01hnmmrxaxh5lkax9l1l6rlbi4a07nvp1dnz"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-quickcheck" ,ghc-quickcheck)
+ ("ghc-mtl" ,ghc-mtl)
+ ("ghc-hunit" ,ghc-hunit)
+ ("ghc-test-framework" ,ghc-test-framework)
+ ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
+ ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
+ ("ghc-byteable" ,ghc-byteable)
+ ("ghc-securemem" ,ghc-securemem)
+ ("ghc-crypto-cipher-types" ,ghc-crypto-cipher-types)))
+ (home-page "https://github.com/vincenthz/hs-crypto-cipher")
+ (synopsis "Generic cryptography cipher tests for Haskell")
+ (description " This Haskell package contains generic tests for
+cryptographic ciphers, and is used by the test runners of various Haskell
+implementations of cryptographic ciphers.")
+ (license license:bsd-3)))
diff --git a/gnu/packages/haskell-crypto.scm b/gnu/packages/haskell-crypto.scm
index e4d4e56388..b0be30cb6b 100644
--- a/gnu/packages/haskell-crypto.scm
+++ b/gnu/packages/haskell-crypto.scm
@@ -530,3 +530,133 @@ list validation.")
"This package provides a library to handle system accessors and storage
for X.509 certificates.")
(license license:bsd-3)))
+
+(define-public ghc-crypto-cipher-types
+ (package
+ (name "ghc-crypto-cipher-types")
+ (version "0.0.9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "crypto-cipher-types-" version "/"
+ "crypto-cipher-types-" version ".tar.gz"))
+ (sha256
+ (base32
+ "03qa1i1kj07pfrxsi7fiaqnnd0vi94jd4jfswbmnm4gp1nvzcwr0"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-byteable" ,ghc-byteable)
+ ("ghc-securemem" ,ghc-securemem)))
+ (home-page "https://github.com/vincenthz/hs-crypto-cipher")
+ (synopsis "Generic cryptography cipher types for Haskell")
+ (description "This Haskell package provides basic typeclasses and types
+for symmetric ciphers.")
+ (license license:bsd-3)))
+
+(define-public ghc-cipher-aes
+ (package
+ (name "ghc-cipher-aes")
+ (version "0.2.11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "cipher-aes-" version "/"
+ "cipher-aes-" version ".tar.gz"))
+ (sha256
+ (base32
+ "05ahz6kjq0fl1w66gpiqy0vndli5yx1pbsbw9ni3viwqas4p3cfk"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-byteable" ,ghc-byteable)
+ ("ghc-securemem" ,ghc-securemem)
+ ("ghc-crypto-cipher-types" ,ghc-crypto-cipher-types)))
+ (native-inputs `(("ghc-quickcheck" ,ghc-quickcheck)
+ ("ghc-test-framework" ,ghc-test-framework)
+ ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
+ ("ghc-crypto-cipher-tests" ,ghc-crypto-cipher-tests)))
+ (home-page "https://github.com/vincenthz/hs-cipher-aes")
+ (synopsis "AES cipher implementation with advanced mode of operations for
+Haskell")
+ (description "This Haskell package provides AES cipher implementation.
+
+The modes of operations available are ECB (Electronic code book), CBC (Cipher
+block chaining), CTR (Counter), XTS (XEX with ciphertext stealing),
+GCM (Galois Counter Mode).
+
+The AES implementation uses AES-NI when available (on x86 and x86-64
+architecture), but fallback gracefully to a software C implementation.
+
+The software implementation uses S-Boxes, which might suffer for cache timing
+issues. However do notes that most other known software implementations,
+including very popular one (openssl, gnutls) also uses similar
+implementation. If it matters for your case, you should make sure you have
+AES-NI available, or you'll need to use a different implementation.")
+ (license license:bsd-3)))
+
+(define-public ghc-crypto-random
+ (package
+ (name "ghc-crypto-random")
+ (version "0.0.9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "crypto-random-" version "/"
+ "crypto-random-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0139kbbb2h7vshf68y3fvjda29lhj7jjwl4vq78w4y8k8hc7l2hp"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-securemem" ,ghc-securemem)
+ ("ghc-vector" ,ghc-vector)))
+ (home-page "https://github.com/vincenthz/hs-crypto-random")
+ (synopsis "Simple cryptographic random related types for Haskell")
+ (description "Simple cryptographic random related types: a safe
+abstraction for CPRNGs.")
+ (license license:bsd-3)))
+
+(define-public ghc-cprng-aes
+ (package
+ (name "ghc-cprng-aes")
+ (version "0.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "cprng-aes-" version "/"
+ "cprng-aes-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1wr15kbmk1g3l8a75n0iwbzqg24ixv78slwzwb2q6rlcvq0jlnb4"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-byteable" ,ghc-byteable)
+ ("ghc-crypto-random" ,ghc-crypto-random)
+ ("ghc-cipher-aes" ,ghc-cipher-aes)))
+ (home-page "https://github.com/vincenthz/hs-cprng-aes")
+ (synopsis "Crypto Pseudo Random Number Generator using AES in counter mode
+in Haskell")
+ (description "Simple crypto pseudo-random-number-generator with really
+good randomness property.
+
+Using ent, a randomness property maker on one 1Mb sample:
+
+@itemize
+@item Entropy = 7.999837 bits per byte.
+@item Optimum compression would reduce the size of this 1048576 byte file by 0
+percent.
+@item Chi square distribution for 1048576 samples is 237.02.
+@item Arithmbetic mean value of data bytes is 127.3422 (127.5 = random).
+@item Monte Carlo value for Pi is 3.143589568 (error 0.06 percent).
+@end itemize
+
+Compared to urandom with the same sampling:
+
+@itemize
+@item Entropy = 7.999831 bits per byte.
+@item Optimum compression would reduce the size of this 1048576 byte file by 0
+percent.
+@item Chi square distribution for 1048576 samples is 246.63.
+@item Arithmetic mean value of data bytes is 127.6347 (127.5 = random).
+@item Monte Carlo value for Pi is 3.132465868 (error 0.29 percent).
+@end itemize")
+ (license license:bsd-3)))
diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 1190bc63a5..1f19f82f3f 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -901,3 +901,281 @@ of a JSON value into a @code{Data.Aeson.Value}.")
(synopsis "Unicode aware uri-encoding")
(description "Unicode aware uri-encoding for Haskell.")
(license license:bsd-3)))
+
+(define-public ghc-path-pieces
+ (package
+ (name "ghc-path-pieces")
+ (version "0.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "path-pieces-" version "/"
+ "path-pieces-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0vx3sivcsld76058925hym2j6hm3g71f0qjr7v59f1g2afgx82q8"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-text" ,ghc-text)))
+ (native-inputs `(("ghc-hunit" ,ghc-hunit)
+ ("ghc-hspec" ,ghc-hspec)
+ ("ghc-quickcheck" ,ghc-quickcheck)))
+ (home-page "https://github.com/yesodweb/path-pieces")
+ (synopsis "Used in Yesod to automatically marshall data in the request path")
+ (description "This Haskell package provides two typeclasses for converting
+Haskell data types to and from route pieces.")
+ (license license:bsd-3)))
+
+(define-public ghc-skein
+ (package
+ (name "ghc-skein")
+ (version "1.0.9.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "skein-" version "/"
+ "skein-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1jdqdk0rz2wnvw735clnj8jh0a9rkrbqjg7vk3w6wczdql6cm0pq"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-cereal" ,ghc-cereal)
+ ("ghc-tagged" ,ghc-tagged)
+ ("ghc-crpto-api" ,ghc-crypto-api)))
+ (native-inputs `(("ghc-hspec" ,ghc-hspec)))
+ (home-page "https://github.com/yesodweb/path-pieces")
+ (synopsis "Skein family of cryptographic hash functions for Haskell")
+ (description "@uref{(http://www.skein-hash.info, Skein} is a family of
+fast secure cryptographic hash functions designed by Niels Ferguson, Stefan
+Lucks, Bruce Schneier, Doug Whiting, Mihir Bellare, Tadayoshi Kohno, Jon
+Callas and Jesse Walker.
+
+This Haskell package uses bindings to the optimized C implementation of Skein.")
+ (license license:bsd-3)))
+
+(define-public ghc-clientsession
+ (package
+ (name "ghc-clientsession")
+ (version "0.9.1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "clientsession-" version "/"
+ "clientsession-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0s6h4ykj16mpf7nlw2iqn2ji0p8g1fn5ni0s7yqaili6vv2as5ar"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-cereal" ,ghc-cereal)
+ ("ghc-tagged" ,ghc-tagged)
+ ("ghc-crypto-api" ,ghc-crypto-api)
+ ("ghc-skein" ,ghc-skein)
+ ("ghc-base64-bytestring" ,ghc-base64-bytestring)
+ ("ghc-entropy" ,ghc-entropy)
+ ("ghc-cprng-aes" ,ghc-cprng-aes)
+ ("ghc-cipher-aes" ,ghc-cipher-aes)
+ ("ghc-crypto-random" ,ghc-crypto-random)
+ ("ghc-setenv" ,ghc-setenv)))
+ (native-inputs `(("ghc-hunit" ,ghc-hunit)
+ ("ghc-hspec" ,ghc-hspec)
+ ("ghc-quickcheck" ,ghc-quickcheck)))
+ (home-page "https://github.com/yesodweb/clientsession/tree/master")
+ (synopsis "Haskell library for securely store session data in a
+client-side cookie")
+ (description "This Haskell package achieves security through AES-CTR
+encryption and Skein-MAC-512-256 authentication. Uses Base64 encoding to
+avoid any issues with characters.")
+ (license license:expat)))
+
+(define-public ghc-yesod-core
+ (package
+ (name "ghc-yesod-core")
+ (version "1.4.37")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "yesod-core-" version "/"
+ "yesod-core-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0ww8hl0cx2g58zrdx3j6d5m2xwhssbajdqws1xk6rzl7rpfm1b9j"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-wai" ,ghc-wai)
+ ("ghc-extra" ,ghc-extra)
+ ("ghc-text" ,ghc-text)
+ ("ghc-shakespeare" ,ghc-shakespeare)
+ ("ghc-blaze-builder" ,ghc-blaze-builder)
+ ("ghc-mtl" ,ghc-mtl)
+ ("ghc-clientsession" ,ghc-clientsession)
+ ("ghc-random" ,ghc-random)
+ ("ghc-cereal" ,ghc-cereal)
+ ("ghc-old-locale" ,ghc-old-locale)
+ ("ghc-unordered-containers" ,ghc-unordered-containers)
+ ("ghc-monad-control" ,ghc-monad-control)
+ ("ghc-transformers-base" ,ghc-transformers-base)
+ ("ghc-cookie" ,ghc-cookie)
+ ("ghc-http-types" ,ghc-http-types)
+ ("ghc-case-insensitive" ,ghc-case-insensitive)
+ ("ghc-parsec" ,ghc-parsec)
+ ("ghc-vector" ,ghc-vector)
+ ("ghc-aeson" ,ghc-aeson)
+ ("ghc-fast-logger" ,ghc-fast-logger)
+ ("ghc-wai-logger" ,ghc-wai-logger)
+ ("ghc-monad-logger" ,ghc-monad-logger)
+ ("ghc-conduit" ,ghc-conduit)
+ ("ghc-resourcet" ,ghc-resourcet)
+ ("ghc-lifted-base" ,ghc-lifted-base)
+ ("ghc-blaze-html" ,ghc-blaze-html)
+ ("ghc-blaze-markup" ,ghc-blaze-markup)
+ ("ghc-data-default" ,ghc-data-default)
+ ("ghc-safe" ,ghc-safe)
+ ("ghc-warp" ,ghc-warp)
+ ("ghc-unix-compat" ,ghc-unix-compat)
+ ("ghc-conduit-extra" ,ghc-conduit-extra)
+ ("ghc-exceptions" ,ghc-exceptions)
+ ("ghc-deepseq-generics" ,ghc-deepseq-generics)
+ ("ghc-mwc-random" ,ghc-mwc-random)
+ ("ghc-primitive" ,ghc-primitive)
+ ("ghc-word8" ,ghc-word8)
+ ("ghc-auto-update" ,ghc-auto-update)
+ ("ghc-semigroups" ,ghc-semigroups)
+ ("ghc-byteable" ,ghc-byteable)))
+ (native-inputs `(("ghc-hspec" ,ghc-hspec)
+ ("ghc-path-pieces" ,ghc-path-pieces)
+ ("ghc-hunit" ,ghc-hunit)
+ ("ghc-hspec-expectations" ,ghc-hspec-expectations)
+ ("ghc-quickcheck" ,ghc-quickcheck)
+ ("ghc-network" ,ghc-network)
+ ("ghc-async" ,ghc-async)
+ ("ghc-streaming-commons" ,ghc-streaming-commons)
+ ("ghc-wai-extra" ,ghc-wai-extra)))
+ (home-page "https://www.yesodweb.com")
+ (synopsis "Core package for the Yesod web framework")
+ (description "This Haskell package provides all core functionality, for
+Yesod, on which other packages can be built. It provides dispatch, handler
+functions, widgets, etc.")
+ (license license:expat)))
+
+(define-public ghc-yesod-persistent
+ (package
+ (name "ghc-yesod-persistent")
+ (version "1.4.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "yesod-persistent-" version "/"
+ "yesod-persistent-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0kiksw46c8ww9yiwl28pkrppx8d6fhsasr0hvmsliqbrp16likj8"))))
+ (build-system haskell-build-system)
+ (arguments `(#:tests? #f)) ; FIXME: hspec-discover not available in PATH.
+ (inputs `(("ghc-yesod-core" ,ghc-yesod-core)
+ ("ghc-persistent" ,ghc-persistent)
+ ("ghc-persistent-template" ,ghc-persistent-template)
+ ("ghc-blaze-builder" ,ghc-blaze-builder)
+ ("ghc-conduit" ,ghc-conduit)
+ ("ghc-resourcet" ,ghc-resourcet)
+ ("ghc-resource-pool" ,ghc-resource-pool)))
+ (native-inputs `(("ghc-hspec" ,ghc-hspec)
+ ("ghc-wai-extra" ,ghc-wai-extra)
+ ("ghc-yesod-core" ,ghc-yesod-core)
+ ("ghc-persistent-sqlite" ,ghc-persistent-sqlite)
+ ("ghc-text" ,ghc-text)))
+ (home-page "http://www.yesodweb.com/")
+ (synopsis "Helpers for using Persistent from Yesod")
+ (description "This Haskell package provides helpers for using Persistent
+from Yesod.")
+ (license license:expat)))
+
+(define-public ghc-yesod-form
+ (package
+ (name "ghc-yesod-form")
+ (version "1.4.16")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/yesod-form/yesod-form-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0lij3m5vn8nvh6y88r1dhk03xmmjwmjzazm307nc2wvc5fmx9p2j"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-yesod-core" ,ghc-yesod-core)
+ ("ghc-yesod-persistent" ,ghc-yesod-persistent)
+ ("ghc-shakespeare" ,ghc-shakespeare)
+ ("ghc-persistent" ,ghc-persistent)
+ ("ghc-data-default" ,ghc-data-default)
+ ("ghc-xss-sanitize" ,ghc-xss-sanitize)
+ ("ghc-blaze-builder" ,ghc-blaze-builder)
+ ("ghc-email-validate" ,ghc-email-validate)
+ ("ghc-text" ,ghc-text)
+ ("ghc-wai" ,ghc-wai)
+ ("ghc-blaze-html" ,ghc-blaze-html)
+ ("ghc-blaze-markup" ,ghc-blaze-markup)
+ ("ghc-attoparsec" ,ghc-attoparsec)
+ ("ghc-byteable" ,ghc-byteable)
+ ("ghc-aeson" ,ghc-aeson)
+ ("ghc-resourcet" ,ghc-resourcet)
+ ("ghc-semigroups" ,ghc-semigroups)
+ ("ghc-network-uri" ,ghc-network-uri)
+ ("ghc-hspec" ,ghc-hspec)))
+ (home-page "https://www.yesodweb.com")
+ (synopsis "Form handling support for Yesod Web Framework")
+ (description "This Haskell package provies a set of basic form inputs such
+as text, number, time, checkbox, select, textarea, etc through the
+@code{Yesod.Form.Fields} module. Also, there is @code{Yesod.Form.Nic} module
+providing richtext field using Nic editor. ")
+ (license license:expat)))
+
+(define-public ghc-yesod
+ (package
+ (name "ghc-yesod")
+ (version "1.4.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/yesod/yesod-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1sg66nq8yaas2m5nqsdrxricvcizd1ik02zqk60sxh3wna08fz16"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-yesod-core" ,ghc-yesod-core)
+ ("ghc-yesod-persistent" ,ghc-yesod-persistent)
+ ("ghc-yesod-form" ,ghc-yesod-form)
+ ("ghc-monad-control" ,ghc-monad-control)
+ ("ghc-wai" ,ghc-wai)
+ ("ghc-wai-extra" ,ghc-wai-extra)
+ ("ghc-warp" ,ghc-warp)
+ ("ghc-blaze-html" ,ghc-blaze-html)
+ ("ghc-blaze-markup" ,ghc-blaze-markup)
+ ("ghc-aeson" ,ghc-aeson)
+ ("ghc-data-default-class" ,ghc-data-default-class)
+ ("ghc-unordered-containers" ,ghc-unordered-containers)
+ ("ghc-yaml" ,ghc-yaml)
+ ("ghc-text" ,ghc-text)
+ ("ghc-monad-logger" ,ghc-monad-logger)
+ ("ghc-fast-logger" ,ghc-fast-logger)
+ ("ghc-conduit" ,ghc-conduit)
+ ("ghc-conduit-extra" ,ghc-conduit-extra)
+ ("ghc-resourcet" ,ghc-resourcet)
+ ("ghc-shakespeare" ,ghc-shakespeare)
+ ("ghc-streaming-commons" ,ghc-streaming-commons)
+ ("ghc-wai-logger" ,ghc-wai-logger)
+ ("ghc-semigroups" ,ghc-semigroups)))
+ (home-page "https://www.yesodweb.com")
+ (synopsis "Framework for creating type-safe, RESTful web applications")
+ (description "The Haskell package package groups together the various
+Yesod related packages into one cohesive whole. This is the version of Yesod,
+whereas most of the core code lives in @code{ghc-yesod-core}.")
+ (license license:expat)))
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index b6f8addf8e..f2c546d08b 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -6253,7 +6253,7 @@ better for some purposes.")
(define-public ghc-conduit-extra
(package
(name "ghc-conduit-extra")
- (version "1.1.13.3")
+ (version "1.1.14")
(source
(origin
(method url-fetch)
@@ -6262,7 +6262,7 @@ better for some purposes.")
version ".tar.gz"))
(sha256
(base32
- "0j3cqpkrn7lbpviv6w0gjh93fjjbh1an2sq0yz7svaawja8civy2"))))
+ "1ij3qcfk7q90fl6gklpy2k5ka9jgzrvs8frq0gy7gdcgyaabqfkg"))))
(build-system haskell-build-system)
(inputs
`(("ghc-conduit" ,ghc-conduit)
@@ -7824,7 +7824,7 @@ bytestrings and their hexademical representation.")
(define-public ghc-psqueues
(package
(name "ghc-psqueues")
- (version "0.2.2.3")
+ (version "0.2.6.0")
(source
(origin
(method url-fetch)
@@ -7833,7 +7833,7 @@ bytestrings and their hexademical representation.")
"psqueues-" version ".tar.gz"))
(sha256
(base32
- "1dd6xv1wjxj1xinx155b14hijw8fafrg4096srzdzj7xyqq7qxbd"))))
+ "0n39s1i88j6s7vvsdhpbhcr3gpbwlzabwcc3nbd7nqb4kb4i0sls"))))
(build-system haskell-build-system)
(inputs
`(("ghc-hashable" ,ghc-hashable)))
@@ -7844,7 +7844,7 @@ bytestrings and their hexademical representation.")
("ghc-test-framework" ,ghc-test-framework)
("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
- (home-page "https://github.com/bttr/psqueues")
+ (home-page "https://github.com/jaspervdj/psqueues")
(synopsis "Pure priority search queues")
(description "The psqueues package provides
@uref{https://en.wikipedia.org/wiki/Priority_queue, Priority Search Queues} in
@@ -8001,6 +8001,7 @@ Double.")
(base32
"1sv5vabsx332v1lpb6v3jv4zrzvpx1n7yprzd8wlcda5vsc5a6zp"))))
(build-system haskell-build-system)
+ (arguments `(#:tests? #f)) ; FIXME: 1 test fails.
(inputs
`(("ghc-vector" ,ghc-vector)
("ghc-vector-th-unbox" ,ghc-vector-th-unbox)))
@@ -8304,7 +8305,8 @@ and regression and autocorrelation analysis.
"0bszq6fijnr4pmadzz89smj7kfmzx0ca3wd9ga8gv0in9jk9vgp1"))))
(build-system haskell-build-system)
(inputs `(("ghc-vector" ,ghc-vector)
- ("ghc-semigroups" ,ghc-semigroups)))
+ ("ghc-semigroups" ,ghc-semigroups)
+ ("ghc-text" ,ghc-text)))
(home-page "https://github.com/snoyberg/mono-traversable")
(synopsis "Typeclasses for dealing with various chunked data
representations for Haskell")
@@ -8865,4 +8867,605 @@ Foundation has the following goals:
@end enumerate\n")
(license license:bsd-3)))
+(define-public ghc-stm-chans
+ (package
+ (name "ghc-stm-chans")
+ (version "3.0.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "stm-chans-" version "/"
+ "stm-chans-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0f27sp09yha43xk9q55sc185jyjs5h7gq2dhsyx6bm9kz9dzqi13"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-stm" ,ghc-stm)))
+ (home-page "https://hackage.haskell.org/package/stm-chans")
+ (synopsis "Additional types of channels for ghc-stm")
+ (description "This Haskell package offers a collection of channel types,
+similar to @code{Control.Concurrent.STM.@{TChan,TQueue@}} but with additional
+features.")
+ (license license:bsd-3)))
+
+(define-public ghc-monad-loops
+ (package
+ (name "ghc-monad-loops")
+ (version "0.4.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "monad-loops-" version "/"
+ "monad-loops-" version ".tar.gz"))
+ (sha256
+ (base32
+ "062c2sn3hc8h50p1mhqkpyv6x8dydz2zh3ridvlfjq9nqimszaky"))))
+ (build-system haskell-build-system)
+ (native-inputs `(("ghc-tasty" ,ghc-tasty)
+ ("ghc-tasty-hunit" ,ghc-tasty-hunit)))
+ (home-page "https://github.com/mokus0/monad-loops")
+ (synopsis "Monadic loops for Haskell")
+ (description "This Haskell package provides some useful control
+operators for looping.")
+ (license license:public-domain)))
+
+(define-public ghc-monad-logger
+ (package
+ (name "ghc-monad-logger")
+ (version "0.3.25.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "monad-logger-" version "/"
+ "monad-logger-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0yv4fsi566zrn30j2g5l901lyqgmflhvzy4hji7ikcbh5d45m920"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-transformers-compat" ,ghc-transformers-compat)
+ ("ghc-text" ,ghc-text)
+ ("ghc-stm" ,ghc-stm)
+ ("ghc-stm-chans" ,ghc-stm-chans)
+ ("ghc-lifted-base" ,ghc-lifted-base)
+ ("ghc-resourcet" ,ghc-resourcet)
+ ("ghc-conduit" ,ghc-conduit)
+ ("ghc-conduit-extra" ,ghc-conduit-extra)
+ ("ghc-fast-logger" ,ghc-fast-logger)
+ ("ghc-transformers-base" ,ghc-transformers-base)
+ ("ghc-monad-control" ,ghc-monad-control)
+ ("ghc-monad-loops" ,ghc-monad-loops)
+ ("ghc-mtl" ,ghc-mtl)
+ ("ghc-blaze-builder" ,ghc-blaze-builder)
+ ("ghc-exceptions" ,ghc-exceptions)))
+ (home-page "https://github.com/kazu-yamamoto/logger")
+ (synopsis "Provides a class of monads which can log messages for Haskell")
+ (description "This Haskell package uses a monad transformer approach
+for logging.
+
+This package provides Template Haskell functions for determining source
+code locations of messages.")
+ (license license:expat)))
+
+(define-public ghc-shakespeare
+ (package
+ (name "ghc-shakespeare")
+ (version "2.0.14")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "shakespeare-" version "/"
+ "shakespeare-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0j5zx8ka7d7scvb9shm7k3376qzl3k4kpim9aqqfs6n86901zpl4"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-parsec" ,ghc-parsec)
+ ("ghc-text" ,ghc-text)
+ ("ghc-aeson" ,ghc-aeson)
+ ("ghc-blaze-markup" ,ghc-blaze-markup)
+ ("ghc-blaze-html" ,ghc-blaze-html)
+ ("ghc-exceptions" ,ghc-exceptions)
+ ("ghc-vector" ,ghc-vector)
+ ("ghc-unordered-containers" ,ghc-unordered-containers)
+ ("ghc-scientific" ,ghc-scientific)))
+ (native-inputs `(("ghc-hspec" ,ghc-hspec)
+ ("ghc-hunit" ,ghc-hunit)
+ ("hspec-discover" ,hspec-discover)))
+ (home-page "https://www.yesodweb.com/book/shakespearean-templates")
+ (synopsis "Family of type-safe template languages for Haskell")
+ (description "This Haskell package provides a family of type-safe
+templates with simple variable interpolation. Shakespeare templates can
+be used inline with a quasi-quoter or in an external file and it
+interpolates variables according to the type being inserted.")
+ (license license:expat)))
+
+(define-public ghc-securemem
+ (package
+ (name "ghc-securemem")
+ (version "0.1.9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "securemem-" version "/"
+ "securemem-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0dkhhjxa7njc3qbgvd5a23rkvr39vj2kn2a9nk6yjg7a8b2hvdpy"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-byteable" ,ghc-byteable)
+ ("ghc-memory" ,ghc-memory)))
+ (home-page "https://github.com/vincenthz/hs-securemem")
+ (synopsis "Auto-scrubbing and const-time-eq memory chunk abstraction for
+Haskell")
+ (description "SecureMem is similar to ByteString, except that it provides
+a memory chunk that will be auto-scrubbed after it run out of scope.")
+ (license license:bsd-3)))
+
+(define-public ghc-resource-pool
+ (package
+ (name "ghc-resource-pool")
+ (version "0.2.3.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "resource-pool-" version "/"
+ "resource-pool-" version ".tar.gz"))
+ (sha256
+ (base32
+ "04mw8b9djb14zp4rdi6h7mc3zizh597ffiinfbr4m0m8psifw9w6"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-hashable" ,ghc-hashable)
+ ("ghc-monad-control" ,ghc-monad-control)
+ ("ghc-transformers-base" ,ghc-transformers-base)
+ ("ghc-stm" ,ghc-stm)
+ ("ghc-vector" ,ghc-vector)))
+ (home-page "https://github.com/bos/pool")
+ (synopsis "Striped resource pooling implementation in Haskell")
+ (description "This Haskell package provides striped pooling abstraction
+for managing flexibly-sized collections of resources such as database
+connections.")
+ (license license:bsd-3)))
+
+(define-public ghc-attoparsec-iso8601
+ (package
+ (name "ghc-attoparsec-iso8601")
+ (version "1.0.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "attoparsec-iso8601-" version "/"
+ "attoparsec-iso8601-" version ".tar.gz"))
+ (sha256
+ (base32
+ "12l55b76bhya9q89mfmqmy6sl5v39b6gzrw5rf3f70vkb23nsv5a"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-attoparsec" ,ghc-attoparsec)
+ ("ghc-base-compat" ,ghc-base-compat)
+ ("ghc-text" ,ghc-text)))
+ (home-page "https://github.com/bos/aeson")
+ (synopsis "Parse ISO 8601 dates")
+ (description "Haskell library for parsing of ISO 8601 dates, originally
+from aeson.")
+ (license license:bsd-3)))
+
+(define-public ghc-th-lift-instances
+ (package
+ (name "ghc-th-lift-instances")
+ (version "0.1.11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "th-lift-instances-" version "/"
+ "th-lift-instances-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1f56cp6ckcalld5jchv0kxpjkwcsixd7smd0g7r8cg67ppx6m90x"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-th-lift" ,ghc-th-lift)
+ ("ghc-vector" ,ghc-vector)
+ ("ghc-text" ,ghc-text)))
+ (native-inputs `(("ghc-quickcheck" ,ghc-quickcheck)))
+ (home-page "https://github.com/bennofs/th-lift-instances")
+ (synopsis "Lift instances for template-haskell for common data types")
+ (description "Most data types in the Haskell platform do not have Lift
+instances. This package provides orphan instances for containers, text,
+bytestring and vector.")
+ (license license:bsd-3)))
+
+(define-public ghc-generics-sop
+ (package
+ (name "ghc-generics-sop")
+ (version "0.3.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "generics-sop-" version "/"
+ "generics-sop-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1bazlhgmxcwv7vd44jhdx74cnhmaz6yy47jxfycapjj4mjrnp0x7"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-transformers-compat" ,ghc-transformers-compat)))
+ (home-page "https://github.com/well-typed/generics-sop")
+ (synopsis "Generic Programming using True Sums of Products for Haskell")
+ (description "This Haskell package supports the definition of generic
+functions. Datatypes are viewed in a uniform, structured way: the choice
+between constructors is represented using an n-ary sum, and the arguments of
+each constructor are represented using an n-ary product.")
+ (license license:bsd-3)))
+
+(define-public ghc-uri-bytestring
+ (package
+ (name "ghc-uri-bytestring")
+ (version "0.3.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "uri-bytestring-" version "/"
+ "uri-bytestring-" version ".tar.gz"))
+ (sha256
+ (base32
+ "04qjv1sgyrdg538290p9hqnvyxnahvr5cjwl8vm1rn9j0fv3ymq9"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-attoparsec" ,ghc-attoparsec)
+ ("ghc-fail" ,ghc-fail)
+ ("ghc-blaze-builder" ,ghc-blaze-builder)
+ ("ghc-th-lift-instances" ,ghc-th-lift-instances)))
+ (native-inputs `(("ghc-attoparsec" ,ghc-attoparsec)
+ ("ghc-hunit" ,ghc-hunit)
+ ("ghc-quickcheck" ,ghc-quickcheck)
+ ("ghc-tasty" ,ghc-tasty)
+ ("ghc-tasty-hunit" ,ghc-tasty-hunit)
+ ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)
+ ("ghc-base-compat" ,ghc-base-compat)
+ ("ghc-quickcheck-instances" ,ghc-quickcheck-instances)
+ ("ghc-semigroups" ,ghc-semigroups)
+ ("ghc-generics-sop" ,ghc-generics-sop)))
+ (home-page "https://github.com/Soostone/uri-bytestring")
+ (synopsis "Haskell URI parsing as ByteStrings")
+ (description "This Haskell package aims to be an RFC3986 compliant URI
+parser that uses ByteStrings for parsing and representing the URI data.")
+ (license license:bsd-3)))
+
+(define-public ghc-time-locale-compat
+ (package
+ (name "ghc-time-locale-compat")
+ (version "0.1.1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "time-locale-compat-" version "/"
+ "time-locale-compat-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1vdcfr2hp9qh3ag90x6ikbdf42wiqpdylnplffna54bpnilbyi4i"))))
+ (build-system haskell-build-system)
+ (home-page "https://github.com/khibino/haskell-time-locale-compat")
+ (synopsis "Compatibility of TimeLocale between old-locale and time-1.5")
+ (description "This Haskell package contains wrapped name module for
+TimeLocale.")
+ (license license:bsd-3)))
+
+(define-public ghc-http-api-data
+ (package
+ (name "ghc-http-api-data")
+ (version "0.3.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "http-api-data-" version "/"
+ "http-api-data-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1zbmf0kkfsw7pfznisi205gh7jd284gfarxsyiavd2iw26akwqwc"))))
+ (build-system haskell-build-system)
+ (arguments `(#:tests? #f)) ; FIXME: Tests require QuickCheck >= 2.9
+ (inputs `(("ghc-attoparsec" ,ghc-attoparsec)
+ ("ghc-attoparsec-iso8601" ,ghc-attoparsec-iso8601)
+ ("ghc-hashable" ,ghc-hashable)
+ ("ghc-http-types" ,ghc-http-types)
+ ("ghc-text" ,ghc-text)
+ ("ghc-time-locale-compat" ,ghc-time-locale-compat)
+ ("ghc-unordered-containers" ,ghc-unordered-containers)
+ ("ghc-uri-bytestring" ,ghc-uri-bytestring)
+ ("ghc-uuid-types" ,ghc-uuid-types)))
+ (home-page "https://github.com/fizruk/http-api-data")
+ (synopsis "Convert to/from HTTP API data like URL pieces, headers and
+query parameters")
+ (description "This Haskell package defines typeclasses used for converting
+Haskell data types to and from HTTP API data.")
+ (license license:bsd-3)))
+
+(define-public ghc-persistent
+ (package
+ (name "ghc-persistent")
+ (version "2.7.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "persistent-" version "/"
+ "persistent-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1jbvavdvr9qz5ld7vf6l1jgiadhmxx6zc4vqsdk9ivfq6d5wlg1p"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-old-locale" ,ghc-old-locale)
+ ("ghc-text" ,ghc-text)
+ ("ghc-conduit" ,ghc-conduit)
+ ("ghc-resourcet" ,ghc-resourcet)
+ ("ghc-exceptions" ,ghc-exceptions)
+ ("ghc-monad-control" ,ghc-monad-control)
+ ("ghc-lifted-base" ,ghc-lifted-base)
+ ("ghc-resource-pool" ,ghc-resource-pool)
+ ("ghc-path-pieces" ,ghc-path-pieces)
+ ("ghc-http-api-data" ,ghc-http-api-data)
+ ("ghc-aeson" ,ghc-aeson)
+ ("ghc-monad-logger" ,ghc-monad-logger)
+ ("ghc-transformers-base" ,ghc-transformers-base)
+ ("ghc-base64-bytestring" ,ghc-base64-bytestring)
+ ("ghc-unordered-containers" ,ghc-unordered-containers)
+ ("ghc-vector" ,ghc-vector)
+ ("ghc-attoparsec" ,ghc-attoparsec)
+ ("ghc-haskell-src-meta" ,ghc-haskell-src-meta)
+ ("ghc-blaze-html" ,ghc-blaze-html)
+ ("ghc-blaze-markup" ,ghc-blaze-markup)
+ ("ghc-silently" ,ghc-silently)
+ ("ghc-mtl" ,ghc-mtl)
+ ("ghc-fast-logger" ,ghc-fast-logger)
+ ("ghc-scientific" ,ghc-scientific)
+ ("ghc-tagged" ,ghc-tagged)))
+ (native-inputs `(("ghc-hspec" ,ghc-hspec)))
+ (home-page "https://www.yesodweb.com/book/persistent")
+ (synopsis "Type-safe, multi-backend data serialization for Haskell")
+ (description "This Haskell package allows Haskell programs to access data
+storage sytems like PostgreSQL, SQLite, MySQL and MongoDB in a type-safe
+way.")
+ (license license:expat)))
+
+(define-public ghc-aeson-compat
+ (package
+ (name "ghc-aeson-compat")
+ (version "0.3.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "aeson-compat-" version "/"
+ "aeson-compat-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1jya3lm9imclhb8qqihv39hhb62vvs3qpws7pc5fc23vwg0hsx2r"))))
+ (build-system haskell-build-system)
+ (arguments `(#:tests? #f)) ; FIXME: Tests require QuickCheck >= 2.10
+ (inputs `(("ghc-base-compat" ,ghc-base-compat)
+ ("ghc-aeson" ,ghc-aeson)
+ ("ghc-attoparsec" ,ghc-attoparsec)
+ ("ghc-attoparsec" ,ghc-attoparsec-iso8601)
+ ("ghc-exceptions" ,ghc-exceptions)
+ ("ghc-hashable" ,ghc-hashable)
+ ("ghc-scientific" ,ghc-scientific)
+ ("ghc-text" ,ghc-text)
+ ("ghc-time-locale-compat" ,ghc-time-locale-compat)
+ ("ghc-unordered-containers" ,ghc-unordered-containers)
+ ("ghc-vector" ,ghc-vector)
+ ("ghc-tagged" ,ghc-tagged)
+ ("ghc-semigroups" ,ghc-semigroups)
+ ("ghc-nats" ,ghc-nats)))
+ (home-page "https://github.com/phadej/aeson-compat")
+ (synopsis "Compatibility layer for ghc-aeson")
+ (description "This Haskell package provides compatibility layer for
+ghc-aeson.")
+ (license license:bsd-3)))
+
+(define-public ghc-persistent-template
+ (package
+ (name "ghc-persistent-template")
+ (version "2.5.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "persistent-template-" version "/"
+ "persistent-template-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0449piw3n02q7dag7k1pakfmzmf3ms4wk1qmnagczpm1ckajinwd"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-persistent" ,ghc-persistent)
+ ("ghc-monad-control" ,ghc-monad-control)
+ ("ghc-text" ,ghc-text)
+ ("ghc-aeson" ,ghc-aeson)
+ ("ghc-aeson-compat" ,ghc-aeson-compat)
+ ("ghc-monad-logger" ,ghc-monad-logger)
+ ("ghc-unordered-containers" ,ghc-unordered-containers)
+ ("ghc-tagged" ,ghc-tagged)
+ ("ghc-path-pieces" ,ghc-path-pieces)
+ ("ghc-http-api-data" ,ghc-http-api-data)))
+ (native-inputs `(("ghc-hspec" ,ghc-hspec)
+ ("ghc-quickcheck" ,ghc-quickcheck)))
+ (home-page "https://www.yesodweb.com/book/persistent")
+ (synopsis "Type-safe, non-relational, multi-backend persistence")
+ (description "This Haskell package provides interfaces and helper
+functions for the ghc-persistent package.")
+ (license license:expat)))
+
+(define-public ghc-unliftio-core
+ (package
+ (name "ghc-unliftio-core")
+ (version "0.1.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "unliftio-core-" version "/"
+ "unliftio-core-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1193fplsjm1lcr05xwvkj1rsyzx74i755f6kw3ikmxbsv0bv0l3m"))))
+ (build-system haskell-build-system)
+ (home-page
+ "https://github.com/fpco/unliftio/tree/master/unliftio-core#readme")
+ (synopsis "The MonadUnliftIO typeclass for unlifting monads to IO")
+ (description "This Haskell package provides the core @code{MonadUnliftIO}
+typeclass, instances for base and transformers, and basic utility
+functions.")
+ (license license:expat)))
+
+(define-public ghc-microlens
+ (package
+ (name "ghc-microlens")
+ (version "0.4.8.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "microlens-" version "/"
+ "microlens-" version ".tar.gz"))
+ (sha256
+ (base32
+ "17qx2mbqdrlnkc3gxq8njbp7qw8nh51drmz6fc8khgj9bls5ni2k"))))
+ (build-system haskell-build-system)
+ (home-page
+ "https://github.com/aelve/microlens")
+ (synopsis "Provides a tiny lens Haskell library with no dependencies")
+ (description "This Haskell package provides a lens library, just like
+@code{ghc-lens}, but smaller. It provides essential lenses and
+traversals (like @code{_1} and @code{_Just}), as well as ones which are simply
+nice to have (like @code{each}, @code{at}, and @code{ix}), and some
+combinators (like @code{failing} and @code{singular}), but everything else is
+stripped. As the result, this package has no dependencies.")
+ (license license:bsd-3)))
+
+(define-public ghc-microlens-th
+ (package
+ (name "ghc-microlens-th")
+ (version "0.4.1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "microlens-th-" version "/"
+ "microlens-th-" version ".tar.gz"))
+ (sha256
+ (base32
+ "15a12cqxlgbcn1n73zwrxnp2vfm8b0ma0a0sdd8zmjbs8zy3np4f"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-microlens" ,ghc-microlens)))
+ (home-page
+ "https://github.com/aelve/microlens")
+ (synopsis "Automatic generation of record lenses for
+@code{ghc-microlens}")
+ (description "This Haskell package lets you automatically generate lenses
+for data types; code was extracted from the lens package, and therefore
+generated lenses are fully compatible with ones generated by lens (and can be
+used both from lens and microlens).")
+ (license license:bsd-3)))
+
+(define-public ghc-unliftio
+ (package
+ (name "ghc-unliftio")
+ (version "0.2.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/unliftio/unliftio-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0vpncmwaq5zb6bziqfns4qdgxmq8ky0rlxna2yngxp170s5zxx9z"))))
+ (build-system haskell-build-system)
+ (arguments `(#:tests? #f)) ; FIXME: hspec-discover not in PATH
+ (inputs
+ `(("ghc-async" ,ghc-async)
+ ("ghc-stm" ,ghc-stm)
+ ("ghc-unliftio-core" ,ghc-unliftio-core)))
+ (native-inputs `(("ghc-hspec" ,ghc-hspec)))
+ (home-page "https://github.com/fpco/unliftio")
+ (synopsis "Provides MonadUnliftIO typecplass for unlifting monads to
+IO (batteries included)")
+ (description "This Haskell package provides the core @code{MonadUnliftIO}
+typeclass, a number of common instances, and a collection of common functions
+working with it.")
+ (license license:expat)))
+
+(define-public ghc-persistent-sqlite
+ (package
+ (name "ghc-persistent-sqlite")
+ (version "2.6.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/"
+ "persistent-sqlite-" version "/"
+ "persistent-sqlite-" version ".tar.gz"))
+ (sha256
+ (base32
+ "16mc2ra0hbyyc8ckjlxxc11bpskdymbr8c3g6ih6wzik639xprbm"))))
+ (build-system haskell-build-system)
+ (inputs `(("ghc-persistent" ,ghc-persistent)
+ ("ghc-unliftio-core" ,ghc-unliftio-core)
+ ("ghc-aeson" ,ghc-aeson)
+ ("ghc-conduit" ,ghc-conduit)
+ ("ghc-monad-logger" ,ghc-monad-logger)
+ ("ghc-microlens-th" ,ghc-microlens-th)
+ ("ghc-resourcet" ,ghc-resourcet)
+ ("ghc-old-locale" ,ghc-old-locale)
+ ("ghc-resource-pool" ,ghc-resource-pool)
+ ("ghc-unordered-containers" ,ghc-unordered-containers)))
+ (native-inputs `(("ghc-hspec" ,ghc-hspec)
+ ("ghc-persistent-template" ,ghc-persistent-template)
+ ("ghc-temporary" ,ghc-temporary)
+ ("ghc-text" ,ghc-text)))
+ (home-page
+ "https://www.yesodweb.com/book/persistent")
+ (synopsis "Backend for the persistent library using sqlite3")
+ (description "This Haskell package includes a thin sqlite3 wrapper based
+on the direct-sqlite package, as well as the entire C library, so there are no
+system dependencies.")
+ (license license:expat)))
+
+(define-public ghc-email-validate
+ (package
+ (name "ghc-email-validate")
+ (version "2.3.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/"
+ "email-validate/email-validate-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0qvxysiap3r4mi3xff5nsk9qv6diqxfgwj186bypbamzvzlz0lav"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-attoparsec" ,ghc-attoparsec)
+ ("ghc-hspec" ,ghc-hspec)
+ ("ghc-quickcheck" ,ghc-quickcheck)
+ ("ghc-doctest" ,ghc-doctest)))
+ (home-page
+ "https://github.com/Porges/email-validate-hs")
+ (synopsis "Email address validator for Haskell")
+ (description
+ "This Haskell package provides a validator that can validate an email
+address string against RFC 5322.")
+ (license license:bsd-3)))
+
;;; haskell.scm ends here
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index c3b86bb58d..3802256ca1 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -337,13 +337,13 @@ official designation is ISO/IEC 29199-2). This library is an implementation of t
(define-public jpegoptim
(package
(name "jpegoptim")
- (version "1.4.4")
+ (version "1.4.5")
(source (origin
(method url-fetch)
(uri (string-append "http://www.kokkonen.net/tjko/src/jpegoptim-"
version ".tar.gz"))
(sha256 (base32
- "1cn1i0g1xjdwa12w0ifbnzgb1vqbpr8ji6h05vxksj79vyi3x849"))))
+ "1mngi8c4mhzwa7i4wqrqq6i80cqj4adbacblfvk6dy573wywyxmi"))))
(build-system gnu-build-system)
(inputs `(("libjpeg" ,libjpeg)))
(arguments
@@ -355,7 +355,7 @@ official designation is ISO/IEC 29199-2). This library is an implementation of t
the Huffman tables) and \"lossy\" optimization based on setting
maximum quality factor.")
(license license:gpl2+)
- (home-page "http://www.kokkonen.net/tjko/projects.html#jpegoptim")))
+ (home-page "https://www.kokkonen.net/tjko/projects.html#jpegoptim")))
(define-public libicns
(package
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 5249d3bb89..2b8ba7035d 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -4193,6 +4193,66 @@ in the @code{java.lang} package. The following classes are included:
@end itemize\n")
(license license:asl2.0)))
+(define-public java-commons-bsf
+ (package
+ (name "java-commons-bsf")
+ (version "2.4.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://apache/commons/bsf/source/bsf-src-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1sbamr8jl32p1jgf59nw0b2w9qivyg145954hm6ly54cfgsqrdas"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (for-each delete-file
+ (find-files "." "\\.jar$"))
+ #t))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:build-target "jar"
+ #:tests? #f; No test file
+ #:modules ((guix build ant-build-system)
+ (guix build utils)
+ (guix build java-utils)
+ (sxml simple))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'create-properties
+ (lambda _
+ ;; This file is missing from the distribution
+ (call-with-output-file "build-properties.xml"
+ (lambda (port)
+ (sxml->xml
+ `(project (@ (basedir ".") (name "build-properties") (default ""))
+ (property (@ (name "project.name") (value "bsf")))
+ (property (@ (name "source.level") (value "1.5")))
+ (property (@ (name "build.lib") (value "build/jar")))
+ (property (@ (name "src.dir") (value "src")))
+ (property (@ (name "tests.dir") (value "src/org/apache/bsf/test")))
+ (property (@ (name "build.tests") (value "build/test-classes")))
+ (property (@ (name "build.dest") (value "build/classes"))))
+ port)))))
+ (replace 'install (install-jars "build")))))
+ (native-inputs
+ `(("java-junit" ,java-junit)))
+ (inputs
+ `(("java-commons-logging-minimal" ,java-commons-logging-minimal)))
+ (home-page "https://commons.apache.org/proper/commons-bsf")
+ (synopsis "Bean Scripting Framework")
+ (description "The Bean Scripting Framework (BSF) is a set of Java classes
+which provides scripting language support within Java applications, and access
+to Java objects and methods from scripting languages. BSF allows one to write
+JSPs in languages other than Java while providing access to the Java class
+library. In addition, BSF permits any Java application to be implemented in
+part (or dynamically extended) by a language that is embedded within it. This
+is achieved by providing an API that permits calling scripting language engines
+from within Java, as well as an object registry that exposes Java objects to
+these scripting language engines.")
+ (license license:asl2.0)))
+
(define-public java-jsr305
(package
(name "java-jsr305")
@@ -5395,14 +5455,14 @@ logging framework for Java.")))
(define-public java-commons-cli
(package
(name "java-commons-cli")
- (version "1.3.1")
+ (version "1.4")
(source (origin
(method url-fetch)
(uri (string-append "mirror://apache/commons/cli/source/"
"commons-cli-" version "-src.tar.gz"))
(sha256
(base32
- "1fkjn552i12vp3xxk21ws4p70fi0lyjm004vzxsdaz7gdpgyxxyl"))))
+ "05hgi2z01fqz374y719gl1dxzqvzci5af071zm7vxrjg9vczipm1"))))
(build-system ant-build-system)
;; TODO: javadoc
(arguments
@@ -9139,6 +9199,39 @@ similar in functionality to BSD editline and GNU readline but with additional
features that bring it on par with the Z shell line editor.")
(license license:bsd-3)))
+(define-public java-jline-2
+ (package
+ (inherit java-jline)
+ (version "2.14.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/jline/jline2/archive/jline-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1c6qa26mf0viw8hg4jnv72s7i1qb1gh1l8rrzcdvqhqhx82rkdlf"))))
+ (arguments
+ `(#:jdk ,icedtea-8
+ ,@(package-arguments java-jline)))
+ (inputs
+ `(("java-jansi" ,java-jansi)
+ ("java-jansi-native" ,java-jansi-native)))
+ (native-inputs
+ `(("java-powermock-modules-junit4" ,java-powermock-modules-junit4)
+ ("java-powermock-modules-junit4-common" ,java-powermock-modules-junit4-common)
+ ("java-powermock-api-easymock" ,java-powermock-api-easymock)
+ ("java-powermock-api-support" ,java-powermock-api-support)
+ ("java-powermock-core" ,java-powermock-core)
+ ("java-powermock-reflect" ,java-powermock-reflect)
+ ("java-easymock" ,java-easymock)
+ ("java-jboss-javassist" ,java-jboss-javassist)
+ ("java-objenesis" ,java-objenesis)
+ ("java-asm" ,java-asm)
+ ("java-hamcrest-core" ,java-hamcrest-core)
+ ("java-cglib" ,java-cglib)
+ ("java-junit" ,java-junit)
+ ("java-hawtjni" ,java-hawtjni)))))
+
(define-public java-xmlunit
(package
(name "java-xmlunit")
@@ -9241,3 +9334,235 @@ Java programmers to create two-dimensional charts and plots. The library
features an assortment of graph styles, including advanced scatter plots, bar
graphs, and pie charts.")
(license license:lgpl2.1+)))
+
+(define-public java-commons-httpclient
+ (package
+ (name "java-commons-httpclient")
+ (version "3.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://archive.apache.org/dist/httpcomponents/"
+ "commons-httpclient/source/commons-httpclient-"
+ version "-src.tar.gz"))
+ (sha256
+ (base32
+ "1wlpn3cfy3d4inxy6g7wxcsa8p7sshn6aldk9y4ia3lb879rd97r"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:build-target "compile"
+ #:test-target "test"
+ #:tests? #f; requires junit-textui (junit 3)
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'fix-accent
+ (lambda _
+ (for-each (lambda (file)
+ (with-fluids ((%default-port-encoding "ISO-8859-1"))
+ (substitute* file
+ (("\\* @author Ortwin .*") "* @author Ortwin Glueck\n"))))
+ '("src/java/org/apache/commons/httpclient/HttpContentTooLargeException.java"
+ "src/examples/TrivialApp.java" "src/examples/ClientApp.java"
+ "src/test/org/apache/commons/httpclient/TestHttps.java"
+ "src/test/org/apache/commons/httpclient/TestURIUtil2.java"))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (invoke "ant" "dist"
+ (string-append "-Ddist.home=" (assoc-ref outputs "out")
+ "/share/java"))
+ #t)))))
+ (propagated-inputs
+ `(("java-commons-logging" ,java-commons-logging-minimal)
+ ("java-commons-codec" ,java-commons-codec)))
+ (home-page "https://hc.apache.org")
+ (synopsis "HTTP/1.1 compliant HTTP agent implementation")
+ (description "This package contains an HTTP/1.1 compliant HTTP agent
+implementation. It also provides reusable components for client-side
+authentication, HTTP state management, and HTTP connection management.")
+ (license license:asl2.0)))
+
+(define-public java-commons-vfs
+ (package
+ (name "java-commons-vfs")
+ (version "2.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://apache/commons/vfs/source/"
+ "commons-vfs2-distribution-" version "-src.tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1cnq1iaghbp4cslpnvwbp83i5v234x87irssqynhwpfgw7caf1s3"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (for-each delete-file
+ (find-files "." "\\.jar$"))
+ #t))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "commons-vfs.jar"
+ #:source-dir "commons-vfs2/src/main/java"
+ #:test-dir "commons-vfs2/src/test"
+ ; FIXME: tests depend on many things: apache sshd, hadoop, ftpserver, ...
+ #:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'remove-hadoop-and-webdav
+ ; Remove these files as they are not required and depend on difficult
+ ; packages.
+ (lambda _
+ (for-each delete-file-recursively
+ '("commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/webdav"
+ "commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs")))))))
+ (inputs
+ `(("java-commons-collections4" ,java-commons-collections4)
+ ("java-commons-compress" ,java-commons-compress)
+ ("java-commons-httpclient" ,java-commons-httpclient)
+ ("java-commons-logging-minimal" ,java-commons-logging-minimal)
+ ("java-commons-net" ,java-commons-net)
+ ("java-jsch" ,java-jsch)))
+ (home-page "http://commons.apache.org/proper/commons-vfs/")
+ (synopsis "Java filesystem library")
+ (description "Commons VFS provides a single API for accessing various
+different file systems. It presents a uniform view of the files from various
+different sources, such as the files on local disk, on an HTTP server, or
+inside a Zip archive.")
+ (license license:asl2.0)))
+
+(define-public java-jakarta-oro
+ (package
+ (name "java-jakarta-oro")
+ (version "2.0.8")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://archive.apache.org/dist/jakarta/oro/"
+ "jakarta-oro-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0rpmnsskiwmsy8r0sckz5n5dbvh3vkxx8hpm177c754r8xy3qksc"))
+ (modules '((guix build utils)))
+ (snippet
+ `(begin
+ (delete-file (string-append "jakarta-oro-" ,version ".jar"))
+ #t))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:build-target "package"
+ #:tests? #f; tests are run as part of the build process
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'install
+ (install-jars ,(string-append "jakarta-oro-" version))))))
+ (home-page "https://jakarta.apache.org/oro/")
+ (synopsis "Text-processing for Java")
+ (description "The Jakarta-ORO Java classes are a set of text-processing
+Java classes that provide Perl5 compatible regular expressions, AWK-like
+regular expressions, glob expressions, and utility classes for performing
+substitutions, splits, filtering filenames, etc. This library is the successor
+of the OROMatcher, AwkTools, PerlTools, and TextTools libraries originally
+from ORO, Inc.")
+ (license license:asl1.1)))
+
+(define-public java-native-access
+ (package
+ (name "java-native-access")
+ (version "4.5.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/java-native-access/jna/"
+ "archive/" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0zrpzkib6b905i018a9pqlzkqinphywr6y4jwv6mwp63jjqvqkd9"))
+ (modules '((guix build utils)))
+ (snippet
+ `(begin
+ (for-each delete-file (find-files "." ".*.jar"))
+ (delete-file-recursively "native/libffi")
+ (delete-file-recursively "dist")
+ #t))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:tests? #f; FIXME: tests require reflections.jar
+ #:test-target "test"
+ #:make-flags (list "-Ddynlink.native=true")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'fix-build.xml
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "build.xml"
+ ;; Since we removed the bundled ant.jar, give the correct path
+ (("lib/ant.jar") (string-append (assoc-ref inputs "ant") "/lib/ant.jar"))
+ ;; We removed generated native libraries. We can only rebuild one
+ ;; so don't fail if we can't find a native library for another architecture.
+ (("zipfileset") "zipfileset erroronmissingarchive=\"false\""))
+ ;; Copy test dependencies
+ (copy-file (string-append (assoc-ref inputs "java-junit")
+ "/share/java/junit.jar")
+ "lib/junit.jar")
+ (copy-file (string-append (assoc-ref inputs "java-hamcrest-core")
+ "/share/java/hamcrest-core.jar")
+ "lib/hamcrest-core.jar")
+ ;; FIXME: once reflections.jar is built, copy it to lib/test.
+ #t))
+ (add-before 'build 'build-native
+ (lambda _
+ (invoke "ant" "-Ddynlink.native=true" "native")
+ #t))
+ (replace 'install
+ (install-jars "build")))))
+ (inputs
+ `(("libffi" ,libffi)
+ ("libx11" ,libx11)
+ ("libxt" ,libxt)))
+ (native-inputs
+ `(("java-junit" ,java-junit)
+ ("java-hamcrest-core" ,java-hamcrest-core)))
+ (home-page "https://github.com/java-native-access/jna")
+ (synopsis "Access to native shared libraries from Java")
+ (description "JNA provides Java programs easy access to native shared
+libraries without writing anything but Java code - no JNI or native code is
+required. JNA allows you to call directly into native functions using natural
+Java method invocation.")
+ ;; Java Native Access project (JNA) is dual-licensed under 2
+ ;; alternative Free licenses: LGPL 2.1 or later and Apache License 2.0.
+ (license (list
+ license:asl2.0
+ license:lgpl2.1+))))
+
+(define-public java-native-access-platform
+ (package
+ (inherit java-native-access)
+ (name "java-native-access-platform")
+ (arguments
+ `(#:test-target "test"
+ #:tests? #f; require jna-test.jar
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'chdir
+ (lambda _
+ (chdir "contrib/platform")
+ #t))
+ (add-after 'chdir 'fix-ant
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "nbproject/project.properties"
+ (("../../build/jna.jar")
+ (string-append (assoc-ref inputs "java-native-access")
+ "/share/java/jna.jar"))
+ (("../../lib/hamcrest-core-.*.jar")
+ (string-append (assoc-ref inputs "java-hamcrest-core")
+ "/share/java/hamcrest-core.jar"))
+ (("../../lib/junit.jar")
+ (string-append (assoc-ref inputs "java-junit")
+ "/share/java/junit.jar")))
+ #t))
+ (replace 'install
+ (install-jars "dist")))))
+ (inputs
+ `(("java-native-access" ,java-native-access)))
+ (synopsis "Cross-platform mappings for jna")
+ (description "java-native-access-platfrom has cross-platform mappings
+and mappings for a number of commonly used platform functions, including a
+large number of Win32 mappings as well as a set of utility classes that
+simplify native access.")))
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 6288c443ad..eeeec406a8 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -373,7 +373,7 @@ means that these shams cause many ES5 methods to silently fail.")
(define-public mujs
(package
(name "mujs")
- (version "1.0.2")
+ (version "1.0.3")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -382,7 +382,7 @@ means that these shams cause many ES5 methods to silently fail.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "1angy1higk8bvh69frjhq1m6znhd75fzalaydz5rfzkdfyw52jgy"))))
+ "15ml3rzjl44lqdb1yxipdh8bhh0rvk2g6w6sjv667q8xywijwqv8"))))
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm
index aca2cab0a2..2613db0abd 100644
--- a/gnu/packages/ldc.scm
+++ b/gnu/packages/ldc.scm
@@ -138,8 +138,8 @@ and freshness without requiring additional information from the user.")
("tzdata" ,tzdata)
("zlib" ,zlib)))
(native-inputs
- `(("llvm" ,llvm)
- ("clang" ,clang)
+ `(("llvm" ,llvm-3.8)
+ ("clang" ,clang-3.8)
("python-lit" ,python-lit)
("python-wrapper" ,python-wrapper)
("unzip" ,unzip)
@@ -246,8 +246,8 @@ bootstrapping more recent compilers written in D.")
(setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
(invoke "make" "test" "-j" (number->string (parallel-job-count))))))))
(native-inputs
- `(("llvm" ,llvm)
- ("clang" ,clang)
+ `(("llvm" ,llvm-3.8)
+ ("clang" ,clang-3.8)
("ldc" ,ldc-bootstrap)
("python-lit" ,python-lit)
("python-wrapper" ,python-wrapper)
diff --git a/gnu/packages/libcanberra.scm b/gnu/packages/libcanberra.scm
index e1812c578c..e7f4195ed4 100644
--- a/gnu/packages/libcanberra.scm
+++ b/gnu/packages/libcanberra.scm
@@ -139,7 +139,7 @@ sounds for various system events.")
(source
(origin
(method url-fetch)
- (uri (string-append "https://files.crash.cx/releases/"
+ (uri (string-append "http://ftp.n0.is/pub/releases/"
"pycanberra-" version ".tar.xz"))
(sha256
(base32
@@ -152,5 +152,5 @@ sounds for various system events.")
(synopsis "Ctypes wrapper for the libcanberra API")
(description
"Pycanberra is a basic Python wrapper for libcanberra.")
- (home-page "https://code.crash.cx/pycanberra/log.html")
+ (home-page "http://c.n0.is/ng0/pycanberra/")
(license lgpl2.1+)))
diff --git a/gnu/packages/license.scm b/gnu/packages/license.scm
index 2ef2108df2..053f79811e 100644
--- a/gnu/packages/license.scm
+++ b/gnu/packages/license.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -107,7 +108,7 @@ statements and serializes in normalized format.")
(define-public licensecheck
(package
(name "licensecheck")
- (version "3.0.33")
+ (version "3.0.34")
(source (origin
(method url-fetch)
(uri (string-append
@@ -115,7 +116,7 @@ statements and serializes in normalized format.")
"v" version ".tar.gz"))
(sha256
(base32
- "0wydxb2jks1k3bxkcp7p0pazh5v3awbbcf6haplvwzkkayszhgs4"))))
+ "0k0acybgibdqg1h6xqnba1jb0spmw7hpq0jbrs7n7gfj22wkz0vd"))))
(build-system perl-build-system)
(native-inputs
`(("perl-regexp-pattern" ,perl-regexp-pattern)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index a702e85f79..584d72a1c0 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -284,6 +284,9 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
("bc" ,bc)
("openssl" ,openssl)
("kmod" ,kmod)
+ ("elfutils" ,elfutils) ; Needed to enable CONFIG_STACK_VALIDATION
+ ("flex" ,flex)
+ ("bison" ,bison)
;; On x86, build with GCC-7 for full retpoline support.
;; FIXME: Remove this when our default compiler has retpoline support.
,@(match (system->linux-architecture
@@ -383,8 +386,8 @@ It has been modified to remove all non-free binary blobs.")
;; supports qemu "virt" machine and possibly a large number of ARM boards.
;; See : https://wiki.debian.org/DebianKernel/ARMMP.
-(define %linux-libre-version "4.15.13")
-(define %linux-libre-hash "1z9f3m44n5w9ayad08h6nvx4nihc28h2jplk4jvyaj0460v8d11f")
+(define %linux-libre-version "4.15.16")
+(define %linux-libre-hash "1nzdaypvw8abas6xr6ijk2wc9f0b6q72xw6ypalwx33p7sdqwrzq")
(define-public linux-libre
(make-linux-libre %linux-libre-version
@@ -392,8 +395,8 @@ It has been modified to remove all non-free binary blobs.")
%linux-compatible-systems
#:configuration-file kernel-config))
-(define %linux-libre-4.14-version "4.14.30")
-(define %linux-libre-4.14-hash "1j1vnr4397y4js7i24jdpfq85mc50b7kjz7gz1bbbrmda6cflwig")
+(define %linux-libre-4.14-version "4.14.33")
+(define %linux-libre-4.14-hash "0ps9whsxc20gw5ags18rgkwgy6fzg66by70g8xjds7nijpzgl69m")
(define-public linux-libre-4.14
(make-linux-libre %linux-libre-4.14-version
@@ -402,20 +405,20 @@ It has been modified to remove all non-free binary blobs.")
#:configuration-file kernel-config))
(define-public linux-libre-4.9
- (make-linux-libre "4.9.90"
- "0mzy6wcxp9m9icb8mvsbywp1lrbvbv6n8rs3xszqm43dxy9zj1jd"
+ (make-linux-libre "4.9.93"
+ "0flmsh4xy7ymyzwm8y4x4id798mx6vy3d6ala7x1bq41hf00075p"
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.4
- (make-linux-libre "4.4.124"
- "1368x0wki8zhk0hwz36hrkp2lr2kbm9i0fwzws201h3y85mldgh4"
+ (make-linux-libre "4.4.127"
+ "1av536sp6ancx0fy71wpmqv4r66pksrcjbnrcjggard6im4c8pjy"
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.1
- (make-linux-libre "4.1.50"
- "1hl1pk724v2waa55bhxfmxyz9nl6pkcj4dc3l80jfvqdfgr55mm2"
+ (make-linux-libre "4.1.51"
+ "0l8lpwjpckp44hjyx5qrxqdwwi97gyyc1n6pmk66cr3fpdhnk540"
%intel-compatible-systems
#:configuration-file kernel-config))
@@ -910,14 +913,15 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
(define-public strace
(package
(name "strace")
- (version "4.21")
+ (version "4.22")
+ (home-page "https://strace.io")
(source (origin
(method url-fetch)
- (uri (string-append "https://github.com/strace/strace/releases/"
- "download/v" version "/strace-" version ".tar.xz"))
+ (uri (string-append home-page "/files/" version
+ "/strace-" version ".tar.xz"))
(sha256
(base32
- "0dsw6xcfrmygidp1dj2ch8cl8icrar7789snkb2r8gh78kdqhxjw"))))
+ "17dkpnsjxmys1ydidm9wcvc3wscsz44fmlxw3dclspn9cj9d1306"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -928,7 +932,6 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
(("/bin/sh") (which "sh")))
#t)))))
(native-inputs `(("perl" ,perl)))
- (home-page "https://strace.io/")
(synopsis "System call tracer for Linux")
(description
"strace is a system call tracer, i.e. a debugging tool which prints out a
@@ -1122,8 +1125,7 @@ configure the Linux 2.4.x and later IPv4 packet filtering ruleset
This package also includes @command{ip6tables}, which is used to configure the
IPv6 packet filter.
-Both commands are targeted at system administrators.
-")
+Both commands are targeted at system administrators.")
(license license:gpl2+)))
(define-public ebtables
@@ -1184,7 +1186,7 @@ that the Ethernet protocol is much simpler than the IP protocol.")
(define-public iproute
(package
(name "iproute2")
- (version "4.15.0")
+ (version "4.16.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1192,7 +1194,7 @@ that the Ethernet protocol is much simpler than the IP protocol.")
version ".tar.xz"))
(sha256
(base32
- "0mc3g4kj7h3jhwz2b2gdf41gp6bhqn7axh4mnyvhkdnpk5m63m28"))))
+ "02pfalg319jpbjz273ph725br8dnkzpfvi98azi9yd6p1w128p0c"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no test suite
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index cf60d2aa0d..98592ad090 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -40,7 +41,7 @@
(define-public llvm
(package
(name "llvm")
- (version "3.8.1")
+ (version "6.0.0")
(source
(origin
(method url-fetch)
@@ -48,7 +49,7 @@
version "/llvm-" version ".src.tar.xz"))
(sha256
(base32
- "1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf"))))
+ "0224xvfg6h40y5lrbnb9qaq3grmdc5rg00xq03s1wxjfbf8krx8z"))))
(build-system cmake-build-system)
(native-inputs
`(("python" ,python-2) ;bytes->str conversion in clang>=3.7 needs python-2
@@ -131,7 +132,7 @@ compiler. In LLVM this library is called \"compiler-rt\".")
(supported-systems (delete "mips64el-linux" %supported-systems))))
(define* (clang-from-llvm llvm clang-runtime hash
- #:key (patches '("clang-libc-search-path.patch")))
+ #:key (patches '()))
(package
(name "clang")
(version (package-version llvm))
@@ -176,23 +177,49 @@ compiler. In LLVM this library is called \"compiler-rt\".")
(lambda* (#:key inputs #:allow-other-keys)
(let ((libc (assoc-ref inputs "libc"))
(compiler-rt (assoc-ref inputs "clang-runtime")))
- (substitute* "lib/Driver/Tools.cpp"
- ;; Patch the 'getLinuxDynamicLinker' function to that
- ;; it uses the right dynamic linker file name.
- (("/lib64/ld-linux-x86-64.so.2")
- (string-append libc
- ,(glibc-dynamic-linker)))
-
- ;; Link to libclang_rt files from clang-runtime.
- (("TC\\.getDriver\\(\\)\\.ResourceDir")
- (string-append "\"" compiler-rt "\"")))
-
- ;; Same for libc's libdir, to allow crt1.o & co. to be
- ;; found.
- (substitute* "lib/Driver/ToolChains.cpp"
- (("@GLIBC_LIBDIR@")
- (string-append libc "/lib")))
+ (case (string->number ,(version-major
+ (package-version clang-runtime)))
+ ((6)
+ ;; Link to libclang_rt files from clang-runtime.
+ (substitute* "lib/Driver/ToolChain.cpp"
+ (("getDriver\\(\\)\\.ResourceDir")
+ (string-append "\"" compiler-rt "\"")))
+
+ ;; Make "LibDir" refer to <glibc>/lib so that it
+ ;; uses the right dynamic linker file name.
+ (substitute* "lib/Driver/ToolChains/Linux.cpp"
+ (("(^[[:blank:]]+LibDir = ).*" _ declaration)
+ (string-append declaration "\"" libc "/lib\";\n"))
+
+ ;; Make sure libc's libdir is on the search path, to
+ ;; allow crt1.o & co. to be found.
+ (("@GLIBC_LIBDIR@")
+ (string-append libc "/lib"))))
+ ((3)
+ (substitute* "lib/Driver/Tools.cpp"
+ ;; Patch the 'getLinuxDynamicLinker' function so that
+ ;; it uses the right dynamic linker file name.
+ (("/lib64/ld-linux-x86-64.so.2")
+ (string-append libc
+ ,(glibc-dynamic-linker))))
+
+ ;; Link to libclang_rt files from clang-runtime.
+ ;; This substitution needed slight adjustment in 3.8.
+ (if (< 3.8 (string->number ,(version-major+minor
+ (package-version
+ clang-runtime))))
+ (substitute* "lib/Driver/Tools.cpp"
+ (("TC\\.getDriver\\(\\)\\.ResourceDir")
+ (string-append "\"" compiler-rt "\"")))
+ (substitute* "lib/Driver/ToolChain.cpp"
+ (("getDriver\\(\\)\\.ResourceDir")
+ (string-append "\"" compiler-rt "\""))))
+ ;; Make sure libc's libdir is on the search path, to
+ ;; allow crt1.o & co. to be found.
+ (substitute* "lib/Driver/ToolChains.cpp"
+ (("@GLIBC_LIBDIR@")
+ (string-append libc "/lib")))))
#t))))))
;; Clang supports the same environment variables as GCC.
@@ -216,13 +243,12 @@ code analysis tools.")
(define-public clang-runtime
(clang-runtime-from-llvm
llvm
- "0p0y85c7izndbpg2l816z7z7558axq11d5pwkm4h11sdw7d13w0d"
- '("clang-runtime-asan-build-fixes.patch")))
+ "16m7rvh3w6vq10iwkjrr1nn293djld3xm62l5zasisaprx117k6h"))
(define-public clang
(clang-from-llvm llvm clang-runtime
- "1prc72xmkgx8wrzmrr337776676nhsp1qd3mw2bvb22bzdnq7lsc"
- #:patches '("clang-3.8-libc-search-path.patch")))
+ "0cnznvfyl3hgbg8gj58pmwf0pvd2sv5k3ccbivy6q6ggv7c6szg0"
+ #:patches '("clang-6.0-libc-search-path.patch")))
(define-public llvm-3.9.1
(package (inherit llvm)
@@ -247,7 +273,31 @@ code analysis tools.")
(define-public clang-3.9.1
(clang-from-llvm llvm-3.9.1 clang-runtime-3.9.1
"0qsyyb40iwifhhlx9a3drf8z6ni6zwyk3bvh0kx2gs6yjsxwxi76"
- #:patches '()))
+ #:patches '("clang-3.8-libc-search-path.patch")))
+
+(define-public llvm-3.8
+ (package (inherit llvm)
+ (name "llvm")
+ (version "3.8.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://llvm.org/releases/"
+ version "/llvm-" version ".src.tar.xz"))
+ (sha256
+ (base32
+ "1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf"))))))
+
+(define-public clang-runtime-3.8
+ (clang-runtime-from-llvm
+ llvm-3.8
+ "0p0y85c7izndbpg2l816z7z7558axq11d5pwkm4h11sdw7d13w0d"
+ '("clang-runtime-asan-build-fixes.patch")))
+
+(define-public clang-3.8
+ (clang-from-llvm llvm-3.8 clang-runtime-3.8
+ "1prc72xmkgx8wrzmrr337776676nhsp1qd3mw2bvb22bzdnq7lsc"
+ #:patches '("clang-3.8-libc-search-path.patch")))
(define-public llvm-3.7
(package (inherit llvm)
@@ -269,7 +319,8 @@ code analysis tools.")
(define-public clang-3.7
(clang-from-llvm llvm-3.7 clang-runtime-3.7
- "0x065d0w9b51xvdjxwfzjxng0gzpbx45fgiaxpap45ragi61dqjn"))
+ "0x065d0w9b51xvdjxwfzjxng0gzpbx45fgiaxpap45ragi61dqjn"
+ #:patches '("clang-3.5-libc-search-path.patch")))
(define-public llvm-3.6
(package (inherit llvm)
@@ -291,7 +342,8 @@ code analysis tools.")
(define-public clang-3.6
(clang-from-llvm llvm-3.6 clang-runtime-3.6
- "1wwr8s6lzr324hv4s1k6na4j5zv6n9kdhi14s4kb9b13d93814df"))
+ "1wwr8s6lzr324hv4s1k6na4j5zv6n9kdhi14s4kb9b13d93814df"
+ #:patches '("clang-3.5-libc-search-path.patch")))
(define-public llvm-3.5
(package (inherit llvm)
@@ -315,7 +367,8 @@ code analysis tools.")
(define-public clang-3.5
(clang-from-llvm llvm-3.5 clang-runtime-3.5
- "0846h8vn3zlc00jkmvrmy88gc6ql6014c02l4jv78fpvfigmgssg"))
+ "0846h8vn3zlc00jkmvrmy88gc6ql6014c02l4jv78fpvfigmgssg"
+ #:patches '("clang-3.5-libc-search-path.patch")))
(define-public llvm-for-extempore
(package (inherit llvm-3.7)
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index a2f7b183d5..bb6a1300e8 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -259,14 +259,14 @@ aliasing facilities to work just as they would on normal mail.")
(define-public mutt
(package
(name "mutt")
- (version "1.9.3")
+ (version "1.9.4")
(source (origin
(method url-fetch)
(uri (string-append "https://bitbucket.org/mutt/mutt/downloads/"
"mutt-" version ".tar.gz"))
(sha256
(base32
- "1qbngck1pq1jkpnbpcwcb2q2zqrkgp0nd68wwp57bprxjgb8a6j3"))
+ "1pxmw5yyizb9bqbai6lihv6zxmw0znjfb60zaldwh6hc6lkbzlgl"))
(patches (search-patches "mutt-store-references.patch"))))
(build-system gnu-build-system)
(inputs
@@ -747,14 +747,14 @@ invoking @command{notifymuch} from the post-new hook.")
(define-public notmuch
(package
(name "notmuch")
- (version "0.26")
+ (version "0.26.1")
(source (origin
(method url-fetch)
(uri (string-append "https://notmuchmail.org/releases/notmuch-"
version ".tar.gz"))
(sha256
(base32
- "1pvn1n7giv8n3xlazi3wpscdqhd2yak0fgv68aj23myr5bnr9s6k"))))
+ "0dx8nhdmkaqabxcgxfa757m99fi395y76h9ynx8539yh9m7y9xyk"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)
@@ -906,7 +906,7 @@ and search library.")
(define-public getmail
(package
(name "getmail")
- (version "5.5")
+ (version "5.6")
(source
(origin
(method url-fetch)
@@ -914,7 +914,7 @@ and search library.")
name "-" version ".tar.gz"))
(sha256
(base32
- "0l43lbnrnyyrq8mlnw37saq6v0mh3nkirdq1dwnsrihykzjjwf70"))))
+ "16nmvj80szr6yvcxxgmxn2lxqpjqqj4xg5a0b66zhvck6j42q3a6"))))
(build-system python-build-system)
(arguments
`(#:tests? #f ; no tests
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index 52df4c6967..88f64fdb66 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -154,7 +154,7 @@ from Mint-X-F and Faenza-Fresh icon packs.")
(define-public mate-themes
(package
(name "mate-themes")
- (version "3.22.15")
+ (version "3.22.16")
(source (origin
(method url-fetch)
(uri (string-append "https://pub.mate-desktop.org/releases/themes/"
@@ -162,7 +162,7 @@ from Mint-X-F and Faenza-Fresh icon packs.")
version ".tar.xz"))
(sha256
(base32
- "0cmlbj6vlkavdirc5xnsgwmy0m11bj9yrbv1dkq46n1s23rvv6wg"))))
+ "1k8qp2arjv4vj8kyjhjgyj5h46jy0darlfh48l5h25623z1firdj"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index ab3cd17d52..2f6c6d6277 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -11,7 +11,7 @@
;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de>
;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2016, 2018 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
@@ -56,6 +56,7 @@
#:use-module (guix build-system r)
#:use-module (guix build-system ruby)
#:use-module (gnu packages algebra)
+ #:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
@@ -79,6 +80,7 @@
#:use-module (gnu packages java)
#:use-module (gnu packages less)
#:use-module (gnu packages lisp)
+ #:use-module (gnu packages linux)
#:use-module (gnu packages logging)
#:use-module (gnu packages lua)
#:use-module (gnu packages gnome)
@@ -95,6 +97,7 @@
#:use-module (gnu packages popt)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages python-web)
#:use-module (gnu packages qt)
@@ -1345,7 +1348,11 @@ can solve two kinds of problems:
("zlib" ,zlib)
("curl" ,curl)
("texinfo" ,texinfo)
- ("graphicsmagick" ,graphicsmagick)))
+ ("graphicsmagick" ,graphicsmagick)
+ ("suitesparse" ,suitesparse)
+ ("libsndfile" ,libsndfile)
+ ("portaudio" ,portaudio)
+ ("alsa-lib" ,alsa-lib)))
(native-inputs
`(("lzip" ,lzip)
("gfortran" ,gfortran)
@@ -1385,6 +1392,31 @@ Work may be performed both at the interactive command-line as well as via
script files.")
(license license:gpl3+)))
+(define-public qtoctave
+ (package (inherit octave)
+ (name "qtoctave")
+ (inputs
+ `(("qscintilla" ,qscintilla)
+ ("qt" ,qtbase)
+ ,@(package-inputs octave)))
+ (native-inputs
+ `(("qttools" , qttools) ;for lrelease
+ ,@(package-native-inputs octave)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments octave)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-before 'configure 'patch-qscintilla-library-name
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; The QScintilla library that the Octave configure script tries
+ ;; to link with should be named libqscintilla-qt5.so, but the
+ ;; QScintilla input provides the shared library as
+ ;; libqscintilla2_qt5.so.
+ (substitute* "configure"
+ (("qscintilla2-qt5")
+ "qscintilla2_qt5"))
+ #t))))))))
+
(define-public opencascade-oce
(package
(name "opencascade-oce")
@@ -3522,7 +3554,11 @@ supports compressed MAT files, as well as newer (version 7.3) MAT files.")
(build-system cmake-build-system)
(arguments
'(#:configure-flags
- '("-DBUILD_TESTING=ON")))
+ '("-DBUILD_TESTING=ON"
+ ;; By default, Vc will optimize for the CPU of the build machine.
+ ;; Setting this to "none" makes it create portable binaries. See
+ ;; "cmake/OptimizeForArchitecture.cmake".
+ "-DTARGET_ARCHITECTURE=none")))
(synopsis "SIMD vector classes for C++")
(description "Vc provides portable, zero-overhead C++ types for explicitly
data-parallel programming. It is a library designed to ease explicit
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index db5407e01f..e93c0a4c88 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -3,7 +3,7 @@
;;; Copyright © 2014, 2017 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
@@ -914,16 +914,17 @@ connect with friends and family without anyone else listening in.")
(define-public pybitmessage
(package
(name "pybitmessage")
- (version "0.6.2")
+ (version "0.6.3.2")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://github.com/Bitmessage/"
- "PyBitmessage/archive/v" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Bitmessage/PyBitmessage.git")
+ (commit version)))
+ (file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "1in2mhaxkp2sx8pgvifq9dk1z8b2x3imf1anr0z926vwxwjrf85w"))))
+ "1lmhbpwsqh1v93krlqqhafw2pc3y0qp8zby186yllbph6s8kdp35"))))
(propagated-inputs
;; TODO:
;; Package "pyopencl", required in addition to numpy for OpenCL support.
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 5904fef8d3..9a3db21bae 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -470,21 +470,21 @@ compression format (.mpc files).")
(define-public eyed3
(package
(name "eyed3")
- (version "0.8")
+ (version "0.8.5")
(source (origin
(method url-fetch)
- (uri (string-append
- "http://eyed3.nicfit.net/releases/eyeD3-"
- version ".tar.gz"))
+ (uri (pypi-uri "eyeD3" version))
(sha256
(base32
- "1dcswb0f6w3b05s1v43pq8fmavkd5g88ysndn9160wlaa1v9n40h"))))
+ "0rkx859z82wqnfb0dzpa1647cq43aqb39ri9rd5r3jz597qr9zdd"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ; the required test data contains copyrighted material.
(propagated-inputs
- `(("python-six" ,python-six)
- ("python-grako" ,python-grako)))
+ `(("python-grako" ,python-grako)
+ ("python-magic" ,python-magic)
+ ("python-pathlib" ,python-pathlib)
+ ("python-six" ,python-six)))
(synopsis "MP3 tag ID3 metadata editor")
(description "eyeD3 is a Python tool for working with audio files,
specifically mp3 files containing ID3 metadata (i.e. song info). It provides a
@@ -510,12 +510,13 @@ command-line tool.")
(arguments
`(#:tests? #f ; tests require googletest *sources*
;;#:configure-flags '("-DBUILD_TESTS=ON") ; for building the tests
+ #:configure-flags '("-DBUILD_TOOLS=ON") ; for fpcalc
#:test-target "check"))
(inputs
;; requires one of FFmpeg (prefered), FFTW3 or vDSP
;; use the same ffmpeg version as for acoustid-fingerprinter
`(("ffmpeg" ,ffmpeg)
- ("boots" ,boost)))
+ ("boost" ,boost)))
(home-page "https://acoustid.org/chromaprint")
(synopsis "Audio fingerprinting library")
(description "Chromaprint is a library for calculating audio
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 0fe1145512..be7aadf9ce 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -437,19 +437,28 @@ background while you work.")
(define-public hydrogen
(package
(name "hydrogen")
- (version "0.9.7")
+ (version "1.0.0-beta1")
(source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/hydrogen-music/hydrogen/archive/"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hydrogen-music/hydrogen.git")
+ (commit version)))
+ (file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "1dy2jfkdw0nchars4xi4isrz66fqn53a9qk13bqza7lhmsg3s3qy"))))
+ "0nv83l70j5bjz2wd6n3a8cq3bmgrvdvg6g2hjhc1g5h6xnbqsh9x"))))
(build-system cmake-build-system)
(arguments
- `(#:test-target "tests"))
+ `(#:test-target "tests"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-data-directory
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "CMakeLists.txt"
+ (("/usr/share/pixmaps")
+ (string-append (assoc-ref outputs "out")
+ "/share/pixmaps")))
+ #t)))))
(native-inputs
`(("cppunit" ,cppunit)
("pkg-config" ,pkg-config)))
@@ -462,7 +471,8 @@ background while you work.")
("libsndfile" ,libsndfile)
("libtar" ,libtar)
("lrdf" ,lrdf)
- ("qt" ,qt-4)
+ ("qtbase" ,qtbase)
+ ("qtxmlpatterns" ,qtxmlpatterns)
("zlib" ,zlib)))
(home-page "http://www.hydrogen-music.org")
(synopsis "Drum machine")
@@ -1256,7 +1266,7 @@ users to select LV2 plugins and run them with jalv.")
(define-public synthv1
(package
(name "synthv1")
- (version "0.8.6")
+ (version "0.9.0")
(source (origin
(method url-fetch)
(uri
@@ -1264,7 +1274,7 @@ users to select LV2 plugins and run them with jalv.")
"/synthv1-" version ".tar.gz"))
(sha256
(base32
- "141ah1gnv5r2k846v5ay15q9q90h01p74240a56vlxqh20z43g92"))))
+ "1skynjg6ip0qfbqqkybfjh6xcwxagq89ghl08f7sp7j0sz5qdcwp"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; There are no tests.
@@ -1290,7 +1300,7 @@ oscillators and stereo effects.")
(define-public drumkv1
(package
(name "drumkv1")
- (version "0.8.6")
+ (version "0.9.0")
(source (origin
(method url-fetch)
(uri
@@ -1298,7 +1308,7 @@ oscillators and stereo effects.")
"/drumkv1-" version ".tar.gz"))
(sha256
(base32
- "0fwxrfyp15a4m77mzz4mwj36mhdrj646whlrkvcys33p2w75f8cq"))))
+ "1vm8lrk3lykdic6fyfpl12jx1xg6rcaid242s8sij30p1ix4zdab"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; There are no tests.
@@ -1325,7 +1335,7 @@ effects.")
(define-public samplv1
(package
(name "samplv1")
- (version "0.8.6")
+ (version "0.9.0")
(source (origin
(method url-fetch)
(uri
@@ -1333,7 +1343,7 @@ effects.")
"/samplv1-" version ".tar.gz"))
(sha256
(base32
- "035bq7yfg1yirsqk63zwkzjw9dxl52lrzq9y0w7nga0vb11xdfij"))))
+ "0g67vm9ilmq5nlvk0f3abia9pbinr4ck5v4mll6igni1rxz2n7wk"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; There are no tests.
@@ -1360,7 +1370,7 @@ effects.")
(define-public padthv1
(package
(name "padthv1")
- (version "0.8.6")
+ (version "0.9.0")
(source (origin
(method url-fetch)
(uri
@@ -1368,7 +1378,7 @@ effects.")
"/padthv1-" version ".tar.gz"))
(sha256
(base32
- "1mikab2f9n5q1sfgnp3sbm1rf3v57k4085lsgh0a5gzga2h4hwxq"))))
+ "0c519qk2g0dk8gqf9ywqfp7dnr4b25lsnxxbf2l1spnnvf8nysvh"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; There are no tests.
@@ -1760,7 +1770,19 @@ projects.")
#:build-type "Release" ; needed to have PMALSA set
#:configure-flags
(list "-DPORTMIDI_ENABLE_JAVA=Off"
- "-DPORTMIDI_ENABLE_TEST=Off"))) ; tests fail linking
+ "-DPORTMIDI_ENABLE_TEST=Off") ; tests fail linking
+ #:phases
+ (modify-phases %standard-phases
+ ;; Some packages, e.g., MuseScore, expect "libporttime.so" instead of
+ ;; "libportmidi.so". Distributions get away with it by creating an
+ ;; appropriate symlink.
+ (add-after 'install 'add-porttime
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib")))
+ (with-directory-excursion lib
+ (symlink "libportmidi.so" "libporttime.so")))
+ #t)))))
(inputs
`(("alsa-lib" ,alsa-lib)))
(native-inputs
@@ -2156,14 +2178,14 @@ from the command line.")
(define-public qtractor
(package
(name "qtractor")
- (version "0.8.6")
+ (version "0.9.0")
(source (origin
(method url-fetch)
(uri (string-append "http://downloads.sourceforge.net/qtractor/"
"qtractor-" version ".tar.gz"))
(sha256
(base32
- "0qf75bccsyplx6fcaz48k6027yp06zhl8ixhhjdbr30xgpslnjm3"))))
+ "03892177k3jn2bsi366dhq28rcdsc1p9v5qqc0k6hg3cnrkh23na"))))
(build-system gnu-build-system)
(arguments `(#:tests? #f)) ; no "check" target
(inputs
@@ -2272,10 +2294,10 @@ analogue-like user interface.")
(license license:gpl2+)))
(define-public mod-host
- ;; The last release was in 2014 but since then more than 140 commits have
+ ;; The last release was in 2014 but since then hundreds of commits have
;; been made.
- (let ((commit "299a3977476e8eb0285837fbd7522cec506a11de")
- (revision "2"))
+ (let ((commit "1726ad06b11323da7e1aaed690ff8aef91f702b5")
+ (revision "3"))
(package
(name "mod-host")
(version (string-append "0.10.6-" revision "." (string-take commit 9)))
@@ -2286,7 +2308,7 @@ analogue-like user interface.")
(commit commit)))
(sha256
(base32
- "128q7p5mph086v954rqnafalfbkyvhgwclaq6ks6swrhj45wnag6"))
+ "1nrd37c35w6z6ldczgrwmmd9hx1n3zyvcjcgb3mi4cygqdanvspv"))
(file-name (string-append name "-" version "-checkout"))))
(build-system gnu-build-system)
(arguments
@@ -3467,7 +3489,7 @@ audio samples and various soft sythesizers. It can receive input from a MIDI ke
(define-public musescore
(package
(name "musescore")
- (version "2.1.0")
+ (version "2.2.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -3476,7 +3498,7 @@ audio samples and various soft sythesizers. It can receive input from a MIDI ke
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0irwsq6ihfz3y3b943cwqy29g3si7gqbgxdscgw53vwv9vfvi085"))
+ "1ml99ayzpdyd18cypcp0lbsbasfg3abw57i5fl7ph5739vikj6i6"))
(modules '((guix build utils)))
(snippet
;; Un-bundle OpenSSL and remove unused libraries.
@@ -3494,7 +3516,9 @@ audio samples and various soft sythesizers. It can receive input from a MIDI ke
(build-system gnu-build-system)
(arguments
`(#:make-flags
- `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
+ `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
+ "USE_SYSTEM_FREETYPE=ON"
+ "DOWNLOAD_SOUNDFONT=OFF")
;; There are tests, but no simple target to run. The command
;; used to run them is:
;;
@@ -3506,16 +3530,7 @@ audio samples and various soft sythesizers. It can receive input from a MIDI ke
#:tests? #f
#:phases
(modify-phases %standard-phases
- (delete 'configure)
- (add-after 'unpack 'use-system-freetype
- (lambda _
- ;; XXX: For the time being, we grossly insert the CMake
- ;; option needed to ignore bundled freetype. However,
- ;; there's a pending PR to have it as a regular make
- ;; option, in a future release.
- (substitute* "Makefile"
- (("cmake -DCMAKE") "cmake -DUSE_SYSTEM_FREETYPE=ON -DCMAKE"))
- #t)))))
+ (delete 'configure))))
(inputs
`(("alsa-lib" ,alsa-lib)
("freetype" ,freetype)
@@ -3526,6 +3541,7 @@ audio samples and various soft sythesizers. It can receive input from a MIDI ke
("libsndfile" ,libsndfile)
("libvorbis" ,libvorbis)
("portaudio" ,portaudio)
+ ("portmidi" ,portmidi)
("pulseaudio" ,pulseaudio)
("qtbase" ,qtbase)
("qtdeclarative" ,qtdeclarative)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 364ae2f64c..7be19bc0a7 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -275,7 +275,7 @@ more.")
(define-public czmq
(package
(name "czmq")
- (version "4.1.0")
+ (version "4.1.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -284,7 +284,7 @@ more.")
"/" name "-" version ".tar.gz"))
(sha256
(base32
- "04gwf61rijwm6b2wblwv8gky1gdrbfmg1d19hf72kdc691ds7vrv"))))
+ "1h5hrcsc30fcwb032vy5gxkq4j4vv1y4dj460rfs1hhxi0cz83zh"))))
(build-system gnu-build-system)
(arguments
'(;; TODO Tests fail for some reason:
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 0fdad6a34f..4809aa0971 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3498,13 +3498,13 @@ XML and Protocol Buffers formats.")
(build-system ocaml-build-system)
(native-inputs
`(("oasis" ,ocaml-oasis)
- ("clang" ,clang)
+ ("clang" ,clang-3.8)
("ounit" ,ocaml-ounit)))
(propagated-inputs
`(("core-kernel" ,ocaml-core-kernel)
("ppx-driver" ,ocaml-ppx-driver)
("uri" ,ocaml-uri)
- ("llvm" ,llvm)
+ ("llvm" ,llvm-3.8)
("gmp" ,gmp)
("clang-runtime" ,clang-runtime)
("fileutils" ,ocaml-fileutils)
@@ -3520,7 +3520,7 @@ XML and Protocol Buffers formats.")
("bitstring" ,ocaml-bitstring)
("ppx-jane" ,ocaml-ppx-jane)
("re" ,ocaml-re)))
- (inputs `(("llvm" ,llvm)))
+ (inputs `(("llvm" ,llvm-3.8)))
(arguments
`(#:use-make? #t
#:phases
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm
index 5875562aa1..3e9fd375c9 100644
--- a/gnu/packages/openstack.scm
+++ b/gnu/packages/openstack.scm
@@ -646,14 +646,14 @@ from the OpenStack project.")
(define-public python-oslotest
(package
(name "python-oslotest")
- (version "3.3.0")
+ (version "3.4.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "oslotest" version))
(sha256
(base32
- "006i73w8kbc9s0av2v5mbni6mnkb91c2nq17wa0lz7bwk5zss992"))))
+ "1pp8lq61d548cxcqi451czvrz5i5b3hyi2ry00wmngdgiswcqj1h"))))
(build-system python-build-system)
(propagated-inputs
`(("python-fixtures" ,python-fixtures)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 4a70e2cf8b..b522e0f92a 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -283,6 +283,33 @@ the Nix package manager.")
;; Alias for backward compatibility.
(define-public guix-devel guix)
+(define-public guix-register
+ ;; This package is for internal consumption: it allows us to quickly build
+ ;; the 'guix-register' program, which is referred to by (guix config).
+ ;; TODO: Remove this hack when 'guix-register' has been superseded by Scheme
+ ;; code.
+ (package
+ (inherit guix)
+ (properties `((hidden? . #t)))
+ (name "guix-register")
+ (arguments
+ (substitute-keyword-arguments (package-arguments guix)
+ ((#:tests? #f #f)
+ #f)
+ ((#:phases phases '%standard-phases)
+ `(modify-phases ,phases
+ (replace 'build
+ (lambda _
+ (invoke "make" "nix/libstore/schema.sql.hh")
+ (invoke "make" "-j" (number->string
+ (parallel-job-count))
+ "guix-register")))
+ (delete 'copy-bootstrap-guile)
+ (replace 'install
+ (lambda _
+ (invoke "make" "install-sbinPROGRAMS")))
+ (delete 'wrap-program)))))))
+
(define-public guile2.0-guix
(package
(inherit guix)
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 8810392530..f4518cfeb0 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -17,6 +17,7 @@
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net>
+;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -67,6 +68,7 @@
#:use-module (gnu packages version-control)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg)
+ #:use-module (gnu packages xml)
#:use-module (guix build-system python))
(define-public pwgen
@@ -641,3 +643,50 @@ is the community-enhanced, \"jumbo\" version of John the Ripper.")
to encrypted files on a directory hierarchy. The information is protected
by GnuPG's symmetrical encryption.")
(license license:expat)))
+
+(define-public fpm2
+ (package
+ (name "fpm2")
+ (version "0.79")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://als.regnet.cz/fpm2/download/fpm2-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "19sdy1lygfhkg5nxi2w9a4d9kwvw24nxp0ix0p0lz91qpvk9qpnm"))))
+ (build-system gnu-build-system)
+ (inputs `(("gtk2" ,gtk+-2)
+ ("gnupg" ,gnupg)
+ ("libxml2" ,libxml2)))
+ (native-inputs `(("pkg-config" ,pkg-config)
+ ("intltool" ,intltool)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'pre-configure
+ ;; The file po/POTFILES.in ends up missing for some reason in
+ ;; both nix and guix builds. Adding the file with contents
+ ;; found during troubleshooting.
+ (lambda _
+ (call-with-output-file "po/POTFILES.in"
+ (lambda (port)
+ (format port "data/fpm2.desktop.in
+data/fpm2.desktop.in.in
+fpm2.glade
+src/callbacks.c
+src/fpm.c
+src/fpm_file.c
+src/interface.c
+src/support.c
+fpm2.glade
+")))
+ #t)))))
+ (synopsis "Manage, generate and store passwords encrypted")
+ (description "FPM2 is GTK2 port from Figaro's Password Manager
+originally developed by John Conneely, with some new enhancements.
+
+Upstream development seems to have stopped. It is therefore recommended
+to use a different password manager.")
+ (home-page "https://als.regnet.cz/fpm2/")
+ (license license:gpl2+)))
diff --git a/gnu/packages/patches/4store-unset-preprocessor-directive.patch b/gnu/packages/patches/4store-unset-preprocessor-directive.patch
new file mode 100644
index 0000000000..c4b1d6eda4
--- /dev/null
+++ b/gnu/packages/patches/4store-unset-preprocessor-directive.patch
@@ -0,0 +1,16 @@
+This patch removes the _XOPEN_SOURCE preprocessor directive as it does not seem to be needed.
+Setting it removes the definition of strdup, which is used in filter-datatypes.c.
+
+Patch by Roel Janssen <roel@gnu.org>
+*** a/src/frontend/filter-datatypes.c 1970-01-01 01:00:00.000000000 +0100
+--- b/src/frontend/filter-datatypes.c 2018-04-03 17:39:23.177905592 +0200
+***************
+*** 18,24 ****
+ * Copyright (C) 2006 Steve Harris for Garlik
+ */
+
+- #define _XOPEN_SOURCE
+ #include <stdlib.h>
+ #include <string.h>
+ #include <math.h>
+--- 18,23 ----
diff --git a/gnu/packages/patches/clang-libc-search-path.patch b/gnu/packages/patches/clang-3.5-libc-search-path.patch
index 50e4480239..50e4480239 100644
--- a/gnu/packages/patches/clang-libc-search-path.patch
+++ b/gnu/packages/patches/clang-3.5-libc-search-path.patch
diff --git a/gnu/packages/patches/clang-6.0-libc-search-path.patch b/gnu/packages/patches/clang-6.0-libc-search-path.patch
new file mode 100644
index 0000000000..a62e8063c2
--- /dev/null
+++ b/gnu/packages/patches/clang-6.0-libc-search-path.patch
@@ -0,0 +1,67 @@
+Clang attempts to guess file names based on the OS and distro (yes!),
+but unfortunately, that doesn't work for us.
+
+This patch makes it easy to insert libc's $libdir so that Clang passes the
+correct absolute file name of crt1.o etc. to 'ld'. It also disables all
+the distro-specific stuff and removes the hard-coded FHS directory names
+to make sure Clang also works on non-GuixSD systems.
+
+--- cfe-6.0.0.src/lib/Driver/ToolChains/Linux.cpp
++++ cfe-6.0.0.src/lib/Driver/ToolChains/Linux.cpp
+@@ -207,7 +207,9 @@
+ PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
+ GCCInstallation.getTriple().str() + "/bin")
+ .str());
+-
++ // Comment out the distro-specific tweaks so that they don't bite when
++ // using Guix on a foreign distro.
++#if 0
+ Distro Distro(D.getVFS());
+
+ if (Distro.IsAlpineLinux()) {
+@@ -255,6 +257,7 @@
+
+ if (IsAndroid || Distro.IsOpenSUSE())
+ ExtraOpts.push_back("--enable-new-dtags");
++#endif
+
+ // The selection of paths to try here is designed to match the patterns which
+ // the GCC driver itself uses, as this is part of the GCC-compatible driver.
+@@ -329,14 +332,12 @@
+ addPathIfExists(D, D.Dir + "/../" + OSLibDir, Paths);
+ }
+
+- addPathIfExists(D, SysRoot + "/lib/" + MultiarchTriple, Paths);
+- addPathIfExists(D, SysRoot + "/lib/../" + OSLibDir, Paths);
+- addPathIfExists(D, SysRoot + "/usr/lib/" + MultiarchTriple, Paths);
+- addPathIfExists(D, SysRoot + "/usr/lib/../" + OSLibDir, Paths);
+-
+ // Try walking via the GCC triple path in case of biarch or multiarch GCC
+ // installations with strange symlinks.
+ if (GCCInstallation.isValid()) {
++ // The following code would end up adding things like
++ // "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path.
++#if 0
+ addPathIfExists(D,
+ SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
+ "/../../" + OSLibDir,
+@@ -349,6 +350,7 @@
+ BiarchSibling.gccSuffix(),
+ Paths);
+ }
++#endif
+
+ // See comments above on the multilib variant for details of why this is
+ // included even from outside the sysroot.
+@@ -373,8 +375,9 @@
+ if (StringRef(D.Dir).startswith(SysRoot))
+ addPathIfExists(D, D.Dir + "/../lib", Paths);
+
+- addPathIfExists(D, SysRoot + "/lib", Paths);
+- addPathIfExists(D, SysRoot + "/usr/lib", Paths);
++ // Add libc's lib/ directory to the search path, so that crt1.o, crti.o,
++ // and friends can be found.
++ addPathIfExists(D, "@GLIBC_LIBDIR@", Paths);
+ }
+
+ bool Linux::HasNativeLLVMSupport() const { return true; }
diff --git a/gnu/packages/patches/delly-use-system-libraries.patch b/gnu/packages/patches/delly-use-system-libraries.patch
new file mode 100644
index 0000000000..3315c2a176
--- /dev/null
+++ b/gnu/packages/patches/delly-use-system-libraries.patch
@@ -0,0 +1,56 @@
+--- a/Makefile 2017-04-09 12:48:15.000000000 +0200
++++ b/Makefile 2017-06-21 14:26:02.749282787 +0200
+@@ -9,8 +9,8 @@
+
+ # Flags
+ CXX=g++
+-CXXFLAGS += -isystem ${SEQTK_ROOT} -isystem ${BOOST_ROOT} -pedantic -W -Wall -Wno-unknown-pragmas -D__STDC_LIMIT_MACROS -fno-strict-aliasing
+-LDFLAGS += -L${SEQTK_ROOT} -L${BOOST_ROOT}/stage/lib -lboost_iostreams -lboost_filesystem -lboost_system -lboost_program_options -lboost_date_time
++CXXFLAGS += -pedantic -W -Wall -Wno-unknown-pragmas -D__STDC_LIMIT_MACROS -fno-strict-aliasing
++LDFLAGS += -lboost_iostreams -lboost_filesystem -lboost_system -lboost_program_options -lboost_date_time
+
+ # Additional flags for release/debug
+ ifeq (${PARALLEL}, 1)
+@@ -23,7 +23,7 @@
+ ifeq (${STATIC}, 1)
+ LDFLAGS += -static -static-libgcc -pthread -lhts -lz
+ else
+- LDFLAGS += -lhts -lz -Wl,-rpath,${SEQTK_ROOT},-rpath,${BOOST_ROOT}/stage/lib
++ LDFLAGS += -lhts -lz
+ endif
+ ifeq (${DEBUG}, 1)
+ CXXFLAGS += -g -O0 -fno-inline -DDEBUG
+@@ -41,29 +41,17 @@
+ DELLYSOURCES = $(wildcard src/*.h) $(wildcard src/*.cpp)
+
+ # Targets
+-TARGETS = .htslib .bcftools .boost src/delly src/cov src/dpe
++TARGETS = src/delly src/cov src/dpe
+
+ all: $(TARGETS)
+
+-.htslib: $(HTSLIBSOURCES)
+- cd src/htslib && make && make lib-static && cd ../../ && touch .htslib
+-
+-.bcftools: $(HTSLIBSOURCES)
+- cd src/bcftools && make && cd ../../ && touch .bcftools
+-
+-.boost: $(BOOSTSOURCES)
+- cd src/modular-boost && ./bootstrap.sh --prefix=${PWD}/src/modular-boost --without-icu --with-libraries=iostreams,filesystem,system,program_options,date_time && ./b2 && ./b2 headers && cd ../../ && touch .boost
+-
+-src/delly: .htslib .bcftools .boost $(DELLYSOURCES)
+- $(CXX) $(CXXFLAGS) $@.cpp -o $@ $(LDFLAGS)
+-
+-src/cov: .htslib .bcftools .boost $(DELLYSOURCES)
++src/cov: $(DELLYSOURCES)
+ $(CXX) $(CXXFLAGS) $@.cpp -o $@ $(LDFLAGS)
+
+-src/dpe: .htslib .bcftools .boost $(DELLYSOURCES)
++src/dpe: $(DELLYSOURCES)
+ $(CXX) $(CXXFLAGS) $@.cpp -o $@ $(LDFLAGS)
+
+ clean:
+ cd src/htslib && make clean
+ cd src/modular-boost && ./b2 --clean-all
+- rm -f $(TARGETS) $(TARGETS:=.o) .htslib .boost .bcftools
++ rm -f $(TARGETS) $(TARGETS:=.o)
diff --git a/gnu/packages/patches/libgnomeui-utf8.patch b/gnu/packages/patches/libgnomeui-utf8.patch
index 304d74e1e2..11622b21ee 100644
--- a/gnu/packages/patches/libgnomeui-utf8.patch
+++ b/gnu/packages/patches/libgnomeui-utf8.patch
@@ -8,11 +8,11 @@ make[2]: Entering directory '/tmp/guix-build-libgnomeui-2.24.5.drv-0/libgnomeui-
INFO: Reading ./gnome-marshal.list...
GEN gnome-marshal.h
Traceback (most recent call last):
- File "/gnu/store/azh1is0xknn4xphwj33iqcb5ic9qhk8l-glib-2.54.2-bin/bin/glib-mkenums", line 688, in <module>
+ File "/gnu/store/...-glib-2.54.2-bin/bin/glib-mkenums", line 688, in <module>
process_file(fname)
- File "/gnu/store/azh1is0xknn4xphwj33iqcb5ic9qhk8l-glib-2.54.2-bin/bin/glib-mkenums", line 420, in process_file
+ File "/gnu/store/...-glib-2.54.2-bin/bin/glib-mkenums", line 420, in process_file
line = curfile.readline()
- File "/gnu/store/3lkypf5wnsnvkaidhw0pv7k3yjfh1r9g-python-3.6.3/lib/python3.6/codecs.py", line 321, in decode
+ File "/gnu/store/...-python-3.6.3/lib/python3.6/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf1 in position 1009: invalid continuation byte
make[2]: *** [Makefile:1109: stamp-gnometypebuiltins.h] Error 1
diff --git a/gnu/packages/patches/racket-fix-xform-issue.patch b/gnu/packages/patches/racket-fix-xform-issue.patch
new file mode 100644
index 0000000000..0a1640ee51
--- /dev/null
+++ b/gnu/packages/patches/racket-fix-xform-issue.patch
@@ -0,0 +1,63 @@
+050cdb59839896b41431791f8ee0ef2564231b8f
+Author: Matthew Flatt <mflatt@racket-lang.org>
+AuthorDate: Tue Mar 6 09:05:08 2018 -0700
+Commit: Matthew Flatt <mflatt@racket-lang.org>
+CommitDate: Tue Mar 6 09:05:08 2018 -0700
+
+Parent: efb9a919fc ffi docs: clarification on `unsafe-socket->port`
+Containing: master
+Follows: v5.0.1 (21612)
+
+xform: avoid problems with `__signbitf128`
+
+Closes #1962 and uses the suggested patch there, among other changes.
+
+2 files changed, 6 insertions(+), 3 deletions(-)
+racket/collects/compiler/private/xform.rkt | 2 +-
+racket/src/racket/src/number.c | 7 +++++--
+
+diff --git a/racket/collects/compiler/private/xform.rkt b/racket/collects/compiler/private/xform.rkt
+index 28a425c057..89ae848f9c 100644
+--- a/collects/compiler/private/xform.rkt
++++ b/collects/compiler/private/xform.rkt
+@@ -904,7 +904,7 @@
+
+ strlen cos cosl sin sinl exp expl pow powl log logl sqrt sqrtl atan2 atan2l frexp
+ isnan isinf fpclass signbit _signbit _fpclass __fpclassify __fpclassifyf __fpclassifyl
+- _isnan __isfinited __isnanl __isnan __signbit __signbitf __signbitd __signbitl
++ _isnan __isfinited __isnanl __isnan __signbit __signbitf __signbitd __signbitl __signbitf128
+ __isinff __isinfl isnanf isinff __isinfd __isnanf __isnand __isinf __isinff128
+ __inline_isnanl __inline_isnan __inline_signbit __inline_signbitf __inline_signbitd __inline_signbitl
+ __builtin_popcount __builtin_clz __builtin_isnan __builtin_isinf __builtin_signbit
+diff --git a/racket/src/racket/src/number.c b/racket/src/racket/src/number.c
+index 71f42aaf3c..3bbad3ba83 100644
+--- a/src/racket/src/number.c
++++ b/src/racket/src/number.c
+@@ -1796,6 +1796,7 @@ double scheme_real_to_double(Scheme_Object *r)
+ }
+
+ XFORM_NONGCING static MZ_INLINE int minus_zero_p(double d)
++ XFORM_SKIP_PROC
+ {
+ #ifdef MZ_IS_NEG_ZERO
+ return MZ_IS_NEG_ZERO(d);
+@@ -1809,7 +1810,9 @@ int scheme_minus_zero_p(double d)
+ return minus_zero_p(d);
+ }
+
+-static int rational_dbl_p(double f) {
++XFORM_NONGCING static int rational_dbl_p(double f)
++ XFORM_SKIP_PROC
++{
+ return !(MZ_IS_NAN(f)
+ || MZ_IS_INFINITY(f));
+ }
+@@ -1955,7 +1958,7 @@ real_p(int argc, Scheme_Object *argv[])
+ return (SCHEME_REALP(o) ? scheme_true : scheme_false);
+ }
+
+-static int is_rational(const Scheme_Object *o)
++XFORM_NONGCING static int is_rational(const Scheme_Object *o)
+ {
+ if (SCHEME_FLOATP(o))
+ return rational_dbl_p(SCHEME_FLOAT_VAL(o)); \ No newline at end of file
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 46badf9d3e..7ef6714540 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -9,7 +9,7 @@
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
-;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2016, 2018 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2017 Raoul J.P. Bonnal <ilpuccio.febo@gmail.com>
@@ -723,6 +723,31 @@ is captured while being passed through to the original file handles.")
to test the installed perl for compatibility with his modules.")
(license (package-license perl))))
+(define-public perl-carp
+ (package
+ (name "perl-carp")
+ (version "1.38")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/R/RJ/RJBS/Carp-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "00bijwwc0ix27h2ma3lvsf3b56biar96bl9dikxgx7cmpcycxad5"))))
+ (build-system perl-build-system)
+ (home-page "http://search.cpan.org/dist/Carp/")
+ (synopsis "Alternative warn and die for modules")
+ (description "The @code{Carp} routines are useful in your own modules
+because they act like @code{die()} or @code{warn()}, but with a message
+which is more likely to be useful to a user of your module. In the case
+of @code{cluck}, @code{confess}, and @code{longmess} that context is a
+summary of every call in the call-stack. For a shorter message you can use
+@code{carp} or @code{croak} which report the error as being from where your
+module was called. There is no guarantee that that is where the error was,
+but it is a good educated guess.")
+ (license (package-license perl))))
+
(define-public perl-carp-always
(package
(name "perl-carp-always")
@@ -3976,6 +4001,62 @@ inc directory within a distribution and are used by Makefile.PL or Build.PL.")
"Indirect warns about using the indirect method call syntax.")
(license (package-license perl))))
+(define-public perl-inline
+ (package
+ (name "perl-inline")
+ (version "0.80")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/I/IN/INGY/Inline-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1xnf5hykcr54271x5jsnr61bcv1c7x39cy4kdcrkxm7bn62djavy"))))
+ (build-system perl-build-system)
+ (native-inputs
+ `(("perl-test-warn" ,perl-test-warn)))
+ (home-page "http://search.cpan.org/dist/Inline/")
+ (synopsis "Write Perl subroutines in other programming languages")
+ (description "The @code{Inline} module allows you to put source code
+from other programming languages directly (inline) in a Perl script or
+module. The code is automatically compiled as needed, and then loaded
+for immediate access from Perl.")
+ (license (package-license perl))))
+
+(define-public perl-inline-c
+ (package
+ (name "perl-inline-c")
+ (version "0.78")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/T/TI/TINITA/Inline-C-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1izv7vswd17glffh8h83bi63gdk208mmhxi17l3qd8q1bkc08y4s"))))
+ (build-system perl-build-system)
+ (native-inputs
+ `(("perl-file-copy-recursive" ,perl-file-copy-recursive)
+ ("perl-file-sharedir-install" ,perl-file-sharedir-install)
+ ("perl-test-warn" ,perl-test-warn)
+ ("perl-yaml-libyaml" ,perl-yaml-libyaml)))
+ (propagated-inputs
+ `(("perl-inline" ,perl-inline)
+ ("perl-parse-recdescent" ,perl-parse-recdescent)
+ ("perl-pegex" ,perl-pegex)))
+ (home-page "http://search.cpan.org/dist/Inline-C/")
+ (synopsis "C Language Support for Inline")
+ (description "The @code{Inline::C} module allows you to write Perl
+subroutines in C. Since version 0.30 the @code{Inline} module supports
+multiple programming languages and each language has its own support module.
+This document describes how to use Inline with the C programming language.
+It also goes a bit into Perl C internals.")
+ (license (package-license perl))))
+
(define-public perl-io-captureoutput
(package
(name "perl-io-captureoutput")
@@ -4638,7 +4719,7 @@ portions of this module couldn't be compiled on this machine.")
(define-public perl-mailtools
(package
(name "perl-mailtools")
- (version "2.19")
+ (version "2.20")
(source
(origin
(method url-fetch)
@@ -4648,7 +4729,7 @@ portions of this module couldn't be compiled on this machine.")
".tar.gz"))
(sha256
(base32
- "06jykkv8mp484vzkmwd6dkicx029rl3ir5ljzrbap3paxw1dfzn1"))))
+ "15iizg2x1w7ca0r8rn3wwhp7w160ljvf55prspljwd6cm7vhcmpm"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-timedate" ,perl-timedate)))
@@ -4680,6 +4761,64 @@ Build a Mail::Internet object, and then send it out using Mail::Mailer.
@end table")
(license perl-license)))
+(define-public perl-math-bezier
+ (package
+ (name "perl-math-bezier")
+ (version "0.01")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/A/AB/ABW/Math-Bezier-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1f5qwrb7vvf8804myb2pcahyxffqm9zvfal2n6myzw7x8py1ba0i"))))
+ (build-system perl-build-system)
+ (home-page "http://search.cpan.org/dist/Math-Bezier/")
+ (synopsis "Solution of bezier curves")
+ (description "This module implements the algorithm for the solution of Bezier
+curves as presented by Robert D Miller in Graphics Gems V, \"Quick and Simple
+Bezier Curve Drawing\".")
+ (license perl-license)))
+
+(define-public perl-math-round
+ (package
+ (name "perl-math-round")
+ (version "0.07")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/G/GR/GROMMEL/Math-Round-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "09wkvqj4hfq9y0fimri967rmhnq90dc2wf20lhlmqjp5hsd359vk"))))
+ (build-system perl-build-system)
+ (home-page "http://search.cpan.org/dist/Math-Round/")
+ (synopsis "Perl extension for rounding numbers")
+ (description "@code{Math::Round} provides functions to round numbers,
+both positive and negative, in various ways.")
+ (license perl-license)))
+
+(define-public perl-memoize
+ (package
+ (name "perl-memoize")
+ (version "1.03")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/M/MJ/MJD/Memoize-"
+ version".tgz"))
+ (sha256
+ (base32
+ "1wysq3wrmf1s7s3phimzn7n0dswik7x53apykzgb0l2acigwqfaj"))))
+ (build-system perl-build-system)
+ (home-page "http://search.cpan.org/dist/Memoize/")
+ (synopsis "Make functions faster by trading space for time")
+ (description "This package transparently speeds up functions by caching
+return values, trading space for time.")
+ (license perl-license)))
+
(define-public perl-memoize-expirelru
(package
(name "perl-memoize-expirelru")
@@ -6224,6 +6363,30 @@ collector daemon in use at Etsy.com.")
subroutine, which you can call with a value to be tested against.")
(license (package-license perl))))
+(define-public perl-number-format
+ (package
+ (name "perl-number-format")
+ (version "1.75")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/W/WR/WRW/Number-Format-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1wspw9fybik76jq9w1n1gmvfixd4wvlrq6ni8kyn85s62v5mkml2"))))
+ (build-system perl-build-system)
+ (home-page "http://search.cpan.org/dist/Number-Format/")
+ (synopsis "Convert numbers to strings with pretty formatting")
+ (description "@code{Number::Format} is a library for formatting numbers.
+Functions are provided for converting numbers to strings in a variety of ways,
+and to convert strings that contain numbers back into numeric form. The
+output formats may include thousands separators - characters inserted between
+each group of three characters counting right to left from the decimal point.
+The characters used for the decimal point and the thousands separator come from
+the locale information or can be specified by the user.")
+ (license perl-license)))
+
(define-public perl-number-range
(package
(name "perl-number-range")
@@ -6575,6 +6738,36 @@ up inheritance from those modules at the same time.")
directory specifications in a cross-platform manner.")
(license (package-license perl))))
+(define-public perl-pathtools
+ (package
+ (name "perl-pathtools")
+ (version "3.74")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/X/XS/XSAWYERX/PathTools-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "04bfjdvn5p78hirljcinpxv8djcjn8nyg5gcmnmvz8sr9k2lqwi5"))))
+ (build-system perl-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-pwd-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "Cwd.pm"
+ (("'/bin/pwd'")
+ (string-append "'" (assoc-ref inputs "coreutils")
+ "/bin/pwd'"))))))))
+ (inputs
+ `(("coreutils" ,coreutils)))
+ (home-page "http://search.cpan.org/dist/PathTools/")
+ (synopsis "Tools for working with directory and file names")
+ (description "This package provides functions to work with directory and
+file names.")
+ (license perl-license)))
+
(define-public perl-path-tiny
(package
(name "perl-path-tiny")
@@ -6623,6 +6816,33 @@ PerlIO layer. Unlike Perl's default @code{:utf8} layer it checks the input
for correctness.")
(license (package-license perl))))
+(define-public perl-pegex
+ (package
+ (name "perl-pegex")
+ (version "0.64")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/I/IN/INGY/Pegex-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1kb7y2cc3nibbn8i8y3vrzz1f9h3892nbf8jj88c5fdgpmj05q17"))))
+ (build-system perl-build-system)
+ (native-inputs
+ `(("perl-file-sharedir-install" ,perl-file-sharedir-install)
+ ("perl-yaml-libyaml" ,perl-yaml-libyaml)))
+ (home-page "http://search.cpan.org/dist/Pegex/")
+ (synopsis "Acmeist PEG Parser Framework")
+ (description "Pegex is an Acmeist parser framework. It allows you to easily
+create parsers that will work equivalently in lots of programming languages.
+The inspiration for Pegex comes from the parsing engine upon which the
+postmodern programming language Perl 6 is based on. Pegex brings this beauty
+to the other justmodern languages that have a normal regular expression engine
+available.")
+ (license (package-license perl))))
+
(define-public perl-pod-coverage
(package
(name "perl-pod-coverage")
@@ -6920,6 +7140,25 @@ collector.")
(description "Set::Infinite is a set theory module for infinite sets.")
(license (package-license perl))))
+(define-public perl-set-intspan
+ (package
+ (name "perl-set-intspan")
+ (version "1.19")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/S/SW/SWMCD/Set-IntSpan-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1l6znd40ylzvfwl02rlqzvakv602rmvwgm2xd768fpgc2fdm9dqi"))))
+ (build-system perl-build-system)
+ (home-page "http://search.cpan.org/dist/Set-IntSpan/")
+ (synopsis "Manage sets of integers")
+ (description "@code{Set::IntSpan} manages sets of integers. It is
+optimized for sets that have long runs of consecutive integers.")
+ (license perl-license)))
+
(define-public perl-set-object
(package
(name "perl-set-object")
@@ -7058,6 +7297,27 @@ straightforward and (perhaps someday) standard way. Spiffy borrows ideas from
other OO languages like Python, Ruby, Java and Perl 6.")
(license (package-license perl))))
+(define-public perl-statistics-basic
+ (package
+ (name "perl-statistics-basic")
+ (version "1.6611")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/J/JE/JETTERO/Statistics-Basic-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1ywl398z42hz9w1k0waf1caa6agz8jzsjlf4rzs1lgpx2mbcwmb8"))))
+ (build-system perl-build-system)
+ (inputs
+ `(("perl-number-format" ,perl-number-format)))
+ (home-page "http://search.cpan.org/dist/Statistics-Basic/")
+ (synopsis "Collection of very basic statistics modules")
+ (description "This package provides basic statistics functions like
+@code{median()}, @code{mean()}, @code{variance()} and @code{stddev()}.")
+ (license lgpl2.0)))
+
(define-public perl-stream-buffered
(package
(name "perl-stream-buffered")
@@ -7884,6 +8144,30 @@ faster than shelling out to a system's diff executable for small files, and
generally slower on larger files.")
(license (package-license perl))))
+(define-public perl-text-format
+ (package
+ (name "perl-text-format")
+ (version "0.60")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/S/SH/SHLOMIF/Text-Format-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1f52jak0a2gwi4qcisp4nfbniq04dmmv5j8zkvzj8ik0f0sk2kv6"))))
+ (build-system perl-build-system)
+ (native-inputs
+ `(("perl-module-build" ,perl-module-build)
+ ("perl-test-pod" ,perl-test-pod)
+ ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
+ (home-page "http://search.cpan.org/dist/Text-Format/")
+ (synopsis "Various subroutines to format text")
+ (description "This package provides functions to format text in various
+ways like centering, paragraphing, and converting tabs to spaces and spaces
+to tabs.")
+ (license perl-license)))
+
(define-public perl-text-glob
(package
(name "perl-text-glob")
@@ -8040,6 +8324,23 @@ letters, the pronunciation expressed by the text in some other writing
system.")
(license (package-license perl))))
+(define-public perl-threads
+ (package
+ (name "perl-threads")
+ (version "2.21")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://cpan/authors/id/J/JD/JDHEDDEN/threads-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "047i22mdnf7fa0h9w5jhqrjbg561l5jxk8xqzwh6zbmwlac4qf98"))))
+ (build-system perl-build-system)
+ (home-page "http://search.cpan.org/dist/threads/")
+ (synopsis "Perl interpreter-based threads")
+ (description "This module exposes interpreter threads to the Perl level.")
+ (license perl-license)))
+
(define-public perl-throwable
(package
(name "perl-throwable")
@@ -8195,6 +8496,26 @@ rounded or exact terms.")
duration strings like \"2 minutes\" and \"3 seconds\" to seconds.")
(license (package-license perl))))
+(define-public perl-time-hires
+ (package
+ (name "perl-time-hires")
+ (version "1.9758")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/J/JH/JHI/Time-HiRes-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "07jbydcdzpjm6i4nidci0rlklx4kla210fsl6zishw0yq5di9yjv"))))
+ (build-system perl-build-system)
+ (home-page "http://search.cpan.org/dist/Time-HiRes/")
+ (synopsis "High resolution alarm, sleep, gettimeofday, interval timers")
+ (description "This package implements @code{usleep}, @code{ualarm}, and
+@code{gettimeofday} for Perl, as well as wrappers to implement @code{time},
+@code{sleep}, and @code{alarm} that know about non-integral seconds.")
+ (license perl-license)))
+
(define-public perl-time-local
(package
(name "perl-time-local")
@@ -9063,6 +9384,30 @@ File::Find replacement in Perl.")
interface to File::Find::Object.")
(license (package-license perl))))
+(define-public perl-font-ttf
+ (package
+ (name "perl-font-ttf")
+ (version "1.06")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/B/BH/BHALLISSY/Font-TTF-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "14y29ja3lsa3yw0ll20lj96f3zz5zydjqi1c5nh9wxar8927ssab"))))
+ (build-system perl-build-system)
+ (propagated-inputs
+ `(("perl-io-string" ,perl-io-string)))
+ (home-page "http://search.cpan.org/dist/Font-TTF/")
+ (synopsis "TTF font support for Perl")
+ (description "This package provides a Perl module for TrueType/OpenType
+font hacking. It supports reading, processing and writing of the following
+tables: GDEF, GPOS, GSUB, LTSH, OS/2, PCLT, bsln, cmap, cvt, fdsc, feat,
+fpgm, glyf, hdmx, head, hhea, hmtx, kern, loca, maxp, mort, name, post, prep,
+prop, vhea, vmtx and the reading and writing of all other table types.")
+ (license artistic2.0)))
+
(define-public perl-libtime-parsedate
(package
(name "perl-libtime-parsedate")
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 58ace823ee..90e6ab1c1c 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -62,7 +62,7 @@
(define-public php
(package
(name "php")
- (version "7.2.3")
+ (version "7.2.4")
(home-page "https://secure.php.net/")
(source (origin
(method url-fetch)
@@ -70,7 +70,7 @@
name "-" version ".tar.xz"))
(sha256
(base32
- "07v5bq5b97zdqwmig6sxqsdb50vdf04w6jzmjq5kqh9gaqdlzadk"))
+ "123s0lbyz4fxr3kk91r4v658mk899dym36lggxnx9pwd2jyv25kr"))
(modules '((guix build utils)))
(snippet
'(with-directory-excursion "ext"
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index 82b55fbf2f..38f279206d 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016, 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -178,14 +179,14 @@ colors, styles, options and details.")
(define-public asymptote
(package
(name "asymptote")
- (version "2.41")
+ (version "2.42")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/asymptote/"
version "/asymptote-" version ".src.tgz"))
(sha256
(base32
- "1w7fbq6gy65g0mxg6wdxi7v178c5yxvh9yrnv3bzm4sjzf4pwvhx"))))
+ "0dprc4shzdpvp87kc97ggh5ay2zmskjjaciay7mnblx63rhk1d95"))))
(build-system gnu-build-system)
;; Note: The 'asy' binary retains a reference to docdir for use with its
;; "help" command in interactive mode, so adding a "doc" output is not
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index aabeaa7604..fb8575cb78 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -8,7 +8,7 @@
;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
-;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
@@ -281,14 +281,14 @@ is used by the Requests library to verify HTTPS requests.")
(define-public python-cryptography-vectors
(package
(name "python-cryptography-vectors")
- (version "2.2.1")
+ (version "2.2.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "cryptography_vectors" version))
(sha256
(base32
- "1zk2shzpa9kw8fgwpsbdm5cgvbjd05vh2q6r0x9jlzq5vvjg4z5y"))))
+ "122na0c6r24ch2ifyr4ccjyih0inpqy7bc5za77699g3pa22rd98"))))
(build-system python-build-system)
(home-page "https://github.com/pyca/cryptography")
(synopsis "Test vectors for the cryptography package")
@@ -303,14 +303,14 @@ is used by the Requests library to verify HTTPS requests.")
(define-public python-cryptography
(package
(name "python-cryptography")
- (version "2.2.1")
+ (version "2.2.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "cryptography" version))
(sha256
(base32
- "1lxj3kqp552c715p0hzixpdhnz4ggd3jb7zz15q8dw534b9xknnx"))))
+ "0qrgip8vgcpk7v1jwf67mg50np5iprxrv8qrg8p382hkd6zrbhlz"))))
(build-system python-build-system)
(inputs
`(("openssl" ,openssl)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 013758c6db..be93d430ff 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -48,7 +48,9 @@
;;; Copyright © 2018 Ethan R. Jones <ethanrjones97@gmail.com
;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com>
-
+;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
+;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
+;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
@@ -1382,9 +1384,9 @@ applications. dogtail scripts are written in Python and executed like any
other Python program.")
(license license:gpl2+)))
-(define-public python2-empy
+(define-public python-empy
(package
- (name "python2-empy")
+ (name "python-empy")
(version "3.3")
(source (origin
(method url-fetch)
@@ -1395,12 +1397,7 @@ other Python program.")
"01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
(build-system python-build-system)
(arguments
- `(#:python ,python-2
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (zero? (system* "./test.sh")))))))
+ `(#:tests? #f)) ;python2 only
(home-page "http://www.alcyone.com/software/empy/")
(synopsis "Templating system for Python")
(description
@@ -1417,6 +1414,9 @@ system is highly configurable via command line options and embedded
commands.")
(license license:lgpl2.1+)))
+(define-public python2-empy
+ (package-with-python2 python-empy))
+
(define-public python2-element-tree
(package
(name "python2-element-tree")
@@ -8705,14 +8705,14 @@ to occurrences in strings and comments.")
(define-public python-py3status
(package
(name "python-py3status")
- (version "3.1")
+ (version "3.7")
(source
(origin
(method url-fetch)
(uri (pypi-uri "py3status" version))
(sha256
(base32
- "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
+ "0shxcfz4wcczj0mhwp4w0dvwd2fdd9bgprq8slim1519iiqzgwhq"))))
(build-system python-build-system)
(inputs
`(("file" ,file)))
@@ -8725,8 +8725,8 @@ to occurrences in strings and comments.")
(lambda* (#:key inputs #:allow-other-keys)
(let ((file-path (assoc-ref inputs "file")))
(substitute* "py3status/parse_config.py"
- (("check_output\\(\\['file'")
- (string-append "check_output(['" file-path "/bin/file'")))
+ (("\\['file', '-b'")
+ (string-append "['" file-path "/bin/file', '-b'")))
#t))))
#:tests? #f)) ; TODO: Requires many libraries not in Guix.
(home-page "https://github.com/ultrabug/py3status")
@@ -13205,3 +13205,48 @@ working with iterables.")
(define-public python2-more-itertools
(package-with-python2 python-more-itertools))
+
+(define-public python-latexcodec
+ (package
+ (name "python-latexcodec")
+ (version "1.0.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "latexcodec" version))
+ (sha256
+ (base32
+ "0zdd1gf24i83ykadx0y30n3001j43scqr2saql3vckk5c39dj1wn"))))
+ (build-system python-build-system)
+ (inputs
+ `(("python-six" ,python-six)))
+ (home-page "https://readthedocs.org/projects/latexcodec/")
+ (synopsis "Work with LaTeX code in Python")
+ (description "Lexer and codec to work with LaTeX code in Python.")
+ (license license:expat)))
+
+(define-public python-pybtex
+ (package
+ (name "python-pybtex")
+ (version "0.21")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pybtex" version))
+ (sha256
+ (base32
+ "00300j8dn5pxq4ndxmfmbmycg2znawkqs49val2x6jlmfiy6r2mg"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-nose" ,python-nose)))
+ (inputs
+ `(("python-latexcodec" ,python-latexcodec)
+ ("python-pyyaml" ,python-pyyaml)
+ ("python-six" ,python-six)))
+ (arguments
+ `(#:test-target "nosetests"))
+ (home-page "https://pybtex.org/")
+ (synopsis "BibTeX-compatible bibliography processor")
+ (description "Pybtex is a BibTeX-compatible bibliography processor written
+in Python. You can simply type pybtex instead of bibtex.")
+ (license license:expat)))
diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm
index 1294149609..38a371d233 100644
--- a/gnu/packages/regex.scm
+++ b/gnu/packages/regex.scm
@@ -29,17 +29,15 @@
(define-public re2
(package
(name "re2")
- (version "2018-03-01")
+ (version "2018-04-01")
+ (home-page "https://github.com/google/re2")
(source (origin
(method url-fetch)
- (uri
- (string-append
- "https://github.com/google/re2/archive/"
- version ".tar.gz"))
+ (uri (string-append home-page "/archive/" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0y21g321a802xmxdbkfz0rkcark7ypglpb3jjqhf13m6s7lpxp2i"))))
+ "04n9ngikvpikpshwcrl26sxgn8qbrymy3b5wlbsyfdhknx35951g"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)
@@ -66,7 +64,6 @@
(delete-file (string-append (assoc-ref outputs "out")
"/lib/libre2.a"))
#t)))))
- (home-page "https://github.com/google/re2")
(synopsis "Fast, safe, thread-friendly regular expression engine")
(description "RE2 is a fast, safe, thread-friendly alternative to
backtracking regular expression engines like those used in PCRE, Perl and
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 17fe7ae52c..67dc6badfe 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -109,7 +109,7 @@ a focus on simplicity and productivity.")
(define-public ruby-2.3
(package
(inherit ruby)
- (version "2.3.6")
+ (version "2.3.7")
(source
(origin
(method url-fetch)
@@ -118,7 +118,7 @@ a focus on simplicity and productivity.")
"/ruby-" version ".tar.xz"))
(sha256
(base32
- "0mlz0mk7yyxia37k8fdv8m8a72h61nfbns28430h796l4an6kng0"))
+ "1nwfaifq5624p1ml56qq5dy5w38z37x22r0qgrbgbzrzklmqy7y6"))
(modules '((guix build utils)))
(snippet `(begin
;; Remove bundled libffi
@@ -127,7 +127,7 @@ a focus on simplicity and productivity.")
(define-public ruby-2.2
(package (inherit ruby)
- (version "2.2.9")
+ (version "2.2.10")
(source
(origin
(method url-fetch)
@@ -136,7 +136,7 @@ a focus on simplicity and productivity.")
"/ruby-" version ".tar.xz"))
(sha256
(base32
- "0p18xykx8dm5mmlx5n5243z67lj4vbvwr70bnc5x12am22ql8fri"))))))
+ "0l5nk9mc0q4769d2i9d9y1izk0pk0lms2bl8s3lclv36wsvvqxxz"))))))
(define-public ruby-2.1
(package (inherit ruby)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 69d329bf9a..70140579b6 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -3,7 +3,7 @@
;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
-;;; Copyright © 2017 Nikolai Merinov <nikolai.merinov@member.fsf.org>
+;;; Copyright © 2017, 2018 Nikolai Merinov <nikolai.merinov@member.fsf.org>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
@@ -46,71 +46,48 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (guix download)
- #:use-module (guix base16) ;for generated "cargo" native-inputs
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
+ #:use-module ((guix build utils) #:select (alist-replace))
+ #:use-module (guix utils)
#:use-module (ice-9 match)
#:use-module (srfi srfi-26))
-;; Should be one less than the current released version.
-(define %rust-bootstrap-binaries-version "1.21.0")
-
-(define %rust-bootstrap-binaries
- (origin
- (method url-fetch)
- (uri (string-append
- "https://static.rust-lang.org/dist/"
- "rust-" %rust-bootstrap-binaries-version
- "-" %host-type ".tar.gz"))
- (sha256
- (base32
- (match %host-type
- ("i686-unknown-linux-gnu"
- "1vnvqwz30hvyjcfr1f602lg43v2vlqjr3yhb5vr8xnrcc07yvjmp")
- ("x86_64-unknown-linux-gnu"
- "1s0866qcy0645bqhsbs3pvk2hi52ps8jzs7x096w0as033h707ml")
- ("armv7-unknown-linux-gnueabihf"
- "1ml8fjq2b6j2vn1j314w93pf4wjl97n1mbz609h3i7md0zqscvs1")
- ("aarch64-unknown-linux-gnu"
- "1hv4m2m7xjcph39r6baryfg23hjcr4sbsrfnd1lh0wn67k2fc7j9")
- ("mips64el-unknown-linux-gnuabi64"
- "0p7fzkfcqg5yvj86v434z351dp7s7pgns8nzxj0fz3hmbfbvlvn9")
- (_ "")))))) ; Catch-all for other systems.
-
(define %cargo-reference-project-file "/dev/null")
(define %cargo-reference-hash
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
-(define (increment-rust-version rust-version major patch)
- (match (string-split rust-version #\.)
- (("1" minor _)
- (string-append (number->string major) "."
- (number->string (+ (string->number minor) 1)) "."
- (number->string patch)))))
-
-(define* (cargo-version rustc-version #:optional (patch 0))
- ;; Computes the cargo version that matches the rustc version.
- ;; This has so far continued to follow a predictable pattern:
- ;; https://github.com/rust-lang/cargo/blob/50a46f47/README.md#releases
- (increment-rust-version rustc-version 0 patch))
-
-(define* (rustc-version bootstrap-version #:optional (patch 0))
- ;; Computes the rustc version that can be compiled from a given
- ;; other rustc version. The patch argument is for selecting
- ;; a stability or security fix. 1.11.0 -> 1.12.1 -> 1.13.0
- (increment-rust-version bootstrap-version 1 patch))
-
-(define rustc-bootstrap
+(define rust-bootstrap
(package
- (name "rustc-bootstrap")
- (version %rust-bootstrap-binaries-version)
- (source %rust-bootstrap-binaries)
+ (name "rust-bootstrap")
+ (version "1.22.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://static.rust-lang.org/dist/"
+ "rust-" version "-" %host-type ".tar.gz"))
+ (sha256
+ (base32
+ (match %host-type
+ ("i686-unknown-linux-gnu"
+ "15zqbx86nm13d5vq2gm69b7av4vg479f74b5by64hs3bcwwm08pr")
+ ("x86_64-unknown-linux-gnu"
+ "1yll78x6b3abnvgjf2b66gvp6mmcb9y9jdiqcwhmgc0z0i0fix4c")
+ ("armv7-unknown-linux-gnueabihf"
+ "138a8l528kzp5wyk1mgjaxs304ac5ms8vlpq0ggjaznm6bn2j7a5")
+ ("aarch64-unknown-linux-gnu"
+ "0z6m9m1rx4d96nvybbfmpscq4dv616m615ijy16d5wh2vx0p4na8")
+ ("mips64el-unknown-linux-gnuabi64"
+ "07k4pcv7jvfa48cscdj8752lby7m7xdl88v3a6na1vs675lhgja2")
+ (_ ""))))))
(build-system gnu-build-system)
(native-inputs
`(("patchelf" ,patchelf)))
(inputs
- `(("gcc:lib" ,(canonical-package gcc) "lib")
+ `(("gcc" ,(canonical-package gcc))
+ ("gcc:lib" ,(canonical-package gcc) "lib")
("zlib" ,zlib)))
+ (outputs '("out" "cargo"))
(arguments
`(#:tests? #f
#:strip-binaries? #f
@@ -121,116 +98,63 @@
(replace 'install
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
+ (cargo-out (assoc-ref outputs "cargo"))
(gcc:lib (assoc-ref inputs "gcc:lib"))
(libc (assoc-ref inputs "libc"))
(zlib (assoc-ref inputs "zlib"))
(ld-so (string-append libc ,(glibc-dynamic-linker)))
(rpath (string-append out "/lib:" zlib "/lib:"
libc "/lib:" gcc:lib "/lib"))
+ (cargo-rpath (string-append cargo-out "/lib:" libc "/lib:"
+ gcc:lib "/lib"))
(rustc (string-append out "/bin/rustc"))
- (rustdoc (string-append out "/bin/rustdoc")))
- (system* "bash" "install.sh"
+ (rustdoc (string-append out "/bin/rustdoc"))
+ (cargo (string-append cargo-out "/bin/cargo"))
+ (gcc (assoc-ref inputs "gcc")))
+ ;; Install rustc/rustdoc
+ (invoke "bash" "install.sh"
(string-append "--prefix=" out)
(string-append "--components=rustc,"
"rust-std-" %host-type))
+ ;; Instal cargo
+ (invoke "bash" "install.sh"
+ (string-append "--prefix=" cargo-out)
+ (string-append "--components=cargo"))
(for-each (lambda (file)
- (system* "patchelf" "--set-rpath" rpath file))
+ (invoke "patchelf" "--set-rpath" rpath file))
(cons* rustc rustdoc (find-files out "\\.so$")))
+ (invoke "patchelf" "--set-rpath" cargo-rpath cargo)
(for-each (lambda (file)
- (system* "patchelf" "--set-interpreter" ld-so file))
- (list rustc rustdoc))))))))
- (home-page "https://www.rust-lang.org")
- (synopsis "Prebuilt rust compiler")
- (description "This package provides a pre-built @command{rustc} compiler,
-which can in turn be used to build the final Rust compiler.")
- (license license:asl2.0)))
-
-(define cargo-bootstrap
- (package
- (name "cargo-bootstrap")
- (version (cargo-version %rust-bootstrap-binaries-version 1))
- (source %rust-bootstrap-binaries)
- (build-system gnu-build-system)
- (native-inputs
- `(("patchelf" ,patchelf)))
- (inputs
- `(("gcc:lib" ,(canonical-package gcc) "lib")))
- (arguments
- `(#:tests? #f
- #:strip-binaries? #f
- #:phases
- (modify-phases %standard-phases
- (delete 'configure)
- (delete 'build)
- (replace 'install
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (gcc:lib (assoc-ref inputs "gcc:lib"))
- (libc (assoc-ref inputs "libc"))
- (ld-so (string-append libc ,(glibc-dynamic-linker)))
- (rpath (string-append out "/lib:" libc "/lib:"
- gcc:lib "/lib"))
- (cargo (string-append out "/bin/cargo")))
- (system* "bash" "install.sh"
- (string-append "--prefix=" out)
- "--components=cargo")
- (system* "patchelf"
- "--set-interpreter" ld-so
- "--set-rpath" rpath
- cargo)))))))
+ (invoke "patchelf" "--set-interpreter" ld-so file))
+ (list rustc rustdoc cargo))
+ ;; Rust requires a C toolchain for linking. The prebuilt
+ ;; binaries expect a compiler called cc. Thus symlink gcc
+ ;; to cc.
+ (symlink (string-append gcc "/bin/gcc")
+ (string-append out "/bin/cc"))
+ #t))))))
(home-page "https://www.rust-lang.org")
- (synopsis "Prebuilt cargo package manager")
- (description "This package provides a pre-built @command{cargo} package
-manager, which is required to build itself.")
+ (synopsis "Prebuilt rust compiler and cargo package manager")
+ (description "This package provides a pre-built @command{rustc} compiler
+and a pre-built @command{cargo} package manaer, which can
+in turn be used to build the final Rust.")
(license license:asl2.0)))
-(define rust-bootstrap
- (package
- (name "rust-bootstrap")
- (version %rust-bootstrap-binaries-version)
- (source #f)
- (build-system trivial-build-system)
- (propagated-inputs
- `(("rustc-bootstrap" ,rustc-bootstrap)
- ("cargo-bootstrap" ,cargo-bootstrap)
- ("gcc" ,(canonical-package gcc))))
- (arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
- (let ((out (assoc-ref %outputs "out"))
- (gcc (assoc-ref %build-inputs "gcc")))
- (mkdir-p (string-append out "/bin"))
- ;; Rust requires a C toolchain for linking. The prebuilt
- ;; binaries expect a compiler called cc. Thus symlink gcc
- ;; to cc.
- (symlink (string-append gcc "/bin/gcc")
- (string-append out "/bin/cc"))
- #t))))
- (home-page "https://www.rust-lang.org")
- (synopsis "Rust bootstrapping meta package")
- (description "Meta package for a rust environment. Provides pre-compiled
-rustc-bootstrap and cargo-bootstrap packages.")
- (license license:asl2.0)))
-(define-public rustc
+(define (rust-source version hash)
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://static.rust-lang.org/dist/"
+ "rustc-" version "-src.tar.gz"))
+ (sha256 (base32 hash))
+ (modules '((guix build utils)))
+ (snippet '(begin (delete-file-recursively "src/llvm") #t))))
+
+(define-public rust-1.23
(package
- (name "rustc")
- (version (rustc-version %rust-bootstrap-binaries-version 1))
- (source (origin
- (method url-fetch)
- (uri (string-append
- "https://static.rust-lang.org/dist/"
- "rustc-" version "-src.tar.gz"))
- (sha256
- (base32
- "1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))
- (modules '((guix build utils)))
- (snippet
- `(begin
- (delete-file-recursively "src/llvm")
- #t))))
+ (name "rust")
+ (version "1.23.0")
+ (source (rust-source version "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))
(build-system gnu-build-system)
(native-inputs
`(("bison" ,bison) ; For the tests
@@ -240,11 +164,16 @@ rustc-bootstrap and cargo-bootstrap packages.")
("git" ,git)
("procps" ,procps) ; For the tests
("python-2" ,python-2)
- ("rust-bootstrap" ,rust-bootstrap)
+ ("rustc-bootstrap" ,rust-bootstrap)
+ ("cargo-bootstrap" ,rust-bootstrap "cargo")
+ ("pkg-config" ,pkg-config) ; For "cargo"
("which" ,which)))
(inputs
`(("jemalloc" ,jemalloc-4.5.0)
- ("llvm" ,llvm-3.9.1)))
+ ("llvm" ,llvm-3.9.1)
+ ("openssl" ,openssl)
+ ("libcurl" ,curl))) ; For "cargo"
+ (outputs '("out" "doc" "cargo"))
(arguments
`(#:imported-modules ,%cargo-build-system-modules ;for `generate-checksums'
#:phases
@@ -259,9 +188,6 @@ rustc-bootstrap and cargo-bootstrap packages.")
(add-after 'unpack 'patch-tests
(lambda* (#:key inputs #:allow-other-keys)
(let ((bash (assoc-ref inputs "bash")))
- (substitute* "src/build_helper/lib.rs"
- ;; In same folder as gcc there is only "gcc-ar" utility
- (("file\\.push_str\\(\"ar\"\\);") "file.push_str(\"gcc-ar\");"))
(substitute* "src/libstd/process.rs"
;; The newline is intentional.
;; There's a line length "tidy" check in Rust which would
@@ -277,15 +203,18 @@ rustc-bootstrap and cargo-bootstrap packages.")
;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH.
;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
(delete-file-recursively "src/test/run-make/linker-output-non-utf8")
- (substitute* "src/build_helper/lib.rs"
- ;; Bug in Rust code.
- ;; Current implementation assume that if dst not exist then it's mtime
- ;; is 0, but in same time "src" have 0 mtime in guix build!
- (("let threshold = mtime\\(dst\\);")
- "if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);"))
#t)))
+ (add-after 'patch-tests 'fix-mtime-bug
+ (lambda* _
+ (substitute* "src/build_helper/lib.rs"
+ ;; Bug in Rust code.
+ ;; Current implementation assume that if dst not exist then it's mtime
+ ;; is 0, but in same time "src" have 0 mtime in guix build!
+ (("let threshold = mtime\\(dst\\);")
+ "if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);"))
+ #t))
(add-after 'patch-source-shebangs 'patch-cargo-checksums
- (lambda* (#:key inputs #:allow-other-keys)
+ (lambda* _
(substitute* "src/Cargo.lock"
(("(\"checksum .* = )\".*\"" all name)
(string-append name "\"" ,%cargo-reference-hash "\"")))
@@ -303,6 +232,7 @@ rustc-bootstrap and cargo-bootstrap packages.")
(replace 'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
+ (doc (assoc-ref outputs "doc"))
(gcc (assoc-ref inputs "gcc"))
(gdb (assoc-ref inputs "gdb"))
(binutils (assoc-ref inputs "binutils"))
@@ -318,15 +248,18 @@ rustc-bootstrap and cargo-bootstrap packages.")
[build]
cargo = \"" cargo "/bin/cargo" "\"
rustc = \"" rustc "/bin/rustc" "\"
+docs = true
python = \"" python "/bin/python2" "\"
gdb = \"" gdb "/bin/gdb" "\"
vendor = true
submodules = false
[install]
prefix = \"" out "\"
+docdir = \"" doc "/share/doc/rust" "\"
+sysconfdir = \"etc\"
+localstatedir = \"var/lib\"
[rust]
default-linker = \"" gcc "/bin/gcc" "\"
-default-ar = \"" binutils "/bin/ar" "\"
channel = \"stable\"
rpath = true
# There is 2 failed codegen tests:
@@ -337,12 +270,13 @@ codegen-tests = false
llvm-config = \"" llvm "/bin/llvm-config" "\"
cc = \"" gcc "/bin/gcc" "\"
cxx = \"" gcc "/bin/g++" "\"
+ar = \"" binutils "/bin/ar" "\"
jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
[dist]
") port)))
#t)))
(add-before 'build 'reset-timestamps-after-changes
- (lambda* (#:key inputs outputs #:allow-other-keys)
+ (lambda* _
(define ref (stat "README.md"))
(for-each
(lambda (filename)
@@ -350,14 +284,21 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
(find-files "." #:directories? #t))
#t))
(replace 'build
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (zero? (system* "./x.py" "build"))))
+ (lambda* _
+ (invoke "./x.py" "build")
+ (invoke "./x.py" "build" "src/tools/cargo")))
(replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (zero? (system* "./x.py" "test"))))
+ (lambda* _
+ (invoke "./x.py" "test")))
(replace 'install
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (zero? (system* "./x.py" "install"))))
+ (lambda* (#:key outputs #:allow-other-keys)
+ (invoke "./x.py" "install")
+ (substitute* "config.toml"
+ ;; replace prefix to specific output
+ (("prefix = \"[^\"]*\"")
+ (string-append "prefix = \"" (assoc-ref outputs "cargo") "\"")))
+ (invoke "./x.py" "install" "cargo")
+ #t))
(add-after 'install 'wrap-rustc
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
@@ -377,1095 +318,19 @@ safety and thread safety guarantees.")
;; Dual licensed.
(license (list license:asl2.0 license:expat))))
-;; This tries very hard not to get into a cyclic dependency like this:
-;; cargo <- cargo-build-system <- cargo.
-(define-public cargo
- (package
- (name "cargo")
- (version (cargo-version (rustc-version %rust-bootstrap-binaries-version) 0))
- (source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/rust-lang/cargo/archive/"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "0kr7rml7v2bm7zl8jcb3056h63zpyy9m08s212i8vfwxf6lf5fzl"))))
- (build-system cargo-build-system)
- (propagated-inputs
- `(("cmake" ,cmake)
- ("pkg-config" ,pkg-config)))
- (inputs
- `(("curl" ,curl)
- ("libgit2" ,libgit2)
- ("libssh2" ,libssh2)
- ("openssl" ,openssl)
- ("python-2" ,python-2)
- ("zlib" ,zlib)))
- (native-inputs
- `(("git" ,git) ; required for tests
- ;; Next dependencies generated with next command:
- ;; cat Cargo.lock | awk '
- ;; /^"checksum/
- ;; { oname=name=$2; vers=$3; hash=$6;
- ;; if (ns[name] != 1) { ns[name]=1; } else { name = name "-" vers; }
- ;; print " (\"rust-" name "\"";
- ;; print " ,(origin";
- ;; print " (method url-fetch)";
- ;; print " (uri (crate-uri \"" oname "\" \"" vers "\"))";
- ;; print " (file-name \"rust-" oname "\-\" vers "\")
- ;; print " (sha256";
- ;; print " (base16-string->bytevector";
- ;; print " " hash "))))"
- ;; }'
- ("rust-advapi32-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "advapi32-sys" "0.2.0"))
- (file-name "rust-advapi32-sys-0.2.0")
- (sha256
- (base16-string->bytevector
- "e06588080cb19d0acb6739808aafa5f26bfb2ca015b2b6370028b44cf7cb8a9a"))))
- ("rust-aho-corasick"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "aho-corasick" "0.5.3"))
- (file-name "rust-aho-corasick-0.5.3")
- (sha256
- (base16-string->bytevector
- "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"))))
- ("rust-aho-corasick-0.6.3"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "aho-corasick" "0.6.3"))
- (file-name "rust-aho-corasick-0.6.3")
- (sha256
- (base16-string->bytevector
- "500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699"))))
- ("rust-atty"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "atty" "0.2.3"))
- (file-name "rust-atty-0.2.3")
- (sha256
- (base16-string->bytevector
- "21e50800ec991574876040fff8ee46b136a53e985286fbe6a3bdfe6421b78860"))))
- ("rust-backtrace"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "backtrace" "0.3.3"))
- (file-name "rust-backtrace-0.3.3")
- (sha256
- (base16-string->bytevector
- "99f2ce94e22b8e664d95c57fff45b98a966c2252b60691d0b7aeeccd88d70983"))))
- ("rust-backtrace-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "backtrace-sys" "0.1.14"))
- (file-name "rust-backtrace-sys-0.1.14")
- (sha256
- (base16-string->bytevector
- "c63ea141ef8fdb10409d0f5daf30ac51f84ef43bff66f16627773d2a292cd189"))))
- ("rust-bitflags"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "bitflags" "0.7.0"))
- (file-name "rust-bitflags-0.7.0")
- (sha256
- (base16-string->bytevector
- "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"))))
- ("rust-bitflags-0.9.1"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "bitflags" "0.9.1"))
- (file-name "rust-bitflags-0.9.1")
- (sha256
- (base16-string->bytevector
- "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"))))
- ("rust-bufstream"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "bufstream" "0.1.3"))
- (file-name "rust-bufstream-0.1.3")
- (sha256
- (base16-string->bytevector
- "f2f382711e76b9de6c744cc00d0497baba02fb00a787f088c879f01d09468e32"))))
- ("rust-cc"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "cc" "1.0.0"))
- (file-name "rust-cc-1.0.0")
- (sha256
- (base16-string->bytevector
- "7db2f146208d7e0fbee761b09cd65a7f51ccc38705d4e7262dad4d73b12a76b1"))))
- ("rust-cfg-if"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "cfg-if" "0.1.2"))
- (file-name "rust-cfg-if-0.1.2")
- (sha256
- (base16-string->bytevector
- "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de"))))
- ("rust-cmake"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "cmake" "0.1.26"))
- (file-name "rust-cmake-0.1.26")
- (sha256
- (base16-string->bytevector
- "357c07e7a1fc95732793c1edb5901e1a1f305cfcf63a90eb12dbd22bdb6b789d"))))
- ("rust-commoncrypto"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "commoncrypto" "0.2.0"))
- (file-name "rust-commoncrypto-0.2.0")
- (sha256
- (base16-string->bytevector
- "d056a8586ba25a1e4d61cb090900e495952c7886786fc55f909ab2f819b69007"))))
- ("rust-commoncrypto-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "commoncrypto-sys" "0.2.0"))
- (file-name "rust-commoncrypto-sys-0.2.0")
- (sha256
- (base16-string->bytevector
- "1fed34f46747aa73dfaa578069fd8279d2818ade2b55f38f22a9401c7f4083e2"))))
- ("rust-conv"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "conv" "0.3.3"))
- (file-name "rust-conv-0.3.3")
- (sha256
- (base16-string->bytevector
- "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"))))
- ("rust-core-foundation"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "core-foundation" "0.4.4"))
- (file-name "rust-core-foundation-0.4.4")
- (sha256
- (base16-string->bytevector
- "5909502e547762013619f4c4e01cc7393c20fe2d52d7fa471c1210adb2320dc7"))))
- ("rust-core-foundation-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "core-foundation-sys" "0.4.4"))
- (file-name "rust-core-foundation-sys-0.4.4")
- (sha256
- (base16-string->bytevector
- "bc9fb3d6cb663e6fd7cf1c63f9b144ee2b1e4a78595a0451dd34bff85b9a3387"))))
- ("rust-crossbeam"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "crossbeam" "0.2.10"))
- (file-name "rust-crossbeam-0.2.10")
- (sha256
- (base16-string->bytevector
- "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97"))))
- ("rust-crossbeam-0.3.0"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "crossbeam" "0.3.0"))
- (file-name "rust-crossbeam-0.3.0")
- (sha256
- (base16-string->bytevector
- "8837ab96533202c5b610ed44bc7f4183e7957c1c8f56e8cc78bb098593c8ba0a"))))
- ("rust-crypto-hash"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "crypto-hash" "0.3.0"))
- (file-name "rust-crypto-hash-0.3.0")
- (sha256
- (base16-string->bytevector
- "34903878eec1694faf53cae8473a088df333181de421d4d3d48061d6559fe602"))))
- ("rust-curl"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "curl" "0.4.8"))
- (file-name "rust-curl-0.4.8")
- (sha256
- (base16-string->bytevector
- "7034c534a1d7d22f7971d6088aa9d281d219ef724026c3428092500f41ae9c2c"))))
- ("rust-curl-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "curl-sys" "0.3.15"))
- (file-name "rust-curl-sys-0.3.15")
- (sha256
- (base16-string->bytevector
- "4bee31aa3a079d5f3ff9579ea4dcfb1b1a17a40886f5f467436d383e78134b55"))))
- ("rust-custom_derive"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "custom_derive" "0.1.7"))
- (file-name "rust-custom_derive-0.1.7")
- (sha256
- (base16-string->bytevector
- "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"))))
- ("rust-dbghelp-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "dbghelp-sys" "0.2.0"))
- (file-name "rust-dbghelp-sys-0.2.0")
- (sha256
- (base16-string->bytevector
- "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850"))))
- ("rust-docopt"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "docopt" "0.8.1"))
- (file-name "rust-docopt-0.8.1")
- (sha256
- (base16-string->bytevector
- "3b5b93718f8b3e5544fcc914c43de828ca6c6ace23e0332c6080a2977b49787a"))))
- ("rust-dtoa"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "dtoa" "0.4.2"))
- (file-name "rust-dtoa-0.4.2")
- (sha256
- (base16-string->bytevector
- "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab"))))
- ("rust-env_logger"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "env_logger" "0.4.3"))
- (file-name "rust-env_logger-0.4.3")
- (sha256
- (base16-string->bytevector
- "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b"))))
- ("rust-error-chain"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "error-chain" "0.11.0"))
- (file-name "rust-error-chain-0.11.0")
- (sha256
- (base16-string->bytevector
- "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3"))))
- ("rust-filetime"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "filetime" "0.1.12"))
- (file-name "rust-filetime-0.1.12")
- (sha256
- (base16-string->bytevector
- "6ab199bf38537c6f38792669e081e0bb278b9b7405bba2642e4e5d15bf732c0e"))))
- ("rust-flate2"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "flate2" "0.2.20"))
- (file-name "rust-flate2-0.2.20")
- (sha256
- (base16-string->bytevector
- "e6234dd4468ae5d1e2dbb06fe2b058696fdc50a339c68a393aefbf00bc81e423"))))
- ("rust-fnv"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "fnv" "1.0.5"))
- (file-name "rust-fnv-1.0.5")
- (sha256
- (base16-string->bytevector
- "6cc484842f1e2884faf56f529f960cc12ad8c71ce96cc7abba0a067c98fee344"))))
- ("rust-foreign-types"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "foreign-types" "0.2.0"))
- (file-name "rust-foreign-types-0.2.0")
- (sha256
- (base16-string->bytevector
- "3e4056b9bd47f8ac5ba12be771f77a0dae796d1bbaaf5fd0b9c2d38b69b8a29d"))))
- ("rust-fs2"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "fs2" "0.4.2"))
- (file-name "rust-fs2-0.4.2")
- (sha256
- (base16-string->bytevector
- "9ab76cfd2aaa59b7bf6688ad9ba15bbae64bff97f04ea02144cfd3443e5c2866"))))
- ("rust-git2"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "git2" "0.6.8"))
- (file-name "rust-git2-0.6.8")
- (sha256
- (base16-string->bytevector
- "0c1c0203d653f4140241da0c1375a404f0a397249ec818cd2076c6280c50f6fa"))))
- ("rust-git2-curl"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "git2-curl" "0.7.0"))
- (file-name "rust-git2-curl-0.7.0")
- (sha256
- (base16-string->bytevector
- "68676bc784bf0bef83278898929bf64a251e87c0340723d0b93fa096c9c5bf8e"))))
- ("rust-glob"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "glob" "0.2.11"))
- (file-name "rust-glob-0.2.11")
- (sha256
- (base16-string->bytevector
- "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"))))
- ("rust-globset"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "globset" "0.2.0"))
- (file-name "rust-globset-0.2.0")
- (sha256
- (base16-string->bytevector
- "feeb1b6840809ef5efcf7a4a990bc4e1b7ee3df8cf9e2379a75aeb2ba42ac9c3"))))
- ("rust-hamcrest"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "hamcrest" "0.1.1"))
- (file-name "rust-hamcrest-0.1.1")
- (sha256
- (base16-string->bytevector
- "bf088f042a467089e9baa4972f57f9247e42a0cc549ba264c7a04fbb8ecb89d4"))))
- ("rust-hex"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "hex" "0.2.0"))
- (file-name "rust-hex-0.2.0")
- (sha256
- (base16-string->bytevector
- "d6a22814455d41612f41161581c2883c0c6a1c41852729b17d5ed88f01e153aa"))))
- ("rust-home"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "home" "0.3.0"))
- (file-name "rust-home-0.3.0")
- (sha256
- (base16-string->bytevector
- "9f25ae61099d8f3fee8b483df0bd4ecccf4b2731897aad40d50eca1b641fe6db"))))
- ("rust-idna"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "idna" "0.1.4"))
- (file-name "rust-idna-0.1.4")
- (sha256
- (base16-string->bytevector
- "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d"))))
- ("rust-ignore"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "ignore" "0.2.2"))
- (file-name "rust-ignore-0.2.2")
- (sha256
- (base16-string->bytevector
- "b3fcaf2365eb14b28ec7603c98c06cc531f19de9eb283d89a3dff8417c8c99f5"))))
- ("rust-itoa"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "itoa" "0.3.4"))
- (file-name "rust-itoa-0.3.4")
- (sha256
- (base16-string->bytevector
- "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c"))))
- ("rust-jobserver"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "jobserver" "0.1.6"))
- (file-name "rust-jobserver-0.1.6")
- (sha256
- (base16-string->bytevector
- "443ae8bc0af6c106e6e8b77e04684faecc1a5ce94e058f4c2b0a037b0ea1b133"))))
- ("rust-kernel32-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "kernel32-sys" "0.2.2"))
- (file-name "rust-kernel32-sys-0.2.2")
- (sha256
- (base16-string->bytevector
- "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"))))
- ("rust-lazy_static"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "lazy_static" "0.2.9"))
- (file-name "rust-lazy_static-0.2.9")
- (sha256
- (base16-string->bytevector
- "c9e5e58fa1a4c3b915a561a78a22ee0cac6ab97dca2504428bc1cb074375f8d5"))))
- ("rust-libc"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "libc" "0.2.31"))
- (file-name "rust-libc-0.2.31")
- (sha256
- (base16-string->bytevector
- "d1419b2939a0bc44b77feb34661583c7546b532b192feab36249ab584b86856c"))))
- ("rust-libgit2-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "libgit2-sys" "0.6.16"))
- (file-name "rust-libgit2-sys-0.6.16")
- (sha256
- (base16-string->bytevector
- "6f74b4959cef96898f5123148724fc7dee043b9a6b99f219d948851bfbe53cb2"))))
- ("rust-libssh2-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "libssh2-sys" "0.2.6"))
- (file-name "rust-libssh2-sys-0.2.6")
- (sha256
- (base16-string->bytevector
- "0db4ec23611747ef772db1c4d650f8bd762f07b461727ec998f953c614024b75"))))
- ("rust-libz-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "libz-sys" "1.0.17"))
- (file-name "rust-libz-sys-1.0.17")
- (sha256
- (base16-string->bytevector
- "44ebbc760fd2d2f4d93de09a0e13d97e057612052e871da9985cedcb451e6bd5"))))
- ("rust-log"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "log" "0.3.8"))
- (file-name "rust-log-0.3.8")
- (sha256
- (base16-string->bytevector
- "880f77541efa6e5cc74e76910c9884d9859683118839d6a1dc3b11e63512565b"))))
- ("rust-magenta"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "magenta" "0.1.1"))
- (file-name "rust-magenta-0.1.1")
- (sha256
- (base16-string->bytevector
- "4bf0336886480e671965f794bc9b6fce88503563013d1bfb7a502c81fe3ac527"))))
- ("rust-magenta-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "magenta-sys" "0.1.1"))
- (file-name "rust-magenta-sys-0.1.1")
- (sha256
- (base16-string->bytevector
- "40d014c7011ac470ae28e2f76a02bfea4a8480f73e701353b49ad7a8d75f4699"))))
- ("rust-matches"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "matches" "0.1.6"))
- (file-name "rust-matches-0.1.6")
- (sha256
- (base16-string->bytevector
- "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376"))))
- ("rust-memchr"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "memchr" "0.1.11"))
- (file-name "rust-memchr-0.1.11")
- (sha256
- (base16-string->bytevector
- "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"))))
- ("rust-memchr-1.0.1"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "memchr" "1.0.1"))
- (file-name "rust-memchr-1.0.1")
- (sha256
- (base16-string->bytevector
- "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4"))))
- ("rust-miniz-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "miniz-sys" "0.1.10"))
- (file-name "rust-miniz-sys-0.1.10")
- (sha256
- (base16-string->bytevector
- "609ce024854aeb19a0ef7567d348aaa5a746b32fb72e336df7fcc16869d7e2b4"))))
- ("rust-miow"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "miow" "0.2.1"))
- (file-name "rust-miow-0.2.1")
- (sha256
- (base16-string->bytevector
- "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"))))
- ("rust-net2"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "net2" "0.2.31"))
- (file-name "rust-net2-0.2.31")
- (sha256
- (base16-string->bytevector
- "3a80f842784ef6c9a958b68b7516bc7e35883c614004dd94959a4dca1b716c09"))))
- ("rust-num"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "num" "0.1.40"))
- (file-name "rust-num-0.1.40")
- (sha256
- (base16-string->bytevector
- "a311b77ebdc5dd4cf6449d81e4135d9f0e3b153839ac90e648a8ef538f923525"))))
- ("rust-num-bigint"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "num-bigint" "0.1.40"))
- (file-name "rust-num-bigint-0.1.40")
- (sha256
- (base16-string->bytevector
- "8fd0f8dbb4c0960998958a796281d88c16fbe68d87b1baa6f31e2979e81fd0bd"))))
- ("rust-num-complex"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "num-complex" "0.1.40"))
- (file-name "rust-num-complex-0.1.40")
- (sha256
- (base16-string->bytevector
- "503e668405c5492d67cf662a81e05be40efe2e6bcf10f7794a07bd9865e704e6"))))
- ("rust-num-integer"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "num-integer" "0.1.35"))
- (file-name "rust-num-integer-0.1.35")
- (sha256
- (base16-string->bytevector
- "d1452e8b06e448a07f0e6ebb0bb1d92b8890eea63288c0b627331d53514d0fba"))))
- ("rust-num-iter"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "num-iter" "0.1.34"))
- (file-name "rust-num-iter-0.1.34")
- (sha256
- (base16-string->bytevector
- "7485fcc84f85b4ecd0ea527b14189281cf27d60e583ae65ebc9c088b13dffe01"))))
- ("rust-num-rational"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "num-rational" "0.1.39"))
- (file-name "rust-num-rational-0.1.39")
- (sha256
- (base16-string->bytevector
- "288629c76fac4b33556f4b7ab57ba21ae202da65ba8b77466e6d598e31990790"))))
- ("rust-num-traits"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "num-traits" "0.1.40"))
- (file-name "rust-num-traits-0.1.40")
- (sha256
- (base16-string->bytevector
- "99843c856d68d8b4313b03a17e33c4bb42ae8f6610ea81b28abe076ac721b9b0"))))
- ("rust-num_cpus"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "num_cpus" "1.7.0"))
- (file-name "rust-num_cpus-1.7.0")
- (sha256
- (base16-string->bytevector
- "514f0d73e64be53ff320680ca671b64fe3fb91da01e1ae2ddc99eb51d453b20d"))))
- ("rust-openssl"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "openssl" "0.9.19"))
- (file-name "rust-openssl-0.9.19")
- (sha256
- (base16-string->bytevector
- "816914b22eb15671d62c73442a51978f311e911d6a6f6cbdafa6abce1b5038fc"))))
- ("rust-openssl-probe"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "openssl-probe" "0.1.1"))
- (file-name "rust-openssl-probe-0.1.1")
- (sha256
- (base16-string->bytevector
- "d98df0270d404ccd3c050a41d579c52d1db15375168bb3471e04ec0f5f378daf"))))
- ("rust-openssl-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "openssl-sys" "0.9.19"))
- (file-name "rust-openssl-sys-0.9.19")
- (sha256
- (base16-string->bytevector
- "1e4c63a7d559c1e5afa6d6a9e6fa34bbc5f800ffc9ae08b72c605420b0c4f5e8"))))
- ("rust-percent-encoding"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "percent-encoding" "1.0.0"))
- (file-name "rust-precent-encoding-1.0.0")
- (sha256
- (base16-string->bytevector
- "de154f638187706bde41d9b4738748933d64e6b37bdbffc0b47a97d16a6ae356"))))
- ("rust-pkg-config"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "pkg-config" "0.3.9"))
- (file-name "rust-pkg-config-0.3.9")
- (sha256
- (base16-string->bytevector
- "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903"))))
- ("rust-psapi-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "psapi-sys" "0.1.0"))
- (file-name "rust-psapi-sys-0.1.0")
- (sha256
- (base16-string->bytevector
- "abcd5d1a07d360e29727f757a9decb3ce8bc6e0efa8969cfaad669a8317a2478"))))
- ("rust-quote"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "quote" "0.3.15"))
- (file-name "rust-quote-0.3.15")
- (sha256
- (base16-string->bytevector
- "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"))))
- ("rust-rand"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "rand" "0.3.16"))
- (file-name "rust-rand-0.3.16")
- (sha256
- (base16-string->bytevector
- "eb250fd207a4729c976794d03db689c9be1d634ab5a1c9da9492a13d8fecbcdf"))))
- ("rust-redox_syscall"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "redox_syscall" "0.1.31"))
- (file-name "rust-redox_syscall-0.1.31")
- (sha256
- (base16-string->bytevector
- "8dde11f18c108289bef24469638a04dce49da56084f2d50618b226e47eb04509"))))
- ("rust-redox_termios"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "redox_termios" "0.1.1"))
- (file-name "rust-redox_termios-0.1.1")
- (sha256
- (base16-string->bytevector
- "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"))))
- ("rust-regex"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "regex" "0.1.80"))
- (file-name "rust-regex-0.1.80")
- (sha256
- (base16-string->bytevector
- "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"))))
- ("rust-regex-0.2.2"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "regex" "0.2.2"))
- (file-name "rust-regex-0.2.2")
- (sha256
- (base16-string->bytevector
- "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b"))))
- ("rust-regex-syntax"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "regex-syntax" "0.3.9"))
- (file-name "rust-regex-syntax-0.3.9")
- (sha256
- (base16-string->bytevector
- "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"))))
- ("rust-regex-syntax-0.4.1"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "regex-syntax" "0.4.1"))
- (file-name "rust-regex-syntax-0.4.1")
- (sha256
- (base16-string->bytevector
- "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db"))))
- ("rust-rustc-demangle"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "rustc-demangle" "0.1.5"))
- (file-name "rust-rustc-demangle-0.1.5")
- (sha256
- (base16-string->bytevector
- "aee45432acc62f7b9a108cc054142dac51f979e69e71ddce7d6fc7adf29e817e"))))
- ("rust-rustc-serialize"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "rustc-serialize" "0.3.24"))
- (file-name "rust-rustc-serialize-0.3.24")
- (sha256
- (base16-string->bytevector
- "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"))))
- ("rust-same-file"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "same-file" "0.1.3"))
- (file-name "rust-same-file-0.1.3")
- (sha256
- (base16-string->bytevector
- "d931a44fdaa43b8637009e7632a02adc4f2b2e0733c08caa4cf00e8da4a117a7"))))
- ("rust-scoped-tls"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "scoped-tls" "0.1.0"))
- (file-name "rust-scoped-tls-0.1.0")
- (sha256
- (base16-string->bytevector
- "f417c22df063e9450888a7561788e9bd46d3bb3c1466435b4eccb903807f147d"))))
- ("rust-scopeguard"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "scopeguard" "0.1.2"))
- (file-name "rust-scopeguard-0.1.2")
- (sha256
- (base16-string->bytevector
- "59a076157c1e2dc561d8de585151ee6965d910dd4dcb5dabb7ae3e83981a6c57"))))
- ("rust-semver"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "semver" "0.8.0"))
- (file-name "rust-semver-0.8.0")
- (sha256
- (base16-string->bytevector
- "bee2bc909ab2d8d60dab26e8cad85b25d795b14603a0dcb627b78b9d30b6454b"))))
- ("rust-semver-parser"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "semver-parser" "0.7.0"))
- (file-name "rust-semver-parser-0.7.0")
- (sha256
- (base16-string->bytevector
- "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"))))
- ("rust-serde"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "serde" "1.0.15"))
- (file-name "rust-serde-1.0.15")
- (sha256
- (base16-string->bytevector
- "6a7046c9d4c6c522d10b2d098f9bebe2bef227e0e74044d8c1bfcf6b476af799"))))
- ("rust-serde_derive"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "serde_derive" "1.0.15"))
- (file-name "rust-serde_derive-1.0.15")
- (sha256
- (base16-string->bytevector
- "1afcaae083fd1c46952a315062326bc9957f182358eb7da03b57ef1c688f7aa9"))))
- ("rust-serde_derive_internals"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "serde_derive_internals" "0.16.0"))
- (file-name "rust-serde_derive_internals-0.16.0")
- (sha256
- (base16-string->bytevector
- "bd381f6d01a6616cdba8530492d453b7761b456ba974e98768a18cad2cd76f58"))))
- ("rust-serde_ignored"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "serde_ignored" "0.0.4"))
- (file-name "rust-serde_ignored-0.0.4")
- (sha256
- (base16-string->bytevector
- "190e9765dcedb56be63b6e0993a006c7e3b071a016a304736e4a315dc01fb142"))))
- ("rust-serde_json"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "serde_json" "1.0.3"))
- (file-name "rust-serde_json-1.0.3")
- (sha256
- (base16-string->bytevector
- "d243424e06f9f9c39e3cd36147470fd340db785825e367625f79298a6ac6b7ac"))))
- ("rust-shell-escape"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "shell-escape" "0.1.3"))
- (file-name "rust-shell-escape-0.1.3")
- (sha256
- (base16-string->bytevector
- "dd5cc96481d54583947bfe88bf30c23d53f883c6cd0145368b69989d97b84ef8"))))
- ("rust-socket2"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "socket2" "0.2.3"))
- (file-name "rust-socket2-0.2.3")
- (sha256
- (base16-string->bytevector
- "9e76b159741052c7deaa9fd0b5ca6b5f79cecf525ed665abfe5002086c6b2791"))))
- ("rust-strsim"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "strsim" "0.6.0"))
- (file-name "rust-strsim-0.6.0")
- (sha256
- (base16-string->bytevector
- "b4d15c810519a91cf877e7e36e63fe068815c678181439f2f29e2562147c3694"))))
- ("rust-syn"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "syn" "0.11.11"))
- (file-name "rust-syn-0.11.11")
- (sha256
- (base16-string->bytevector
- "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad"))))
- ("rust-synom"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "synom" "0.11.3"))
- (file-name "rust-synom-0.11.3")
- (sha256
- (base16-string->bytevector
- "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"))))
- ("rust-tar"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "tar" "0.4.13"))
- (file-name "rust-tar-0.4.13")
- (sha256
- (base16-string->bytevector
- "281285b717926caa919ad905ef89c63d75805c7d89437fb873100925a53f2b1b"))))
- ("rust-tempdir"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "tempdir" "0.3.5"))
- (file-name "rust-tempdir-0.3.5")
- (sha256
- (base16-string->bytevector
- "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6"))))
- ("rust-termcolor"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "termcolor" "0.3.3"))
- (file-name "rust-termcolor-0.3.3")
- (sha256
- (base16-string->bytevector
- "9065bced9c3e43453aa3d56f1e98590b8455b341d2fa191a1090c0dd0b242c75"))))
- ("rust-termion"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "termion" "1.5.1"))
- (file-name "rust-termion-1.5.1")
- (sha256
- (base16-string->bytevector
- "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096"))))
- ("rust-thread-id"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "thread-id" "2.0.0"))
- (file-name "rust-thread-id-2.0.0")
- (sha256
- (base16-string->bytevector
- "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"))))
- ("rust-thread_local"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "thread_local" "0.2.7"))
- (file-name "rust-thread_local-0.2.7")
- (sha256
- (base16-string->bytevector
- "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"))))
- ("rust-thread_local-0.3.4"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "thread_local" "0.3.4"))
- (file-name "rust-thread_local-0.3.4")
- (sha256
- (base16-string->bytevector
- "1697c4b57aeeb7a536b647165a2825faddffb1d3bad386d507709bd51a90bb14"))))
- ("rust-toml"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "toml" "0.4.5"))
- (file-name "rust-toml-0.4.5")
- (sha256
- (base16-string->bytevector
- "a7540f4ffc193e0d3c94121edb19b055670d369f77d5804db11ae053a45b6e7e"))))
- ("rust-unicode-bidi"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "unicode-bidi" "0.3.4"))
- (file-name "rust-unicode-bidi-0.3.4")
- (sha256
- (base16-string->bytevector
- "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"))))
- ("rust-unicode-normalization"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "unicode-normalization" "0.1.5"))
- (file-name "rust-unicode-normalization-0.1.5")
- (sha256
- (base16-string->bytevector
- "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f"))))
- ("rust-unicode-xid"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "unicode-xid" "0.0.4"))
- (file-name "rust-unicode-xid-0.0.4")
- (sha256
- (base16-string->bytevector
- "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"))))
- ("rust-unreachable"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "unreachable" "1.0.0"))
- (file-name "rust-unreachable-1.0.0")
- (sha256
- (base16-string->bytevector
- "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"))))
- ("rust-url"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "url" "1.5.1"))
- (file-name "rust-url-1.5.1")
- (sha256
- (base16-string->bytevector
- "eeb819346883532a271eb626deb43c4a1bb4c4dd47c519bd78137c3e72a4fe27"))))
- ("rust-userenv-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "userenv-sys" "0.2.0"))
- (file-name "rust-userenv-sys-0.2.0")
- (sha256
- (base16-string->bytevector
- "71d28ea36bbd9192d75bd9fa9b39f96ddb986eaee824adae5d53b6e51919b2f3"))))
- ("rust-utf8-ranges"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "utf8-ranges" "0.1.3"))
- (file-name "rust-utf8-ranges-0.1.3")
- (sha256
- (base16-string->bytevector
- "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"))))
- ("rust-utf8-ranges-1.0.0"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "utf8-ranges" "1.0.0"))
- (file-name "rust-utf8-ranges-1.0.0")
- (sha256
- (base16-string->bytevector
- "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122"))))
- ("rust-vcpkg"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "vcpkg" "0.2.2"))
- (file-name "rust-vcpkg-0.2.2")
- (sha256
- (base16-string->bytevector
- "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b"))))
- ("rust-void"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "void" "1.0.2"))
- (file-name "rust-void-1.0.2")
- (sha256
- (base16-string->bytevector
- "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"))))
- ("rust-walkdir"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "walkdir" "1.0.7"))
- (file-name "rust-walkdir-1.0.7")
- (sha256
- (base16-string->bytevector
- "bb08f9e670fab86099470b97cd2b252d6527f0b3cc1401acdb595ffc9dd288ff"))))
- ("rust-winapi"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "winapi" "0.2.8"))
- (file-name "rust-winapi-0.2.8")
- (sha256
- (base16-string->bytevector
- "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"))))
- ("rust-winapi-build"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "winapi-build" "0.1.1"))
- (file-name "rust-winapi-build-0.1.1")
- (sha256
- (base16-string->bytevector
- "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"))))
- ("rust-wincolor"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "wincolor" "0.1.4"))
- (file-name "rust-wincolor-0.1.4")
- (sha256
- (base16-string->bytevector
- "a39ee4464208f6430992ff20154216ab2357772ac871d994c51628d60e58b8b0"))))
- ("rust-ws2_32-sys"
- ,(origin
- (method url-fetch)
- (uri (crate-uri "ws2_32-sys" "0.2.1"))
- (file-name "rust-ws2_32-sys-0.2.1")
- (sha256
- (base16-string->bytevector
- "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"))))))
- (arguments
- `(#:cargo ,cargo-bootstrap
- #:rustc ,rustc ; Force to use rustc from current file
- #:modules
- ((ice-9 match)
- (srfi srfi-1) ; 'every
- (guix build utils)
- (guix build cargo-build-system))
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'unpack-dependencies
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (define (unpack source target)
- (mkdir-p target)
- (with-directory-excursion target
- (zero? (system* "tar" "xf"
- source
- "--strip-components=1"))))
- (define (touch file-name)
- (call-with-output-file file-name (const #t)))
- (define (install-rust-library entry)
- (match entry
- ((name . src)
- (if (string-prefix? "rust-" name)
- (let* ((rust-length (string-length "rust-"))
- (rust-name (string-drop name rust-length))
- (rsrc (string-append "vendor/" rust-name))
- (unpack-status (unpack src rsrc)))
- (touch (string-append rsrc "/.cargo-ok"))
- (generate-checksums rsrc src)
- unpack-status)))
- (_ #t)))
- (mkdir "vendor")
- (every install-rust-library inputs)))
- (add-after 'patch-generated-file-shebangs 'patch-cargo-checksums
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "Cargo.lock"
- (("(\"checksum .* = )\".*\"" all name)
- (string-append name "\"" ,%cargo-reference-hash "\"")))
- (for-each
- (lambda (filename)
- (use-modules (guix build cargo-build-system))
- (delete-file filename)
- (let* ((dir (dirname filename)))
- (display (string-append
- "patch-cargo-checksums: generate-checksums for "
- dir "\n"))
- (generate-checksums dir ,%cargo-reference-project-file)))
- (find-files "vendor" ".cargo-checksum.json"))
- #t))
- (replace 'configure
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (substitute* "tests/build.rs"
- (("/usr/bin/env") (which "env"))
- ;; Guix llvm compiled without asmjs-unknown-emscripten at all
- (("fn wasm32_final_outputs") "#[ignore]\nfn wasm32_final_outputs"))
- (substitute* "tests/death.rs"
- ;; Stuck when built in container
- (("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone"))
- (mkdir ".cargo")
- (call-with-output-file ".cargo/config"
- (lambda (port)
- (display "
-[source.crates-io]
-registry = 'https://github.com/rust-lang/crates.io-index'
-replace-with = 'vendored-sources'
-
-[source.vendored-sources]
-directory = 'vendor'
-" port)))
- ;; Disable test for cross compilation support
- (setenv "CFG_DISABLE_CROSS_TESTS" "1")
- (setenv "SHELL" (which "sh"))
- (setenv "CONFIG_SHELL" (which "sh"))
- (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
- #t)))))
- (home-page "https://github.com/rust-lang/cargo")
- (synopsis "Build tool and package manager for Rust")
- (description "Cargo is a tool that allows Rust projects to declare their
-dependencies and ensures a reproducible build.")
- ;; Cargo is dual licensed Apache and MIT. Also contains
- ;; code from openssl which is GPL2 with linking exception.
- (license (list license:asl2.0 license:expat license:gpl2))))
+(define-public rust
+ (let ((base-rust rust-1.23))
+ (package
+ (inherit base-rust)
+ (version "1.24.1")
+ (source
+ (rust-source version
+ "1vv10x2h9kq7fxh2v01damdq8pvlp5acyh1kzcda9sfjx12kv99y"))
+ (native-inputs
+ (alist-replace "cargo-bootstrap" (list base-rust "cargo")
+ (alist-replace "rustc-bootstrap" (list base-rust)
+ (package-native-inputs base-rust))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments base-rust)
+ ((#:phases phases) `(modify-phases ,phases
+ (delete 'fix-mtime-bug))))))))
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index e2e8c5e093..d84f52ffc5 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -233,14 +233,14 @@ Desktops into Active Directory environments using the winbind daemon.")
(define-public talloc
(package
(name "talloc")
- (version "2.1.12")
+ (version "2.1.13")
(source (origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/talloc/talloc-"
version ".tar.gz"))
(sha256
(base32
- "0jv0ri9vj93fczzgl7rn7xvnfgl2kfx4x85cr8h8v52yh7v0qz4q"))))
+ "0iv09iv385x69gfzvassq6m3y0rd8ncylls95dm015xdy3drkww4"))))
(build-system gnu-build-system)
(arguments
'(#:phases
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 4340237b29..50b5368a3b 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -407,7 +407,7 @@ implementation techniques and as an expository tool.")
(define-public racket
(package
(name "racket")
- (version "6.11")
+ (version "6.12")
(source (origin
(method url-fetch)
(uri (list (string-append "http://mirror.racket-lang.org/installers/"
@@ -417,7 +417,11 @@ implementation techniques and as an expository tool.")
version "/racket-" version "-src.tgz")))
(sha256
(base32
- "1nk7705x24jjlbqqhj8yvbgqkfscxx3m81bry1g56kjxysjmf3sw"))))
+ "0cwcypzjfl9py1s695mhqkiapff7c1w29llsmdj7qgn58wl0apk5"))
+ (patches (search-patches
+ ;; See: https://github.com/racket/racket/issues/1962
+ ;; This can be removed in whatever Racket release comes after 6.12
+ "racket-fix-xform-issue.patch"))))
(build-system gnu-build-system)
(arguments
'(#:phases
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index a719819927..02deb5c4ae 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -26,13 +27,16 @@
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages check)
#:use-module (gnu packages databases)
#:use-module (gnu packages linux)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages pdf)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-web)
#:use-module (gnu packages web)
#:use-module (gnu packages xml))
@@ -307,4 +311,50 @@ can quickly and easily index directories of files or remote web sites and
search the generated indexes.")
(license gpl2+))) ;with exception
+(define-public xapers
+ (package
+ (name "xapers")
+ (version "0.8.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://finestructure.net/xapers/releases/xapers-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0ykz6hn3qj46w3c99d6q0pi5ncq2894simcl7vapv047zm3cylmd"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-urwid" ,python-urwid)))
+ (inputs
+ `(("poppler" ,poppler)
+ ("python" ,python)
+ ("python-latexcodec" ,python-latexcodec)
+ ("python-pybtex" ,python-pybtex)
+ ("python-pycurl" ,python-pycurl)
+ ("python-pyyaml" ,python-pyyaml)
+ ("python-six" ,python-six)
+ ("python-xapian-bindings" ,python-xapian-bindings)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'install-doc
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (man1 (string-append out "/share/man/man1")))
+ (install-file "man/man1/xapers.1" man1)
+ (install-file "man/man1/xapers-adder.1" man1)
+ (install-file "bin/xapers-adder" bin)))))))
+ (home-page "https://finestructure.net/xapers/")
+ (synopsis "Personal document indexing system")
+ (description
+ "Xapers is a personal document indexing system,
+geared towards academic journal articles build on the Xapian search engine.
+Think of it as your own personal document search engine, or a local cache of
+online libraries. It provides fast search of document text and
+bibliographic data and simple document and bibtex retrieval.")
+ (license gpl3+)))
+
;;; search.scm ends here
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index 480b2d11c2..d712e06431 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -135,14 +135,14 @@ a server that supports the SSH-2 protocol.")
(define-public openssh
(package
(name "openssh")
- (version "7.6p1")
+ (version "7.7p1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://openbsd/OpenSSH/portable/"
name "-" version ".tar.gz"))
(sha256
(base32
- "08qpsb8mrzcx8wgvz9insiyvq7sbg26yj5nvl2m5n57yvppcl8x3"))))
+ "13vbbrvj3mmfhj83qyrg5c0ipr6bzw5s65dy4k8gr7p9hkkfffyp"))))
(build-system gnu-build-system)
(native-inputs `(("groff" ,groff)))
(inputs `(("openssl" ,openssl)
@@ -152,6 +152,9 @@ a server that supports the SSH-2 protocol.")
("xauth" ,xauth))) ;for 'ssh -X' and 'ssh -Y'
(arguments
`(#:test-target "tests"
+ ;; Otherwise, the test scripts try to use a nonexistent directory and
+ ;; fail.
+ #:make-flags '("REGRESSTMP=\"$${BUILDDIR}/regress\"")
#:configure-flags `("--sysconfdir=/etc/ssh"
;; Default value of 'PATH' used by sshd.
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 4c6404279a..81c38b441e 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -361,14 +361,14 @@ k-nearest neighbour, Learning Vector Quantization and Self-Organizing Maps.")
(define-public r-cluster
(package
(name "r-cluster")
- (version "2.0.6")
+ (version "2.0.7")
(source
(origin
(method url-fetch)
(uri (cran-uri "cluster" version))
(sha256
(base32
- "1z4gbz7chxxi4ly6c0yjlikwgf8aa8dlg05cn5cd6pjr21zvh97l"))))
+ "0nf2hnsv5rhw6399b4gk1rj5c8hfc6ajfnkh3qbwfx3cz4asrg45"))))
(build-system r-build-system)
(inputs
`(("gfortran" ,gfortran)))
@@ -466,14 +466,14 @@ also flexible enough to handle most nonstandard requirements.")
(define-public r-matrix
(package
(name "r-matrix")
- (version "1.2-12")
+ (version "1.2-13")
(source
(origin
(method url-fetch)
(uri (cran-uri "Matrix" version))
(sha256
(base32
- "1wm45hg4x5ay15y03k6rmgkd1n9r01da72mszk24vafwd7pimr8n"))))
+ "1j4fyn2r3ds51hrxch738gn7d9qvpi4b01n0rxzw5jpv28rnpyvx"))))
(properties `((upstream-name . "Matrix")))
(build-system r-build-system)
(propagated-inputs
@@ -3121,14 +3121,14 @@ analysis of large sparse or dense matrices.")
(define-public r-glmnet
(package
(name "r-glmnet")
- (version "2.0-13")
+ (version "2.0-16")
(source
(origin
(method url-fetch)
(uri (cran-uri "glmnet" version))
(sha256
(base32
- "1zdqp6wnqxzp5qn2ky47phbkrxv3cpgbwmdp896h3xxjvp58sa7k"))))
+ "1brr51z1fzbpyj6myyir4g6dhbp6xwl7nx4xnvrjarnf5y0csk55"))))
(build-system r-build-system)
(inputs
`(("gfortran" ,gfortran)))
@@ -3544,13 +3544,13 @@ memory usage.")
(define-public r-viridis
(package
(name "r-viridis")
- (version "0.5.0")
+ (version "0.5.1")
(source (origin
(method url-fetch)
(uri (cran-uri "viridis" version))
(sha256
(base32
- "1ka6amybgzqkg3cbwfxwwqzzzpfn6q5jcia5am0bw48y5hbpg97y"))))
+ "060rf1jn29dq53y3nhb0hykvcap6rqsk04rq544ypiiqb18ngwnx"))))
(build-system r-build-system)
(propagated-inputs
`(("r-ggplot2" ,r-ggplot2)
@@ -4312,13 +4312,13 @@ data at that region, and avoids over-plotting.")
(define-public r-ggthemes
(package
(name "r-ggthemes")
- (version "3.4.0")
+ (version "3.4.2")
(source (origin
(method url-fetch)
(uri (cran-uri "ggthemes" version))
(sha256
(base32
- "1jj8lp7jbk3489kpgbw4b5phpn01gkfmksc21c6sn3x6wmzyn6hs"))))
+ "0i7ygpizs00acizixc29bhbrci523ys7vzxbii9b3bcmfa3pj7i3"))))
(build-system r-build-system)
(propagated-inputs
`(("r-assertthat" ,r-assertthat)
@@ -5059,14 +5059,14 @@ algorithms.")
(define-public r-lme4
(package
(name "r-lme4")
- (version "1.1-15")
+ (version "1.1-16")
(source
(origin
(method url-fetch)
(uri (cran-uri "lme4" version))
(sha256
(base32
- "0sc6rvhiizxxpkdc3wps200wg3pqc0d89crn29lzm75fk8qdd7vx"))))
+ "0p5x9ki4dq8058mc7k9wdnlh60z1xa3wk2nmf71wl7w59m4szh92"))))
(build-system r-build-system)
(native-inputs
`(("r-rcpp" ,r-rcpp)
@@ -5139,14 +5139,14 @@ to Applied regression, Second Edition, Sage, 2011.")
(define-public r-caret
(package
(name "r-caret")
- (version "6.0-78")
+ (version "6.0-79")
(source
(origin
(method url-fetch)
(uri (cran-uri "caret" version))
(sha256
(base32
- "0h1nxzii2h80aslp1zsjczrlfmaks44sskabk4yq9c5rafc7ka6y"))))
+ "1i6sjw279g6mj83vz5gv99x0nljcbpy7v0nbl72lmd80sf7rjshl"))))
(build-system r-build-system)
(propagated-inputs
`(("r-foreach" ,r-foreach)
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 7560238378..5868bdbad9 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -28,7 +28,7 @@
(define-public syncthing
(package
(name "syncthing")
- (version "0.14.45")
+ (version "0.14.46")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/syncthing/syncthing"
@@ -36,7 +36,7 @@
"/syncthing-source-v" version ".tar.gz"))
(sha256
(base32
- "0nv5g9ymykl4316l2g3mnac77y2rx9ps4j2kg3pymxlq6qms2dij"))
+ "0h5b2mp0li0qzrz3wggzavdfqfaz9b79hx6wds84ya2i9maw80cl"))
(modules '((guix build utils)))
;; Delete bundled ("vendored") free software source code.
(snippet '(begin
@@ -1679,23 +1679,23 @@ using sh's word-splitting rules.")
(license expat))))
(define-public go-github-com-zillode-notify
- (let ((commit "a8abcfb1ce88ee8d79a300ed65d94b8fb616ddb3")
- (revision "2"))
+ (let ((commit "53dd6873a851fc377c87d82f994b1fecdf25aadb")
+ (revision "3"))
(package
(name "go-github-com-zillode-notify")
(version (git-version "0.0.0" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/zillode/notify")
+ (url "https://github.com/calmh/notify")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
- "031pmbvm0xj4f4fak7im0ywmyn3hns538zlbdj4f23jj69zqdy7k"))))
+ "0ar6mj6s91y7hc5gdp88lz3i7xi29cqkx9f090xj899ir21a8djn"))))
(build-system go-build-system)
(arguments
- '(#:import-path "github.com/zillode/notify"))
+ '(#:import-path "github.com/Zillode/notify"))
(propagated-inputs
`(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
(synopsis "File system event notification library")
diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm
index 1669f2c45c..27b49895e2 100644
--- a/gnu/packages/syndication.scm
+++ b/gnu/packages/syndication.scm
@@ -32,7 +32,7 @@
(define-public newsboat
(package
(name "newsboat")
- (version "2.11")
+ (version "2.11.1")
(source
(origin
(method url-fetch)
@@ -40,7 +40,7 @@
"/newsboat-" version ".tar.xz"))
(sha256
(base32
- "0yh1qdk15s9k4pffiw1155whfckpffq72dpyp9rck7yxgy5ya1hx"))))
+ "1krpxl854h5dwmpr81m1s84cwk8zivdzvw0s5s0i4dba736pvdma"))))
(build-system gnu-build-system)
(native-inputs
`(("gettext" ,gettext-minimal)
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index e6c2436d06..78532ec268 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -293,16 +293,16 @@ input bits thoroughly but are not suitable for cryptography.")
(define-public libconfig
(package
(name "libconfig")
- (version "1.5")
+ (version "1.7.2")
+ (home-page "https://hyperrealm.github.io/libconfig/")
(source (origin
(method url-fetch)
- (uri (string-append "http://www.hyperrealm.com/libconfig/"
- "libconfig-" version ".tar.gz"))
+ (uri (string-append home-page "/dist/libconfig-"
+ version ".tar.gz"))
(sha256
(base32
- "1xh3hzk63v4y8815lc5209m3s6ms2cpgw4h5hg462i4f1lwsl7g3"))))
+ "1ngs2qx3cx5cbwinc5mvadly0b5n7s86zsc68c404czzfff7lg3w"))))
(build-system gnu-build-system)
- (home-page "http://www.hyperrealm.com/libconfig/")
(synopsis "C/C++ configuration file library")
(description
"Libconfig is a simple library for manipulating structured configuration
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 9143af31e0..73e84b7f8c 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -449,14 +449,14 @@ required structures.")
(define-public libressl
(package
(name "libressl")
- (version "2.7.1")
+ (version "2.7.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://openbsd/LibreSSL/"
name "-" version ".tar.gz"))
(sha256
(base32
- "0w3hdgcr4cq84cv7wkkg2clz9s6l2m2l92d6mfn70wxs6vi0fxck"))))
+ "1589f0kg7kj51j9hid542s4isb96s1azjaqsfprpy5s2qdwqfyli"))))
(build-system gnu-build-system)
(arguments
;; Do as if 'getentropy' was missing since older Linux kernels lack it
@@ -493,13 +493,13 @@ netcat implementation that supports TLS.")
(package
(name "python-acme")
;; Remember to update the hash of certbot when updating python-acme.
- (version "0.22.2")
+ (version "0.23.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "acme" version))
(sha256
(base32
- "1d5d4w88aj1i8fyrs44dapmiqbmgz4bjgryn8k3mnggmd6ihxk8f"))))
+ "0l257dq1i2gka6ynldidpwaz1aa726643crqqckga1w5awsndh88"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -548,7 +548,7 @@ netcat implementation that supports TLS.")
(uri (pypi-uri name version))
(sha256
(base32
- "1vsb8qqghxrwxr3d2l0d5cgdk0pz7b3f76bx3zrrg0z7jf967qz6"))))
+ "0gh5fr61c3mj5vdkn68k17wcvri9rdj506cmmz6631i2l5flrzvc"))))
(build-system python-build-system)
(arguments
`(,@(substitute-keyword-arguments (package-arguments python-acme)
@@ -768,7 +768,7 @@ then ported to the GNU / Linux environment.")
(define-public mbedtls-apache
(package
(name "mbedtls-apache")
- (version "2.7.0")
+ (version "2.7.2")
(source
(origin
(method url-fetch)
@@ -778,16 +778,7 @@ then ported to the GNU / Linux environment.")
version "-apache.tgz"))
(sha256
(base32
- "1vsmgxnw7dpvma51896n63yaf9sncmf885ax2jfcg89ssin6vdmf"))
- ;; An RFC 5114 constant was accidentally renamed in version 2.7.0.
- ;; See https://github.com/ARMmbed/mbedtls/pull/1362.
- (modules '((guix build utils)))
- (snippet
- '(begin
- (substitute* "include/mbedtls/dhm.h"
- (("#define MBEDTLS_DHM_RFC5114_MODP_P")
- "#define MBEDTLS_DHM_RFC5114_MODP_2048_P"))
- #t))))
+ "1mvkqlxxvl6yp1g5g9dk4l7h3wl6149p3pfwgwzgs7xybyxw4f7x"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags
diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm
index 8764cea9a6..7db6b5eec5 100644
--- a/gnu/packages/upnp.scm
+++ b/gnu/packages/upnp.scm
@@ -29,14 +29,14 @@
(define-public miniupnpc
(package
(name "miniupnpc")
- (version "2.0.20180222")
+ (version "2.0.20180406")
(source
(origin
(method url-fetch)
(uri (string-append "https://miniupnp.tuxfamily.org/files/"
name "-" version ".tar.gz"))
(sha256
- (base32 "0xavcrifk8v8gwig3mj0kjkm7rvw1kbsxcs4jxrrzl39cil48yaq"))))
+ (base32 "15i9lyj72wr15b3kpcqsf97mr2hajkpwvf0lz9ps9r568yyjcwlc"))))
(build-system gnu-build-system)
(native-inputs
`(("python" ,python-2)))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 22c124049e..79ac7221fa 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -139,14 +139,14 @@ as well as the classic centralized workflow.")
(name "git")
;; XXX When updating Git, check if the special 'git:src' input to cgit needs
;; to be updated as well.
- (version "2.16.3")
+ (version "2.17.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
- "0j1dwvg5llnj3g0fp8hdgpms4hp90qw9f6509vqw30dhwplrjpfn"))))
+ "1ismz7nsz8dgjmk782xr9s0mr2qh06f72pdcgbxfmnw1bvlya5p9"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
@@ -159,7 +159,7 @@ as well as the classic centralized workflow.")
version ".tar.xz"))
(sha256
(base32
- "15ckcia3bdbn1dpwlh3fifd8fzk38l1pdgxsf2yl8l8xd1z8jqaz"))))))
+ "09rpjj0m97h5lpzpwk47m6xsz9gb8wqf1s3dfqma3mwav2pb3njb"))))))
(inputs
`(("curl" ,curl)
("expat" ,expat)
@@ -215,9 +215,6 @@ as well as the classic centralized workflow.")
(("/bin/sh") (which "sh"))
(("/usr/bin/perl") (which "perl"))
(("/usr/bin/python") (which "python")))
- (substitute* "perl/Makefile"
- ;; Don't create timestamped 'perllocal.pod'.
- (("\\$< PREFIX=") "$< NO_PERLLOCAL=1 PREFIX="))
#t))
(add-after 'configure 'add-PM.stamp
(lambda _
@@ -226,42 +223,43 @@ as well as the classic centralized workflow.")
#t))
(add-before 'check 'patch-tests
(lambda _
- ;; These files contain some funny bytes that Guile is unable
- ;; to decode for shebang patching. Just delete them.
- (for-each delete-file '("t/t4201-shortlog.sh"
- "t/t7813-grep-icase-iso.sh"))
- ;; Many tests contain inline shell scripts (hooks etc).
- (substitute* (find-files "t" "\\.sh$")
- (("#!/bin/sh") (string-append "#!" (which "sh"))))
- ;; Un-do shebang patching here to prevent checksum mismatch.
- (substitute* '("t/t4034/perl/pre" "t/t4034/perl/post")
- (("^#!.*/bin/perl") "#!/usr/bin/perl"))
- (substitute* "t/t5003-archive-zip.sh"
- (("cp /bin/sh") (string-append "cp " (which "sh"))))
- (substitute* "t/t6030-bisect-porcelain.sh"
- (("\"/bin/sh\"") (string-append "\"" (which "sh") "\"")))
- ;; FIXME: This test runs `git commit` with a bogus EDITOR
- ;; and empty commit message, but does not fail the way it's
- ;; expected to. The test passes when invoked interactively.
- (substitute* "t/t7508-status.sh"
- (("\tcommit_template_commented") "\ttrue"))
- ;; More checksum mismatches due to odd shebangs.
- (substitute* "t/t9100-git-svn-basic.sh"
- (("\"#!/gnu.*/bin/sh") "\"#!/bin/sh"))
- (substitute* "t/t9300-fast-import.sh"
- (("\t#!/gnu.*/bin/sh") "\t#!/bin/sh")
- (("'#!/gnu.*/bin/sh") "'#!/bin/sh"))
- ;; FIXME: Some hooks fail with "basename: command not found".
- ;; See 't/trash directory.t9164.../svn-hook.log'.
- (delete-file "t/t9164-git-svn-dcommit-concurrent.sh")
-
- ;; XXX: These tests fail intermittently for unknown reasons:
- ;; <https://bugs.gnu.org/29546>.
- (for-each delete-file
- '("t/t9128-git-svn-cmd-branch.sh"
- "t/t9167-git-svn-cmd-branch-subproject.sh"
- "t/t9141-git-svn-multiple-branches.sh"))
- #t))
+ (let ((store-directory (%store-directory)))
+ ;; These files contain some funny bytes that Guile is unable
+ ;; to decode for shebang patching. Just delete them.
+ (for-each delete-file '("t/t4201-shortlog.sh"
+ "t/t7813-grep-icase-iso.sh"))
+ ;; Many tests contain inline shell scripts (hooks etc).
+ (substitute* (find-files "t" "\\.sh$")
+ (("#!/bin/sh") (string-append "#!" (which "sh"))))
+ ;; Un-do shebang patching here to prevent checksum mismatch.
+ (substitute* '("t/t4034/perl/pre" "t/t4034/perl/post")
+ (("^#!.*/bin/perl") "#!/usr/bin/perl"))
+ (substitute* "t/t5003-archive-zip.sh"
+ (("cp /bin/sh") (string-append "cp " (which "sh"))))
+ (substitute* "t/t6030-bisect-porcelain.sh"
+ (("\"/bin/sh\"") (string-append "\"" (which "sh") "\"")))
+ ;; FIXME: This test runs `git commit` with a bogus EDITOR
+ ;; and empty commit message, but does not fail the way it's
+ ;; expected to. The test passes when invoked interactively.
+ (substitute* "t/t7508-status.sh"
+ (("\tcommit_template_commented") "\ttrue"))
+ ;; More checksum mismatches due to odd shebangs.
+ (substitute* "t/t9100-git-svn-basic.sh"
+ (((string-append "\"#!" store-directory ".*/bin/sh")) "\"#!/bin/sh") )
+ (substitute* "t/t9300-fast-import.sh"
+ (((string-append "\t#!" store-directory ".*/bin/sh")) "\t#!/bin/sh")
+ (((string-append "'#!" store-directory ".*/bin/sh")) "'#!/bin/sh"))
+ ;; FIXME: Some hooks fail with "basename: command not found".
+ ;; See 't/trash directory.t9164.../svn-hook.log'.
+ (delete-file "t/t9164-git-svn-dcommit-concurrent.sh")
+
+ ;; XXX: These tests fail intermittently for unknown reasons:
+ ;; <https://bugs.gnu.org/29546>.
+ (for-each delete-file
+ '("t/t9128-git-svn-cmd-branch.sh"
+ "t/t9167-git-svn-cmd-branch-subproject.sh"
+ "t/t9141-git-svn-multiple-branches.sh"))
+ #t)))
(add-after 'install 'install-shell-completion
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 6da712cc71..cd88ebe0ce 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -24,6 +24,7 @@
;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018 Pierre Neidhardt <ambrevar@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -56,6 +57,7 @@
#:use-module (guix build-system perl)
#:use-module (guix build-system python)
#:use-module (guix build-system waf)
+ #:use-module (guix build-system trivial)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages audio)
@@ -2825,3 +2827,39 @@ changed. Or in other words, it can detect motion.")
;; Some files say "version 2" and others "version 2 or later".
(license license:gpl2)))
+
+(define-public subdl
+ (let ((commit "4cf5789b11f0ff3f863b704b336190bf968cd471")
+ (revision "1"))
+ (package
+ (name "subdl")
+ (version (git-version "1.0.3" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/alexanderwink/subdl.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0kmk5ck1j49q4ww0lvas2767kwnzhkq0vdwkmjypdx5zkxz73fn8"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder (begin
+ (use-modules (guix build utils))
+ (let* ((out (assoc-ref %outputs "out"))
+ (bin (string-append out "/bin"))
+ (source (assoc-ref %build-inputs "source"))
+ (python (assoc-ref %build-inputs "python")))
+ (install-file (string-append source "/subdl") bin)
+ (patch-shebang (string-append bin "/subdl")
+ (list (string-append python "/bin")))))))
+ (inputs `(("python" ,python)))
+ (synopsis "Command-line tool for downloading subtitles from opensubtitles.org")
+ (description "Subdl is a command-line tool for downloading subtitles from
+opensubtitles.org. By default, it will search for English subtitles, display
+the results, download the highest-rated result in the requested language and
+save it to the appropriate filename.")
+ (license license:gpl3+)
+ (home-page "https://github.com/alexanderwink/subdl"))))
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index de01e01638..44a4ed2920 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -347,14 +347,14 @@ manage system or application containers.")
(define-public libvirt
(package
(name "libvirt")
- (version "4.0.0")
+ (version "4.2.0")
(source (origin
(method url-fetch)
(uri (string-append "https://libvirt.org/sources/libvirt-"
version ".tar.xz"))
(sha256
(base32
- "1j6zzajh4j3zzsaqn5f5mrchm0590xcf6rzkfajvqw3bd4dcms79"))))
+ "0nq1iz5iic466qahp0i8dlvyd6li0b0pdrvvrz9286l12x2fm61s"))))
(build-system gnu-build-system)
(arguments
`(;; FAIL: virshtest
@@ -420,7 +420,7 @@ manage system or application containers.")
("perl" ,perl)
("pkg-config" ,pkg-config)
("polkit" ,polkit)
- ("python" ,python-2)))
+ ("python" ,python)))
(home-page "https://libvirt.org")
(synopsis "Simple API for virtualization")
(description "Libvirt is a C toolkit to interact with the virtualization
@@ -480,13 +480,13 @@ three libraries:
(define-public python-libvirt
(package
(name "python-libvirt")
- (version "3.7.0")
+ (version "4.1.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "libvirt-python" version))
(sha256
(base32
- "0vy0ai8z88yhzqfk1n08z1gda5flrqxcw9lg1012b3zg125qljhy"))))
+ "1ixqhxjkczl8vk9wjx4cknw4374cw5nnsacbd2s755kpd0ys7hny"))))
(build-system python-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 442335cb94..2fc930aa9e 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -301,14 +301,14 @@ private network between hosts on the internet.")
(define-public sshuttle
(package
(name "sshuttle")
- (version "0.78.3")
+ (version "0.78.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri name version))
(sha256
(base32
- "12xyq5h77b57cnkljdk8qyjxzys512b73019s20x6ck5brj1m8wa"))))
+ "0pqk43kd7crqhg6qgnl8kapncwgw1xgaf02zarzypcw64kvdih9h"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools-scm" ,python-setuptools-scm)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 4413258e70..9c2426c8ee 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -186,14 +186,14 @@ Interface} specification.")
(name "nginx")
;; Consider updating the nginx-documentation package if the nginx package is
;; updated.
- (version "1.13.10")
+ (version "1.13.11")
(source (origin
(method url-fetch)
(uri (string-append "https://nginx.org/download/nginx-"
version ".tar.gz"))
(sha256
(base32
- "11a8m4lhy6h8mmrsakn73pd5gcyvhxpz1xvlr103rglh9l884q9k"))))
+ "01bgld6pv9sms9bsmx863yqw2hnivxhn91xs6imqklj48sbrqy9m"))))
(build-system gnu-build-system)
(inputs `(("openssl" ,openssl)
("pcre" ,pcre)
@@ -317,13 +317,13 @@ documentation.")
(license l:bsd-2))))
(define-public nginx-documentation
- ;; This documentation should be relevant for nginx@1.13.8.
- (let ((revision 2100)
- (changeset "cfb7bd672d77"))
+ ;; This documentation should be relevant for nginx@1.13.11.
+ (let ((revision 2131)
+ (changeset "dbaf3950f8e9"))
(package
(name "nginx-documentation")
(version
- (simple-format #f "2018-01-22-~A-~A" revision changeset))
+ (simple-format #f "2018-04-04-~A-~A" revision changeset))
(source
(origin (method hg-fetch)
(uri (hg-reference
@@ -332,7 +332,7 @@ documentation.")
(file-name (string-append name "-" version))
(sha256
(base32
- "096fcsc0wnfr847m7dwp17rivd3alxq7v9hq9s5lkfbhylmh18vm"))))
+ "0acdjsdaqixzh9g9s6db552v4pan4nqrllyqapay9ns9yzh1hrp7"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no test suite
@@ -3948,13 +3948,13 @@ LaTeX.")
(define-public r-curl
(package
(name "r-curl")
- (version "3.1")
+ (version "3.2")
(source (origin
(method url-fetch)
(uri (cran-uri "curl" version))
(sha256
(base32
- "15fbjya2xrf2k9hhvg3frisrram4yk5wlfz67zj1z8ahpsb2a3r7"))))
+ "15hmy71310hnf9yqvz0icx4cq939gv6iqaifzlfdh2ia8akawdhn"))))
(build-system r-build-system)
(arguments
`(#:phases
@@ -5121,7 +5121,7 @@ into your tests. It automatically starts up a HTTP server in a separate thread
(define-public http-parser
(package
(name "http-parser")
- (version "2.8.0")
+ (version "2.8.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/nodejs/http-parser/"
@@ -5129,7 +5129,7 @@ into your tests. It automatically starts up a HTTP server in a separate thread
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "17a7k3nxv2p1sp2x5d89wr51vk770753vz6qnlp2gz7nkgwwcxvj"))))
+ "15ids8k2f0xhnnxh4m85w2f78pg5ndiwrpl24kyssznnp1l5yqai"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
@@ -5524,7 +5524,7 @@ named elements: the @code{status}, the @code{headers}, and the @code{body}.")
(define-public rss-bridge
(package
(name "rss-bridge")
- (version "2017-08-03")
+ (version "2018-03-11")
(source
(origin
(method url-fetch)
@@ -5533,7 +5533,7 @@ named elements: the @code{status}, the @code{headers}, and the @code{body}.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "05s16y552hbyj91s7bnlkx1bi64s6aw0fjy29az8via3i3b21yhl"))))
+ "1ix15ck45yb659k63mhwxwia6qnm9nn8jw0bga85abrvk1rchjdn"))))
(build-system trivial-build-system)
(native-inputs
`(("gzip" ,gzip)
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index a4bcde3e46..81bc45ca75 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -221,7 +221,7 @@ integrate Windows applications into your desktop.")
(define-public wine-staging-patchset-data
(package
(name "wine-staging-patchset-data")
- (version "3.4")
+ (version "3.5")
(source
(origin
(method url-fetch)
@@ -230,7 +230,7 @@ integrate Windows applications into your desktop.")
(file-name (string-append name "-" version ".zip"))
(sha256
(base32
- "00yzh9bqs2rjgvk78xv3gfkbv4f2bkch9vb1ii4xh883f7wvkz93"))))
+ "1d95gzzfx87vvj85mrzv2lgg6w0m917dccja02g6vids28kf9g30"))))
(build-system trivial-build-system)
(native-inputs
`(("bash" ,bash)
@@ -277,7 +277,7 @@ integrate Windows applications into your desktop.")
(file-name (string-append name "-" version ".tar.xz"))
(sha256
(base32
- "14wf7536rkmhav9ibbvhqqkfqmbk1dckhd2679i5scizr5x290x4"))))
+ "0hr1syfhnpvcm84gmms1i26k68hakcgw4m6dvckmbbvw7ca0c8pl"))))
(inputs `(("autoconf" ,autoconf) ; for autoreconf
("gtk+" ,gtk+)
("libva" ,libva)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 179e46fac4..f8899a4bdd 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -102,7 +102,7 @@ nested include statements).")
(define-public bspwm
(package
(name "bspwm")
- (version "0.9.3")
+ (version "0.9.4")
(source
(origin
(file-name (string-append name "-" version ".tar.gz"))
@@ -112,7 +112,7 @@ nested include statements).")
version ".tar.gz"))
(sha256
(base32
- "17dwj7w16cdj7g4s2y2f96lgj5msq1s4543dnfa3rijlazzy6mmk"))))
+ "0yjr0vzbj3ar8qfr6gvpvjd82ay8iy1sg2fkw2swghlqiy6ix4kw"))))
(build-system gnu-build-system)
(inputs
`(("libxcb" ,libxcb)
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index eb7f48228d..7a9b64baf6 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -21,6 +21,7 @@
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Marek Benc <dusxmt@gmx.com>
;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org>
+;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1241,7 +1242,7 @@ program for X11. It was designed to be fast, tiny and scriptable in any languag
(define-public xcb-util-xrm
(package
(name "xcb-util-xrm")
- (version "1.2")
+ (version "1.3")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1249,7 +1250,7 @@ program for X11. It was designed to be fast, tiny and scriptable in any languag
"/download/v" version "/xcb-util-xrm-" version ".tar.bz2"))
(sha256
(base32
- "0vbqhag51i0njc8d5fc8c6aa12496cwrc3s6s7sa5kfc17cwhppp"))
+ "118cj1ybw86pgw0l5whn9vbg5n5b0ijcpx295mwahzi004vz671h"))
(modules '((guix build utils)))
(snippet
;; Drop bundled m4.
@@ -1405,3 +1406,32 @@ or playing a PCM encoded WAVE file.")
System, and launches a program of your choice if there is no activity after
a user-configurable period of time.")
(license license:gpl2)))
+
+(define-public screen-message
+ (package
+ (name "screen-message")
+ (version "0.25")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://www.joachim-breitner.de/archive/screen-message"
+ "/screen-message-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1lw955qq5pq010lzmaf32ylj2iprgsri9ih4hx672c3f794ilab0"))))
+ (build-system gnu-build-system)
+ (inputs `(("gtk3" ,gtk+)
+ ("gdk" ,gdk-pixbuf)
+ ("pango" ,pango)))
+ (native-inputs `(("pkg-config" ,pkg-config)))
+ (arguments
+ ;; The default configure puts the 'sm' binary in games/ instead of bin/ -
+ ;; this fixes it:
+ `(#:make-flags (list (string-append "execgamesdir=" %output "/bin"))))
+ (synopsis "Print messages on your screen")
+ (description "@code{screen-message} is a tool for displaying text on
+your screen. It will make the text as large as possible and display it
+with black color on a white background (colors are configurable on the
+commandline).")
+ (home-page "https://www.joachim-breitner.de/projects#screen-message")
+ (license license:gpl2+)))
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index d6648508cc..b15a200d88 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -5900,7 +5900,7 @@ basic eye-candy effects.")
(define-public xpra
(package
(name "xpra")
- (version "2.2.5")
+ (version "2.2.6")
(source
(origin
(method url-fetch)
@@ -5908,7 +5908,7 @@ basic eye-candy effects.")
version ".tar.xz"))
(sha256
(base32
- "1q2l00nc3bgwlhjzkbk4a8x2l8z9w1799yn31icsx5hrgh98a1js"))))
+ "1zyynghhzjbgnmzcibm17wpj9f7jy31d7dr373li8cwg2yl2swyz"))))
(build-system python-build-system)
(inputs `(("ffmpeg" ,ffmpeg)
("flac" ,flac)
diff --git a/gnu/services.scm b/gnu/services.scm
index 2fcacb9eb4..81af4df849 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -181,7 +181,8 @@
(define (all-service-modules)
"Return the default set of service modules."
(cons (resolve-interface '(gnu services))
- (all-modules (%service-type-path))))
+ (all-modules (%service-type-path)
+ #:warn warn-about-load-error)))
(define* (fold-service-types proc seed
#:optional
diff --git a/gnu/services/certbot.scm b/gnu/services/certbot.scm
index a2a200f032..7548145c98 100644
--- a/gnu/services/certbot.scm
+++ b/gnu/services/certbot.scm
@@ -26,6 +26,7 @@
#:use-module (gnu services web)
#:use-module (gnu system shadow)
#:use-module (gnu packages tls)
+ #:use-module (guix i18n)
#:use-module (guix records)
#:use-module (guix gexp)
#:use-module (srfi srfi-1)
@@ -113,14 +114,19 @@
#$(certbot-command config))))
(define (certbot-activation config)
- (match config
- (($ <certbot-configuration> package webroot certificates email
- rsa-key-size default-location)
- (with-imported-modules '((guix build utils))
- #~(begin
- (use-modules (guix build utils))
- (mkdir-p #$webroot)
- (zero? (system* #$(certbot-command config))))))))
+ (let* ((certbot-directory "/var/lib/certbot")
+ (script (in-vicinity certbot-directory "renew-certificates"))
+ (message (format #f (G_ "~a may need to be run~%") script)))
+ (match config
+ (($ <certbot-configuration> package webroot certificates email
+ rsa-key-size default-location)
+ (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils))
+ (mkdir-p #$webroot)
+ (mkdir-p #$certbot-directory)
+ (copy-file #$(certbot-command config) #$script)
+ (display #$message)))))))
(define certbot-nginx-server-configurations
(match-lambda
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 8972529179..517d5d3efe 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -94,6 +94,8 @@
xfce-desktop-service
xfce-desktop-service-type
+ x11-socket-directory-service
+
%desktop-services))
;;; Commentary:
@@ -882,6 +884,24 @@ with the administrator's password."
;;;
+;;; X11 socket directory service
+;;;
+
+(define x11-socket-directory-service
+ ;; Return a service that creates /tmp/.X11-unix. When using X11, libxcb
+ ;; takes care of creating that directory. However, when using XWayland, we
+ ;; need to create beforehand. Thus, create it unconditionally here.
+ (simple-service 'x11-socket-directory
+ activation-service-type
+ (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils))
+ (let ((directory "/tmp/.X11-unix"))
+ (mkdir-p directory)
+ (chmod directory #o777))))))
+
+
+;;;
;;; The default set of desktop services.
;;;
@@ -912,6 +932,8 @@ with the administrator's password."
(ntp-service)
+ x11-socket-directory-service
+
%base-services))
;;; desktop.scm ends here
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index 119f7e4d0b..ef5b8dab92 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -195,6 +195,9 @@ set auto-load safe-path /gnu/store/*/lib\n")))
`((".bash_profile" ,profile)
(".bashrc" ,bashrc)
(".zlogin" ,zlogin)
+ (".nanorc" ,(plain-file "nanorc" "\
+# Include all the syntax highlighting modules.
+include /run/current-system/profile/share/nano/*.nanorc\n"))
(".Xdefaults" ,xdefaults)
(".guile" ,(plain-file "dot-guile"
"(cond ((false-if-exception (resolve-interface '(ice-9 readline)))
diff --git a/guix/build-system/cargo.scm b/guix/build-system/cargo.scm
index c637fbb162..4a1eb0cfa0 100644
--- a/guix/build-system/cargo.scm
+++ b/guix/build-system/cargo.scm
@@ -43,17 +43,11 @@
to NAME and VERSION."
(string-append crate-url name "/" version "/download"))
-(define (default-cargo)
- "Return the default Cargo package."
+(define (default-rust)
+ "Return the default Rust package."
;; Lazily resolve the binding to avoid a circular dependency.
(let ((rust (resolve-interface '(gnu packages rust))))
- (module-ref rust 'cargo)))
-
-(define (default-rustc)
- "Return the default Rustc package."
- ;; Lazily resolve the binding to avoid a circular dependency.
- (let ((rust (resolve-interface '(gnu packages rust))))
- (module-ref rust 'rustc)))
+ (module-ref rust 'rust)))
(define %cargo-build-system-modules
;; Build-side modules imported by default.
@@ -115,14 +109,13 @@ to NAME and VERSION."
(define* (lower name
#:key source inputs native-inputs outputs system target
- (cargo (default-cargo))
- (rustc (default-rustc))
+ (rust (default-rust))
#:allow-other-keys
#:rest arguments)
"Return a bag for NAME."
(define private-keywords
- '(#:source #:target #:cargo #:rustc #:inputs #:native-inputs #:outputs))
+ '(#:source #:target #:rust #:inputs #:native-inputs #:outputs))
(and (not target) ;; TODO: support cross-compilation
(bag
@@ -136,8 +129,8 @@ to NAME and VERSION."
;; Keep the standard inputs of 'gnu-build-system'
,@(standard-packages)))
- (build-inputs `(("cargo" ,cargo)
- ("rustc" ,rustc)
+ (build-inputs `(("cargo" ,rust "cargo")
+ ("rustc" ,rust)
,@native-inputs))
(outputs outputs)
(build cargo-build)
diff --git a/guix/build/union.scm b/guix/build/union.scm
index d46b750035..1179f1234b 100644
--- a/guix/build/union.scm
+++ b/guix/build/union.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017 Huang Ying <huang.ying.caritas@gmail.com>
;;;
@@ -25,7 +25,9 @@
#:use-module (srfi srfi-26)
#:use-module (rnrs bytevectors)
#:use-module (rnrs io ports)
- #:export (union-build))
+ #:export (union-build
+
+ warn-about-collision))
;;; Commentary:
;;;
@@ -76,14 +78,29 @@ identical, #f otherwise."
(or (eof-object? n1)
(loop))))))))))))))
+(define (warn-about-collision files)
+ "Handle the collision among FILES by emitting a warning and choosing the
+first one of THEM."
+ (format (current-error-port)
+ "~%warning: collision encountered:~%~{ ~a~%~}"
+ files)
+ (let ((file (first files)))
+ (format (current-error-port) "warning: choosing ~a~%" file)
+ file))
+
(define* (union-build output inputs
#:key (log-port (current-error-port))
(create-all-directories? #f)
- (symlink symlink))
+ (symlink symlink)
+ (resolve-collision warn-about-collision))
"Build in the OUTPUT directory a symlink tree that is the union of all the
INPUTS, using SYMLINK to create symlinks. As a special case, if
CREATE-ALL-DIRECTORIES?, creates the subdirectories in the output directory to
-make sure the caller can modify them later."
+make sure the caller can modify them later.
+
+When two or more regular files collide, call RESOLVE-COLLISION with the list
+of colliding files and use the one that it returns; or, if RESOLVE-COLLISION
+returns #f, skip the faulty file altogether."
(define (symlink* input output)
(format log-port "`~a' ~~> `~a'~%" input output)
@@ -92,17 +109,10 @@ make sure the caller can modify them later."
(define (resolve-collisions output dirs files)
(cond ((null? dirs)
;; The inputs are all files.
- (format (current-error-port)
- "~%warning: collision encountered:~%~{~a~%~}"
- files)
-
- (let ((file (first files)))
- ;; TODO: Implement smarter strategies.
- (format (current-error-port)
- "warning: arbitrarily choosing ~a~%"
- file)
-
- (symlink* file output)))
+ (match (resolve-collision files)
+ (#f #f)
+ ((? string? file)
+ (symlink* file output))))
(else
;; The inputs are a mixture of files and directories
diff --git a/guix/discovery.scm b/guix/discovery.scm
index 7b57579023..2b627d108e 100644
--- a/guix/discovery.scm
+++ b/guix/discovery.scm
@@ -17,7 +17,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix discovery)
- #:use-module (guix ui)
+ #:use-module (guix i18n)
#:use-module (guix modules)
#:use-module (guix combinators)
#:use-module (guix build syscalls)
@@ -25,7 +25,8 @@
#:use-module (ice-9 match)
#:use-module (ice-9 vlist)
#:use-module (ice-9 ftw)
- #:export (scheme-modules
+ #:export (scheme-files
+ scheme-modules
fold-modules
all-modules
fold-module-public-variables))
@@ -85,13 +86,18 @@ DIRECTORY is not accessible."
(lambda args
(let ((errno (system-error-errno args)))
(unless (= errno ENOENT)
- (warning (G_ "cannot access `~a': ~a~%")
- directory (strerror errno)))
+ (format (current-error-port) ;XXX
+ (G_ "cannot access `~a': ~a~%")
+ directory (strerror errno)))
'())))))
-(define* (scheme-modules directory #:optional sub-directory)
+(define* (scheme-modules directory #:optional sub-directory
+ #:key (warn (const #f)))
"Return the list of Scheme modules available under DIRECTORY.
-Optionally, narrow the search to SUB-DIRECTORY."
+Optionally, narrow the search to SUB-DIRECTORY.
+
+WARN is called when a module could not be loaded. It is passed the module
+name and the exception key and arguments."
(define prefix-len
(string-length directory))
@@ -103,31 +109,32 @@ Optionally, narrow the search to SUB-DIRECTORY."
(resolve-interface module))
(lambda args
;; Report the error, but keep going.
- (warn-about-load-error module args)
+ (warn module args)
#f))))
(scheme-files (if sub-directory
(string-append directory "/" sub-directory)
directory))))
-(define (fold-modules proc init path)
+(define* (fold-modules proc init path #:key (warn (const #f)))
"Fold over all the Scheme modules present in PATH, a list of directories.
Call (PROC MODULE RESULT) for each module that is found."
(fold (lambda (spec result)
(match spec
((? string? directory)
- (fold proc result (scheme-modules directory)))
+ (fold proc result (scheme-modules directory #:warn warn)))
((directory . sub-directory)
(fold proc result
- (scheme-modules directory sub-directory)))))
+ (scheme-modules directory sub-directory
+ #:warn warn)))))
'()
path))
-(define (all-modules path)
+(define* (all-modules path #:key (warn (const #f)))
"Return the list of package modules found in PATH, a list of directories to
search. Entries in PATH can be directory names (strings) or (DIRECTORY
. SUB-DIRECTORY) pairs, in which case modules are searched for beneath
SUB-DIRECTORY."
- (fold-modules cons '() path))
+ (fold-modules cons '() path #:warn warn))
(define (fold-module-public-variables proc init modules)
"Call (PROC OBJECT RESULT) for each variable exported by one of MODULES,
diff --git a/guix/gexp.scm b/guix/gexp.scm
index 2deec253ff..bedb387edb 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -1258,7 +1258,8 @@ This yields an 'etc' directory containing these two files."
files))))))
(define* (directory-union name things
- #:key (copy? #f) (quiet? #f))
+ #:key (copy? #f) (quiet? #f)
+ (resolve-collision 'warn-about-collision))
"Return a directory that is the union of THINGS, where THINGS is a list of
file-like objects denoting directories. For example:
@@ -1266,6 +1267,10 @@ file-like objects denoting directories. For example:
yields a directory that is the union of the 'guile' and 'emacs' packages.
+Call RESOLVE-COLLISION when several files collide, passing it the list of
+colliding files. RESOLVE-COLLISION must return the chosen file or #f, in
+which case the colliding entry is skipped altogether.
+
When HARD-LINKS? is true, create hard links instead of symlinks. When QUIET?
is true, the derivation will not print anything."
(define symlink
@@ -1289,12 +1294,16 @@ is true, the derivation will not print anything."
(computed-file name
(with-imported-modules '((guix build union))
(gexp (begin
- (use-modules (guix build union))
+ (use-modules (guix build union)
+ (srfi srfi-1)) ;for 'first' and 'last'
+
(union-build (ungexp output)
'(ungexp things)
#:log-port (ungexp log-port)
- #:symlink (ungexp symlink)))))))))
+ #:symlink (ungexp symlink)
+ #:resolve-collision
+ (ungexp resolve-collision)))))))))
;;;
diff --git a/guix/git.scm b/guix/git.scm
index 103749d0e2..9e89cc0062 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -28,9 +28,11 @@
#:use-module (rnrs bytevectors)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-11)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:export (%repository-cache-directory
+ update-cached-checkout
latest-repository-commit))
(define %repository-cache-directory
@@ -68,11 +70,6 @@ make sure no empty directory is left behind."
(lambda _
(false-if-exception (rmdir directory)))))
-(define (repository->head-sha1 repo)
- "Return the sha1 of the HEAD commit in REPOSITORY as a string."
- (let ((oid (reference-target (repository-head repo))))
- (oid->string (commit-id (commit-lookup repo oid)))))
-
(define (url+commit->name url sha1)
"Return the string \"<REPO-NAME>-<SHA1:7>\" where REPO-NAME is the name of
the git repository, extracted from URL and SHA1:7 the seven first digits
@@ -82,21 +79,9 @@ of SHA1 string."
(last (string-split url #\/)) ".git" "")
"-" (string-take sha1 7)))
-(define* (copy-to-store store cache-directory #:key url repository)
- "Copy CACHE-DIRECTORY recursively to STORE. URL and REPOSITORY are used to
-create the store directory name."
- (define (dot-git? file stat)
- (and (string=? (basename file) ".git")
- (eq? 'directory (stat:type stat))))
-
- (let* ((commit (repository->head-sha1 repository))
- (name (url+commit->name url commit)))
- (values (add-to-store store name #t "sha256" cache-directory
- #:select? (negate dot-git?))
- commit)))
-
(define (switch-to-ref repository ref)
- "Switch to REPOSITORY's branch, commit or tag specified by REF."
+ "Switch to REPOSITORY's branch, commit or tag specified by REF. Return the
+OID (roughly the commit hash) corresponding to REF."
(define obj
(match ref
(('branch . branch)
@@ -122,7 +107,38 @@ create the store directory name."
(string-append "refs/tags/" tag))))
(object-lookup repository oid)))))
- (reset repository obj RESET_HARD))
+ (reset repository obj RESET_HARD)
+ (object-id obj))
+
+(define* (update-cached-checkout url
+ #:key
+ (ref '(branch . "origin/master"))
+ (cache-directory
+ (%repository-cache-directory)))
+ "Update the cached checkout of URL to REF in CACHE-DIRECTORY. Return two
+values: the cache directory name, and the SHA1 commit (a string) corresponding
+to REF.
+
+REF is pair whose key is [branch | commit | tag] and value the associated
+data, respectively [<branch name> | <sha1> | <tag name>]."
+ (with-libgit2
+ (let* ((cache-dir (url-cache-directory url cache-directory))
+ (cache-exists? (openable-repository? cache-dir))
+ (repository (if cache-exists?
+ (repository-open cache-dir)
+ (clone* url cache-dir))))
+ ;; Only fetch remote if it has not been cloned just before.
+ (when cache-exists?
+ (remote-fetch (remote-lookup repository "origin")))
+ (let ((oid (switch-to-ref repository ref)))
+
+ ;; Reclaim file descriptors and memory mappings associated with
+ ;; REPOSITORY as soon as possible.
+ (when (module-defined? (resolve-interface '(git repository))
+ 'repository-close!)
+ (repository-close! repository))
+
+ (values cache-dir (oid->string oid))))))
(define* (latest-repository-commit store url
#:key
@@ -137,23 +153,16 @@ data, respectively [<branch name> | <sha1> | <tag name>].
Git repositories are kept in the cache directory specified by
%repository-cache-directory parameter."
- (with-libgit2
- (let* ((cache-dir (url-cache-directory url cache-directory))
- (cache-exists? (openable-repository? cache-dir))
- (repository (if cache-exists?
- (repository-open cache-dir)
- (clone* url cache-dir))))
- ;; Only fetch remote if it has not been cloned just before.
- (when cache-exists?
- (remote-fetch (remote-lookup repository "origin")))
- (switch-to-ref repository ref)
-
- ;; Reclaim file descriptors and memory mappings associated with
- ;; REPOSITORY as soon as possible.
- (when (module-defined? (resolve-interface '(git repository))
- 'repository-close!)
- (repository-close! repository))
+ (define (dot-git? file stat)
+ (and (string=? (basename file) ".git")
+ (eq? 'directory (stat:type stat))))
- (copy-to-store store cache-dir
- #:url url
- #:repository repository))))
+ (let*-values (((checkout commit)
+ (update-cached-checkout url
+ #:ref ref
+ #:cache-directory cache-directory))
+ ((name)
+ (url+commit->name url commit)))
+ (values (add-to-store store name #t "sha256" checkout
+ #:select? (negate dot-git?))
+ commit)))
diff --git a/guix/modules.scm b/guix/modules.scm
index bf656bb241..65928f67f2 100644
--- a/guix/modules.scm
+++ b/guix/modules.scm
@@ -25,6 +25,7 @@
#:use-module (ice-9 match)
#:export (missing-dependency-error?
missing-dependency-module
+ missing-dependency-search-path
file-name->module-name
module-name->file-name
@@ -47,7 +48,8 @@
;; The error corresponding to a missing module.
(define-condition-type &missing-dependency-error &error
missing-dependency-error?
- (module missing-dependency-module))
+ (module missing-dependency-module)
+ (search-path missing-dependency-search-path))
(define (colon-symbol? obj)
"Return true if OBJ is a symbol that starts with a colon."
@@ -132,7 +134,8 @@ depends on."
(module-file-dependencies file))
(#f
(raise (condition (&missing-dependency-error
- (module module))))))))
+ (module module)
+ (search-path load-path))))))))
(define* (module-closure modules
#:key
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index d8b80efe8e..4f519e6f33 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -194,15 +194,18 @@ denote ranges as interpreted by 'matching-generations'."
(define* (build-and-use-profile store profile manifest
#:key
+ allow-collisions?
bootstrap? use-substitutes?
dry-run?)
"Build a new generation of PROFILE, a file name, using the packages
-specified in MANIFEST, a manifest object."
+specified in MANIFEST, a manifest object. When ALLOW-COLLISIONS? is true,
+do not treat collisions in MANIFEST as an error."
(when (equal? profile %current-profile)
(ensure-default-profile))
(let* ((prof-drv (run-with-store store
(profile-derivation manifest
+ #:allow-collisions? allow-collisions?
#:hooks (if bootstrap?
'()
%default-profile-hooks)
@@ -408,6 +411,8 @@ Install, remove, or upgrade packages in a single transaction.\n"))
-p, --profile=PROFILE use PROFILE instead of the user's default profile"))
(newline)
(display (G_ "
+ --allow-collisions do not treat collisions in the profile as an error"))
+ (display (G_ "
--bootstrap use the bootstrap Guile to build the profile"))
(display (G_ "
--verbose produce verbose output"))
@@ -544,6 +549,10 @@ kind of search path~%")
(lambda (opt name arg result arg-handler)
(values (alist-cons 'verbose? #t result)
#f)))
+ (option '("allow-collisions") #f #f
+ (lambda (opt name arg result arg-handler)
+ (values (alist-cons 'allow-collisions? #t result)
+ #f)))
(option '(#\s "search") #t #f
(lambda (opt name arg result arg-handler)
(values (cons `(query search ,(or arg ""))
@@ -831,13 +840,15 @@ processed, #f otherwise."
(let* ((user-module (make-user-module '((guix profiles) (gnu))))
(manifest (load* file user-module))
(bootstrap? (assoc-ref opts 'bootstrap?))
- (substitutes? (assoc-ref opts 'substitutes?)))
+ (substitutes? (assoc-ref opts 'substitutes?))
+ (allow-collisions? (assoc-ref opts 'allow-collisions?)))
(if dry-run?
(format #t (G_ "would install new manifest from '~a' with ~d entries~%")
file (length (manifest-entries manifest)))
(format #t (G_ "installing new manifest from '~a' with ~d entries~%")
file (length (manifest-entries manifest))))
(build-and-use-profile store profile manifest
+ #:allow-collisions? allow-collisions?
#:bootstrap? bootstrap?
#:use-substitutes? substitutes?
#:dry-run? dry-run?)))
@@ -856,6 +867,7 @@ processed, #f otherwise."
(define dry-run? (assoc-ref opts 'dry-run?))
(define bootstrap? (assoc-ref opts 'bootstrap?))
(define substitutes? (assoc-ref opts 'substitutes?))
+ (define allow-collisions? (assoc-ref opts 'allow-collisions?))
(define profile (or (assoc-ref opts 'profile) %current-profile))
(define transform (options->transformation opts))
@@ -894,6 +906,7 @@ processed, #f otherwise."
(show-manifest-transaction store manifest step3
#:dry-run? dry-run?)
(build-and-use-profile store profile new
+ #:allow-collisions? allow-collisions?
#:bootstrap? bootstrap?
#:use-substitutes? substitutes?
#:dry-run? dry-run?))))
diff --git a/guix/self.scm b/guix/self.scm
new file mode 100644
index 0000000000..c9e4a4250e
--- /dev/null
+++ b/guix/self.scm
@@ -0,0 +1,599 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@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 (guix self)
+ #:use-module (guix config)
+ #:use-module (guix i18n)
+ #:use-module (guix modules)
+ #:use-module (guix gexp)
+ #:use-module (guix store)
+ #:use-module (guix monads)
+ #:use-module (guix discovery)
+ #:use-module (guix packages)
+ #:use-module (guix sets)
+ #:use-module (guix utils)
+ #:use-module (guix modules)
+ #:use-module (guix build utils)
+ #:use-module ((guix build compile) #:select (%lightweight-optimizations))
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-9)
+ #:use-module (ice-9 match)
+ #:export (make-config.scm
+ compiled-guix
+ guix-derivation
+ reload-guix))
+
+
+;;;
+;;; Dependency handling.
+;;;
+
+(define* (false-if-wrong-guile package
+ #:optional (guile-version (effective-version)))
+ "Return #f if PACKAGE depends on the \"wrong\" major version of Guile (e.g.,
+2.0 instead of 2.2), otherwise return PACKAGE."
+ (let ((guile (any (match-lambda
+ ((label (? package? dep) _ ...)
+ (and (string=? (package-name dep) "guile")
+ dep)))
+ (package-direct-inputs package))))
+ (and (or (not guile)
+ (string-prefix? guile-version
+ (package-version guile)))
+ package)))
+
+(define (package-for-guile guile-version . names)
+ "Return the package with one of the given NAMES that depends on
+GUILE-VERSION (\"2.0\" or \"2.2\"), or #f if none of the packages matches."
+ (let loop ((names names))
+ (match names
+ (()
+ #f)
+ ((name rest ...)
+ (match (specification->package name)
+ (#f
+ (loop rest))
+ ((? package? package)
+ (or (false-if-wrong-guile package)
+ (loop rest))))))))
+
+(define specification->package
+ ;; Use our own variant of that procedure because that of (gnu packages)
+ ;; would traverse all the .scm files, which is wasteful.
+ (let ((ref (lambda (module variable)
+ (module-ref (resolve-interface module) variable))))
+ (match-lambda
+ ("guile" (ref '(gnu packages commencement) 'guile-final))
+ ("guile-json" (ref '(gnu packages guile) 'guile-json))
+ ("guile-ssh" (ref '(gnu packages ssh) 'guile-ssh))
+ ("guile-git" (ref '(gnu packages guile) 'guile-git))
+ ("libgcrypt" (ref '(gnu packages gnupg) 'libgcrypt))
+ ("zlib" (ref '(gnu packages compression) 'zlib))
+ ("gzip" (ref '(gnu packages compression) 'gzip))
+ ("bzip2" (ref '(gnu packages compression) 'bzip2))
+ ("xz" (ref '(gnu packages compression) 'xz))
+ ("guix" (ref '(gnu packages package-management)
+ 'guix-register)))))
+
+
+;;;
+;;; Derivations.
+;;;
+
+;; Node in a DAG of build tasks. Each node maps to a derivation, but it's
+;; easier to express things this way.
+(define-record-type <node>
+ (node name modules source dependencies compiled)
+ node?
+ (name node-name) ;string
+ (modules node-modules) ;list of module names
+ (source node-source) ;list of source files
+ (dependencies node-dependencies) ;list of nodes
+ (compiled node-compiled)) ;node -> lowerable object
+
+(define (node-fold proc init nodes)
+ (let loop ((nodes nodes)
+ (visited (setq))
+ (result init))
+ (match nodes
+ (() result)
+ ((head tail ...)
+ (if (set-contains? visited head)
+ (loop tail visited result)
+ (loop tail (set-insert head visited)
+ (proc head result)))))))
+
+(define (node-modules/recursive nodes)
+ (node-fold (lambda (node modules)
+ (append (node-modules node) modules))
+ '()
+ nodes))
+
+(define* (closure modules #:optional (except '()))
+ (source-module-closure modules
+ #:select?
+ (match-lambda
+ (('guix 'config)
+ #f)
+ ((and module
+ (or ('guix _ ...) ('gnu _ ...)))
+ (not (member module except)))
+ (rest #f))))
+
+(define module->import
+ ;; Return a file-name/file-like object pair for the specified module and
+ ;; suitable for 'imported-files'.
+ (match-lambda
+ ((module '=> thing)
+ (let ((file (module-name->file-name module)))
+ (list file thing)))
+ (module
+ (let ((file (module-name->file-name module)))
+ (list file
+ (local-file (search-path %load-path file)))))))
+
+(define* (scheme-node name modules #:optional (dependencies '())
+ #:key (extra-modules '()) (extra-files '())
+ (extensions '())
+ parallel? guile-for-build)
+ "Return a node that builds the given Scheme MODULES, and depends on
+DEPENDENCIES (a list of nodes). EXTRA-MODULES is a list of additional modules
+added to the source, and EXTRA-FILES is a list of additional files.
+EXTENSIONS is a set of full-blown Guile packages (e.g., 'guile-json') that
+must be present in the search path."
+ (let* ((modules (append extra-modules
+ (closure modules
+ (node-modules/recursive dependencies))))
+ (module-files (map module->import modules))
+ (source (imported-files (string-append name "-source")
+ (append module-files extra-files))))
+ (node name modules source dependencies
+ (compiled-modules name source modules
+ (map node-source dependencies)
+ (map node-compiled dependencies)
+ #:extensions extensions
+ #:parallel? parallel?
+ #:guile-for-build guile-for-build))))
+
+(define (file-imports directory sub-directory pred)
+ "List all the files matching PRED under DIRECTORY/SUB-DIRECTORY. Return a
+list of file-name/file-like objects suitable as inputs to 'imported-files'."
+ (map (lambda (file)
+ (list (string-drop file (+ 1 (string-length directory)))
+ (local-file file #:recursive? #t)))
+ (find-files (string-append directory "/" sub-directory) pred)))
+
+(define (scheme-modules* directory sub-directory)
+ "Return the list of module names found under SUB-DIRECTORY in DIRECTORY."
+ (let ((prefix (string-length directory)))
+ (map (lambda (file)
+ (file-name->module-name (string-drop file prefix)))
+ (scheme-files (string-append directory "/" sub-directory)))))
+
+(define* (compiled-guix source #:key (version %guix-version)
+ (name (string-append "guix-" version))
+ (guile-version (effective-version))
+ (guile-for-build (guile-for-build guile-version))
+ (libgcrypt (specification->package "libgcrypt"))
+ (zlib (specification->package "zlib"))
+ (gzip (specification->package "gzip"))
+ (bzip2 (specification->package "bzip2"))
+ (xz (specification->package "xz"))
+ (guix (specification->package "guix")))
+ "Return a file-like object that contains a compiled Guix."
+ (define guile-json
+ (package-for-guile guile-version
+ "guile-json"
+ "guile2.2-json"
+ "guile2.0-json"))
+
+ (define guile-ssh
+ (package-for-guile guile-version
+ "guile-ssh"
+ "guile2.2-ssh"
+ "guile2.0-ssh"))
+
+ (define guile-git
+ (package-for-guile guile-version
+ "guile-git"
+ "guile2.0-git"))
+
+
+ (define dependencies
+ (match (append-map (lambda (package)
+ (cons (list "x" package)
+ (package-transitive-inputs package)))
+ (list guile-git guile-json guile-ssh))
+ (((labels packages _ ...) ...)
+ packages)))
+
+ (define *core-modules*
+ (scheme-node "guix-core"
+ '((guix)
+ (guix monad-repl)
+ (guix packages)
+ (guix download)
+ (guix discovery)
+ (guix profiles)
+ (guix build-system gnu)
+ (guix build-system trivial)
+ (guix build profiles)
+ (guix build gnu-build-system))
+
+ ;; Provide a dummy (guix config) with the default version
+ ;; number, storedir, etc. This is so that "guix-core" is the
+ ;; same across all installations and doesn't need to be
+ ;; rebuilt when the version changes, which in turn means we
+ ;; can have substitutes for it.
+ #:extra-modules
+ `(((guix config)
+ => ,(make-config.scm #:libgcrypt
+ (specification->package
+ "libgcrypt"))))
+
+ #:guile-for-build guile-for-build))
+
+ (define *extra-modules*
+ (scheme-node "guix-extra"
+ (filter-map (match-lambda
+ (('guix 'scripts _ ..1) #f)
+ (name name))
+ (scheme-modules* source "guix"))
+ (list *core-modules*)
+ #:extensions dependencies
+ #:guile-for-build guile-for-build))
+
+ (define *package-modules*
+ (scheme-node "guix-packages"
+ `((gnu packages)
+ ,@(scheme-modules* source "gnu/packages"))
+ (list *core-modules* *extra-modules*)
+ #:extensions dependencies
+ #:extra-files ;all the non-Scheme files
+ (file-imports source "gnu/packages"
+ (lambda (file stat)
+ (and (eq? 'regular (stat:type stat))
+ (not (string-suffix? ".scm" file))
+ (not (string-suffix? ".go" file))
+ (not (string-prefix? ".#" file))
+ (not (string-suffix? "~" file)))))
+ #:guile-for-build guile-for-build))
+
+ (define *system-modules*
+ (scheme-node "guix-system"
+ `((gnu system)
+ (gnu services)
+ ,@(scheme-modules* source "gnu/system")
+ ,@(scheme-modules* source "gnu/services"))
+ (list *package-modules* *extra-modules* *core-modules*)
+ #:extensions dependencies
+ #:extra-files
+ (file-imports source "gnu/system/examples" (const #t))
+ #:guile-for-build
+ guile-for-build))
+
+ (define *cli-modules*
+ (scheme-node "guix-cli"
+ (scheme-modules* source "/guix/scripts")
+ (list *core-modules* *extra-modules* *package-modules*
+ *system-modules*)
+ #:extensions dependencies
+ #:guile-for-build guile-for-build))
+
+ (define *config*
+ (scheme-node "guix-config"
+ '()
+ #:extra-modules
+ `(((guix config)
+ => ,(make-config.scm #:libgcrypt libgcrypt
+ #:zlib zlib
+ #:gzip gzip
+ #:bzip2 bzip2
+ #:xz xz
+ #:guix guix
+ #:package-name
+ %guix-package-name
+ #:package-version
+ version
+ #:bug-report-address
+ %guix-bug-report-address
+ #:home-page-url
+ %guix-home-page-url)))
+ #:guile-for-build guile-for-build))
+
+ (directory-union name
+ (append-map (lambda (node)
+ (list (node-source node)
+ (node-compiled node)))
+
+ ;; Note: *CONFIG* comes first so that it
+ ;; overrides the (guix config) module that
+ ;; comes with *CORE-MODULES*.
+ (list *config*
+ *cli-modules*
+ *system-modules*
+ *package-modules*
+ *extra-modules*
+ *core-modules*))
+
+ ;; Silently choose the first entry upon collision so that
+ ;; we choose *CONFIG*.
+ #:resolve-collision 'first
+
+ ;; When we do (add-to-store "utils.scm"), "utils.scm" must
+ ;; be a regular file, not a symlink. Thus, arrange so that
+ ;; regular files appear as regular files in the final
+ ;; output.
+ #:copy? #t
+ #:quiet? #t))
+
+
+;;;
+;;; Generating (guix config).
+;;;
+
+(define %dependency-variables
+ ;; (guix config) variables corresponding to dependencies.
+ '(%libgcrypt %libz %xz %gzip %bzip2 %nix-instantiate
+ %sbindir %guix-register-program))
+
+(define %persona-variables
+ ;; (guix config) variables that define Guix's persona.
+ '(%guix-package-name
+ %guix-version
+ %guix-bug-report-address
+ %guix-home-page-url))
+
+(define %config-variables
+ ;; (guix config) variables corresponding to Guix configuration (storedir,
+ ;; localstatedir, etc.)
+ (sort (filter pair?
+ (module-map (lambda (name var)
+ (and (not (memq name %dependency-variables))
+ (not (memq name %persona-variables))
+ (cons name (variable-ref var))))
+ (resolve-interface '(guix config))))
+ (lambda (name+value1 name+value2)
+ (string<? (symbol->string (car name+value1))
+ (symbol->string (car name+value2))))))
+
+(define* (make-config.scm #:key libgcrypt zlib gzip xz bzip2 guix
+ (package-name "GNU Guix")
+ (package-version "0")
+ (bug-report-address "bug-guix@gnu.org")
+ (home-page-url "https://gnu.org/s/guix"))
+
+ ;; Hack so that Geiser is not confused.
+ (define defmod 'define-module)
+
+ (scheme-file "config.scm"
+ #~(begin
+ (#$defmod (guix config)
+ #:export (%guix-package-name
+ %guix-version
+ %guix-bug-report-address
+ %guix-home-page-url
+ %sbindir
+ %libgcrypt
+ %libz
+ %gzip
+ %bzip2
+ %xz
+ %nix-instantiate))
+
+ ;; XXX: Work around <http://bugs.gnu.org/15602>.
+ (eval-when (expand load eval)
+ #$@(map (match-lambda
+ ((name . value)
+ #~(define-public #$name #$value)))
+ %config-variables)
+
+ (define %guix-package-name #$package-name)
+ (define %guix-version #$package-version)
+ (define %guix-bug-report-address #$bug-report-address)
+ (define %guix-home-page-url #$home-page-url)
+
+ (define %sbindir
+ ;; This is used to define '%guix-register-program'.
+ ;; TODO: Use a derivation that builds nothing but the
+ ;; C++ part.
+ #+(and guix (file-append guix "/sbin")))
+
+ (define %guix-register-program
+ (or (getenv "GUIX_REGISTER")
+ (and %sbindir
+ (string-append %sbindir "/guix-register"))))
+
+ (define %gzip
+ #+(and gzip (file-append gzip "/bin/gzip")))
+ (define %bzip2
+ #+(and bzip2 (file-append bzip2 "/bin/bzip2")))
+ (define %xz
+ #+(and xz (file-append xz "/bin/xz")))
+
+ (define %libgcrypt
+ #+(and libgcrypt
+ (file-append libgcrypt "/lib/libgcrypt")))
+ (define %libz
+ #+(and zlib
+ (file-append zlib "/lib/libz")))
+
+ (define %nix-instantiate ;for (guix import snix)
+ "nix-instantiate")))))
+
+
+
+;;;
+;;; Building.
+;;;
+
+(define (imported-files name files)
+ ;; This is a non-monadic, simplified version of 'imported-files' from (guix
+ ;; gexp).
+ (define build
+ (with-imported-modules (source-module-closure
+ '((guix build utils)))
+ #~(begin
+ (use-modules (ice-9 match)
+ (guix build utils))
+
+ (mkdir (ungexp output)) (chdir (ungexp output))
+ (for-each (match-lambda
+ ((final-path store-path)
+ (mkdir-p (dirname final-path))
+
+ ;; Note: We need regular files to be regular files, not
+ ;; symlinks, as this makes a difference for
+ ;; 'add-to-store'.
+ (copy-file store-path final-path)))
+ '#$files))))
+
+ (computed-file name build))
+
+(define* (compiled-modules name module-tree modules
+ #:optional
+ (dependencies '())
+ (dependencies-compiled '())
+ #:key
+ (extensions '()) ;full-blown Guile packages
+ parallel?
+ guile-for-build)
+ ;; This is a non-monadic, enhanced version of 'compiled-file' from (guix
+ ;; gexp).
+ (define build
+ (with-imported-modules (source-module-closure
+ '((guix build compile)
+ (guix build utils)))
+ #~(begin
+ (use-modules (srfi srfi-26)
+ (ice-9 match)
+ (ice-9 format)
+ (ice-9 threads)
+ (guix build compile)
+ (guix build utils))
+
+ (define (regular? file)
+ (not (member file '("." ".."))))
+
+ (define (report-load file total completed)
+ (display #\cr)
+ (format #t
+ "loading...\t~5,1f% of ~d files" ;FIXME: i18n
+ (* 100. (/ completed total)) total)
+ (force-output))
+
+ (define (report-compilation file total completed)
+ (display #\cr)
+ (format #t "compiling...\t~5,1f% of ~d files" ;FIXME: i18n
+ (* 100. (/ completed total)) total)
+ (force-output))
+
+ (define (process-directory directory output)
+ (let ((files (find-files directory "\\.scm$"))
+ (prefix (+ 1 (string-length directory))))
+ ;; Hide compilation warnings.
+ (parameterize ((current-warning-port (%make-void-port "w")))
+ (compile-files directory #$output
+ (map (cut string-drop <> prefix) files)
+ #:workers (parallel-job-count)
+ #:report-load report-load
+ #:report-compilation report-compilation))))
+
+ (setvbuf (current-output-port) _IONBF)
+ (setvbuf (current-error-port) _IONBF)
+
+ (set! %load-path (cons #+module-tree %load-path))
+ (set! %load-path
+ (append '#+dependencies
+ (map (lambda (extension)
+ (string-append extension "/share/guile/site/"
+ (effective-version)))
+ '#+extensions)
+ %load-path))
+
+ (set! %load-compiled-path
+ (append '#+dependencies-compiled
+ (map (lambda (extension)
+ (string-append extension "/lib/guile/"
+ (effective-version)
+ "/site-ccache"))
+ '#+extensions)
+ %load-compiled-path))
+
+ ;; Load the compiler modules upfront.
+ (compile #f)
+
+ (mkdir #$output)
+ (chdir #+module-tree)
+ (process-directory "." #$output))))
+
+ (computed-file name build
+ #:guile guile-for-build
+ #:options
+ `(#:local-build? #f ;allow substitutes
+
+ ;; Don't annoy people about _IONBF deprecation.
+ #:env-vars (("GUILE_WARN_DEPRECATED" . "no")))))
+
+
+;;;
+;;; Building.
+;;;
+
+(define (guile-for-build version)
+ "Return a derivation for Guile 2.0 or 2.2, whichever matches the currently
+running Guile."
+ (define canonical-package ;soft reference
+ (module-ref (resolve-interface '(gnu packages base))
+ 'canonical-package))
+
+ (match version
+ ("2.2.2"
+ ;; Gross hack to avoid ABI incompatibilities (see
+ ;; <https://bugs.gnu.org/29570>.)
+ (module-ref (resolve-interface '(gnu packages guile))
+ 'guile-2.2.2))
+ ("2.2"
+ (canonical-package (module-ref (resolve-interface '(gnu packages guile))
+ 'guile-2.2/fixed)))
+ ("2.0"
+ (canonical-package (specification->package "guile@2.0")))))
+
+(define* (guix-derivation source version
+ #:optional (guile-version (effective-version)))
+ "Return, as a monadic value, the derivation to build the Guix from SOURCE
+for GUILE-VERSION. Use VERSION as the version string."
+ (define (shorten version)
+ (if (and (string-every char-set:hex-digit version)
+ (> (string-length version) 9))
+ (string-take version 9) ;Git commit
+ version))
+
+ (define guile
+ (guile-for-build guile-version))
+
+ (mbegin %store-monad
+ (set-guile-for-build guile)
+ (lower-object (compiled-guix source
+ #:version version
+ #:name (string-append "guix-"
+ (shorten version))
+ #:guile-version (match guile-version
+ ("2.2.2" "2.2")
+ (version version))
+ #:guile-for-build guile))))
diff --git a/guix/upstream.scm b/guix/upstream.scm
index caaa0e44e4..9e1056f7a7 100644
--- a/guix/upstream.scm
+++ b/guix/upstream.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -153,7 +153,8 @@ correspond to the same version."
(cons (resolve-interface '(guix gnu-maintenance))
(all-modules (map (lambda (entry)
`(,entry . "guix/import"))
- %load-path))))
+ %load-path)
+ #:warn warn-about-load-error)))
(define %updaters
;; The list of publically-known updaters.
diff --git a/nix/libstore/globals.cc b/nix/libstore/globals.cc
index 4ab6c3a0f9..fcafac2df6 100644
--- a/nix/libstore/globals.cc
+++ b/nix/libstore/globals.cc
@@ -78,39 +78,6 @@ void Settings::processEnvironment()
}
-void Settings::loadConfFile()
-{
- Path settingsFile = (format("%1%/%2%") % nixConfDir % "nix.conf").str();
- if (!pathExists(settingsFile)) return;
- string contents = readFile(settingsFile);
-
- unsigned int pos = 0;
-
- while (pos < contents.size()) {
- string line;
- while (pos < contents.size() && contents[pos] != '\n')
- line += contents[pos++];
- pos++;
-
- string::size_type hash = line.find('#');
- if (hash != string::npos)
- line = string(line, 0, hash);
-
- vector<string> tokens = tokenizeString<vector<string> >(line);
- if (tokens.empty()) continue;
-
- if (tokens.size() < 2 || tokens[1] != "=")
- throw Error(format("illegal configuration line `%1%' in `%2%'") % line % settingsFile);
-
- string name = tokens[0];
-
- vector<string>::iterator i = tokens.begin();
- advance(i, 2);
- settings[name] = concatStringsSep(" ", Strings(i, tokens.end())); // FIXME: slow
- };
-}
-
-
void Settings::set(const string & name, const string & value)
{
settings[name] = value;
@@ -256,17 +223,6 @@ string Settings::pack()
}
-void Settings::unpack(const string & pack) {
- Strings lines = tokenizeString<Strings>(pack, "\n");
- foreach (Strings::iterator, i, lines) {
- string::size_type eq = i->find('=');
- if (eq == string::npos)
- throw Error("illegal option name/value");
- set(i->substr(0, eq), i->substr(eq + 1));
- }
-}
-
-
Settings::SettingsMap Settings::getOverrides()
{
return overrides;
diff --git a/nix/libstore/globals.hh b/nix/libstore/globals.hh
index 2439936959..1293625e1f 100644
--- a/nix/libstore/globals.hh
+++ b/nix/libstore/globals.hh
@@ -26,8 +26,6 @@ struct Settings {
void processEnvironment();
- void loadConfFile();
-
void set(const string & name, const string & value);
string get(const string & name, const string & def);
@@ -42,8 +40,6 @@ struct Settings {
string pack();
- void unpack(const string & pack);
-
SettingsMap getOverrides();
/* The directory where we store sources and derived files. */
diff --git a/nix/libstore/local-store.cc b/nix/libstore/local-store.cc
index 882bce1f40..4c55c6ea0d 100644
--- a/nix/libstore/local-store.cc
+++ b/nix/libstore/local-store.cc
@@ -171,27 +171,10 @@ LocalStore::LocalStore(bool reserveSpace)
}
else if (curSchema < nixSchemaVersion) {
- if (curSchema < 5)
- throw Error(
- "Your Nix store has a database in Berkeley DB format,\n"
- "which is no longer supported. To convert to the new format,\n"
- "please upgrade Nix to version 0.12 first.");
-
- if (!lockFile(globalLock, ltWrite, false)) {
- printMsg(lvlError, "waiting for exclusive access to the Nix store...");
- lockFile(globalLock, ltWrite, true);
- }
-
- /* Get the schema version again, because another process may
- have performed the upgrade already. */
- curSchema = getSchema();
-
- if (curSchema < 6) upgradeStore6();
- else if (curSchema < 7) { upgradeStore7(); openDB(true); }
-
- writeFile(schemaPath, (format("%1%") % nixSchemaVersion).str());
-
- lockFile(globalLock, ltRead, true);
+ /* Guix always used version 7 of the schema. */
+ throw Error(
+ format("Your store database uses an implausibly old schema, version %1%.")
+ % curSchema);
}
else openDB(false);
@@ -1633,140 +1616,6 @@ void LocalStore::markContentsGood(const Path & path)
}
-/* Functions for upgrading from the pre-SQLite database. */
-
-PathSet LocalStore::queryValidPathsOld()
-{
- PathSet paths;
- for (auto & i : readDirectory(settings.nixDBPath + "/info"))
- if (i.name.at(0) != '.') paths.insert(settings.nixStore + "/" + i.name);
- return paths;
-}
-
-
-ValidPathInfo LocalStore::queryPathInfoOld(const Path & path)
-{
- ValidPathInfo res;
- res.path = path;
-
- /* Read the info file. */
- string baseName = baseNameOf(path);
- Path infoFile = (format("%1%/info/%2%") % settings.nixDBPath % baseName).str();
- if (!pathExists(infoFile))
- throw Error(format("path `%1%' is not valid") % path);
- string info = readFile(infoFile);
-
- /* Parse it. */
- Strings lines = tokenizeString<Strings>(info, "\n");
-
- foreach (Strings::iterator, i, lines) {
- string::size_type p = i->find(':');
- if (p == string::npos)
- throw Error(format("corrupt line in `%1%': %2%") % infoFile % *i);
- string name(*i, 0, p);
- string value(*i, p + 2);
- if (name == "References") {
- Strings refs = tokenizeString<Strings>(value, " ");
- res.references = PathSet(refs.begin(), refs.end());
- } else if (name == "Deriver") {
- res.deriver = value;
- } else if (name == "Hash") {
- res.hash = parseHashField(path, value);
- } else if (name == "Registered-At") {
- int n = 0;
- string2Int(value, n);
- res.registrationTime = n;
- }
- }
-
- return res;
-}
-
-
-/* Upgrade from schema 5 (Nix 0.12) to schema 6 (Nix >= 0.15). */
-void LocalStore::upgradeStore6()
-{
- printMsg(lvlError, "upgrading Nix store to new schema (this may take a while)...");
-
- openDB(true);
-
- PathSet validPaths = queryValidPathsOld();
-
- SQLiteTxn txn(db);
-
- foreach (PathSet::iterator, i, validPaths) {
- addValidPath(queryPathInfoOld(*i), false);
- std::cerr << ".";
- }
-
- std::cerr << "|";
-
- foreach (PathSet::iterator, i, validPaths) {
- ValidPathInfo info = queryPathInfoOld(*i);
- unsigned long long referrer = queryValidPathId(*i);
- foreach (PathSet::iterator, j, info.references)
- addReference(referrer, queryValidPathId(*j));
- std::cerr << ".";
- }
-
- std::cerr << "\n";
-
- txn.commit();
-}
-
-
-#if defined(FS_IOC_SETFLAGS) && defined(FS_IOC_GETFLAGS) && defined(FS_IMMUTABLE_FL)
-
-static void makeMutable(const Path & path)
-{
- checkInterrupt();
-
- struct stat st = lstat(path);
-
- if (!S_ISDIR(st.st_mode) && !S_ISREG(st.st_mode)) return;
-
- if (S_ISDIR(st.st_mode)) {
- for (auto & i : readDirectory(path))
- makeMutable(path + "/" + i.name);
- }
-
- /* The O_NOFOLLOW is important to prevent us from changing the
- mutable bit on the target of a symlink (which would be a
- security hole). */
- AutoCloseFD fd = open(path.c_str(), O_RDONLY | O_NOFOLLOW);
- if (fd == -1) {
- if (errno == ELOOP) return; // it's a symlink
- throw SysError(format("opening file `%1%'") % path);
- }
-
- unsigned int flags = 0, old;
-
- /* Silently ignore errors getting/setting the immutable flag so
- that we work correctly on filesystems that don't support it. */
- if (ioctl(fd, FS_IOC_GETFLAGS, &flags)) return;
- old = flags;
- flags &= ~FS_IMMUTABLE_FL;
- if (old == flags) return;
- if (ioctl(fd, FS_IOC_SETFLAGS, &flags)) return;
-}
-
-/* Upgrade from schema 6 (Nix 0.15) to schema 7 (Nix >= 1.3). */
-void LocalStore::upgradeStore7()
-{
- if (getuid() != 0) return;
- printMsg(lvlError, "removing immutable bits from the Nix store (this may take a while)...");
- makeMutable(settings.nixStore);
-}
-
-#else
-
-void LocalStore::upgradeStore7()
-{
-}
-
-#endif
-
-
void LocalStore::vacuumDB()
{
if (sqlite3_exec(db, "vacuum;", 0, 0, 0) != SQLITE_OK)
diff --git a/nix/libstore/local-store.hh b/nix/libstore/local-store.hh
index 6110468498..4e6b4cfc1d 100644
--- a/nix/libstore/local-store.hh
+++ b/nix/libstore/local-store.hh
@@ -15,7 +15,7 @@ namespace nix {
/* Nix store and database schema version. Version 1 (or 0) was Nix <=
0.7. Version 2 was Nix 0.8 and 0.9. Version 3 is Nix 0.10.
Version 4 is Nix 0.11. Version 5 is Nix 0.12-0.16. Version 6 is
- Nix 1.0. Version 7 is Nix 1.3. */
+ Nix 1.0. Version 7 is Nix 1.3. Guix has always used version 7. */
const int nixSchemaVersion = 7;
@@ -244,11 +244,6 @@ private:
void updatePathInfo(const ValidPathInfo & info);
- void upgradeStore6();
- void upgradeStore7();
- PathSet queryValidPathsOld();
- ValidPathInfo queryPathInfoOld(const Path & path);
-
struct GCState;
void deleteGarbage(GCState & state, const Path & path);
diff --git a/nix/libstore/misc.cc b/nix/libstore/misc.cc
index 22363af126..97618089bd 100644
--- a/nix/libstore/misc.cc
+++ b/nix/libstore/misc.cc
@@ -67,120 +67,6 @@ Path findOutput(const Derivation & drv, string id)
}
-void queryMissing(StoreAPI & store, const PathSet & targets,
- PathSet & willBuild, PathSet & willSubstitute, PathSet & unknown,
- unsigned long long & downloadSize, unsigned long long & narSize)
-{
- downloadSize = narSize = 0;
-
- PathSet todo(targets.begin(), targets.end()), done;
-
- /* Getting substitute info has high latency when using the binary
- cache substituter. Thus it's essential to do substitute
- queries in parallel as much as possible. To accomplish this
- we do the following:
-
- - For all paths still to be processed (‘todo’), we add all
- paths for which we need info to the set ‘query’. For an
- unbuilt derivation this is the output paths; otherwise, it's
- the path itself.
-
- - We get info about all paths in ‘query’ in parallel.
-
- - We process the results and add new items to ‘todo’ if
- necessary. E.g. if a path is substitutable, then we need to
- get info on its references.
-
- - Repeat until ‘todo’ is empty.
- */
-
- while (!todo.empty()) {
-
- PathSet query, todoDrv, todoNonDrv;
-
- foreach (PathSet::iterator, i, todo) {
- if (done.find(*i) != done.end()) continue;
- done.insert(*i);
-
- DrvPathWithOutputs i2 = parseDrvPathWithOutputs(*i);
-
- if (isDerivation(i2.first)) {
- if (!store.isValidPath(i2.first)) {
- // FIXME: we could try to substitute p.
- unknown.insert(*i);
- continue;
- }
- Derivation drv = derivationFromPath(store, i2.first);
-
- PathSet invalid;
- foreach (DerivationOutputs::iterator, j, drv.outputs)
- if (wantOutput(j->first, i2.second)
- && !store.isValidPath(j->second.path))
- invalid.insert(j->second.path);
- if (invalid.empty()) continue;
-
- todoDrv.insert(*i);
- if (settings.useSubstitutes && substitutesAllowed(drv))
- query.insert(invalid.begin(), invalid.end());
- }
-
- else {
- if (store.isValidPath(*i)) continue;
- query.insert(*i);
- todoNonDrv.insert(*i);
- }
- }
-
- todo.clear();
-
- SubstitutablePathInfos infos;
- store.querySubstitutablePathInfos(query, infos);
-
- foreach (PathSet::iterator, i, todoDrv) {
- DrvPathWithOutputs i2 = parseDrvPathWithOutputs(*i);
-
- // FIXME: cache this
- Derivation drv = derivationFromPath(store, i2.first);
-
- PathSet outputs;
- bool mustBuild = false;
- if (settings.useSubstitutes && substitutesAllowed(drv)) {
- foreach (DerivationOutputs::iterator, j, drv.outputs) {
- if (!wantOutput(j->first, i2.second)) continue;
- if (!store.isValidPath(j->second.path)) {
- if (infos.find(j->second.path) == infos.end())
- mustBuild = true;
- else
- outputs.insert(j->second.path);
- }
- }
- } else
- mustBuild = true;
-
- if (mustBuild) {
- willBuild.insert(i2.first);
- todo.insert(drv.inputSrcs.begin(), drv.inputSrcs.end());
- foreach (DerivationInputs::iterator, j, drv.inputDrvs)
- todo.insert(makeDrvPathWithOutputs(j->first, j->second));
- } else
- todoNonDrv.insert(outputs.begin(), outputs.end());
- }
-
- foreach (PathSet::iterator, i, todoNonDrv) {
- done.insert(*i);
- SubstitutablePathInfos::iterator info = infos.find(*i);
- if (info != infos.end()) {
- willSubstitute.insert(*i);
- downloadSize += info->second.downloadSize;
- narSize += info->second.narSize;
- todo.insert(info->second.references.begin(), info->second.references.end());
- } else
- unknown.insert(*i);
- }
- }
-}
-
-
static void dfsVisit(StoreAPI & store, const PathSet & paths,
const Path & path, PathSet & visited, Paths & sorted,
PathSet & parents)
diff --git a/nix/libstore/misc.hh b/nix/libstore/misc.hh
index d3e31d51f7..edbf24047e 100644
--- a/nix/libstore/misc.hh
+++ b/nix/libstore/misc.hh
@@ -25,13 +25,6 @@ void computeFSClosure(StoreAPI & store, const Path & path,
given derivation. */
Path findOutput(const Derivation & drv, string id);
-/* Given a set of paths that are to be built, return the set of
- derivations that will be built, and the set of output paths that
- will be substituted. */
-void queryMissing(StoreAPI & store, const PathSet & targets,
- PathSet & willBuild, PathSet & willSubstitute, PathSet & unknown,
- unsigned long long & downloadSize, unsigned long long & narSize);
-
bool willBuildLocally(const Derivation & drv);
bool substitutesAllowed(const Derivation & drv);
diff --git a/nix/libstore/store-api.cc b/nix/libstore/store-api.cc
index 30af5f5fed..6742d2ed49 100644
--- a/nix/libstore/store-api.cc
+++ b/nix/libstore/store-api.cc
@@ -48,26 +48,6 @@ Path toStorePath(const Path & path)
}
-Path followLinksToStore(const Path & _path)
-{
- Path path = absPath(_path);
- while (!isInStore(path)) {
- if (!isLink(path)) break;
- string target = readLink(path);
- path = absPath(target, dirOf(path));
- }
- if (!isInStore(path))
- throw Error(format("path `%1%' is not in the Nix store") % path);
- return path;
-}
-
-
-Path followLinksToStorePath(const Path & path)
-{
- return toStorePath(followLinksToStore(path));
-}
-
-
string storePathToName(const Path & path)
{
assertStorePath(path);
@@ -200,17 +180,6 @@ Path makeFixedOutputPath(bool recursive,
}
-std::pair<Path, Hash> computeStorePathForPath(const Path & srcPath,
- bool recursive, HashType hashAlgo, PathFilter & filter)
-{
- HashType ht(hashAlgo);
- Hash h = recursive ? hashPath(ht, srcPath, filter).first : hashFile(ht, srcPath);
- string name = baseNameOf(srcPath);
- Path dstPath = makeFixedOutputPath(recursive, hashAlgo, h, name);
- return std::pair<Path, Hash>(dstPath, h);
-}
-
-
Path computeStorePathForText(const string & name, const string & s,
const PathSet & references)
{
diff --git a/nix/libstore/store-api.hh b/nix/libstore/store-api.hh
index fa78d595f2..e957cedebc 100644
--- a/nix/libstore/store-api.hh
+++ b/nix/libstore/store-api.hh
@@ -311,15 +311,6 @@ void checkStoreName(const string & name);
Path toStorePath(const Path & path);
-/* Follow symlinks until we end up with a path in the Nix store. */
-Path followLinksToStore(const Path & path);
-
-
-/* Same as followLinksToStore(), but apply toStorePath() to the
- result. */
-Path followLinksToStorePath(const Path & path);
-
-
/* Constructs a unique store path name. */
Path makeStorePath(const string & type,
const Hash & hash, const string & name);
@@ -331,14 +322,6 @@ Path makeFixedOutputPath(bool recursive,
HashType hashAlgo, Hash hash, string name);
-/* This is the preparatory part of addToStore() and addToStoreFixed();
- it computes the store path to which srcPath is to be copied.
- Returns the store path and the cryptographic hash of the
- contents of srcPath. */
-std::pair<Path, Hash> computeStorePathForPath(const Path & srcPath,
- bool recursive = true, HashType hashAlgo = htSHA256,
- PathFilter & filter = defaultPathFilter);
-
/* Preparatory part of addTextToStore().
!!! Computation of the path should take the references given to
diff --git a/po/guix/LINGUAS b/po/guix/LINGUAS
index 5158332739..d26dd60980 100644
--- a/po/guix/LINGUAS
+++ b/po/guix/LINGUAS
@@ -6,6 +6,7 @@ de
en@boldquot
en@quot
eo
+es
fr
hu
pl
diff --git a/po/guix/es.po b/po/guix/es.po
new file mode 100644
index 0000000000..e3362c0545
--- /dev/null
+++ b/po/guix/es.po
@@ -0,0 +1,2994 @@
+# Spanish messages for GNU Guix.
+# Copyright (C) 2017 the authors of Guix (msgids)
+# This file is distributed under the same license as the guix package.
+# Jorge Maldonado Ventura <jorgesumle@freakspot.net>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: guix 0.14.0\n"
+"Report-Msgid-Bugs-To: ludo@gnu.org\n"
+"POT-Creation-Date: 2017-11-28 08:56+0100\n"
+"PO-Revision-Date: 2018-03-30 02:16+0200\n"
+"Last-Translator: Jorge Maldonado Ventura <jorgesumle@freakspot.net>\n"
+"Language-Team: Spanish <es@tp.org.es>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.0.4\n"
+
+#: gnu.scm:82
+#, scheme-format
+msgid "module ~a not found"
+msgstr "módulo ~a no encontrado"
+
+#: gnu.scm:100
+msgid ""
+"You may use @command{guix package --show=foo | grep location} to search\n"
+"for the location of package @code{foo}.\n"
+"If you get the line @code{location: gnu/packages/bar.scm:174:2},\n"
+"add @code{bar} to the @code{use-package-modules} form."
+msgstr ""
+"Puede usar @command{guix package --show=foo | grep location} para buscar\n"
+"la ubicación del paquete @code{foo}.\n"
+"Si obtiene la línea @code{location: gnu/packages/bar.scm:174:2},\n"
+"añada @code{bar} a la forma @code{use-package-modules}."
+
+#: gnu.scm:108
+#, scheme-format
+msgid "Try adding @code{(use-package-modules ~a)}."
+msgstr "Pruebe añadiendo @code{(use-package-modules ~a)}"
+
+#: gnu.scm:123
+#, scheme-format
+msgid ""
+"You may use @command{guix system search ~a} to search for a service\n"
+"matching @code{~a}.\n"
+"If you get the line @code{location: gnu/services/foo.scm:188:2},\n"
+"add @code{foo} to the @code{use-service-modules} form."
+msgstr ""
+
+#: gnu.scm:132
+#, scheme-format
+msgid "Try adding @code{(use-service-modules ~a)}."
+msgstr ""
+
+#: gnu/packages.scm:92
+#, scheme-format
+msgid "~a: patch not found"
+msgstr "~a: parche no encontrado"
+
+#: gnu/packages.scm:108
+#, scheme-format
+msgid "could not find bootstrap binary '~a' for system '~a'"
+msgstr ""
+
+#: gnu/packages.scm:240
+#, scheme-format
+msgid "ambiguous package specification `~a'~%"
+msgstr "especificación de paquete ambigua `~a'~%"
+
+#: gnu/packages.scm:241
+#, scheme-format
+msgid "choosing ~a@~a from ~a~%"
+msgstr ""
+
+#: gnu/packages.scm:246 guix/scripts/package.scm:271
+#, scheme-format
+msgid "package '~a' has been superseded by '~a'~%"
+msgstr ""
+
+#: gnu/packages.scm:253
+#, scheme-format
+msgid "~A: package not found for version ~a~%"
+msgstr "~A: paquete no encontrado para versión ~a~%"
+
+#: gnu/packages.scm:254
+#, scheme-format
+msgid "~A: unknown package~%"
+msgstr "~A: paquete desconocido~%"
+
+#: gnu/packages.scm:282
+#, scheme-format
+msgid "package `~a' lacks output `~a'~%"
+msgstr ""
+
+#: gnu/services.scm:235
+#, scheme-format
+msgid "~a: no value specified for service of type '~a'"
+msgstr ""
+
+#: gnu/services.scm:650
+#, scheme-format
+msgid "no target of type '~a' for service '~a'"
+msgstr ""
+
+#: gnu/services.scm:662 gnu/services.scm:723
+#, scheme-format
+msgid "more than one target service of type '~a'"
+msgstr ""
+
+#: gnu/services.scm:713
+#, scheme-format
+msgid "service of type '~a' not found"
+msgstr ""
+
+#: gnu/system.scm:305
+#, scheme-format
+msgid "unrecognized boot parameters for '~a'~%"
+msgstr ""
+
+#: gnu/system.scm:695
+#, scheme-format
+msgid "using a string for file '~a' is deprecated; use 'plain-file' instead~%"
+msgstr ""
+
+#: gnu/system.scm:711
+#, scheme-format
+msgid "using a monadic value for '~a' is deprecated; use 'plain-file' instead~%"
+msgstr ""
+
+#: gnu/system.scm:856
+#, scheme-format
+msgid "~a: invalid locale name"
+msgstr "~a: nombre de configuración regional inválido"
+
+#: gnu/services/shepherd.scm:166
+#, scheme-format
+msgid "service '~a' provided more than once"
+msgstr ""
+
+#: gnu/services/shepherd.scm:181
+#, scheme-format
+msgid "service '~a' requires '~a', which is not provided by any service"
+msgstr ""
+
+#: gnu/system/shadow.scm:231
+#, scheme-format
+msgid "supplementary group '~a' of user '~a' is undeclared"
+msgstr ""
+
+#: gnu/system/shadow.scm:241
+#, scheme-format
+msgid "primary group '~a' of user '~a' is undeclared"
+msgstr ""
+
+#: guix/scripts.scm:56
+#, scheme-format
+msgid "invalid argument: ~a~%"
+msgstr ""
+
+#: guix/scripts.scm:84 guix/scripts/download.scm:135
+#: guix/scripts/import/cran.scm:82 guix/scripts/import/elpa.scm:77
+#: guix/scripts/publish.scm:844 guix/scripts/edit.scm:81
+#, scheme-format
+msgid "~A: unrecognized option~%"
+msgstr ""
+
+#: guix/scripts.scm:179
+#, scheme-format
+msgid "Your Guix installation is ~a day old.\n"
+msgid_plural "Your Guix installation is ~a days old.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/scripts.scm:184
+#, scheme-format
+msgid ""
+"Consider running 'guix pull' followed by\n"
+"'~a' to get up-to-date packages and security updates.\n"
+msgstr ""
+"Considere ejecutar 'guix pull' seguido de\n"
+"'~a' para obtener paquetes actualizados y actualizaciones de seguridad.\n"
+
+#: guix/scripts/build.scm:124
+#, scheme-format
+msgid "failed to create GC root `~a': ~a~%"
+msgstr ""
+
+#: guix/scripts/build.scm:206
+#, scheme-format
+msgid "invalid replacement specification: ~s~%"
+msgstr ""
+
+#: guix/scripts/build.scm:263
+msgid ""
+"\n"
+" --with-source=SOURCE\n"
+" use SOURCE when building the corresponding package"
+msgstr ""
+
+#: guix/scripts/build.scm:266
+msgid ""
+"\n"
+" --with-input=PACKAGE=REPLACEMENT\n"
+" replace dependency PACKAGE by REPLACEMENT"
+msgstr ""
+
+#: guix/scripts/build.scm:269
+msgid ""
+"\n"
+" --with-graft=PACKAGE=REPLACEMENT\n"
+" graft REPLACEMENT on packages that refer to PACKAGE"
+msgstr ""
+
+#: guix/scripts/build.scm:294
+#, scheme-format
+msgid "transformation '~a' had no effect on ~a~%"
+msgstr ""
+
+#: guix/scripts/build.scm:312
+msgid ""
+"\n"
+" -L, --load-path=DIR prepend DIR to the package module search path"
+msgstr ""
+
+#: guix/scripts/build.scm:314
+msgid ""
+"\n"
+" -K, --keep-failed keep build tree of failed builds"
+msgstr ""
+
+#: guix/scripts/build.scm:316
+msgid ""
+"\n"
+" -k, --keep-going keep going when some of the derivations fail"
+msgstr ""
+
+#: guix/scripts/build.scm:318
+msgid ""
+"\n"
+" -n, --dry-run do not build the derivations"
+msgstr ""
+
+#: guix/scripts/build.scm:320
+msgid ""
+"\n"
+" --fallback fall back to building when the substituter fails"
+msgstr ""
+
+#: guix/scripts/build.scm:322
+msgid ""
+"\n"
+" --no-substitutes build instead of resorting to pre-built substitutes"
+msgstr ""
+
+#: guix/scripts/build.scm:324 guix/scripts/size.scm:232
+msgid ""
+"\n"
+" --substitute-urls=URLS\n"
+" fetch substitute from URLS if they are authorized"
+msgstr ""
+
+#: guix/scripts/build.scm:327
+msgid ""
+"\n"
+" --no-grafts do not graft packages"
+msgstr ""
+
+#: guix/scripts/build.scm:329
+msgid ""
+"\n"
+" --no-build-hook do not attempt to offload builds via the build hook"
+msgstr ""
+
+#: guix/scripts/build.scm:331
+msgid ""
+"\n"
+" --max-silent-time=SECONDS\n"
+" mark the build as failed after SECONDS of silence"
+msgstr ""
+
+#: guix/scripts/build.scm:334
+msgid ""
+"\n"
+" --timeout=SECONDS mark the build as failed after SECONDS of activity"
+msgstr ""
+
+#: guix/scripts/build.scm:336
+msgid ""
+"\n"
+" --verbosity=LEVEL use the given verbosity LEVEL"
+msgstr ""
+
+#: guix/scripts/build.scm:338
+msgid ""
+"\n"
+" --rounds=N build N times in a row to detect non-determinism"
+msgstr ""
+
+#: guix/scripts/build.scm:340
+msgid ""
+"\n"
+" -c, --cores=N allow the use of up to N CPU cores for the build"
+msgstr ""
+
+#: guix/scripts/build.scm:342
+msgid ""
+"\n"
+" -M, --max-jobs=N allow at most N build jobs"
+msgstr ""
+
+#: guix/scripts/build.scm:448 guix/scripts/build.scm:455
+#, scheme-format
+msgid "not a number: '~a' option argument: ~a~%"
+msgstr ""
+
+#: guix/scripts/build.scm:474
+msgid ""
+"Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n"
+"Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"
+msgstr ""
+
+#: guix/scripts/build.scm:476
+msgid ""
+"\n"
+" -e, --expression=EXPR build the package or derivation EXPR evaluates to"
+msgstr ""
+
+#: guix/scripts/build.scm:478
+msgid ""
+"\n"
+" -f, --file=FILE build the package or derivation that the code within\n"
+" FILE evaluates to"
+msgstr ""
+
+#: guix/scripts/build.scm:481
+msgid ""
+"\n"
+" -S, --source build the packages' source derivations"
+msgstr ""
+
+#: guix/scripts/build.scm:483
+msgid ""
+"\n"
+" --sources[=TYPE] build source derivations; TYPE may optionally be one\n"
+" of \"package\", \"all\" (default), or \"transitive\""
+msgstr ""
+
+#: guix/scripts/build.scm:486 guix/scripts/pack.scm:338
+msgid ""
+"\n"
+" -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\""
+msgstr ""
+
+#: guix/scripts/build.scm:488 guix/scripts/pack.scm:340
+msgid ""
+"\n"
+" --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\""
+msgstr ""
+
+#: guix/scripts/build.scm:490
+msgid ""
+"\n"
+" -d, --derivations return the derivation paths of the given packages"
+msgstr ""
+
+#: guix/scripts/build.scm:492
+msgid ""
+"\n"
+" --check rebuild items to check for non-determinism issues"
+msgstr ""
+
+#: guix/scripts/build.scm:494
+msgid ""
+"\n"
+" --repair repair the specified items"
+msgstr ""
+
+#: guix/scripts/build.scm:496
+msgid ""
+"\n"
+" -r, --root=FILE make FILE a symlink to the result, and register it\n"
+" as a garbage collector root"
+msgstr ""
+
+#: guix/scripts/build.scm:499
+msgid ""
+"\n"
+" -q, --quiet do not show the build log"
+msgstr ""
+
+#: guix/scripts/build.scm:501
+msgid ""
+"\n"
+" --log-file return the log file names for the given derivations"
+msgstr ""
+
+#: guix/scripts/build.scm:508 guix/scripts/download.scm:83
+#: guix/scripts/package.scm:425 guix/scripts/gc.scm:74
+#: guix/scripts/hash.scm:59 guix/scripts/import.scm:92
+#: guix/scripts/import/cran.scm:47 guix/scripts/pull.scm:110
+#: guix/scripts/substitute.scm:889 guix/scripts/system.scm:870
+#: guix/scripts/lint.scm:1090 guix/scripts/publish.scm:94
+#: guix/scripts/edit.scm:44 guix/scripts/size.scm:243
+#: guix/scripts/graph.scm:432 guix/scripts/challenge.scm:241
+#: guix/scripts/copy.scm:122 guix/scripts/pack.scm:349
+#: guix/scripts/weather.scm:156 guix/scripts/container.scm:33
+#: guix/scripts/container/exec.scm:43
+msgid ""
+"\n"
+" -h, --help display this help and exit"
+msgstr ""
+
+#: guix/scripts/build.scm:510 guix/scripts/download.scm:85
+#: guix/scripts/package.scm:427 guix/scripts/gc.scm:76
+#: guix/scripts/hash.scm:61 guix/scripts/import.scm:94
+#: guix/scripts/import/cran.scm:49 guix/scripts/pull.scm:112
+#: guix/scripts/substitute.scm:891 guix/scripts/system.scm:872
+#: guix/scripts/lint.scm:1094 guix/scripts/publish.scm:96
+#: guix/scripts/edit.scm:46 guix/scripts/size.scm:245
+#: guix/scripts/graph.scm:434 guix/scripts/challenge.scm:243
+#: guix/scripts/copy.scm:124 guix/scripts/pack.scm:351
+#: guix/scripts/weather.scm:158 guix/scripts/container.scm:35
+#: guix/scripts/container/exec.scm:45
+msgid ""
+"\n"
+" -V, --version display version information and exit"
+msgstr ""
+
+#: guix/scripts/build.scm:537
+#, scheme-format
+msgid ""
+"invalid argument: '~a' option argument: ~a, ~\n"
+"must be one of 'package', 'all', or 'transitive'~%"
+msgstr ""
+
+#: guix/scripts/build.scm:590
+#, scheme-format
+msgid "~s: not something we can build~%"
+msgstr ""
+
+#: guix/scripts/build.scm:644
+#, scheme-format
+msgid "~a: warning: package '~a' has no source~%"
+msgstr ""
+
+#: guix/scripts/build.scm:678
+#, scheme-format
+msgid "no build log for '~a'~%"
+msgstr ""
+
+#: guix/discovery.scm:88
+#, scheme-format
+msgid "cannot access `~a': ~a~%"
+msgstr ""
+
+#: guix/scripts/download.scm:69
+msgid ""
+"Usage: guix download [OPTION] URL\n"
+"Download the file at URL to the store or to the given file, and print its\n"
+"file name and the hash of its contents.\n"
+"\n"
+"Supported formats: 'nix-base32' (default), 'base32', and 'base16'\n"
+"('hex' and 'hexadecimal' can be used as well).\n"
+msgstr ""
+
+#: guix/scripts/download.scm:75 guix/scripts/hash.scm:54
+msgid ""
+"\n"
+" -f, --format=FMT write the hash in the given format"
+msgstr ""
+
+#: guix/scripts/download.scm:77
+msgid ""
+"\n"
+" --no-check-certificate\n"
+" do not validate the certificate of HTTPS servers "
+msgstr ""
+
+#: guix/scripts/download.scm:80
+msgid ""
+"\n"
+" -o, --output=FILE download to FILE"
+msgstr ""
+
+#: guix/scripts/download.scm:103 guix/scripts/hash.scm:82
+#, scheme-format
+msgid "unsupported hash format: ~a~%"
+msgstr ""
+
+#: guix/scripts/download.scm:138 guix/scripts/package.scm:906
+#: guix/scripts/publish.scm:846
+#, scheme-format
+msgid "~A: extraneous argument~%"
+msgstr ""
+
+#: guix/scripts/download.scm:146
+#, scheme-format
+msgid "no download URI was specified~%"
+msgstr ""
+
+#: guix/scripts/download.scm:151
+#, scheme-format
+msgid "~a: failed to parse URI~%"
+msgstr ""
+
+#: guix/scripts/download.scm:161
+#, scheme-format
+msgid "~a: download failed~%"
+msgstr ""
+
+#: guix/scripts/package.scm:112
+#, scheme-format
+msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
+msgstr ""
+
+#: guix/scripts/package.scm:134
+#, scheme-format
+msgid "error: while creating directory `~a': ~a~%"
+msgstr ""
+
+#: guix/scripts/package.scm:138
+#, scheme-format
+msgid "Please create the `~a' directory, with you as the owner.~%"
+msgstr ""
+
+#: guix/scripts/package.scm:145
+#, scheme-format
+msgid "error: directory `~a' is not owned by you~%"
+msgstr ""
+
+#: guix/scripts/package.scm:148
+#, scheme-format
+msgid "Please change the owner of `~a' to user ~s.~%"
+msgstr ""
+
+#: guix/scripts/package.scm:183
+#, scheme-format
+msgid "not removing generation ~a, which is current~%"
+msgstr ""
+
+#: guix/scripts/package.scm:190
+#, scheme-format
+msgid "no matching generation~%"
+msgstr ""
+
+#: guix/scripts/package.scm:193 guix/scripts/package.scm:716
+#: guix/scripts/system.scm:558
+#, scheme-format
+msgid "invalid syntax: ~a~%"
+msgstr ""
+
+#: guix/scripts/package.scm:219
+#, scheme-format
+msgid "nothing to be done~%"
+msgstr ""
+
+#: guix/scripts/package.scm:233
+#, scheme-format
+msgid "~a package in profile~%"
+msgid_plural "~a packages in profile~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/scripts/package.scm:313
+#, scheme-format
+msgid "package '~a' no longer exists~%"
+msgstr "paquete '~a' ya no existe~%"
+
+#: guix/scripts/package.scm:351
+#, scheme-format
+msgid "The following environment variable definitions may be needed:~%"
+msgstr "Puede que se necesiten las siguientes definiciones de variables de entorno:~%"
+
+#: guix/scripts/package.scm:366
+msgid ""
+"Usage: guix package [OPTION]...\n"
+"Install, remove, or upgrade packages in a single transaction.\n"
+msgstr ""
+"Uso: guix package [OPCIÓN]...\n"
+"Instala, elimina o actualiza paquetes en una única transacción.\n"
+
+#: guix/scripts/package.scm:368
+msgid ""
+"\n"
+" -i, --install PACKAGE ...\n"
+" install PACKAGEs"
+msgstr ""
+"\n"
+" -i, --install PAQUETE ...\n"
+" install PAQUETEs"
+
+#: guix/scripts/package.scm:371
+msgid ""
+"\n"
+" -e, --install-from-expression=EXP\n"
+" install the package EXP evaluates to"
+msgstr ""
+
+#: guix/scripts/package.scm:374
+msgid ""
+"\n"
+" -f, --install-from-file=FILE\n"
+" install the package that the code within FILE\n"
+" evaluates to"
+msgstr ""
+
+#: guix/scripts/package.scm:378
+msgid ""
+"\n"
+" -r, --remove PACKAGE ...\n"
+" remove PACKAGEs"
+msgstr ""
+"\n"
+" -r, --remove PAQUETES ...\n"
+" elimina PAQUETESs"
+
+#: guix/scripts/package.scm:381
+msgid ""
+"\n"
+" -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"
+msgstr ""
+
+#: guix/scripts/package.scm:383
+msgid ""
+"\n"
+" -m, --manifest=FILE create a new profile generation with the manifest\n"
+" from FILE"
+msgstr ""
+
+#: guix/scripts/package.scm:386
+msgid ""
+"\n"
+" --do-not-upgrade[=REGEXP] do not upgrade any packages matching REGEXP"
+msgstr ""
+
+#: guix/scripts/package.scm:388
+msgid ""
+"\n"
+" --roll-back roll back to the previous generation"
+msgstr ""
+
+#: guix/scripts/package.scm:390
+msgid ""
+"\n"
+" --search-paths[=KIND]\n"
+" display needed environment variable definitions"
+msgstr ""
+
+#: guix/scripts/package.scm:393
+msgid ""
+"\n"
+" -l, --list-generations[=PATTERN]\n"
+" list generations matching PATTERN"
+msgstr ""
+
+#: guix/scripts/package.scm:396
+msgid ""
+"\n"
+" -d, --delete-generations[=PATTERN]\n"
+" delete generations matching PATTERN"
+msgstr ""
+
+#: guix/scripts/package.scm:399
+msgid ""
+"\n"
+" -S, --switch-generation=PATTERN\n"
+" switch to a generation matching PATTERN"
+msgstr ""
+
+#: guix/scripts/package.scm:402
+msgid ""
+"\n"
+" -p, --profile=PROFILE use PROFILE instead of the user's default profile"
+msgstr ""
+
+#: guix/scripts/package.scm:405
+msgid ""
+"\n"
+" --bootstrap use the bootstrap Guile to build the profile"
+msgstr ""
+
+#: guix/scripts/package.scm:407 guix/scripts/pull.scm:98
+msgid ""
+"\n"
+" --verbose produce verbose output"
+msgstr ""
+
+#: guix/scripts/package.scm:410
+msgid ""
+"\n"
+" -s, --search=REGEXP search in synopsis and description using REGEXP"
+msgstr ""
+
+#: guix/scripts/package.scm:412
+msgid ""
+"\n"
+" -I, --list-installed[=REGEXP]\n"
+" list installed packages matching REGEXP"
+msgstr ""
+
+#: guix/scripts/package.scm:415
+msgid ""
+"\n"
+" -A, --list-available[=REGEXP]\n"
+" list available packages matching REGEXP"
+msgstr ""
+
+#: guix/scripts/package.scm:418
+msgid ""
+"\n"
+" --show=PACKAGE show details about PACKAGE"
+msgstr ""
+
+#: guix/scripts/package.scm:470
+#, scheme-format
+msgid "upgrade regexp '~a' looks like a command-line option~%"
+msgstr ""
+
+#: guix/scripts/package.scm:473
+#, scheme-format
+msgid "is this intended?~%"
+msgstr ""
+
+#: guix/scripts/package.scm:518
+#, scheme-format
+msgid "~a: unsupported kind of search path~%"
+msgstr ""
+
+#: guix/scripts/package.scm:815
+#, scheme-format
+msgid "cannot switch to generation '~a'~%"
+msgstr ""
+
+#: guix/scripts/package.scm:831
+#, scheme-format
+msgid "would install new manifest from '~a' with ~d entries~%"
+msgstr ""
+
+#: guix/scripts/package.scm:833
+#, scheme-format
+msgid "installing new manifest from '~a' with ~d entries~%"
+msgstr ""
+
+#: guix/scripts/gc.scm:42
+msgid ""
+"Usage: guix gc [OPTION]... PATHS...\n"
+"Invoke the garbage collector.\n"
+msgstr ""
+
+#: guix/scripts/gc.scm:44
+msgid ""
+"\n"
+" -C, --collect-garbage[=MIN]\n"
+" collect at least MIN bytes of garbage"
+msgstr ""
+
+#: guix/scripts/gc.scm:47
+msgid ""
+"\n"
+" -F, --free-space=FREE attempt to reach FREE available space in the store"
+msgstr ""
+
+#: guix/scripts/gc.scm:49
+msgid ""
+"\n"
+" -d, --delete attempt to delete PATHS"
+msgstr ""
+
+#: guix/scripts/gc.scm:51
+msgid ""
+"\n"
+" --optimize optimize the store by deduplicating identical files"
+msgstr ""
+
+#: guix/scripts/gc.scm:53
+msgid ""
+"\n"
+" --list-dead list dead paths"
+msgstr ""
+
+#: guix/scripts/gc.scm:55
+msgid ""
+"\n"
+" --list-live list live paths"
+msgstr ""
+
+#: guix/scripts/gc.scm:58
+msgid ""
+"\n"
+" --references list the references of PATHS"
+msgstr ""
+
+#: guix/scripts/gc.scm:60
+msgid ""
+"\n"
+" -R, --requisites list the requisites of PATHS"
+msgstr ""
+
+#: guix/scripts/gc.scm:62
+msgid ""
+"\n"
+" --referrers list the referrers of PATHS"
+msgstr ""
+
+#: guix/scripts/gc.scm:65
+msgid ""
+"\n"
+" --verify[=OPTS] verify the integrity of the store; OPTS is a\n"
+" comma-separated combination of 'repair' and\n"
+" 'contents'"
+msgstr ""
+
+#: guix/scripts/gc.scm:69
+msgid ""
+"\n"
+" --list-failures list cached build failures"
+msgstr ""
+
+#: guix/scripts/gc.scm:71
+msgid ""
+"\n"
+" --clear-failures remove PATHS from the set of cached failures"
+msgstr ""
+
+#: guix/scripts/gc.scm:100
+#, scheme-format
+msgid "invalid amount of storage: ~a~%"
+msgstr ""
+
+#: guix/scripts/gc.scm:185
+msgid "already ~h bytes available on ~a, nothing to do~%"
+msgstr ""
+
+#: guix/scripts/gc.scm:188
+msgid "freeing ~h bytes~%"
+msgstr ""
+
+#: guix/scripts/gc.scm:200
+#, scheme-format
+msgid "extraneous arguments: ~{~a ~}~%"
+msgstr ""
+
+#: guix/scripts/gc.scm:220 guix/scripts/gc.scm:223
+msgid "freed ~h bytes~%"
+msgstr ""
+
+#: guix/scripts/hash.scm:47
+msgid ""
+"Usage: guix hash [OPTION] FILE\n"
+"Return the cryptographic hash of FILE.\n"
+"\n"
+"Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex'\n"
+"and 'hexadecimal' can be used as well).\n"
+msgstr ""
+
+#: guix/scripts/hash.scm:52
+msgid ""
+"\n"
+" -x, --exclude-vcs exclude version control directories"
+msgstr ""
+
+#: guix/scripts/hash.scm:56
+msgid ""
+"\n"
+" -r, --recursive compute the hash on FILE recursively"
+msgstr ""
+
+#: guix/scripts/hash.scm:150 guix/ui.scm:326 guix/ui.scm:601 guix/ui.scm:654
+#, scheme-format
+msgid "~a~%"
+msgstr ""
+
+#: guix/scripts/hash.scm:153 guix/scripts/system.scm:1022
+#: guix/scripts/system.scm:1031 guix/scripts/system.scm:1038
+#, scheme-format
+msgid "wrong number of arguments~%"
+msgstr ""
+
+#: guix/scripts/import.scm:86
+msgid ""
+"Usage: guix import IMPORTER ARGS ...\n"
+"Run IMPORTER with ARGS.\n"
+msgstr ""
+
+#: guix/scripts/import.scm:89
+msgid "IMPORTER must be one of the importers listed below:\n"
+msgstr ""
+
+#: guix/scripts/import.scm:103
+#, scheme-format
+msgid "guix import: missing importer name~%"
+msgstr ""
+
+#: guix/scripts/import.scm:123
+#, scheme-format
+msgid "'~a' import failed~%"
+msgstr ""
+
+#: guix/scripts/import.scm:124
+#, scheme-format
+msgid "~a: invalid importer~%"
+msgstr ""
+
+#: guix/scripts/import/cran.scm:43
+msgid ""
+"Usage: guix import cran PACKAGE-NAME\n"
+"Import and convert the CRAN package for PACKAGE-NAME.\n"
+msgstr ""
+
+#: guix/scripts/import/cran.scm:45
+msgid ""
+"\n"
+" -a, --archive=ARCHIVE specify the archive repository"
+msgstr ""
+
+#: guix/scripts/import/cran.scm:108
+#, scheme-format
+msgid "failed to download description for package '~a'~%"
+msgstr ""
+
+#: guix/scripts/import/cran.scm:112 guix/scripts/import/elpa.scm:95
+#, scheme-format
+msgid "too few arguments~%"
+msgstr ""
+
+#: guix/scripts/import/cran.scm:114 guix/scripts/import/elpa.scm:97
+#, scheme-format
+msgid "too many arguments~%"
+msgstr ""
+
+#: guix/scripts/import/elpa.scm:41
+msgid ""
+"Usage: guix import elpa PACKAGE-NAME\n"
+"Import the latest package named PACKAGE-NAME from an ELPA repository.\n"
+msgstr ""
+
+#: guix/scripts/import/elpa.scm:43
+msgid ""
+"\n"
+" -a, --archive=ARCHIVE specify the archive repository"
+msgstr ""
+
+#: guix/scripts/import/elpa.scm:45
+msgid ""
+"\n"
+" -h, --help display this help and exit"
+msgstr ""
+
+#: guix/scripts/import/elpa.scm:47
+msgid ""
+"\n"
+" -V, --version display version information and exit"
+msgstr ""
+
+#: guix/scripts/import/elpa.scm:92
+#, scheme-format
+msgid "failed to download package '~a'~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:60
+#, scheme-format
+msgid ""
+"Guile-Git is missing but it is now required by 'guix pull'.\n"
+"Install it by running:\n"
+"\n"
+" guix package -i ~a\n"
+" export GUILE_LOAD_PATH=$HOME/.guix-profile/share/guile/site/~a:$GUILE_LOAD_PATH\n"
+" export GUILE_LOAD_COMPILED_PATH=$HOME/.guix-profile/lib/guile/~a/site-ccache:$GUILE_LOAD_COMPILED_PATH\n"
+"\n"
+msgstr ""
+
+#: guix/scripts/pull.scm:96
+msgid ""
+"Usage: guix pull [OPTION]...\n"
+"Download and deploy the latest version of Guix.\n"
+msgstr ""
+
+#: guix/scripts/pull.scm:100
+msgid ""
+"\n"
+" --url=URL download from the Git repository at URL"
+msgstr ""
+
+#: guix/scripts/pull.scm:102
+msgid ""
+"\n"
+" --commit=COMMIT download the specified COMMIT"
+msgstr ""
+
+#: guix/scripts/pull.scm:104
+msgid ""
+"\n"
+" --branch=BRANCH download the tip of the specified BRANCH"
+msgstr ""
+
+#: guix/scripts/pull.scm:106
+msgid ""
+"\n"
+" --bootstrap use the bootstrap Guile to build the new Guix"
+msgstr ""
+
+#: guix/scripts/pull.scm:192
+msgid "Guix already up to date\n"
+msgstr ""
+
+#: guix/scripts/pull.scm:197
+#, scheme-format
+msgid "updated ~a successfully deployed under `~a'~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:200
+#, scheme-format
+msgid "failed to update Guix, check the build log~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:216
+#, scheme-format
+msgid "cannot enforce use of the Let's Encrypt certificates~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:218
+#, scheme-format
+msgid "please upgrade Guile-Git~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:226
+#, scheme-format
+msgid "Git error ~a~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:228
+#, scheme-format
+msgid "Git error: ~a~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:262
+#, scheme-format
+msgid "Updating from Git repository at '~a'...~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:271
+#, scheme-format
+msgid "Building from Git commit ~a...~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:125
+#, scheme-format
+msgid "authentication and authorization of substitutes disabled!~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:200
+#, scheme-format
+msgid "download from '~a' failed: ~a, ~s~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:213
+#, scheme-format
+msgid "while fetching ~a: server is somewhat slow~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:215
+#, scheme-format
+msgid "try `--no-substitutes' if the problem persists~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:233
+#, scheme-format
+msgid "unsupported substitute URI scheme: ~a~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:268
+#, scheme-format
+msgid "while fetching '~a': ~a (~s)~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:273
+#, scheme-format
+msgid "ignoring substitute server at '~s'~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:323
+#, scheme-format
+msgid "signature version must be a number: ~s~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:327
+#, scheme-format
+msgid "unsupported signature version: ~a~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:335
+#, scheme-format
+msgid "signature is not a valid s-expression: ~s~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:339
+#, scheme-format
+msgid "invalid format of the signature field: ~a~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:374
+#, scheme-format
+msgid "invalid signature for '~a'~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:376
+#, scheme-format
+msgid "hash mismatch for '~a'~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:378
+#, scheme-format
+msgid "'~a' is signed with an unauthorized key~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:380
+#, scheme-format
+msgid "signature on '~a' is corrupt~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:465
+#, scheme-format
+msgid "'~a' does not name a store item~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:629
+#, scheme-format
+msgid "updating list of substitutes from '~a'... ~5,1f%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:693
+#, scheme-format
+msgid "~s: unsupported server URI scheme~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:703
+#, scheme-format
+msgid "'~a' uses different store '~a'; ignoring it~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:863
+#, scheme-format
+msgid "host name lookup error: ~a~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:868
+#, scheme-format
+msgid "TLS error in procedure '~a': ~a~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:879
+msgid ""
+"Usage: guix substitute [OPTION]...\n"
+"Internal tool to substitute a pre-built binary to a local build.\n"
+msgstr ""
+
+#: guix/scripts/substitute.scm:881
+msgid ""
+"\n"
+" --query report on the availability of substitutes for the\n"
+" store file names passed on the standard input"
+msgstr ""
+
+#: guix/scripts/substitute.scm:884
+msgid ""
+"\n"
+" --substitute STORE-FILE DESTINATION\n"
+" download STORE-FILE and store it as a Nar in file\n"
+" DESTINATION"
+msgstr ""
+
+#: guix/scripts/substitute.scm:949
+#, scheme-format
+msgid "no valid substitute for '~a'~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:956
+#, scheme-format
+msgid "Downloading ~a...~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:1012
+msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n"
+msgstr ""
+
+#: guix/scripts/substitute.scm:1066
+#, scheme-format
+msgid "~a: invalid URI~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:1126
+#, scheme-format
+msgid "~a: unrecognized options~%"
+msgstr ""
+
+#: guix/scripts/authenticate.scm:59
+#, scheme-format
+msgid "cannot find public key for secret key '~a'~%"
+msgstr ""
+
+#: guix/scripts/authenticate.scm:79
+#, scheme-format
+msgid "error: invalid signature: ~a~%"
+msgstr ""
+
+#: guix/scripts/authenticate.scm:81
+#, scheme-format
+msgid "error: unauthorized public key: ~a~%"
+msgstr ""
+
+#: guix/scripts/authenticate.scm:83
+#, scheme-format
+msgid "error: corrupt signature data: ~a~%"
+msgstr ""
+
+#: guix/scripts/authenticate.scm:121
+msgid ""
+"Usage: guix authenticate OPTION...\n"
+"Sign or verify the signature on the given file. This tool is meant to\n"
+"be used internally by 'guix-daemon'.\n"
+msgstr ""
+
+#: guix/scripts/authenticate.scm:127
+msgid "wrong arguments"
+msgstr "argumentos incorrectos"
+
+#: guix/scripts/system.scm:135
+#, scheme-format
+msgid "failed to register '~a' under '~a'~%"
+msgstr ""
+
+#: guix/scripts/system.scm:174
+#, scheme-format
+msgid "failed to install bootloader ~a~%"
+msgstr ""
+
+#: guix/scripts/system.scm:194
+#, scheme-format
+msgid "initializing the current root file system~%"
+msgstr ""
+
+#: guix/scripts/system.scm:208
+#, scheme-format
+msgid "not running as 'root', so the ownership of '~a' may be incorrect!~%"
+msgstr ""
+
+#: guix/scripts/system.scm:253
+#, scheme-format
+msgid "while talking to shepherd: ~a~%"
+msgstr ""
+
+#: guix/scripts/system.scm:260
+#, scheme-format
+msgid "service '~a' could not be found~%"
+msgstr ""
+
+#: guix/scripts/system.scm:263
+#, scheme-format
+msgid "service '~a' does not have an action '~a'~%"
+msgstr ""
+
+#: guix/scripts/system.scm:267
+#, scheme-format
+msgid "exception caught while executing '~a' on service '~a':~%"
+msgstr ""
+
+#: guix/scripts/system.scm:275
+#, scheme-format
+msgid "something went wrong: ~s~%"
+msgstr ""
+
+#: guix/scripts/system.scm:278
+#, scheme-format
+msgid "shepherd error~%"
+msgstr ""
+
+#: guix/scripts/system.scm:295
+#, scheme-format
+msgid "failed to obtain list of shepherd services~%"
+msgstr ""
+
+#: guix/scripts/system.scm:315
+#, scheme-format
+msgid "unloading service '~a'...~%"
+msgstr ""
+
+#: guix/scripts/system.scm:323
+#, scheme-format
+msgid "loading new services:~{ ~a~}...~%"
+msgstr ""
+
+#: guix/scripts/system.scm:347
+#, scheme-format
+msgid "activating system...~%"
+msgstr ""
+
+#: guix/scripts/system.scm:423
+#, scheme-format
+msgid "cannot switch to system generation '~a'~%"
+msgstr ""
+
+#: guix/scripts/system.scm:494
+msgid "the DAG of services"
+msgstr ""
+
+#: guix/scripts/system.scm:507
+msgid "the dependency graph of shepherd services"
+msgstr ""
+
+#: guix/scripts/system.scm:531
+#, scheme-format
+msgid " file name: ~a~%"
+msgstr ""
+
+#: guix/scripts/system.scm:532
+#, scheme-format
+msgid " canonical file name: ~a~%"
+msgstr ""
+
+#. TRANSLATORS: Please preserve the two-space indentation.
+#: guix/scripts/system.scm:534
+#, scheme-format
+msgid " label: ~a~%"
+msgstr ""
+
+#: guix/scripts/system.scm:535
+#, scheme-format
+msgid " bootloader: ~a~%"
+msgstr ""
+
+#: guix/scripts/system.scm:536
+#, scheme-format
+msgid " root device: ~a~%"
+msgstr ""
+
+#: guix/scripts/system.scm:540
+#, scheme-format
+msgid " kernel: ~a~%"
+msgstr ""
+
+#: guix/scripts/system.scm:600
+#, scheme-format
+msgid "~a: error: file system with label '~a' not found~%"
+msgstr ""
+
+#: guix/scripts/system.scm:606
+#, scheme-format
+msgid "~a: error: file system with UUID '~a' not found~%"
+msgstr ""
+
+#: guix/scripts/system.scm:658
+#, scheme-format
+msgid "~a not found: 'guix pull' was never run~%"
+msgstr ""
+
+#: guix/scripts/system.scm:659
+#, scheme-format
+msgid "Consider running 'guix pull' before 'reconfigure'.~%"
+msgstr ""
+
+#: guix/scripts/system.scm:660
+#, scheme-format
+msgid "Failing to do that may downgrade your system!~%"
+msgstr ""
+
+#: guix/scripts/system.scm:767
+#, scheme-format
+msgid "initializing operating system under '~a'...~%"
+msgstr ""
+
+#: guix/scripts/system.scm:812
+msgid ""
+"Usage: guix system [OPTION ...] ACTION [ARG ...] [FILE]\n"
+"Build the operating system declared in FILE according to ACTION.\n"
+"Some ACTIONS support additional ARGS.\n"
+msgstr ""
+
+#: guix/scripts/system.scm:816 guix/scripts/container.scm:28
+msgid "The valid values for ACTION are:\n"
+msgstr ""
+
+#: guix/scripts/system.scm:818
+msgid " search search for existing service types\n"
+msgstr ""
+
+#: guix/scripts/system.scm:820
+msgid " reconfigure switch to a new operating system configuration\n"
+msgstr ""
+
+#: guix/scripts/system.scm:822
+msgid " roll-back switch to the previous operating system configuration\n"
+msgstr ""
+
+#: guix/scripts/system.scm:824
+msgid " switch-generation switch to an existing operating system configuration\n"
+msgstr ""
+
+#: guix/scripts/system.scm:826
+msgid " list-generations list the system generations\n"
+msgstr ""
+
+#: guix/scripts/system.scm:828
+msgid " build build the operating system without installing anything\n"
+msgstr ""
+
+#: guix/scripts/system.scm:830
+msgid " container build a container that shares the host's store\n"
+msgstr ""
+
+#: guix/scripts/system.scm:832
+msgid " vm build a virtual machine image that shares the host's store\n"
+msgstr ""
+
+#: guix/scripts/system.scm:834
+msgid " vm-image build a freestanding virtual machine image\n"
+msgstr ""
+
+#: guix/scripts/system.scm:836
+msgid " disk-image build a disk image, suitable for a USB stick\n"
+msgstr ""
+
+#: guix/scripts/system.scm:838
+msgid " init initialize a root file system to run GNU\n"
+msgstr ""
+
+#: guix/scripts/system.scm:840
+msgid " extension-graph emit the service extension graph in Dot format\n"
+msgstr ""
+
+#: guix/scripts/system.scm:842
+msgid " shepherd-graph emit the graph of shepherd services in Dot format\n"
+msgstr ""
+
+#: guix/scripts/system.scm:846
+msgid ""
+"\n"
+" -d, --derivation return the derivation of the given system"
+msgstr ""
+
+#: guix/scripts/system.scm:848
+msgid ""
+"\n"
+" --on-error=STRATEGY\n"
+" apply STRATEGY when an error occurs while reading FILE"
+msgstr ""
+
+#: guix/scripts/system.scm:851
+msgid ""
+"\n"
+" --file-system-type=TYPE\n"
+" for 'disk-image', produce a root file system of TYPE\n"
+" (one of 'ext4', 'iso9660')"
+msgstr ""
+
+#: guix/scripts/system.scm:855
+msgid ""
+"\n"
+" --image-size=SIZE for 'vm-image', produce an image of SIZE"
+msgstr ""
+
+#: guix/scripts/system.scm:857
+msgid ""
+"\n"
+" --no-bootloader for 'init', do not install a bootloader"
+msgstr ""
+
+#: guix/scripts/system.scm:859
+msgid ""
+"\n"
+" --share=SPEC for 'vm', share host file system according to SPEC"
+msgstr ""
+
+#: guix/scripts/system.scm:861
+msgid ""
+"\n"
+" -r, --root=FILE for 'vm', 'vm-image', 'disk-image', 'container',\n"
+" and 'build', make FILE a symlink to the result, and\n"
+" register it as a garbage collector root"
+msgstr ""
+
+#: guix/scripts/system.scm:865
+msgid ""
+"\n"
+" --expose=SPEC for 'vm', expose host file system according to SPEC"
+msgstr ""
+
+#: guix/scripts/system.scm:867
+msgid ""
+"\n"
+" --full-boot for 'vm', make a full boot sequence"
+msgstr ""
+
+#: guix/scripts/system.scm:959
+#, scheme-format
+msgid "no configuration file specified~%"
+msgstr ""
+
+#: guix/scripts/system.scm:1057
+#, scheme-format
+msgid "~a: unknown action~%"
+msgstr ""
+
+#: guix/scripts/system.scm:1072
+#, scheme-format
+msgid "wrong number of arguments for action '~a'~%"
+msgstr ""
+
+#: guix/scripts/system.scm:1077
+#, scheme-format
+msgid "guix system: missing command name~%"
+msgstr ""
+
+#: guix/scripts/system.scm:1079
+#, scheme-format
+msgid "Try 'guix system --help' for more information.~%"
+msgstr ""
+
+#: guix/scripts/system/search.scm:64 guix/ui.scm:1057 guix/ui.scm:1071
+msgid "unknown"
+msgstr ""
+
+#: guix/scripts/lint.scm:138
+#, scheme-format
+msgid "Available checkers:~%"
+msgstr ""
+
+#: guix/scripts/lint.scm:162
+msgid "description should not be empty"
+msgstr ""
+
+#: guix/scripts/lint.scm:172
+msgid "Texinfo markup in description is invalid"
+msgstr ""
+
+#: guix/scripts/lint.scm:182
+#, scheme-format
+msgid ""
+"description should not contain ~\n"
+"trademark sign '~a' at ~d"
+msgstr ""
+
+#. TRANSLATORS: '@code' is Texinfo markup and must be kept
+#. as is.
+#: guix/scripts/lint.scm:195
+msgid "use @code or similar ornament instead of quotes"
+msgstr ""
+
+#: guix/scripts/lint.scm:202
+msgid "description should start with an upper-case letter or digit"
+msgstr ""
+
+#: guix/scripts/lint.scm:218
+#, scheme-format
+msgid ""
+"sentences in description should be followed ~\n"
+"by two spaces; possible infraction~p at ~{~a~^, ~}"
+msgstr ""
+
+#: guix/scripts/lint.scm:236
+#, scheme-format
+msgid "invalid description: ~s"
+msgstr ""
+
+#: guix/scripts/lint.scm:281
+#, scheme-format
+msgid "'~a' should probably be a native input"
+msgstr ""
+
+#: guix/scripts/lint.scm:297
+#, scheme-format
+msgid "'~a' should probably not be an input at all"
+msgstr ""
+
+#: guix/scripts/lint.scm:314
+msgid "synopsis should not be empty"
+msgstr ""
+
+#: guix/scripts/lint.scm:322
+msgid "no period allowed at the end of the synopsis"
+msgstr ""
+
+#: guix/scripts/lint.scm:334
+msgid "no article allowed at the beginning of the synopsis"
+msgstr ""
+
+#: guix/scripts/lint.scm:341
+msgid "synopsis should be less than 80 characters long"
+msgstr ""
+
+#: guix/scripts/lint.scm:347
+msgid "synopsis should start with an upper-case letter or digit"
+msgstr ""
+
+#: guix/scripts/lint.scm:354
+msgid "synopsis should not start with the package name"
+msgstr ""
+
+#: guix/scripts/lint.scm:364
+msgid "Texinfo markup in synopsis is invalid"
+msgstr ""
+
+#: guix/scripts/lint.scm:383
+#, scheme-format
+msgid "invalid synopsis: ~s"
+msgstr ""
+
+#: guix/scripts/lint.scm:502
+#, scheme-format
+msgid "URI ~a returned suspiciously small file (~a bytes)"
+msgstr ""
+
+#: guix/scripts/lint.scm:512
+#, scheme-format
+msgid "permanent redirect from ~a to ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:519
+#, scheme-format
+msgid "invalid permanent redirect from ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:526 guix/scripts/lint.scm:538
+#, scheme-format
+msgid "URI ~a not reachable: ~a (~s)"
+msgstr ""
+
+#: guix/scripts/lint.scm:545
+#, scheme-format
+msgid "URI ~a domain not found: ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:553
+#, scheme-format
+msgid "URI ~a unreachable: ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:562
+#, scheme-format
+msgid "TLS certificate error: ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:583
+msgid "invalid value for home page"
+msgstr ""
+
+#: guix/scripts/lint.scm:586
+#, scheme-format
+msgid "invalid home page URL: ~s"
+msgstr ""
+
+#: guix/scripts/lint.scm:606
+msgid "file names of patches should start with the package name"
+msgstr ""
+
+#: guix/scripts/lint.scm:644
+#, scheme-format
+msgid "~a: ~a: proposed synopsis: ~s~%"
+msgstr ""
+
+#: guix/scripts/lint.scm:657
+#, scheme-format
+msgid "~a: ~a: proposed description:~% \"~a\"~%"
+msgstr ""
+
+#: guix/scripts/lint.scm:699
+msgid "all the source URIs are unreachable:"
+msgstr ""
+
+#: guix/scripts/lint.scm:721
+msgid "the source file name should contain the package name"
+msgstr ""
+
+#: guix/scripts/lint.scm:737
+#, scheme-format
+msgid "URL should be 'mirror://~a/~a'"
+msgstr ""
+
+#: guix/scripts/lint.scm:755 guix/scripts/lint.scm:759
+#, scheme-format
+msgid "failed to create derivation: ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:773
+#, scheme-format
+msgid "failed to create derivation: ~s~%"
+msgstr ""
+
+#: guix/scripts/lint.scm:783
+msgid "invalid license field"
+msgstr ""
+
+#: guix/scripts/lint.scm:799
+#, scheme-format
+msgid "~a: HTTP GET error for ~a: ~a (~s)~%"
+msgstr ""
+
+#: guix/scripts/lint.scm:809
+#, scheme-format
+msgid "~a: host lookup failure: ~a~%"
+msgstr ""
+
+#: guix/scripts/lint.scm:814
+#, scheme-format
+msgid "~a: TLS certificate error: ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:829
+msgid "while retrieving CVE vulnerabilities"
+msgstr ""
+
+#: guix/scripts/lint.scm:866
+#, scheme-format
+msgid "probably vulnerable to ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:873
+#, scheme-format
+msgid "while retrieving upstream info for '~a'"
+msgstr ""
+
+#: guix/scripts/lint.scm:881
+#, scheme-format
+msgid "can be upgraded to ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:896
+#, scheme-format
+msgid "tabulation on line ~a, column ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:905
+#, scheme-format
+msgid "trailing white space on line ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:915
+#, scheme-format
+msgid "line ~a is way too long (~a characters)"
+msgstr ""
+
+#: guix/scripts/lint.scm:926
+#, scheme-format
+msgid "line ~a: parentheses feel lonely, move to the previous or next line"
+msgstr ""
+
+#: guix/scripts/lint.scm:996
+msgid "Validate package descriptions"
+msgstr ""
+
+#: guix/scripts/lint.scm:1000
+msgid "Validate synopsis & description of GNU packages"
+msgstr ""
+
+#: guix/scripts/lint.scm:1004
+msgid "Identify inputs that should be native inputs"
+msgstr ""
+
+#: guix/scripts/lint.scm:1008
+msgid "Identify inputs that should be inputs at all"
+msgstr ""
+
+#: guix/scripts/lint.scm:1012
+msgid "Validate file names and availability of patches"
+msgstr ""
+
+#: guix/scripts/lint.scm:1016
+msgid "Validate home-page URLs"
+msgstr ""
+
+#. TRANSLATORS: <license> is the name of a data type and must not be
+#. translated.
+#: guix/scripts/lint.scm:1022
+msgid "Make sure the 'license' field is a <license> or a list thereof"
+msgstr ""
+
+#: guix/scripts/lint.scm:1027
+msgid "Validate source URLs"
+msgstr ""
+
+#: guix/scripts/lint.scm:1031
+msgid "Suggest 'mirror://' URLs"
+msgstr ""
+
+#: guix/scripts/lint.scm:1035
+msgid "Validate file names of sources"
+msgstr ""
+
+#: guix/scripts/lint.scm:1039
+msgid "Report failure to compile a package to a derivation"
+msgstr ""
+
+#: guix/scripts/lint.scm:1043
+msgid "Validate package synopses"
+msgstr ""
+
+#: guix/scripts/lint.scm:1047
+msgid "Check the Common Vulnerabilities and Exposures (CVE) database"
+msgstr ""
+
+#: guix/scripts/lint.scm:1052
+msgid "Check the package for new upstream releases"
+msgstr ""
+
+#: guix/scripts/lint.scm:1056
+msgid "Look for formatting issues in the source"
+msgstr ""
+
+#: guix/scripts/lint.scm:1084
+msgid ""
+"Usage: guix lint [OPTION]... [PACKAGE]...\n"
+"Run a set of checkers on the specified package; if none is specified,\n"
+"run the checkers on all packages.\n"
+msgstr ""
+
+#: guix/scripts/lint.scm:1087
+msgid ""
+"\n"
+" -c, --checkers=CHECKER1,CHECKER2...\n"
+" only run the specified checkers"
+msgstr ""
+
+#: guix/scripts/lint.scm:1092
+msgid ""
+"\n"
+" -l, --list-checkers display the list of available lint checkers"
+msgstr ""
+
+#: guix/scripts/lint.scm:1112
+#, scheme-format
+msgid "~a: invalid checker~%"
+msgstr ""
+
+#: guix/scripts/publish.scm:68
+#, scheme-format
+msgid ""
+"Usage: guix publish [OPTION]...\n"
+"Publish ~a over HTTP.\n"
+msgstr ""
+
+#: guix/scripts/publish.scm:70
+msgid ""
+"\n"
+" -p, --port=PORT listen on PORT"
+msgstr ""
+
+#: guix/scripts/publish.scm:72
+msgid ""
+"\n"
+" --listen=HOST listen on the network interface for HOST"
+msgstr ""
+
+#: guix/scripts/publish.scm:74
+msgid ""
+"\n"
+" -u, --user=USER change privileges to USER as soon as possible"
+msgstr ""
+
+#: guix/scripts/publish.scm:76
+msgid ""
+"\n"
+" -C, --compression[=LEVEL]\n"
+" compress archives at LEVEL"
+msgstr ""
+
+#: guix/scripts/publish.scm:79
+msgid ""
+"\n"
+" -c, --cache=DIRECTORY cache published items to DIRECTORY"
+msgstr ""
+
+#: guix/scripts/publish.scm:81
+msgid ""
+"\n"
+" --workers=N use N workers to bake items"
+msgstr ""
+
+#: guix/scripts/publish.scm:83
+msgid ""
+"\n"
+" --ttl=TTL announce narinfos can be cached for TTL seconds"
+msgstr ""
+
+#: guix/scripts/publish.scm:85
+msgid ""
+"\n"
+" --nar-path=PATH use PATH as the prefix for nar URLs"
+msgstr ""
+
+#: guix/scripts/publish.scm:87
+msgid ""
+"\n"
+" --public-key=FILE use FILE as the public key for signatures"
+msgstr ""
+
+#: guix/scripts/publish.scm:89
+msgid ""
+"\n"
+" --private-key=FILE use FILE as the private key for signatures"
+msgstr ""
+
+#: guix/scripts/publish.scm:91
+msgid ""
+"\n"
+" -r, --repl[=PORT] spawn REPL server on PORT"
+msgstr ""
+
+#: guix/scripts/publish.scm:107
+#, scheme-format
+msgid "lookup of host '~a' failed: ~a~%"
+msgstr ""
+
+#: guix/scripts/publish.scm:152
+#, scheme-format
+msgid "lookup of host '~a' returned nothing"
+msgstr ""
+
+#: guix/scripts/publish.scm:165
+#, scheme-format
+msgid "zlib support is missing; compression disabled~%"
+msgstr ""
+
+#: guix/scripts/publish.scm:179
+#, scheme-format
+msgid "~a: invalid duration~%"
+msgstr ""
+
+#: guix/scripts/publish.scm:832
+#, scheme-format
+msgid "user '~a' not found: ~a~%"
+msgstr ""
+
+#: guix/scripts/publish.scm:873
+#, scheme-format
+msgid "server running as root; consider using the '--user' option!~%"
+msgstr ""
+
+#: guix/scripts/publish.scm:878
+#, scheme-format
+msgid "publishing ~a on ~a, port ~d~%"
+msgstr ""
+
+#: guix/scripts/edit.scm:41
+msgid ""
+"Usage: guix edit PACKAGE...\n"
+"Start $VISUAL or $EDITOR to edit the definitions of PACKAGE...\n"
+msgstr ""
+
+#: guix/scripts/edit.scm:62
+#, scheme-format
+msgid "file '~a' not found in search path ~s~%"
+msgstr ""
+
+#: guix/scripts/edit.scm:90
+#, scheme-format
+msgid "source location of package '~a' is unknown~%"
+msgstr ""
+
+#: guix/scripts/edit.scm:103
+#, scheme-format
+msgid "failed to launch '~a': ~a~%"
+msgstr ""
+
+#: guix/scripts/size.scm:77
+#, scheme-format
+msgid "no available substitute information for '~a'~%"
+msgstr ""
+
+#: guix/scripts/size.scm:99
+msgid "store item"
+msgstr ""
+
+#: guix/scripts/size.scm:99
+msgid "total"
+msgstr ""
+
+#: guix/scripts/size.scm:99
+msgid "self"
+msgstr ""
+
+#: guix/scripts/size.scm:107
+#, scheme-format
+msgid "total: ~,1f MiB~%"
+msgstr ""
+
+#. TRANSLATORS: This is the title of a graph, meaning that the graph
+#. represents a profile of the store (the "store" being the place where
+#. packages are stored.)
+#: guix/scripts/size.scm:221
+msgid "store profile"
+msgstr ""
+
+#: guix/scripts/size.scm:230
+msgid ""
+"Usage: guix size [OPTION]... PACKAGE\n"
+"Report the size of PACKAGE and its dependencies.\n"
+msgstr ""
+
+#: guix/scripts/size.scm:235
+msgid ""
+"\n"
+" -s, --system=SYSTEM consider packages for SYSTEM--e.g., \"i686-linux\""
+msgstr ""
+
+#. TRANSLATORS: "closure" and "self" must not be translated.
+#: guix/scripts/size.scm:238
+msgid ""
+"\n"
+" --sort=KEY sort according to KEY--\"closure\" or \"self\""
+msgstr ""
+
+#: guix/scripts/size.scm:240
+msgid ""
+"\n"
+" -m, --map-file=FILE write to FILE a graphical map of disk usage"
+msgstr ""
+
+#: guix/scripts/size.scm:271
+#, scheme-format
+msgid "~a: invalid sorting key~%"
+msgstr ""
+
+#: guix/scripts/size.scm:306
+msgid "missing store item argument\n"
+msgstr ""
+
+#: guix/scripts/graph.scm:84
+#, scheme-format
+msgid "~a: invalid argument (package name expected)"
+msgstr ""
+
+#: guix/scripts/graph.scm:95
+msgid "the DAG of packages, excluding implicit inputs"
+msgstr ""
+
+#: guix/scripts/graph.scm:121
+msgid "the reverse DAG of packages"
+msgstr ""
+
+#: guix/scripts/graph.scm:171
+msgid "the DAG of packages, including implicit inputs"
+msgstr ""
+
+#: guix/scripts/graph.scm:181
+msgid "the DAG of packages and origins, including implicit inputs"
+msgstr ""
+
+#: guix/scripts/graph.scm:211
+msgid "same as 'bag', but without the bootstrap nodes"
+msgstr ""
+
+#: guix/scripts/graph.scm:253
+msgid "the DAG of derivations"
+msgstr ""
+
+#: guix/scripts/graph.scm:265
+msgid "unsupported argument for derivation graph"
+msgstr ""
+
+#: guix/scripts/graph.scm:291
+msgid "unsupported argument for this type of graph"
+msgstr ""
+
+#: guix/scripts/graph.scm:304
+#, scheme-format
+msgid "references for '~a' are not known~%"
+msgstr ""
+
+#: guix/scripts/graph.scm:311
+msgid "the DAG of run-time dependencies (store references)"
+msgstr ""
+
+#: guix/scripts/graph.scm:327
+msgid "the DAG of referrers in the store"
+msgstr ""
+
+#: guix/scripts/graph.scm:354
+#, scheme-format
+msgid "~a: unknown node type~%"
+msgstr ""
+
+#: guix/scripts/graph.scm:361
+#, scheme-format
+msgid "~a: unknown backend~%"
+msgstr ""
+
+#: guix/scripts/graph.scm:365
+msgid "The available node types are:\n"
+msgstr ""
+
+#: guix/scripts/graph.scm:375
+msgid "The available backend types are:\n"
+msgstr ""
+
+#. TRANSLATORS: Here 'dot' is the name of a program; it must not be
+#. translated.
+#: guix/scripts/graph.scm:419
+msgid ""
+"Usage: guix graph PACKAGE...\n"
+"Emit a representation of the dependency graph of PACKAGE...\n"
+msgstr ""
+
+#: guix/scripts/graph.scm:421
+msgid ""
+"\n"
+" -b, --backend=TYPE produce a graph with the given backend TYPE"
+msgstr ""
+
+#: guix/scripts/graph.scm:423
+msgid ""
+"\n"
+" --list-backends list the available graph backends"
+msgstr ""
+
+#: guix/scripts/graph.scm:425
+msgid ""
+"\n"
+" -t, --type=TYPE represent nodes of the given TYPE"
+msgstr ""
+
+#: guix/scripts/graph.scm:427
+msgid ""
+"\n"
+" --list-types list the available graph types"
+msgstr ""
+
+#: guix/scripts/graph.scm:429 guix/scripts/pack.scm:336
+msgid ""
+"\n"
+" -e, --expression=EXPR consider the package EXPR evaluates to"
+msgstr ""
+
+#: guix/scripts/challenge.scm:191
+#, scheme-format
+msgid " local hash: ~a~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:192
+#, scheme-format
+msgid " no local build for '~a'~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:194
+#, scheme-format
+msgid " ~50a: ~a~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:202
+#, scheme-format
+msgid "~a contents differ:~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:205
+#, scheme-format
+msgid "could not challenge '~a': no local build~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:207
+#, scheme-format
+msgid "could not challenge '~a': no substitutes~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:210
+#, scheme-format
+msgid "~a contents match:~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:219
+msgid "~h store items were analyzed:~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:220
+msgid " - ~h (~,1f%) were identical~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:222
+msgid " - ~h (~,1f%) differed~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:224
+msgid " - ~h (~,1f%) were inconclusive~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:233
+msgid ""
+"Usage: guix challenge [PACKAGE...]\n"
+"Challenge the substitutes for PACKAGE... provided by one or more servers.\n"
+msgstr ""
+
+#: guix/scripts/challenge.scm:235
+msgid ""
+"\n"
+" --substitute-urls=URLS\n"
+" compare build results with those at URLS"
+msgstr ""
+
+#: guix/scripts/challenge.scm:238
+msgid ""
+"\n"
+" -v, --verbose show details about successful comparisons"
+msgstr ""
+
+#: guix/scripts/copy.scm:59
+#, scheme-format
+msgid "~a: invalid TCP port number~%"
+msgstr ""
+
+#: guix/scripts/copy.scm:61
+#, scheme-format
+msgid "~a: invalid SSH specification~%"
+msgstr ""
+
+#: guix/scripts/copy.scm:113
+msgid ""
+"Usage: guix copy [OPTION]... ITEMS...\n"
+"Copy ITEMS to or from the specified host over SSH.\n"
+msgstr ""
+
+#: guix/scripts/copy.scm:115
+msgid ""
+"\n"
+" --to=HOST send ITEMS to HOST"
+msgstr ""
+
+#: guix/scripts/copy.scm:117
+msgid ""
+"\n"
+" --from=HOST receive ITEMS from HOST"
+msgstr ""
+
+#: guix/scripts/copy.scm:168
+#, scheme-format
+msgid "use '--to' or '--from'~%"
+msgstr ""
+
+#: guix/scripts/pack.scm:76
+#, scheme-format
+msgid "~a: compressor not found~%"
+msgstr ""
+
+#: guix/scripts/pack.scm:318
+#, scheme-format
+msgid "~a: invalid symlink specification~%"
+msgstr ""
+
+#: guix/scripts/pack.scm:328
+msgid ""
+"Usage: guix pack [OPTION]... PACKAGE...\n"
+"Create a bundle of PACKAGE.\n"
+msgstr ""
+
+#: guix/scripts/pack.scm:334
+msgid ""
+"\n"
+" -f, --format=FORMAT build a pack in the given FORMAT"
+msgstr ""
+
+#: guix/scripts/pack.scm:342
+msgid ""
+"\n"
+" -C, --compression=TOOL compress using TOOL--e.g., \"lzip\""
+msgstr ""
+
+#: guix/scripts/pack.scm:344
+msgid ""
+"\n"
+" -S, --symlink=SPEC create symlinks to the profile according to SPEC"
+msgstr ""
+
+#: guix/scripts/pack.scm:346
+msgid ""
+"\n"
+" --localstatedir include /var/guix in the resulting pack"
+msgstr ""
+
+#: guix/scripts/pack.scm:390
+#, scheme-format
+msgid "~a: unknown pack format"
+msgstr ""
+
+#: guix/scripts/weather.scm:74
+msgid "computing ~h package derivations for ~a...~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:110
+msgid "looking for ~h store items on ~a...~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:120
+msgid " ~2,1f% substitutes available (~h out of ~h)~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:126
+#, scheme-format
+msgid " unknown substitute sizes~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:129
+msgid " ~,1h MiB of nars (compressed)~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:130
+msgid " at least ~,1h MiB of nars (compressed)~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:132
+msgid " ~,1h MiB on disk (uncompressed)~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:134
+msgid " ~,3h seconds per request (~,1h seconds in total)~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:136
+msgid " ~,1h requests per second~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:145
+msgid ""
+"Usage: guix weather [OPTIONS]\n"
+"Report the availability of substitutes.\n"
+msgstr ""
+
+#: guix/scripts/weather.scm:147
+msgid ""
+"\n"
+" --substitute-urls=URLS\n"
+" check for available substitutes at URLS"
+msgstr ""
+
+#: guix/scripts/weather.scm:150
+msgid ""
+"\n"
+" -m, --manifest=MANIFEST\n"
+" look up substitutes for packages specified in MANIFEST"
+msgstr ""
+
+#: guix/scripts/weather.scm:153
+msgid ""
+"\n"
+" -s, --system=SYSTEM consider substitutes for SYSTEM--e.g., \"i686-linux\""
+msgstr ""
+
+#: guix/scripts/weather.scm:177
+#, scheme-format
+msgid "~a: invalid URL~%"
+msgstr ""
+
+#: guix/gnu-maintenance.scm:567
+msgid "Updater for GNU packages"
+msgstr ""
+
+#: guix/gnu-maintenance.scm:576
+msgid "Updater for GNU packages only available via FTP"
+msgstr ""
+
+#: guix/gnu-maintenance.scm:585
+msgid "Updater for KDE packages"
+msgstr ""
+
+#: guix/gnu-maintenance.scm:592
+msgid "Updater for X.org packages"
+msgstr ""
+
+#: guix/gnu-maintenance.scm:599
+msgid "Updater for packages hosted on kernel.org"
+msgstr ""
+
+#: guix/scripts/container.scm:25
+msgid ""
+"Usage: guix container ACTION ARGS...\n"
+"Build and manipulate Linux containers.\n"
+msgstr ""
+
+#: guix/scripts/container.scm:30
+msgid " exec execute a command inside of an existing container\n"
+msgstr ""
+
+#: guix/scripts/container.scm:53
+#, scheme-format
+msgid "guix container: missing action~%"
+msgstr ""
+
+#: guix/scripts/container.scm:63
+#, scheme-format
+msgid "guix container: invalid action~%"
+msgstr ""
+
+#: guix/scripts/container/exec.scm:40
+msgid ""
+"Usage: guix container exec PID COMMAND [ARGS...]\n"
+"Execute COMMMAND within the container process PID.\n"
+msgstr ""
+
+#: guix/scripts/container/exec.scm:69
+#, scheme-format
+msgid "~a: extraneous argument~%"
+msgstr ""
+
+#: guix/scripts/container/exec.scm:87
+#, scheme-format
+msgid "no pid specified~%"
+msgstr ""
+
+#: guix/scripts/container/exec.scm:90
+#, scheme-format
+msgid "no command specified~%"
+msgstr ""
+
+#: guix/scripts/container/exec.scm:93
+#, scheme-format
+msgid "no such process ~d~%"
+msgstr ""
+
+#: guix/scripts/container/exec.scm:105
+#, scheme-format
+msgid "exec failed with status ~d~%"
+msgstr ""
+
+#: guix/upstream.scm:249
+#, scheme-format
+msgid "signature verification failed for `~a'~%"
+msgstr ""
+
+#: guix/upstream.scm:251
+#, scheme-format
+msgid "(could be because the public key is not in your keyring)~%"
+msgstr ""
+
+#: guix/upstream.scm:330
+#, scheme-format
+msgid "~a: could not locate source file"
+msgstr ""
+
+#: guix/upstream.scm:335
+#, scheme-format
+msgid "~a: ~a: no `version' field in source; skipping~%"
+msgstr ""
+
+#: guix/ui.scm:159
+#, scheme-format
+msgid "~a: unbound variable"
+msgstr ""
+
+#: guix/ui.scm:235
+msgid "entering debugger; type ',bt' for a backtrace\n"
+msgstr ""
+
+#: guix/ui.scm:284
+#, scheme-format
+msgid "hint: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:294 guix/ui.scm:342 guix/ui.scm:349
+#, scheme-format
+msgid "failed to load '~a': ~a~%"
+msgstr ""
+
+#: guix/ui.scm:301
+#, scheme-format
+msgid "~amissing closing parenthesis~%"
+msgstr ""
+
+#: guix/ui.scm:306 guix/ui.scm:322 guix/ui.scm:596
+#, scheme-format
+msgid "~a: error: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:314
+msgid "Did you forget a @code{use-modules} form?"
+msgstr ""
+
+#: guix/ui.scm:316
+#, scheme-format
+msgid "Try adding @code{(use-modules ~a)}."
+msgstr ""
+
+#: guix/ui.scm:329 guix/ui.scm:657
+#, scheme-format
+msgid "exception thrown: ~s~%"
+msgstr ""
+
+#: guix/ui.scm:333 guix/ui.scm:355
+#, scheme-format
+msgid "failed to load '~a':~%"
+msgstr ""
+
+#: guix/ui.scm:345
+#, scheme-format
+msgid "~a: warning: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:352
+#, scheme-format
+msgid "failed to load '~a': exception thrown: ~s~%"
+msgstr ""
+
+#: guix/ui.scm:364
+#, scheme-format
+msgid "failed to install locale: ~a~%"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is. */
+#: guix/ui.scm:394
+msgid "(C)"
+msgstr ""
+
+#: guix/ui.scm:395
+msgid "the Guix authors\n"
+msgstr ""
+
+#: guix/ui.scm:396
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address for this
+#. package. Please add another line saying "Report translation bugs to
+#. ...\n" with the address for translation bugs (typically your translation
+#. team's web or email address).
+#: guix/ui.scm:408
+#, scheme-format
+msgid ""
+"\n"
+"Report bugs to: ~a."
+msgstr ""
+
+#: guix/ui.scm:410
+#, scheme-format
+msgid ""
+"\n"
+"~a home page: <~a>"
+msgstr ""
+
+#: guix/ui.scm:412
+msgid ""
+"\n"
+"General help using GNU software: <http://www.gnu.org/gethelp/>"
+msgstr ""
+
+#: guix/ui.scm:457
+#, scheme-format
+msgid "'~a' is not a valid regular expression: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:463
+#, scheme-format
+msgid "~a: invalid number~%"
+msgstr ""
+
+#: guix/ui.scm:480
+#, scheme-format
+msgid "invalid number: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:503
+#, scheme-format
+msgid "unknown unit: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:520
+#, scheme-format
+msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%"
+msgstr ""
+
+#: guix/ui.scm:527
+#, scheme-format
+msgid "~a: ~a: build system `~a' does not support cross builds~%"
+msgstr ""
+
+#: guix/ui.scm:533
+#, scheme-format
+msgid "~s: invalid G-expression input~%"
+msgstr ""
+
+#: guix/ui.scm:536
+#, scheme-format
+msgid "profile '~a' does not exist~%"
+msgstr ""
+
+#: guix/ui.scm:539
+#, scheme-format
+msgid "generation ~a of profile '~a' does not exist~%"
+msgstr ""
+
+#: guix/ui.scm:548
+#, scheme-format
+msgid " ... propagated from ~a@~a~%"
+msgstr ""
+
+#: guix/ui.scm:553
+#, scheme-format
+msgid "profile contains conflicting entries for ~a:~a~%"
+msgstr ""
+
+#: guix/ui.scm:556
+#, scheme-format
+msgid " first entry: ~a@~a:~a ~a~%"
+msgstr ""
+
+#: guix/ui.scm:562
+#, scheme-format
+msgid " second entry: ~a@~a:~a ~a~%"
+msgstr ""
+
+#: guix/ui.scm:573
+#, scheme-format
+msgid "corrupt input while restoring '~a' from ~s~%"
+msgstr ""
+
+#: guix/ui.scm:575
+#, scheme-format
+msgid "corrupt input while restoring archive from ~s~%"
+msgstr ""
+
+#: guix/ui.scm:578
+#, scheme-format
+msgid "failed to connect to `~a': ~a~%"
+msgstr ""
+
+#: guix/ui.scm:583
+#, scheme-format
+msgid "build failed: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:586
+#, scheme-format
+msgid "reference to invalid output '~a' of derivation '~a'~%"
+msgstr ""
+
+#: guix/ui.scm:590
+#, scheme-format
+msgid "file '~a' could not be found in these directories:~{ ~a~}~%"
+msgstr ""
+
+#: guix/ui.scm:607
+#, scheme-format
+msgid "~a: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:642
+#, scheme-format
+msgid "failed to read expression ~s: ~s~%"
+msgstr ""
+
+#: guix/ui.scm:648
+#, scheme-format
+msgid "failed to evaluate expression '~a':~%"
+msgstr ""
+
+#: guix/ui.scm:651
+#, scheme-format
+msgid "syntax error: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:669
+#, scheme-format
+msgid "expression ~s does not evaluate to a package~%"
+msgstr ""
+
+#: guix/ui.scm:688
+msgid "at least ~,1h MB needed but only ~,1h MB available in ~a~%"
+msgstr ""
+
+#: guix/ui.scm:756
+#, scheme-format
+msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]"
+msgid_plural "~:[The following derivations would be built:~%~{ ~a~%~}~;~]"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: "MB" is for "megabyte"; it should be
+#. translated to the corresponding abbreviation.
+#: guix/ui.scm:764
+msgid "~:[~,1h MB would be downloaded:~%~{ ~a~%~}~;~]"
+msgstr ""
+
+#: guix/ui.scm:769
+#, scheme-format
+msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]"
+msgid_plural "~:[The following files would be downloaded:~%~{ ~a~%~}~;~]"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:776
+#, scheme-format
+msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]"
+msgid_plural "~:[The following derivations will be built:~%~{ ~a~%~}~;~]"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: "MB" is for "megabyte"; it should be
+#. translated to the corresponding abbreviation.
+#: guix/ui.scm:784
+msgid "~:[~,1h MB will be downloaded:~%~{ ~a~%~}~;~]"
+msgstr ""
+
+#: guix/ui.scm:789
+#, scheme-format
+msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]"
+msgid_plural "~:[The following files will be downloaded:~%~{ ~a~%~}~;~]"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:849
+#, scheme-format
+msgid "The following package would be removed:~%~{~a~%~}~%"
+msgid_plural "The following packages would be removed:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:854
+#, scheme-format
+msgid "The following package will be removed:~%~{~a~%~}~%"
+msgid_plural "The following packages will be removed:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:867
+#, scheme-format
+msgid "The following package would be downgraded:~%~{~a~%~}~%"
+msgid_plural "The following packages would be downgraded:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:872
+#, scheme-format
+msgid "The following package will be downgraded:~%~{~a~%~}~%"
+msgid_plural "The following packages will be downgraded:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:885
+#, scheme-format
+msgid "The following package would be upgraded:~%~{~a~%~}~%"
+msgid_plural "The following packages would be upgraded:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:890
+#, scheme-format
+msgid "The following package will be upgraded:~%~{~a~%~}~%"
+msgid_plural "The following packages will be upgraded:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:901
+#, scheme-format
+msgid "The following package would be installed:~%~{~a~%~}~%"
+msgid_plural "The following packages would be installed:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:906
+#, scheme-format
+msgid "The following package will be installed:~%~{~a~%~}~%"
+msgid_plural "The following packages will be installed:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:923
+msgid "<unknown location>"
+msgstr "<ubicación desconocida>"
+
+#: guix/ui.scm:1285
+#, scheme-format
+msgid "Generation ~a\t~a"
+msgstr ""
+
+#. TRANSLATORS: The word "current" here is an adjective for
+#. "Generation", as in "current generation". Use the appropriate
+#. gender where applicable.
+#: guix/ui.scm:1295
+#, scheme-format
+msgid "~a\t(current)~%"
+msgstr ""
+
+#: guix/ui.scm:1338
+#, scheme-format
+msgid "switched from generation ~a to ~a~%"
+msgstr ""
+
+#: guix/ui.scm:1354
+#, scheme-format
+msgid "deleting ~a~%"
+msgstr ""
+
+#: guix/ui.scm:1385
+#, scheme-format
+msgid "Try `guix --help' for more information.~%"
+msgstr ""
+
+#: guix/ui.scm:1413
+msgid ""
+"Usage: guix COMMAND ARGS...\n"
+"Run COMMAND with ARGS.\n"
+msgstr ""
+
+#: guix/ui.scm:1416
+msgid "COMMAND must be one of the sub-commands listed below:\n"
+msgstr ""
+
+#: guix/ui.scm:1436
+#, scheme-format
+msgid "guix: ~a: command not found~%"
+msgstr ""
+
+#: guix/ui.scm:1466
+#, scheme-format
+msgid "guix: missing command name~%"
+msgstr ""
+
+#: guix/ui.scm:1474
+#, scheme-format
+msgid "guix: unrecognized option '~a'~%"
+msgstr ""
+
+#: guix/http-client.scm:269
+#, scheme-format
+msgid "following redirection to `~a'...~%"
+msgstr ""
+
+#: guix/http-client.scm:281
+#, scheme-format
+msgid "~a: HTTP download failed: ~a (~s)"
+msgstr ""
+
+#: guix/nar.scm:155
+msgid "signature is not a valid s-expression"
+msgstr ""
+
+#: guix/nar.scm:164
+msgid "invalid signature"
+msgstr "firma inválida"
+
+#: guix/nar.scm:168
+msgid "invalid hash"
+msgstr "hash inválido"
+
+#: guix/nar.scm:176
+msgid "unauthorized public key"
+msgstr ""
+
+#: guix/nar.scm:181
+msgid "corrupt signature data"
+msgstr ""
+
+#: guix/nar.scm:201
+msgid "corrupt file set archive"
+msgstr ""
+
+#: guix/nar.scm:211
+#, scheme-format
+msgid "importing file or directory '~a'...~%"
+msgstr ""
+
+#: guix/nar.scm:222
+#, scheme-format
+msgid "found valid signature for '~a'~%"
+msgstr ""
+
+#: guix/nar.scm:229
+msgid "imported file lacks a signature"
+msgstr ""
+
+#: guix/nar.scm:268
+msgid "invalid inter-file archive mark"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:66
+msgid "guix-daemon -- perform derivation builds and store accesses"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:68
+msgid "This program is a daemon meant to run in the background. It serves requests sent over a Unix-domain socket. It accesses the store, and builds derivations on behalf of its clients."
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:94
+msgid "SYSTEM"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:95
+msgid "assume SYSTEM as the current system type"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:96 nix/nix-daemon/guix-daemon.cc:99
+msgid "N"
+msgstr "N"
+
+#: nix/nix-daemon/guix-daemon.cc:97
+msgid "use N CPU cores to build each derivation; 0 means as many as available"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:100
+msgid "allow at most N build jobs"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:101 nix/nix-daemon/guix-daemon.cc:103
+msgid "SECONDS"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:102
+msgid "mark builds as failed after SECONDS of activity"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:104
+msgid "mark builds as failed after SECONDS of silence"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:106
+msgid "disable chroot builds"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:107
+msgid "DIR"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:108
+msgid "add DIR to the build chroot"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:109
+msgid "GROUP"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:110
+msgid "perform builds as a user of GROUP"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:112
+msgid "do not use substitutes"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:113
+msgid "URLS"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:114
+msgid "use URLS as the default list of substitute providers"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:116
+msgid "do not use the 'build hook'"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:118
+msgid "cache build failures"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:120
+msgid "build each derivation N times in a row"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:122
+msgid "do not keep build logs"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:124
+msgid "disable compression of the build logs"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:129
+msgid "disable automatic file \"deduplication\" in the store"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:139
+msgid "impersonate Linux 2.6"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:143
+msgid "tell whether the GC must keep outputs of live derivations"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:146
+msgid "tell whether the GC must keep derivations corresponding to live outputs"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:149
+msgid "SOCKET"
+msgstr "SOCKET"
+
+#: nix/nix-daemon/guix-daemon.cc:150
+msgid "listen for connections on SOCKET"
+msgstr "escucha conexiones en SOCKET"
+
+#: nix/nix-daemon/guix-daemon.cc:152
+msgid "produce debugging output"
+msgstr "produce salida de depuración"
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index 760a2e4c9b..aa5eaa66e7 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -60,6 +60,14 @@ test -L "$profile" && test -L "$profile-1-link"
! test -f "$profile-2-link"
test -f "$profile/bin/guile"
+# Collisions are properly flagged (in this case, 'python-wrapper' propagates
+# python@3, which conflicts with python@2.)
+if guix package --bootstrap -n -p "$profile" -i python@2 python-wrapper
+then false; else true; fi
+
+guix package --bootstrap -n -p "$profile" -i python@2 python-wrapper \
+ --allow-collisions
+
# No search path env. var. here.
guix package -p "$profile" --search-paths
guix package -p "$profile" --search-paths | grep '^export PATH='
diff --git a/tests/syscalls.scm b/tests/syscalls.scm
index 22ca2a05d4..0d07280b99 100644
--- a/tests/syscalls.scm
+++ b/tests/syscalls.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;;
;;; This file is part of GNU Guix.
@@ -151,7 +151,13 @@
;; XXX: Skip this test when running Linux > 4.7.5 to work around
;; <https://bugzilla.kernel.org/show_bug.cgi?id=183461>.
(when (or (not perform-container-tests?)
- (version>? (utsname:release (uname)) "4.7.5"))
+ (version>? (utsname:release (uname)) "4.7.5")
+
+ ;; Skip on Ubuntu's 4.4 kernels, which contain a backport of the
+ ;; faulty code: <https://bugs.gnu.org/25476>.
+ (member (utsname:release (uname))
+ '("4.4.0-21-generic" "4.4.0-59-generic"
+ "4.4.0-116-generic")))
(test-skip 1))
(test-equal "pivot-root"
#t
diff --git a/tests/union.scm b/tests/union.scm
index b63edc757b..aa95cae001 100644
--- a/tests/union.scm
+++ b/tests/union.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -124,6 +124,46 @@
;; new 'bin' sub-directory in the profile.
(eq? 'directory (stat:type (lstat "bin"))))))))
+(test-assert "union-build collision first & last"
+ (let* ((guile (package-derivation %store %bootstrap-guile))
+ (fake (build-expression->derivation
+ %store "fake-guile"
+ '(begin
+ (use-modules (guix build utils))
+ (let ((out (assoc-ref %outputs "out")))
+ (mkdir-p (string-append out "/bin"))
+ (call-with-output-file (string-append out "/bin/guile")
+ (const #t))))
+ #:modules '((guix build utils))))
+ (builder (lambda (policy)
+ `(begin
+ (use-modules (guix build union)
+ (srfi srfi-1))
+ (union-build (assoc-ref %outputs "out")
+ (map cdr %build-inputs)
+ #:resolve-collision ,policy))))
+ (drv1
+ (build-expression->derivation %store "union-first"
+ (builder 'first)
+ #:inputs `(("guile" ,guile)
+ ("fake" ,fake))
+ #:modules '((guix build union))))
+ (drv2
+ (build-expression->derivation %store "union-last"
+ (builder 'last)
+ #:inputs `(("guile" ,guile)
+ ("fake" ,fake))
+ #:modules '((guix build union)))))
+ (and (build-derivations %store (list drv1 drv2))
+ (with-directory-excursion (derivation->output-path drv1)
+ (string=? (readlink "bin/guile")
+ (string-append (derivation->output-path guile)
+ "/bin/guile")))
+ (with-directory-excursion (derivation->output-path drv2)
+ (string=? (readlink "bin/guile")
+ (string-append (derivation->output-path fake)
+ "/bin/guile"))))))
+
(test-assert "union-build #:create-all-directories? #t"
(let* ((build `(begin
(use-modules (guix build union))