diff options
author | Marius Bakke <mbakke@fastmail.com> | 2019-08-04 13:41:27 +0200 |
---|---|---|
committer | Marius Bakke <mbakke@fastmail.com> | 2019-08-04 13:41:27 +0200 |
commit | f35d3132654bd1be5c7453f9eb43eb6e9de85a15 (patch) | |
tree | f62c3a069153d1612a5c270e991eebe43c4f5cae | |
parent | 1dff73acf908125b292de2ab2fc5b25155ad77d8 (diff) | |
parent | e920037793faeebf8fb2a918b50a1751b125a0af (diff) | |
download | guix-f35d3132654bd1be5c7453f9eb43eb6e9de85a15.tar.gz |
Merge branch 'master' into staging
66 files changed, 3001 insertions, 836 deletions
diff --git a/Makefile.am b/Makefile.am index 7fa51d17ac..0bd85e8fcf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 \ diff --git a/doc/guix.texi b/doc/guix.texi index c2da4ce173..cb60d5c7b7 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -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 diff --git a/gnu/local.mk b/gnu/local.mk index eb3b0dcd3b..ca15f3096d 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -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 \ diff --git a/gnu/machine/ssh.scm b/gnu/machine/ssh.scm index 278d43c10f..552eafa9de 100644 --- a/gnu/machine/ssh.scm +++ b/gnu/machine/ssh.scm @@ -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))))) ;;; diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 99f4d7aded..c3b1e04901 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -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") diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 1e21562e91..f801bca8df 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -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) diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index 2f2a60ad19..74af02a47d 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -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))))))) diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index d072fc58ad..a014486361 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -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") diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index d821298e56..9834fcbe63 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -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 diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 1383ab067f..3bd0d664da 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -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+))) diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index 45e1d64cd2..b975afe6d3 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -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(). diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm index d3a3f8d832..228a8b6472 100644 --- a/gnu/packages/dictionaries.scm +++ b/gnu/packages/dictionaries.scm @@ -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") diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm index 17357c1292..b4d5a9ab27 100644 --- a/gnu/packages/dns.scm +++ b/gnu/packages/dns.scm @@ -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 diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm index 18e7bea724..0f47eaf236 100644 --- a/gnu/packages/docker.scm +++ b/gnu/packages/docker.scm @@ -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") diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm index 8501db02a1..0bb9c099fb 100644 --- a/gnu/packages/education.scm +++ b/gnu/packages/education.scm @@ -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)) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index b11ec100f2..600d810bea 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -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+))) diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index 977ac9c19c..2163ea2152 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -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+))) diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm index 1982d0bf4b..e64f3b099e 100644 --- a/gnu/packages/fontutils.scm +++ b/gnu/packages/fontutils.scm @@ -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 diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index a17ac9728c..07ed02ba18 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -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 diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 2f5396dd1e..c67ef036ee 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -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))) diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index 94a797c8f5..bc3a418e99 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -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 diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index e871685f02..b8a53824b4 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -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 diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm index 6db52e0be0..d33a9857c9 100644 --- a/gnu/packages/image-viewers.scm +++ b/gnu/packages/image-viewers.scm @@ -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)) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 5d3aa03124..3e5eae47e7 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -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 diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm index 31b3670079..68d2804dcc 100644 --- a/gnu/packages/kde.scm +++ b/gnu/packages/kde.scm @@ -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 diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm index e885aaab39..a9b5b85a47 100644 --- a/gnu/packages/kodi.scm +++ b/gnu/packages/kodi.scm @@ -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 diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 52883282e8..395a06c956 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -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 diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 884d00d935..d2bed231bd 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -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)))) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 8a3f64b10d..40fe7d9450 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -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") diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm index 04c800e95f..f5c888186f 100644 --- a/gnu/packages/man.scm +++ b/gnu/packages/man.scm @@ -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)) diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm index 7d355220b2..3d899941be 100644 --- a/gnu/packages/multiprecision.scm +++ b/gnu/packages/multiprecision.scm @@ -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 diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index bc252fc591..16e04aaa13 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -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") diff --git a/gnu/packages/patches/dkimproxy-add-ipv6-support.patch b/gnu/packages/patches/dkimproxy-add-ipv6-support.patch new file mode 100644 index 0000000000..8e9988791d --- /dev/null +++ b/gnu/packages/patches/dkimproxy-add-ipv6-support.patch @@ -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 = $@) + { diff --git a/gnu/packages/patches/libvirt-remove-ATTRIBUTE_UNUSED.patch b/gnu/packages/patches/libvirt-remove-ATTRIBUTE_UNUSED.patch new file mode 100644 index 0000000000..5bfefa70bb --- /dev/null +++ b/gnu/packages/patches/libvirt-remove-ATTRIBUTE_UNUSED.patch @@ -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) diff --git a/gnu/packages/patches/pcre2-fix-jit_match-crash.patch b/gnu/packages/patches/pcre2-fix-jit_match-crash.patch new file mode 100644 index 0000000000..7543319ee9 --- /dev/null +++ b/gnu/packages/patches/pcre2-fix-jit_match-crash.patch @@ -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; diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm index 1395a3ea40..7385c78b9f 100644 --- a/gnu/packages/pcre.scm +++ b/gnu/packages/pcre.scm @@ -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))))) diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm index 62444308db..2411de55c9 100644 --- a/gnu/packages/php.scm +++ b/gnu/packages/php.scm @@ -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 diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 362ab7f031..6410a13df7 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -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 diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm index 71dac09737..ad01814318 100644 --- a/gnu/packages/regex.scm +++ b/gnu/packages/regex.scm @@ -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) diff --git a/gnu/packages/scanner.scm b/gnu/packages/scanner.scm index d23da9e502..b371cf3105 100644 --- a/gnu/packages/scanner.scm +++ b/gnu/packages/scanner.scm @@ -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 diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index b6b28b7d06..cb5b5839df 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -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) diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index 1900925022..0579c167fc 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -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 diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm index cd3dd0de54..c35ee8639c 100644 --- a/gnu/packages/syncthing.scm +++ b/gnu/packages/syncthing.scm @@ -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)))) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index b5c14143a8..cf37756503 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -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)) diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index 4d0e875012..df8d1e4b79 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -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")) diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm index b35486ba59..4412d54579 100644 --- a/gnu/packages/text-editors.scm +++ b/gnu/packages/text-editors.scm @@ -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+))) diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index d1dc14e6d7..2c520dfbdf 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -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 diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index ac85b9595c..20dc69282a 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -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)))) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 2854ae2228..9febda6949 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -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") diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index c6371a6ac1..7c69f7b60e 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -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 diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index ac6403211c..f2d1f316d4 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -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 diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm index 62cf225ceb..fd7277a7af 100644 --- a/gnu/packages/wine.scm +++ b/gnu/packages/wine.scm @@ -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) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index a2a152bec4..0dbd0326c3 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -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) diff --git a/gnu/services/herd.scm b/gnu/services/herd.scm index 0008746fe9..2207b2d34b 100644 --- a/gnu/services/herd.scm +++ b/gnu/services/herd.scm @@ -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 diff --git a/gnu/tests/reconfigure.scm b/gnu/tests/reconfigure.scm new file mode 100644 index 0000000000..3a2f0a2e53 --- /dev/null +++ b/gnu/tests/reconfigure.scm @@ -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)))) diff --git a/guix/build/cargo-build-system.scm b/guix/build/cargo-build-system.scm index f38de16cf7..7d363a18a5 100644 --- a/guix/build/cargo-build-system.scm +++ b/guix/build/cargo-build-system.scm @@ -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) diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm index 858068ba98..3dac43c18a 100644 --- a/guix/build/go-build-system.scm +++ b/guix/build/go-build-system.scm @@ -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)) diff --git a/guix/discovery.scm b/guix/discovery.scm index 468b6c59de..7c5fed7f0e 100644 --- a/guix/discovery.scm +++ b/guix/discovery.scm @@ -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))) diff --git a/guix/gexp.scm b/guix/gexp.scm index eef308b000..45cd5869f7 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -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 diff --git a/guix/git.scm b/guix/git.scm index 289537dedf..de98fed40c 100644 --- a/guix/git.scm +++ b/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))))) diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index ec58ba871b..3ee0b737fe 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -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))))) diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 67a4071684..9fc3a10e98 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -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. diff --git a/guix/scripts/system/reconfigure.scm b/guix/scripts/system/reconfigure.scm new file mode 100644 index 0000000000..dee0c24bd2 --- /dev/null +++ b/guix/scripts/system/reconfigure.scm @@ -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))))) diff --git a/tests/gexp.scm b/tests/gexp.scm index 460afe7f59..5c013d838d 100644 --- a/tests/gexp.scm +++ b/tests/gexp.scm @@ -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)))) diff --git a/tests/guix-build-branch.sh b/tests/guix-build-branch.sh index e64782c831..3d2a7dddf5 100644 --- a/tests/guix-build-branch.sh +++ b/tests/guix-build-branch.sh @@ -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 diff --git a/tests/services.scm b/tests/services.scm index 44ad0022c6..572fe38164 100644 --- a/tests/services.scm +++ b/tests/services.scm @@ -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" |