Merge branch 'master' into staging
This commit is contained in:
		
						commit
						f35d313265
					
				
					 66 changed files with 3001 additions and 836 deletions
				
			
		|  | @ -249,6 +249,7 @@ MODULES =					\ | |||
|   guix/scripts/describe.scm			\ | ||||
|   guix/scripts/system.scm			\ | ||||
|   guix/scripts/system/search.scm		\ | ||||
|   guix/scripts/system/reconfigure.scm		\ | ||||
|   guix/scripts/lint.scm				\ | ||||
|   guix/scripts/challenge.scm			\ | ||||
|   guix/scripts/import/crate.scm			\ | ||||
|  |  | |||
|  | @ -5854,8 +5854,11 @@ should be added to the package definition via the | |||
| 
 | ||||
| In its @code{configure} phase, this build system will make any source inputs | ||||
| specified in the @code{#:cargo-inputs} and @code{#:cargo-development-inputs} | ||||
| parameters available to cargo.  The @code{install} phase installs any crate | ||||
| the binaries if they are defined by the crate. | ||||
| parameters available to cargo.  The @code{update-cargo-lock} phase will, | ||||
| when there is a @code{Cargo.lock} file, update the @code{Cargo.lock} file | ||||
| with the inputs and their versions available at build time.  The | ||||
| @code{install} phase installs any crate the binaries if they are defined by | ||||
| the crate. | ||||
| @end defvr | ||||
| 
 | ||||
| @cindex Clojure (programming language) | ||||
|  | @ -7439,7 +7442,8 @@ This is the declarative counterpart of @code{gexp->derivation}. | |||
| @end deffn | ||||
| 
 | ||||
| @deffn {Monadic Procedure} gexp->script @var{name} @var{exp} @ | ||||
|   [#:guile (default-guile)] [#:module-path %load-path] | ||||
|   [#:guile (default-guile)] [#:module-path %load-path] @ | ||||
|   [#:system (%current-system)] [#:target #f] | ||||
| Return an executable script @var{name} that runs @var{exp} using | ||||
| @var{guile}, with @var{exp}'s imported modules in its search path. | ||||
| Look up @var{exp}'s modules in @var{module-path}. | ||||
|  | @ -8048,7 +8052,7 @@ guix build --with-branch=guile-sqlite3=master cuirass | |||
| @item --with-commit=@var{package}=@var{commit} | ||||
| This is similar to @code{--with-branch}, except that it builds from | ||||
| @var{commit} rather than the tip of a branch.  @var{commit} must be a valid | ||||
| Git commit SHA1 identifier. | ||||
| Git commit SHA1 identifier or a tag. | ||||
| @end table | ||||
| 
 | ||||
| @node Additional Build Options | ||||
|  |  | |||
|  | @ -597,6 +597,7 @@ GNU_SYSTEM_MODULES =				\ | |||
|   %D%/tests/mail.scm				\
 | ||||
|   %D%/tests/messaging.scm			\
 | ||||
|   %D%/tests/networking.scm			\
 | ||||
|   %D%/tests/reconfigure.scm			\
 | ||||
|   %D%/tests/rsync.scm				\
 | ||||
|   %D%/tests/security-token.scm			\
 | ||||
|   %D%/tests/singularity.scm			\
 | ||||
|  | @ -756,6 +757,7 @@ dist_patch_DATA =						\ | |||
|   %D%/packages/patches/dfu-programmer-fix-libusb.patch		\
 | ||||
|   %D%/packages/patches/diffutils-gets-undeclared.patch		\
 | ||||
|   %D%/packages/patches/diffutils-getopt.patch			\
 | ||||
|   %D%/packages/patches/dkimproxy-add-ipv6-support.patch		\
 | ||||
|   %D%/packages/patches/docbook-xsl-nonrecursive-string-subst.patch	\
 | ||||
|   %D%/packages/patches/doc++-include-directives.patch		\
 | ||||
|   %D%/packages/patches/doc++-segfault-fix.patch			\
 | ||||
|  | @ -1042,6 +1044,7 @@ dist_patch_DATA =						\ | |||
|   %D%/packages/patches/libutils-add-includes.patch		\
 | ||||
|   %D%/packages/patches/libutils-remove-damaging-includes.patch	\
 | ||||
|   %D%/packages/patches/libvdpau-va-gl-unbundle.patch		\
 | ||||
|   %D%/packages/patches/libvirt-remove-ATTRIBUTE_UNUSED.patch	\
 | ||||
|   %D%/packages/patches/libvpx-CVE-2016-2818.patch		\
 | ||||
|   %D%/packages/patches/libvpx-use-after-free-in-postproc.patch	\
 | ||||
|   %D%/packages/patches/libxslt-generated-ids.patch		\
 | ||||
|  | @ -1162,6 +1165,7 @@ dist_patch_DATA =						\ | |||
|   %D%/packages/patches/patchelf-rework-for-arm.patch		\
 | ||||
|   %D%/packages/patches/patchutils-test-perms.patch		\
 | ||||
|   %D%/packages/patches/patch-hurd-path-max.patch		\
 | ||||
|   %D%/packages/patches/pcre2-fix-jit_match-crash.patch		\
 | ||||
|   %D%/packages/patches/perl-autosplit-default-time.patch	\
 | ||||
|   %D%/packages/patches/perl-deterministic-ordering.patch	\
 | ||||
|   %D%/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \
 | ||||
|  |  | |||
|  | @ -17,23 +17,21 @@ | |||
| ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| (define-module (gnu machine ssh) | ||||
|   #:use-module (gnu bootloader) | ||||
|   #:use-module (gnu machine) | ||||
|   #:autoload   (gnu packages gnupg) (guile-gcrypt) | ||||
|   #:use-module (gnu services) | ||||
|   #:use-module (gnu services shepherd) | ||||
|   #:use-module (gnu system) | ||||
|   #:use-module (guix derivations) | ||||
|   #:use-module (guix gexp) | ||||
|   #:use-module (guix i18n) | ||||
|   #:use-module (guix modules) | ||||
|   #:use-module (guix monads) | ||||
|   #:use-module (guix records) | ||||
|   #:use-module (guix remote) | ||||
|   #:use-module (guix scripts system reconfigure) | ||||
|   #:use-module (guix ssh) | ||||
|   #:use-module (guix store) | ||||
|   #:use-module (ice-9 match) | ||||
|   #:use-module (srfi srfi-19) | ||||
|   #:use-module (srfi srfi-26) | ||||
|   #:use-module (srfi srfi-35) | ||||
|   #:export (managed-host-environment-type | ||||
| 
 | ||||
|  | @ -105,118 +103,6 @@ an environment type of 'managed-host." | |||
| ;;; System deployment. | ||||
| ;;; | ||||
| 
 | ||||
| (define (switch-to-system machine) | ||||
|   "Monadic procedure creating a new generation on MACHINE and execute the | ||||
| activation script for the new system configuration." | ||||
|   (define (remote-exp drv script) | ||||
|     (with-extensions (list guile-gcrypt) | ||||
|       (with-imported-modules (source-module-closure '((guix config) | ||||
|                                                       (guix profiles) | ||||
|                                                       (guix utils))) | ||||
|         #~(begin | ||||
|             (use-modules (guix config) | ||||
|                          (guix profiles) | ||||
|                          (guix utils)) | ||||
| 
 | ||||
|             (define %system-profile | ||||
|               (string-append %state-directory "/profiles/system")) | ||||
| 
 | ||||
|             (let* ((system #$drv) | ||||
|                    (number (1+ (generation-number %system-profile))) | ||||
|                    (generation (generation-file-name %system-profile number))) | ||||
|               (switch-symlinks generation system) | ||||
|               (switch-symlinks %system-profile generation) | ||||
|               ;; The implementation of 'guix system reconfigure' saves the | ||||
|               ;; load path and environment here. This is unnecessary here | ||||
|               ;; because each invocation of 'remote-eval' runs in a distinct | ||||
|               ;; Guile REPL. | ||||
|               (setenv "GUIX_NEW_SYSTEM" system) | ||||
|               ;; The activation script may write to stdout, which confuses | ||||
|               ;; 'remote-eval' when it attempts to read a result from the | ||||
|               ;; remote REPL. We work around this by forcing the output to a | ||||
|               ;; string. | ||||
|               (with-output-to-string | ||||
|                 (lambda () | ||||
|                   (primitive-load #$script)))))))) | ||||
| 
 | ||||
|   (let* ((os (machine-system machine)) | ||||
|          (script (operating-system-activation-script os))) | ||||
|     (mlet* %store-monad ((drv (operating-system-derivation os))) | ||||
|       (machine-remote-eval machine (remote-exp drv script))))) | ||||
| 
 | ||||
| ;; XXX: Currently, this does NOT attempt to restart running services. This is | ||||
| ;; also the case with 'guix system reconfigure'. | ||||
| ;; | ||||
| ;; See <https://issues.guix.info/issue/33508>. | ||||
| (define (upgrade-shepherd-services machine) | ||||
|   "Monadic procedure unloading and starting services on the remote as needed | ||||
| to realize the MACHINE's system configuration." | ||||
|   (define target-services | ||||
|     ;; Monadic expression evaluating to a list of (name output-path) pairs for | ||||
|     ;; all of MACHINE's services. | ||||
|     (mapm %store-monad | ||||
|           (lambda (service) | ||||
|             (mlet %store-monad ((file ((compose lower-object | ||||
|                                                 shepherd-service-file) | ||||
|                                        service))) | ||||
|               (return (list (shepherd-service-canonical-name service) | ||||
|                             (derivation->output-path file))))) | ||||
|           (service-value | ||||
|            (fold-services (operating-system-services (machine-system machine)) | ||||
|                           #:target-type shepherd-root-service-type)))) | ||||
| 
 | ||||
|   (define (remote-exp target-services) | ||||
|     (with-imported-modules '((gnu services herd)) | ||||
|       #~(begin | ||||
|           (use-modules (gnu services herd) | ||||
|                        (srfi srfi-1)) | ||||
| 
 | ||||
|           (define running | ||||
|             (filter live-service-running (current-services))) | ||||
| 
 | ||||
|           (define (essential? service) | ||||
|             ;; Return #t if SERVICE is essential and should not be unloaded | ||||
|             ;; under any circumstance. | ||||
|             (memq (first (live-service-provision service)) | ||||
|                   '(root shepherd))) | ||||
| 
 | ||||
|           (define (obsolete? service) | ||||
|             ;; Return #t if SERVICE can be safely unloaded. | ||||
|             (and (not (essential? service)) | ||||
|                  (every (lambda (requirements) | ||||
|                           (not (memq (first (live-service-provision service)) | ||||
|                                      requirements))) | ||||
|                         (map live-service-requirement running)))) | ||||
| 
 | ||||
|           (define to-unload | ||||
|             (filter obsolete? | ||||
|                     (remove (lambda (service) | ||||
|                               (memq (first (live-service-provision service)) | ||||
|                                     (map first '#$target-services))) | ||||
|                             running))) | ||||
| 
 | ||||
|           (define to-start | ||||
|             (remove (lambda (service-pair) | ||||
|                       (memq (first service-pair) | ||||
|                             (map (compose first live-service-provision) | ||||
|                                  running))) | ||||
|                     '#$target-services)) | ||||
| 
 | ||||
|           ;; Unload obsolete services. | ||||
|           (for-each (lambda (service) | ||||
|                       (false-if-exception | ||||
|                        (unload-service service))) | ||||
|                     to-unload) | ||||
| 
 | ||||
|           ;; Load the service files for any new services and start them. | ||||
|           (load-services/safe (map second to-start)) | ||||
|           (for-each start-service (map first to-start)) | ||||
| 
 | ||||
|           #t))) | ||||
| 
 | ||||
|   (mlet %store-monad ((target-services target-services)) | ||||
|     (machine-remote-eval machine (remote-exp target-services)))) | ||||
| 
 | ||||
| (define (machine-boot-parameters machine) | ||||
|   "Monadic procedure returning a list of 'boot-parameters' for the generations | ||||
| of MACHINE's system profile, ordered from most recent to oldest." | ||||
|  | @ -275,71 +161,20 @@ of MACHINE's system profile, ordered from most recent to oldest." | |||
|                            (boot-parameters-kernel-arguments params)))))))) | ||||
|           generations)))) | ||||
| 
 | ||||
| (define (install-bootloader machine) | ||||
|   "Create a bootloader entry for the new system generation on MACHINE, and | ||||
| configure the bootloader to boot that generation by default." | ||||
|   (define bootloader-installer-script | ||||
|     (@@ (guix scripts system) bootloader-installer-script)) | ||||
| 
 | ||||
|   (define (remote-exp installer bootcfg bootcfg-file) | ||||
|     (with-extensions (list guile-gcrypt) | ||||
|       (with-imported-modules (source-module-closure '((gnu build install) | ||||
|                                                       (guix store) | ||||
|                                                       (guix utils))) | ||||
|         #~(begin | ||||
|             (use-modules (gnu build install) | ||||
|                          (guix store) | ||||
|                          (guix utils)) | ||||
|             (let* ((gc-root (string-append "/" %gc-roots-directory "/bootcfg")) | ||||
|                    (temp-gc-root (string-append gc-root ".new"))) | ||||
| 
 | ||||
|               (switch-symlinks temp-gc-root gc-root) | ||||
| 
 | ||||
|               (unless (false-if-exception | ||||
|                        (begin | ||||
|                          ;; The implementation of 'guix system reconfigure' | ||||
|                          ;; saves the load path here. This is unnecessary here | ||||
|                          ;; because each invocation of 'remote-eval' runs in a | ||||
|                          ;; distinct Guile REPL. | ||||
|                          (install-boot-config #$bootcfg #$bootcfg-file "/") | ||||
|                          ;; The installation script may write to stdout, which | ||||
|                          ;; confuses 'remote-eval' when it attempts to read a | ||||
|                          ;; result from the remote REPL. We work around this | ||||
|                          ;; by forcing the output to a string. | ||||
|                          (with-output-to-string | ||||
|                            (lambda () | ||||
|                              (primitive-load #$installer))))) | ||||
|                 (delete-file temp-gc-root) | ||||
|                 (error "failed to install bootloader")) | ||||
| 
 | ||||
|               (rename-file temp-gc-root gc-root) | ||||
|               #t))))) | ||||
| 
 | ||||
|   (mlet* %store-monad ((boot-parameters (machine-boot-parameters machine))) | ||||
|     (let* ((os (machine-system machine)) | ||||
|            (bootloader ((compose bootloader-configuration-bootloader | ||||
|                                  operating-system-bootloader) | ||||
|                         os)) | ||||
|            (bootloader-target (bootloader-configuration-target | ||||
|                                (operating-system-bootloader os))) | ||||
|            (installer (bootloader-installer-script | ||||
|                        (bootloader-installer bootloader) | ||||
|                        (bootloader-package bootloader) | ||||
|                        bootloader-target | ||||
|                        "/")) | ||||
|            (menu-entries (map boot-parameters->menu-entry boot-parameters)) | ||||
|            (bootcfg (operating-system-bootcfg os menu-entries)) | ||||
|            (bootcfg-file (bootloader-configuration-file bootloader))) | ||||
|       (machine-remote-eval machine (remote-exp installer bootcfg bootcfg-file))))) | ||||
| 
 | ||||
| (define (deploy-managed-host machine) | ||||
|   "Internal implementation of 'deploy-machine' for MACHINE instances with an | ||||
| environment type of 'managed-host." | ||||
|   (maybe-raise-unsupported-configuration-error machine) | ||||
|   (mbegin %store-monad | ||||
|     (switch-to-system machine) | ||||
|     (upgrade-shepherd-services machine) | ||||
|     (install-bootloader machine))) | ||||
|   (mlet %store-monad ((boot-parameters (machine-boot-parameters machine))) | ||||
|     (let* ((os (machine-system machine)) | ||||
|            (eval (cut machine-remote-eval machine <>)) | ||||
|            (menu-entries (map boot-parameters->menu-entry boot-parameters)) | ||||
|            (bootloader-configuration (operating-system-bootloader os)) | ||||
|            (bootcfg (operating-system-bootcfg os menu-entries))) | ||||
|       (mbegin %store-monad | ||||
|         (switch-to-system eval os) | ||||
|         (upgrade-shepherd-services eval os) | ||||
|         (install-bootloader eval bootloader-configuration bootcfg))))) | ||||
| 
 | ||||
|  | ||||
| ;;; | ||||
|  |  | |||
|  | @ -913,6 +913,51 @@ by bandwidth they use.") | |||
|                (base32 | ||||
|                 "0rmk2p3f2wz1h092anidjclh212rv3gxyk0c641qk3frlrjnw6mp")))) | ||||
|     (build-system perl-build-system) | ||||
|     (arguments | ||||
|      `(#:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-after 'unpack 'refer-to-inputs | ||||
|            (lambda* (#:key inputs #:allow-other-keys) | ||||
|              (substitute* (list "lib/App/ClusterSSH/Config.pm" | ||||
|                                 "t/15config.t") | ||||
|                (("xterm") | ||||
|                 (which "xterm"))) | ||||
|              #t)) | ||||
|          (add-before 'check 'delete-failing-tests | ||||
|            (lambda _ | ||||
|              ;; This checks whether all code is nicely formatted.  The above | ||||
|              ;; ‘refer-to-inputs’ phase breaks this pedantry, so disable it. | ||||
|              (delete-file "t/perltidy.t") | ||||
|              ;; Update the manifest so t/manifest.t happily passes. | ||||
|              (substitute* "MANIFEST" | ||||
|                (("t/perltidy.t\n") "")) | ||||
|              #t)) | ||||
|          (add-after 'install 'augment-library-path | ||||
|            (lambda* (#:key inputs outputs #:allow-other-keys) | ||||
|              (let* ((out (assoc-ref outputs "out")) | ||||
|                     (bin (string-append out "/bin"))) | ||||
|                (with-directory-excursion bin | ||||
|                  (for-each | ||||
|                   (lambda (program) | ||||
|                     (wrap-program program | ||||
|                       `("PERL5LIB" ":" prefix | ||||
|                         ,(map (lambda (file-name) | ||||
|                                 (string-append file-name | ||||
|                                                "/lib/perl5/site_perl")) | ||||
|                               (cons out | ||||
|                                     (map (lambda (input) | ||||
|                                            (assoc-ref inputs input)) | ||||
|                                          ;; These may be propagated and hence | ||||
|                                          ;; not explicitly listed as inputs. | ||||
|                                          (list "perl-class-data-inheritable" | ||||
|                                                "perl-devel-stacktrace" | ||||
|                                                "perl-exception-class" | ||||
|                                                "perl-tk" | ||||
|                                                "perl-try-tiny" | ||||
|                                                "perl-x11-protocol" | ||||
|                                                "perl-x11-protocol-other"))))))) | ||||
|                   (find-files "." ".*"))) | ||||
|                #t)))))) | ||||
|     (native-inputs | ||||
|      `(("perl-cpan-changes" ,perl-cpan-changes) | ||||
|        ("perl-file-slurp" ,perl-file-slurp) | ||||
|  | @ -926,13 +971,14 @@ by bandwidth they use.") | |||
|        ("perl-test-pod-coverage" ,perl-test-pod-coverage) | ||||
|        ("perl-test-trap" ,perl-test-trap) | ||||
|        ("perltidy" ,perltidy))) | ||||
|     (propagated-inputs | ||||
|      `(("xterm" ,xterm) | ||||
|        ("perl-exception-class" ,perl-exception-class) | ||||
|     (inputs | ||||
|      `(("perl-exception-class" ,perl-exception-class) | ||||
|        ("perl-sort-naturally" ,perl-sort-naturally) | ||||
|        ("perl-tk" ,perl-tk) | ||||
|        ("perl-try-tiny" ,perl-try-tiny) | ||||
|        ("perl-x11-protocol" ,perl-x11-protocol) | ||||
|        ("perl-x11-protocol-other" ,perl-x11-protocol-other))) | ||||
|        ("perl-x11-protocol-other" ,perl-x11-protocol-other) | ||||
|        ("xterm" ,xterm))) | ||||
|     ;; The clusterssh.sourceforge.net address requires login to view | ||||
|     (home-page "https://sourceforge.net/projects/clusterssh/") | ||||
|     (synopsis "Secure concurrent multi-server terminal control") | ||||
|  |  | |||
|  | @ -345,7 +345,7 @@ precision.") | |||
| (define-public giac | ||||
|   (package | ||||
|     (name "giac") | ||||
|     (version "1.5.0-61") | ||||
|     (version "1.5.0-63") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               ;; "~parisse/giac" is not used because the maintainer regularly | ||||
|  | @ -357,7 +357,7 @@ precision.") | |||
|                                   "source/giac_" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "050vzpqq77fhky32sbisc0ysimgp60xjv39q7y45jkaabdkmclwh")))) | ||||
|                 "1jp7awyp8j8w6fhn802z8ddbq1fxhkyk9xdf0mq0mm0chpkylwqk")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      `(#:modules ((ice-9 ftw) | ||||
|  |  | |||
|  | @ -22,6 +22,7 @@ | |||
|   #:use-module ((guix licenses) #:prefix license:) | ||||
|   #:use-module (guix packages) | ||||
|   #:use-module (guix download) | ||||
|   #:use-module (guix git-download) | ||||
|   #:use-module (guix build-system r) | ||||
|   #:use-module (gnu packages) | ||||
|   #:use-module (gnu packages base) | ||||
|  | @ -37,7 +38,8 @@ | |||
|   #:use-module (gnu packages perl) | ||||
|   #:use-module (gnu packages pkg-config) | ||||
|   #:use-module (gnu packages statistics) | ||||
|   #:use-module (gnu packages web)) | ||||
|   #:use-module (gnu packages web) | ||||
|   #:use-module (srfi srfi-1)) | ||||
| 
 | ||||
|  | ||||
| ;;; Annotations | ||||
|  | @ -2263,6 +2265,68 @@ tasks on single cell expression data.  It is designed to work with RNA-Seq and | |||
| qPCR data, but could be used with other types as well.") | ||||
|     (license license:artistic2.0))) | ||||
| 
 | ||||
| (define-public r-monocle3 | ||||
|   (package | ||||
|     (name "r-monocle3") | ||||
|     (version "0.1.2") | ||||
|     (source | ||||
|      (origin | ||||
|        (method git-fetch) | ||||
|        (uri (git-reference | ||||
|              (url "https://github.com/cole-trapnell-lab/monocle3.git") | ||||
|              (commit version))) | ||||
|        (file-name (git-file-name name version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1cjxqfw3qvy269hsf5v80d4kshl932wrl949iayas02saj6f70ls")))) | ||||
|     (build-system r-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("r-biobase" ,r-biobase) | ||||
|        ("r-biocgenerics" ,r-biocgenerics) | ||||
|        ("r-delayedmatrixstats" ,r-delayedmatrixstats) | ||||
|        ("r-dplyr" ,r-dplyr) | ||||
|        ("r-ggplot2" ,r-ggplot2) | ||||
|        ("r-ggrepel" ,r-ggrepel) | ||||
|        ("r-grr" ,r-grr) | ||||
|        ("r-htmlwidgets" ,r-htmlwidgets) | ||||
|        ("r-igraph" ,r-igraph) | ||||
|        ("r-irlba" ,r-irlba) | ||||
|        ("r-limma" ,r-limma) | ||||
|        ("r-lmtest" ,r-lmtest) | ||||
|        ("r-mass" ,r-mass) | ||||
|        ("r-matrix" ,r-matrix) | ||||
|        ("r-matrix-utils" ,r-matrix-utils) | ||||
|        ("r-pbapply" ,r-pbapply) | ||||
|        ("r-pbmcapply" ,r-pbmcapply) | ||||
|        ("r-pheatmap" ,r-pheatmap) | ||||
|        ("r-plotly" ,r-plotly) | ||||
|        ("r-pryr" ,r-pryr) | ||||
|        ("r-proxy" ,r-proxy) | ||||
|        ("r-pscl" ,r-pscl) | ||||
|        ("r-purrr" ,r-purrr) | ||||
|        ("r-rann" ,r-rann) | ||||
|        ("r-rcpp" ,r-rcpp) | ||||
|        ("r-rcppparallel" ,r-rcppparallel) | ||||
|        ("r-reshape2" ,r-reshape2) | ||||
|        ("r-reticulate" ,r-reticulate) | ||||
|        ("r-rhpcblasctl" ,r-rhpcblasctl) | ||||
|        ("r-rtsne" ,r-rtsne) | ||||
|        ("r-shiny" ,r-shiny) | ||||
|        ("r-slam" ,r-slam) | ||||
|        ("r-spdep" ,r-spdep) | ||||
|        ("r-speedglm" ,r-speedglm) | ||||
|        ("r-stringr" ,r-stringr) | ||||
|        ("r-singlecellexperiment" ,r-singlecellexperiment) | ||||
|        ("r-tibble" ,r-tibble) | ||||
|        ("r-tidyr" ,r-tidyr) | ||||
|        ("r-uwot" ,r-uwot) | ||||
|        ("r-viridis" ,r-viridis))) | ||||
|     (home-page "https://github.com/cole-trapnell-lab/monocle3") | ||||
|     (synopsis "Analysis toolkit for single-cell RNA-Seq data") | ||||
|     (description | ||||
|      "Monocle 3 is an analysis toolkit for single-cell RNA-Seq experiments.") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public r-noiseq | ||||
|   (package | ||||
|     (name "r-noiseq") | ||||
|  | @ -5024,3 +5088,66 @@ with separating information will be identified, and these clusters are defined | |||
| by a sparse number of variables, this method can reduce the complexity of | ||||
| data, to only emphasize the data that actually matters.") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public r-cicero | ||||
|   (package | ||||
|     (name "r-cicero") | ||||
|     (version "1.2.0") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (bioconductor-uri "cicero" version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0f15l8zrh7l7nnvznb66116hvfk15djb9q240vbscm2w0y5fvkcr")))) | ||||
|     (build-system r-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("r-assertthat" ,r-assertthat) | ||||
|        ("r-biobase" ,r-biobase) | ||||
|        ("r-biocgenerics" ,r-biocgenerics) | ||||
|        ("r-data-table" ,r-data-table) | ||||
|        ("r-dplyr" ,r-dplyr) | ||||
|        ("r-fnn" ,r-fnn) | ||||
|        ("r-genomicranges" ,r-genomicranges) | ||||
|        ("r-ggplot2" ,r-ggplot2) | ||||
|        ("r-glasso" ,r-glasso) | ||||
|        ("r-gviz" ,r-gviz) | ||||
|        ("r-igraph" ,r-igraph) | ||||
|        ("r-iranges" ,r-iranges) | ||||
|        ("r-matrix" ,r-matrix) | ||||
|        ("r-monocle" ,r-monocle) | ||||
|        ("r-plyr" ,r-plyr) | ||||
|        ("r-reshape2" ,r-reshape2) | ||||
|        ("r-s4vectors" ,r-s4vectors) | ||||
|        ("r-stringr" ,r-stringr) | ||||
|        ("r-tibble" ,r-tibble) | ||||
|        ("r-vgam" ,r-vgam))) | ||||
|     (home-page "https://bioconductor.org/packages/cicero/") | ||||
|     (synopsis "Predict cis-co-accessibility from single-cell data") | ||||
|     (description | ||||
|      "Cicero computes putative cis-regulatory maps from single-cell chromatin | ||||
| accessibility data.  It also extends the monocle package for use in chromatin | ||||
| accessibility data.") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| ;; This is the latest commit on the "monocle3" branch. | ||||
| (define-public r-cicero-monocle3 | ||||
|   (let ((commit "fa2fb6515857a8cfc88bc9af044f34de1bcd2b7b") | ||||
|         (revision "1")) | ||||
|     (package (inherit r-cicero) | ||||
|       (name "r-cicero-monocle3") | ||||
|       (version (git-version "1.3.2" revision commit)) | ||||
|       (source | ||||
|        (origin | ||||
|          (method git-fetch) | ||||
|          (uri (git-reference | ||||
|                (url "https://github.com/cole-trapnell-lab/cicero-release.git") | ||||
|                (commit commit))) | ||||
|          (file-name (git-file-name name version)) | ||||
|          (sha256 | ||||
|           (base32 | ||||
|            "077yza93wdhi08n40md20jwk55k9lw1f3y0063qkk90cpz60wi0c")))) | ||||
|       (propagated-inputs | ||||
|        `(("r-monocle3" ,r-monocle3) | ||||
|          ,@(alist-delete "r-monocle" | ||||
|                          (package-propagated-inputs r-cicero))))))) | ||||
|  |  | |||
|  | @ -73,7 +73,8 @@ | |||
|   #:use-module (srfi srfi-1)) | ||||
| 
 | ||||
| (define %preserved-third-party-files | ||||
|   '("base/third_party/dmg_fp" ;X11-style | ||||
|   '("base/third_party/cityhash" ;Expat | ||||
|     "base/third_party/dmg_fp" ;X11-style | ||||
|     "base/third_party/dynamic_annotations" ;BSD-2 | ||||
|     "base/third_party/icu" ;Unicode, X11-style | ||||
|     "base/third_party/superfasthash" ;BSD-3 | ||||
|  | @ -85,7 +86,7 @@ | |||
|     "courgette/third_party/divsufsort" ;Expat | ||||
|     "net/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+ | ||||
|     "net/third_party/nss" ;MPL-2.0 | ||||
|     "net/third_party/quic" ;BSD-3 | ||||
|     "net/third_party/quiche" ;BSD-3 | ||||
|     "net/third_party/uri_template" ;ASL2.0 | ||||
|     "third_party/abseil-cpp" ;ASL2.0 | ||||
|     "third_party/adobe/flash/flapper_version.h" ;no license, trivial | ||||
|  | @ -105,6 +106,10 @@ | |||
|     "third_party/blink" ;BSD-3, LGPL2+ | ||||
|     "third_party/boringssl" ;OpenSSL/ISC (Google additions are ISC) | ||||
|     "third_party/boringssl/src/third_party/fiat" ;Expat | ||||
|     "third_party/boringssl/src/third_party/sike" ;Expat | ||||
|     ;; XXX: these files are generated by fp-$arch.pl in the above directory. | ||||
|     "third_party/boringssl/linux-aarch64/crypto/third_party/sike/asm/fp-armv8.S" | ||||
|     "third_party/boringssl/linux-x86_64/crypto/third_party/sike/asm/fp-x86_64.S" | ||||
|     "third_party/breakpad" ;BSD-3 | ||||
|     "third_party/brotli" ;Expat | ||||
|     "third_party/cacheinvalidation" ;ASL2.0 | ||||
|  | @ -164,6 +169,7 @@ | |||
|     "third_party/nasm" ;BSD-2 | ||||
|     "third_party/node" ;Expat | ||||
|     "third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2" ;BSD-2 | ||||
|     "third_party/openscreen" ;BSD-3 | ||||
|     "third_party/ots" ;BSD-3 | ||||
|     "third_party/pdfium" ;BSD-3 | ||||
|     "third_party/pdfium/third_party/agg23" ;Expat | ||||
|  | @ -182,9 +188,10 @@ | |||
|     "third_party/s2cellid" ;ASL2.0 | ||||
|     "third_party/sfntly" ;ASL2.0 | ||||
|     "third_party/skia" ;BSD-3 | ||||
|     "third_party/skia/include/third_party/skcms" ;BSD-3 | ||||
|     "third_party/skia/third_party/gif" ;MPL1.1/GPL2+/LGPL2.1+ | ||||
|     "third_party/skia/third_party/skcms" ;BSD-3 | ||||
|     "third_party/skia/third_party/vulkan" ;BSD-3 | ||||
|     "third_party/skia/third_party/vulkanmemoryallocator" ;BSD-3, Expat | ||||
|     "third_party/smhasher" ;Expat, public domain | ||||
|     "third_party/speech-dispatcher" ;GPL2+ | ||||
|     "third_party/spirv-headers" ;ASL2.0 | ||||
|  | @ -231,9 +238,9 @@ from forcing GEXP-PROMISE." | |||
|                       #:system system | ||||
|                       #:guile-for-build guile))) | ||||
| 
 | ||||
| (define %chromium-version "75.0.3770.142") | ||||
| (define %ungoogled-revision "5d8abc38b43a62f379615a0dc972b29d9aebb4b4") | ||||
| (define %debian-revision "debian/75.0.3770.90-1") | ||||
| (define %chromium-version "76.0.3809.87") | ||||
| (define %ungoogled-revision "6ea939002bae43a27910e03569d43519d07842e7") | ||||
| (define %debian-revision "debian/76.0.3809.87-2") | ||||
| (define package-revision "0") | ||||
| (define %package-version (string-append %chromium-version "-" | ||||
|                                         package-revision "." | ||||
|  | @ -247,7 +254,7 @@ from forcing GEXP-PROMISE." | |||
|                         %chromium-version ".tar.xz")) | ||||
|     (sha256 | ||||
|      (base32 | ||||
|       "1b550hc9sav0qdnh4hiin2bb3jmfyrb3dhbmnc0v8662rjknq3ji")))) | ||||
|       "1521vh38mfgy7aj1lw1vpbdm8m6wyh52d5p7bz4x6kvvxsnacp11")))) | ||||
| 
 | ||||
| (define %ungoogled-origin | ||||
|   (origin | ||||
|  | @ -258,7 +265,7 @@ from forcing GEXP-PROMISE." | |||
|                               (string-take %ungoogled-revision 7))) | ||||
|     (sha256 | ||||
|      (base32 | ||||
|       "1vk8jzzsn20ysn4nlz84mwwhfa9nnywzd1lrahlhcky9pf6xzpwa")))) | ||||
|       "1nhrh9fn1appbxf8d3dg49jrqjvha721s89i60s4m63d037cifzr")))) | ||||
| 
 | ||||
| (define %debian-origin | ||||
|   (origin | ||||
|  | @ -272,7 +279,29 @@ from forcing GEXP-PROMISE." | |||
|                                   (string-take %debian-revision 7)))) | ||||
|     (sha256 | ||||
|      (base32 | ||||
|       "0sh6z2lx44zb31qrpa29vm0sw09dxi7i9h6fsq3ivfxjs7v98bbx")))) | ||||
|       "1fjhpzrxmgjr7i31li1vsfmp0qkbi0cpyc7p1zjwvf2x4da0v907")))) | ||||
| 
 | ||||
| (define (gentoo-patch name hash revision) | ||||
|   (origin | ||||
|     (method url-fetch) | ||||
|     (uri (string-append "https://gitweb.gentoo.org/repo/gentoo.git/plain" | ||||
|                         "/www-client/chromium/files/" name "?id=" revision)) | ||||
|     (file-name name) | ||||
|     (sha256 (base32 hash)))) | ||||
| 
 | ||||
| (define-syntax-rule (gentoo-patches (name hash) ...) | ||||
|   (list (gentoo-patch name hash "9fd80e7d75aa63843ec33c9d44fee32596ae8f25") | ||||
|         ...)) | ||||
| 
 | ||||
| (define %auxiliary-patches | ||||
|   ;; XXX: Debians "gcc/wrong-namespace.patch" and "fixes/inspector.patch" does | ||||
|   ;; not work for us, so we take these upstream fixes via Gentoo instead. | ||||
|   (gentoo-patches | ||||
|    ("chromium-76-quiche.patch" "1cs0y16jn7r1nxh0j36vqcsdvigl902kdcqfmyivnxgblrx66l2i") | ||||
|    ("chromium-76-gcc-blink-namespace1.patch" | ||||
|     "0k7nrn0dhvqxj4sg2gndzxih0l1f77h6pv7jhcdz7h69sm4xci2z") | ||||
|    ("chromium-76-gcc-blink-namespace2.patch" | ||||
|     "014y2d8ii9sr340sjbv1fhsjd5s3dl0vbmq5wzlkdjsp91dcn9ch"))) | ||||
| 
 | ||||
| ;; This is a "computed" origin that does the following: | ||||
| ;; *) Runs the Ungoogled scripts on a pristine Chromium tarball. | ||||
|  | @ -314,6 +343,12 @@ from forcing GEXP-PROMISE." | |||
|                    (force-output) | ||||
|                    (invoke "tar" "xf" #+chromium-source) | ||||
| 
 | ||||
|                    ;; Ungoogled-Chromium contains a forked subset of the Debian | ||||
|                    ;; patches.  Disable those, as we apply newer versions later. | ||||
|                    (substitute* "patches/series" | ||||
|                      ((".*/debian_buster/.*") | ||||
|                       "")) | ||||
| 
 | ||||
|                    (format #t "Ungooglifying...~%") | ||||
|                    (force-output) | ||||
|                    (invoke "python3" "utils/prune_binaries.py" chromium-dir | ||||
|  | @ -330,16 +365,7 @@ from forcing GEXP-PROMISE." | |||
|                      (force-output) | ||||
|                      (let* ((debian  #+debian-source) | ||||
|                             (patches (string-append debian "/debian/patches")) | ||||
|                             (series  (string-append patches "/series")) | ||||
|                             (grep-q (lambda (query file) | ||||
|                                       (with-input-from-file file | ||||
|                                         (lambda () | ||||
|                                           (let loop ((line (read-line)) | ||||
|                                                      (match #f)) | ||||
|                                             (if (or match (eof-object? line)) | ||||
|                                                 (if match #t #f) | ||||
|                                                 (loop (read-line) | ||||
|                                                       (string-contains line query))))))))) | ||||
|                             (series  (string-append patches "/series"))) | ||||
|                        (with-input-from-file series | ||||
|                          (lambda () | ||||
|                            (let loop ((line (read-line))) | ||||
|  | @ -347,19 +373,35 @@ from forcing GEXP-PROMISE." | |||
|                                (when (and (> (string-length line) 1) | ||||
|                                           ;; Skip the Debian-specific ones. | ||||
|                                           (not (string-prefix? "debianization/" line)) | ||||
|                                           (not (string-prefix? "buster/" line)) | ||||
|                                           ;; And those that conflict with Ungoogled. | ||||
|                                           (not (any (cute string-suffix? <> line) | ||||
|                                                     '("widevine-buildflag.patch" | ||||
|                                                       "signin.patch" | ||||
|                                                       "third-party-cookies.patch"))) | ||||
|                                           ;; Ungoogled includes a subset of the Debian | ||||
|                                           ;; patches.  Exclude those already present. | ||||
|                                           (not (grep-q line "../patches/series"))) | ||||
|                                                       "third-party-cookies.patch" | ||||
| 
 | ||||
|                                                       ;; XXX: 'fixes/inspector.patch' | ||||
|                                                       ;; makes v8 reuse the top-level | ||||
|                                                       ;; third_party/inspector_protocol | ||||
|                                                       ;; instead of its own bundled copy, | ||||
|                                                       ;; but that does not work here for | ||||
|                                                       ;; some reason.  Ignore that patch | ||||
|                                                       ;; and those that depend on it. | ||||
|                                                       "wrong-namespace.patch" | ||||
|                                                       "explicit-specialization.patch" | ||||
|                                                       "inspector.patch")))) | ||||
|                                  (invoke "patch" "--force" "-p1" "--input" | ||||
|                                          (string-append patches "/" line) | ||||
|                                          "--no-backup-if-mismatch")) | ||||
|                                (loop (read-line))))))) | ||||
| 
 | ||||
|                      (format #t "Applying Guix-specific patches...~%") | ||||
|                      (force-output) | ||||
|                      (for-each (lambda (patch) | ||||
|                                  (invoke "patch" "--force" "-p1" "--input" | ||||
|                                          patch "--no-backup-if-mismatch")) | ||||
|                                '#+%auxiliary-patches) | ||||
| 
 | ||||
|                      (format #t "Pruning third party files...~%") | ||||
|                      (force-output) | ||||
|                      (apply invoke "python" | ||||
|  | @ -458,7 +500,6 @@ from forcing GEXP-PROMISE." | |||
|              "is_clang=false" | ||||
|              ;; Disable debugging features to save space.  These are normally | ||||
|              ;; pulled in by "is_official_build", but that requires "is_clang". | ||||
|              "blink_symbol_level=0" | ||||
|              "enable_iterator_debugging=false" | ||||
|              "exclude_unwind_tables=true" | ||||
|              ;; Optimize for building everything at once, as opposed to | ||||
|  | @ -488,7 +529,7 @@ from forcing GEXP-PROMISE." | |||
|                    '("use_vaapi=true") | ||||
|                    '()) | ||||
| 
 | ||||
|              ;; Don't arbitrarily restrict formats supported by system ffmpeg. | ||||
|              ;; Do not artifically restrict formats supported by system ffmpeg. | ||||
|              "proprietary_codecs=true" | ||||
|              "ffmpeg_branding=\"Chrome\"" | ||||
| 
 | ||||
|  | @ -561,12 +602,12 @@ from forcing GEXP-PROMISE." | |||
|              (substitute* "third_party/webrtc/rtc_base/strings/json.h" | ||||
|                (("#include \"third_party/jsoncpp/") "#include \"json/")) | ||||
| 
 | ||||
|              (substitute* '("ui/gfx/skia_util.h" | ||||
|              (substitute* '("components/viz/common/gpu/vulkan_context_provider.h" | ||||
|                             "components/viz/common/resources/resource_format_utils.h") | ||||
|                (("third_party/vulkan/include/") "")) | ||||
| 
 | ||||
|              (substitute* "third_party/skia/include/gpu/vk/GrVkVulkan.h" | ||||
|                (("\\.\\./\\.\\./include/third_party/vulkan/") "")) | ||||
|                (("include/third_party/vulkan/") "")) | ||||
| 
 | ||||
|              ;; Building chromedriver embeds some files using the ZIP | ||||
|              ;; format which doesn't support timestamps before | ||||
|  | @ -587,6 +628,9 @@ from forcing GEXP-PROMISE." | |||
|              (setenv "AR" "ar") (setenv "NM" "nm") | ||||
|              (setenv "CC" "gcc") (setenv "CXX" "g++") | ||||
| 
 | ||||
|              ;; Prevent GCC from optimizing away null pointer safety checks. | ||||
|              (setenv "CXXFLAGS" "-fno-delete-null-pointer-checks") | ||||
| 
 | ||||
|              ;; Work around <https://bugs.gnu.org/30756>. | ||||
|              (unsetenv "C_INCLUDE_PATH") | ||||
|              (unsetenv "CPLUS_INCLUDE_PATH") | ||||
|  |  | |||
|  | @ -1363,14 +1363,14 @@ or junctions, and always follows hard links.") | |||
| (define-public zstd | ||||
|   (package | ||||
|     (name "zstd") | ||||
|     (version "1.4.1") | ||||
|     (version "1.4.2") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "https://github.com/facebook/zstd/releases/download/" | ||||
|                            "v" version "/zstd-" version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 "180sfl0iz5hy43xcr0gh8kz2vxgpb8rh5d7wmpxn3bxkgs320l2k")))) | ||||
|         (base32 "1ja3nrjynmiwwdjrf6crraizkbagp7y414bqqq2ady91nn1hjwqj")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (outputs '("out"                    ;1.1MiB executables and documentation | ||||
|                "lib"                    ;1MiB shared library and headers | ||||
|  |  | |||
|  | @ -118,6 +118,51 @@ experiment that allows a generic to warn if any arguments passed in @code{...} | |||
| are not used.") | ||||
|     (license license:gpl3))) | ||||
| 
 | ||||
| (define-public r-grr | ||||
|   (package | ||||
|     (name "r-grr") | ||||
|     (version "0.9.5") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (cran-uri "grr" version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0arbcgrvhkwb5xk4nry1ffg2qj0v8ivhjghdr505ib4357g0c9i9")))) | ||||
|     (build-system r-build-system) | ||||
|     (home-page "https://cran.r-project.org/web/packages/grr") | ||||
|     (synopsis "Alternative implementations of base R functions") | ||||
|     (description | ||||
|      "This package provides alternative implementations of some base R | ||||
| functions, including @code{sort}, @code{order}, and @code{match}.  The | ||||
| functions are simplified but can be faster or have other advantages.") | ||||
|     (license license:gpl3))) | ||||
| 
 | ||||
| (define-public r-matrix-utils | ||||
|   (package | ||||
|     (name "r-matrix-utils") | ||||
|     (version "0.9.7") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (cran-uri "Matrix.utils" version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1x64r4aj3gy1dzjjysyrk1j9jq3qsnyrqws8i6bs7q8pf6gvr7va")))) | ||||
|     (properties `((upstream-name . "Matrix.utils"))) | ||||
|     (build-system r-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("r-grr" ,r-grr) | ||||
|        ("r-matrix" ,r-matrix))) | ||||
|     (home-page "https://github.com/cvarrichio/Matrix.utils") | ||||
|     (synopsis | ||||
|      "Data.frame-Like Operations on Sparse and Dense Matrix Objects") | ||||
|     (description | ||||
|      "This package implements data manipulation methods such as @code{cast}, | ||||
| @code{aggregate}, and @code{merge}/@code{join} for Matrix and Matrix-like | ||||
| objects.") | ||||
|     (license license:gpl3))) | ||||
| 
 | ||||
| (define-public r-sys | ||||
|   (package | ||||
|     (name "r-sys") | ||||
|  | @ -822,6 +867,121 @@ this gives the user direct access to the file system without the need to | |||
| well as file saving is available.") | ||||
|     (license license:gpl2+))) | ||||
| 
 | ||||
| ;; The package sources include minified variants of d3.js and non-minified | ||||
| ;; source code of d3-jetpack. | ||||
| (define-public r-d3r | ||||
|   (package | ||||
|     (name "r-d3r") | ||||
|     (version "0.8.6") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (cran-uri "d3r" version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0vcmiyhd000xyl28k6rm7ba50x5sz5b2cpllxnq36q13qhdnqw6k")))) | ||||
|     (build-system r-build-system) | ||||
|     (arguments | ||||
|      `(#:modules ((guix build utils) | ||||
|                   (guix build r-build-system) | ||||
|                   (srfi srfi-1) | ||||
|                   (ice-9 popen)) | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-after 'unpack 'process-javascript | ||||
|            (lambda* (#:key inputs #:allow-other-keys) | ||||
|              (with-directory-excursion "inst/www/d3/" | ||||
|                (call-with-values | ||||
|                    (lambda () | ||||
|                      (unzip2 | ||||
|                       `((,(assoc-ref inputs "d3.v3.js") | ||||
|                          "v3/dist/d3.min.js") | ||||
|                         (,(assoc-ref inputs "d3.v4.js") | ||||
|                          "v4/dist/d3.min.js") | ||||
|                         (,(assoc-ref inputs "d3.v5.js") | ||||
|                          "v5/dist/d3.min.js")))) | ||||
|                  (lambda (sources targets) | ||||
|                    (for-each (lambda (source target) | ||||
|                                (format #t "Processing ~a --> ~a~%" | ||||
|                                        source target) | ||||
|                                (delete-file target) | ||||
|                                (let ((minified (open-pipe* OPEN_READ "uglify-js" source))) | ||||
|                                  (call-with-output-file target | ||||
|                                    (lambda (port) | ||||
|                                      (dump-port minified port))))) | ||||
|                              sources targets)))) | ||||
|              #t))))) | ||||
|     (propagated-inputs | ||||
|      `(("r-dplyr" ,r-dplyr) | ||||
|        ("r-htmltools" ,r-htmltools) | ||||
|        ("r-tidyr" ,r-tidyr))) | ||||
|     (native-inputs | ||||
|      `(("uglify-js" ,uglify-js) | ||||
|        ("d3.v3.js" | ||||
|         ,(origin | ||||
|            (method url-fetch) | ||||
|            (uri "https://d3js.org/d3.v3.js") | ||||
|            (sha256 | ||||
|             (base32 | ||||
|              "1arr7sr08vy7wh0nvip2mi7dpyjw4576vf3bm45rp4g5lc1k1x41")))) | ||||
|        ("d3.v4.js" | ||||
|         ,(origin | ||||
|            (method url-fetch) | ||||
|            (uri "https://d3js.org/d3.v4.js") | ||||
|            (sha256 | ||||
|             (base32 | ||||
|              "0y7byf6kcinfz9ac59jxc4v6kppdazmnyqfav0dm4h550fzfqqlg")))) | ||||
|        ("d3.v5.js" | ||||
|         ,(origin | ||||
|            (method url-fetch) | ||||
|            (uri "https://d3js.org/d3.v5.js") | ||||
|            (sha256 | ||||
|             (base32 | ||||
|              "0kxvx5pfagxn6nhavdwsdnzyd26g0z5dsfi1pi5dvcmb0c8ipcdn")))))) | ||||
|     (home-page "https://github.com/timelyportfolio/d3r") | ||||
|     (synopsis "d3.js utilities for R") | ||||
|     (description | ||||
|      "This package provides a suite of functions to help ease the use of the | ||||
| d3.js visualization library in R.  These helpers include | ||||
| @code{htmltools::htmlDependency} functions, hierarchy builders, and conversion | ||||
| tools for @code{partykit}, @code{igraph}, @code{table}, and @code{data.frame} | ||||
| R objects into the JSON format that the d3.js library expects.") | ||||
|     (license license:bsd-3))) | ||||
| 
 | ||||
| ;; We use the latest commit here because the last release was in 2016 while | ||||
| ;; the latest commit was in 2018. | ||||
| (define-public r-sankeyd3 | ||||
|   (let ((commit "fd50a74e29056e0d67d75b4d04de47afb2f932bc") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (name "r-sankeyd3") | ||||
|       (version (git-version "0.3.2" revision commit)) | ||||
|       (source | ||||
|        (origin | ||||
|          (method git-fetch) | ||||
|          (uri (git-reference | ||||
|                (url "https://github.com/fbreitwieser/sankeyD3.git") | ||||
|                (commit commit))) | ||||
|          (file-name (git-file-name name version)) | ||||
|          (sha256 | ||||
|           (base32 | ||||
|            "0jrcnfax321pszbpjdifnkbrgbjr43bjzvlzv1p5a8wskksqwiyx")))) | ||||
|       (build-system r-build-system) | ||||
|       (propagated-inputs | ||||
|        `(("r-d3r" ,r-d3r) | ||||
|          ("r-htmlwidgets" ,r-htmlwidgets) | ||||
|          ("r-shiny" ,r-shiny) | ||||
|          ("r-magrittr" ,r-magrittr))) | ||||
|       (home-page "https://github.com/fbreitwieser/sankeyD3") | ||||
|       (synopsis "Sankey network graphs from R") | ||||
|       (description | ||||
|        "This package provides an R library to generate Sankey network graphs | ||||
| in R and Shiny via the D3 visualization library.") | ||||
|       ;; The R code is licensed under GPLv3+.  It includes the non-minified | ||||
|       ;; JavaScript source code of d3-sankey, which is released under the | ||||
|       ;; 3-clause BSD license. | ||||
|       (license (list license:gpl3+ license:bsd-3))))) | ||||
| 
 | ||||
| (define-public r-crosstalk | ||||
|   (package | ||||
|     (name "r-crosstalk") | ||||
|  | @ -8675,6 +8835,29 @@ package provides a minimal R interface by relying on the Rcpp package.") | |||
|     ;; hnswlib is released under Version 2.0 of the Apache License. | ||||
|     (license (list license:gpl3 license:asl2.0)))) | ||||
| 
 | ||||
| (define-public r-rcppparallel | ||||
|   (package | ||||
|     (name "r-rcppparallel") | ||||
|     (version "4.4.3") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (cran-uri "RcppParallel" version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1ym0bzs9g6bsg2lz24fisxxa3gypr6xcvrczn304czmrrag9413s")))) | ||||
|     (properties `((upstream-name . "RcppParallel"))) | ||||
|     (build-system r-build-system) | ||||
|     (home-page "http://rcppcore.github.io/RcppParallel") | ||||
|     (synopsis "Parallel programming tools for Rcpp") | ||||
|     (description | ||||
|      "This package provides high level functions for parallel programming with | ||||
| Rcpp.  For example, the @code{parallelFor()} function can be used to convert | ||||
| the work of a standard serial @code{for} loop into a parallel one and the | ||||
| @code{parallelReduce()} function can be used for accumulating aggregates or | ||||
| other values.") | ||||
|     (license license:gpl2))) | ||||
| 
 | ||||
| (define-public r-ncdf4 | ||||
|   (package | ||||
|     (name "r-ncdf4") | ||||
|  | @ -9279,6 +9462,29 @@ only sparse real matrices in Matrix package format are supported.") | |||
|     ;; BSD-3. | ||||
|     (license (list license:bsd-3 license:bsd-2)))) | ||||
| 
 | ||||
| (define-public r-speedglm | ||||
|   (package | ||||
|     (name "r-speedglm") | ||||
|     (version "0.3-2") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (cran-uri "speedglm" version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1b25zimk0z7ad62yacqdg0zk0qs0jja4i918ym942xfw4j1z3jjz")))) | ||||
|     (build-system r-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("r-mass" ,r-mass) | ||||
|        ("r-matrix" ,r-matrix))) | ||||
|     (home-page "https://cran.r-project.org/web/packages/speedglm") | ||||
|     (synopsis "Fit linear and generalized linear models to large data sets") | ||||
|     (description | ||||
|      "This package provides tools for fitting linear models and generalized | ||||
| linear models to large data sets by updating algorithms.") | ||||
|     ;; Any version of the GPL | ||||
|     (license license:gpl2+))) | ||||
| 
 | ||||
| (define-public r-densityclust | ||||
|   (package | ||||
|     (name "r-densityclust") | ||||
|  | @ -14199,6 +14405,25 @@ Molecular Epidemiology\" (SCRIME).  The main focus is on SNP data, but most of | |||
| the functions can also be applied to other types of categorical data.") | ||||
|     (license license:gpl2))) | ||||
| 
 | ||||
| (define-public r-pbmcapply | ||||
|   (package | ||||
|     (name "r-pbmcapply") | ||||
|     (version "1.5.0") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (cran-uri "pbmcapply" version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0i58gcqpnbyvc448qfgm45b7rpbmrnagsvk1h1hsqchbbicfslnz")))) | ||||
|     (build-system r-build-system) | ||||
|     (home-page "https://github.com/kvnkuang/pbmcapply") | ||||
|     (synopsis "Track the progress of apply procedures with a progress bar") | ||||
|     (description | ||||
|      "This light-weight package helps you track and visualize the progress of | ||||
| parallel versions of vectorized R functions of the @code{mc*apply} family.") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public r-blme | ||||
|   (package | ||||
|     (name "r-blme") | ||||
|  | @ -14555,6 +14780,38 @@ dimension reduction.  This package provides an interface to the UMAP algorithm | |||
| in R, including a translation of the original algorithm into R.") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public r-uwot | ||||
|   (package | ||||
|     (name "r-uwot") | ||||
|     (version "0.1.3") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (cran-uri "uwot" version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1mq6qi8q9xslh1b99srj480s2a08pfv4bs9m2ykyijj44j9fcdj9")))) | ||||
|     (build-system r-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("r-dqrng" ,r-dqrng) | ||||
|        ("r-fnn" ,r-fnn) | ||||
|        ("r-irlba" ,r-irlba) | ||||
|        ("r-matrix" ,r-matrix) | ||||
|        ("r-rcpp" ,r-rcpp) | ||||
|        ("r-rcppannoy" ,r-rcppannoy) | ||||
|        ("r-rcppparallel" ,r-rcppparallel) | ||||
|        ("r-rcppprogress" ,r-rcppprogress) | ||||
|        ("r-rspectra" ,r-rspectra))) | ||||
|     (home-page "https://github.com/jlmelville/uwot") | ||||
|     (synopsis "Uniform manifold approximation and projection") | ||||
|     (description | ||||
|      "This package provides an implementation of the Uniform Manifold | ||||
| Approximation and Projection dimensionality reduction by McInnes et | ||||
| al. (2018).  It also provides means to transform new data and to carry out | ||||
| supervised dimensionality reduction.  An implementation of the related | ||||
| LargeVis method of Tang et al. (2016) is also provided.") | ||||
|     (license license:gpl3))) | ||||
| 
 | ||||
| (define-public r-kableextra | ||||
|   (package | ||||
|     (name "r-kableextra") | ||||
|  | @ -14593,3 +14850,45 @@ This package simplifies the way to manipulate the HTML or LaTeX codes | |||
| generated by @code{kable()} and allows users to construct complex tables and | ||||
| customize styles using a readable syntax.") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public r-glasso | ||||
|   (package | ||||
|     (name "r-glasso") | ||||
|     (version "1.10") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (cran-uri "glasso" version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0nshpx14v2yny7lr8ll6nnz71n0f02sddh2c2dglfprbk89p9yp6")))) | ||||
|     (build-system r-build-system) | ||||
|     (native-inputs `(("gfortran" ,gfortran))) | ||||
|     (home-page "http://www-stat.stanford.edu/~tibs/glasso") | ||||
|     (synopsis "Graphical Lasso: estimation of Gaussian graphical models") | ||||
|     (description | ||||
|      "This is a package for estimation of a sparse inverse covariance matrix | ||||
| using a lasso (L1) penalty.  Facilities are provided for estimates along a | ||||
| path of values for the regularization parameter.") | ||||
|     (license license:gpl2))) | ||||
| 
 | ||||
| (define-public r-rhpcblasctl | ||||
|   (package | ||||
|     (name "r-rhpcblasctl") | ||||
|     (version "0.18-205") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (cran-uri "RhpcBLASctl" version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1ls2286fvrp1g7p8v4l6axznychh3qndranfpzqz806cm9ml1cdp")))) | ||||
|     (properties `((upstream-name . "RhpcBLASctl"))) | ||||
|     (build-system r-build-system) | ||||
|     (home-page "http://prs.ism.ac.jp/~nakama/Rhpc/") | ||||
|     (synopsis "Control the number of threads on BLAS") | ||||
|     (description | ||||
|      "This package allows you to control the number of threads the BLAS | ||||
| library uses.  It is also possible to control the number of threads in | ||||
| OpenMP.") | ||||
|     (license license:agpl3+))) | ||||
|  |  | |||
|  | @ -131,16 +131,15 @@ communication, encryption, decryption, signatures, etc.") | |||
| (define-public signify | ||||
|   (package | ||||
|     (name "signify") | ||||
|     (version "25") | ||||
|     (version "26") | ||||
|     (home-page "https://github.com/aperezdc/signify") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference (url home-page) | ||||
|                                   (commit (string-append "v" version)))) | ||||
|               (file-name (git-file-name name version)) | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "https://github.com/aperezdc/signify/releases" | ||||
|                                   "/download/v" version "/signify-" version ".tar.xz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0zg0rffxwj2a71s1bllhrn491xsmirg9sshpq8f3vl25lv4c2cnq")))) | ||||
|                 "16sl1yq5bbsads5q4a0fbrf31b0x8r1hi4wagl90nbrhrca98baw")))) | ||||
|     (build-system gnu-build-system) | ||||
|     ;; TODO Build with libwaive (described in README.md), to implement something | ||||
|     ;; like OpenBSD's pledge(). | ||||
|  |  | |||
|  | @ -218,7 +218,7 @@ It comes with a German-English dictionary with approximately 270,000 entries.") | |||
| (define-public grammalecte | ||||
|   (package | ||||
|     (name "grammalecte") | ||||
|     (version "1.2") | ||||
|     (version "1.2.1") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch/zipbomb) | ||||
|  | @ -226,7 +226,7 @@ It comes with a German-English dictionary with approximately 270,000 entries.") | |||
|                            "Grammalecte-fr-v" version ".zip")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0dwizai6w9yn617y7cnqdiwv77vn22p18s9sypypbl1bl695cnma")))) | ||||
|          "1j2avdk8hcgcv0lahp029qzpdb2rnys38hc64jy30awzx64fa6i4")))) | ||||
|     (build-system python-build-system) | ||||
|     (home-page "https://grammalecte.net") | ||||
|     (synopsis  "French spelling and grammar checker") | ||||
|  |  | |||
|  | @ -12,6 +12,7 @@ | |||
| ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> | ||||
| ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> | ||||
| ;;; Copyright © 2019 Chris Marusich <cmmarusich@gmail.com> | ||||
| ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -372,14 +373,14 @@ to result in system-wide compromise.") | |||
| (define-public unbound | ||||
|   (package | ||||
|     (name "unbound") | ||||
|     (version "1.9.1") | ||||
|     (version "1.9.2") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "https://www.unbound.net/downloads/unbound-" | ||||
|                            version ".tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 "1iarvk0i92asvrkpla9z55aan20k6pklzpck9yk4rfnchsdvzh63")))) | ||||
|         (base32 "15bbrczibap30db8a1pmqhvjbmkxms39hwiivby7f4j5rz2wwykg")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (outputs '("out" "python")) | ||||
|     (native-inputs | ||||
|  |  | |||
|  | @ -586,6 +586,9 @@ provisioning etc.") | |||
|              ;; information, and the DWARF symbol table. | ||||
|              (setenv "LDFLAGS" "-s -w") | ||||
| 
 | ||||
|              ;; Make sure "docker -v" prints a usable version string. | ||||
|              (setenv "VERSION" ,%docker-version) | ||||
| 
 | ||||
|              ;; Make build reproducible. | ||||
|              (setenv "BUILDTIME" "1970-01-01 00:00:01.000000000+00:00") | ||||
|              (symlink "src/github.com/docker/cli/scripts" "./scripts") | ||||
|  |  | |||
|  | @ -250,7 +250,7 @@ easy.") | |||
| (define-public snap | ||||
|   (package | ||||
|     (name "snap") | ||||
|     (version "5.0.4") | ||||
|     (version "5.0.8") | ||||
|     (source | ||||
|      (origin | ||||
|        (method git-fetch) | ||||
|  | @ -260,7 +260,7 @@ easy.") | |||
|        (file-name (git-file-name name version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1zdypxifvxjkzhi4n9mkck8l419wc0pg103339yzhsbb9kkd3jlr")))) | ||||
|          "0fwfssdgv3mfzyv8hw1a1z5ky1yn0p59kyl6l9fxsm4w2ckgyizd")))) | ||||
|     (build-system trivial-build-system) | ||||
|     (arguments | ||||
|      `(#:modules ((guix build utils)) | ||||
|  |  | |||
|  | @ -50,6 +50,7 @@ | |||
| ;;; Copyright © 2019 Amar Singh <nly@disroot.org> | ||||
| ;;; Copyright © 2019 Baptiste Strazzulla <bstrazzull@hotmail.fr> | ||||
| ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autitici.org> | ||||
| ;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -948,6 +949,33 @@ regexp-like arguments to @code{skip-chars-forward} and | |||
| @code{skip-chars-backward}.") | ||||
|     (license license:gpl3+))) | ||||
| 
 | ||||
| (define-public emacs-bug-hunter | ||||
|   (let ((commit "b88d981afa9154b236c5a3a83b50d5889d46c6a7") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (name "emacs-bug-hunter") | ||||
|       (version (git-version "1.3.1" revision commit)) | ||||
|       (source | ||||
|        (origin | ||||
|          (method git-fetch) | ||||
|          (uri (git-reference | ||||
|                (url "https://github.com/Malabarba/elisp-bug-hunter.git") | ||||
|                (commit commit))) | ||||
|          (file-name (git-file-name name commit)) | ||||
|          (sha256 | ||||
|           (base32 | ||||
|            "134fj493sdn93pyyac8rpz1fzahzmayvphsrmqp3wvgysmfqm38l")))) | ||||
|       (build-system emacs-build-system) | ||||
|       (propagated-inputs | ||||
|        `(("emacs-seq" ,emacs-seq))) | ||||
|       (home-page "https://github.com/Malabarba/elisp-bug-hunter") | ||||
|       (synopsis "Hunt down errors by bisecting elisp files") | ||||
|       (description | ||||
|        "The Bug Hunter is an Emacs library that finds the source of an error | ||||
| or unexpected behavior inside an elisp configuration file (typically | ||||
| @file{init.el} or @file{.emacs}).") | ||||
|       (license license:gpl3+)))) | ||||
| 
 | ||||
|  | ||||
| ;;; | ||||
| ;;; Web browsing. | ||||
|  | @ -10454,30 +10482,27 @@ tables of contents.") | |||
|     (license license:gpl3+))) | ||||
| 
 | ||||
| (define-public emacs-org-ql | ||||
|   (let ((commit "0aec8ec60395197b2ef2b885c216cf84286efed9") | ||||
|         (version "0.1-pre") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (name "emacs-org-ql") | ||||
|       (version (git-version version revision commit)) | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                       (url "https://github.com/alphapapa/org-ql") | ||||
|                       (commit commit))) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "0bj85hxhym7rvkaddcxybxdm7g7w439wij9f2w5ljz1hmvp55991")) | ||||
|                 (file-name (git-file-name name version)))) | ||||
|       (build-system emacs-build-system) | ||||
|       (propagated-inputs | ||||
|        `(("emacs-s" ,emacs-s) | ||||
|          ("emacs-dash" ,emacs-dash))) | ||||
|       (home-page "https://github.com/alphapapa/org-ql") | ||||
|       (synopsis "Query language for Org buffers") | ||||
|       (description "This package provides a Lispy query language for Org | ||||
|   (package | ||||
|     (name "emacs-org-ql") | ||||
|     (version "0.1") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url "https://github.com/alphapapa/org-ql") | ||||
|                     (commit version))) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1nvzirn1lmgmgl7irbsc1n391a2cw8gmvwm3pa228l2c1gcx8kd8")) | ||||
|               (file-name (git-file-name name version)))) | ||||
|     (build-system emacs-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("emacs-s" ,emacs-s) | ||||
|        ("emacs-dash" ,emacs-dash))) | ||||
|     (home-page "https://github.com/alphapapa/org-ql/") | ||||
|     (synopsis "Query language for Org buffers") | ||||
|     (description "This package provides a Lispy query language for Org | ||||
| files, allowing for actions to be performed based on search criteria.") | ||||
|       (license license:gpl3+)))) | ||||
|     (license license:gpl3+))) | ||||
| 
 | ||||
| (define-public emacs-parsebib | ||||
|   (package | ||||
|  | @ -16656,6 +16681,26 @@ Org-mode (the notes may have outlines, latex fragments, babel, etc...) while | |||
| acting like notes that are made @emph{in} the document.") | ||||
|     (license license:gpl3+))) | ||||
| 
 | ||||
| (define-public emacs-org-redmine | ||||
|   (let ((commit "e77d013bc3784947c46a5c53f03cd7d3c68552fc")) | ||||
|     (package | ||||
|       (name "emacs-org-redmine") | ||||
|       (version (git-version "0.1" "1" commit)) | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                       (url "https://github.com/gongo/org-redmine.git") | ||||
|                       (commit commit))) | ||||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "06miv3mf2a39vkf6mmm5ssc47inqh7dq82khsyc03anz4d4lj822")))) | ||||
|       (build-system emacs-build-system) | ||||
|       (home-page "https://github.com/gongo/org-redmine/") | ||||
|       (synopsis "Redmine tools using Emacs") | ||||
|       (description "This program provides an Emacs client for Redmine.") | ||||
|       (license license:gpl3+)))) | ||||
| 
 | ||||
| (define-public emacs-multi-term | ||||
|   (let ((commit "0804b11e52b960c80f5cd0712ee1e53ae70d83a4")) | ||||
|     (package | ||||
|  | @ -16747,3 +16792,137 @@ connections using TLS encryption.") | |||
|      "Zerodark is a dark theme inspired from One Dark and Niflheim. | ||||
| An optional mode-line format can be enabled with @code{zerodark-setup-modeline-format}.") | ||||
|     (license license:gpl3+))) | ||||
| 
 | ||||
| (define-public emacs-gnus-alias | ||||
|   (package | ||||
|     (name "emacs-gnus-alias") | ||||
|     (version "20150316") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url "https://github.com/hexmode/gnus-alias.git") | ||||
|                     (commit "9447d3ccb4c0e75d0468899cccff7aa249657bac"))) | ||||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1i278npayv3kfxxd1ypi9n83q5l402sbc1zkm11pf8g006ifqsp4")))) | ||||
|     (build-system emacs-build-system) | ||||
|     (home-page "https://melpa.org/#/gnus-alias") | ||||
|     (synopsis "Alternative to @code{gnus-posting-styles}") | ||||
|     (description "This Emacs add-on provides a simple mechanism to switch | ||||
| Identities when using a @code{message-mode} or a @code{message-mode} derived | ||||
| mode.  Identities can include @code{From} and @code{Organisation} headers, | ||||
| extra headers, body and signature.  Other features include: | ||||
| 
 | ||||
| @itemize | ||||
| @item Switch Identities in a message buffer. | ||||
| @item Access original message to help determine Identity of the followup/reply | ||||
| message. | ||||
| @item Act on a forwarded message as if it were a message being replied to. | ||||
| @item Start a new message with a given Identity pre-selected. | ||||
| @end itemize") | ||||
|     (license license:gpl2+))) | ||||
| 
 | ||||
| (define-public emacs-ox-epub | ||||
|   (package | ||||
|     (name "emacs-ox-epub") | ||||
|     (version "0.3") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url "https://github.com/ofosos/ox-epub.git") | ||||
|                     (commit (string-append "v" version)))) | ||||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "057sqmvm8hwkhcg3yd4i8zz2xlqsqrpyiklyiw750s3i5mxdn0k7")))) | ||||
|     (build-system emacs-build-system) | ||||
|     (home-page "https://github.com/ofosos/ox-epub") | ||||
|     (synopsis "Export org mode projects to EPUB") | ||||
|     (description "@code{ox-epub} extends the (X)HTML exporter to generate | ||||
| @code{.epub} files directly from OrgMode.  This will export EPUB version 2, | ||||
| which should give broad compatibility.  It should also be relatiely easy to | ||||
| convert the resulting @code{.epub} to a @code{.mobi} file.  Needs a working | ||||
| zip utility (default is @code{zip}).") | ||||
|     (license license:gpl3+))) | ||||
| 
 | ||||
| (define-public emacs-ox-pandoc | ||||
|   (package | ||||
|     (name "emacs-ox-pandoc") | ||||
|     (version "20180510") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url "https://github.com/kawabata/ox-pandoc.git") | ||||
|                     (commit "aa37dc7e94213d4ebedb85c384c1ba35007da18e"))) | ||||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0iibxplgdp34bpq1yll2gmqjd8d8lnqn4mqjvx6cdf0y438yr4jz")))) | ||||
|     (build-system emacs-build-system) | ||||
|     (inputs | ||||
|      `(("pandoc" ,ghc-pandoc))) | ||||
|     (propagated-inputs | ||||
|      `(("emacs-dash" ,emacs-dash) | ||||
|        ("emacs-ht" ,emacs-ht))) | ||||
|     (home-page "https://github.com/kawabata/ox-pandoc") | ||||
|     (synopsis "Org exporter for Pandoc") | ||||
|     (description "@code{ox-pandoc} is an exporter for converting Org-mode | ||||
| files to numerous other formats via Pandoc.") | ||||
|     (license license:gpl3+))) | ||||
| 
 | ||||
| (define-public emacs-wc-mode | ||||
|   (package | ||||
|     (name "emacs-wc-mode") | ||||
|     (version "1.3") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url "https://github.com/bnbeckwith/wc-mode.git") | ||||
|                     (commit (string-append "v" version)))) | ||||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0pjlxv46zzqdq6q131jb306vqlg4sfqls1x8vag7mmfw462hafqp")))) | ||||
|     (build-system emacs-build-system) | ||||
|     (home-page "https://github.com/bnbeckwith/wc-mode") | ||||
|     (synopsis "Running word count with goals (minor mode)") | ||||
|     (description "@code{wc-mode} is a minor mode, providing a ‘wc’ function | ||||
| for Emacs buffers as well as a modeline addition with live word, line and | ||||
| character counts.  Additionally, a user can set specific goals for adding or | ||||
| deleting words.  These goals were partly inspired by 750words.com where the | ||||
| goal of the site is to encourage writing by setting a goal of 750 words at a | ||||
| time.") | ||||
|     (license license:gpl3+))) | ||||
| 
 | ||||
| (define-public emacs-mastodon | ||||
|   (package | ||||
|     (name "emacs-mastodon") | ||||
|     (version "0.9.0") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url "https://github.com/jdenen/mastodon.el.git") | ||||
|                     (commit version))) | ||||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0hwax6y9dghqwsbnb6f1bnc7gh8xsh5cvcnayk2sn49x8b0zi5h1")))) | ||||
|     (build-system emacs-build-system) | ||||
|     (arguments | ||||
|      `(#:phases | ||||
|        (modify-phases %standard-phases | ||||
|          ;; Move the source files to the top level, which is included in | ||||
|          ;; the EMACSLOADPATH. | ||||
|          (add-after 'unpack 'move-source-files | ||||
|            (lambda _ | ||||
|              (let ((el-files (find-files "./lisp" ".*\\.el$"))) | ||||
|                (for-each (lambda (f) | ||||
|                            (rename-file f (basename f))) | ||||
|                          el-files)) | ||||
|              #t))))) | ||||
|     (home-page "https://github.com/jdenen/mastodon.el") | ||||
|     (synopsis "Emacs client for Mastodon") | ||||
|     (description "@code{mastodon.el} is an Emacs client for Mastodon, the | ||||
| federated microblogging social network.") | ||||
|     (license license:gpl3+))) | ||||
|  |  | |||
|  | @ -13,6 +13,7 @@ | |||
| ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> | ||||
| ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net> | ||||
| ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org> | ||||
| ;;; Copyright © 2019 Martin Becze <mjbecze@riseup.net> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -38,6 +39,7 @@ | |||
|   #:use-module (guix build-system cmake) | ||||
|   #:use-module (guix build-system python) | ||||
|   #:use-module (guix build-system glib-or-gtk) | ||||
|   #:use-module (guix build-system go) | ||||
|   #:use-module (guix utils) | ||||
|   #:use-module (gnu packages) | ||||
|   #:use-module (gnu packages base) | ||||
|  | @ -712,9 +714,6 @@ the Monero GUI client.") | |||
| Ledger Nano as a hardware SSH/GPG agent.") | ||||
|     (license license:lgpl3))) | ||||
| 
 | ||||
| (define-public python2-trezor-agent | ||||
|   (package-with-python2 python-trezor-agent)) | ||||
| 
 | ||||
| (define-public python-mnemonic | ||||
|   (package | ||||
|     (name "python-mnemonic") | ||||
|  | @ -810,9 +809,6 @@ Ledger Blue/Nano S.") | |||
| TREZOR Hardware Wallet.") | ||||
|     (license license:lgpl3))) | ||||
| 
 | ||||
| (define-public python2-trezor | ||||
|   (package-with-python2 python-trezor)) | ||||
| 
 | ||||
| (define-public python-keepkey | ||||
|   (package | ||||
|     (name "python-keepkey") | ||||
|  | @ -962,7 +958,7 @@ Luhn and family of ISO/IEC 7064 check digit algorithms. ") | |||
| (define-public python-duniterpy | ||||
|   (package | ||||
|     (name "python-duniterpy") | ||||
|     (version "0.54.3") | ||||
|     (version "0.55.1") | ||||
|     (source | ||||
|      (origin | ||||
|        (method git-fetch) | ||||
|  | @ -973,7 +969,7 @@ Luhn and family of ISO/IEC 7064 check digit algorithms. ") | |||
|        (file-name (git-file-name name version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1k3rpfc9zxj9z50cr4zjfyzdla9ap5mj1v1rlcriqmflgb5cmiba")))) | ||||
|          "07zsbbkzmnvyv5v0vw2d42vw3ar4iqhlidy9376ysk4ldlj1igf7")))) | ||||
|     (build-system python-build-system) | ||||
|     (arguments | ||||
|      ;; Tests fail with "AttributeError: module 'attr' has no attribute 's'". | ||||
|  | @ -1020,7 +1016,7 @@ main features are: | |||
| (define-public silkaj | ||||
|   (package | ||||
|     (name "silkaj") | ||||
|     (version "0.7.2") | ||||
|     (version "0.7.3") | ||||
|     (source | ||||
|      (origin | ||||
|        (method git-fetch) | ||||
|  | @ -1030,7 +1026,7 @@ main features are: | |||
|        (file-name (git-file-name name version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "059k2kil2l8jcm4wp86w1z7y8p26rww7d3l5fzds0qq2dzvkvzgs")))) | ||||
|          "0yk2574yb0d0k0rg7qf0pkmjidblsad04x8hhqpy9k80rvgjcr5w")))) | ||||
|     (build-system python-build-system) | ||||
|     (arguments | ||||
|      `(#:tests? #f))                    ;no test | ||||
|  | @ -1092,3 +1088,26 @@ financial years, budget estimates, bankcard management and other | |||
| information.") | ||||
|     (home-page "http://grisbi.org") | ||||
|     (license license:gpl2+))) | ||||
| 
 | ||||
| (define-public trezord | ||||
|   (package | ||||
|     (name "trezord") | ||||
|     (version "2.0.17") | ||||
|     (source | ||||
|      (origin | ||||
|        (method git-fetch) | ||||
|        (uri (git-reference | ||||
|               (url "https://github.com/trezor/trezord-go.git") | ||||
|               (commit (string-append "v" version)))) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0nqzpq0i3crh0i4r1cppja5sn3rwi1fv9afxzwzv63096x5l30a7")) | ||||
|        (file-name (git-file-name name version)))) | ||||
|     (build-system go-build-system) | ||||
|     (arguments | ||||
|      '(#:import-path "github.com/trezor/trezord-go")) | ||||
|     (home-page "https://trezor.io") | ||||
|     (synopsis "Trezor Communication Daemon aka Trezor Bridge (written in Go)") | ||||
|     (description "This allows a Trezor hardware wallet to communicate to the | ||||
| Trezor wallet.") | ||||
|     (license license:lgpl3+))) | ||||
|  |  | |||
|  | @ -616,7 +616,7 @@ definitions.") | |||
| opentype fonts.  You can save fonts in many different outline formats, and | ||||
| generate bitmaps.") | ||||
|    (license license:gpl3+) | ||||
|    (home-page "https://fontforge.github.io/en-US/"))) | ||||
|    (home-page "https://fontforge.github.io"))) | ||||
| 
 | ||||
| (define-public python2-ufolib | ||||
|   (package | ||||
|  |  | |||
|  | @ -6756,7 +6756,7 @@ fight each other on an arena-like map.") | |||
| (define-public flare-engine | ||||
|   (package | ||||
|     (name "flare-engine") | ||||
|     (version "1.10") | ||||
|     (version "1.11") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|  | @ -6765,7 +6765,7 @@ fight each other on an arena-like map.") | |||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "19l83145ya1wk666acr91b6917a63ak7l77d10i5im8xfhv29ml4")))) | ||||
|                 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8")))) | ||||
|     (build-system cmake-build-system) | ||||
|     (arguments | ||||
|      `(#:tests? #f                      ;no test | ||||
|  | @ -6784,7 +6784,7 @@ action RPGs.") | |||
| (define-public flare-game | ||||
|   (package | ||||
|     (name "flare-game") | ||||
|     (version "1.10") | ||||
|     (version "1.11") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|  | @ -6793,7 +6793,7 @@ action RPGs.") | |||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0dx4f1j1n3p4q3h0r0fb89f0llvhg9lia0s247pacff3r88ljihk")))) | ||||
|                 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p")))) | ||||
|     (build-system cmake-build-system) | ||||
|     (arguments | ||||
|      `(#:tests? #f                      ;no test | ||||
|  |  | |||
|  | @ -48,6 +48,8 @@ | |||
|   #:use-module (gnu packages pcre) | ||||
|   #:use-module (gnu packages lua) | ||||
|   #:use-module (gnu packages mp3) | ||||
|   #:use-module (gnu packages textutils) | ||||
|   #:use-module (gnu packages tls) | ||||
|   #:use-module (ice-9 match) | ||||
|   #:use-module (srfi srfi-1)) | ||||
| 
 | ||||
|  | @ -220,7 +222,7 @@ in the style of communicating sequential processes (@dfn{CSP}).") | |||
|   (package | ||||
|     (inherit go-1.4) | ||||
|     (name "go") | ||||
|     (version "1.11.10") | ||||
|     (version "1.11.12") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -228,7 +230,7 @@ in the style of communicating sequential processes (@dfn{CSP}).") | |||
|                            name version ".src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "06rw962xigbrxblp942jbh7k133blpxg2xfrxi32qdhxkmmfj9yz")))) | ||||
|          "09k9zmq7hhgg0bf1y7rwa0kn7q1vkkr94cmg2iv9lq3najh5nykd")))) | ||||
|     (arguments | ||||
|      (substitute-keyword-arguments (package-arguments go-1.4) | ||||
|        ((#:phases phases) | ||||
|  | @ -401,7 +403,7 @@ in the style of communicating sequential processes (@dfn{CSP}).") | |||
|   (package | ||||
|     (inherit go-1.4) | ||||
|     (name "go") | ||||
|     (version "1.12.1") | ||||
|     (version "1.12.7") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -409,7 +411,7 @@ in the style of communicating sequential processes (@dfn{CSP}).") | |||
|                            name version ".src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "12l12mmgqvy3nbscy7sz83qj4m6iz5a322aq9sk45f7l9ml2gq8b")))) | ||||
|          "04rvwj69gmw3bz8pw5pf10r21ar0pgpnswp15nkddf04dxyl9s4m")))) | ||||
|     (arguments | ||||
|      (substitute-keyword-arguments (package-arguments go-1.4) | ||||
|        ((#:phases phases) | ||||
|  | @ -582,7 +584,7 @@ in the style of communicating sequential processes (@dfn{CSP}).") | |||
|        ,@(package-native-inputs go-1.4))) | ||||
|     (supported-systems %supported-systems))) | ||||
| 
 | ||||
| (define-public go go-1.11) | ||||
| (define-public go go-1.12) | ||||
| 
 | ||||
| (define-public go-github-com-alsm-ioprogress | ||||
|   (let ((commit "063c3725f436e7fba0c8f588547bee21ffec7ac5") | ||||
|  | @ -768,6 +770,79 @@ expressing configuration which is easy for both humans and machines to read.") | |||
|       (home-page "https://github.com/hashicorp/hcl") | ||||
|       (license license:mpl2.0)))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-tools | ||||
|   (let ((commit "8b927904ee0dec805c89aaf9172f4459296ed6e8") | ||||
|         (revision "0")) | ||||
|     (package | ||||
|       (name "go-golang-org-x-tools") | ||||
|       (version (git-version "0.1.3" revision commit)) | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                       (url "https://go.googlesource.com/tools") | ||||
|                       (commit commit))) | ||||
|                 (file-name (string-append "go.googlesource.com-tools-" | ||||
|                                           version "-checkout")) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "0iinb70xhcjsddgi42ia1n745lx2ibnjdm6m2v666qrk3876vpck")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "golang.org/x/tools" | ||||
|          ;; Source-only package | ||||
|          #:tests? #f | ||||
|          #:phases | ||||
|          (modify-phases %standard-phases | ||||
|            ;; Source-only package | ||||
|            (delete 'build)))) | ||||
|       (synopsis "Tools that support the Go programming language") | ||||
|       (description "This package provides miscellaneous tools that support the | ||||
| Go programming language.") | ||||
|       (home-page "https://go.googlesource.com/tools/") | ||||
|       (license license:bsd-3)))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-crypto | ||||
|   (let ((commit "b7391e95e576cacdcdd422573063bc057239113d") | ||||
|         (revision "3")) | ||||
|     (package | ||||
|       (name "go-golang-org-x-crypto") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                       (url "https://go.googlesource.com/crypto") | ||||
|                       (commit commit))) | ||||
|                 (file-name (string-append "go.googlesource.com-crypto-" | ||||
|                                           version "-checkout")) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1jqfh81mhgwcc6b9l0bs6rb0707s01qpvn7896i5bsmig46lc7zm")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "golang.org/x/crypto" | ||||
|          ;; Source-only package | ||||
|          #:tests? #f | ||||
|          #:phases | ||||
|          (modify-phases %standard-phases | ||||
|            ;; Source-only package | ||||
|            (delete 'build) | ||||
|            (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable | ||||
|              (lambda* (#:key outputs #:allow-other-keys) | ||||
|                (map (lambda (file) | ||||
|                       (make-file-writable file)) | ||||
|                     (find-files | ||||
|                       (string-append (assoc-ref outputs "out") | ||||
|                                      "/src/golang.org/x/crypto/ed25519/testdata") | ||||
|                       ".*\\.gz$")) | ||||
|                #t))))) | ||||
|       (propagated-inputs | ||||
|        `(("go-golang-org-x-sys-cpu" ,go-golang-org-x-sys-cpu))) | ||||
|       (synopsis "Supplementary cryptographic libraries in Go") | ||||
|       (description "This package provides supplementary cryptographic libraries | ||||
| for the Go language.") | ||||
|       (home-page "https://go.googlesource.com/crypto/") | ||||
|       (license license:bsd-3)))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-crypto-bcrypt | ||||
|   (let ((commit "b7391e95e576cacdcdd422573063bc057239113d") | ||||
|         (revision "3")) | ||||
|  | @ -933,8 +1008,8 @@ fixed-output-length hash functions and the SHAKE variable-output-length hash | |||
| functions defined by FIPS-202."))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-net-ipv4 | ||||
|   (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0") | ||||
|         (revision "2")) | ||||
|   (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99") | ||||
|         (revision "3")) | ||||
|     (package | ||||
|       (name "go-golang-org-x-net-ipv4") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|  | @ -946,11 +1021,13 @@ functions defined by FIPS-202."))) | |||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k")))) | ||||
|                   "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "golang.org/x/net/ipv4" | ||||
|          #:unpack-path "golang.org/x/net")) | ||||
|       (propagated-inputs | ||||
|        `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix))) | ||||
|       (synopsis "Go IPv4 support") | ||||
|       (description "This package provides @code{ipv4}, which implements IP-level | ||||
| socket options for the Internet Protocol version 4.") | ||||
|  | @ -958,8 +1035,8 @@ socket options for the Internet Protocol version 4.") | |||
|       (license license:bsd-3)))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-net-bpf | ||||
|   (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0") | ||||
|         (revision "2")) | ||||
|   (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99") | ||||
|         (revision "3")) | ||||
|     (package | ||||
|       (name "go-golang-org-x-net-bpf") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|  | @ -972,11 +1049,13 @@ socket options for the Internet Protocol version 4.") | |||
|                                           version "-checkout")) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k")))) | ||||
|                   "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "golang.org/x/net/bpf" | ||||
|          #:unpack-path "golang.org/x/net")) | ||||
|       (propagated-inputs | ||||
|        `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix))) | ||||
|       (synopsis "Berkeley Packet Filters (BPF) in Go") | ||||
|       (description "This package provides a Go implementation of the Berkeley | ||||
| Packet Filter (BPF) virtual machine.") | ||||
|  | @ -984,8 +1063,8 @@ Packet Filter (BPF) virtual machine.") | |||
|       (license license:bsd-3)))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-net-context | ||||
|   (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0") | ||||
|         (revision "2")) | ||||
|   (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99") | ||||
|         (revision "3")) | ||||
|     (package | ||||
|       (name "go-golang-org-x-net-context") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|  | @ -998,7 +1077,7 @@ Packet Filter (BPF) virtual machine.") | |||
|                                           version "-checkout")) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k")))) | ||||
|                   "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "golang.org/x/net/context" | ||||
|  | @ -1011,8 +1090,8 @@ request-scoped values across API boundaries and between processes.") | |||
|       (license license:bsd-3)))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-net-internal-socks | ||||
|   (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0") | ||||
|         (revision "2")) | ||||
|   (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99") | ||||
|         (revision "3")) | ||||
|     (package | ||||
|       (name "go-golang-org-x-net-internal-socks") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|  | @ -1025,7 +1104,7 @@ request-scoped values across API boundaries and between processes.") | |||
|                                           version "-checkout")) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k")))) | ||||
|                   "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "golang.org/x/net/internal/socks" | ||||
|  | @ -1036,8 +1115,8 @@ request-scoped values across API boundaries and between processes.") | |||
|       (license license:bsd-3)))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-net-internal-socket | ||||
|   (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0") | ||||
|         (revision "2")) | ||||
|   (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99") | ||||
|         (revision "3")) | ||||
|     (package | ||||
|       (name "go-golang-org-x-net-internal-socket") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|  | @ -1050,19 +1129,21 @@ request-scoped values across API boundaries and between processes.") | |||
|                                           version "-checkout")) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k")))) | ||||
|                   "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "golang.org/x/net/internal/socket" | ||||
|          #:unpack-path "golang.org/x/net")) | ||||
|       (propagated-inputs | ||||
|        `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix))) | ||||
|       (synopsis "") | ||||
|       (description "") | ||||
|       (home-page "https://go.googlesource.com/net/") | ||||
|       (license license:bsd-3)))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-net-internal-iana | ||||
|   (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0") | ||||
|         (revision "2")) | ||||
|   (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99") | ||||
|         (revision "3")) | ||||
|     (package | ||||
|       (name "go-golang-org-x-net-internal-iana") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|  | @ -1075,7 +1156,7 @@ request-scoped values across API boundaries and between processes.") | |||
|                                           version "-checkout")) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k")))) | ||||
|                   "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "golang.org/x/net/internal/iana" | ||||
|  | @ -1087,8 +1168,8 @@ number resources managed by the Internet Assigned Numbers Authority (IANA).") | |||
|       (license license:bsd-3)))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-net-ipv6 | ||||
|   (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0") | ||||
|         (revision "2")) | ||||
|   (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99") | ||||
|         (revision "3")) | ||||
|     (package | ||||
|       (name "go-golang-org-x-net-ipv6") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|  | @ -1101,11 +1182,13 @@ number resources managed by the Internet Assigned Numbers Authority (IANA).") | |||
|                                           version "-checkout")) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k")))) | ||||
|                   "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "golang.org/x/net/ipv6" | ||||
|          #:unpack-path "golang.org/x/net")) | ||||
|       (propagated-inputs | ||||
|        `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix))) | ||||
|       (synopsis "Go IPv6 support") | ||||
|       (description "This package provides @code{ipv6}, which implements | ||||
| IP-level socket options for the Internet Protocol version 6.") | ||||
|  | @ -1113,8 +1196,8 @@ IP-level socket options for the Internet Protocol version 6.") | |||
|       (license license:bsd-3)))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-net-proxy | ||||
|   (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0") | ||||
|         (revision "2")) | ||||
|   (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99") | ||||
|         (revision "3")) | ||||
|     (package | ||||
|       (name "go-golang-org-x-net-proxy") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|  | @ -1127,7 +1210,7 @@ IP-level socket options for the Internet Protocol version 6.") | |||
|                                           version "-checkout")) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k")))) | ||||
|                   "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "golang.org/x/net/proxy" | ||||
|  | @ -1139,8 +1222,8 @@ for a variety of protocols to proxy network data.") | |||
|       (license license:bsd-3)))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-sys-unix | ||||
|   (let ((commit "4d1cda033e0619309c606fc686de3adcf599539e") | ||||
|         (revision "2")) | ||||
|   (let ((commit "5ed2794edfdc1c54dfb61d619c5944285f35d444") | ||||
|         (revision "3")) | ||||
|     (package | ||||
|       (name "go-golang-org-x-sys-unix") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|  | @ -1152,7 +1235,7 @@ for a variety of protocols to proxy network data.") | |||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1wgaldbnkmh568v8kkgvnmkskaj96fqrbzhx23yji2kh1432q6gh")))) | ||||
|                   "1qy8hmv5nwpcywk7sh1pg0s32jwpd4ykh492xzl4mmxy8galwsr5")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "golang.org/x/sys/unix" | ||||
|  | @ -1174,59 +1257,55 @@ for low-level interaction with the operating system.") | |||
|     (description "Thi spackage provides @code{cpu}, which offers tools for CPU | ||||
| feature detection in Go."))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-text-encoding | ||||
|   (package | ||||
|     (name "go-golang-org-x-text-encoding") | ||||
|     (version "0.3.2") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url "https://go.googlesource.com/text") | ||||
|                     (commit (string-append "v" version)))) | ||||
|               (file-name (string-append "go.googlesource.com-text-" | ||||
|                                         version "-checkout")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0flv9idw0jm5nm8lx25xqanbkqgfiym6619w575p7nrdh0riqwqh")))) | ||||
|     (build-system go-build-system) | ||||
|     (arguments | ||||
|      `(#:import-path "golang.org/x/text/encoding" | ||||
|        #:unpack-path "golang.org/x/text")) | ||||
|     (synopsis "Interface for character encodings for conversion to and from | ||||
| UTF-8") | ||||
|     (description "This package defines an interface for character encodings. | ||||
| Specific implementations of encoding for CJK text as well as simple character | ||||
| encodings are provided in subpackages.") | ||||
|     (home-page "https://go.googlesource.com/text") | ||||
|     (license license:bsd-3))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-text-transform | ||||
|   (let ((commit "e19ae1496984b1c655b8044a65c0300a3c878dd3") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (name "go-golang-org-x-text-transform") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                       (url "https://go.googlesource.com/text") | ||||
|                       (commit commit))) | ||||
|                 (file-name (string-append "go.googlesource.com-text-" | ||||
|                                           version "-checkout")) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1cvnnx8nwx5c7gr6ajs7sldhbqh52n7h6fsa3i21l2lhx6xrsh4w")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "golang.org/x/text/transform" | ||||
|          #:unpack-path "golang.org/x/text")) | ||||
|       (synopsis "Go text transformation") | ||||
|       (description "This package provides @code{transform}, which provides | ||||
|   (package | ||||
|     (inherit go-golang-org-x-text-encoding) | ||||
|     (name "go-golang-org-x-text-transform") | ||||
|     (arguments | ||||
|      `(#:import-path "golang.org/x/text/transform" | ||||
|        #:unpack-path "golang.org/x/text")) | ||||
|     (synopsis "Go text transformation") | ||||
|     (description "This package provides @code{transform}, which provides | ||||
| reader and writer wrappers that transform the bytes passing through.  Example | ||||
| transformations provided by other packages include normalization and conversion | ||||
| between character sets.") | ||||
|       (home-page "https://go.googlesource.com/text") | ||||
|       (license license:bsd-3)))) | ||||
| between character sets."))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-text-unicode-norm | ||||
|   (let ((commit "e19ae1496984b1c655b8044a65c0300a3c878dd3") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (name "go-golang-org-x-text-unicode-norm") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                       (url "https://go.googlesource.com/text") | ||||
|                       (commit commit))) | ||||
|                 (file-name (string-append "go.googlesource.com-text-" | ||||
|                                           version "-checkout")) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1cvnnx8nwx5c7gr6ajs7sldhbqh52n7h6fsa3i21l2lhx6xrsh4w")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "golang.org/x/text/unicode/norm" | ||||
|          #:unpack-path "golang.org/x/text")) | ||||
|       (synopsis "Unicode normalization in Go") | ||||
|       (description "This package provides @code{norm}, which contains types and | ||||
| functions for normalizing Unicode strings.") | ||||
|       (home-page "https://go.googlesource.com/text") | ||||
|       (license license:bsd-3)))) | ||||
|   (package | ||||
|     (inherit go-golang-org-x-text-encoding) | ||||
|     (name "go-golang-org-x-text-unicode-norm") | ||||
|     (arguments | ||||
|      `(#:import-path "golang.org/x/text/unicode/norm" | ||||
|        #:unpack-path "golang.org/x/text")) | ||||
|     (synopsis "Unicode normalization in Go") | ||||
|     (description "This package provides @code{norm}, which contains types and | ||||
| functions for normalizing Unicode strings."))) | ||||
| 
 | ||||
| (define-public go-golang-org-x-time-rate | ||||
|   (let ((commit "6dc17368e09b0e8634d71cac8168d853e869a0c7") | ||||
|  | @ -1292,12 +1371,11 @@ is similar to Go's standard library @code{json} and @code{xml} package.") | |||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public go-github-com-getsentry-raven-go | ||||
|   (let ((commit | ||||
|          "dffeb57df75d6a911f00232155194e43d79d38d7") | ||||
|   (let ((commit "5c24d5110e0e198d9ae16f1f3465366085001d92") | ||||
|         (revision "0")) | ||||
|     (package | ||||
|       (name "go-github-com-getsentry-raven-go") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|       (version (git-version "0.2.0" revision commit)) | ||||
|       (source | ||||
|        (origin | ||||
|          (method git-fetch) | ||||
|  | @ -1307,14 +1385,16 @@ is similar to Go's standard library @code{json} and @code{xml} package.") | |||
|          (file-name (git-file-name name version)) | ||||
|          (sha256 | ||||
|           (base32 | ||||
|            "13sb9rvl3369m7fah3ss9g0hwky259snqfn8gmbr0h5zvp651lja")))) | ||||
|            "0lvc376sq8r8jhy2v1m6rf1wyld61pvbk0x6j9xpg56ivqy69xs7")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "github.com/getsentry/raven-go")) | ||||
|       (home-page | ||||
|        "https://github.com/getsentry/raven-go") | ||||
|       (propagated-inputs | ||||
|        `(("go-github-com-certifi-gocertifi" ,go-github-com-certifi-gocertifi) | ||||
|          ("go-github-com-pkg-errors" ,go-github-com-pkg-errors))) | ||||
|       (home-page "https://github.com/getsentry/raven-go") | ||||
|       (synopsis "Sentry client in Go") | ||||
|       (description "This package is Go client API for the Sentry event/error | ||||
|       (description "This package is a Go client API for the Sentry event/error | ||||
| logging system.") | ||||
|       (license license:bsd-3)))) | ||||
| 
 | ||||
|  | @ -1859,11 +1939,11 @@ which satisfies the cron expression.") | |||
|                      license:asl2.0))))) | ||||
| 
 | ||||
| (define-public go-gopkg-in-check-v1 | ||||
|   (let ((commit "20d25e2804050c1cd24a7eea1e7a6447dd0e74ec") | ||||
|         (revision "0")) | ||||
|   (let ((commit "788fd78401277ebd861206a03c884797c6ec5541") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (name "go-gopkg-in-check-v1") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|       (version (git-version "1.0.0" revision commit)) | ||||
|       (source | ||||
|        (origin | ||||
|          (method git-fetch) | ||||
|  | @ -1873,43 +1953,42 @@ which satisfies the cron expression.") | |||
|          (file-name (git-file-name name version)) | ||||
|          (sha256 | ||||
|           (base32 | ||||
|            "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np")))) | ||||
|            "0v3bim0j375z81zrpr5qv42knqs0y2qv2vkjiqi5axvb78slki1a")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "gopkg.in/check.v1")) | ||||
|       (propagated-inputs | ||||
|        `(("go-github-com-kr-pretty" ,go-github-com-kr-pretty))) | ||||
|       (home-page "https://gopkg.in/check.v1") | ||||
|       (synopsis "Test framework for the Go language") | ||||
|       (description | ||||
|        "This package provides a test library for the Go language.") | ||||
|       (description "This package provides a test library for the Go language.") | ||||
|       (license license:asl2.0)))) | ||||
| 
 | ||||
| (define-public go-gopkg-in-yaml-v2 | ||||
|   (let ((commit "14227de293ca979cf205cd88769fe71ed96a97e2") | ||||
|         (revision "0")) | ||||
|     (package | ||||
|       (name "go-gopkg-in-yaml-v2") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|       (source | ||||
|         (origin | ||||
|           (method git-fetch) | ||||
|           (uri (git-reference | ||||
|                  (url "https://gopkg.in/yaml.v2.git") | ||||
|                  (commit commit))) | ||||
|           (file-name (git-file-name name version)) | ||||
|           (sha256 | ||||
|             (base32 | ||||
|               "038hnrjcnjygyi3qidfrkpkakis82qg381sr495d2s40g2dwlzah")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "gopkg.in/yaml.v2")) | ||||
|       (native-inputs | ||||
|        `(("go-gopkg-in-check-v1" ,go-gopkg-in-check-v1))) | ||||
|       (home-page "https://gopkg.in/yaml.v2") | ||||
|       (synopsis "YAML reader and writer for the Go language") | ||||
|       (description | ||||
|        "This package provides a Go library for encode and decode YAML | ||||
|   (package | ||||
|     (name "go-gopkg-in-yaml-v2") | ||||
|     (version "2.2.2") | ||||
|     (source | ||||
|       (origin | ||||
|         (method git-fetch) | ||||
|         (uri (git-reference | ||||
|                (url "https://gopkg.in/yaml.v2.git") | ||||
|                (commit (string-append "v" version)))) | ||||
|         (file-name (git-file-name name version)) | ||||
|         (sha256 | ||||
|          (base32 | ||||
|           "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa")))) | ||||
|     (build-system go-build-system) | ||||
|     (arguments | ||||
|      '(#:import-path "gopkg.in/yaml.v2")) | ||||
|     (native-inputs | ||||
|      `(("go-gopkg-in-check-v1" ,go-gopkg-in-check-v1))) | ||||
|     (home-page "https://gopkg.in/yaml.v2") | ||||
|     (synopsis "YAML reader and writer for the Go language") | ||||
|     (description | ||||
|      "This package provides a Go library for encode and decode YAML | ||||
| values.") | ||||
|       (license license:asl2.0)))) | ||||
|     (license license:asl2.0))) | ||||
| 
 | ||||
| (define-public go-github-com-mattn-go-isatty | ||||
|   (package | ||||
|  | @ -3238,6 +3317,171 @@ format in Go.") | |||
|     (home-page "https://github.com/kr/text") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public go-golang-org-sql-mock | ||||
|   (let ((commit "e98392b8111b45f8126e00af035a0dd95dc12e8b") | ||||
|         (version "1.3.3") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (name "go-golang-org-sql-mock") | ||||
|       (version (git-version version revision commit)) | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                       (url "https://github.com/DATA-DOG/go-sqlmock") | ||||
|                       (commit commit))) | ||||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "033vv29g2wf6fd757ajfmha30bqin3b07377037zkl051mk6mghs")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "github.com/DATA-DOG/go-sqlmock")) | ||||
|       (synopsis "Mock library implementing @code{sql/driver}") | ||||
|       (description "This library simulates SQL-driver behavior in tests | ||||
| without requiring a real database connection.") | ||||
|       (home-page "https://github.com/DATA-DOG/go-sqlmock") | ||||
|       (license license:expat)))) | ||||
| 
 | ||||
| (define-public go-golang-org-colorful | ||||
|   (package | ||||
|     (name "go-golang-org-colorful") | ||||
|     (version "1.0.2") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url "https://github.com/lucasb-eyer/go-colorful") | ||||
|                     (commit (string-append "v" version)))) | ||||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0fig06880bvk1l92j4127v4x9sar4ds7ga8959gxxghb2w70b7l2")))) | ||||
|     (build-system go-build-system) | ||||
|     (arguments | ||||
|      '(#:import-path "github.com/lucasb-eyer/go-colorful")) | ||||
|     (native-inputs | ||||
|      `(("go-golang-org-sql-mock" ,go-golang-org-sql-mock))) | ||||
|     (synopsis "Convert between colorspaces and generate colors") | ||||
|     (description "This package implements Go's @code{color.Color} interface | ||||
| and provides a means of converting colors stored as RGB to various | ||||
| colorspaces.") | ||||
|     (home-page "https://github.com/lucasb-eyer/go-colorful") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public go-github-com-gdamore-encoding | ||||
|   (package | ||||
|     (name "go-github-com-gdamore-encoding") | ||||
|     (version "1.0.0") | ||||
|     (source | ||||
|      (origin | ||||
|        (method git-fetch) | ||||
|        (uri (git-reference | ||||
|              (url "https://github.com/gdamore/encoding") | ||||
|              (commit (string-append "v" version)))) | ||||
|        (file-name (git-file-name name version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1vmm5zll92i2fm4ajqx0gyx0p9j36496x5nabi3y0x7h0inv0pk9")))) | ||||
|     (build-system go-build-system) | ||||
|     (arguments | ||||
|      '(#:import-path "github.com/gdamore/encoding")) | ||||
|     (inputs | ||||
|      `(("go-golang-org-x-text-encoding" ,go-golang-org-x-text-encoding) | ||||
|        ("go-golang-org-x-text-transform" ,go-golang-org-x-text-transform))) | ||||
|     (home-page "https://github.com/gdamore/encoding") | ||||
|     (synopsis "Provide encodings missing from Go") | ||||
|     (description "This package provides useful encodings not included in the | ||||
| standard @code{Text} package, including some for dealing with I/O streams from | ||||
| non-UTF-friendly sources.") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public go-github-com-gdamore-tcell | ||||
|   (let ((commit "aaadc574a6ed8dc3abe56036ca130dcee1ee6b6e") | ||||
|         (version "1.1.2") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (name "go-github-com-gdamore-tcell") | ||||
|       (version (git-version version revision commit)) | ||||
|       (source | ||||
|        (origin | ||||
|          (method git-fetch) | ||||
|          (uri (git-reference | ||||
|                (url "https://github.com/gdamore/tcell") | ||||
|                (commit commit))) | ||||
|          (file-name (git-file-name name version)) | ||||
|          (sha256 | ||||
|           (base32 | ||||
|            "0il2nnxp2cqiy73m49215dnf9in3vd25ji8qxbmq87c5qy7i1q9d")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "github.com/gdamore/tcell" | ||||
|          #:phases | ||||
|          (modify-phases %standard-phases | ||||
|            (add-before 'reset-gzip-timestamps 'make-files-writable | ||||
|              (lambda* (#:key outputs #:allow-other-keys) | ||||
|                ;; Make sure .gz files are writable so that the | ||||
|                ;; 'reset-gzip-timestamps' phase can do its work. | ||||
|                (let ((out (assoc-ref outputs "out"))) | ||||
|                  (for-each make-file-writable | ||||
|                            (find-files out "\\.gz$")) | ||||
|                  #t)))))) | ||||
|       (inputs | ||||
|        `(("go-github.com-mattn-go-runewidth" ,go-github.com-mattn-go-runewidth) | ||||
|          ("go-golang-org-colorful" ,go-golang-org-colorful) | ||||
|          ("go-golang-org-x-text-encoding" ,go-golang-org-x-text-encoding) | ||||
|          ("go-golang-org-x-text-transform" ,go-golang-org-x-text-transform) | ||||
|          ("go-github-com-gdamore-encoding" ,go-github-com-gdamore-encoding))) | ||||
|       (home-page "https://github.com/gdamore/tcell") | ||||
|       (synopsis "Provide a cell-based view for text terminals") | ||||
|       (description "This package includes a full parser and expander for | ||||
| terminfo capability strings to avoid hard-coding escape strings for | ||||
| formatting.  It also favors portability, and includes support for all POSIX | ||||
| systems.") | ||||
|       (license license:expat)))) | ||||
| 
 | ||||
| (define-public go-github-com-mattn-go-shellwords | ||||
|   (let ((commit "2444a32a19f450fabaa0bb3e96a703f15d9a97d2") | ||||
|         (version "1.0.5") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (name "go-github-com-mattn-go-shellwords") | ||||
|       (version (git-version version revision commit)) | ||||
|       (source | ||||
|        (origin | ||||
|          (method git-fetch) | ||||
|          (uri (git-reference | ||||
|                (url "https://github.com/mattn/go-shellwords") | ||||
|                (commit commit))) | ||||
|          (file-name (git-file-name name version)) | ||||
|          (sha256 | ||||
|           (base32 | ||||
|            "08zcgr1az1n8zaxzwdd205j86hczgyc52nxfnw5avpw7rrkf7v0d")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "github.com/mattn/go-shellwords" | ||||
|          ;; TODO: can't make homeless-shelter: | ||||
|          ;; go: disabling cache (/homeless-shelter/.cache/go-build) due to | ||||
|          ;; initialization failure: mkdir /homeless-shelter: permission denied | ||||
| 
 | ||||
|          ;; This doesn't seem to work: | ||||
| 
 | ||||
|          ;; #:phases | ||||
|          ;; (modify-phases %standard-phases | ||||
|          ;;   (replace 'check | ||||
|          ;;     (lambda* (#:key import-path #:allow-other-keys) | ||||
|          ;;       (setenv "HOME" "/tmp") | ||||
|          ;;       (invoke "go" "test" import-path)))) | ||||
| 
 | ||||
|          ;; TODO: There are also a couple of tests that have stymied Debian in | ||||
|          ;; the past.  They seem to work when run locally. | ||||
| 
 | ||||
|          #:tests? #f | ||||
|          )) | ||||
|       (home-page "https://github.com/mattn/go-shellwords") | ||||
|       (synopsis "Parse lines into shell words") | ||||
|       (description "This package parses text into shell arguments.  Based on | ||||
| the @code{cpan} module @code{Parse::CommandLine}.") | ||||
|       (license license:expat)))) | ||||
| 
 | ||||
| (define-public go-github-com-burntsushi-locker | ||||
|   (let ((commit "a6e239ea1c69bff1cfdb20c4b73dadf52f784b6a") | ||||
|         (revision "0")) | ||||
|  | @ -3271,3 +3515,128 @@ test. | |||
| All locks are implemented with read-write mutexes.  To use them like a regular | ||||
| mutex, simply ignore the RLock/RUnlock functions.") | ||||
|       (license license:unlicense)))) | ||||
| 
 | ||||
| (define-public go-github-com-marten-seemann-qtls | ||||
|   (package | ||||
|     (name "go-github-com-marten-seemann-qtls") | ||||
|     (version "0.2.3") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                      (url "https://github.com/marten-seemann/qtls") | ||||
|                      (commit (string-append "v" version)))) | ||||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0b9p7bwkm9hfg1mb565q4nw5k7xyks0z2xagz5fp95azy2psbnfg")))) | ||||
|     (build-system go-build-system) | ||||
|     (arguments | ||||
|      '(#:import-path "github.com/marten-seemann/qtls" | ||||
|        ;; The test suite requires networking. | ||||
|        #:tests? #f)) | ||||
|     (propagated-inputs | ||||
|      `(("go-golang-org-x-crypto" ,go-golang-org-x-crypto))) | ||||
|     (synopsis "TLS 1.3 with QUIC in Go") | ||||
|     (description "This package provides @code{qtls}, a QUIC-capable variant of | ||||
| the Go standard library's TLS 1.3 implementation.") | ||||
|     (home-page "https://github.com/marten-seemann/qtls") | ||||
|     (license license:bsd-3))) | ||||
| 
 | ||||
| (define-public go-github-com-cheekybits-genny | ||||
|   (package | ||||
|     (name "go-github-com-cheekybits-genny") | ||||
|     (version "1.0.0") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                      (url "https://github.com/cheekybits/genny") | ||||
|                      (commit (string-append "v" version)))) | ||||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1pcir5ic86713aqa51581rfb67rgc3m0c72ddjfcp3yakv9vyq87")))) | ||||
|     (build-system go-build-system) | ||||
|     (arguments | ||||
|      '(#:import-path "github.com/cheekybits/genny")) | ||||
|     (propagated-inputs | ||||
|      `(("go-golang-org-x-tools" ,go-golang-org-x-tools))) | ||||
|     (synopsis "Generics for Go") | ||||
|     (description "This package provides @code{genny}, a Go language | ||||
| implementation of generics.") | ||||
|     (home-page "https://github.com/cheekybits/genny/") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public go-github-com-lucas-clemente-quic-go | ||||
|   (package | ||||
|     (name "go-github-com-lucas-clemente-quic-go") | ||||
|     (version "0.11.2") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                      (url "https://github.com/lucas-clemente/quic-go") | ||||
|                      (commit (string-append "v" version)))) | ||||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0gqm5mc8alg84ra7yxach34il1jvcij8f76qdqcahnd3d2nhjbia")))) | ||||
|     (build-system go-build-system) | ||||
|     (arguments | ||||
|      '(#:import-path "github.com/lucas-clemente/quic-go" | ||||
|        ;; XXX More packages required... | ||||
|        #:tests? #f)) | ||||
|     (propagated-inputs | ||||
|      `(("go-golang-org-x-crypto" ,go-golang-org-x-crypto) | ||||
|        ("go-github-com-cheekybits-genny" ,go-github-com-cheekybits-genny) | ||||
|        ("go-github-com-marten-seemann-qtls" ,go-github-com-marten-seemann-qtls))) | ||||
|     (synopsis "QUIC in Go") | ||||
|     (description "This package provides a Go language implementation of the QUIC | ||||
| network protocol.") | ||||
|     (home-page "https://github.com/lucas-clemente/quic-go") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public go-github-com-pkg-errors | ||||
|   (let ((commit "27936f6d90f9c8e1145f11ed52ffffbfdb9e0af7") | ||||
|         (revision "0")) | ||||
|     (package | ||||
|       (name "go-github-com-pkg-errors") | ||||
|       (version (git-version "0.8.1" revision commit)) | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                       (url "https://github.com/pkg/errors.git") | ||||
|                       (commit commit))) | ||||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "0yzmgi6g4ak4q8y7w6x0n5cbinlcn8yc3gwgzy4yck00qdn25d6y")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        `(#:import-path "github.com/pkg/errors")) | ||||
|       (synopsis "Go error handling primitives") | ||||
|       (description "This package provides @code{error}, which offers simple | ||||
| error handling primitives in Go.") | ||||
|       (home-page "https://github.com/pkg/errors") | ||||
|       (license license:bsd-2)))) | ||||
| 
 | ||||
| (define-public go-github-com-maruel-panicparse | ||||
|   (package | ||||
|     (name "go-github-com-maruel-panicparse") | ||||
|     (version "1.2.1") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                      (url "https://github.com/maruel/panicparse") | ||||
|                      (commit (string-append "v" version)))) | ||||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "05hf68ifb7ww4rpmxyywbj9r0kyap45p1273ncq4qy2ydv042l8j")))) | ||||
|     (build-system go-build-system) | ||||
|     (arguments | ||||
|      '(#:import-path "github.com/maruel/panicparse")) | ||||
|     (synopsis "Toolkit for parsing Go stack traces") | ||||
|     (description "This package provides a toolkit for parsing Go language panic | ||||
| stack traces.  It simplifies the traces to make salient information more visible | ||||
| and aid debugging.") | ||||
|     (home-page "https://github.com/maruel/panicparse") | ||||
|     (license license:asl2.0))) | ||||
|  |  | |||
|  | @ -80,16 +80,14 @@ | |||
| (define-public blender | ||||
|   (package | ||||
|     (name "blender") | ||||
|     (version "v2.80-rc1") | ||||
|     (version "2.80") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                      (url "https://git.blender.org/blender.git") | ||||
|                      (commit version))) | ||||
|               (file-name (git-file-name name version)) | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "https://download.blender.org/source/" | ||||
|                                   "blender-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "11dcf0rjq42mpphk8r8cy7gvhzzl1cj1vslp98ibh8sdjzaz2mdq")))) | ||||
|                 "1h550jisdbis50hxwk5kxrvrk1a6sh2fsri3yyj66vhzbi87x7fd")))) | ||||
|     (build-system cmake-build-system) | ||||
|     (arguments | ||||
|       (let ((python-version (version-major+minor (package-version python)))) | ||||
|  | @ -162,9 +160,7 @@ | |||
|      "Blender is a 3D graphics creation suite.  It supports the entirety of | ||||
| the 3D pipeline—modeling, rigging, animation, simulation, rendering, | ||||
| compositing and motion tracking, even video editing and game creation.  The | ||||
| application can be customized via its API for Python scripting. | ||||
| 
 | ||||
| WARNING: This is a release candidate build of Blender.") | ||||
| application can be customized via its API for Python scripting.") | ||||
|     (license license:gpl2+))) | ||||
| 
 | ||||
| (define-public blender-2.79 | ||||
|  |  | |||
|  | @ -300,29 +300,27 @@ without requiring the source code to be rewritten.") | |||
| 
 | ||||
| (define-public guile-next | ||||
|   ;; This is the upcoming Guile 3.0, with JIT support. | ||||
|   (let ((commit "6f3357b0df64c4be17e72079864c09a542f1c779") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (inherit guile-2.2) | ||||
|       (name "guile-next") | ||||
|       (version "2.9.2") | ||||
|       (source (origin | ||||
|                 (inherit (package-source guile-2.2)) | ||||
|                 (uri (string-append "ftp://alpha.gnu.org/gnu/guile/guile-" | ||||
|                                     version ".tar.xz")) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1w358df2wmcyzk2ziqrj2zhwqisaqraqfa3008ay23nf1a7bw0z4")))) | ||||
|       (native-search-paths | ||||
|        (list (search-path-specification | ||||
|               (variable "GUILE_LOAD_PATH") | ||||
|               (files '("share/guile/site/3.0"))) | ||||
|              (search-path-specification | ||||
|               (variable "GUILE_LOAD_COMPILED_PATH") | ||||
|               (files '("lib/guile/3.0/site-ccache" | ||||
|                        "share/guile/site/3.0"))))) | ||||
|       (properties '((ftp-server . "alpha.gnu.org") | ||||
|                     (upstream-name . "guile")))))) | ||||
|   (package | ||||
|     (inherit guile-2.2) | ||||
|     (name "guile-next") | ||||
|     (version "2.9.3") | ||||
|     (source (origin | ||||
|               (inherit (package-source guile-2.2)) | ||||
|               (uri (string-append "ftp://alpha.gnu.org/gnu/guile/guile-" | ||||
|                                   version ".tar.xz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "14990wcpysgw58kij03wbgiggmi5z94jmy7wdcqnn6ny7cimkkgr")))) | ||||
|     (native-search-paths | ||||
|      (list (search-path-specification | ||||
|             (variable "GUILE_LOAD_PATH") | ||||
|             (files '("share/guile/site/3.0"))) | ||||
|            (search-path-specification | ||||
|             (variable "GUILE_LOAD_COMPILED_PATH") | ||||
|             (files '("lib/guile/3.0/site-ccache" | ||||
|                      "share/guile/site/3.0"))))) | ||||
|     (properties '((ftp-server . "alpha.gnu.org") | ||||
|                   (upstream-name . "guile"))))) | ||||
| 
 | ||||
| (define (make-guile-readline guile) | ||||
|   (package | ||||
|  |  | |||
|  | @ -64,7 +64,7 @@ | |||
| (define-public feh | ||||
|   (package | ||||
|     (name "feh") | ||||
|     (version "3.1.3") | ||||
|     (version "3.2.1") | ||||
|     (home-page "https://feh.finalrewind.org/") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|  | @ -72,7 +72,7 @@ | |||
|                                   name "-" version ".tar.bz2")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1vsnxf4as3vyzjfhd8frzb1a8i7wnq7ck5ljx7qxqrnfqvxl1s4z")))) | ||||
|                 "070axq8jpibcabmjfv4fmjmpk3k349vzvh4qhsi4n62bkcwl35wg")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      '(#:phases (modify-phases %standard-phases (delete 'configure)) | ||||
|  |  | |||
|  | @ -250,8 +250,8 @@ APNG patch provides APNG support to libpng.") | |||
|       ("zlib" , zlib))) | ||||
|    (home-page "https://pmt.sourceforge.io/pngcrush") | ||||
|    (synopsis "Utility to compress PNG files") | ||||
|    (description "pngcrusqh is an optimizer for PNG (Portable Network Graphics) | ||||
| files.  It can compress them as much as 40% losslessly.") | ||||
|    (description "Pngcrush optimizes @acronym{PNG, Portable Network Graphics} | ||||
| images.  It can further losslessly compress them by as much as 40%.") | ||||
|    (license license:zlib))) | ||||
| 
 | ||||
| (define-public pngcrunch | ||||
|  |  | |||
|  | @ -320,7 +320,7 @@ plugins, as well as code to create plugins, or complete applications.") | |||
| (define-public krita | ||||
|   (package | ||||
|     (name "krita") | ||||
|     (version "4.2.2") | ||||
|     (version "4.2.5") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|  | @ -329,7 +329,7 @@ plugins, as well as code to create plugins, or complete applications.") | |||
|                     "/krita-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1pzk5bqp3kh22djhvsvmsc7ybirs4hsnkpg1y9677m2gxwbqnnps")))) | ||||
|                 "1f14r2mrqasl6nr3sss0xy2h8xlxd5wdcjcd64m9nz2gwlm39r7w")))) | ||||
|     (build-system cmake-build-system) | ||||
|     (arguments | ||||
|      `(#:tests? #f | ||||
|  |  | |||
|  | @ -271,7 +271,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.") | |||
| (define-public kodi | ||||
|   (package | ||||
|     (name "kodi") | ||||
|     (version "18.2") | ||||
|     (version "18.3") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|  | @ -280,7 +280,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.") | |||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1yzi8171p1mnszyf80lqkl05ql25n73s5gn8pcgvv4jph4yvasnq")) | ||||
|                 "18fbl5hs3aqccrn0m3x7hp95wlafjav0yvrwmb5q3gj24mwf6jld")) | ||||
|               (patches (search-patches "kodi-skip-test-449.patch" | ||||
|                                        "kodi-set-libcurl-ssl-parameters.patch")) | ||||
|               (snippet | ||||
|  |  | |||
|  | @ -182,31 +182,31 @@ defconfig.  Return the appropriate make target if applicable, otherwise return | |||
| 
 | ||||
| (define deblob-scripts-5.2 | ||||
|   (linux-libre-deblob-scripts | ||||
|    "5.2.1" | ||||
|    "5.2.3" | ||||
|    (base32 "076fwxlm6jq6z4vg1xq3kr474zz7qk71r90sf9dnfia3rw2pb4fa") | ||||
|    (base32 "030cccchli7vnzvxcw261spyzsgnq0m113bjsz8y4vglf6gaz4n9"))) | ||||
|    (base32 "0d3pp1bqchqc7vnxr1a56km5r0hzjiiipzz2xc3wgjwfi51k9kxc"))) | ||||
| 
 | ||||
| (define deblob-scripts-4.19 | ||||
|   (linux-libre-deblob-scripts | ||||
|    "4.19.59" | ||||
|    "4.19.61" | ||||
|    (base32 "02zs405awaxydbapka4nz8h6lmnc0dahgczqsrs5s2bmzjyyqkcy") | ||||
|    (base32 "07z1bsyny8lldncfh27lb16mgx9r38nswx4vmd24c7n4xva12k2s"))) | ||||
|    (base32 "1fyacg28aym6virxyn7wk99qil2fjbks3iwm7p3hxy51pccn34za"))) | ||||
| 
 | ||||
| (define deblob-scripts-4.14 | ||||
|   (linux-libre-deblob-scripts | ||||
|    "4.14.133" | ||||
|    "4.14.134" | ||||
|    (base32 "091jk9jkn9jf39bxpc7395bhcb7p96nkg3a8047380ki06lnfxh6") | ||||
|    (base32 "0x9nd3hnyrm753cbgdqmy92mbnyw86w64g4hvyibnkpq5n7s3z9n"))) | ||||
| 
 | ||||
| (define deblob-scripts-4.9 | ||||
|   (linux-libre-deblob-scripts | ||||
|    "4.9.185" | ||||
|    "4.9.186" | ||||
|    (base32 "1wvldzlv7q2xdbadas87dh593nxr4a8p5n0f8zpm72lja6w18hmg") | ||||
|    (base32 "1gmjn5cwxydg6qb47wcmahwkv37npsjx4papynzkkdxyidmrccya"))) | ||||
| 
 | ||||
| (define deblob-scripts-4.4 | ||||
|   (linux-libre-deblob-scripts | ||||
|    "4.4.185" | ||||
|    "4.4.186" | ||||
|    (base32 "0x2j1i88am54ih2mk7gyl79g25l9zz4r08xhl482l3fvjj2irwbw") | ||||
|    (base32 "1x40lbiaizksy8z38ax7wpqr9ldgq7qvkxbb0ca98vd1axpklb10"))) | ||||
| 
 | ||||
|  | @ -312,7 +312,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." | |||
| 
 | ||||
|                   (format #t "~%Packing new Linux-libre tarball...~%") | ||||
|                   (force-output) | ||||
|                   (invoke "tar" "cfa" #$output | ||||
|                   (invoke "tar" "cvfa" #$output | ||||
|                           ;; Avoid non-determinism in the archive. | ||||
|                           "--mtime=@0" | ||||
|                           "--owner=root:0" | ||||
|  | @ -350,26 +350,26 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." | |||
|                         "linux-" version ".tar.xz")) | ||||
|     (sha256 hash))) | ||||
| 
 | ||||
| (define-public linux-libre-5.2-version "5.2.2") | ||||
| (define-public linux-libre-5.2-version "5.2.5") | ||||
| (define-public linux-libre-5.2-pristine-source | ||||
|   (let ((version linux-libre-5.2-version) | ||||
|         (hash (base32 "173da67d51qcjwrczqsfd6g9phzazqzr11xfxwlf54ckd6117ng5"))) | ||||
|         (hash (base32 "15ndscsp3yqgas901g6inpmyvinz4cwr5y3md516j2pr8cl40if6"))) | ||||
|    (make-linux-libre-source version | ||||
|                             (%upstream-linux-source version hash) | ||||
|                             deblob-scripts-5.2))) | ||||
| 
 | ||||
| (define-public linux-libre-4.19-version "4.19.60") | ||||
| (define-public linux-libre-4.19-version "4.19.63") | ||||
| (define-public linux-libre-4.19-pristine-source | ||||
|   (let ((version linux-libre-4.19-version) | ||||
|         (hash (base32 "0ibayrvrnw2lw7si78vdqnr20mm1d3z0g6a0ykndvgn5vdax5x9a"))) | ||||
|         (hash (base32 "0pfjwpa6szvdr941y13806hlsgsbslfsvkrd5534p1iip5h8g63m"))) | ||||
|     (make-linux-libre-source version | ||||
|                              (%upstream-linux-source version hash) | ||||
|                              deblob-scripts-4.19))) | ||||
| 
 | ||||
| (define-public linux-libre-4.14-version "4.14.134") | ||||
| (define-public linux-libre-4.14-version "4.14.135") | ||||
| (define-public linux-libre-4.14-pristine-source | ||||
|   (let ((version linux-libre-4.14-version) | ||||
|         (hash (base32 "0b9xj1rwr5fpw2giirfghzxxc0wp1hwf4nqvalx314pxxysyf88b"))) | ||||
|         (hash (base32 "0x2v0pj4hjb71qkxbqn4ymg6zmyabp91kylyzd270nbig7i234a2"))) | ||||
|     (make-linux-libre-source version | ||||
|                              (%upstream-linux-source version hash) | ||||
|                              deblob-scripts-4.14))) | ||||
|  | @ -561,7 +561,9 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." | |||
|     (search-auxiliary-file file))) | ||||
| 
 | ||||
| (define %default-extra-linux-options | ||||
|   `(;; Modules required for initrd: | ||||
|   `(;; Some very mild hardening. | ||||
|     ("CONFIG_SECURITY_DMESG_RESTRICT" . #t) | ||||
|     ;; Modules required for initrd: | ||||
|     ("CONFIG_NET_9P" . m) | ||||
|     ("CONFIG_NET_9P_VIRTIO" . m) | ||||
|     ("CONFIG_VIRTIO_BLK" . m) | ||||
|  | @ -3820,7 +3822,7 @@ and copy/paste text in the console and in xterm.") | |||
| (define-public btrfs-progs | ||||
|   (package | ||||
|     (name "btrfs-progs") | ||||
|     (version "5.1.1") | ||||
|     (version "5.2.1") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "mirror://kernel.org/linux/kernel/" | ||||
|  | @ -3828,7 +3830,7 @@ and copy/paste text in the console and in xterm.") | |||
|                                   "btrfs-progs-v" version ".tar.xz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "06xybs7rglxjqkbzl2409acb3rgmnc5zc0xhyaxsc2p1x5yipfcw")))) | ||||
|                 "0crjv3i20nyj2dagfw6q7byshscpn6j7wlqch3apkzzzk00lmb1n")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (outputs '("out" | ||||
|                "static"))      ; static versions of the binaries in "out" | ||||
|  | @ -4611,7 +4613,7 @@ are exceeded.") | |||
| (define-public mtd-utils | ||||
|   (package | ||||
|     (name "mtd-utils") | ||||
|     (version "2.0.2") | ||||
|     (version "2.1.1") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|  | @ -4619,17 +4621,19 @@ are exceeded.") | |||
|                     "mtd-utils-" version ".tar.bz2")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1f30jszknc5v6ykmil8ajxgksmcg54q3rsp84jsancp9x0dycggv")))) | ||||
|                 "1lijl89l7hljx8xx70vrz9srd3h41v5gh4b0lvqnlv831yvyh5cd")))) | ||||
|     (arguments | ||||
|      '(#:configure-flags '("--enable-unit-tests"))) | ||||
|     (native-inputs | ||||
|      `(("cmocka" ,cmocka) | ||||
|        ("pkg-config" ,pkg-config))) | ||||
|     (inputs | ||||
|      `(("acl" ,acl) ; for XATTR | ||||
|      `(("acl" ,acl)                     ; extended attributes (xattr) | ||||
|        ("libuuid" ,util-linux) | ||||
|        ("lzo" ,lzo) | ||||
|        ("zlib" ,zlib))) | ||||
|        ("openssl" ,openssl)             ; optional crypto support | ||||
|        ("zlib" ,zlib) | ||||
|        ("zstd" ,zstd "lib"))) | ||||
|     (build-system gnu-build-system) | ||||
|     (synopsis "MTD Flash Storage Utilities") | ||||
|     (description "This package provides utilities for testing, partitioning, etc | ||||
|  |  | |||
|  | @ -6563,7 +6563,90 @@ This system contains the CFFI foreign slot access extension."))) | |||
|        ("trivia.cffi" ,sbcl-trivia.cffi) | ||||
|        ("optima" ,sbcl-optima))) | ||||
|     (arguments | ||||
|      `(#:test-asd-file "trivia.test.asd")) | ||||
|      `(#:test-asd-file "trivia.test.asd" | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-after 'create-asd 'remove-component | ||||
|            ;; XXX: The original .asd has no components, but our build system | ||||
|            ;; creates an entry nonetheless.  We need to remove it for the | ||||
|            ;; generated .asd to load properly.  See trivia.trivial for a | ||||
|            ;; similar problem. | ||||
|            (lambda* (#:key outputs #:allow-other-keys) | ||||
|              (let* ((out (assoc-ref outputs "out")) | ||||
|                     (asd (string-append out "/lib/" (%lisp-type) "/trivia.asd"))) | ||||
|                (substitute* asd | ||||
|                  (("  :components | ||||
| ") | ||||
|                   "")) | ||||
|                (substitute* asd | ||||
|                  ((" *\\(\\(:compiled-file \"trivia--system\"\\)\\)") | ||||
|                   "")))))))) | ||||
|     (description "Trivia is a pattern matching compiler that is compatible | ||||
| with Optima, another pattern matching library for Common Lisp.  It is meant to | ||||
| be faster and more extensible than Optima."))) | ||||
| 
 | ||||
| (define-public sbcl-mk-string-metrics | ||||
|   (package | ||||
|     (name "sbcl-mk-string-metrics") | ||||
|     (version "0.1.2") | ||||
|     (home-page "https://github.com/cbaggers/mk-string-metrics/") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url home-page) | ||||
|                     (commit version))) | ||||
|               (sha256 | ||||
|                (base32 "0bg0bv2mfd4k0g3x72x563hvmrx18xavaffr6xk5rh4if5j7kcf6")) | ||||
|               (file-name (git-file-name name version)))) | ||||
|     (build-system asdf-build-system/sbcl) | ||||
|     (synopsis "Calculate various string metrics efficiently in Common Lisp") | ||||
|     (description "This library implements efficient algorithms that calculate | ||||
| various string metrics in Common Lisp: | ||||
| 
 | ||||
| @itemize | ||||
| @item Damerau-Levenshtein distance | ||||
| @item Hamming distance | ||||
| @item Jaccard similarity coefficient | ||||
| @item Jaro distance | ||||
| @item Jaro-Winkler distance | ||||
| @item Levenshtein distance | ||||
| @item Normalized Damerau-Levenshtein distance | ||||
| @item Normalized Levenshtein distance | ||||
| @item Overlap coefficient | ||||
| @end itemize\n") | ||||
|     (license license:x11))) | ||||
| 
 | ||||
| (define-public sbcl-cl-str | ||||
|   (let ((commit "3d5ec86e3a0199e5973aacde951086dfd754b5e5")) | ||||
|     (package | ||||
|       (name "sbcl-cl-str") | ||||
|       (version (git-version "0.8" "1" commit)) | ||||
|       (home-page "https://github.com/vindarel/cl-str") | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                       (url home-page) | ||||
|                       (commit commit))) | ||||
|                 (sha256 | ||||
|                  (base32 "0szzzbygw9h985yxz909vvqrp69pmpcpahn7hn350lnyjislk9ga")) | ||||
|                 (file-name (git-file-name name version)))) | ||||
|       (build-system asdf-build-system/sbcl) | ||||
|       (inputs | ||||
|        `(("cl-ppcre" ,sbcl-cl-ppcre) | ||||
|          ("cl-ppcre-unicode" ,sbcl-cl-ppcre-unicode))) | ||||
|       (native-inputs | ||||
|        `(("prove" ,sbcl-prove) | ||||
|          ("prove-asdf" ,sbcl-prove-asdf))) | ||||
|       (arguments | ||||
|        `(#:asd-file "str.asd" | ||||
|          #:asd-system-name "str" | ||||
|          #:test-asd-file "str.test.asd")) | ||||
|       (synopsis "Modern, consistent and terse Common Lisp string manipulation library") | ||||
|       (description "A modern and consistent Common Lisp string manipulation | ||||
| library that focuses on modernity, simplicity and discoverability: | ||||
| @code{(str:trim s)} instead of @code{(string-trim '(#\\Space ...) s)}), or | ||||
| @code{str:concat strings} instead of an unusual format construct; one | ||||
| discoverable library instead of many; consistency and composability, where | ||||
| @code{s} is always the last argument, which makes it easier to feed pipes and | ||||
| arrows.") | ||||
|       (license license:expat)))) | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ | |||
| ;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org> | ||||
| ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> | ||||
| ;;; Copyright © 2014 Sou Bunnbu <iyzsong@gmail.com> | ||||
| ;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu> | ||||
| ;;; Copyright © 2014, 2019 Julien Lepiller <julien@lepiller.eu> | ||||
| ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> | ||||
| ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> | ||||
| ;;; Copyright © 2015, 2016, 2018 Eric Bavier <bavier@member.fsf.org> | ||||
|  | @ -95,6 +95,7 @@ | |||
|   #:use-module (gnu packages onc-rpc) | ||||
|   #:use-module (gnu packages pcre) | ||||
|   #:use-module (gnu packages perl) | ||||
|   #:use-module (gnu packages perl-check) | ||||
|   #:use-module (gnu packages perl-web) | ||||
|   #:use-module (gnu packages pkg-config) | ||||
|   #:use-module (gnu packages python) | ||||
|  | @ -116,6 +117,7 @@ | |||
|   #:use-module (gnu packages w3m) | ||||
|   #:use-module (gnu packages web) | ||||
|   #:use-module (gnu packages webkit) | ||||
|   #:use-module (gnu packages xdisorg) | ||||
|   #:use-module (gnu packages xorg) | ||||
|   #:use-module (gnu packages xml) | ||||
|   #:use-module ((guix licenses) | ||||
|  | @ -1119,7 +1121,8 @@ compresses it.") | |||
|               ("libxml2" ,libxml2) | ||||
|               ("perl" ,perl) | ||||
|               ("python-2" ,python-2) | ||||
|               ("mime-info" ,shared-mime-info))) | ||||
|               ("mime-info" ,shared-mime-info) | ||||
|               ("startup-notification" ,startup-notification))) | ||||
|     (arguments | ||||
|       '(#:configure-flags | ||||
|         '("--enable-gnutls" "--enable-pgpmime-plugin" "--enable-enchant" | ||||
|  | @ -1195,7 +1198,7 @@ delivery.") | |||
| (define-public exim | ||||
|   (package | ||||
|     (name "exim") | ||||
|     (version "4.92") | ||||
|     (version "4.92.1") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -1204,7 +1207,7 @@ delivery.") | |||
|                   (string-append "https://ftp.exim.org/pub/exim/exim4/old/exim-" | ||||
|                                  version ".tar.bz2"))) | ||||
|        (sha256 | ||||
|         (base32 "127spqn009wa6irp6r1k7a24r8vdwb6mf0raamxn8lbxsnrwy7sl")))) | ||||
|         (base32 "132zmxgzz35xwi89g3crw6hd3y74rxj5zcpamakvrnlcn256amdp")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (inputs | ||||
|      `(("bdb" ,bdb-5.3) ; ‘#error Version 6 and later BDB API is not supported’ | ||||
|  | @ -1900,6 +1903,136 @@ Khard can also be used from within the email client @command{mutt}.") | |||
| in Perl.") | ||||
|     (license bsd-3))) | ||||
| 
 | ||||
| (define-public perl-mail-authenticationresults | ||||
|   (package | ||||
|     (name "perl-mail-authenticationresults") | ||||
|     (version "1.20180923") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|                      "mirror://cpan/authors/id/M/MB/MBRADSHAW/" | ||||
|                      "Mail-AuthenticationResults-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1g1wym9vcbhldwvi4w5pl0fhd4jh2icj975awf4wr5xmkli9mxbz")))) | ||||
|     (build-system perl-build-system) | ||||
|     (native-inputs | ||||
|      `(("perl-test-exception" ,perl-test-exception))) | ||||
|     (home-page "https://metacpan.org/release/Mail-AuthenticationResults") | ||||
|     (synopsis "Object Oriented Authentication-Results Headers") | ||||
|     (description "Mail::AuthenticationResults parses the message header field | ||||
| that indicates the message authentication status as per RFC7601.  This module | ||||
| is not fully compliant with the RFC but it tries to implement most styles of | ||||
| Authentication-Results header seen in the wild.") | ||||
|     (license perl-license))) | ||||
| 
 | ||||
| (define-public perl-mail-dkim | ||||
|   (package | ||||
|     (name "perl-mail-dkim") | ||||
|     (version "0.55") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|                      "mirror://cpan/authors/id/M/MB/MBRADSHAW/Mail-DKIM-" | ||||
|                      version | ||||
|                      ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "18nsh1ff6fkns4xk3y2ixmzmadgggydj11qkzj6nlnq2hzqxsafz")))) | ||||
|     (build-system perl-build-system) | ||||
|     (propagated-inputs | ||||
|      `(("perl-crypt-openssl-rsa" ,perl-crypt-openssl-rsa) | ||||
|        ("perl-mail-authenticationresults" ,perl-mail-authenticationresults) | ||||
|        ("perl-mailtools" ,perl-mailtools) | ||||
|        ("perl-net-dns" ,perl-net-dns))) | ||||
|     (native-inputs | ||||
|      `(("perl-net-dns-resolver-mock" ,perl-net-dns-resolver-mock) | ||||
|        ("perl-test-requiresinternet" ,perl-test-requiresinternet) | ||||
|        ("perl-yaml-libyaml" ,perl-yaml-libyaml))) | ||||
|     (home-page "https://metacpan.org/release/Mail-DKIM") | ||||
|     (synopsis "Signs/verifies Internet mail with DKIM/DomainKey signatures") | ||||
|     (description "Mail::DKIM is a Perl module that implements the new Domain | ||||
| Keys Identified Mail (DKIM) standard, and the older Yahoo! DomainKeys standard, | ||||
| both of which sign and verify emails using digital signatures and DNS records. | ||||
| Mail-DKIM can be used by any Perl program that wants to provide support for | ||||
| DKIM and/or DomainKeys.") | ||||
|     (license gpl3+))) | ||||
| 
 | ||||
| (define-public dkimproxy | ||||
|   (package | ||||
|     (name "dkimproxy") | ||||
|     (version "1.4.1") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|                      "mirror://sourceforge/dkimproxy/dkimproxy/" | ||||
|                      version "/dkimproxy-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1gc5c7lg2qrlck7b0lvjfqr824ch6jkrzkpsn0gjvlzg7hfmld75")) | ||||
|               (patches | ||||
|                (search-patches "dkimproxy-add-ipv6-support.patch")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      `(#:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-after 'install 'make-wrapper | ||||
|            (lambda* (#:key inputs outputs #:allow-other-keys) | ||||
|              (let* ((out (assoc-ref outputs "out")) | ||||
|                     (wrap.pl (lambda (scripts keys) | ||||
|                                (for-each | ||||
|                                 (lambda (script) | ||||
|                                   (wrap-program (string-append out script) | ||||
|                                     `("PERL5LIB" ":" prefix | ||||
|                                       ,(map (λ (input) | ||||
|                                               (string-append | ||||
|                                                (assoc-ref inputs input) | ||||
|                                                "/lib/perl5/site_perl")) | ||||
|                                             keys)))) | ||||
|                                 scripts)))) | ||||
|                (wrap.pl (list "/bin/dkimproxy.in" | ||||
|                               "/bin/dkimproxy.out") | ||||
|                         (list "perl-crypt-openssl-rsa" | ||||
|                               "perl-io-socket-inet6" | ||||
|                               "perl-mailtools" | ||||
|                               "perl-mail-authenticationresults" | ||||
|                               "perl-mail-dkim" | ||||
|                               "perl-net-dns" | ||||
|                               "perl-net-server" | ||||
|                               "perl-socket6")) | ||||
|                (wrap.pl (list "/bin/dkim_responder.pl") | ||||
|                         (list "perl-crypt-openssl-rsa" | ||||
|                               "perl-mail-dkim" | ||||
|                               "perl-mailtools" | ||||
|                               "perl-mime-tools" | ||||
|                               "perl-net-dns" | ||||
|                               "perl-timedate")) | ||||
|                #t)))))) | ||||
|     (inputs | ||||
|      `(("perl" ,perl) | ||||
|        ("perl-crypt-openssl-rsa" ,perl-crypt-openssl-rsa) | ||||
|        ("perl-io-socket-inet6" ,perl-io-socket-inet6) | ||||
|        ("perl-mailtools" ,perl-mailtools) | ||||
|        ("perl-mail-authenticationresults" ,perl-mail-authenticationresults) | ||||
|        ("perl-mail-dkim" ,perl-mail-dkim) | ||||
|        ("perl-mime-tools" ,perl-mime-tools) | ||||
|        ("perl-net-dns" ,perl-net-dns) | ||||
|        ("perl-net-server" ,perl-net-server) | ||||
|        ("perl-socket6" ,perl-socket6) | ||||
|        ("perl-timedate" ,perl-timedate))) | ||||
|     (home-page "http://dkimproxy.sourceforge.net/") | ||||
|     (synopsis "SMTP proxy to sign and verify Internet mail with DKIM headers") | ||||
|     (description | ||||
|      "DKIMproxy is an SMTP proxy that signs and verifies Internet mail using the | ||||
| @code{Mail::DKIM} Perl module.  It comprises two separate proxies: an outbound | ||||
| proxy for signing outgoing email, and an inbound proxy for verifying signatures | ||||
| of incoming messages. | ||||
| 
 | ||||
| It was designed for Postfix, but can be used to add DKIM support to nearly any | ||||
| existing mail server.  With Postfix, the proxies can operate as either | ||||
| @code{Before-Queue} or @code{After-Queue} content filters.") | ||||
|     (license gpl2+))) | ||||
| 
 | ||||
| (define-public mb2md | ||||
|   (package | ||||
|     (name "mb2md") | ||||
|  |  | |||
|  | @ -162,7 +162,7 @@ the traditional flat-text whatis databases.") | |||
| (define-public man-pages | ||||
|   (package | ||||
|     (name "man-pages") | ||||
|     (version "5.01") | ||||
|     (version "5.02") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -172,7 +172,7 @@ the traditional flat-text whatis databases.") | |||
|               (string-append "mirror://kernel.org/linux/docs/man-pages/Archive/" | ||||
|                              "man-pages-" version ".tar.xz"))) | ||||
|        (sha256 | ||||
|         (base32 "09xn8d8xxwgms6h1bvjlgn3mxz51vxf3ra0ry9f5dqi29qry3z3x")))) | ||||
|         (base32 "1s4pdz2pwf0kvhdwx2s6lqn3xxzi38yz5jfyq5ymdmswc9gaiyn2")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      '(#:phases (modify-phases %standard-phases (delete 'configure)) | ||||
|  |  | |||
|  | @ -64,12 +64,11 @@ | |||
|                           (else '()))))) | ||||
|    (synopsis "Multiple-precision arithmetic library") | ||||
|    (description | ||||
|     "@dfn{GMP} (the GNU Multiple Precision Arithmetic Library) is a library for | ||||
| arbitrary-precision arithmetic, operating on signed integers, rational numbers | ||||
| and floating point numbers.  The precision is only limited by the available | ||||
| memory.  The library is highly optimized, with a design focus on execution | ||||
| speed.  It is aimed at use in, for example, cryptography and computational | ||||
| algebra.") | ||||
|     "The @acronym{GMP, the GNU Multiple Precision Arithmetic} library performs | ||||
| arbitrary-precision arithmetic on signed integers, rational numbers and floating | ||||
| point numbers.  The precision is only limited by the available memory. | ||||
| The library is highly optimized, with a design focus on execution speed. | ||||
| It is aimed at use in, for example, cryptography and computational algebra.") | ||||
|    (license lgpl3+) | ||||
|    (home-page "https://gmplib.org/"))) | ||||
| 
 | ||||
|  | @ -105,7 +104,7 @@ algebra.") | |||
|    (propagated-inputs `(("gmp" ,gmp)))            ; <mpfr.h> refers to <gmp.h> | ||||
|    (synopsis "C library for arbitrary-precision floating-point arithmetic") | ||||
|    (description | ||||
|     "GNU@tie{}@dfn{MPFR} (Multiple Precision Floating-Point Reliably) is a C | ||||
|     "GNU@tie{}@acronym{MPFR, Multiple Precision Floating-Point Reliably} is a C | ||||
| library for performing multiple-precision, floating-point computations with | ||||
| correct rounding.") | ||||
|    (license lgpl3+) | ||||
|  | @ -128,8 +127,8 @@ correct rounding.") | |||
|                         ("mpfr" ,mpfr))) | ||||
|    (synopsis "C library for arbitrary-precision complex arithmetic") | ||||
|    (description | ||||
|     "GNU@tie{}@dfn{MPC} (Multiple Precision Complex library) is a C library for | ||||
| performing arithmetic on complex numbers.  It supports arbitrarily high | ||||
|     "GNU@tie{}@acronym{MPC, Multiple Precision Complex library} is a C library | ||||
| for performing arithmetic on complex numbers.  It supports arbitrarily high | ||||
| precision and correctly rounds the results.") | ||||
|    (license lgpl3+) | ||||
|    (home-page "http://multiprecision.org/mpc/"))) | ||||
|  | @ -150,11 +149,11 @@ precision and correctly rounds the results.") | |||
|                          ("mpfr" ,mpfr))) | ||||
|     (synopsis "C library for arbitrary-precision interval arithmetic") | ||||
|     (description | ||||
|      "@dfn{MPFI} (Multiple Precision Floating-point Interval) is a portable C | ||||
|      "@acronym{MPFI, Multiple Precision Floating-point Interval} is a portable C | ||||
| library for arbitrary-precision interval arithmetic, with intervals represented | ||||
| using MPFR reliable floating-point numbers.  It's based on the @dfn{GMP} (GNU | ||||
| Multiple Precision Arithmetic) and GNU@tie{}@dfn{MPFR} (Multiple Precision | ||||
| Floating-Point Reliably) libraries. | ||||
| using MPFR reliable floating-point numbers.  It's based on the @acronym{GMP, GNU | ||||
| Multiple Precision Arithmetic} and GNU@tie{}@acronym{MPFR, Multiple Precision | ||||
| Floating-Point Reliably} libraries. | ||||
| 
 | ||||
| The purpose of arbitrary-precision interval arithmetic is to get results that | ||||
| are both guaranteed, thanks to interval computation, and accurate, thanks to | ||||
|  |  | |||
|  | @ -28,6 +28,7 @@ | |||
| ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz> | ||||
| ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com> | ||||
| ;;; Copyright © 2019 Vasile Dumitrascu <va511e@yahoo.com> | ||||
| ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -593,14 +594,14 @@ of the same name.") | |||
| (define-public wireshark | ||||
|   (package | ||||
|     (name "wireshark") | ||||
|     (version "3.0.2") | ||||
|     (version "3.0.3") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "https://www.wireshark.org/download/src/wireshark-" | ||||
|                            version ".tar.xz")) | ||||
|        (sha256 | ||||
|         (base32 "0fz5lbyiw4a27fqc4ndi1w20bpcb6wi9k7vjv29l9fhd99kca7ky")))) | ||||
|         (base32 "0711jilp9sbgi46d105m3galw8n4wk5yncawi08031qxg2f754mg")))) | ||||
|     (build-system cmake-build-system) | ||||
|     (arguments | ||||
|      `(#:phases | ||||
|  | @ -1081,6 +1082,29 @@ definitions and structure manipulators for Perl.") | |||
| offline emulation of DNS.") | ||||
|   (license license:perl-license))) | ||||
| 
 | ||||
| (define-public perl-net-dns-resolver-mock | ||||
|   (package | ||||
|     (name "perl-net-dns-resolver-mock") | ||||
|     (version "1.20171219") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append | ||||
|                      "mirror://cpan/authors/id/M/MB/MBRADSHAW/" | ||||
|                      "Net-DNS-Resolver-Mock-" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0m3rxpkv1b9121srvbqkrgzg4m8mnydiydqv34in1i1ixwrl6jn9")))) | ||||
|     (build-system perl-build-system) | ||||
|     (inputs | ||||
|      `(("perl-net-dns" ,perl-net-dns))) | ||||
|     (home-page "https://metacpan.org/release/Net-DNS-Resolver-Mock") | ||||
|     (synopsis "Mock DNS Resolver object for testing") | ||||
|     (description | ||||
|      "Net::DNS::Resolver::Mock is a subclass of Net::DNS::Resolver, but returns | ||||
| static data from any provided DNS zone file instead of querying the network. | ||||
| It is intended primarily for use in testing.") | ||||
|     (license license:perl-license))) | ||||
| 
 | ||||
| (define-public perl-netaddr-ip | ||||
|  (package | ||||
|   (name "perl-netaddr-ip") | ||||
|  |  | |||
							
								
								
									
										75
									
								
								gnu/packages/patches/dkimproxy-add-ipv6-support.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								gnu/packages/patches/dkimproxy-add-ipv6-support.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,75 @@ | |||
| From: Tobias Geerinckx-Rice <me@tobias.gr> | ||||
| Date: Fri, 01 Mar 2019 20:51:32 +0100 | ||||
| Subject: [PATCH] dkimproxy: Add IPv6 support. | ||||
| 
 | ||||
| The following patch was copied verbatim from Debian[0]. | ||||
| 
 | ||||
| [0]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=656041 | ||||
| 
 | ||||
| ---
 | ||||
| --- dkimproxy-1.4.1.orig/lib/MSDW/SMTP/Server.pm
 | ||||
| +++ dkimproxy-1.4.1/lib/MSDW/SMTP/Server.pm
 | ||||
| @@ -11,7 +11,7 @@
 | ||||
|  # Written by Bennett Todd <bet@rahul.net> | ||||
|   | ||||
|  package MSDW::SMTP::Server; | ||||
| -use IO::Socket;
 | ||||
| +use IO::Socket::INET6;
 | ||||
|  use IO::File; | ||||
|   | ||||
|  =head1 NAME | ||||
| @@ -88,14 +88,14 @@
 | ||||
|  =item new(interface => $interface, port => $port); | ||||
|   | ||||
|  The interface and port to listen on must be specified. The interface | ||||
| -must be a valid numeric IP address (0.0.0.0 to listen on all
 | ||||
| -interfaces, as usual); the port must be numeric. If this call
 | ||||
| -succeeds, it returns a server structure with an open
 | ||||
| -IO::Socket::INET in it, ready to listen on. If it fails it dies, so
 | ||||
| -if you want anything other than an exit with an explanatory error
 | ||||
| -message, wrap the constructor call in an eval block and pull the
 | ||||
| -error out of $@ as usual. This is also the case for all other
 | ||||
| -methods; they succeed or they die.
 | ||||
| +must be a valid numeric IPv4 or IPv6 address (0.0.0.0 or :: to listen
 | ||||
| +on all interfaces, as usual); the port must be numeric. If this call
 | ||||
| +succeeds, it returns a server structure with an open IO::Socket::INET6
 | ||||
| +in it, ready to listen on. If it fails it dies, so if you want
 | ||||
| +anything other than an exit with an explanatory error message, wrap
 | ||||
| +the constructor call in an eval block and pull the error out of $@ as
 | ||||
| +usual. This is also the case for all other methods; they succeed or
 | ||||
| +they die.
 | ||||
|   | ||||
|  =item accept([debug => FD]); | ||||
|   | ||||
| @@ -154,7 +154,7 @@
 | ||||
|      my ($this, @opts) = @_; | ||||
|      my $class = ref($this) || $this; | ||||
|      my $self = bless { @opts }, $class; | ||||
| -    $self->{sock} = IO::Socket::INET->new(
 | ||||
| +    $self->{sock} = IO::Socket::INET6->new(
 | ||||
|  	LocalAddr => $self->{interface}, | ||||
|  	LocalPort => $self->{port}, | ||||
|  	Proto => 'tcp', | ||||
| only in patch2: | ||||
| unchanged: | ||||
| --- dkimproxy-1.4.1.orig/scripts/dkimproxy.out
 | ||||
| +++ dkimproxy-1.4.1/scripts/dkimproxy.out
 | ||||
| @@ -314,17 +314,11 @@
 | ||||
|  { | ||||
|  	my $self = shift; | ||||
|   | ||||
| -	# try to determine peer's address
 | ||||
| -	use Socket;
 | ||||
| -	my $peersockaddr = getpeername(STDOUT);
 | ||||
| -	my ($port, $iaddr) = sockaddr_in($peersockaddr);
 | ||||
| -	$ENV{REMOTE_ADDR} = inet_ntoa($iaddr);
 | ||||
| -
 | ||||
|  	# initialize syslog | ||||
|  	eval | ||||
|  	{ | ||||
|  		openlog("dkimproxy.out", "perror,pid,ndelay", "mail"); | ||||
| -		syslog("debug", '%s', "connect from $ENV{REMOTE_ADDR}");
 | ||||
| +		syslog("debug", '%s', "connect from $self->{server}->{peeraddr}");
 | ||||
|  	}; | ||||
|  	if (my $E = $@) | ||||
|  	{ | ||||
							
								
								
									
										34
									
								
								gnu/packages/patches/libvirt-remove-ATTRIBUTE_UNUSED.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								gnu/packages/patches/libvirt-remove-ATTRIBUTE_UNUSED.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,34 @@ | |||
| From: Tobias Geerinckx-Rice <me@tobias.gr> | ||||
| Date: Thu, 25 Jul 2019 21:48:25 +0200 | ||||
| Subject: [PATCH]: libvirt: remove ATTRIBUTE_UNUSED | ||||
| 
 | ||||
| This should fix the error reported here[0].  Patch taken verbatim from | ||||
| upstream[1]. | ||||
| 
 | ||||
| [0]: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=36634#28 | ||||
| [1]: https://github.com/libvirt/libvirt/commit/759bf903a6c24a8efa25c7cf4b099d952eda9bd3 | ||||
| 
 | ||||
| From 759bf903a6c24a8efa25c7cf4b099d952eda9bd3 Mon Sep 17 00:00:00 2001 | ||||
| From: Pavel Hrdina <phrdina@redhat.com> | ||||
| Date: Mon, 22 Jul 2019 14:46:34 +0200 | ||||
| Subject: [PATCH] vircgroupv2: remove ATTRIBUTE_UNUSED for used attribute | ||||
| 
 | ||||
| Signed-off-by: Pavel Hrdina <phrdina@redhat.com> | ||||
| Acked-by: Peter Krempa <pkrempa@redhat.com> | ||||
| ---
 | ||||
|  src/util/vircgroupv2.c | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/src/util/vircgroupv2.c b/src/util/vircgroupv2.c
 | ||||
| index af3192c99c..e36c36685b 100644
 | ||||
| --- a/src/util/vircgroupv2.c
 | ||||
| +++ b/src/util/vircgroupv2.c
 | ||||
| @@ -399,7 +399,7 @@ virCgroupV2EnableController(virCgroupPtr group,
 | ||||
|   | ||||
|   | ||||
|  static int | ||||
| -virCgroupV2MakeGroup(virCgroupPtr parent ATTRIBUTE_UNUSED,
 | ||||
| +virCgroupV2MakeGroup(virCgroupPtr parent,
 | ||||
|                       virCgroupPtr group, | ||||
|                       bool create, | ||||
|                       unsigned int flags) | ||||
							
								
								
									
										25
									
								
								gnu/packages/patches/pcre2-fix-jit_match-crash.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								gnu/packages/patches/pcre2-fix-jit_match-crash.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| From: Tobias Geerinckx-Rice <me@tobias.gr> | ||||
| Date: Thu, 01 Aug 2019 21:12:52 +0200 | ||||
| Subject: [PATCH] gnu: pcre2: Fix jit_match crash. | ||||
| 
 | ||||
| Fixes <https://bugs.exim.org/show_bug.cgi?id=2421>, reported as a ‘secrity | ||||
| problem’. | ||||
| 
 | ||||
| Copied verbatim from upstream[0]. | ||||
| 
 | ||||
| [0]: https://vcs.pcre.org/pcre2/code/trunk/src/pcre2_jit_compile.c?view=patch&r1=1089&r2=1092&pathrev=1092 | ||||
| 
 | ||||
| --- trunk/src/pcre2_jit_compile.c	2019/05/10 13:15:20	1089
 | ||||
| +++ trunk/src/pcre2_jit_compile.c	2019/05/13 16:38:18	1092
 | ||||
| @@ -8571,7 +8571,10 @@
 | ||||
|  PCRE2_SPTR bptr; | ||||
|  uint32_t c; | ||||
|   | ||||
| -GETCHARINC(c, cc);
 | ||||
| +/* Patch by PH */
 | ||||
| +/* GETCHARINC(c, cc); */
 | ||||
| +
 | ||||
| +c = *cc++;
 | ||||
|  #if PCRE2_CODE_UNIT_WIDTH == 32 | ||||
|  if (c >= 0x110000) | ||||
|    return NULL; | ||||
|  | @ -89,6 +89,7 @@ POSIX regular expression API.") | |||
| (define-public pcre2 | ||||
|   (package | ||||
|     (name "pcre2") | ||||
|     (replacement pcre2/fixed) | ||||
|     (version "10.33") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|  | @ -125,3 +126,14 @@ own native API, as well as a set of wrapper functions that correspond to the | |||
| POSIX regular expression API.") | ||||
|    (license license:bsd-3) | ||||
|    (home-page "https://www.pcre.org/"))) | ||||
| 
 | ||||
| (define-public pcre2/fixed | ||||
|   ;; PHP >= 7.3.8 requires a fixed version at build time, so make it public | ||||
|   ;; and hide it in the UI. | ||||
|   (package | ||||
|     (inherit pcre2) | ||||
|     (source | ||||
|      (origin | ||||
|        (inherit (package-source pcre2)) | ||||
|        (patches (search-patches "pcre2-fix-jit_match-crash.patch")))) | ||||
|     (properties '((hidden? . #t))))) | ||||
|  |  | |||
|  | @ -58,15 +58,15 @@ | |||
| (define-public php | ||||
|   (package | ||||
|     (name "php") | ||||
|     (version "7.3.6") | ||||
|     (version "7.3.8") | ||||
|     (home-page "https://secure.php.net/") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append home-page "distributions/" | ||||
|                                   name "-" version ".tar.xz")) | ||||
|                                   "php-" version ".tar.xz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0r51aiff2abbr3d2swhvja0wm56sjxzqbciabcvvq3m3v9kqkz7y")) | ||||
|                 "19fm990yl97fq538lkp0m1imbp30qrx7785x211w1n15wqm6n17n")) | ||||
|               (modules '((guix build utils))) | ||||
|               (snippet | ||||
|                '(with-directory-excursion "ext" | ||||
|  | @ -76,7 +76,7 @@ | |||
|                             ;;"mbstring/libmbfl" | ||||
|                             ;;"date/lib" | ||||
|                             ;;"bcmath/libbcmath" | ||||
|                             ;;"fileinfo/libmagic" ; This is a patched version of libmagic. | ||||
|                             ;;"fileinfo/libmagic" ; a patched version of libmagic | ||||
|                             '("gd/libgd" | ||||
|                               "mbstring/oniguruma" | ||||
|                               "pcre/pcre2lib" | ||||
|  | @ -367,7 +367,7 @@ | |||
|        ("oniguruma" ,oniguruma-5) | ||||
|        ("openldap" ,openldap) | ||||
|        ("openssl" ,openssl) | ||||
|        ("pcre" ,pcre2) | ||||
|        ("pcre" ,pcre2/fixed)            ; must be /fixed for tests | ||||
|        ("postgresql" ,postgresql) | ||||
|        ("readline" ,readline) | ||||
|        ("sqlite" ,sqlite) | ||||
|  | @ -378,7 +378,7 @@ | |||
|      `(("pkg-config" ,pkg-config) | ||||
|        ("bison" ,bison) | ||||
|        ("intltool" ,intltool) | ||||
|        ("procps" ,procps)))         ; For tests. | ||||
|        ("procps" ,procps)))             ; for tests | ||||
|     (synopsis "PHP programming language") | ||||
|     (description | ||||
|       "PHP (PHP Hypertext Processor) is a server-side (CGI) scripting | ||||
|  |  | |||
|  | @ -10945,25 +10945,36 @@ command @command{natsort} that exposes this functionality in the command line.") | |||
| (define-public python-glances | ||||
|   (package | ||||
|   (name "python-glances") | ||||
|   (version "3.0.2") | ||||
|   (version "3.1.1") | ||||
|   (source | ||||
|     (origin | ||||
|       (method url-fetch) | ||||
|       (uri (pypi-uri "Glances" version)) | ||||
|       (sha256 | ||||
|         (base32 | ||||
|           "09fxysfp1n16csqvzvawy74qm6a94nvwjf3vcf5gkqp4i6k4vjjy")))) | ||||
|           "07j1ggzsqiskyz1i4mrnyr9i95v0dqi0i0hibnv1l188km8shmi8")) | ||||
|       (modules '((guix build utils))) | ||||
|       (snippet | ||||
|        '(begin | ||||
|           ;; Glances phones PyPI for weekly update checks by default. | ||||
|           ;; Disable these.  The user can re-enable them if desired. | ||||
|           (substitute* "glances/outdated.py" | ||||
|             (("^(.*)self\\.load_config\\(config\\)\n" line indentation) | ||||
|              (string-append indentation | ||||
|                             "self.args.disable_check_update = True\n" | ||||
|                             line))) | ||||
|           #t)))) | ||||
|   (build-system python-build-system) | ||||
|   (propagated-inputs | ||||
|    `(("python-psutil" ,python-psutil))) | ||||
|    `(("python-future" ,python-future) | ||||
|      ("python-psutil" ,python-psutil))) | ||||
|   (home-page | ||||
|     "https://github.com/nicolargo/glances") | ||||
|   (synopsis | ||||
|     "A cross-platform curses-based monitoring tool") | ||||
|   (synopsis "Cross-platform curses-based monitoring tool") | ||||
|   (description | ||||
|     "Glances is a curses-based monitoring tool for a wide variety of platforms. | ||||
| Glances uses the PsUtil library to get information from your system. It monitors | ||||
| CPU, load, memory, network bandwidth, disk I/O, disk use, and more.") | ||||
| Glances uses the PsUtil library to get information from your system.  It | ||||
| monitors CPU, load, memory, network bandwidth, disk I/O, disk use, and more.") | ||||
|   (license license:lgpl3+))) | ||||
| 
 | ||||
| (define-public python2-glances | ||||
|  |  | |||
|  | @ -30,7 +30,7 @@ | |||
| (define-public re2 | ||||
|    (package | ||||
|      (name "re2") | ||||
|      (version "2019-07-01") | ||||
|      (version "2019-08-01") | ||||
|      (home-page "https://github.com/google/re2") | ||||
|      (source (origin | ||||
|                (method git-fetch) | ||||
|  | @ -38,7 +38,7 @@ | |||
|                (file-name (git-file-name name version)) | ||||
|                (sha256 | ||||
|                 (base32 | ||||
|                  "1ric6gdnf5mqj5iy5f81al49mr3mmjqj3nqi3mw2hjdbbgwkdn71")))) | ||||
|                  "11w9x16y26nfgliis28ivrh9b1x6pxawdwxfwxfjh34h57c0dkzg")))) | ||||
|      (build-system gnu-build-system) | ||||
|      (arguments | ||||
|       `(#:modules ((guix build gnu-build-system) | ||||
|  |  | |||
|  | @ -34,15 +34,16 @@ | |||
| (define-public sane-backends-minimal | ||||
|   (package | ||||
|     (name "sane-backends-minimal") | ||||
|     (version "1.0.27") | ||||
|     (version "1.0.28") | ||||
|     (source (origin | ||||
|              (method url-fetch) | ||||
|              (uri (string-append | ||||
|                    "https://alioth.debian.org/frs/download.php/latestfile/176/" | ||||
|                    "https://gitlab.com/sane-project/backends/uploads/" | ||||
|                    "9e718daff347826f4cfe21126c8d5091/" | ||||
|                    "sane-backends-" version ".tar.gz")) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "1j9nbqspaj0rlgalafb5z6r606k0i22kz0rcpd744p176yzlfdr9")) | ||||
|                "00yy8q9hqdf0zjxxl4d8njr9zf0hhi3a9ib23ikc2anqf8zhy9ii")) | ||||
|              (modules '((guix build utils))) | ||||
|              (snippet | ||||
|               ;; Generated HTML files and udev rules normally embed a | ||||
|  | @ -63,6 +64,10 @@ | |||
|          (add-before 'configure 'disable-backends | ||||
|            (lambda _ | ||||
|              (setenv "BACKENDS" " ") | ||||
| 
 | ||||
|              ;; Disable tests that may require back ends to be built. | ||||
|              (substitute* "testsuite/Makefile.in" | ||||
|                ((" backend ") " ")) | ||||
|              #t)) | ||||
|          (add-after 'unpack 'disable-failing-tests | ||||
|            (lambda _ | ||||
|  | @ -113,6 +118,7 @@ package contains the library, but no drivers.") | |||
|     (name "sane-backends") | ||||
|     (inputs | ||||
|      `(("hplip" ,(@ (gnu packages cups) hplip-minimal)) | ||||
|        ("libjpeg" ,libjpeg)             ; wanted by pixma, epsonds, others | ||||
|        ("libpng" ,libpng)               ; support ‘scanimage --format=png’ | ||||
|        ,@(package-inputs sane-backends-minimal))) | ||||
|     (arguments | ||||
|  |  | |||
|  | @ -107,7 +107,7 @@ joystick, and graphics hardware.") | |||
| (define-public sdl2 | ||||
|   (package (inherit sdl) | ||||
|     (name "sdl2") | ||||
|     (version "2.0.9") | ||||
|     (version "2.0.10") | ||||
|     (source (origin | ||||
|              (method url-fetch) | ||||
|              (uri | ||||
|  | @ -115,7 +115,7 @@ joystick, and graphics hardware.") | |||
|                              version ".tar.gz")) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "1c94ndagzkdfqaa838yqg589p1nnqln8mv0hpwfhrkbfczf8cl95")))) | ||||
|                "0mqxp6w5jhbq6y1j690g9r3gpzwjxh4czaglw8x05l7hl49nqrdl")))) | ||||
|     (arguments | ||||
|      (substitute-keyword-arguments (package-arguments sdl) | ||||
|        ((#:configure-flags flags) | ||||
|  |  | |||
|  | @ -709,18 +709,17 @@ interactive POSIX shell targeted at resource-constrained systems.") | |||
| (define-public mksh | ||||
|   (package | ||||
|     (name "mksh") | ||||
|     (version "56") | ||||
|     (version "57") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "https://www.mirbsd.org/MirOS/dist/mir/mksh/mksh-R" | ||||
|                            version ".tgz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1x4zjj9259ijpf8jw0nyh1fnr1pbm5fwvylclpvcrlb45xrglf5d")))) | ||||
|         (base32 "0xdykm1z710wriwd6nc8s8lwk2dwjl63dq96xxaawlid31a1241x")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      `(#:tests? #f ; tests require access to /dev/tty | ||||
|      `(#:tests? #f                      ; tests require access to /dev/tty | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (delete 'configure) | ||||
|  | @ -744,7 +743,7 @@ interactive POSIX shell targeted at resource-constrained systems.") | |||
| Korn Shell programming language and a successor to the Public Domain Korn | ||||
| Shell (pdksh).") | ||||
|     (license (list miros | ||||
|                    isc)))) ; strlcpy.c | ||||
|                    isc))))              ; strlcpy.c | ||||
| 
 | ||||
| (define-public oil-shell | ||||
|   (package | ||||
|  |  | |||
|  | @ -30,7 +30,7 @@ | |||
| (define-public syncthing | ||||
|   (package | ||||
|     (name "syncthing") | ||||
|     (version "1.1.4") | ||||
|     (version "1.2.0") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "https://github.com/syncthing/syncthing" | ||||
|  | @ -38,7 +38,7 @@ | |||
|                                   "/syncthing-source-v" version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0pkb9vdb10lnlk6sgg6hxgkdjnvxx90cfdf8vgrc5sljzm5qhr6l")) | ||||
|                 "1l7crhggg2vq4y7pgzsj8wp7k4l9hw5yblflly5bzwywzxz8ff83")) | ||||
|               (modules '((guix build utils))) | ||||
|               ;; Delete bundled ("vendored") free software source code. | ||||
|               (snippet '(begin | ||||
|  | @ -102,10 +102,14 @@ | |||
|        ("go-github-com-vitrun-qart-coding" ,go-github-com-vitrun-qart-coding) | ||||
|        ("go-github-com-vitrun-qart-gf256" ,go-github-com-vitrun-qart-gf256) | ||||
|        ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty) | ||||
|        ("go-golang-org-x-crypto-bcrypt" ,go-golang-org-x-crypto-bcrypt) | ||||
|        ("go-golang-org-x-crypto-blowfish" ,go-golang-org-x-crypto-blowfish) | ||||
|        ("go-golang-org-x-crypto" ,go-golang-org-x-crypto) | ||||
|        ("go-github-com-flynn-archive-go-shlex" | ||||
|         ,go-github-com-flynn-archive-go-shlex) | ||||
|        ("go-github-com-getsentry-raven-go" ,go-github-com-getsentry-raven-go) | ||||
|        ("go-github-com-maruel-panicparse" ,go-github-com-maruel-panicparse) | ||||
|        ("go-github-com-ccding-go-stun" ,go-github-com-ccding-go-stun) | ||||
|        ("go-github-com-audriusbutkevicius-pfilter" ,go-github-com-audriusbutkevicius-pfilter) | ||||
|        ("go-github-com-lucas-clemente-quic-go" ,go-github-com-lucas-clemente-quic-go) | ||||
| 
 | ||||
|        ;; For tests | ||||
|        ("go-github-com-d4l3k-messagediff" ,go-github-com-d4l3k-messagediff))) | ||||
|  | @ -569,11 +573,11 @@ run-time in Go.") | |||
|     (license asl2.0))) | ||||
| 
 | ||||
| (define-public go-github-com-syndtr-goleveldb | ||||
|   (let ((commit "34011bf325bce385408353a30b101fe5e923eb6e") | ||||
|         (revision "2")) | ||||
|   (let ((commit "c3a204f8e96543bb0cc090385c001078f184fc46") | ||||
|         (revision "3")) | ||||
|     (package | ||||
|       (name "go-github-com-syndtr-goleveldb") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|       (version (git-version "1.0.1" revision commit)) | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|  | @ -582,7 +586,7 @@ run-time in Go.") | |||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "097ja0vyj6p27zrxha9nhk09fj977xsvhmd3bk2hbyvnbw4znnhd")))) | ||||
|                   "18cac90dim2z5g28vazzibxa058q2ynihsmf0vbscwzba6l5s5ms")))) | ||||
|       (build-system go-build-system) | ||||
|       (propagated-inputs | ||||
|        `(("go-github-com-golang-snappy" ,go-github-com-golang-snappy))) | ||||
|  | @ -739,28 +743,6 @@ hashes.") | |||
|       (home-page "https://github.com/chmduquesne/rollinghash") | ||||
|       (license expat)))) | ||||
| 
 | ||||
| (define-public go-github-com-pkg-errors | ||||
|   (package | ||||
|     (name "go-github-com-pkg-errors") | ||||
|     (version "0.8.1") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url "https://github.com/pkg/errors.git") | ||||
|                     (commit (string-append "v" version)))) | ||||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0g5qcb4d4fd96midz0zdk8b9kz8xkzwfa8kr1cliqbg8sxsy5vd1")))) | ||||
|     (build-system go-build-system) | ||||
|     (arguments | ||||
|      `(#:import-path "github.com/pkg/errors")) | ||||
|     (synopsis "Go error handling primitives") | ||||
|     (description "This package provides @code{error}, which offers simple | ||||
| error handling primitives in Go.") | ||||
|     (home-page "https://github.com/pkg/errors") | ||||
|     (license bsd-2))) | ||||
| 
 | ||||
| (define-public go-github-com-petermattis-goid | ||||
|   (let ((commit "3db12ebb2a599ba4a96bea1c17b61c2f78a40e02") | ||||
|         (revision "0")) | ||||
|  | @ -863,20 +845,18 @@ bounds.") | |||
|       (license expat)))) | ||||
| 
 | ||||
| (define-public go-github-com-golang-protobuf-proto | ||||
|   (let ((commit "1e59b77b52bf8e4b449a57e6f79f21226d571845") | ||||
|         (revision "0")) | ||||
|     (package | ||||
|       (name "go-github-com-golang-protobuf-proto") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|       (version "1.3.1") | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                        (url "https://github.com/golang/protobuf.git") | ||||
|                        (commit commit))) | ||||
|                        (commit (string-append "v" version)))) | ||||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "19bkh81wnp6njg3931wky6hsnnl2d1ig20vfjxpv450sd3k6yys8")))) | ||||
|                   "15am4s4646qy6iv0g3kkqq52rzykqjhm4bf08dk0fy2r58knpsyl")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "github.com/golang/protobuf/proto" | ||||
|  | @ -887,11 +867,11 @@ bounds.") | |||
|       (description "This package provides Go support for the Protocol Buffers | ||||
| data serialization format.") | ||||
|       (home-page "https://github.com/golang/protobuf") | ||||
|       (license bsd-3)))) | ||||
|       (license bsd-3))) | ||||
| 
 | ||||
| (define-public go-github-com-prometheus-client-model-go | ||||
|   (let ((commit "99fa1f4be8e564e8a6b613da7fa6f46c9edafc6c") | ||||
|         (revision "0")) | ||||
|   (let ((commit "fd36f4220a901265f90734c3183c5f0c91daa0b8") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (name "go-github-com-prometheus-client-model-go") | ||||
|       (version (git-version "0.0.2" revision commit)) | ||||
|  | @ -903,7 +883,7 @@ data serialization format.") | |||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "19y4ywsivhpxj7ikf2j0gm9k3cmyw37qcbfi78n526jxcc7kw998")))) | ||||
|                   "1bs5d72k361llflgl94c22n0w53j30rsfh84smgk8mbjbcmjsaa5")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "github.com/prometheus/client_model/go" | ||||
|  | @ -948,20 +928,18 @@ message streaming.") | |||
|       (license asl2.0)))) | ||||
| 
 | ||||
| (define-public go-github-com-prometheus-common-expfmt | ||||
|   (let ((commit "2e54d0b93cba2fd133edc32211dcc32c06ef72ca") | ||||
|         (revision "0")) | ||||
|     (package | ||||
|       (name "go-github-com-prometheus-common-expfmt") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|       (version "0.4.1") | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                        (url "https://github.com/prometheus/common.git") | ||||
|                        (commit commit))) | ||||
|                        (commit (string-append "v" version)))) | ||||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "14kn5w7imcxxlfdqxl21fsnlf1ms7200g3ldy29hwamldv8qlm7j")))) | ||||
|                   "0sf4sjdckblz1hqdfvripk3zyp8xq89w7q75kbsyg4c078af896s")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "github.com/prometheus/common/expfmt" | ||||
|  | @ -995,23 +973,21 @@ message streaming.") | |||
|       (description "This package provides tools for reading and writing | ||||
| Prometheus metrics.") | ||||
|       (home-page "https://github.com/prometheus/common") | ||||
|       (license asl2.0)))) | ||||
|       (license asl2.0))) | ||||
| 
 | ||||
| (define-public go-github-com-prometheus-common-model | ||||
|   (let ((commit "2e54d0b93cba2fd133edc32211dcc32c06ef72ca") | ||||
|         (revision "0")) | ||||
|     (package | ||||
|       (name "go-github-com-prometheus-common-model") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|       (version "0.4.1") | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                        (url "https://github.com/prometheus/common.git") | ||||
|                        (commit commit))) | ||||
|                        (commit (string-append "v" version)))) | ||||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "14kn5w7imcxxlfdqxl21fsnlf1ms7200g3ldy29hwamldv8qlm7j")))) | ||||
|                   "0sf4sjdckblz1hqdfvripk3zyp8xq89w7q75kbsyg4c078af896s")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "github.com/prometheus/common/model" | ||||
|  | @ -1020,36 +996,37 @@ Prometheus metrics.") | |||
|       (description "This package provides a component of the Go Prometheus | ||||
| implementation.") | ||||
|       (home-page "https://github.com/prometheus/common") | ||||
|       (license asl2.0)))) | ||||
|       (license asl2.0))) | ||||
| 
 | ||||
| (define-public go-github-com-prometheus-procfs | ||||
|   (let ((commit "b15cd069a83443be3154b719d0cc9fe8117f09fb") | ||||
|         (revision "0")) | ||||
|     (package | ||||
|       (name "go-github-com-prometheus-procfs") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|       (version "0.0.3") | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                        (url "https://github.com/prometheus/procfs.git") | ||||
|                        (commit commit))) | ||||
|                        (commit (string-append "v" version)))) | ||||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1cr45wg2m40bj2za8f32mq09rjlcnk5kfam0h0hr8wcb015k4wxj")))) | ||||
|                   "18c4m795fwng8f8qa395f3crvamlbk5y5afk8b5rzyisnmjq774y")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "github.com/prometheus/procfs")) | ||||
|        '(#:import-path "github.com/prometheus/procfs" | ||||
|          ;; The tests require Go modules, which are not yet supported in Guix's | ||||
|          ;; Go build system. | ||||
|          #:tests? #f)) | ||||
|       (synopsis "Go library for reading @file{/proc}") | ||||
|       (description "The @code{procfs} Go package provides functions to retrieve | ||||
| system, kernel, and process metrics from the @file{/proc} pseudo file system.") | ||||
|       (home-page "https://github.com/prometheus/procfs") | ||||
|       (license asl2.0)))) | ||||
|       (license asl2.0))) | ||||
| 
 | ||||
| (define-public go-github-com-client-golang-prometheus-promhttp | ||||
|     (package | ||||
|       (name "go-github-com-client-golang-prometheus-promhttp") | ||||
|       (version "0.9.2") | ||||
|       (version "0.9.4") | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|  | @ -1058,7 +1035,7 @@ system, kernel, and process metrics from the @file{/proc} pseudo file system.") | |||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "02b4yg6rfag0m3j0i39sillcm5xczwv8h133vn12yr8qw04cnigs")))) | ||||
|                   "0s134fj4i7k6pxdmxwkdi7amb1882yq33spv15hg3pkpbd3h311p")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:tests? #f ; The tests require internet access | ||||
|  | @ -1087,7 +1064,7 @@ server tools for Prometheus metrics.") | |||
| (define-public go-github-com-prometheus-client-golang-prometheus | ||||
|     (package | ||||
|       (name "go-github-com-prometheus-client-golang-prometheus") | ||||
|       (version "0.9.2") | ||||
|       (version "0.9.4") | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|  | @ -1096,7 +1073,7 @@ server tools for Prometheus metrics.") | |||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "02b4yg6rfag0m3j0i39sillcm5xczwv8h133vn12yr8qw04cnigs")))) | ||||
|                   "0s134fj4i7k6pxdmxwkdi7amb1882yq33spv15hg3pkpbd3h311p")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "github.com/prometheus/client_golang/prometheus" | ||||
|  | @ -1204,7 +1181,7 @@ quoting, commenting, and escaping.") | |||
| (define-public go-github-com-prometheus-common-internal-bitbucket-org-ww-goautoneg | ||||
|   (package | ||||
|     (name "go-github-com-prometheus-common-internal-bitbucket-org-ww-goautoneg") | ||||
|     (version "0.2.0") | ||||
|     (version "0.4.1") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|  | @ -1213,7 +1190,7 @@ quoting, commenting, and escaping.") | |||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "02kym6lcfnlq23qbv277jr0q1n7jj0r14gqg93c7wn7gc44jv3vp")))) | ||||
|                 "0sf4sjdckblz1hqdfvripk3zyp8xq89w7q75kbsyg4c078af896s")))) | ||||
|     (build-system go-build-system) | ||||
|     (arguments | ||||
|      '(#:import-path "github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg" | ||||
|  | @ -1222,3 +1199,53 @@ quoting, commenting, and escaping.") | |||
|     (description "This package is an internal component of Prometheus.") | ||||
|     (home-page "https://github.com/prometheus/common") | ||||
|     (license asl2.0))) | ||||
| 
 | ||||
| (define-public go-github-com-audriusbutkevicius-pfilter | ||||
|   (let ((commit "c55ef6137fc6f075801eac099cc2687ede0f101d") | ||||
|         (revision "3")) | ||||
|     (package | ||||
|       (name "go-github-com-audriusbutkevicius-pfilter") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|       (source | ||||
|         (origin | ||||
|           (method git-fetch) | ||||
|           (uri (git-reference | ||||
|                  (url "https://github.com/AudriusButkevicius/pfilter.git") | ||||
|                  (commit commit))) | ||||
|           (file-name (git-file-name name version)) | ||||
|           (sha256 | ||||
|            (base32 | ||||
|             "0xzhwyd0w21bhvzl5pinn22hp0y6h44rh3s2ppql69rafc6zd3c6")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "github.com/AudriusButkevicius/pfilter")) | ||||
|       (synopsis "Filter packets into mulitple virtual connections") | ||||
|       (description "Pfilter is a Go package for filtering packets into multiple | ||||
| virtual connections from a single physical connection.") | ||||
|       (home-page "https://github.com/AudriusButkevicius/pfilter") | ||||
|       (license expat)))) | ||||
| 
 | ||||
| (define-public go-github-com-ccding-go-stun | ||||
|   (let ((commit "be486d185f3dfcb2dbf8429332da50a0da7f95a6") | ||||
|         (revision "2")) | ||||
|     (package | ||||
|       (name "go-github-com-ccding-go-stun") | ||||
|       (version (git-version "0.0.0" revision commit)) | ||||
|       (source | ||||
|         (origin | ||||
|           (method git-fetch) | ||||
|           (uri (git-reference | ||||
|                  (url "https://github.com/ccding/go-stun.git") | ||||
|                  (commit commit))) | ||||
|           (file-name (git-file-name name version)) | ||||
|           (sha256 | ||||
|            (base32 | ||||
|             "1gr0rw1c1y7wh6913lyn5k4ig023by27i36bly6am8dwgrgp34ww")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "github.com/ccding/go-stun")) | ||||
|       (synopsis "STUN client implementation") | ||||
|       (description "Go-stun is a go implementation of the STUN client (RFC 3489 | ||||
| and RFC 5389).") | ||||
|       (home-page "https://github.com/ccding/go-stun") | ||||
|       (license asl2.0)))) | ||||
|  |  | |||
|  | @ -847,10 +847,10 @@ This package provides a library common to all Jami clients.") | |||
|     (home-page "https://jami.net") | ||||
|     (license license:gpl3+))) | ||||
| 
 | ||||
| (define-public jami-client-gnome | ||||
| (define-public jami | ||||
|   (package | ||||
|     (inherit libring) | ||||
|     (name "jami-client-gnome") | ||||
|     (name "jami") | ||||
|     (build-system cmake-build-system) | ||||
|     (inputs | ||||
|      `(("libringclient" ,libringclient) | ||||
|  | @ -906,3 +906,6 @@ IAX protocols, as well as decentralized calling using P2P-DHT. | |||
| This package provides the Jami client for the GNOME desktop.") | ||||
|     (home-page "https://jami.net") | ||||
|     (license license:gpl3+))) | ||||
| 
 | ||||
| (define-public jami-client-gnome | ||||
|   (deprecated-package "jami-client-gnome" jami)) | ||||
|  |  | |||
|  | @ -54,6 +54,7 @@ | |||
|   #:use-module (gnu packages gl) | ||||
|   #:use-module (gnu packages glib) | ||||
|   #:use-module (gnu packages gnome) | ||||
|   #:use-module (gnu packages golang) | ||||
|   #:use-module (gnu packages gtk) | ||||
|   #:use-module (gnu packages image) | ||||
|   #:use-module (gnu packages libevent) | ||||
|  | @ -754,6 +755,35 @@ with terminals in Go.") | |||
|       (home-page "https://go.googlesource.com/crypto/") | ||||
|       (license license:bsd-3)))) | ||||
| 
 | ||||
| (define-public go-github-com-junegunn-fzf | ||||
|   (package | ||||
|     (name "go-github-com-junegunn-fzf") | ||||
|     (version "0.18.0") | ||||
|     (source | ||||
|      (origin | ||||
|        (method git-fetch) | ||||
|        (uri (git-reference | ||||
|              (url "https://github.com/junegunn/fzf") | ||||
|              (commit version))) | ||||
|        (file-name (git-file-name name version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0pwpr4fpw56yzzkcabzzgbgwraaxmp7xzzmap7w1xsrkbj7dl2xl")))) | ||||
|     (build-system go-build-system) | ||||
|     (arguments | ||||
|      `(#:import-path "github.com/junegunn/fzf")) | ||||
|     (inputs | ||||
|      `(("go-github.com-mattn-go-runewidth" ,go-github.com-mattn-go-runewidth) | ||||
|        ("go-github-com-mattn-go-shellwords" ,go-github-com-mattn-go-shellwords) | ||||
|        ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty) | ||||
|        ("go-github-com-gdamore-tcell" ,go-github-com-gdamore-tcell) | ||||
|        ("go-golang-org-x-crypto-ssh-terminal" ,go-golang-org-x-crypto-ssh-terminal))) | ||||
|     (home-page "https://github.com/junegunn/fzf") | ||||
|     (synopsis "Command-line fuzzy-finder") | ||||
|     (description "This package provides an interactive command-line filter | ||||
| usable with any list--including files, command history, processes and more.") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public go-github.com-howeyc-gopass | ||||
|   (let ((commit "bf9dde6d0d2c004a008c27aaee91170c786f6db8") | ||||
|         (revision "0")) | ||||
|  |  | |||
|  | @ -8,6 +8,7 @@ | |||
| ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> | ||||
| ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> | ||||
| ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr> | ||||
| ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -35,6 +36,7 @@ | |||
|   #:use-module ((guix licenses) #:prefix license:) | ||||
|   #:use-module (gnu packages) | ||||
|   #:use-module (gnu packages assembly) | ||||
|   #:use-module (gnu packages autotools) | ||||
|   #:use-module (gnu packages boost) | ||||
|   #:use-module (gnu packages documentation) | ||||
|   #:use-module (gnu packages fontutils) | ||||
|  | @ -50,6 +52,7 @@ | |||
|   #:use-module (gnu packages perl) | ||||
|   #:use-module (gnu packages pkg-config) | ||||
|   #:use-module (gnu packages python) | ||||
|   #:use-module (gnu packages python-xyz) | ||||
|   #:use-module (gnu packages qt) | ||||
|   #:use-module (gnu packages regex) | ||||
|   #:use-module (gnu packages ruby) | ||||
|  | @ -397,15 +400,14 @@ editors.") | |||
| (define-public texmacs | ||||
|   (package | ||||
|     (name "texmacs") | ||||
|     (version "1.99.9") | ||||
|     (version "1.99.11") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "https://www.texmacs.org/Download/ftp/tmftp/" | ||||
|                            "source/TeXmacs-" version "-src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0i95sf9y8qpgxd8f39cprbp3s200nm9lml0xdpyn46n838acvw19")) | ||||
|         (base32 "12bp0f34izzqimz49lfpgf4lyz3h45s9xbmk8v6zsawdjki76alg")) | ||||
|        (modules '((guix build utils))) | ||||
|        (snippet | ||||
|         '(begin | ||||
|  | @ -421,7 +423,7 @@ editors.") | |||
|        ("python" ,python-wrapper) | ||||
|        ("qt" ,qt-4))) | ||||
|     (arguments | ||||
|      `(#:tests? #f ;no check target | ||||
|      `(#:tests? #f                      ; no check target | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-before 'configure 'gzip-flags | ||||
|  | @ -437,3 +439,131 @@ types of content.  It has robust support for mathematical formulas and plots. | |||
| and Octave.  TeXmacs is completely extensible via Guile.") | ||||
|     (license license:gpl3+) | ||||
|     (home-page "https://www.texmacs.org/tmweb/home/welcome.en.html"))) | ||||
| 
 | ||||
| (define-public scintilla | ||||
|   (package | ||||
|     (name "scintilla") | ||||
|     (version "4.2.0") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (let ((v (apply string-append (string-split version #\.)))) | ||||
|                      (string-append | ||||
|                       "https://www.scintilla.org/scintilla" v ".tgz"))) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "02ymi86fpcypg6423vfr54lbkxbks046q02v3m3dypawcf3bqy42")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      `(#:make-flags (list "GTK3=1" "CC=gcc" "-Cgtk") | ||||
|        #:tests? #f                      ;require un-packaged Pyside | ||||
|        #:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (delete 'configure)            ;no configure script | ||||
|          (add-after 'unpack 'build-shared-library | ||||
|            (lambda _ | ||||
|              (substitute* "gtk/makefile" | ||||
|                (("scintilla\\.a") "libscintilla.so") | ||||
|                (("\\$\\(AR\\) \\$\\(ARFLAGS\\) \\$@ \\$\\^") | ||||
|                 "$(CC) -shared $^ -o $@") | ||||
|                (("\\$\\(RANLIB\\) \\$@") "")) | ||||
|              #t)) | ||||
|          (add-before 'build 'expand-C++-include-path | ||||
|            (lambda* (#:key inputs #:allow-other-keys) | ||||
|              ;; Make <gcc>/include/c++/ext/string_conversions.h find | ||||
|              ;; <stdlib.h>. | ||||
|              (let* ((path "CPLUS_INCLUDE_PATH") | ||||
|                     (gcc  (assoc-ref inputs "gcc")) | ||||
|                     (c++  (string-append gcc "/include/c++"))) | ||||
|                (setenv path (string-append c++ ":" (getenv path)))) | ||||
|              #t)) | ||||
|          (replace 'install | ||||
|            (lambda* (#:key outputs #:allow-other-keys) | ||||
|              (let* ((out (assoc-ref outputs "out")) | ||||
|                     (lib (string-append out "/lib")) | ||||
|                     (include (string-append out "/include"))) | ||||
|                (install-file "bin/libscintilla.so" lib) | ||||
|                (for-each (lambda (f) (install-file f include)) | ||||
|                          (find-files "include/" ".")) | ||||
|                #t)))))) | ||||
|     (native-inputs | ||||
|      `(("gcc" ,gcc-7)                   ;require GCC 7.1+ | ||||
|        ("pkg-config" ,pkg-config))) | ||||
|     (inputs | ||||
|      `(("gtk+" ,gtk+))) | ||||
|     (home-page "https://www.scintilla.org/") | ||||
|     (synopsis "Code editor for GTK+") | ||||
|     (description "Scintilla is a source code editing component for | ||||
| GTK+.  It has the usual features found in text editing components, as | ||||
| well as some that are especially useful for editing and debugging | ||||
| source code; these include support for syntax styling, error | ||||
| indicators, code completion and call tips.  Styling choices are more | ||||
| open than with many editors: Scintilla lets you use proportional | ||||
| fonts, bold and italics, multiple foreground and background colours, | ||||
| and multiple fonts.") | ||||
|     (license license:hpnd))) | ||||
| 
 | ||||
| (define-public geany | ||||
|   (package | ||||
|     (name "geany") | ||||
|     (version "1.35") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "https://download.geany.org/" | ||||
|                                   "geany-" version ".tar.bz2")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "179xfnvhcxsv54v2mlrhykqv2j7klniln5sffvqqpjmdvwyivvim")) | ||||
|               (modules '((guix build utils))) | ||||
|               (snippet '(begin | ||||
|                           (delete-file-recursively "scintilla") | ||||
|                           #t)))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs | ||||
|      `(("autoconf" ,autoconf) | ||||
|        ("automake" ,automake) | ||||
|        ("doxygen" ,doxygen) | ||||
|        ("glib" ,glib "bin") | ||||
|        ("intltool" ,intltool) | ||||
|        ("libtool" ,libtool) | ||||
|        ("pkg-config" ,pkg-config) | ||||
|        ("python-docutils" ,python-docutils))) ;for rst2html | ||||
|     (inputs | ||||
|      `(("gtk+" ,gtk+) | ||||
|        ("scintilla" ,scintilla))) | ||||
|     (arguments | ||||
|      `(#:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-after 'unpack 'use-scintilla-shared-library | ||||
|            (lambda* (#:key inputs #:allow-other-keys) | ||||
|              (substitute* "configure.ac" | ||||
|                (("scintilla/Makefile") "") | ||||
|                (("scintilla/include/Makefile") "")) | ||||
|              (substitute* "Makefile.am" | ||||
|                (("scintilla ") "")) | ||||
|              (substitute* "src/Makefile.am" | ||||
|                (("\\$\\(top_builddir\\)/scintilla/libscintilla.la") "") | ||||
|                (("geany_LDFLAGS =" all) (string-append all " -lscintilla"))) | ||||
|              (substitute* "doc/Makefile.am" | ||||
|                (("\\$\\(INSTALL_DATA\\) \\$\\(top_srcdir\\)/scintilla/License.txt \\$\\(DOCDIR\\)/ScintillaLicense.txt") "")) | ||||
|              (for-each delete-file (list "autogen.sh" "configure" "Makefile.in")) | ||||
|              #t))))) | ||||
|     (home-page "https://www.geany.org") | ||||
|     (synopsis "Fast and lightweight IDE") | ||||
|     (description "Geany is a small and fast Integrated Development | ||||
| Environment (IDE) that only has a few dependencies on other packages and is as | ||||
| independent as possible from special desktop environments like KDE or GNOME. | ||||
| 
 | ||||
| The basic features of Geany are: | ||||
| @itemize | ||||
| @item syntax highlighting | ||||
| @item code completion | ||||
| @item auto completion of often constructed constructs like if, for and while | ||||
| @item auto completion of XML and HTML tags | ||||
| @item call tips | ||||
| @item folding | ||||
| @item many supported filetypes like C, Java, PHP, HTML, Python, Perl, Pascal | ||||
| @item symbol lists | ||||
| @item embedded terminal emulation | ||||
| @item extensibility through plugins | ||||
| @end itemize") | ||||
|     (license license:gpl2+))) | ||||
|  |  | |||
|  | @ -693,27 +693,32 @@ and Cython.") | |||
|       (license license:expat)))) | ||||
| 
 | ||||
| (define-public go-github.com-mattn-go-runewidth | ||||
|   (package | ||||
|     (name "go-github.com-mattn-go-runewidth") | ||||
|     (version "0.0.2") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|                     (url "https://github.com/mattn/go-runewidth") | ||||
|                     (commit (string-append "v" version)))) | ||||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0vkrfrz3fzn5n6ix4k8s0cg0b448459sldq8bp4riavsxm932jzb")))) | ||||
|     (build-system go-build-system) | ||||
|     (arguments | ||||
|      '(#:import-path "github.com/mattn/go-runewidth")) | ||||
|     (synopsis "@code{runewidth} provides Go functions to work with string widths") | ||||
|     (description | ||||
|      "The @code{runewidth} library provides Go functions for padding, | ||||
| measuring and checking the width of strings, with support east asian text.") | ||||
|     (home-page "https://github.com/jessevdk/go-flags") | ||||
|     (license license:expat))) | ||||
|   (let ((commit "703b5e6b11ae25aeb2af9ebb5d5fdf8fa2575211") | ||||
|         (version "0.0.4") | ||||
|         (revision "1")) | ||||
|     (package | ||||
|       (name "go-github.com-mattn-go-runewidth") | ||||
|       (version (git-version version revision commit)) | ||||
|       (source | ||||
|        (origin | ||||
|          (method git-fetch) | ||||
|          (uri (git-reference | ||||
|                (url "https://github.com/mattn/runewidth") | ||||
|                (commit commit))) | ||||
|          (file-name (git-file-name name version)) | ||||
|          (sha256 | ||||
|           (base32 | ||||
|            "0znpyz71gajx3g0j2zp63nhjj2c07g16885vxv4ykwnrfmzbgk4w")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "github.com/mattn/go-runewidth")) | ||||
|       (synopsis "@code{runewidth} provides Go functions to work with string widths") | ||||
|       (description | ||||
|        "The @code{runewidth} library provides Go functions for padding, | ||||
| measuring and checking the width of strings, with support for East Asian | ||||
| text.") | ||||
|       (home-page "https://github.com/mattn/runewidth") | ||||
|       (license license:expat)))) | ||||
| 
 | ||||
| (define-public docx2txt | ||||
|   (package | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ | |||
| ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> | ||||
| ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> | ||||
| ;;; Copyright © 2015 David Thompson <davet@gnu.org> | ||||
| ;;; Copyright © 2015, 2016, 2017, 2018 Leo Famulari <leo@famulari.name> | ||||
| ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Leo Famulari <leo@famulari.name> | ||||
| ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il> | ||||
| ;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is> | ||||
| ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> | ||||
|  | @ -33,8 +33,10 @@ | |||
|   #:use-module ((guix licenses) #:prefix license:) | ||||
|   #:use-module (guix packages) | ||||
|   #:use-module (guix download) | ||||
|   #:use-module (guix git-download) | ||||
|   #:use-module (guix utils) | ||||
|   #:use-module (guix build-system gnu) | ||||
|   #:use-module (guix build-system go) | ||||
|   #:use-module (guix build-system perl) | ||||
|   #:use-module (guix build-system python) | ||||
|   #:use-module (guix build-system cmake) | ||||
|  | @ -951,3 +953,27 @@ coding footprint.") | |||
| ACME-server (currently only provided by Let's Encrypt) implemented as a | ||||
| relatively simple Bash script.") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public go-github-com-certifi-gocertifi | ||||
|   (let ((commit "d2eda712971317d7dd278bc2a52acda7e945f97e") | ||||
|         (revision "0")) | ||||
|     (package | ||||
|       (name "go-github-com-certifi-gocertifi") | ||||
|       (version (git-version "2018.01.18" revision commit)) | ||||
|       (source (origin | ||||
|                 (method git-fetch) | ||||
|                 (uri (git-reference | ||||
|                        (url "https://github.com/certifi/gocertifi") | ||||
|                        (commit commit))) | ||||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "0f3v26xps7gadw4qfmh1kxbpgp0cgqdd61a257xnnvnd7ll6k8dh")))) | ||||
|       (build-system go-build-system) | ||||
|       (arguments | ||||
|        '(#:import-path "github.com/certifi/gocertifi")) | ||||
|       (synopsis "X.509 TLS root certificate bundle for Go") | ||||
|       (description "This package is a Go language X.509 TLS root certificate bundle, | ||||
| derived from Mozilla's collection.") | ||||
|       (home-page "https://certifi.io") | ||||
|       (license license:mpl2.0)))) | ||||
|  |  | |||
|  | @ -753,6 +753,40 @@ entry-points (VLD, IDCT, Motion Compensation etc.) for prevailing coding | |||
| standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public libva-utils | ||||
|   (package | ||||
|     (name "libva-utils") | ||||
|     (version "2.5.0") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "https://github.com/intel/libva-utils/releases/download/" | ||||
|                            version "/libva-utils-" version ".tar.bz2")) | ||||
|        (sha256 | ||||
|         (base32 "05rasyqnsg522zqxak1q8rrm1hys7wwbi41kd0szjq0d27awjf4j")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      `(#:configure-flags | ||||
|        (list "--enable-wayland" | ||||
|              "--enable-x11"))) | ||||
|     (native-inputs | ||||
|      `(("pkg-config" ,pkg-config))) | ||||
|     (inputs | ||||
|      `(("libdrm" ,libdrm) | ||||
|        ("libva" ,libva) | ||||
|        ("libx11" ,libx11) | ||||
|        ("mesa" ,mesa) | ||||
|        ("wayland" ,wayland))) | ||||
|     (home-page "https://01.org/linuxmedia/vaapi") | ||||
|     (synopsis "Collection of testing utilities for VA-API") | ||||
|     (description | ||||
|      "This is a collection of utilities  to query and test the @acronym{VA-API, | ||||
| Video Acceleration API} implemented by the libva library. | ||||
| 
 | ||||
| These tools require a supported graphics chip, driver, and VA-API back end to | ||||
| operate properly.") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public ffmpeg | ||||
|   (package | ||||
|     (name "ffmpeg") | ||||
|  | @ -1013,7 +1047,7 @@ videoformats depend on the configuration flags of ffmpeg.") | |||
| (define-public vlc | ||||
|   (package | ||||
|     (name "vlc") | ||||
|     (version "3.0.7") | ||||
|     (version "3.0.7.1") | ||||
|     (source (origin | ||||
|              (method url-fetch) | ||||
|              (uri (string-append | ||||
|  | @ -1022,7 +1056,7 @@ videoformats depend on the configuration flags of ffmpeg.") | |||
|                    "/vlc-" version ".tar.xz")) | ||||
|              (sha256 | ||||
|               (base32 | ||||
|                "05irswyg9acflxzy4vfyvgi643r72vsvagv118zawjqg1wagxdaw")))) | ||||
|                "1xb4c8n0hkwijzfdlbwadhxnx9z8rlhmrdq4c7q74rq9f51q0m86")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs | ||||
|      `(("flex" ,flex) | ||||
|  | @ -1446,7 +1480,7 @@ access to mpv's powerful playback capabilities.") | |||
| (define-public youtube-dl | ||||
|   (package | ||||
|     (name "youtube-dl") | ||||
|     (version "2019.06.21") | ||||
|     (version "2019.08.02") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "https://github.com/rg3/youtube-dl/releases/" | ||||
|  | @ -1454,7 +1488,7 @@ access to mpv's powerful playback capabilities.") | |||
|                                   version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "03a729198zzhixbn7xixi9bprmk3qqh5dsyh3dqhji6lmlijx1w5")))) | ||||
|                 "101b6jrf6ckbxrn76ppvgdyrb25p7d247kn8qgq7n476sfnkfg2p")))) | ||||
|     (build-system python-build-system) | ||||
|     (arguments | ||||
|      ;; The problem here is that the directory for the man page and completion | ||||
|  | @ -1585,7 +1619,7 @@ other site that youtube-dl supports.") | |||
| (define-public you-get | ||||
|   (package | ||||
|     (name "you-get") | ||||
|     (version "0.4.1302") | ||||
|     (version "0.4.1328") | ||||
|     (source (origin | ||||
|               (method git-fetch) | ||||
|               (uri (git-reference | ||||
|  | @ -1594,7 +1628,7 @@ other site that youtube-dl supports.") | |||
|               (file-name (git-file-name name version)) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1fwwzslv1vpjr8q0fq10dbngr8zai1n3d6na700cgpky4j9y0y99")))) | ||||
|                 "1r9qffwvxmp74byva12h2jsn3n33vyim052sx9lykv5dygibbp65")))) | ||||
|     (build-system python-build-system) | ||||
|     (inputs | ||||
|      `(("ffmpeg" ,ffmpeg)))             ; for multi-part and >=1080p videos | ||||
|  | @ -2695,6 +2729,51 @@ of modern, widely supported codecs.") | |||
|     ;; Combination under GPLv2.  See LICENSE. | ||||
|     (license license:gpl2))) | ||||
| 
 | ||||
| (define-public intel-vaapi-driver | ||||
|   (package | ||||
|     (name "intel-vaapi-driver") | ||||
|     (version "2.3.0") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "https://github.com/intel/intel-vaapi-driver/" | ||||
|                            "releases/download/" version "/intel-vaapi-driver-" | ||||
|                            version ".tar.bz2")) | ||||
|        (sha256 | ||||
|         (base32 "1qyzxh3p8cw4fv8bz9zd4kc8hajlaps7xryzh6pad814n3m5sbjw")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs | ||||
|      `(("pkg-config" ,pkg-config))) | ||||
|     (inputs | ||||
|      `(("libdrm" ,libdrm) | ||||
|        ("libva" ,libva) | ||||
|        ("libx11" ,libx11))) | ||||
|     (arguments | ||||
|      `(#:phases | ||||
|        (modify-phases %standard-phases | ||||
|          (add-before 'configure 'set-target-directory | ||||
|            (lambda* (#:key outputs #:allow-other-keys) | ||||
|              (let ((out (assoc-ref outputs "out"))) | ||||
|                (setenv "LIBVA_DRIVERS_PATH" (string-append out "/lib/dri")) | ||||
|                #t)))))) | ||||
|     ;; XXX Because of <https://issues.guix.gnu.org/issue/22138>, we need to add | ||||
|     ;; this to all VA-API back ends instead of once to libva. | ||||
|     (native-search-paths | ||||
|      (list (search-path-specification | ||||
|             (variable "LIBVA_DRIVERS_PATH") | ||||
|             (files '("lib/dri"))))) | ||||
|     (supported-systems '("i686-linux" "x86_64-linux")) | ||||
|     (home-page "https://01.org/linuxmedia/vaapi") | ||||
|     (synopsis "VA-API video acceleration driver for Intel GEN Graphics devices") | ||||
|     (description | ||||
|      "This is the @acronym{VA-API, Video Acceleration API} back end required for | ||||
| hardware-accelerated video processing on Intel GEN Graphics devices supported by | ||||
| the i915 driver, such as integrated Intel HD Graphics.  It provides access to | ||||
| both hardware and shader functionality for faster encoding, decoding, and | ||||
| post-processing of video formats like MPEG2, H.264/AVC, and VC-1.") | ||||
|     (license (list license:bsd-2        ; src/gen9_vp9_const_def.c | ||||
|                    license:expat))))    ; the rest, excluding the test suite | ||||
| 
 | ||||
| (define-public openh264 | ||||
|   (package | ||||
|     (name "openh264") | ||||
|  |  | |||
|  | @ -391,13 +391,15 @@ manage system or application containers.") | |||
|   (package | ||||
|     (name "libvirt") | ||||
|     (version "5.5.0") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "https://libvirt.org/sources/libvirt-" | ||||
|                                   version ".tar.xz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1s1mzw4cmkcfivs1kphpgy4lpddx0w1qnjysr4ggk5558w4yy1i3")))) | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "https://libvirt.org/sources/libvirt-" | ||||
|                            version ".tar.xz")) | ||||
|        (sha256 | ||||
|         (base32 "1s1mzw4cmkcfivs1kphpgy4lpddx0w1qnjysr4ggk5558w4yy1i3")) | ||||
|        (patches | ||||
|         (search-patches "libvirt-remove-ATTRIBUTE_UNUSED.patch")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (arguments | ||||
|      `(#:configure-flags | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
| ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> | ||||
| ;;; Copyright © 2018 Raoul Jean Pierre Bonnal <ilpuccio.febo@gmail.com> | ||||
| ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> | ||||
| ;;; Copyright © 2015, 2016, 2017, 2018 Eric Bavier <bavier@member.fsf.org> | ||||
| ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Eric Bavier <bavier@member.fsf.org> | ||||
| ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> | ||||
| ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> | ||||
| ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org> | ||||
|  | @ -127,6 +127,7 @@ | |||
|   #:use-module (gnu packages tls) | ||||
|   #:use-module (gnu packages valgrind) | ||||
|   #:use-module (gnu packages version-control) | ||||
|   #:use-module (gnu packages vim) | ||||
|   #:use-module (gnu packages xml)) | ||||
| 
 | ||||
| (define-public httpd | ||||
|  | @ -205,14 +206,14 @@ Interface} specification.") | |||
|     ;; ’stable’ and recommends that “in general you deploy the NGINX mainline | ||||
|     ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/) | ||||
|     ;; Consider updating the nginx-documentation package together with this one. | ||||
|     (version "1.17.1") | ||||
|     (version "1.17.2") | ||||
|     (source (origin | ||||
|               (method url-fetch) | ||||
|               (uri (string-append "https://nginx.org/download/nginx-" | ||||
|                                   version ".tar.gz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "0gp7cy2bbn8yi1wapjzssf4bhmn4d4vphdb0k1wiaq2fa6s2a63g")))) | ||||
|                 "1v39gslwbvpfhqqv74q0lkfrhrwsp59xc8pwhvxns7af8s3kccsy")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (inputs `(("openssl" ,openssl) | ||||
|               ("pcre" ,pcre) | ||||
|  | @ -4239,15 +4240,15 @@ C.  It is developed as part of the NetSurf project.") | |||
| (define-public hubbub | ||||
|   (package | ||||
|     (name "hubbub") | ||||
|     (version "0.3.5") | ||||
|     (version "0.3.6") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "http://download.netsurf-browser.org/libs/releases/" | ||||
|                            "lib" name "-" version "-src.tar.gz")) | ||||
|                            "libhubbub-" version "-src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "13yq1k96a7972x4r71i9bcsz9yiglj0yx7lj0ziq5r94w5my70ma")) | ||||
|          "1x3v7xvagx85v9h3pypzc86rcxs4mij87mmcqkp8pq50q6awfmnp")) | ||||
|        (patches (search-patches "hubbub-sort-entities.patch")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs | ||||
|  | @ -4345,15 +4346,15 @@ commenting.") | |||
| (define-public libwapcaplet | ||||
|   (package | ||||
|     (name "libwapcaplet") | ||||
|     (version "0.4.1") | ||||
|     (version "0.4.2") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "http://download.netsurf-browser.org/libs/releases/" | ||||
|                            name "-" version "-src.tar.gz")) | ||||
|                            "libwapcaplet-" version "-src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "134pljlm8kby1yy49826f0ixnpig8iqak6xpyl3aivagnsjnxzy8")))) | ||||
|          "1fjwzbn7j8bi1b9bvwxsy3i2cr6byq2s2d29866801pjnf528g86")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs | ||||
|      `(("netsurf-buildsystem" ,netsurf-buildsystem) | ||||
|  | @ -4371,15 +4372,15 @@ developed as part of the Netsurf project.") | |||
| (define-public libcss | ||||
|   (package | ||||
|     (name "libcss") | ||||
|     (version "0.8.0") | ||||
|     (version "0.9.0") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "http://download.netsurf-browser.org/libs/releases/" | ||||
|                            name "-" version "-src.tar.gz")) | ||||
|                            "libcss-" version "-src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0pxdqbxn6brj03nv57bsvac5n70k4scn3r5msaw0jgn2k06lk81m")))) | ||||
|          "1vw9j3d2mr4wbvs8fyqmgslkbxknvac10456775hflxxcivbm3xr")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs | ||||
|      `(("netsurf-buildsystem" ,netsurf-buildsystem) | ||||
|  | @ -4399,15 +4400,15 @@ written in C.  It is developed as part of the NetSurf project.") | |||
| (define-public libdom | ||||
|   (package | ||||
|     (name "libdom") | ||||
|     (version "0.3.3") | ||||
|     (version "0.4.0") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "http://download.netsurf-browser.org/libs/releases/" | ||||
|                            name "-" version "-src.tar.gz")) | ||||
|                            "libdom-" version "-src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1919757mdl3gii2pl6kzm8b1cal0h06r5nqd2y0kny6hc5yrhsp0")))) | ||||
|          "1ixkqsl3f7dl1kajksm0c231w1v5xy8z6hm3v67hgm9nh4qcvfcy")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs | ||||
|      `(("netsurf-buildsystem" ,netsurf-buildsystem) | ||||
|  | @ -4509,6 +4510,34 @@ written in C.  It is developed as part of the NetSurf project.") | |||
| C.  It is developed as part of the NetSurf project.") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public libnslog | ||||
|   (package | ||||
|     (name "libnslog") | ||||
|     (version "0.1.2") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "http://download.netsurf-browser.org/libs/releases/" | ||||
|                            "libnslog-" version "-src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1ggs6xvxp8fbg5w8pifalipm458ygr9ab6j2yvj8fnnmxwvdh4jd")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs | ||||
|      `(("netsurf-buildsystem" ,netsurf-buildsystem) | ||||
|        ("pkg-config" ,pkg-config) | ||||
|        ("check" ,check)                 ;for tests | ||||
|        ("bison" ,bison) | ||||
|        ("flex" ,flex))) | ||||
|     (arguments netsurf-buildsystem-arguments) | ||||
|     (home-page "http://www.netsurf-browser.org/") | ||||
|     (synopsis "Logging library") | ||||
|     (description | ||||
|      "Libnslog provides a category-based logging library which supports | ||||
| complex logging filters, multiple log levels, and provides context through to | ||||
| client applications.  It is developed as part of the NetSurf project.") | ||||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public libnsutils | ||||
|   (package | ||||
|     (name "libnsutils") | ||||
|  | @ -4535,15 +4564,15 @@ developed as part of the NetSurf project.") | |||
| (define-public libnspsl | ||||
|   (package | ||||
|     (name "libnspsl") | ||||
|     (version "0.1.3") | ||||
|     (version "0.1.5") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "http://download.netsurf-browser.org/libs/releases/" | ||||
|                            name "-" version "-src.tar.gz")) | ||||
|                            "libnspsl-" version "-src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1rsk1k2a495axxgv8060s0p1phhhcxrv75252kllbkvr8id5kqld")))) | ||||
|          "0siq8zjfxv75i9fw6q5hkaijpdm1w3zskd5qk6vsvz8cqan4vifd")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs | ||||
|      `(("netsurf-buildsystem" ,netsurf-buildsystem))) | ||||
|  | @ -4558,15 +4587,15 @@ Public Suffix List.  It is developed as part of the NetSurf project.") | |||
| (define-public nsgenbind | ||||
|   (package | ||||
|     (name "nsgenbind") | ||||
|     (version "0.6") | ||||
|     (version "0.7") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|        (uri (string-append "http://download.netsurf-browser.org/libs/releases/" | ||||
|                            name "-" version "-src.tar.gz")) | ||||
|                            "nsgenbind-" version "-src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0v1cb1rz5fix9ql31nzmglj7sybya6d12b2fkaypm1avcca59xwj")))) | ||||
|          "0rplmky4afsjwiwh7grkmcdmzg86zksa55j93dvq92f91yljwqqq")))) | ||||
|     (build-system gnu-build-system) | ||||
|     (native-inputs | ||||
|      `(("netsurf-buildsystem" ,netsurf-buildsystem) | ||||
|  | @ -4586,7 +4615,7 @@ w3c webidl files and a binding configuration file.") | |||
| (define-public netsurf | ||||
|   (package | ||||
|     (name "netsurf") | ||||
|     (version "3.8") | ||||
|     (version "3.9") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -4594,7 +4623,7 @@ w3c webidl files and a binding configuration file.") | |||
|                            "releases/source/netsurf-" version "-src.tar.gz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "0hjm1h4m1i913y4mhkl7yqdifn8k70fwi58zdh6faypawzryc3m0")) | ||||
|          "1hzcm2s2wh5sapgr000lg63hcdbj6hyajxl43xa1x80kc5piqbyp")) | ||||
|        (patches (search-patches "netsurf-system-utf8proc.patch" | ||||
|                                 "netsurf-y2038-tests.patch" | ||||
|                                 "netsurf-longer-test-timeout.patch" | ||||
|  | @ -4607,7 +4636,8 @@ w3c webidl files and a binding configuration file.") | |||
|        ("check" ,check) | ||||
|        ("perl" ,perl) | ||||
|        ("perl-html-parser" ,perl-html-parser) | ||||
|        ("pkg-config" ,pkg-config))) | ||||
|        ("pkg-config" ,pkg-config) | ||||
|        ("xxd" ,xxd))) | ||||
|     (inputs | ||||
|      `(("curl" ,curl) | ||||
|        ("gtk+" ,gtk+-2) | ||||
|  | @ -4619,6 +4649,7 @@ w3c webidl files and a binding configuration file.") | |||
|        ("libdom" ,libdom) | ||||
|        ("libnsbmp" ,libnsbmp) | ||||
|        ("libnsgif" ,libnsgif) | ||||
|        ("libnslog" ,libnslog) | ||||
|        ("libnspsl" ,libnspsl) | ||||
|        ("libnsutils" ,libnsutils) | ||||
|        ("libsvgtiny" ,libsvgtiny) | ||||
|  | @ -6436,8 +6467,8 @@ compressed JSON header blocks. | |||
|     (license license:expat))) | ||||
| 
 | ||||
| (define-public hpcguix-web | ||||
|   (let ((commit "53e09ea59ec0380b41a4cbda32df8bdb9a10004d") | ||||
|         (revision "3")) | ||||
|   (let ((commit "f39c90b35e99e4122b0866ec4337020d61c81508") | ||||
|         (revision "4")) | ||||
|     (package | ||||
|       (name "hpcguix-web") | ||||
|       (version (git-version "0.0.1" revision commit)) | ||||
|  | @ -6449,7 +6480,7 @@ compressed JSON header blocks. | |||
|                 (file-name (git-file-name name version)) | ||||
|                 (sha256 | ||||
|                  (base32 | ||||
|                   "1ah4pn9697vazhbvd45n4b1rrkx2nbhnw384cr0b941q3sz1dfyc")))) | ||||
|                   "0idzzlwnaymk6hm5q9nh146h5m6vd8acp32vlmzp6qq08mimfkq7")))) | ||||
|       (build-system gnu-build-system) | ||||
|       (arguments | ||||
|        `(#:modules ((guix build gnu-build-system) | ||||
|  | @ -6509,7 +6540,7 @@ compressed JSON header blocks. | |||
|       (propagated-inputs | ||||
|        `(("guile" ,guile-2.2) | ||||
|          ("guile-commonmark" ,guile-commonmark) | ||||
|          ("guile-json" ,guile-json-1))) | ||||
|          ("guile-json" ,guile-json-3))) | ||||
|       (home-page "https://github.com/UMCUGenetics/hpcguix-web") | ||||
|       (synopsis "Web interface for cluster deployments of Guix") | ||||
|       (description "Hpcguix-web provides a web interface to the list of packages | ||||
|  |  | |||
|  | @ -310,7 +310,7 @@ integrate Windows applications into your desktop.") | |||
| (define-public wine-staging-patchset-data | ||||
|   (package | ||||
|     (name "wine-staging-patchset-data") | ||||
|     (version "4.12.1") | ||||
|     (version "4.13") | ||||
|     (source | ||||
|      (origin | ||||
|        (method git-fetch) | ||||
|  | @ -320,7 +320,7 @@ integrate Windows applications into your desktop.") | |||
|        (file-name (git-file-name name version)) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1bvpvj6vcw2p6vcjm6mw5maarbs4lfw1ix3pj020w4n3kg4nmmc4")))) | ||||
|          "0bbwsd2qpjilxpjscqbp78p0gl0awj1yj62g0wvybh4x89fzy8zj")))) | ||||
|     (build-system trivial-build-system) | ||||
|     (native-inputs | ||||
|      `(("bash" ,bash) | ||||
|  | @ -366,7 +366,7 @@ integrate Windows applications into your desktop.") | |||
|               (file-name (string-append name "-" version ".tar.xz")) | ||||
|               (sha256 | ||||
|                (base32 | ||||
|                 "09yjfb2k14y11k19lm8dqmb8qwxyhh67d5q1gqv480y64mljvkx0")))) | ||||
|                 "0rqx8g394aj5q913cd18zsi60sldvxarrp178w6ja0y4rd8l25vr")))) | ||||
|     (inputs `(("autoconf" ,autoconf) ; for autoreconf | ||||
|               ("faudio" ,faudio) | ||||
|               ("ffmpeg" ,ffmpeg) | ||||
|  | @ -407,10 +407,7 @@ integrate Windows applications into your desktop.") | |||
|                     (script (string-append (assoc-ref %build-inputs | ||||
|                             "wine-staging-patchset-data") | ||||
|                             "/share/wine-staging/patches/patchinstall.sh"))) | ||||
|                ;; Exclude specific patches that conflict with FAudio. | ||||
|                (invoke script (string-append "DESTDIR=" ".") "--all" "-W" | ||||
|                        "xaudio2-revert" "-W" "xaudio2_CommitChanges" "-W" | ||||
|                        "xaudio2_7-WMA_support" "-W" "xaudio2_7-CreateFX-FXEcho") | ||||
|                (invoke script (string-append "DESTDIR=" ".") "--all") | ||||
|                #t))) | ||||
|          (add-after 'configure 'patch-dlopen-paths | ||||
|            ;; Hardcode dlopened sonames to absolute paths. | ||||
|  | @ -487,9 +484,7 @@ integrated into the main branch.") | |||
|                             "wine-staging-patchset-data") | ||||
|                             "/share/wine-staging/patches/patchinstall.sh"))) | ||||
|                ;; Exclude specific patches that conflict with FAudio. | ||||
|                (invoke script (string-append "DESTDIR=" ".") "--all" "-W" | ||||
|                        "xaudio2-revert" "-W" "xaudio2_CommitChanges" "-W" | ||||
|                        "xaudio2_7-WMA_support" "-W" "xaudio2_7-CreateFX-FXEcho") | ||||
|                (invoke script (string-append "DESTDIR=" ".") "--all") | ||||
|                #t))) | ||||
|          (add-after 'install 'copy-wine32-binaries | ||||
|            (lambda* (#:key outputs #:allow-other-keys) | ||||
|  |  | |||
|  | @ -5988,7 +5988,7 @@ basic eye-candy effects.") | |||
| (define-public xpra | ||||
|   (package | ||||
|     (name "xpra") | ||||
|     (version "2.5.2") | ||||
|     (version "2.5.3") | ||||
|     (source | ||||
|      (origin | ||||
|        (method url-fetch) | ||||
|  | @ -5996,7 +5996,7 @@ basic eye-candy effects.") | |||
|                            version ".tar.xz")) | ||||
|        (sha256 | ||||
|         (base32 | ||||
|          "1zbh2990crrxp02c554yh30f0s9znm6iiiklkw8vpxrlmdv1z8ks")))) | ||||
|          "1ys35lj28903alccks9p055psy1fsk1nxi8ncchvw8bfxkkkvbys")))) | ||||
|     (build-system python-build-system) | ||||
|     (inputs `(("ffmpeg" ,ffmpeg) | ||||
|               ("flac" ,flac) | ||||
|  |  | |||
|  | @ -40,10 +40,12 @@ | |||
|             unknown-shepherd-error? | ||||
|             unknown-shepherd-error-sexp | ||||
| 
 | ||||
|             live-service | ||||
|             live-service? | ||||
|             live-service-provision | ||||
|             live-service-requirement | ||||
|             live-service-running | ||||
|             live-service-canonical-name | ||||
| 
 | ||||
|             with-shepherd-action | ||||
|             current-services | ||||
|  | @ -192,6 +194,10 @@ of pairs." | |||
|   (requirement  live-service-requirement)         ;list of symbols | ||||
|   (running      live-service-running))            ;#f | object | ||||
| 
 | ||||
| (define (live-service-canonical-name service) | ||||
|   "Return the 'canonical name' of SERVICE." | ||||
|   (first (live-service-provision service))) | ||||
| 
 | ||||
| (define (current-services) | ||||
|   "Return the list of currently defined Shepherd services, represented as | ||||
| <live-service> objects.  Return #f if the list of services could not be | ||||
|  |  | |||
							
								
								
									
										262
									
								
								gnu/tests/reconfigure.scm
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										262
									
								
								gnu/tests/reconfigure.scm
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,262 @@ | |||
| ;;; GNU Guix --- Functional package management for GNU | ||||
| ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
| ;;; GNU Guix is free software; you can redistribute it and/or modify it | ||||
| ;;; under the terms of the GNU General Public License as published by | ||||
| ;;; the Free Software Foundation; either version 3 of the License, or (at | ||||
| ;;; your option) any later version. | ||||
| ;;; | ||||
| ;;; GNU Guix is distributed in the hope that it will be useful, but | ||||
| ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| ;;; GNU General Public License for more details. | ||||
| ;;; | ||||
| ;;; You should have received a copy of the GNU General Public License | ||||
| ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| (define-module (gnu tests reconfigure) | ||||
|   #:use-module (gnu bootloader) | ||||
|   #:use-module (gnu services shepherd) | ||||
|   #:use-module (gnu system vm) | ||||
|   #:use-module (gnu system) | ||||
|   #:use-module (gnu tests) | ||||
|   #:use-module (guix derivations) | ||||
|   #:use-module (guix gexp) | ||||
|   #:use-module (guix monads) | ||||
|   #:use-module (guix scripts system reconfigure) | ||||
|   #:use-module (guix store) | ||||
|   #:export (%test-switch-to-system | ||||
|             %test-upgrade-services | ||||
|             %test-install-bootloader)) | ||||
| 
 | ||||
| ;;; Commentary: | ||||
| ;;; | ||||
| ;;; Test in-place system reconfiguration: advancing the system generation on a | ||||
| ;;; running instance of the Guix System. | ||||
| ;;; | ||||
| ;;; Code: | ||||
| 
 | ||||
| (define* (run-switch-to-system-test) | ||||
|   "Run a test of an OS running SWITCH-SYSTEM-PROGRAM, which creates a new | ||||
| generation of the system profile." | ||||
|   (define os | ||||
|     (marionette-operating-system | ||||
|      (simple-operating-system) | ||||
|      #:imported-modules '((gnu services herd) | ||||
|                           (guix combinators)))) | ||||
| 
 | ||||
|   (define vm (virtual-machine os)) | ||||
| 
 | ||||
|   (define (test script) | ||||
|     (with-imported-modules '((gnu build marionette)) | ||||
|       #~(begin | ||||
|           (use-modules (gnu build marionette) | ||||
|                        (srfi srfi-64)) | ||||
| 
 | ||||
|           (define marionette | ||||
|             (make-marionette (list #$vm))) | ||||
| 
 | ||||
|           ;; Return the names of the generation symlinks on MARIONETTE. | ||||
|           (define (system-generations marionette) | ||||
|             (marionette-eval | ||||
|              '(begin | ||||
|                 (use-modules (ice-9 ftw) | ||||
|                              (srfi srfi-1)) | ||||
|                 (let* ((profile-dir "/var/guix/profiles/") | ||||
|                        (entries (map first (cddr (file-system-tree profile-dir))))) | ||||
|                   (remove (lambda (entry) | ||||
|                             (member entry '("per-user" "system"))) | ||||
|                           entries))) | ||||
|              marionette)) | ||||
| 
 | ||||
|           (mkdir #$output) | ||||
|           (chdir #$output) | ||||
| 
 | ||||
|           (test-begin "switch-to-system") | ||||
| 
 | ||||
|           (let ((generations-prior (system-generations marionette))) | ||||
|             (test-assert "script successfully evaluated" | ||||
|               (marionette-eval | ||||
|                '(primitive-load #$script) | ||||
|                marionette)) | ||||
| 
 | ||||
|             (test-equal "script created new generation" | ||||
|               (length (system-generations marionette)) | ||||
|               (1+ (length generations-prior)))) | ||||
| 
 | ||||
|           (test-end) | ||||
|           (exit (= (test-runner-fail-count (test-runner-current)) 0))))) | ||||
| 
 | ||||
|   (gexp->derivation "switch-to-system" (test (switch-system-program os)))) | ||||
| 
 | ||||
| (define* (run-upgrade-services-test) | ||||
|   "Run a test of an OS running UPGRADE-SERVICES-PROGRAM, which upgrades the | ||||
| Shepherd (PID 1) by unloading obsolete services and loading new services." | ||||
|   (define os | ||||
|     (marionette-operating-system | ||||
|      (simple-operating-system) | ||||
|      #:imported-modules '((gnu services herd) | ||||
|                           (guix combinators)))) | ||||
| 
 | ||||
|   (define vm (virtual-machine os)) | ||||
| 
 | ||||
|   (define dummy-service | ||||
|     ;; Shepherd service that does nothing, for the sole purpose of ensuring | ||||
|     ;; that it is properly installed and started by the script. | ||||
|     (shepherd-service (provision '(dummy)) | ||||
|                       (start #~(const #t)) | ||||
|                       (stop #~(const #t)) | ||||
|                       (respawn? #f))) | ||||
| 
 | ||||
|   ;; Return the Shepherd service file for SERVICE, after ensuring that it | ||||
|   ;; exists in the store. | ||||
|   (define (ensure-service-file service) | ||||
|     (let ((file (shepherd-service-file service))) | ||||
|       (mlet* %store-monad ((store-object (lower-object file)) | ||||
|                            (_ (built-derivations (list store-object)))) | ||||
|         (return file)))) | ||||
| 
 | ||||
|   (define (test enable-dummy disable-dummy) | ||||
|     (with-imported-modules '((gnu build marionette)) | ||||
|       #~(begin | ||||
|           (use-modules (gnu build marionette) | ||||
|                        (srfi srfi-64)) | ||||
| 
 | ||||
|           (define marionette | ||||
|             (make-marionette (list #$vm))) | ||||
| 
 | ||||
|           ;; Return the names of the running services on MARIONETTE. | ||||
|           (define (running-services marionette) | ||||
|             (marionette-eval | ||||
|              '(begin | ||||
|                 (use-modules (gnu services herd)) | ||||
|                 (map live-service-canonical-name (current-services))) | ||||
|              marionette)) | ||||
| 
 | ||||
|           (mkdir #$output) | ||||
|           (chdir #$output) | ||||
| 
 | ||||
|           (test-begin "upgrade-services") | ||||
| 
 | ||||
|           (let ((services-prior (running-services marionette))) | ||||
|             (test-assert "script successfully evaluated" | ||||
|               (marionette-eval | ||||
|                '(primitive-load #$enable-dummy) | ||||
|                marionette)) | ||||
| 
 | ||||
|             (test-assert "script started new service" | ||||
|               (and (not (memq 'dummy services-prior)) | ||||
|                    (memq 'dummy (running-services marionette)))) | ||||
| 
 | ||||
|             (test-assert "script successfully evaluated" | ||||
|               (marionette-eval | ||||
|                '(primitive-load #$disable-dummy) | ||||
|                marionette)) | ||||
| 
 | ||||
|             (test-assert "script stopped obsolete service" | ||||
|               (not (memq 'dummy (running-services marionette))))) | ||||
| 
 | ||||
|           (test-end) | ||||
|           (exit (= (test-runner-fail-count (test-runner-current)) 0))))) | ||||
| 
 | ||||
|   (mlet* %store-monad ((file (ensure-service-file dummy-service))) | ||||
|     (let ((enable (upgrade-services-program (list file) '(dummy) '() '())) | ||||
|           (disable (upgrade-services-program '() '() '(dummy) '()))) | ||||
|       (gexp->derivation "upgrade-services" (test enable disable))))) | ||||
| 
 | ||||
| (define* (run-install-bootloader-test) | ||||
|   "Run a test of an OS running INSTALL-BOOTLOADER-PROGRAM, which installs a | ||||
| bootloader's configuration file." | ||||
|   (define os | ||||
|     (marionette-operating-system | ||||
|      (simple-operating-system) | ||||
|      #:imported-modules '((gnu services herd) | ||||
|                           (guix combinators)))) | ||||
| 
 | ||||
|   (define vm (virtual-machine os)) | ||||
| 
 | ||||
|   (define (test script) | ||||
|     (with-imported-modules '((gnu build marionette)) | ||||
|       #~(begin | ||||
|           (use-modules (gnu build marionette) | ||||
|                        (ice-9 regex) | ||||
|                        (srfi srfi-1) | ||||
|                        (srfi srfi-64)) | ||||
| 
 | ||||
|           (define marionette | ||||
|             (make-marionette (list #$vm))) | ||||
| 
 | ||||
|           ;; Return the system generation paths that have GRUB menu entries. | ||||
|           (define (generations-in-grub-cfg marionette) | ||||
|             (let ((grub-cfg (marionette-eval | ||||
|                              '(begin | ||||
|                                 (call-with-input-file "/boot/grub/grub.cfg" | ||||
|                                   (lambda (port) | ||||
|                                     (get-string-all port)))) | ||||
|                              marionette))) | ||||
|               (map (lambda (parameter) | ||||
|                      (second (string-split (match:substring parameter) #\=))) | ||||
|                    (list-matches "system=[^ ]*" grub-cfg)))) | ||||
| 
 | ||||
|           (mkdir #$output) | ||||
|           (chdir #$output) | ||||
| 
 | ||||
|           (test-begin "install-bootloader") | ||||
| 
 | ||||
|           (test-assert "no prior menu entry for system generation" | ||||
|             (not (member #$os (generations-in-grub-cfg marionette)))) | ||||
| 
 | ||||
|           (test-assert "script successfully evaluated" | ||||
|             (marionette-eval | ||||
|              '(primitive-load #$script) | ||||
|              marionette)) | ||||
| 
 | ||||
|           (test-assert "menu entry created for system generation" | ||||
|             (member #$os (generations-in-grub-cfg marionette))) | ||||
| 
 | ||||
|           (test-end) | ||||
|           (exit (= (test-runner-fail-count (test-runner-current)) 0))))) | ||||
| 
 | ||||
|   (let* ((bootloader ((compose bootloader-configuration-bootloader | ||||
|                                operating-system-bootloader) | ||||
|                       os)) | ||||
|          ;; The typical use-case for 'install-bootloader-program' is to read | ||||
|          ;; the boot parameters for the existing menu entries on the system, | ||||
|          ;; parse them with 'boot-parameters->menu-entry', and pass the | ||||
|          ;; results to 'operating-system-bootcfg'. However, to obtain boot | ||||
|          ;; parameters, we would need to start the marionette, which we should | ||||
|          ;; ideally avoid doing outside of the 'test' G-Expression. Thus, we | ||||
|          ;; generate a bootloader configuration for the script as if there | ||||
|          ;; were no existing menu entries. In the grand scheme of things, this | ||||
|          ;; matters little -- these tests should not make assertions about the | ||||
|          ;; behavior of 'operating-system-bootcfg'. | ||||
|          (bootcfg (operating-system-bootcfg os '())) | ||||
|          (bootcfg-file (bootloader-configuration-file bootloader))) | ||||
|     (gexp->derivation | ||||
|      "install-bootloader" | ||||
|      ;; Due to the read-only nature of the virtual machines used in the system | ||||
|      ;; test suite, the bootloader installer script is omitted. 'grub-install' | ||||
|      ;; would attempt to write directly to the virtual disk if the | ||||
|      ;; installation script were run. | ||||
|      (test (install-bootloader-program #f #f bootcfg bootcfg-file #f "/"))))) | ||||
| 
 | ||||
| (define %test-switch-to-system | ||||
|   (system-test | ||||
|    (name "switch-to-system") | ||||
|    (description "Create a new generation of the system profile.") | ||||
|    (value (run-switch-to-system-test)))) | ||||
| 
 | ||||
| (define %test-upgrade-services | ||||
|   (system-test | ||||
|    (name "upgrade-services") | ||||
|    (description "Upgrade the Shepherd by unloading obsolete services and | ||||
| loading new services.") | ||||
|    (value (run-upgrade-services-test)))) | ||||
| 
 | ||||
| (define %test-install-bootloader | ||||
|   (system-test | ||||
|    (name "install-bootloader") | ||||
|    (description "Install a bootloader and its configuration file.") | ||||
|    (value (run-install-bootloader-test)))) | ||||
|  | @ -2,6 +2,7 @@ | |||
| ;;; Copyright © 2016 David Craven <david@craven.ch> | ||||
| ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> | ||||
| ;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com> | ||||
| ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -39,6 +40,21 @@ | |||
| ;; | ||||
| ;; Code: | ||||
| 
 | ||||
| ;; TODO: Move this to (guix build cargo-utils). Will cause a full rebuild | ||||
| ;; of all rust compilers. | ||||
| 
 | ||||
| (define (generate-all-checksums dir-name) | ||||
|   (for-each | ||||
|     (lambda (filename) | ||||
|       (let* ((dir (dirname filename)) | ||||
|              (checksum-file (string-append dir "/.cargo-checksum.json"))) | ||||
|         (when (file-exists? checksum-file) (delete-file checksum-file)) | ||||
|         (display (string-append | ||||
|                    "patch-cargo-checksums: generate-checksums for " | ||||
|                    dir "\n")) | ||||
|         (generate-checksums dir))) | ||||
|     (find-files dir-name "Cargo.toml$"))) | ||||
| 
 | ||||
| (define (manifest-targets) | ||||
|   "Extract all targets from the Cargo.toml manifest" | ||||
|   (let* ((port (open-input-pipe "cargo read-manifest")) | ||||
|  | @ -94,8 +110,7 @@ Cargo.toml file present at its root." | |||
|               ;; so that we can generate any cargo checksums. | ||||
|               ;; The --strip-components argument is needed to prevent creating | ||||
|               ;; an extra directory within `crate-dir`. | ||||
|               (invoke "tar" "xvf" path "-C" crate-dir "--strip-components" "1") | ||||
|               (generate-checksums crate-dir))))) | ||||
|               (invoke "tar" "xvf" path "-C" crate-dir "--strip-components" "1"))))) | ||||
|     inputs) | ||||
| 
 | ||||
|   ;; Configure cargo to actually use this new directory. | ||||
|  | @ -121,6 +136,31 @@ directory = '" port) | |||
|   (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")) | ||||
|   #t) | ||||
| 
 | ||||
| ;; The Cargo.lock file tells the build system which crates are required for | ||||
| ;; building and hardcodes their version and checksum.  In order to build with | ||||
| ;; the inputs we provide, we need to recreate the file with our inputs. | ||||
| (define* (update-cargo-lock #:key | ||||
|                             (vendor-dir "guix-vendor") | ||||
|                             #:allow-other-keys) | ||||
|   "Regenerate the Cargo.lock file with the current build inputs." | ||||
|   (when (file-exists? "Cargo.lock") | ||||
|     (begin | ||||
|       ;; Unfortunately we can't generate a Cargo.lock file until the checksums | ||||
|       ;; are generated, so we have an extra round of generate-all-checksums here. | ||||
|       (generate-all-checksums vendor-dir) | ||||
|       (delete-file "Cargo.lock") | ||||
|       (invoke "cargo" "generate-lockfile"))) | ||||
|   #t) | ||||
| 
 | ||||
| ;; After the 'patch-generated-file-shebangs phase any vendored crates who have | ||||
| ;; their shebangs patched will have a mismatch on their checksum. | ||||
| (define* (patch-cargo-checksums #:key | ||||
|                                 (vendor-dir "guix-vendor") | ||||
|                                 #:allow-other-keys) | ||||
|   "Patch the checksums of the vendored crates after patching their shebangs." | ||||
|   (generate-all-checksums vendor-dir) | ||||
|   #t) | ||||
| 
 | ||||
| (define* (build #:key | ||||
|                 skip-build? | ||||
|                 (cargo-build-flags '("--release")) | ||||
|  | @ -162,7 +202,9 @@ directory = '" port) | |||
|     (replace 'configure configure) | ||||
|     (replace 'build build) | ||||
|     (replace 'check check) | ||||
|     (replace 'install install))) | ||||
|     (replace 'install install) | ||||
|     (add-after 'configure 'update-cargo-lock update-cargo-lock) | ||||
|     (add-after 'patch-generated-file-shebangs 'patch-cargo-checksums patch-cargo-checksums))) | ||||
| 
 | ||||
| (define* (cargo-build #:key inputs (phases %standard-phases) | ||||
|                       #:allow-other-keys #:rest args) | ||||
|  |  | |||
|  | @ -135,6 +135,9 @@ of the package being built and its dependencies, and GOBIN, which determines | |||
| where executables (\"commands\") are installed to.  This phase is sometimes used | ||||
| by packages that use (guix build-system gnu) but have a handful of Go | ||||
| dependencies, so it should be self-contained." | ||||
|   ;; The Go cache is required starting in Go 1.12.  We don't actually use it but | ||||
|   ;; we need it to be a writable directory. | ||||
|   (setenv "GOCACHE" "/tmp/go-cache") | ||||
|   ;; Using the current working directory as GOPATH makes it easier for packagers | ||||
|   ;; who need to manipulate the unpacked source code. | ||||
|   (setenv "GOPATH" (getcwd)) | ||||
|  |  | |||
|  | @ -51,13 +51,15 @@ DIRECTORY is not accessible." | |||
|       ((? symbol? type) | ||||
|        type))) | ||||
| 
 | ||||
|   (define (dot-prefixed? file) | ||||
|     (string-prefix? "." file)) | ||||
| 
 | ||||
|   ;; Use 'scandir*' so we can avoid an extra 'lstat' for each entry, as | ||||
|   ;; opposed to Guile's 'scandir' or 'file-system-fold'. | ||||
|   (fold-right (lambda (entry result) | ||||
|                 (match entry | ||||
|                   (("." . _) | ||||
|                    result) | ||||
|                   ((".." . _) | ||||
|                   (((? dot-prefixed?) . _) | ||||
|                    ;; Exclude ".", "..", and hidden files such as backups. | ||||
|                    result) | ||||
|                   ((name . properties) | ||||
|                    (let ((absolute (string-append directory "/" name))) | ||||
|  |  | |||
|  | @ -427,7 +427,9 @@ This is the declarative counterpart of 'gexp->script'." | |||
|     (($ <program-file> name gexp guile module-path) | ||||
|      (gexp->script name gexp | ||||
|                    #:module-path module-path | ||||
|                    #:guile (or guile (default-guile)))))) | ||||
|                    #:guile (or guile (default-guile)) | ||||
|                    #:system system | ||||
|                    #:target target)))) | ||||
| 
 | ||||
| (define-record-type <scheme-file> | ||||
|   (%scheme-file name gexp splice?) | ||||
|  | @ -1345,6 +1347,7 @@ last one is created from the given <scheme-file> object." | |||
| (define* (compiled-modules modules | ||||
|                            #:key (name "module-import-compiled") | ||||
|                            (system (%current-system)) | ||||
|                            target | ||||
|                            (guile (%guile-for-build)) | ||||
|                            (module-path %load-path) | ||||
|                            (extensions '()) | ||||
|  | @ -1355,7 +1358,8 @@ last one is created from the given <scheme-file> object." | |||
|                            (pre-load-modules? #t)) | ||||
|   "Return a derivation that builds a tree containing the `.go' files | ||||
| corresponding to MODULES.  All the MODULES are built in a context where | ||||
| they can refer to each other." | ||||
| they can refer to each other.  When TARGET is true, cross-compile MODULES for | ||||
| TARGET, a GNU triplet." | ||||
|   (define total (length modules)) | ||||
| 
 | ||||
|   (mlet %store-monad ((modules (imported-modules modules | ||||
|  | @ -1374,6 +1378,12 @@ they can refer to each other." | |||
|                       (srfi srfi-26) | ||||
|                       (system base compile)) | ||||
| 
 | ||||
|          ;; TODO: Inline this on the next rebuild cycle. | ||||
|          (ungexp-splicing | ||||
|           (if target | ||||
|               (gexp ((use-modules (system base target)))) | ||||
|               (gexp ()))) | ||||
| 
 | ||||
|          (define (regular? file) | ||||
|            (not (member file '("." "..")))) | ||||
| 
 | ||||
|  | @ -1391,9 +1401,19 @@ they can refer to each other." | |||
|                                                    (gexp ())))) | ||||
|                          (ungexp (* total (if pre-load-modules? 2 1))) | ||||
|                          entry) | ||||
|                  (compile-file entry | ||||
|                                #:output-file output | ||||
|                                #:opts %auto-compilation-options) | ||||
| 
 | ||||
|                  (ungexp-splicing | ||||
|                   (if target | ||||
|                       (gexp ((with-target (ungexp target) | ||||
|                                (lambda () | ||||
|                                  (compile-file entry | ||||
|                                                #:output-file output | ||||
|                                                #:opts | ||||
|                                                %auto-compilation-options))))) | ||||
|                       (gexp ((compile-file entry | ||||
|                                            #:output-file output | ||||
|                                            #:opts %auto-compilation-options))))) | ||||
| 
 | ||||
|                  (+ 1 processed)))) | ||||
| 
 | ||||
|          (define (process-directory directory output processed) | ||||
|  | @ -1494,7 +1514,7 @@ they can refer to each other." | |||
|               'guile-2.2)) | ||||
| 
 | ||||
| (define* (load-path-expression modules #:optional (path %load-path) | ||||
|                                #:key (extensions '())) | ||||
|                                #:key (extensions '()) system target) | ||||
|   "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.  Return #f when MODULES and EXTENSIONS are empty." | ||||
|  | @ -1502,10 +1522,13 @@ are searched for in PATH.  Return #f when MODULES and EXTENSIONS are empty." | |||
|       (with-monad %store-monad | ||||
|         (return #f)) | ||||
|       (mlet %store-monad ((modules  (imported-modules modules | ||||
|                                                       #:module-path path)) | ||||
|                                                       #:module-path path | ||||
|                                                       #:system system)) | ||||
|                           (compiled (compiled-modules modules | ||||
|                                                       #:extensions extensions | ||||
|                                                       #:module-path path))) | ||||
|                                                       #:module-path path | ||||
|                                                       #:system system | ||||
|                                                       #:target target))) | ||||
|         (return (gexp (eval-when (expand load eval) | ||||
|                         (set! %load-path | ||||
|                           (cons (ungexp modules) | ||||
|  | @ -1527,14 +1550,18 @@ are searched for in PATH.  Return #f when MODULES and EXTENSIONS are empty." | |||
| 
 | ||||
| (define* (gexp->script name exp | ||||
|                        #:key (guile (default-guile)) | ||||
|                        (module-path %load-path)) | ||||
|                        (module-path %load-path) | ||||
|                        (system (%current-system)) | ||||
|                        target) | ||||
|   "Return an executable script NAME that runs EXP using GUILE, with EXP's | ||||
| imported modules in its search path.  Look up EXP's modules in MODULE-PATH." | ||||
|   (mlet %store-monad ((set-load-path | ||||
|                        (load-path-expression (gexp-modules exp) | ||||
|                                              module-path | ||||
|                                              #:extensions | ||||
|                                              (gexp-extensions exp)))) | ||||
|                                              (gexp-extensions exp) | ||||
|                                              #:system system | ||||
|                                              #:target target))) | ||||
|     (gexp->derivation name | ||||
|                       (gexp | ||||
|                        (call-with-output-file (ungexp output) | ||||
|  | @ -1554,6 +1581,8 @@ imported modules in its search path.  Look up EXP's modules in MODULE-PATH." | |||
| 
 | ||||
|                            (write '(ungexp exp) port) | ||||
|                            (chmod port #o555)))) | ||||
|                       #:system system | ||||
|                       #:target target | ||||
|                       #:module-path module-path))) | ||||
| 
 | ||||
| (define* (gexp->file name exp #:key | ||||
|  |  | |||
							
								
								
									
										69
									
								
								guix/git.scm
									
										
									
									
									
								
							
							
						
						
									
										69
									
								
								guix/git.scm
									
										
									
									
									
								
							|  | @ -139,29 +139,44 @@ of SHA1 string." | |||
|   "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) | ||||
|        (let ((oid (reference-target | ||||
|                    (branch-lookup repository branch BRANCH-REMOTE)))) | ||||
|          (object-lookup repository oid))) | ||||
|       (('commit . commit) | ||||
|        (let ((len (string-length commit))) | ||||
|          ;; 'object-lookup-prefix' appeared in Guile-Git in Mar. 2018, so we | ||||
|          ;; can't be sure it's available.  Furthermore, 'string->oid' used to | ||||
|          ;; read out-of-bounds when passed a string shorter than 40 chars, | ||||
|          ;; which is why we delay calls to it below. | ||||
|          (if (< len 40) | ||||
|              (if (module-defined? (resolve-interface '(git object)) | ||||
|                                   'object-lookup-prefix) | ||||
|                  (object-lookup-prefix repository (string->oid commit) len) | ||||
|                  (raise (condition | ||||
|                          (&message | ||||
|                           (message "long Git object ID is required"))))) | ||||
|              (object-lookup repository (string->oid commit))))) | ||||
|       (('tag    . tag) | ||||
|        (let ((oid (reference-name->oid repository | ||||
|                                        (string-append "refs/tags/" tag)))) | ||||
|          (object-lookup repository oid))))) | ||||
|     (let resolve ((ref ref)) | ||||
|       (match ref | ||||
|         (('branch . branch) | ||||
|          (let ((oid (reference-target | ||||
|                      (branch-lookup repository branch BRANCH-REMOTE)))) | ||||
|            (object-lookup repository oid))) | ||||
|         (('commit . commit) | ||||
|          (let ((len (string-length commit))) | ||||
|            ;; 'object-lookup-prefix' appeared in Guile-Git in Mar. 2018, so we | ||||
|            ;; can't be sure it's available.  Furthermore, 'string->oid' used to | ||||
|            ;; read out-of-bounds when passed a string shorter than 40 chars, | ||||
|            ;; which is why we delay calls to it below. | ||||
|            (if (< len 40) | ||||
|                (if (module-defined? (resolve-interface '(git object)) | ||||
|                                     'object-lookup-prefix) | ||||
|                    (object-lookup-prefix repository (string->oid commit) len) | ||||
|                    (raise (condition | ||||
|                            (&message | ||||
|                             (message "long Git object ID is required"))))) | ||||
|                (object-lookup repository (string->oid commit))))) | ||||
|         (('tag-or-commit . str) | ||||
|          (if (or (> (string-length str) 40) | ||||
|                  (not (string-every char-set:hex-digit str))) | ||||
|              (resolve `(tag . ,str))              ;definitely a tag | ||||
|              (catch 'git-error | ||||
|                (lambda () | ||||
|                  (resolve `(tag . ,str))) | ||||
|                (lambda _ | ||||
|                  ;; There's no such tag, so it must be a commit ID. | ||||
|                  (resolve `(commit . ,str)))))) | ||||
|         (('tag    . tag) | ||||
|          (let ((oid (reference-name->oid repository | ||||
|                                          (string-append "refs/tags/" tag)))) | ||||
|            ;; Get the commit that the tag at OID refers to.  This is not | ||||
|            ;; strictly needed, but it's more consistent to always return the | ||||
|            ;; OID of a commit. | ||||
|            (object-lookup repository | ||||
|                           (tag-target-id (tag-lookup repository oid)))))))) | ||||
| 
 | ||||
|   (reset repository obj RESET_HARD) | ||||
|   (object-id obj)) | ||||
|  | @ -218,8 +233,8 @@ please upgrade Guile-Git.~%")))) | |||
| values: the cache directory name, and the SHA1 commit (a string) corresponding | ||||
| to REF. | ||||
| 
 | ||||
| REF is pair whose key is [branch | commit | tag] and value the associated | ||||
| data, respectively [<branch name> | <sha1> | <tag name>]. | ||||
| REF is pair whose key is [branch | commit | tag | tag-or-commit ] and value | ||||
| the associated data: [<branch name> | <sha1> | <tag name> | <string>]. | ||||
| 
 | ||||
| When RECURSIVE? is true, check out submodules as well, if any." | ||||
|   (define canonical-ref | ||||
|  | @ -319,7 +334,7 @@ Log progress and checkout info to LOG-PORT." | |||
|   git-checkout? | ||||
|   (url     git-checkout-url) | ||||
|   (branch  git-checkout-branch (default "master")) | ||||
|   (commit  git-checkout-commit (default #f)) | ||||
|   (commit  git-checkout-commit (default #f))      ;#f | tag | commit | ||||
|   (recursive? git-checkout-recursive? (default #f))) | ||||
| 
 | ||||
| (define* (latest-repository-commit* url #:key ref recursive? log-port) | ||||
|  | @ -358,7 +373,7 @@ Log progress and checkout info to LOG-PORT." | |||
|     (($ <git-checkout> url branch commit recursive?) | ||||
|      (latest-repository-commit* url | ||||
|                                 #:ref (if commit | ||||
|                                           `(commit . ,commit) | ||||
|                                           `(tag-or-commit . ,commit) | ||||
|                                           `(branch . ,branch)) | ||||
|                                 #:recursive? recursive? | ||||
|                                 #:log-port (current-error-port))))) | ||||
|  |  | |||
|  | @ -341,10 +341,15 @@ strings like \"guile-next=cabba9e\" meaning that packages are built using | |||
|   (define (replace old url commit) | ||||
|     (package | ||||
|       (inherit old) | ||||
|       (version (string-append "git." | ||||
|                               (if (< (string-length commit) 7) | ||||
|                                   commit | ||||
|                                   (string-take commit 7)))) | ||||
|       (version (if (and (> (string-length commit) 1) | ||||
|                         (string-prefix? "v" commit) | ||||
|                         (char-set-contains? char-set:digit | ||||
|                                             (string-ref commit 1))) | ||||
|                    (string-drop commit 1)        ;looks like a tag like "v1.0" | ||||
|                    (string-append "git." | ||||
|                                   (if (< (string-length commit) 7) | ||||
|                                       commit | ||||
|                                       (string-take commit 7))))) | ||||
|       (source (git-checkout (url url) (commit commit) | ||||
|                             (recursive? #t))))) | ||||
| 
 | ||||
|  |  | |||
|  | @ -41,6 +41,7 @@ | |||
|                                        delete-matching-generations) | ||||
|   #:use-module (guix graph) | ||||
|   #:use-module (guix scripts graph) | ||||
|   #:use-module (guix scripts system reconfigure) | ||||
|   #:use-module (guix build utils) | ||||
|   #:use-module (guix progress) | ||||
|   #:use-module ((guix build syscalls) #:select (terminal-columns)) | ||||
|  | @ -178,43 +179,9 @@ TARGET, and register them." | |||
| 
 | ||||
|     (return *unspecified*))) | ||||
| 
 | ||||
| (define* (install-bootloader installer | ||||
|                              #:key | ||||
|                              bootcfg bootcfg-file | ||||
|                              target) | ||||
|   "Run INSTALLER, a bootloader installation script, with error handling, in | ||||
| %STORE-MONAD." | ||||
|   (mlet %store-monad ((installer-drv (if installer | ||||
|                                          (lower-object installer) | ||||
|                                          (return #f))) | ||||
|                       (bootcfg       (lower-object bootcfg))) | ||||
|     (let* ((gc-root      (string-append target %gc-roots-directory | ||||
|                                         "/bootcfg")) | ||||
|            (temp-gc-root (string-append gc-root ".new")) | ||||
|            (install (and installer-drv | ||||
|                          (derivation->output-path installer-drv))) | ||||
|            (bootcfg (derivation->output-path bootcfg))) | ||||
|       ;; Prepare the symlink to bootloader config file to make sure that it's | ||||
|       ;; a GC root when 'installer-drv' completes (being a bit paranoid.) | ||||
|       (switch-symlinks temp-gc-root bootcfg) | ||||
| 
 | ||||
|       (unless (false-if-exception | ||||
|                (begin | ||||
|                  (install-boot-config bootcfg bootcfg-file target) | ||||
|                  (when install | ||||
|                    (save-load-path-excursion (primitive-load install))))) | ||||
|         (delete-file temp-gc-root) | ||||
|         (leave (G_ "failed to install bootloader ~a~%") install)) | ||||
| 
 | ||||
|       ;; Register bootloader config file as a GC root so that its dependencies | ||||
|       ;; (background image, font, etc.) are not reclaimed. | ||||
|       (rename-file temp-gc-root gc-root) | ||||
|       (return #t)))) | ||||
| 
 | ||||
| (define* (install os-drv target | ||||
|                   #:key (log-port (current-output-port)) | ||||
|                   bootloader-installer install-bootloader? | ||||
|                   bootcfg bootcfg-file) | ||||
|                   install-bootloader? bootloader bootcfg) | ||||
|   "Copy the closure of BOOTCFG, which includes the output of OS-DRV, to | ||||
| directory TARGET.  TARGET must be an absolute directory name since that's what | ||||
| 'register-path' expects. | ||||
|  | @ -265,10 +232,11 @@ the ownership of '~a' may be incorrect!~%") | |||
|         (populate os-dir target) | ||||
| 
 | ||||
|         (mwhen install-bootloader? | ||||
|           (install-bootloader bootloader-installer | ||||
|                               #:bootcfg bootcfg | ||||
|                               #:bootcfg-file bootcfg-file | ||||
|                               #:target target)))))) | ||||
|           (install-bootloader local-eval bootloader bootcfg | ||||
|                               #:target target) | ||||
|           (return | ||||
|            (info (G_ "bootloader successfully installed on '~a'~%") | ||||
|                  (bootloader-configuration-target bootloader)))))))) | ||||
| 
 | ||||
|  | ||||
| ;;; | ||||
|  | @ -335,82 +303,6 @@ unload." | |||
|        (warning (G_ "failed to obtain list of shepherd services~%")) | ||||
|        (return #f))))) | ||||
| 
 | ||||
| (define (upgrade-shepherd-services os) | ||||
|   "Upgrade the Shepherd (PID 1) by unloading obsolete services and loading new | ||||
| services specified in OS and not currently running. | ||||
| 
 | ||||
| This is currently very conservative in that it does not stop or unload any | ||||
| running service.  Unloading or stopping the wrong service ('udev', say) could | ||||
| bring the system down." | ||||
|   (define new-services | ||||
|     (service-value | ||||
|      (fold-services (operating-system-services os) | ||||
|                     #:target-type shepherd-root-service-type))) | ||||
| 
 | ||||
|   ;; Arrange to simply emit a warning if the service upgrade fails. | ||||
|   (with-shepherd-error-handling | ||||
|    (call-with-service-upgrade-info new-services | ||||
|      (lambda (to-restart to-unload) | ||||
|         (for-each (lambda (unload) | ||||
|                     (info (G_ "unloading service '~a'...~%") unload) | ||||
|                     (unload-service unload)) | ||||
|                   to-unload) | ||||
| 
 | ||||
|         (with-monad %store-monad | ||||
|           (munless (null? new-services) | ||||
|             (let ((new-service-names  (map shepherd-service-canonical-name new-services)) | ||||
|                   (to-restart-names   (map shepherd-service-canonical-name to-restart)) | ||||
|                   (to-start           (filter shepherd-service-auto-start? new-services))) | ||||
|               (info (G_ "loading new services:~{ ~a~}...~%") new-service-names) | ||||
|               (unless (null? to-restart-names) | ||||
|                 ;; Listing TO-RESTART-NAMES in the message below wouldn't help | ||||
|                 ;; because many essential services cannot be meaningfully | ||||
|                 ;; restarted.  See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22039#30>. | ||||
|                 (format #t (G_ "To complete the upgrade, run 'herd restart SERVICE' to stop, | ||||
| upgrade, and restart each service that was not automatically restarted.\n"))) | ||||
|               (mlet %store-monad ((files (mapm %store-monad | ||||
|                                                (compose lower-object | ||||
|                                                         shepherd-service-file) | ||||
|                                                new-services))) | ||||
|                 ;; Here we assume that FILES are exactly those that were computed | ||||
|                 ;; as part of the derivation that built OS, which is normally the | ||||
|                 ;; case. | ||||
|                 (load-services/safe (map derivation->output-path files)) | ||||
| 
 | ||||
|                 (for-each start-service | ||||
|                           (map shepherd-service-canonical-name to-start)) | ||||
|                 (return #t))))))))) | ||||
| 
 | ||||
| (define* (switch-to-system os | ||||
|                            #:optional (profile %system-profile)) | ||||
|   "Make a new generation of PROFILE pointing to the directory of OS, switch to | ||||
| it atomically, and then run OS's activation script." | ||||
|   (mlet* %store-monad ((drv (operating-system-derivation os)) | ||||
|                        (script (lower-object (operating-system-activation-script os)))) | ||||
|     (let* ((system     (derivation->output-path drv)) | ||||
|            (number     (+ 1 (generation-number profile))) | ||||
|            (generation (generation-file-name profile number))) | ||||
|       (switch-symlinks generation system) | ||||
|       (switch-symlinks profile generation) | ||||
| 
 | ||||
|       (format #t (G_ "activating system...~%")) | ||||
| 
 | ||||
|       ;; The activation script may change $PATH, among others, so protect | ||||
|       ;; against that. | ||||
|       (save-environment-excursion | ||||
|        ;; Tell 'activate-current-system' what the new system is. | ||||
|        (setenv "GUIX_NEW_SYSTEM" system) | ||||
| 
 | ||||
|        ;; The activation script may modify '%load-path' & co., so protect | ||||
|        ;; against that.  This is necessary to ensure that | ||||
|        ;; 'upgrade-shepherd-services' gets to see the right modules when it | ||||
|        ;; computes derivations with 'gexp->derivation'. | ||||
|        (save-load-path-excursion | ||||
|         (primitive-load (derivation->output-path script)))) | ||||
| 
 | ||||
|       ;; Finally, try to update system services. | ||||
|       (upgrade-shepherd-services os)))) | ||||
| 
 | ||||
| (define-syntax-rule (unless-file-not-found exp) | ||||
|   (catch 'system-error | ||||
|     (lambda () | ||||
|  | @ -505,18 +397,13 @@ STORE is an open connection to the store." | |||
|                      ((bootloader-configuration-file-generator bootloader) | ||||
|                       bootloader-config entries | ||||
|                       #:old-entries old-entries))) | ||||
|            (bootcfg-file -> (bootloader-configuration-file bootloader)) | ||||
|            (target -> "/") | ||||
|            (drvs -> (list bootcfg))) | ||||
|         (mbegin %store-monad | ||||
|           (show-what-to-build* drvs) | ||||
|           (built-derivations drvs) | ||||
|           ;; Only install bootloader configuration file. Thus, no installer is | ||||
|           ;; provided here. | ||||
|           (install-bootloader #f | ||||
|                               #:bootcfg bootcfg | ||||
|                               #:bootcfg-file bootcfg-file | ||||
|                               #:target target)))))) | ||||
|           ;; Only install bootloader configuration file. | ||||
|           (install-bootloader local-eval bootloader-config bootcfg | ||||
|                               #:run-installer? #f)))))) | ||||
| 
 | ||||
|  | ||||
| ;;; | ||||
|  | @ -820,8 +707,17 @@ and TARGET arguments." | |||
|                                         (condition-message c)) | ||||
|                                 (exit 1))) | ||||
|                        (#$installer #$bootloader #$device #$target) | ||||
|                        (format #t "bootloader successfully installed on '~a'~%" | ||||
|                                #$device)))))) | ||||
|                        (info (G_ "bootloader successfully installed on '~a'~%") | ||||
|                              #$device)))))) | ||||
| 
 | ||||
| (define (local-eval exp) | ||||
|   "Evaluate EXP, a G-Expression, in-place." | ||||
|   (mlet* %store-monad ((lowered (lower-gexp exp)) | ||||
|                        (_ (built-derivations (lowered-gexp-inputs lowered)))) | ||||
|     (save-load-path-excursion | ||||
|      (set! %load-path (lowered-gexp-load-path lowered)) | ||||
|      (set! %load-compiled-path (lowered-gexp-load-compiled-path lowered)) | ||||
|      (return (primitive-eval (lowered-gexp-sexp lowered)))))) | ||||
| 
 | ||||
| (define* (perform-action action os | ||||
|                          #:key skip-safety-checks? | ||||
|  | @ -858,19 +754,12 @@ static checks." | |||
|         (map boot-parameters->menu-entry (profile-boot-parameters)))) | ||||
| 
 | ||||
|   (define bootloader | ||||
|     (bootloader-configuration-bootloader (operating-system-bootloader os))) | ||||
|     (operating-system-bootloader os)) | ||||
| 
 | ||||
|   (define bootcfg | ||||
|     (and (memq action '(init reconfigure)) | ||||
|          (operating-system-bootcfg os menu-entries))) | ||||
| 
 | ||||
|   (define bootloader-script | ||||
|     (let ((installer (bootloader-installer bootloader)) | ||||
|           (target    (or target "/"))) | ||||
|       (bootloader-installer-script installer | ||||
|                                    (bootloader-package bootloader) | ||||
|                                    bootloader-target target))) | ||||
| 
 | ||||
|   (when (eq? action 'reconfigure) | ||||
|     (maybe-suggest-running-guix-pull)) | ||||
| 
 | ||||
|  | @ -897,9 +786,7 @@ static checks." | |||
|        ;; See <http://bugs.gnu.org/21068>. | ||||
|        (drvs      (mapm %store-monad lower-object | ||||
|                         (if (memq action '(init reconfigure)) | ||||
|                             (if install-bootloader? | ||||
|                                 (list sys bootcfg bootloader-script) | ||||
|                                 (list sys bootcfg)) | ||||
|                             (list sys bootcfg) | ||||
|                             (list sys)))) | ||||
|        (%         (if derivations-only? | ||||
|                       (return (for-each (compose println derivation-file-name) | ||||
|  | @ -909,28 +796,32 @@ static checks." | |||
| 
 | ||||
|     (if (or dry-run? derivations-only?) | ||||
|         (return #f) | ||||
|         (let ((bootcfg-file (bootloader-configuration-file bootloader))) | ||||
|         (begin | ||||
|           (for-each (compose println derivation->output-path) | ||||
|                     drvs) | ||||
| 
 | ||||
|           (case action | ||||
|             ((reconfigure) | ||||
|              (newline) | ||||
|              (format #t (G_ "activating system...~%")) | ||||
|              (mbegin %store-monad | ||||
|                (switch-to-system os) | ||||
|                (switch-to-system local-eval os) | ||||
|                (mwhen install-bootloader? | ||||
|                  (install-bootloader bootloader-script | ||||
|                                      #:bootcfg bootcfg | ||||
|                                      #:bootcfg-file bootcfg-file | ||||
|                                      #:target "/")))) | ||||
|                  (install-bootloader local-eval bootloader bootcfg | ||||
|                                      #:target (or target "/")) | ||||
|                  (return | ||||
|                   (info (G_ "bootloader successfully installed on '~a'~%") | ||||
|                         (bootloader-configuration-target bootloader)))) | ||||
|                (with-shepherd-error-handling | ||||
|                   (upgrade-shepherd-services local-eval os)))) | ||||
|             ((init) | ||||
|              (newline) | ||||
|              (format #t (G_ "initializing operating system under '~a'...~%") | ||||
|                      target) | ||||
|              (install sys (canonicalize-path target) | ||||
|                       #:install-bootloader? install-bootloader? | ||||
|                       #:bootcfg bootcfg | ||||
|                       #:bootcfg-file bootcfg-file | ||||
|                       #:bootloader-installer bootloader-script)) | ||||
|                       #:bootloader bootloader | ||||
|                       #:bootcfg bootcfg)) | ||||
|             (else | ||||
|              ;; All we had to do was to build SYS and maybe register an | ||||
|              ;; indirect GC root. | ||||
|  |  | |||
							
								
								
									
										232
									
								
								guix/scripts/system/reconfigure.scm
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										232
									
								
								guix/scripts/system/reconfigure.scm
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,232 @@ | |||
| ;;; GNU Guix --- Functional package management for GNU | ||||
| ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> | ||||
| ;;; Copyright © 2016 Alex Kost <alezost@gmail.com> | ||||
| ;;; Copyright © 2016, 2017, 2018 Chris Marusich <cmmarusich@gmail.com> | ||||
| ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> | ||||
| ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> | ||||
| ;;; Copyright © 2019 Christopher Baines <mail@cbaines.net> | ||||
| ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
| ;;; GNU Guix is free software; you can redistribute it and/or modify it | ||||
| ;;; under the terms of the GNU General Public License as published by | ||||
| ;;; the Free Software Foundation; either version 3 of the License, or (at | ||||
| ;;; your option) any later version. | ||||
| ;;; | ||||
| ;;; GNU Guix is distributed in the hope that it will be useful, but | ||||
| ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| ;;; GNU General Public License for more details. | ||||
| ;;; | ||||
| ;;; You should have received a copy of the GNU General Public License | ||||
| ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| (define-module (guix scripts system reconfigure) | ||||
|   #:autoload   (gnu packages gnupg) (guile-gcrypt) | ||||
|   #:use-module (gnu bootloader) | ||||
|   #:use-module (gnu services) | ||||
|   #:use-module (gnu services herd) | ||||
|   #:use-module (gnu services shepherd) | ||||
|   #:use-module (gnu system) | ||||
|   #:use-module (guix gexp) | ||||
|   #:use-module (guix modules) | ||||
|   #:use-module (guix monads) | ||||
|   #:use-module (guix store) | ||||
|   #:use-module (ice-9 match) | ||||
|   #:use-module (srfi srfi-1) | ||||
|   #:use-module (srfi srfi-11) | ||||
|   #:export (switch-system-program | ||||
|             switch-to-system | ||||
| 
 | ||||
|             upgrade-services-program | ||||
|             upgrade-shepherd-services | ||||
| 
 | ||||
|             install-bootloader-program | ||||
|             install-bootloader)) | ||||
| 
 | ||||
| ;;; Commentary: | ||||
| ;;; | ||||
| ;;; This module implements the "effectful" parts of system | ||||
| ;;; reconfiguration. Although building a system derivation is a pure | ||||
| ;;; operation, a number of impure operations must be carried out for the | ||||
| ;;; system configuration to be realized -- chiefly, creation of generation | ||||
| ;;; symlinks and invocation of activation scripts. | ||||
| ;;; | ||||
| ;;; Code: | ||||
| 
 | ||||
|  | ||||
| ;;; | ||||
| ;;; Profile creation. | ||||
| ;;; | ||||
| 
 | ||||
| (define* (switch-system-program os #:optional profile) | ||||
|   "Return an executable store item that, upon being evaluated, will create a | ||||
| new generation of PROFILE pointing to the directory of OS, switch to it | ||||
| atomically, and run OS's activation script." | ||||
|   (program-file | ||||
|    "switch-to-system.scm" | ||||
|    (with-extensions (list guile-gcrypt) | ||||
|      (with-imported-modules (source-module-closure '((guix config) | ||||
|                                                      (guix profiles) | ||||
|                                                      (guix utils))) | ||||
|        #~(begin | ||||
|            (use-modules (guix config) | ||||
|                         (guix profiles) | ||||
|                         (guix utils)) | ||||
| 
 | ||||
|            (define profile | ||||
|              (or #$profile (string-append %state-directory "/profiles/system"))) | ||||
| 
 | ||||
|            (let* ((number (1+ (generation-number profile))) | ||||
|                   (generation (generation-file-name profile number))) | ||||
|              (switch-symlinks generation #$os) | ||||
|              (switch-symlinks profile generation) | ||||
|              (setenv "GUIX_NEW_SYSTEM" #$os) | ||||
|              (primitive-load #$(operating-system-activation-script os)))))))) | ||||
| 
 | ||||
| (define* (switch-to-system eval os #:optional profile) | ||||
|   "Using EVAL, a monadic procedure taking a single G-Expression as an argument, | ||||
| create a new generation of PROFILE pointing to the directory of OS, switch to | ||||
| it atomically, and run OS's activation script." | ||||
|   (eval #~(primitive-load #$(switch-system-program os profile)))) | ||||
| 
 | ||||
|  | ||||
| ;;; | ||||
| ;;; Services. | ||||
| ;;; | ||||
| 
 | ||||
| (define (running-services eval) | ||||
|   "Using EVAL, a monadic procedure taking a single G-Expression as an argument, | ||||
| return the <live-service> objects that are currently running on MACHINE." | ||||
|   (define exp | ||||
|     (with-imported-modules '((gnu services herd)) | ||||
|       #~(begin | ||||
|           (use-modules (gnu services herd)) | ||||
|           (let ((services (current-services))) | ||||
|             (and services | ||||
|                  ;; 'live-service-running' is ignored, as we can't necessarily | ||||
|                  ;; serialize arbitrary objects. This should be fine for now, | ||||
|                  ;; since 'machine-current-services' is not exposed publicly, | ||||
|                  ;; and the resultant <live-service> objects are only used for | ||||
|                  ;; resolving service dependencies. | ||||
|                  (map (lambda (service) | ||||
|                         (list (live-service-provision service) | ||||
|                               (live-service-requirement service))) | ||||
|                       services)))))) | ||||
|   (mlet %store-monad ((services (eval exp))) | ||||
|     (return (map (match-lambda | ||||
|                    ((provision requirement) | ||||
|                     (live-service provision requirement #f))) | ||||
|                  services)))) | ||||
| 
 | ||||
| ;; XXX: Currently, this does NOT attempt to restart running services. See | ||||
| ;; <https://issues.guix.info/issue/33508> for details. | ||||
| (define (upgrade-services-program service-files to-start to-unload to-restart) | ||||
|   "Return an executable store item that, upon being evaluated, will upgrade | ||||
| the Shepherd (PID 1) by unloading obsolete services and loading new | ||||
| services. SERVICE-FILES is a list of Shepherd service files to load, and | ||||
| TO-START, TO-UNLOAD, and TO-RESTART are lists of the Shepherd services' | ||||
| canonical names (symbols)." | ||||
|   (program-file | ||||
|    "upgrade-shepherd-services.scm" | ||||
|    (with-imported-modules '((gnu services herd)) | ||||
|     #~(begin | ||||
|         (use-modules (gnu services herd) | ||||
|                      (srfi srfi-1)) | ||||
| 
 | ||||
|         ;; Load the service files for any new services. | ||||
|         (load-services/safe '#$service-files) | ||||
| 
 | ||||
|         ;; Unload obsolete services and start new services. | ||||
|         (for-each unload-service '#$to-unload) | ||||
|         (for-each start-service '#$to-start))))) | ||||
| 
 | ||||
| (define* (upgrade-shepherd-services eval os) | ||||
|   "Using EVAL, a monadic procedure taking a single G-Expression as an argument, | ||||
| upgrade the Shepherd (PID 1) by unloading obsolete services and loading new | ||||
| services as defined by OS." | ||||
|   (define target-services | ||||
|     (service-value | ||||
|      (fold-services (operating-system-services os) | ||||
|                     #:target-type shepherd-root-service-type))) | ||||
| 
 | ||||
|   (mlet* %store-monad ((live-services (running-services eval))) | ||||
|     (let*-values (((to-unload to-restart) | ||||
|                    (shepherd-service-upgrade live-services target-services))) | ||||
|       (let* ((to-unload (map live-service-canonical-name to-unload)) | ||||
|              (to-restart (map shepherd-service-canonical-name to-restart)) | ||||
|              (to-start (lset-difference eqv? | ||||
|                                         (map shepherd-service-canonical-name | ||||
|                                              target-services) | ||||
|                                         (map live-service-canonical-name | ||||
|                                              live-services))) | ||||
|              (service-files (map shepherd-service-file target-services))) | ||||
|         (eval #~(primitive-load #$(upgrade-services-program service-files | ||||
|                                                             to-start | ||||
|                                                             to-unload | ||||
|                                                             to-restart))))))) | ||||
| 
 | ||||
|  | ||||
| ;;; | ||||
| ;;; Bootloader configuration. | ||||
| ;;; | ||||
| 
 | ||||
| (define (install-bootloader-program installer bootloader-package bootcfg | ||||
|                                     bootcfg-file device target) | ||||
|   "Return an executable store item that, upon being evaluated, will install | ||||
| BOOTCFG to BOOTCFG-FILE, a target file name, on DEVICE, a file system device, | ||||
| at TARGET, a mount point, and subsequently run INSTALLER from | ||||
| BOOTLOADER-PACKAGE." | ||||
|   (program-file | ||||
|    "install-bootloader.scm" | ||||
|    (with-extensions (list guile-gcrypt) | ||||
|      (with-imported-modules (source-module-closure '((gnu build bootloader) | ||||
|                                                      (gnu build install) | ||||
|                                                      (guix store) | ||||
|                                                      (guix utils))) | ||||
|        #~(begin | ||||
|            (use-modules (gnu build bootloader) | ||||
|                         (gnu build install) | ||||
|                         (guix build utils) | ||||
|                         (guix store) | ||||
|                         (guix utils) | ||||
|                         (ice-9 binary-ports) | ||||
|                         (srfi srfi-34) | ||||
|                         (srfi srfi-35)) | ||||
|            (let* ((gc-root (string-append #$target %gc-roots-directory "/bootcfg")) | ||||
|                   (temp-gc-root (string-append gc-root ".new"))) | ||||
|              (switch-symlinks temp-gc-root gc-root) | ||||
|              (install-boot-config #$bootcfg #$bootcfg-file #$target) | ||||
|              ;; Preserve the previous activation's garbage collector root | ||||
|              ;; until the bootloader installer has run, so that a failure in | ||||
|              ;; the bootloader's installer script doesn't leave the user with | ||||
|              ;; a broken installation. | ||||
|              (when #$installer | ||||
|                (catch #t | ||||
|                  (lambda () | ||||
|                    (#$installer #$bootloader-package #$device #$target)) | ||||
|                  (lambda args | ||||
|                    (delete-file temp-gc-root) | ||||
|                    (apply throw args)))) | ||||
|              (rename-file temp-gc-root gc-root))))))) | ||||
| 
 | ||||
| (define* (install-bootloader eval configuration bootcfg | ||||
|                              #:key | ||||
|                              (run-installer? #t) | ||||
|                              (target "/")) | ||||
|   "Using EVAL, a monadic procedure taking a single G-Expression as an argument, | ||||
| configure the bootloader on TARGET such that OS will be booted by default and | ||||
| additional configurations specified by MENU-ENTRIES can be selected." | ||||
|   (let* ((bootloader (bootloader-configuration-bootloader configuration)) | ||||
|          (installer (and run-installer? | ||||
|                          (bootloader-installer bootloader))) | ||||
|          (package (bootloader-package bootloader)) | ||||
|          (device (bootloader-configuration-target configuration)) | ||||
|          (bootcfg-file (bootloader-configuration-file bootloader))) | ||||
|     (eval #~(primitive-load #$(install-bootloader-program installer | ||||
|                                                           package | ||||
|                                                           bootcfg | ||||
|                                                           bootcfg-file | ||||
|                                                           device | ||||
|                                                           target))))) | ||||
|  | @ -1104,6 +1104,25 @@ | |||
|           (return (and (zero? (close-pipe pipe)) | ||||
|                        (= 42 (string->number str))))))))) | ||||
| 
 | ||||
| (test-assertm "program-file #:system" | ||||
|   (let* ((exp    (with-imported-modules '((guix build utils)) | ||||
|                    (gexp (begin | ||||
|                            (use-modules (guix build utils)) | ||||
|                            (display "hi!"))))) | ||||
|          (system (if (string=? (%current-system) "x86_64-linux") | ||||
|                      "armhf-linux" | ||||
|                      "x86_64-linux")) | ||||
|          (file   (program-file "program" exp))) | ||||
|     (mlet %store-monad ((drv (lower-object file system))) | ||||
|       (return (and (string=? (derivation-system drv) system) | ||||
|                    (find (lambda (input) | ||||
|                            (let ((drv (pk (derivation-input-derivation input)))) | ||||
|                              (and (string=? (derivation-name drv) | ||||
|                                             "module-import-compiled") | ||||
|                                   (string=? (derivation-system drv) | ||||
|                                             system)))) | ||||
|                          (derivation-inputs drv))))))) | ||||
| 
 | ||||
| (test-assertm "scheme-file" | ||||
|   (let* ((text   (plain-file "foo" "Hello, world!")) | ||||
|          (scheme (scheme-file "bar" #~(list "foo" #$text)))) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| # GNU Guix --- Functional package management for GNU | ||||
| # Copyright © 2018 Ludovic Courtès <ludo@gnu.org> | ||||
| # Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org> | ||||
| # | ||||
| # This file is part of GNU Guix. | ||||
| # | ||||
|  | @ -52,5 +52,11 @@ guix gc -R "$v0_1_0_drv" | grep guile-gcrypt-git.9e3eacd | |||
| test "$v0_1_0_drv" != "$latest_drv" | ||||
| test "$v0_1_0_drv" != "$orig_drv" | ||||
| 
 | ||||
| v0_1_0_drv="`guix build guix --with-commit=guile-gcrypt=v0.1.0 -d`" | ||||
| guix gc -R "$v0_1_0_drv" | grep guile-gcrypt-git.v0.1.0 | ||||
| guix gc -R "$v0_1_0_drv" | grep guile-gcrypt-9e3eacd | ||||
| test "$v0_1_0_drv" != "$latest_drv" | ||||
| test "$v0_1_0_drv" != "$orig_drv" | ||||
| 
 | ||||
| if guix build guix --with-commit=guile-gcrypt=000 -d | ||||
| then false; else true; fi | ||||
|  |  | |||
|  | @ -26,10 +26,6 @@ | |||
|   #:use-module (srfi srfi-64) | ||||
|   #:use-module (ice-9 match)) | ||||
| 
 | ||||
| (define live-service | ||||
|   (@@ (gnu services herd) live-service)) | ||||
| 
 | ||||
|  | ||||
| (test-begin "services") | ||||
| 
 | ||||
| (test-equal "services, default value" | ||||
|  |  | |||
		Reference in a new issue