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 +;;; Copyright © 2014, 2016, 2017, 2018 Ludovic Courtès ;;; ;;; 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. +;;; +;;; Generating (guix config). +;;; +;;; This is copied from (guix self) because we cannot assume (guix self) is +;;; available at this point. +;;; -(define guix - (first (find-best-packages-by-name "guix" #f))) +(define %dependency-variables + ;; (guix config) variables corresponding to dependencies. + '(%libgcrypt %libz %xz %gzip %bzip2 %nix-instantiate)) -(define libgcrypt - (first (find-best-packages-by-name "libgcrypt" #f))) +(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 zlib - (first (find-best-packages-by-name "zlib" #f))) +(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) + (stringstring (car name+value1)) + (symbol->string (car name+value2)))))) -(define gzip - (first (find-best-packages-by-name "gzip" #f))) +(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")) -(define bzip2 - (first (find-best-packages-by-name "bzip2" #f))) + ;; Hack so that Geiser is not confused. + (define defmod 'define-module) -(define xz - (first (find-best-packages-by-name "xz" #f))) + (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)) -(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))) + ;; XXX: Work around . + (eval-when (expand load eval) + #$@(map (match-lambda + ((name . value) + #~(define-public #$name #$value))) + %config-variables) -(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 %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 guile-json - (package-for-current-guile "guile-json" - "guile2.2-json" - "guile2.0-json")) + (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 guile-ssh - (package-for-current-guile "guile-ssh" - "guile2.2-ssh" - "guile2.0-ssh")) + (define %libgcrypt + #+(and libgcrypt + (file-append libgcrypt "/lib/libgcrypt"))) + (define %libz + #+(and zlib + (file-append zlib "/lib/libz"))) -(define guile-git - (package-for-current-guile "guile-git" - "guile2.0-git")) + (define %nix-instantiate ;for (guix import snix) + "nix-instantiate"))))) -(define guile-bytestructures - (package-for-current-guile "guile-bytestructures" - "guile2.0-bytestructures")) -;; The actual build procedure. +;;; +;;; '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 (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) "/..")))) +(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 ." - (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* (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))) -(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")))))) + (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 +;;; +;;; 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 . + +;; 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 +;;; +;;; 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 . + +;;; +;;; 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 +;;; Copyright © 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2017 Jan Nieuwenhuizen ;;; ;;; 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 +;;; Copyright © 2017, 2018 Ludovic Courtès ;;; ;;; 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 +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès ;;; ;;; 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 +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2013 Mark H Weaver ;;; Copyright © 2014 Eric Bavier ;;; Copyright © 2016, 2017 Alex Kost @@ -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 +;;; Copyright © 2018 Roel Janssen ;;; ;;; 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 ;;; Copyright © 2017 Corentin Bocquillon ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice +;;; Copyright © 2018 Fis Trivial ;;; ;;; 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 ;;; Copyright © 2017, 2018 Roel Janssen -;;; Copyright © 2017 Tobias Geerinckx-Rice +;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2017 Raoul Bonnal ;;; Copyright © 2018 Vijayalakshmi Vedantham ;;; Copyright © 2018 Sahithi Yarlagadda @@ -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 ;;; Copyright © 2015, 2017 Ricardo Wurmus -;;; Copyright © 2016, 2017 Leo Famulari +;;; Copyright © 2016, 2017, 2018 Leo Famulari ;;; Copyright © 2016 Lukas Gradl ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2016, 2017 Nils Gillmann @@ -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 ;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner ;;; Copyright © 2016, 2017 Nils Gillmann -;;; Copyright © 2016, 2017 Roel Janssen +;;; Copyright © 2016, 2017, 2018 Roel Janssen ;;; Copyright © 2016 David Craven ;;; Copyright © 2016 Jan Nieuwenhuizen ;;; Copyright © 2016 Andy Patterson @@ -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 +;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; 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: + ;; + (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 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2017 Ricardo Wurmus +;;; Copyright © 2018 Vijayalakshmi Vedantham ;;; ;;; 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 ;;; Copyright © 2017 Clément Lassieur ;;; Copyright © 2017 Vasile Dumitrascu -;;; Copyright © 2017 Kyle Meyer +;;; Copyright © 2017, 2018 Kyle Meyer ;;; Copyright © 2017 Kei Kebreau ;;; Copyright © 2017 George Clemmer ;;; Copyright © 2017 Feng Shu @@ -29,9 +29,11 @@ ;;; Copyright © 2017, 2018 Oleg Pykhalov ;;; Copyright © 2017 Mekeor Melire ;;; Copyright © 2017 Peter Mikkelsen -;;; Copyright © 2017 Tobias Geerinckx-Rice +;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2017 Mike Gerwitz ;;; Copyright © 2017, 2018 Maxim Cournoyer +;;; Copyright © 2018 Sohom Bhattacharjee +;;; Copyright © 2018 Mathieu Lirzin ;;; ;;; 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 . - '(begin - (delete-file-recursively "vendor") - - ;; Use #include . - (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 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2017 Gábor Boskovits +;;; Copyright © 2018 Mathieu Lirzin ;;; ;;; 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 ;;; Copyright © 2016 Leo Famulari ;;; Copyright © 2017 Ricardo Wurmus +;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; 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 + ;; . ,@(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 +;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; 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 ;;; Copyright © 2016 Ricardo Wurmus ;;; Copyright © 2017 Roel Janssen +;;; Copyright © 2018 Marius Bakke ;;; ;;; 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))) + (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 "\""))) - ;; Link to libclang_rt files from clang-runtime. - (("TC\\.getDriver\\(\\)\\.ResourceDir") - (string-append "\"" compiler-rt "\""))) + ;; Make "LibDir" refer to /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")) - ;; Same for libc's libdir, to allow crt1.o & co. to be - ;; found. - (substitute* "lib/Driver/ToolChains.cpp" - (("@GLIBC_LIBDIR@") - (string-append libc "/lib"))) + ;; 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 ;;; Copyright © 2015 Fabian Harfert ;;; Copyright © 2016 Roel Janssen -;;; Copyright © 2016 Kei Kebreau +;;; Copyright © 2016, 2018 Kei Kebreau ;;; Copyright © 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2016 Leo Famulari ;;; Copyright © 2016, 2017 Thomas Danckaert @@ -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 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer ;;; Copyright © 2015 Andreas Enge -;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus +;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus ;;; Copyright © 2015 Efraim Flashner ;;; Copyright © 2016, 2017 Nils Gillmann ;;; Copyright © 2016 Andy Patterson @@ -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 ;;; Copyright © 2018 Marius Bakke ;;; Copyright © 2018 Konrad Hinsen +;;; Copyright © 2018 Thomas Sigurdsen ;;; ;;; 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 +*** 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 + #include + #include +--- 18,23 ---- diff --git a/gnu/packages/patches/clang-libc-search-path.patch b/gnu/packages/patches/clang-3.5-libc-search-path.patch similarity index 100% rename from gnu/packages/patches/clang-libc-search-path.patch rename to 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 + File "/gnu/store/...-glib-2.54.2-bin/bin/glib-mkenums", line 688, in 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 +AuthorDate: Tue Mar 6 09:05:08 2018 -0700 +Commit: Matthew Flatt +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 ;;; Copyright © 2016 Nils Gillmann ;;; Copyright © 2016 Alex Sassmannshausen -;;; Copyright © 2016 Roel Janssen +;;; Copyright © 2016, 2018 Roel Janssen ;;; Copyright © 2016 Ben Woodcroft ;;; Copyright © 2016 Jan Nieuwenhuizen ;;; Copyright © 2017 Raoul J.P. Bonnal @@ -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 ;;; Copyright © 2015 Eric Bavier ;;; Copyright © 2016, 2017 Nicolas Goaziou +;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; 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 ;;; Copyright © 2014, 2017 Eric Bavier ;;; Copyright © 2015, 2016 David Thompson -;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice +;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2016, 2017 Nils Gillmann ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus @@ -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 ;;; Copyright © 2018 Vijayalakshmi Vedantham - +;;; Copyright © 2018 Mathieu Lirzin +;;; Copyright © 2018 Adam Massmann +;;; ;;; 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 ;;; Copyright © 2016 Nils Gillmann ;;; Copyright © 2017 Ben Woodcroft -;;; Copyright © 2017 Nikolai Merinov +;;; Copyright © 2017, 2018 Nikolai Merinov ;;; Copyright © 2017 Efraim Flashner ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; @@ -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)))))))) + (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 rust compiler") - (description "This package provides a pre-built @command{rustc} compiler, -which can in turn be used to build the final Rust compiler.") + (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 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))))))) - (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.") - (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. ;; (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 ;;; Copyright © 2017 Thomas Danckaert ;;; Copyright © 2017 Ricardo Wurmus +;;; Copyright © 2018 Adam Massmann ;;; ;;; 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") + (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: - ;; . - (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)) + ;; XXX: These tests fail intermittently for unknown reasons: + ;; . + (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 ;;; Copyright © 2018 Roel Janssen ;;; Copyright © 2018 Marius Bakke +;;; Copyright © 2018 Pierre Neidhardt ;;; ;;; 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 ;;; Copyright © 2017 Marek Benc ;;; Copyright © 2017 Mike Gerwitz +;;; Copyright © 2018 Thomas Sigurdsen ;;; ;;; 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 - (($ 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 + (($ 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: @@ -880,6 +882,24 @@ system as root from within a user session, after the user has authenticated with the administrator's password." (service xfce-desktop-service-type config)) + +;;; +;;; 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 +;;; Copyright © 2012, 2013, 2014, 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2014 Mark H Weaver ;;; Copyright © 2017 Huang Ying ;;; @@ -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 . (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 \"-\" 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 [ | | ]." + (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 [ | | ]. 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) + (define (dot-git? file stat) + (and (string=? (basename file) ".git") + (eq? 'directory (stat:type stat)))) - ;; 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)) - - (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) @@ -407,6 +410,8 @@ Install, remove, or upgrade packages in a single transaction.\n")) (display (G_ " -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_ " @@ -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 +;;; +;;; 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 . + +(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 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) + (stringstring (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 . + (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 + ;; .) + (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 +;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2015 Alex Kost ;;; ;;; 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 tokens = tokenizeString >(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::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(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(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(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 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(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 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 , 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 \n" +"Language-Team: Spanish \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: 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 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 \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: " +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 "" +msgstr "" + +#: 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 +;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2015 David Thompson ;;; ;;; This file is part of GNU Guix. @@ -151,7 +151,13 @@ ;; XXX: Skip this test when running Linux > 4.7.5 to work around ;; . (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: . + (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 +;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2018 Ludovic Courtès ;;; ;;; 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))