diff options
author | Marius Bakke <mbakke@fastmail.com> | 2019-08-08 00:35:37 +0200 |
---|---|---|
committer | Marius Bakke <mbakke@fastmail.com> | 2019-08-08 00:35:37 +0200 |
commit | 8e7f97b9ffee10af3cf16958ebc0a7d410a19ca8 (patch) | |
tree | b3836f9cea849fd8bfb61a77ba225a0054babe58 | |
parent | fa228db78bc9dcb0e7da607dd8783224c76d7ef5 (diff) | |
parent | ba7ff983d613f735ee270f0b0e3c5dba5cbeda3c (diff) | |
download | guix-8e7f97b9ffee10af3cf16958ebc0a7d410a19ca8.tar.gz |
Merge branch 'master' into staging
49 files changed, 4595 insertions, 2730 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index cb60d5c7b7..734206a4b2 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -25510,7 +25510,7 @@ evaluates to. As an example, @var{file} might contain a definition like this: %base-services)))) (list (machine - (system %system) + (operating-system %system) (environment managed-host-environment-type) (configuration (machine-ssh-configuration (host-name "localhost") @@ -25530,12 +25530,28 @@ complex deployment may involve, for example, starting virtual machines through a Virtual Private Server (VPS) provider. In such a case, a different @var{environment} type would be used. +Do note that you first need to generate a key pair on the coordinator machine +to allow the daemon to export signed archives of files from the store +(@pxref{Invoking guix archive}). + +@example +# guix archive --generate-key +@end example + +@noindent +Each target machine must authorize the key of the master machine so that it +accepts store items it receives from the coordinator: + +@example +# guix archive --authorize < coordinator-public-key.txt +@end example + @deftp {Data Type} machine This is the data type representing a single machine in a heterogeneous Guix deployment. @table @asis -@item @code{system} +@item @code{operating-system} The object of the operating system configuration to deploy. @item @code{environment} diff --git a/gnu/local.mk b/gnu/local.mk index d91342d890..d6f64d372a 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -772,6 +772,7 @@ dist_patch_DATA = \ %D%/packages/patches/elfutils-tests-ptrace.patch \ %D%/packages/patches/elixir-path-length.patch \ %D%/packages/patches/einstein-build.patch \ + %D%/packages/patches/emacs-dired-toggle-sudo-emacs-26.patch \ %D%/packages/patches/emacs-exec-path.patch \ %D%/packages/patches/emacs-fix-scheme-indent-function.patch \ %D%/packages/patches/emacs-json-reformat-fix-tests.patch \ @@ -1022,7 +1023,8 @@ dist_patch_DATA = \ %D%/packages/patches/libotr-test-auth-fix.patch \ %D%/packages/patches/libmad-armv7-thumb-pt1.patch \ %D%/packages/patches/libmad-armv7-thumb-pt2.patch \ - %D%/packages/patches/libmad-frame-length.patch \ + %D%/packages/patches/libmad-length-check.patch \ + %D%/packages/patches/libmad-md_size.patch \ %D%/packages/patches/libmad-mips-newgcc.patch \ %D%/packages/patches/libmygpo-qt-fix-qt-5.11.patch \ %D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch \ @@ -1043,7 +1045,6 @@ 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 \ @@ -1305,6 +1306,7 @@ dist_patch_DATA = \ %D%/packages/patches/soundconverter-remove-gconf-dependency.patch \ %D%/packages/patches/sssd-curl-compat.patch \ %D%/packages/patches/steghide-fixes.patch \ + %D%/packages/patches/strace-ipc-tests.patch \ %D%/packages/patches/streamlink-update-test.patch \ %D%/packages/patches/stumpwm-fix-broken-read-one-line.patch \ %D%/packages/patches/superlu-dist-awpm-grid.patch \ diff --git a/gnu/machine.scm b/gnu/machine.scm index 0b79402b0a..30ae97f6ec 100644 --- a/gnu/machine.scm +++ b/gnu/machine.scm @@ -34,7 +34,7 @@ machine? this-machine - machine-system + machine-operating-system machine-environment machine-configuration machine-display-name @@ -85,14 +85,14 @@ make-machine machine? this-machine - (system machine-system) ; <operating-system> - (environment machine-environment) ; symbol - (configuration machine-configuration ; configuration object - (default #f))) ; specific to environment + (operating-system machine-operating-system) ; <operating-system> + (environment machine-environment) ; symbol + (configuration machine-configuration ; configuration object + (default #f))) ; specific to environment (define (machine-display-name machine) "Return the host-name identifying MACHINE." - (operating-system-host-name (machine-system machine))) + (operating-system-host-name (machine-operating-system machine))) (define (machine-remote-eval machine exp) "Evaluate EXP, a gexp, on MACHINE. Ensure that all the elements EXP refers to diff --git a/gnu/machine/ssh.scm b/gnu/machine/ssh.scm index 552eafa9de..ba3e33c922 100644 --- a/gnu/machine/ssh.scm +++ b/gnu/machine/ssh.scm @@ -20,6 +20,9 @@ #:use-module (gnu machine) #:autoload (gnu packages gnupg) (guile-gcrypt) #:use-module (gnu system) + #:use-module (gnu system file-systems) + #:use-module (gnu system uuid) + #:use-module (guix diagnostics) #:use-module (guix gexp) #:use-module (guix i18n) #:use-module (guix modules) @@ -29,6 +32,7 @@ #:use-module (guix scripts system reconfigure) #:use-module (guix ssh) #:use-module (guix store) + #:use-module (guix utils) #:use-module (ice-9 match) #:use-module (srfi srfi-19) #:use-module (srfi srfi-26) @@ -40,6 +44,7 @@ machine-ssh-configuration machine-ssh-configuration-host-name + machine-ssh-configuration-build-locally? machine-ssh-configuration-port machine-ssh-configuration-user machine-ssh-configuration-session)) @@ -62,15 +67,17 @@ make-machine-ssh-configuration machine-ssh-configuration? this-machine-ssh-configuration - (host-name machine-ssh-configuration-host-name) ; string - (port machine-ssh-configuration-port ; integer - (default 22)) - (user machine-ssh-configuration-user ; string - (default "root")) - (identity machine-ssh-configuration-identity ; path to a private key - (default #f)) - (session machine-ssh-configuration-session ; session - (default #f))) + (host-name machine-ssh-configuration-host-name) ; string + (build-locally? machine-ssh-configuration-build-locally? + (default #t)) + (port machine-ssh-configuration-port ; integer + (default 22)) + (user machine-ssh-configuration-user ; string + (default "root")) + (identity machine-ssh-configuration-identity ; path to a private key + (default #f)) + (session machine-ssh-configuration-session ; session + (default #f))) (define (machine-ssh-session machine) "Return the SSH session that was given in MACHINE's configuration, or create @@ -96,7 +103,149 @@ one from the configuration's parameters if one was not provided." "Internal implementation of 'machine-remote-eval' for MACHINE instances with an environment type of 'managed-host." (maybe-raise-unsupported-configuration-error machine) - (remote-eval exp (machine-ssh-session machine))) + (remote-eval exp (machine-ssh-session machine) + #:build-locally? + (machine-ssh-configuration-build-locally? + (machine-configuration machine)))) + + +;;; +;;; Safety checks. +;;; + +(define (machine-check-file-system-availability machine) + "Raise a '&message' error condition if any of the file-systems specified in +MACHINE's 'system' declaration do not exist on the machine." + (define file-systems + (filter (lambda (fs) + (and (file-system-mount? fs) + (not (member (file-system-type fs) + %pseudo-file-system-types)) + (not (memq 'bind-mount (file-system-flags fs))))) + (operating-system-file-systems (machine-operating-system machine)))) + + (define (check-literal-file-system fs) + (define remote-exp + #~(catch 'system-error + (lambda () + (stat #$(file-system-device fs)) + #t) + (lambda args + (system-error-errno args)))) + + (mlet %store-monad ((errno (machine-remote-eval machine remote-exp))) + (when (number? errno) + (raise (condition + (&message + (message (format #f (G_ "device '~a' not found: ~a") + (file-system-device fs) + (strerror errno))))))) + (return #t))) + + (define (check-labeled-file-system fs) + (define remote-exp + (with-imported-modules '((gnu build file-systems)) + #~(begin + (use-modules (gnu build file-systems)) + (find-partition-by-label #$(file-system-label->string + (file-system-device fs)))))) + + (mlet %store-monad ((result (machine-remote-eval machine remote-exp))) + (unless result + (raise (condition + (&message + (message (format #f (G_ "no file system with label '~a'") + (file-system-label->string + (file-system-device fs)))))))) + (return #t))) + + (define (check-uuid-file-system fs) + (define remote-exp + (with-imported-modules (source-module-closure + '((gnu build file-systems) + (gnu system uuid))) + #~(begin + (use-modules (gnu build file-systems) + (gnu system uuid)) + + (define uuid + (string->uuid #$(uuid->string (file-system-device fs)))) + + (find-partition-by-uuid uuid)))) + + (mlet %store-monad ((result (machine-remote-eval machine remote-exp))) + (unless result + (raise (condition + (&message + (message (format #f (G_ "no file system with UUID '~a'") + (uuid->string (file-system-device fs)))))))) + (return #t))) + + (mbegin %store-monad + (mapm %store-monad check-literal-file-system + (filter (lambda (fs) + (string? (file-system-device fs))) + file-systems)) + (mapm %store-monad check-labeled-file-system + (filter (lambda (fs) + (file-system-label? (file-system-device fs))) + file-systems)) + (mapm %store-monad check-uuid-file-system + (filter (lambda (fs) + (uuid? (file-system-device fs))) + file-systems)))) + +(define (machine-check-initrd-modules machine) + "Raise a '&message' error condition if any of the modules needed by +'needed-for-boot' file systems in MACHINE are not available in the initrd." + (define file-systems + (filter file-system-needed-for-boot? + (operating-system-file-systems (machine-operating-system machine)))) + + (define (missing-modules fs) + (define remote-exp + (let ((device (file-system-device fs))) + (with-imported-modules (source-module-closure + '((gnu build file-systems) + (gnu build linux-modules) + (gnu system uuid))) + #~(begin + (use-modules (gnu build file-systems) + (gnu build linux-modules) + (gnu system uuid)) + + (define dev + #$(cond ((string? device) device) + ((uuid? device) #~(find-partition-by-uuid + (string->uuid + #$(uuid->string device)))) + ((file-system-label? device) + #~(find-partition-by-label + (file-system-label->string #$device))))) + + (missing-modules dev '#$(operating-system-initrd-modules + (machine-operating-system machine))))))) + (mlet %store-monad ((missing (machine-remote-eval machine remote-exp))) + (return (list fs missing)))) + + (mlet %store-monad ((device (mapm %store-monad missing-modules file-systems))) + (for-each (match-lambda + ((fs missing) + (unless (null? missing) + (raise (condition + (&message + (message (format #f (G_ "~a missing modules ~{ ~a~}~%") + (file-system-device fs) + missing)))))))) + device) + (return #t))) + +(define (check-deployment-sanity machine) + "Raise a '&message' error condition if it is clear that deploying MACHINE's +'system' declaration would fail." + (mbegin %store-monad + (machine-check-file-system-availability machine) + (machine-check-initrd-modules machine))) ;;; @@ -165,8 +314,9 @@ of MACHINE's system profile, ordered from most recent to oldest." "Internal implementation of 'deploy-machine' for MACHINE instances with an environment type of 'managed-host." (maybe-raise-unsupported-configuration-error machine) - (mlet %store-monad ((boot-parameters (machine-boot-parameters machine))) - (let* ((os (machine-system machine)) + (mlet %store-monad ((_ (check-deployment-sanity machine)) + (boot-parameters (machine-boot-parameters machine))) + (let* ((os (machine-operating-system machine)) (eval (cut machine-remote-eval machine <>)) (menu-entries (map boot-parameters->menu-entry boot-parameters)) (bootloader-configuration (operating-system-bootloader os)) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index c3b1e04901..7ffdf18609 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -1181,7 +1181,7 @@ commands and their arguments.") (define-public wpa-supplicant-minimal (package (name "wpa-supplicant-minimal") - (version "2.8") + (version "2.9") (source (origin (method url-fetch) (uri (string-append @@ -1189,7 +1189,7 @@ commands and their arguments.") version ".tar.gz")) (sha256 (base32 - "15ixzm347n8w6gdvi3j3yks3i15qmp6by9ayvswm34d929m372d6")) + "05qzak1mssnxcgdrafifxh9w86a4ha69qabkg4bsigk499xyxggw")) (modules '((guix build utils))) (snippet '(begin @@ -2606,7 +2606,7 @@ buffers.") `(#:tests? #f ; many of the tests try to load kernel modules #:phases (modify-phases %standard-phases - (add-after 'unpack 'autogen + (replace 'bootstrap (lambda _ ;; Don't run configure in this phase. (setenv "NOCONFIGURE" "1") diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index f801bca8df..fb9e78bf92 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -236,8 +236,7 @@ the real span of the lattice.") (build-system gnu-build-system) (native-inputs `(("texlive" ,(texlive-union - (list texlive-fonts-amsfonts - texlive-latex-amsfonts))))) + (list texlive-amsfonts))))) (inputs `(("gmp" ,gmp) ("libx11" ,libx11) ("perl" ,perl) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index c6c42f66c6..fc0d6f80db 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -3700,7 +3700,7 @@ library.") (define-public faudio (package (name "faudio") - (version "19.07") + (version "19.08") (source (origin (method git-fetch) @@ -3709,7 +3709,7 @@ library.") (commit version))) (file-name (string-append name "-" version "-checkout")) (sha256 - (base32 "1wf6skc5agaikc9qgwk8bx56sad31fafs53lqqn4jmx8i76pl0lw")))) + (base32 "1v13kfhyr46241vb6a4dcb4gw5f149525sprwa9cj4rv6wlcqgm5")))) (arguments '(#:tests? #f ; No tests. #:configure-flags '("-DFFMPEG=ON"))) diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index 74af02a47d..74620a2cbe 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -1212,14 +1212,14 @@ determining dependencies between variables, code improvement suggestions.") (define-public r-chippeakanno (package (name "r-chippeakanno") - (version "3.18.1") + (version "3.18.2") (source (origin (method url-fetch) (uri (bioconductor-uri "ChIPpeakAnno" version)) (sha256 (base32 - "1mwi5s600c3jxy8f1azfrndc3g06qvhbmrp9wqac9nwjbfx1kfji")))) + "0wzwdxvvr7wknz5jnan0wsp81c1gv4d2qx0mrb1yybqf4z068779")))) (properties `((upstream-name . "ChIPpeakAnno"))) (build-system r-build-system) (propagated-inputs @@ -1521,14 +1521,14 @@ experiments.") (define-public r-genomicinteractions (package (name "r-genomicinteractions") - (version "1.18.0") + (version "1.18.1") (source (origin (method url-fetch) (uri (bioconductor-uri "GenomicInteractions" version)) (sha256 (base32 - "0ipvm3c1cqd46n60lsrqzf6fx4b3lwia57jyfx9wcqqg205qj73b")))) + "0hq2n5yfr9h2ayn10dy9lz08gd2q0awrm5cy2kqdmz4d8ss4r94p")))) (properties `((upstream-name . "GenomicInteractions"))) (build-system r-build-system) @@ -3529,14 +3529,14 @@ position-specific scores within R and Bioconductor.") (define-public r-atacseqqc (package (name "r-atacseqqc") - (version "1.8.1") + (version "1.8.5") (source (origin (method url-fetch) (uri (bioconductor-uri "ATACseqQC" version)) (sha256 (base32 - "0h5j3724hnd86w22vy3whqx6gkf0nf2dxd2clgzdvjzblbcd5s69")))) + "1i8f0vs0z4jbc2yvj1diay7jhcmb1a82zv96xllk771f25nvmmxp")))) (properties `((upstream-name . "ATACseqQC"))) (build-system r-build-system) (propagated-inputs @@ -3621,14 +3621,14 @@ annotations and ontologies.") (define-public r-abaenrichment (package (name "r-abaenrichment") - (version "1.14.0") + (version "1.14.1") (source (origin (method url-fetch) (uri (bioconductor-uri "ABAEnrichment" version)) (sha256 (base32 - "0av1dysk7qa8c4a0pp7yq89k8c4y40d2gyvsb8f27slvv2i3aad2")))) + "1w322wsp6bd3gyfwzgdf088cvfmpq774knr57d0dj420ljf4xn48")))) (properties `((upstream-name . "ABAEnrichment"))) (build-system r-build-system) (propagated-inputs @@ -4841,14 +4841,14 @@ annotations.") (define-public r-rsubread (package (name "r-rsubread") - (version "1.34.4") + (version "1.34.6") (source (origin (method url-fetch) (uri (bioconductor-uri "Rsubread" version)) (sha256 (base32 - "1230p8nsakifmpsqfiaj8rpm7npa8ab903mfjmayfa71n6yzvcbs")))) + "0nnfh4hnrs5kd72m8c50cidbsxjz12szw2vynpmg8q0wpd99q550")))) (properties `((upstream-name . "Rsubread"))) (build-system r-build-system) (inputs `(("zlib" ,zlib))) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 89f1ac36ea..956257d7bb 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -13,6 +13,7 @@ ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com> ;;; Copyright © 2018 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de> ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -4206,8 +4207,15 @@ command, or queried for specific k-mers with @code{jellyfish query}.") (modify-phases %standard-phases (add-after 'unpack 'set-cc (lambda _ (setenv "CC" "gcc") #t)) - ;; FIXME: This fails with "permission denied". - (delete 'reset-gzip-timestamps)))) + + (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)))))) (native-inputs `(("python-cython" ,python-cython) ("python-pytest" ,python-pytest) @@ -7450,13 +7458,13 @@ names in their natural, rather than lexicographic, order.") (define-public r-edger (package (name "r-edger") - (version "3.26.5") + (version "3.26.6") (source (origin (method url-fetch) (uri (bioconductor-uri "edgeR" version)) (sha256 (base32 - "0iba4krz30dx5b0s89n5cfkwn64867s7vmvvfqms9lbcr4kj439m")))) + "17vadhamjv4x0l4qqq2p2fi6j2bkllz5zd8dq761vgd5ic23zizm")))) (properties `((upstream-name . "edgeR"))) (build-system r-build-system) (propagated-inputs @@ -7517,13 +7525,13 @@ coding changes and predict coding outcomes.") (define-public r-limma (package (name "r-limma") - (version "3.40.2") + (version "3.40.6") (source (origin (method url-fetch) (uri (bioconductor-uri "limma" version)) (sha256 (base32 - "1d4ig2b7fa9mwja52isxrwmprfdjdk1mlcf2skhdp51l24z6wbk7")))) + "166z8cdh6w90rldqqaar7hyaskwiy4smawjfbn4sn58clv6q3mp8")))) (build-system r-build-system) (home-page "http://bioinf.wehi.edu.au/limma") (synopsis "Package for linear models for microarray and RNA-seq data") @@ -7650,13 +7658,13 @@ annotation data packages using SQLite data storage.") (define-public r-biomart (package (name "r-biomart") - (version "2.40.1") + (version "2.40.3") (source (origin (method url-fetch) (uri (bioconductor-uri "biomaRt" version)) (sha256 (base32 - "1abl0c4qbhfqf9ixdp74183phm7s8rszrr5ldczm59b8vyng8rhx")))) + "022m1r44s00c5k9bmv0lr22lcn662nhc91aazvv0yyysxjamyf60")))) (properties `((upstream-name . "biomaRt"))) (build-system r-build-system) @@ -7811,13 +7819,13 @@ array-like objects like @code{DataFrame} objects (typically with Rle columns), (define-public r-summarizedexperiment (package (name "r-summarizedexperiment") - (version "1.14.0") + (version "1.14.1") (source (origin (method url-fetch) (uri (bioconductor-uri "SummarizedExperiment" version)) (sha256 (base32 - "1ypk63pdml89y81pr41i2zq0fimsaxsa5lgpg6xs5cwikyaq0pci")))) + "0bhwgzrdipr0qjzc4j0qspqprx3v1rvshmx4j6506dv43pqlgp3f")))) (properties `((upstream-name . "SummarizedExperiment"))) (build-system r-build-system) @@ -7875,13 +7883,13 @@ alignments.") (define-public r-rtracklayer (package (name "r-rtracklayer") - (version "1.44.0") + (version "1.44.2") (source (origin (method url-fetch) (uri (bioconductor-uri "rtracklayer" version)) (sha256 (base32 - "161gcks9b12993g9k27gf7wfh8lgd8m8rr7x2slgfqqssk0yrmpd")))) + "03b4rfsbzjjf5kxcsjv7kq8hrsgcvz9rfzcn2v7fx3nr818pbb8s")))) (build-system r-build-system) (arguments `(#:phases @@ -7922,13 +7930,13 @@ as well as query and modify the browser state, such as the current viewport.") (define-public r-genomicfeatures (package (name "r-genomicfeatures") - (version "1.36.3") + (version "1.36.4") (source (origin (method url-fetch) (uri (bioconductor-uri "GenomicFeatures" version)) (sha256 (base32 - "0zkd57i5qjxsravv0gbyckc0wrnqzgxd61ibh3jmhmrccrr9ihn3")))) + "0mzqv8pyxx5nwchyx3radym9ws2f9hb50xc9abjsjs4w4pv91j3k")))) (properties `((upstream-name . "GenomicFeatures"))) (build-system r-build-system) @@ -8346,13 +8354,13 @@ paired-end data.") (define-public r-rcas (package (name "r-rcas") - (version "1.10.0") + (version "1.10.1") (source (origin (method url-fetch) (uri (bioconductor-uri "RCAS" version)) (sha256 (base32 - "1h4vf5gzilqbdrd8m9l3zc2m4sca8cir8366a7njgd558k7ld5kl")))) + "06z5zmdi34jblw37z6ff8hb6lvvi0chwr37acwqfn8d27ax9lakz")))) (properties `((upstream-name . "RCAS"))) (build-system r-build-system) (propagated-inputs @@ -9410,14 +9418,14 @@ of mass spectrometry based proteomics data.") (define-public r-msnid (package (name "r-msnid") - (version "1.18.0") + (version "1.18.1") (source (origin (method url-fetch) (uri (bioconductor-uri "MSnID" version)) (sha256 (base32 - "18mp8zacawhfapfwpq8czbswxix2ykvqhwjga54v0a99zg3k87h3")))) + "1n49l5mjdz7p4g2nwsbhm1jcj42sv6lsriq77n2imvacsvk0qfmb")))) (properties `((upstream-name . "MSnID"))) (build-system r-build-system) (propagated-inputs diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 3bd0d664da..4b998eb1fb 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -78,14 +78,14 @@ (define-public r-clipr (package (name "r-clipr") - (version "0.6.0") + (version "0.7.0") (source (origin (method url-fetch) (uri (cran-uri "clipr" version)) (sha256 (base32 - "0k9kimkmmj9k7290sxiqn4kd1vvm4w7q9a44wp0w30b7yjpavx2m")))) + "1qn2p13d0c1bpqss6mv9hk60980rzhznfqpyaf5x0fy65svy9903")))) (build-system r-build-system) (home-page "https://github.com/mdlincoln/clipr") (synopsis "Read and write from the system clipboard") @@ -97,14 +97,14 @@ the system clipboards.") (define-public r-ellipsis (package (name "r-ellipsis") - (version "0.2.0") + (version "0.2.0.1") (source (origin (method url-fetch) (uri (cran-uri "ellipsis" version)) (sha256 (base32 - "0hdk79q4wn5nq52p8qd65kqz81l0b8gfzsbzyvmfais0p24qclib")))) + "0hx9l043433bwm1np9sypph77c7y9dddpz0wrhbkcv01x32jhr8f")))) (build-system r-build-system) (propagated-inputs `(("r-rlang" ,r-rlang))) @@ -370,14 +370,14 @@ such as copy/paste from an R session.") (define-public r-callr (package (name "r-callr") - (version "3.2.0") + (version "3.3.1") (source (origin (method url-fetch) (uri (cran-uri "callr" version)) (sha256 (base32 - "1s5h2k7c1vgbry90xczin66q89cbkc6mvh4679l5rsz83087pd2b")))) + "0rvrlg86fxr5nadvqa0dr1iifqjs4d1rc32v76m3ccvx6m3xlq5z")))) (build-system r-build-system) (propagated-inputs `(("r-r6" ,r-r6) @@ -500,13 +500,13 @@ in systems and applications.") (define-public r-servr (package (name "r-servr") - (version "0.14") + (version "0.15") (source (origin (method url-fetch) (uri (cran-uri "servr" version)) (sha256 (base32 - "0zjjnfgas9d16fihksyk24kgkkqswb4sd0rz51id2ni1ymdyasjk")))) + "199k9aghwk9rf1rm8pjg60xacqww25cza259h5dfj1ixil0m6dxi")))) (build-system r-build-system) (propagated-inputs `(("r-httpuv" ,r-httpuv) @@ -614,13 +614,13 @@ LaTeX.") (define-public r-curl (package (name "r-curl") - (version "3.3") + (version "4.0") (source (origin (method url-fetch) (uri (cran-uri "curl" version)) (sha256 (base32 - "1gd5i25anzi28lg1f8p7g63z9d46xi0qaw4lxpml5p0f52lvkc0c")))) + "0wb1j87fa2nd4a9x1w2nmc453nzvx6qiq8dviwc4jr36hsf9ra89")))) (build-system r-build-system) (arguments `(#:phases @@ -1205,14 +1205,14 @@ including functions for geolocation and routing.") (define-public r-haven (package (name "r-haven") - (version "2.1.0") + (version "2.1.1") (source (origin (method url-fetch) (uri (cran-uri "haven" version)) (sha256 (base32 - "0x5fwc4q2gdxwwp5sxdd6q17jhpisd769y9kv0xgnjcm0cdwz8f0")))) + "12h64r2v2451igyl7v4w2kg0hzw9rnanph0m7smffq29ybkv9g4h")))) (build-system r-build-system) (inputs `(("zlib" ,zlib))) @@ -1441,14 +1441,14 @@ processes. Most of its code is based on the @code{psutil} Python package.") (define-public r-pkgbuild (package (name "r-pkgbuild") - (version "1.0.3") + (version "1.0.4") (source (origin (method url-fetch) (uri (cran-uri "pkgbuild" version)) (sha256 (base32 - "0k8zwa66rm1ncx19ld5mbaxcjxkswiczpdqyssy44vl8k6scwfn9")))) + "0prvx91dha5pvd0k4jca2arkngvi6vnfs2indmiy3kwwzyjyyd19")))) (build-system r-build-system) (propagated-inputs `(("r-callr" ,r-callr) @@ -1497,13 +1497,13 @@ you to rapidly iterate while developing a package.") (define-public r-rcpp (package (name "r-rcpp") - (version "1.0.1") + (version "1.0.2") (source (origin (method url-fetch) (uri (cran-uri "Rcpp" version)) (sha256 - (base32 "015rmxns8mhmnd9wnz9bmma4iwx2sf4bcwkkp9hcgvdmblzf0vg7")))) + (base32 "170jlmjrs92z5qdv58badhxycjvfjpqwwpic7rm13pc9zkb3i4xd")))) (build-system r-build-system) (native-inputs `(("r-knitr" ,r-knitr))) ; for vignettes @@ -2230,14 +2230,14 @@ topics for ecologists (ISBN 978-0-691-12522-0).") (define-public r-lpsolve (package (name "r-lpsolve") - (version "5.6.13.1") + (version "5.6.13.2") (source (origin (method url-fetch) (uri (cran-uri "lpSolve" version)) (sha256 (base32 - "1f10ywlaaldgjj84vs108ly0nsbkrdgbn5d6qj7nk93j1x1xrn3a")))) + "0fc5m259ayc880f5hvnq59ih6nb2rlp394n756n1khmxbjpw1w3m")))) (properties `((upstream-name . "lpSolve"))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/lpSolve") @@ -2315,14 +2315,14 @@ data). Weighted versions of MLE, MME and QME are available.") (define-public r-energy (package (name "r-energy") - (version "1.7-5") + (version "1.7-6") (source (origin (method url-fetch) (uri (cran-uri "energy" version)) (sha256 (base32 - "15k9dg0a82cs9ypm0wpcsff3il1hzhnnv86dv5ngby1r144czhi4")))) + "16m8bxfgr9sdisjy2qrv6fv5xxwcc9q890l0hpbwq6qzisrdn3lh")))) (build-system r-build-system) (propagated-inputs `(("r-boot" ,r-boot) @@ -2450,14 +2450,14 @@ available in a vignette.") (define-public r-lava (package (name "r-lava") - (version "1.6.5") + (version "1.6.6") (source (origin (method url-fetch) (uri (cran-uri "lava" version)) (sha256 (base32 - "13rlqdg42ylnz4hc932bl50xismrcr4d9ykcd9zs19cw5mckjx0f")))) + "0nfab5fgnmxh8cplg8rd8cp34fny5j0k5wn4baj51r6ck7fq9g3s")))) (build-system r-build-system) (propagated-inputs `(("r-numderiv" ,r-numderiv) @@ -2640,20 +2640,41 @@ to access PostgreSQL database systems.") ;; under the PostgreSQL license. (license license:gpl2))) +(define-public r-linprog + (package + (name "r-linprog") + (version "0.9-2") + (source + (origin + (method url-fetch) + (uri (cran-uri "linprog" version)) + (sha256 + (base32 + "1ki14an0pmhs2mnmfjjvdzd76pshiyvi659zf7hqvqwj0viv4dw9")))) + (build-system r-build-system) + (propagated-inputs `(("r-lpsolve" ,r-lpsolve))) + (home-page "http://linprog.r-forge.r-project.org/") + (synopsis "Linear programming and optimization") + (description + "This package can be used to solve Linear Programming / Linear +Optimization problems by using the simplex algorithm.") + (license license:gpl2+))) + (define-public r-geometry (package (name "r-geometry") - (version "0.4.1") + (version "0.4.2") (source (origin (method url-fetch) (uri (cran-uri "geometry" version)) (sha256 (base32 - "0v3ivaw8vbjyxg08dd573qk3kqfyknj5hli9503dza6p6xz0dzmm")))) + "0vq334115qi039vy198ggv1dsp6n1s6jwcm9ivipf5r8lbm287zz")))) (build-system r-build-system) (propagated-inputs `(("r-magic" ,r-magic) + ("r-linprog" ,r-linprog) ("r-lpsolve" ,r-lpsolve) ("r-rcpp" ,r-rcpp) ("r-rcppprogress" ,r-rcppprogress))) @@ -2871,14 +2892,14 @@ provides a one-row summary of model-level statistics.") (define-public r-recipes (package (name "r-recipes") - (version "0.1.5") + (version "0.1.6") (source (origin (method url-fetch) (uri (cran-uri "recipes" version)) (sha256 (base32 - "056zv4vhayyy8q9izcdknbb9hff2gxivg21g5mkssia78vw8g3mg")))) + "1ndz9h0zvdj141r63l8047wbhaj0x8fwzzyq7b8mh78pvrrdpq2i")))) (build-system r-build-system) (propagated-inputs `(("r-dplyr" ,r-dplyr) @@ -2890,7 +2911,6 @@ provides a one-row summary of model-level statistics.") ("r-magrittr" ,r-magrittr) ("r-matrix" ,r-matrix) ("r-purrr" ,r-purrr) - ("r-rcpproll" ,r-rcpproll) ("r-rlang" ,r-rlang) ("r-tibble" ,r-tibble) ("r-tidyr" ,r-tidyr) @@ -3056,14 +3076,14 @@ Laplace approximation and adaptive Gauss-Hermite quadrature.") (define-public r-jomo (package (name "r-jomo") - (version "2.6-8") + (version "2.6-9") (source (origin (method url-fetch) (uri (cran-uri "jomo" version)) (sha256 (base32 - "097zfdcqc3a45ay8xxbraqh8xsfyivskkdmc2b4ca4n979lx8vyb")))) + "16ychdhhv8cii8zrdfdf5gzgnvmfaq573bmi00xqdf323q3lf3xr")))) (build-system r-build-system) (propagated-inputs `(("r-lme4" ,r-lme4) @@ -3129,14 +3149,14 @@ analysis of multiply imputed data sets.") (define-public r-mice (package (name "r-mice") - (version "3.5.0") + (version "3.6.0") (source (origin (method url-fetch) (uri (cran-uri "mice" version)) (sha256 (base32 - "0icydc312sbvzbp0r0mhs2r77a2ly2xvz5w5amirz3wdkvgyrk2g")))) + "0pgcxdmp77604h6f4x8hhs6j4xdjgf5b9zvnixyzdj8vcgdjpivv")))) (build-system r-build-system) (propagated-inputs `(("r-broom" ,r-broom) @@ -3212,14 +3232,14 @@ programming} (SQP) based solver).") (define-public r-hardyweinberg (package (name "r-hardyweinberg") - (version "1.6.2") + (version "1.6.3") (source (origin (method url-fetch) (uri (cran-uri "HardyWeinberg" version)) (sha256 (base32 - "15i7b444hikkfgqmx2ki827998xwra38k9v7a7kavwz6zmq5mmv9")))) + "1irz44q6nf95h37av868f47aakwv3jgwgw217xfsfw0afkm7s25f")))) (properties `((upstream-name . "HardyWeinberg"))) (build-system r-build-system) (propagated-inputs @@ -3289,14 +3309,14 @@ structure.") (define-public r-vioplot (package (name "r-vioplot") - (version "0.3.0") + (version "0.3.2") (source (origin (method url-fetch) (uri (cran-uri "vioplot" version)) (sha256 (base32 - "1ddmmqq7qrnvr5q518afnysrl7ccr8am9njknv3dpwaqzcdr9akn")))) + "13kfjp747bnzksai8j39y2hyl3ljc6n53c2cfhaw78q3d63x0lbv")))) (build-system r-build-system) (propagated-inputs `(("r-sm" ,r-sm) @@ -3631,14 +3651,14 @@ constants, and control debugging of packages via environment variables.") (define-public r-processx (package (name "r-processx") - (version "3.3.1") + (version "3.4.1") (source (origin (method url-fetch) (uri (cran-uri "processx" version)) (sha256 (base32 - "1bhbfacx2z2d97pz5bch45nvbvywhx2zp049czlfbdivkzgxn8v1")))) + "1g6ipcaxg9y94lyrnbp7kkbqfkcdh1fyrqjjclbjp3x7iysdvazi")))) (build-system r-build-system) (propagated-inputs `(("r-ps" ,r-ps) @@ -3839,18 +3859,19 @@ to variables on the left-hand side of the assignment.") (define-public r-vctrs (package (name "r-vctrs") - (version "0.1.0") + (version "0.2.0") (source (origin (method url-fetch) (uri (cran-uri "vctrs" version)) (sha256 (base32 - "13w1r8zpalirpfaz5sykpn0mj4jmhxi2qkdcfq081ixlfjyzwa6c")))) + "05h0y8qzwc899qj84gkhg4jwzscd065as00d4d8smv42h4i8zkjv")))) (build-system r-build-system) (propagated-inputs `(("r-backports" ,r-backports) ("r-digest" ,r-digest) + ("r-ellipsis" ,r-ellipsis) ("r-glue" ,r-glue) ("r-rlang" ,r-rlang) ("r-zeallot" ,r-zeallot))) @@ -3877,14 +3898,14 @@ to variables on the left-hand side of the assignment.") (define-public r-pillar (package (name "r-pillar") - (version "1.4.1") + (version "1.4.2") (source (origin (method url-fetch) (uri (cran-uri "pillar" version)) (sha256 (base32 - "0mcc09caxm69pghhz6b8vawj9ni63aijv5qba53pg4ph7rxclwgm")))) + "0988047mf0xdhdkqqmavzx4ifjhndjnxniyrrhrdq1nvnrvbpfms")))) (build-system r-build-system) (propagated-inputs `(("r-cli" ,r-cli) @@ -3923,14 +3944,14 @@ terminals.") (define-public r-tinytex (package (name "r-tinytex") - (version "0.14") + (version "0.15") (source (origin (method url-fetch) (uri (cran-uri "tinytex" version)) (sha256 (base32 - "0aab7ybc6kkxxk3lzdmbla8zcpp6nmlahchc33miv28cmnqw363w")))) + "145dmgq7h55mmqqlnnj153j484x2a9s1fbvjbjkdyqzpnz9qh2ax")))) (build-system r-build-system) (propagated-inputs `(("r-xfun" ,r-xfun))) @@ -4628,14 +4649,14 @@ files.") (define-public r-shinyace (package (name "r-shinyace") - (version "0.3.3") + (version "0.4.0") (source (origin (method url-fetch) (uri (cran-uri "shinyAce" version)) (sha256 (base32 - "02q6wqw349nlyf3mbf18cxif1xv9cal5qzccrdlnv73szqn9jk7j")))) + "0hvih5g0pswlnz5rf3blx5yqw11ssxvm8w4klxddp1ap20ncbgl1")))) (properties `((upstream-name . "shinyAce"))) (build-system r-build-system) (propagated-inputs @@ -4678,14 +4699,14 @@ systems.") (define-public r-radiant-data (package (name "r-radiant-data") - (version "0.9.9") + (version "1.0.0") (source (origin (method url-fetch) (uri (cran-uri "radiant.data" version)) (sha256 (base32 - "17mgm0sggh4f7ihqmj9m3996p3pqc7h2cwx6ll1ha3kg5mx0znyn")) + "0b35jn4mcj10hqra18l8pi6s4pvj6fxipslbn6hkr4zza1z27gzw")) (modules '((guix build utils))) (snippet '(begin @@ -5140,14 +5161,14 @@ misclassification probabilities of different models.") (define-public r-zip (package (name "r-zip") - (version "2.0.2") + (version "2.0.3") (source (origin (method url-fetch) (uri (cran-uri "zip" version)) (sha256 (base32 - "1xvgs7mhxi0sdp5ix4nisqm9lf8f75b7ip7b1hqpq9bzh0x6z8ix")))) + "0zii05jg9v9ljd0wd67g9x4bhlmpmsy5dzd093sbnc5n3vjbi32a")))) (build-system r-build-system) (home-page "https://github.com/gaborcsardi/zip") (synopsis "Cross-platform Zip compression") @@ -5298,14 +5319,14 @@ promises, but with a syntax that is idiomatic R.") (define-public r-dosnow (package (name "r-dosnow") - (version "1.0.16") + (version "1.0.18") (source (origin (method url-fetch) (uri (cran-uri "doSNOW" version)) (sha256 (base32 - "13ir4a8252h4yvp5ir9xnwack1kn58i4ny6sf2qdc12zspn3850n")))) + "0rj72z5505cprh6wykhhiz08l9bmd966srqh2qypwivf321bvrvh")))) (properties `((upstream-name . "doSNOW"))) (build-system r-build-system) (propagated-inputs @@ -5431,14 +5452,14 @@ obtain a better initial configuration in non-metric MDS.") (define-public r-reticulate (package (name "r-reticulate") - (version "1.12") + (version "1.13") (source (origin (method url-fetch) (uri (cran-uri "reticulate" version)) (sha256 (base32 - "0pqr1rcs8yg9nlh729mvlws93cqhpmv49j9bcgarh7vxzkwyv0kb")))) + "1qwxh7zq9igl7dxl5g5qjbvv0mlac3w80djnkm0w8rxnaval3gmd")))) (build-system r-build-system) (inputs `(("python" ,python))) (propagated-inputs @@ -5548,14 +5569,14 @@ and adds the annotation to the plot.") (define-public r-ggpubr (package (name "r-ggpubr") - (version "0.2.1") + (version "0.2.2") (source (origin (method url-fetch) (uri (cran-uri "ggpubr" version)) (sha256 (base32 - "0a4dv6a752hwvc7l31xs7bgqhfzfdy94xp6wgwaxf5dxm46na7k1")))) + "0r5knv3707pmpngmj60zn761y3bh8lj89dhh1b80ss083xnxr4qw")))) (build-system r-build-system) (propagated-inputs `(("r-cowplot" ,r-cowplot) @@ -5569,6 +5590,7 @@ and adds the annotation to the plot.") ("r-magrittr" ,r-magrittr) ("r-polynom" ,r-polynom) ("r-purrr" ,r-purrr) + ("r-rlang" ,r-rlang) ("r-scales" ,r-scales) ("r-tidyr" ,r-tidyr))) (home-page "http://www.sthda.com/english/rpkgs/ggpubr") @@ -5628,14 +5650,14 @@ clustering.") (define-public r-factominer (package (name "r-factominer") - (version "1.41") + (version "1.42") (source (origin (method url-fetch) (uri (cran-uri "FactoMineR" version)) (sha256 (base32 - "1h20hydav6l2b7bngqw1av4l5rrh0wk58nhailga1f4qw9lrv259")))) + "1yl16inb2m89l1czgaf0pgy9655dpr751hyx92yw6rqpd2ryznac")))) (properties `((upstream-name . "FactoMineR"))) (build-system r-build-system) (propagated-inputs @@ -5918,20 +5940,19 @@ to help insert or delete content at a specific location in the document.") (define-public r-abn (package (name "r-abn") - (version "1.3") + (version "2.1") (source (origin (method url-fetch) (uri (cran-uri "abn" version)) (sha256 (base32 - "1q9hzpxwg835711kxwygd0l2awal6f015f8s6fprwz7graz1wbbm")))) + "08jlvb6i5f7ry2dwm0jgrnn2w95vr0l67dpx13n9878lz9ld131b")))) (build-system r-build-system) (inputs `(("gsl" ,gsl))) (propagated-inputs - `(("r-cairo" ,r-cairo) - ("r-lme4" ,r-lme4) + `(("r-lme4" ,r-lme4) ("r-mass" ,r-mass) ("r-nnet" ,r-nnet) ("r-rcpp" ,r-rcpp) @@ -6070,14 +6091,14 @@ other add-on packages.") (define-public r-insight (package (name "r-insight") - (version "0.3.0") + (version "0.4.1") (source (origin (method url-fetch) (uri (cran-uri "insight" version)) (sha256 (base32 - "1r288hc01cpyrk3nias30fw783z2vw20qr1k67vr65anh7mwm7vb")))) + "1lw1r3mb97z5p9z25jfzlhs0sbnwp6v8kzysf0am01x4m7l3iz82")))) (build-system r-build-system) (home-page "https://easystats.github.io/insight/") (synopsis "Easy access to model information for various model objects") @@ -6527,14 +6548,14 @@ containing one or more SNPs that evolved under directional selection.") (define-public r-proc (package (name "r-proc") - (version "1.15.0") + (version "1.15.3") (source (origin (method url-fetch) (uri (cran-uri "pROC" version)) (sha256 (base32 - "1dxxkwdhxfnj2znq4c5ggrr9m5klh5pmfxg17rz59vr2hfb73m24")))) + "1jx8af9p6sxbypqvj1cci7q9sbyaw310inbjxibjcr3acj59h45h")))) (properties `((upstream-name . "pROC"))) (build-system r-build-system) (propagated-inputs @@ -6900,14 +6921,14 @@ used to teach mathematics, statistics, computation and modeling.") (define-public r-raster (package (name "r-raster") - (version "2.9-5") + (version "2.9-23") (source (origin (method url-fetch) (uri (cran-uri "raster" version)) (sha256 (base32 - "0ljrymsp4zzaxdj1l0mw0a6hi88m5h0h920ixfzrg0szbyxqd0yk")))) + "1brqigic8ygr223bp2hgk5qjz3q03r4sfglrv4an0ghy7fgfralh")))) (build-system r-build-system) (propagated-inputs `(("r-rcpp" ,r-rcpp) @@ -7468,14 +7489,14 @@ multiple-imputation datasets.") (define-public r-magick (package (name "r-magick") - (version "2.0") + (version "2.1") (source (origin (method url-fetch) (uri (cran-uri "magick" version)) (sha256 (base32 - "18y465325mhf48x2jn3jz9khwq1z2aj13wfbdkv8k3hln1sd572m")))) + "1pz71maz05gx4ds1wfw0alggc8nn2w75lj12dg1zr72s3kybhkzg")))) (build-system r-build-system) (inputs `(("imagemagick" ,imagemagick) @@ -7857,14 +7878,14 @@ Hothorn, Westfall, 2010, CRC Press).") (define-public r-emmeans (package (name "r-emmeans") - (version "1.3.5.1") + (version "1.4") (source (origin (method url-fetch) (uri (cran-uri "emmeans" version)) (sha256 (base32 - "0rgzjvmp3yqhwgfg96v17wi8gbafzbrmz134shj2jsf5bsmw6vbj")))) + "1ynf9hhbch83k63lwps69ijfch30fk5v0sc418ck264c5vih26dh")))) (build-system r-build-system) (propagated-inputs `(("r-estimability" ,r-estimability) @@ -8089,14 +8110,14 @@ differentiation.") (define-public r-bayestestr (package (name "r-bayestestr") - (version "0.2.2") + (version "0.2.5") (source (origin (method url-fetch) (uri (cran-uri "bayestestR" version)) (sha256 (base32 - "09r654lrhwwnshn5h2s2fbx3c8wigv3j4sva5hmfnkwjg8cclhd9")))) + "08d3bsb6li59n17bx1zrqnlnvniyb3vls9kl856km4chx3b2ff82")))) (properties `((upstream-name . "bayestestR"))) (build-system r-build-system) (propagated-inputs @@ -8114,14 +8135,14 @@ ROPE percentage and pd).") (define-public r-performance (package (name "r-performance") - (version "0.2.0") + (version "0.3.0") (source (origin (method url-fetch) (uri (cran-uri "performance" version)) (sha256 (base32 - "1pzd6z7i1jxr2xi1shg3d0bxlbpmjl7kpmwgjnfys6syv57znd1z")))) + "13j74ffhx950kacs86ixx84nviq9qlwzr7hjnhkmzw2hspjxq99w")))) (build-system r-build-system) (propagated-inputs `(("r-bayestestr" ,r-bayestestr) @@ -8141,14 +8162,14 @@ effects models and Bayesian models.") (define-public r-ggeffects (package (name "r-ggeffects") - (version "0.10.0") + (version "0.11.0") (source (origin (method url-fetch) (uri (cran-uri "ggeffects" version)) (sha256 (base32 - "0gmqzjk8k8q6j4q6asv9f3b1fv4qrw5w8xa48ha3y98shzm5np9k")))) + "1b0lxa8bljdh6h4lk7pql1lrhjlvh7p5c8qlgb8ac6ay8hb79vmi")))) (build-system r-build-system) (propagated-inputs `(("r-dplyr" ,r-dplyr) @@ -8175,14 +8196,14 @@ results using @code{ggplot2}.") (define-public r-sjplot (package (name "r-sjplot") - (version "2.6.3") + (version "2.7.0") (source (origin (method url-fetch) (uri (cran-uri "sjPlot" version)) (sha256 (base32 - "0h1mkmp5mrkbf7y3zh6m4cnm737cpg1m5si0lrmal7j2ixqicwjy")))) + "1m0gy991fmxvqry91kkzdkdapyalhrwql25d0hg2a2naxgfw4zpk")))) (properties `((upstream-name . "sjPlot"))) (build-system r-build-system) (propagated-inputs @@ -8192,6 +8213,7 @@ results using @code{ggplot2}.") ("r-forcats" ,r-forcats) ("r-ggeffects" ,r-ggeffects) ("r-ggplot2" ,r-ggplot2) + ("r-ggrepel" ,r-ggrepel) ("r-glmmtmb" ,r-glmmtmb) ("r-insight" ,r-insight) ("r-knitr" ,r-knitr) @@ -8311,14 +8333,14 @@ terminals that do not support Unicode.") (define-public r-usethis (package (name "r-usethis") - (version "1.5.0") + (version "1.5.1") (source (origin (method url-fetch) (uri (cran-uri "usethis" version)) (sha256 (base32 - "0pn6ka3726psaqlx573g6nxi90apf0rn5m4k2lz1jr66xdc19sag")))) + "07an5wbikilg7cb3q6x5aykw8dfqnjrc3wpfb7gjmy0d9fh20fcy")))) (build-system r-build-system) (propagated-inputs `(("r-clipr" ,r-clipr) @@ -8674,14 +8696,14 @@ analysing multivariate abundance data in community ecology.") (define-public r-afex (package (name "r-afex") - (version "0.23-0") + (version "0.24-1") (source (origin (method url-fetch) (uri (cran-uri "afex" version)) (sha256 (base32 - "0yv4s7461swn0116y4wq9v139p1br5rr6hhnq1cmkbvybmwj2vp7")))) + "14w7kcwr5hxmjcjmdm5ia9ka3bw1nl18pxlm1vpw62nmvicn3455")))) (build-system r-build-system) (propagated-inputs `(("r-car" ,r-car) @@ -8908,14 +8930,14 @@ Bioconductor packages.") (define-public r-rgl (package (name "r-rgl") - (version "0.100.24") + (version "0.100.26") (source (origin (method url-fetch) (uri (cran-uri "rgl" version)) (sha256 (base32 - "0nm3iyvhhmh0zlywkfmrq3vyh8z1l296xxfmcky0ifd2qnysfcqj")))) + "0h77akviwjd86j2qyx326xynbmwhypd6ydprzlwqnidd4ckrr271")))) (build-system r-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -9374,14 +9396,14 @@ maps.") (define-public r-tidytree (package (name "r-tidytree") - (version "0.2.4") + (version "0.2.5") (source (origin (method url-fetch) (uri (cran-uri "tidytree" version)) (sha256 (base32 - "04bznlfs617plv258nmsyq2pywnijcnzy2pbn5b2fgjk2xqkp29w")))) + "0vfjv33352dmk9cr2qn0knzg761068rdk6jg32csd9vpmcma8awp")))) (build-system r-build-system) (propagated-inputs `(("r-ape" ,r-ape) @@ -9442,14 +9464,14 @@ giving it a description in the specific format.") (define-public r-sparsesvd (package (name "r-sparsesvd") - (version "0.1-4") + (version "0.2") (source (origin (method url-fetch) (uri (cran-uri "sparsesvd" version)) (sha256 (base32 - "1yf373552wvdnd65r7hfcqa3v29dqn7jd4cn431mqd2acnqjrsam")))) + "1xm969fjq3fv1p2sqza2apz8picibj4s2agpwf1sx9nwn3b587qs")))) (build-system r-build-system) (propagated-inputs `(("r-matrix" ,r-matrix))) (home-page "http://tedlab.mit.edu/~dr/SVDLIBC/") @@ -9664,14 +9686,14 @@ diagnostics for controlling type-1 errors are also provided.") (define-public r-flare (package (name "r-flare") - (version "1.6.0") + (version "1.6.0.2") (source (origin (method url-fetch) (uri (cran-uri "flare" version)) (sha256 (base32 - "0ygif9a7a99qwv0b488wymmmncp6f5ww9yz13s4qs6p8yf37x1r1")))) + "1ybrsx1djqldw0l5l1iz4pfh6xxb8ckkg1ric7wnsr51wm9ljlh5")))) (build-system r-build-system) (propagated-inputs `(("r-igraph" ,r-igraph) @@ -9764,14 +9786,14 @@ Touzet and Varre (2007).") (define-public r-rnifti (package (name "r-rnifti") - (version "0.11.0") + (version "0.11.1") (source (origin (method url-fetch) (uri (cran-uri "RNifti" version)) (sha256 (base32 - "0zs8ffa6gpi9cygxk7xjin6k3vpvfgb540a506zlk50bf6kc5nlf")))) + "0jcgdg5k2swmi57aqj347kfi1fc4nvag7pxdfz61kc0vqqamm0wg")))) (properties `((upstream-name . "RNifti"))) (build-system r-build-system) (propagated-inputs `(("r-rcpp" ,r-rcpp))) @@ -9787,14 +9809,14 @@ used by other packages.") (define-public r-shades (package (name "r-shades") - (version "1.3.1") + (version "1.4.0") (source (origin (method url-fetch) (uri (cran-uri "shades" version)) (sha256 (base32 - "0v0xp9l1zyq4iysmkrbdwk4r1rksjj8p5c1726yrcgyg55mj59nv")))) + "1zg95sjhrfvbdlfc387g9p0vnb8nb6agdk1mb3wq3kwkm2da0bqj")))) (build-system r-build-system) (home-page "https://github.com/jonclayden/shades") (synopsis "Simple color manipulation") @@ -10143,23 +10165,51 @@ library.") and manipulating sets of ontological terms.") (license license:gpl2+))) +(define-public r-gargle + (package + (name "r-gargle") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "gargle" version)) + (sha256 + (base32 + "0vqgp4w03sdyj0q96gxkybqflzzbaw84zifsbi7pxk5y08fimj2v")))) + (build-system r-build-system) + (propagated-inputs + `(("r-fs" ,r-fs) + ("r-glue" ,r-glue) + ("r-httr" ,r-httr) + ("r-jsonlite" ,r-jsonlite) + ("r-rlang" ,r-rlang) + ("r-withr" ,r-withr))) + (home-page "https://gargle.r-lib.org") + (synopsis "Utilities for working with Google APIs") + (description + "This package provides utilities for working with Google APIs. This +includes functions and classes for handling common credential types and for +preparing, executing, and processing HTTP requests.") + (license license:expat))) + (define-public r-bigrquery (package (name "r-bigrquery") - (version "1.1.1") + (version "1.2.0") (source (origin (method url-fetch) (uri (cran-uri "bigrquery" version)) (sha256 (base32 - "1if39xkr231xmjq10fx2g7bgg4jgfd3wzx1p9g3pq4hbf2s6x0is")))) + "1ggh2gngr5x0g6y7d55y6kvn94anf7qi1bkc28cjmw61hxjq38fb")))) (build-system r-build-system) (propagated-inputs `(("r-assertthat" ,r-assertthat) ("r-bit64" ,r-bit64) ("r-curl" ,r-curl) ("r-dbi" ,r-dbi) + ("r-gargle" ,r-gargle) ("r-glue" ,r-glue) ("r-httr" ,r-httr) ("r-jsonlite" ,r-jsonlite) @@ -10167,6 +10217,7 @@ and manipulating sets of ontological terms.") ("r-progress" ,r-progress) ("r-rapidjsonr" ,r-rapidjsonr) ("r-rcpp" ,r-rcpp) + ("r-rlang" ,r-rlang) ("r-tibble" ,r-tibble))) (home-page "https://github.com/rstats-db/bigrquery") (synopsis "R interface to Google's BigQuery API") @@ -10724,14 +10775,14 @@ covariance functions for large data sets.") (define-public r-spatialextremes (package (name "r-spatialextremes") - (version "2.0-7") + (version "2.0-7.2") (source (origin (method url-fetch) (uri (cran-uri "SpatialExtremes" version)) (sha256 (base32 - "1y0h1pcfqp9ynxsr3yrfbihlwm25ypyb88jmm5k2g7xvm8h9g050")))) + "0aqq9ryxi4xsdqjhc1lhb7ai8szs7m2vys6nn0ygps1w3pm4xwj8")))) (properties `((upstream-name . "SpatialExtremes"))) (build-system r-build-system) @@ -10994,14 +11045,14 @@ model with finite state space using the Aalen-Johansen estimator.") (define-public r-epi (package (name "r-epi") - (version "2.37") + (version "2.38") (source (origin (method url-fetch) (uri (cran-uri "Epi" version)) (sha256 (base32 - "1lanr9x0c6w22406p56j7cwk6wck8njq6pscb4gzc613d68zj1lk")))) + "0ald9fjynrlyah8nzwfs49a08j4myd3c5bm56zn61gg5pyyhi8hd")))) (properties `((upstream-name . "Epi"))) (build-system r-build-system) (propagated-inputs @@ -11177,14 +11228,14 @@ them in distributed compute environments.") (define-public r-future (package (name "r-future") - (version "1.13.0") + (version "1.14.0") (source (origin (method url-fetch) (uri (cran-uri "future" version)) (sha256 (base32 - "0h8ng2a6vg4axd5f75xcb3ip9d95zi22fa048dq2bzlnncwlznjz")))) + "1jyv2wlmpfqbk3hw269h4xg36na3wh1kd1lxmwdb40bsv4850lqa")))) (build-system r-build-system) (propagated-inputs `(("r-digest" ,r-digest) @@ -11237,14 +11288,14 @@ machine or distributed on a compute cluster.") (define-public r-rsvd (package (name "r-rsvd") - (version "1.0.1") + (version "1.0.2") (source (origin (method url-fetch) (uri (cran-uri "rsvd" version)) (sha256 (base32 - "1faskhf5j2bj9f971qljsmh182g3rnyilj1wwijz530a6skxidzz")))) + "0fia77y5fxnhwkcxlgp98ygb8fdfraky75x80hkf7kvvpwc5rzn8")))) (build-system r-build-system) (propagated-inputs `(("r-matrix" ,r-matrix))) @@ -11445,14 +11496,14 @@ identifying outliers.") (define-public r-bayesm (package (name "r-bayesm") - (version "3.1-1") + (version "3.1-3") (source (origin (method url-fetch) (uri (cran-uri "bayesm" version)) (sha256 (base32 - "0y30cza92s6kgvmxjpr6f5g0qbcck7hslqp89ncprarhxiym2m28")))) + "041ach2f2vrqzd5kz17v7wmkjz6z8cjjihpk4qvczm4cr9z85r2i")))) (build-system r-build-system) (propagated-inputs `(("r-rcpp" ,r-rcpp) @@ -11849,14 +11900,14 @@ probabilities from a standard bivariate normal CDF.") (define-public r-lavaan (package (name "r-lavaan") - (version "0.6-3") + (version "0.6-4") (source (origin (method url-fetch) (uri (cran-uri "lavaan" version)) (sha256 (base32 - "0hw856kv11zqn6nd4216rh19i6xbnc1rh044r7jvvxkhzgbqkyxz")))) + "1zf0sxpms35rhq2syb7r3sshhc8kjvc3pv97dk9x0gf4xl7pck4g")))) (build-system r-build-system) (propagated-inputs `(("r-mass" ,r-mass) @@ -12073,14 +12124,14 @@ running IRkernel session.") (define-public r-irkernel (package (name "r-irkernel") - (version "1.0.1") + (version "1.0.2") (source (origin (method url-fetch) (uri (cran-uri "IRkernel" version)) (sha256 (base32 - "1gij59b068qp7sbn9d0b9ghmnhfks15a9anj7bp26acv0yvdsg3s")))) + "040qig675zaxsf81ranmvk293amrswi5098k69wyq0vgqyin6vwp")))) (properties `((upstream-name . "IRkernel"))) (build-system r-build-system) (arguments @@ -12192,14 +12243,14 @@ R, enabling interactive analysis and visualization of genome-scale data.") (define-public r-rematch2 (package (name "r-rematch2") - (version "2.0.1") + (version "2.1.0") (source (origin (method url-fetch) (uri (cran-uri "rematch2" version)) (sha256 (base32 - "16k0i5p7fa3qfxv59ijyn638wpz8n4jrkrnilqmh5g9l8f8bn4h6")))) + "00cznm6rk33b53w7zybkz7549bnydc66znpi5mb0xd24pmqp0rvq")))) (build-system r-build-system) (propagated-inputs `(("r-tibble" ,r-tibble))) @@ -12541,14 +12592,14 @@ classes.") (define-public r-classint (package (name "r-classint") - (version "0.3-3") + (version "0.4-1") (source (origin (method url-fetch) (uri (cran-uri "classInt" version)) (sha256 (base32 - "0c2z6shlxa928xa20yl956r06lx20mji3mwipdvmj3f4z5g6hgm9")))) + "00q1bpgblrldckn1rk166q1b0hgap2sjjyfmfcyh6ydk6y73ziir")))) (properties `((upstream-name . "classInt"))) (build-system r-build-system) (propagated-inputs @@ -12616,14 +12667,14 @@ sampling.") (define-public r-deldir (package (name "r-deldir") - (version "0.1-21") + (version "0.1-23") (source (origin (method url-fetch) (uri (cran-uri "deldir" version)) (sha256 (base32 - "03392pl6j8rm3n32xrfkyfx866k1vm5sj87pva70yyiwh70vrnmr")))) + "0790dwxb2mz1ffz8gd5vwdr0if2q76dzy3vab5rsykf9kz72n4g0")))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) (home-page "https://cran.r-project.org/web/packages/deldir") @@ -12640,14 +12691,14 @@ tessellation.") (define-public r-sf (package (name "r-sf") - (version "0.7-4") + (version "0.7-7") (source (origin (method url-fetch) (uri (cran-uri "sf" version)) (sha256 (base32 - "0vnyr7xyfcl928kbrb1k8l4fkd0cjrfq486g6gxpvy5j0cc2h4i1")))) + "192hw52x1qlif8zyai1kff1wiyr3yl5f7jj1rk3k0nr8das0qy6i")))) (build-system r-build-system) (inputs `(("gdal" ,gdal) @@ -13022,18 +13073,19 @@ inbred lines, F2 intercrosses, and association mapping populations.") (define-public r-ldheatmap (package (name "r-ldheatmap") - (version "0.99-5") + (version "0.99-7") (source (origin (method url-fetch) (uri (cran-uri "LDheatmap" version)) (sha256 (base32 - "0il3g3n3bzv74lz7dlhyiwc2x2417v6yhx2g47pahxdzqa09kf4s")))) + "1r0j8bihi5z1x0sgaf7dwzpsw9i0nc1vylvipvc0cia2ka1lr9dc")))) (properties `((upstream-name . "LDheatmap"))) (build-system r-build-system) (propagated-inputs `(("r-genetics" ,r-genetics) + ("r-rcpp" ,r-rcpp) ("r-snpstats" ,r-snpstats))) (home-page "http://stat.sfu.ca/statgen/research/ldheatmap.html") (synopsis "Graphical display of pairwise linkage disequilibria between SNPs") @@ -13112,13 +13164,13 @@ SELECT or UPDATE queries to an end-point.") (define-public r-bookdown (package (name "r-bookdown") - (version "0.11") + (version "0.12") (source (origin (method url-fetch) (uri (cran-uri "bookdown" version)) (sha256 (base32 - "0w4fkv5fqiaqgkx44p0s161imf29zir9742126xkz1pl1j25jn1r")))) + "1c2v0rpa1rrpbx8yb66sfvrf4gf57f6a8x7ydjqqbkbwhxdlrsrq")))) (build-system r-build-system) (propagated-inputs `(("r-htmltools" ,r-htmltools) @@ -13585,14 +13637,14 @@ package.") (define-public r-ggplotify (package (name "r-ggplotify") - (version "0.0.3") + (version "0.0.4") (source (origin (method url-fetch) (uri (cran-uri "ggplotify" version)) (sha256 (base32 - "14hqlpvnaq5psz1ljcpw9isa06827rg3fm5c1dx159rsjfi56yby")))) + "0nv3wdmxnc5ww9m3xlgnb0jp30j45dg33nqc6gg3y36svg8anjcg")))) (build-system r-build-system) (propagated-inputs `(("r-ggplot2" ,r-ggplot2) @@ -14562,14 +14614,14 @@ engine (Salmon et al., 2011) as provided by the package @code{sitmo}.") (define-public r-dalex (package (name "r-dalex") - (version "0.4") + (version "0.4.4") (source (origin (method url-fetch) (uri (cran-uri "DALEX" version)) (sha256 (base32 - "1mr8lqq8s4aacmh7xdhmkmv8vsjqjczlqlaw27xnsljgj2kgq87a")))) + "04i17ni8g595jj8dxdfwr9vsxmdn2kkam90ab68vlwws3ywqjl6r")))) (properties `((upstream-name . "DALEX"))) (build-system r-build-system) (propagated-inputs `(("r-ggplot2" ,r-ggplot2))) @@ -14588,14 +14640,14 @@ and model output.") (define-public r-enrichr (package (name "r-enrichr") - (version "1.0") + (version "2.0") (source (origin (method url-fetch) (uri (cran-uri "enrichR" version)) (sha256 (base32 - "0lfdr45sdyqhvgz8q4qdbk12mpv86d6id665kq6aaslgr8jggfmn")))) + "056m6hksfss29fj7zvlk7pbh8g3gq84kjh3240isrsnhp9m1h9iz")))) (properties `((upstream-name . "enrichR"))) (build-system r-build-system) (propagated-inputs @@ -14698,18 +14750,17 @@ into R and converted to @code{BibEntry} objects.") (define-public r-citr (package (name "r-citr") - (version "0.3.0") + (version "0.3.1") (source (origin (method url-fetch) (uri (cran-uri "citr" version)) (sha256 (base32 - "0pik6s6xk5768s3kkppw2192dj455py53gsn6k2b7xgg96ircy0g")))) + "0p2sg0fl7cppxxmr20qyqzs2469kglmgpsvykynw4qx501as57rc")))) (build-system r-build-system) (propagated-inputs `(("r-assertthat" ,r-assertthat) - ("r-bibtex" ,r-bibtex) ("r-curl" ,r-curl) ("r-httr" ,r-httr) ("r-miniui" ,r-miniui) @@ -14729,14 +14780,14 @@ the current document.") (define-public r-xgboost (package (name "r-xgboost") - (version "0.82.1") + (version "0.90.0.2") (source (origin (method url-fetch) (uri (cran-uri "xgboost" version)) (sha256 (base32 - "0plhx63wcm4syslzmjfv6bdgaqn96fnav048hrj0vxk4dzgfp8sq")))) + "1gy9rzg43mjpfis893vf15drmbigfn0481zrzss9ajnmnk0q8194")))) (build-system r-build-system) (propagated-inputs `(("r-data-table" ,r-data-table) diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm index 1e5379b020..d114e24ee7 100644 --- a/gnu/packages/docbook.scm +++ b/gnu/packages/docbook.scm @@ -195,7 +195,7 @@ by no means limited to these applications.) This package provides XML DTDs.") (build-system python-build-system) ;; TODO: Add xfig/transfig for fig2dev utility (inputs - `(("texlive" ,(texlive-union (list texlive-latex-amsfonts + `(("texlive" ,(texlive-union (list texlive-amsfonts texlive-latex-anysize texlive-latex-appendix texlive-latex-changebar @@ -219,7 +219,6 @@ by no means limited to these applications.) This package provides XML DTDs.") texlive-latex-url texlive-latex-wasysym - texlive-fonts-amsfonts texlive-fonts-ec texlive-fonts-rsfs texlive-fonts-stmaryrd diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm index 0f47eaf236..94cfa2bdb7 100644 --- a/gnu/packages/docker.scm +++ b/gnu/packages/docker.scm @@ -63,12 +63,13 @@ (arguments '(#:tests? #f)) (inputs `(("python-requests" ,python-requests-2.20) - ("python-docker-pycreds" ,python-docker-pycreds) ("python-ipaddress" ,python-ipaddress) - ("python-paramiko" ,python-paramiko) ("python-six" ,python-six) ("python-urllib3" ,python-urllib3-1.24) ("python-websocket-client" ,python-websocket-client))) + (propagated-inputs + `(("python-docker-pycreds" ,python-docker-pycreds) + ("python-paramiko" ,python-paramiko))) ; adds SSH support (home-page "https://github.com/docker/docker-py/") (synopsis "Python client for Docker") (description "Docker-Py is a Python client for the Docker container @@ -113,17 +114,11 @@ client.") ;; TODO: Tests require running Docker daemon. (arguments '(#:tests? #f)) (inputs - `(("python2-backport-ssl-match-hostname" - ,python2-backport-ssl-match-hostname) - ("python-cached-property" + `(("python-cached-property" ,python-cached-property) - ("python-colorama" ,python-colorama) ("python-docker-py" ,python-docker-py) - ("python-docker-pycreds" ,python-docker-pycreds) ("python-dockerpty" ,python-dockerpty) ("python-docopt" ,python-docopt) - ("python-ipaddress" ,python-ipaddress) - ("python-paramiko" ,python-paramiko) ("python-jsonschema" ,python-jsonschema-2.6) ("python-pyyaml" ,python-pyyaml) ("python-requests" ,python-requests-2.20) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 600d810bea..213dac78f6 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -3389,6 +3389,76 @@ for the current function or variable in the minibuffer.") completion candidate when using the Company text completion framework.") (license license:gpl3+))) +(define-public emacs-math-symbol-lists + (let ((commit "dc7531cff0c845d5470a50c24d5d7309b2ced7eb") + (revision "1")) + (package + (name "emacs-math-symbol-lists") + (version (git-version "1.2.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vspinu/math-symbol-lists.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "094m21i9rns6m59cmhxcivxxafbg52w8f8na4y3v47aq67zmhhqm")))) + (build-system emacs-build-system) + (home-page "https://github.com/vspinu/math-symbol-lists") + (synopsis "Lists of Unicode math symbols and @code{LaTeX} commands") + (description "This is a storage package used by completion engines like +@code{company-math}.") + (license license:gpl3+)))) + +(define-public emacs-company-math + (let ((commit "600e49449644f6835f9dc3501bc58461999e8ab9") + (revision "1")) + (package + (name "emacs-company-math") + (version (git-version "1.3" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vspinu/company-math.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ps2lpkzn8mjbpcbvvy1qz3xbgrh6951x8y9bsd1fm32drdph9lh")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-math-symbol-lists" ,emacs-math-symbol-lists) + ("emacs-company" ,emacs-company))) + (home-page "https://github.com/vspinu/company-math") + (synopsis "Completion backends for Unicode math symbols and @code{LaTeX} tags") + (description "This package provides a backend for use with +@code{company-mode} allowing for completion of common math symbols.") + (license license:gpl3+)))) + +(define-public emacs-nswbuff + (let ((commit "362da7f3687e2eb5bb11667347de85f4a9d002bc") + (revision "1")) + (package + (name "emacs-nswbuff") + (version (git-version "1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/joostkremers/nswbuff.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0l2xfz8z5qd4hz3kv6zn7h6qq3narkilri8a071y1n8j31jps4ma")))) + (build-system emacs-build-system) + (home-page "https://github.com/joostkremers/nswbuff") + (synopsis "Quickly switch between buffers") + (description "This package allows for navigating between buffers within +a customizable list.") + (license license:gpl3+)))) + (define-public emacs-multiple-cursors (package (name "emacs-multiple-cursors") @@ -3410,6 +3480,32 @@ completion candidate when using the Company text completion framework.") simultaneous cursors.") (license license:gpl3+))) +(define-public emacs-mc-extras + (let ((commit "053abc52181b8718559d7361a587bbb795faf164") + (revision "1")) + (package + (name "emacs-mc-extras") + (version (git-version "1.2.4" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/knu/mc-extras.el.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "16y48qrd20m20vypvys5jp4v4gc1qrqlkm75s1pk1r68i9zrw481")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-multiple-cursors" ,emacs-multiple-cursors))) + (home-page "https://github.com/knu/mc-extras.el") + (synopsis "Extra functions for manipulating multiple cursors") + (description + "This package provides additional functions for +@code{multiple-cursors}, including functions for marking s-expressions, +comparing characters, removing cursors, and more.") + (license license:bsd-2)))) + (define-public emacs-typo (package (name "emacs-typo") @@ -4011,6 +4107,38 @@ minutes is started automatically. Every 4 breaks a long break is started with 20 minutes. All values are customizable.") (license license:gpl3+))) +(define-public emacs-org-sidebar + (let ((commit "74ca98b9920f3de3f13d49866581435e1ec63ec5") + (revision "1")) + (package + (name "emacs-org-sidebar") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alphapapa/org-sidebar.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "03p1ndyw2qp2skib5hszc4xyh84w7p2mhkd4a9dy6qv8q47xpsqn")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-org-super-agenda" ,emacs-org-super-agenda) + ("emacs-org" ,emacs-org) + ("emacs-org-ql" ,emacs-org-ql) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/alphapapa/org-sidebar") + (synopsis "Helpful sidebar for Org buffers") + (description "This package provides a sidebar for Org buffers. At the +top is a chronological list of scheduled and deadlined tasks in the current +buffer (similar to the Org agenda ,but without all its features), and below +that is a list of all other non-done to-do items. If the buffer is narrowed, +the sidebar only shows items in the narrowed portion; this allows seeing an +overview of tasks in a subtree.") + (license license:gpl3+)))) + (define-public emacs-org-trello (package (name "emacs-org-trello") @@ -4604,45 +4732,50 @@ automatically.") (license license:gpl3+))) (define-public emacs-ivy - (package - (name "emacs-ivy") - (version "0.12.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/abo-abo/swiper.git") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0xgngn3jhmyn6mlkk9kmgfgh0w5i50b27syr4cgfgarg6p77j05w")))) - (build-system emacs-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'install 'install-doc - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (info (string-append out "/share/info"))) - (with-directory-excursion "doc" - (invoke "makeinfo" "ivy.texi") - (install-file "ivy.info" info) - #t))))))) - (propagated-inputs - `(("emacs-hydra" ,emacs-hydra))) - (native-inputs - `(("texinfo" ,texinfo))) - (home-page "http://oremacs.com/swiper/") - (synopsis "Incremental vertical completion for Emacs") - (description - "This package provides @code{ivy-read} as an alternative to + ;; The latest release version introduced a new feature, swiper-isearch, that + ;; generally works well but had some noticeable bugs; this later commit + ;; includes fixes for several of them. + (let ((commit "d3e4514fd72f217c704ae18afdf711bb9036a04d") + (revision "1")) + (package + (name "emacs-ivy") + (version (git-version "0.12.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abo-abo/swiper.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "142axxc6vsl14cfyvzj9csiykxdn7vhw88fy955hzx7av4qfqg4x")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (info (string-append out "/share/info"))) + (with-directory-excursion "doc" + (invoke "makeinfo" "ivy.texi") + (install-file "ivy.info" info) + #t))))))) + (propagated-inputs + `(("emacs-hydra" ,emacs-hydra))) + (native-inputs + `(("texinfo" ,texinfo))) + (home-page "http://oremacs.com/swiper/") + (synopsis "Incremental vertical completion for Emacs") + (description + "This package provides @code{ivy-read} as an alternative to @code{completing-read} and similar functions. No attempt is made to determine the best candidate. Instead, the user can navigate candidates with @code{ivy-next-line} and @code{ivy-previous-line}. The matching is done by splitting the input text by spaces and re-building it into a regular expression.") - (license license:gpl3+))) + (license license:gpl3+)))) (define-public emacs-ivy-pass (let ((commit "5b523de1151f2109fdd6a8114d0af12eef83d3c5") @@ -5228,7 +5361,7 @@ strings, and code folding.") (define-public emacs-nodejs-repl (package (name "emacs-nodejs-repl") - (version "0.2.1") + (version "0.2.2") (source (origin (method git-fetch) (uri (git-reference @@ -5237,7 +5370,7 @@ strings, and code folding.") (file-name (git-file-name name version)) (sha256 (base32 - "05ccv87rnw7fss3lib8m9sywjrj6n92fnd7mmhmjh27g2klqc83z")))) + "1kkj888k9x5n0i7xkia177gzsa84my3g8n0n7v65281cc4f1yhk5")))) (build-system emacs-build-system) (home-page "https://github.com/abicky/nodejs-repl.el") (synopsis "Node.js REPL inside Emacs") @@ -5580,28 +5713,35 @@ environments (virtualenv) inside Emacs.") (license license:gpl3+))) (define-public emacs-highlight-indentation - (package - (name "emacs-highlight-indentation") - (version "0.7.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/antonj/Highlight-Indentation-for-Emacs.git") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "00l54k75qk24a0znzl4ij3s3nrnr2wy9ha3za8apphzlm98m907k")))) - (build-system emacs-build-system) - (home-page "https://github.com/antonj/Highlight-Indentation-for-Emacs/") - (synopsis "Highlighting indentation for Emacs") - (description "Provides two minor modes to highlight indentation guides in Emacs: + ;; Last release version is from 2015. + (let ((commit "d03803f2c06749c430443a3d24e039cbafc9c58f") + (revision "1")) + (package + (name "emacs-highlight-indentation") + (version (git-version "0.7.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/antonj/Highlight-Indentation-for-Emacs.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1jq0gf4kcx9hvrw40rnw5c2qynjpjw1vsjbi2i4lqjbsnfnxn4wz")))) + (build-system emacs-build-system) + (home-page "https://github.com/antonj/Highlight-Indentation-for-Emacs/") + (synopsis "Highlighting indentation for Emacs") + (description "This package provides two minor modes to highlight +indentation guides in Emacs: + @enumerate @item @code{highlight-indentation-mode}, which displays guidelines -indentation (space indentation only). -@item @code{highlight-indentation-current-column-mode}, which displays guidelines for the current-point indentation (space indentation only). + indentation (space indentation only). +@item @code{highlight-indentation-current-column-mode}, which displays + guidelines for the current-point indentation (space indentation only). @end enumerate") - (license license:gpl2+))) + (license license:gpl2+)))) (define-public emacs-elpy (package @@ -5931,7 +6071,7 @@ ack, ag, helm and pt.") (define-public emacs-helm (package (name "emacs-helm") - (version "3.2") + (version "3.3") (source (origin (method git-fetch) @@ -5940,7 +6080,7 @@ ack, ag, helm and pt.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "12yyprpgh2by2pd41i4z9gz55fxg0f90x03bfrsf791xwbhf6931")))) + (base32 "0fqhw7r9fcsja5d3pgbipw7pkw9nj534faav6hi45413hc3gyv92")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-async" ,emacs-async) @@ -6119,21 +6259,21 @@ xref, etc...) are still available, but with better integration.") (license license:gpl3+)))) (define-public emacs-lua-mode - (let ((commit "652e299cb967fccca827dda381d61a9c144d97de") - (revision "1")) + (let ((commit "95c64bb5634035630e8c59d10d4a1d1003265743") + (revision "2")) (package (name "emacs-lua-mode") - (version (string-append "20151025." revision "-" (string-take commit 9))) + (version (git-version "20151025" revision commit)) (home-page "https://github.com/immerrr/lua-mode/") (source (origin (method git-fetch) (uri (git-reference (url home-page) (commit commit))) - (file-name (string-append name "-" version ".checkout")) + (file-name (git-file-name name version)) (sha256 (base32 - "053025k930wh0lak6rc1973ynfrmm8zsyzfqhhd39x7abkl41hc9")))) + "1mra4db25ds64526dsj8m5yv0kfq3lgggjh1x6xmqypdaryddbcp")))) (build-system emacs-build-system) (synopsis "Major mode for lua") (description @@ -6399,12 +6539,11 @@ aligning text objects based on separators.") (license license:gpl3+)))) (define-public emacs-evil-expat - (let ((commit "4c344ea19b789002d759a202ffbf594730d2c59a") - (version "0.0.1") + (let ((commit "f4fcd0aa3edc359adb5c986b5dd9188d220d84e2") (revision "1")) (package (name "emacs-evil-expat") - (version (git-version version revision commit)) + (version (git-version "0.0.1" revision commit)) (source (origin (method git-fetch) @@ -6414,7 +6553,7 @@ aligning text objects based on separators.") (file-name (git-file-name name version)) (sha256 (base32 - "16v7fnldxag6l1lsnrnhdjkga9qi78lbdfbb82k6pmv04991mbkr")))) + "0872ix682hkdz0k8pn6sb54rqkx00rz5fxpd5j2snx406yagpaxz")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-evil" ,emacs-evil))) (home-page "https://github.com/edkolev/evil-expat") @@ -6587,14 +6726,14 @@ passive voice.") (name "emacs-org") ;; emacs-org-contrib inherits from this package. Please update its sha256 ;; checksum as well. - (version "9.2.3") + (version "9.2.5") (source (origin (method url-fetch) - (uri (string-append "http://elpa.gnu.org/packages/org-" + (uri (string-append "https://elpa.gnu.org/packages/org-" version ".tar")) (sha256 (base32 - "0hqy4lns9q5p0l1ylgmlckqprn9sbasszhznanmv0rsh0gzhsbyw")))) + "1pid1sykgz83i4ry5n8f270finag6sm7ckqxn5lkikyya43wlzx1")))) (build-system emacs-build-system) (home-page "https://orgmode.org/") (synopsis "Outline-based notes management and organizer") @@ -6608,14 +6747,14 @@ programming and reproducible research.") (package (inherit emacs-org) (name "emacs-org-contrib") - (version "20190715") + (version "20190805") (source (origin (method url-fetch) (uri (string-append "https://orgmode.org/elpa/org-plus-contrib-" version ".tar")) (sha256 (base32 - "0yxxkcaxhp5bmjsfdd9pz79rj9s7nb4gj5ci51sh4pf8mimk9542")))) + "1mw91hwbqyjq5pyz9hzdhvjlc2bphqpi23yqd3sdk1crpc87s40c")))) (arguments `(#:modules ((guix build emacs-build-system) (guix build utils) @@ -7159,6 +7298,56 @@ find files owned by packages... And much more, including performing all the above over the network.") (license license:gpl3+)))) +(define-public emacs-helm-org-rifle + (package + (name "emacs-helm-org-rifle") + (version "1.6.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alphapapa/helm-org-rifle") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1r38xhwvgbv6kn5x159phz3xgss7f1rc7icq27rnr4d8aj91wm6k")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-f" ,emacs-f) + ("emacs-helm" ,emacs-helm) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/alphapapa/helm-org-rifle") + (synopsis "Rifle through Org files") + (description "This package searches both headings and contents of entries +in Org buffers and displays matching entries.") + (license license:gpl3+))) + +(define-public emacs-dired-toggle-sudo + (package + (name "emacs-dired-toggle-sudo") + (version "1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/renard/dired-toggle-sudo") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0ajj8d6k5in2hclcrqckinfh80ylddplva0ryfbkzsjkfq167cv2")) + (patches + (search-patches + "emacs-dired-toggle-sudo-emacs-26.patch")))) + (build-system emacs-build-system) + (home-page "https://github.com/renard/dired-toggle-sudo") + (synopsis "Browse directory with @code{sudo} privileges") + (description "This package allows for the use of @code{dired} with +@code{sudo} privileges.") + (license license:wtfpl2))) + (define-public emacs-memoize (package (name "emacs-memoize") @@ -8528,12 +8717,11 @@ the actual transformations.") (license license:gpl2+)))) (define-public emacs-dired-hacks - (let ((commit "2c1234592aee91dcd9401bcd67213e6a4a464fd9") - (revision "1")) + (let ((commit "886befe113fae397407c804f72c45613d1d43535") + (revision "2")) (package (name "emacs-dired-hacks") - (version (string-append "0.0.1-" revision "." - (string-take commit 7))) + (version (git-version "0.0.1" revision commit)) (source (origin (method git-fetch) (uri (git-reference @@ -8542,7 +8730,7 @@ the actual transformations.") (file-name (git-file-name name version)) (sha256 (base32 - "1g7mky41cahpryzj6frdgzdymknpqq7pidzfjj9304887kijmhj3")))) + "1cvibg90ggyrivpjmcfprpi2fx7dpa68f8kzg08s88gw5ib75djl")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-dash" ,emacs-dash) @@ -8553,7 +8741,9 @@ the actual transformations.") (synopsis "Collection of useful dired additions") (description - "Collection of Emacs dired mode additions: + "This package provides the following collection of Emacs dired mode +additions: + @itemize @item dired-avfs @item dired-columns @@ -8623,6 +8813,32 @@ available key bindings that follow C-x (or as many as space allows given your settings).") (license license:gpl3+))) +(define-public emacs-hercules + (let ((commit "3345904a0dab4c7a4d4478f0766f1d9f5d1bb501") + (revision "1")) + (package + (name "emacs-hercules") + (version (git-version "0.2" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/jjzmajic/hercules.el.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0cpq8h6l47nqhzch6snax5yrhxl8p4wn35q13ci35lj3iq8kmlk8")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-which-key" ,emacs-which-key))) + (home-page "https://gitlab.com/jjzmajic/hercules.el") + (synopsis "Call a chain of related commands without repeated prefix keys") + (description + "This package provides sticky-key-like functionality to obviate the +need for repeated prefix-key sequences, and can reuse existing keymaps. The +list of commands is displayed in a handy popup.") + (license license:gpl3+)))) + (define-public emacs-ws-butler (package (name "emacs-ws-butler") @@ -10433,29 +10649,32 @@ as well as functions for navigating between these headings.") (license license:gpl3+))) (define-public emacs-org-super-agenda - (package - (name "emacs-org-super-agenda") - (version "1.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/alphapapa/org-super-agenda") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0vzf91lsxnhwf52kvm8ycpf0wb9c8l91689vyhwgv4wz8q6cvjwp")))) - (build-system emacs-build-system) - (propagated-inputs - `(("emacs-org" ,emacs-org) - ("emacs-dash" ,emacs-dash) - ("emacs-ht" ,emacs-ht) - ("emacs-s" ,emacs-s))) - (home-page "https://github.com/alphapapa/org-super-agenda") - (synopsis "Supercharged Org agenda") - (description "This package allows items in the Org agenda to be grouped + ;; emacs-org-sidebar depends on a newer commit than the latest release version. + (let ((commit "375bde4ca72494ac88a2a9738754f047fe45cc4e") + (revision "1")) + (package + (name "emacs-org-super-agenda") + (version (git-version "1.1.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alphapapa/org-super-agenda") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0hrwf02fqjm0d9gj146ax67ib76093qpqh7066dcxj2gy20625yj")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-org" ,emacs-org) + ("emacs-dash" ,emacs-dash) + ("emacs-ht" ,emacs-ht) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/alphapapa/org-super-agenda") + (synopsis "Supercharged Org agenda") + (description "This package allows items in the Org agenda to be grouped into sections while preserving the structure imposed by any timestamps.") - (license license:gpl3+))) + (license license:gpl3+)))) (define-public emacs-org-make-toc (package @@ -12676,6 +12895,29 @@ When @code{gac-automatically-push-p} is non-nil, it also tries to push to the current upstream.") (license license:gpl3+))) +(define-public emacs-scroll-on-drag + (let ((commit "888abd04c34753b1fc4b2fe541bc004ebec5c996") + (revision "1")) + (package + (name "emacs-scroll-on-drag") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/ideasman42/emacs-scroll-on-drag.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1si4hdqa3jw1inbyh3wb3i5i9grbms1nwky3vyk9zg7iznwm8a9p")))) + (build-system emacs-build-system) + (home-page "https://gitlab.com/ideasman42/emacs-scroll-on-drag") + (synopsis "Interactive scrolling") + (description "This package permits scrolling at increasing speeds based +on drag distance.") + (license license:gpl3+)))) + (define-public emacs-company-restclient (package (name "emacs-company-restclient") @@ -13692,12 +13934,11 @@ server with @code{M-x pinentry-start}.") (license license:gpl3+)))) (define-public emacs-so-long - (let ((commit "3ebe97decdb5cbbfba82ca686e0ad2c7d2722b4a") - (version "1.0") - (revision "1")) + (let ((commit "cfae473b1bf65f78ddb015159e667ec0103d881c") + (revision "2")) (package (name "emacs-so-long") - (version (git-version version revision commit)) + (version (git-version "1.0" revision commit)) (source (origin (method git-fetch) @@ -13707,7 +13948,7 @@ server with @code{M-x pinentry-start}.") (file-name (git-file-name name version)) (sha256 (base32 - "0fi71g5rsdsi978jz8406k8hvzgnssm9wxar8yqfhs97178r9s5m")))) + "0g943n5cl9lz5s7hszg6yvp10xd1xvd8mfgxyg0yckmp8fqkswin")))) (build-system emacs-build-system) (home-page "https://www.emacswiki.org/emacs/SoLong") (synopsis "Improve performance in files with long lines") @@ -14142,7 +14383,7 @@ buffers – other modes on the TODO list). (define-public emacs-magit-todos (package (name "emacs-magit-todos") - (version "1.2") + (version "1.3") (source (origin (method git-fetch) @@ -14152,7 +14393,7 @@ buffers – other modes on the TODO list). (file-name (git-file-name name version)) (sha256 (base32 - "17a18gszbypz82bj36xbfyykc4s9rz83vwmpxvlf65svhd51c0nh")))) + "0gfm6wn2a4v5i9lfsvvin0kwpr9n96ddm3z4yf50jd3kg2igzry1")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-async" ,emacs-async) @@ -16189,7 +16430,7 @@ previewed by scrolling up and down within a @code{dired} buffer.") (define-public emacs-counsel-etags (package (name "emacs-counsel-etags") - (version "1.8.4") + (version "1.8.7") (source (origin (method git-fetch) @@ -16199,7 +16440,7 @@ previewed by scrolling up and down within a @code{dired} buffer.") (file-name (git-file-name name version)) (sha256 (base32 - "14my9jvxl26a5yn381h5pi5481y9d9gyk7wnxxd0s4sjc964c5h5")))) + "0vjcjspfrz1csnmfi6r7p7f070a496adxkqnsxwx1gx8cpylwp1g")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-ivy" ,emacs-ivy))) @@ -16632,6 +16873,30 @@ provided. Those alternative commands are and bound by default to their corresponding Evil keys.") (license license:expat)))) +(define-public emacs-evil-traces + (let ((commit "b41b7432b8110378c199a3d25af464083777f453") + (revision "1")) + (package + (name "emacs-evil-traces") + (version (git-version "0.0.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mamapanda/evil-traces.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0a15f2saynz9fws1h5s7py3cshsk4xs1kwgwj1m5rsin36g0j6hc")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-evil" ,emacs-evil))) + (home-page "https://github.com/mamapanda/evil-traces") + (synopsis "Visual hints for @code{evil-ex}") + (description "This package adds visual hints to certain @code{ex} +commands in @code{evil-mode}.") + (license license:gpl3+)))) + (define-public emacs-xterm-color (let ((commit "a452ab38a7cfae97078062ff8885b5d74fd1e5a6") (version "1.8") diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm index 8d0162a2d1..257591c8d3 100644 --- a/gnu/packages/emulators.scm +++ b/gnu/packages/emulators.scm @@ -119,8 +119,8 @@ ;; Building from recent Git because the official 5.0 release no longer builds. (define-public dolphin-emu - (let ((commit "2c57e709d0f9e4010a4415de4192de887e37f187") - (revision "5")) + (let ((commit "24718c1a389e4f51db974575cd15c372485b92e2") + (revision "6")) (package (name "dolphin-emu") (version (git-version "5.0" revision commit)) @@ -146,7 +146,7 @@ #t)) (sha256 (base32 - "0aszfdfvs7yg4bmrd3qxwsiz7hx3mrj29f4aw86bz7h9j7hkh57f")))) + "1d92rhnw307j3m6swk6bycb8fyc7vw2hfgakd5hpsc4qw65vxfq8")))) (build-system cmake-build-system) (arguments '(#:tests? #f @@ -250,12 +250,6 @@ turbo speed, networked multiplayer, and graphical enhancements.") (base32 "02i648i50dwicv1vaql15rccv4g8h5blf5g6inv67lrfxpbkvlf0")))) (build-system gnu-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (add-after - 'unpack 'autogen.sh - (lambda _ - (invoke "sh" "autogen.sh")))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake))) diff --git a/gnu/packages/enchant.scm b/gnu/packages/enchant.scm index ce148b47a5..cfec161784 100644 --- a/gnu/packages/enchant.scm +++ b/gnu/packages/enchant.scm @@ -33,7 +33,7 @@ (define-public enchant (package (name "enchant") - (version "2.2.4") + (version "2.2.5") (source (origin (method url-fetch) (uri (string-append "https://github.com/AbiWord/enchant/releases" @@ -41,7 +41,7 @@ version ".tar.gz")) (sha256 (base32 - "1p6a3qmrh8bjzds6x7rg9da0ir44gg804jzkf634h39wsa4vdmpm")))) + "0iqwzs11i9fvqdxv5kn0svcn2mzymn657qf3j66lg8dx1nh4xkpz")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--disable-static" diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm index 8005c46129..edb3b49841 100644 --- a/gnu/packages/geo.scm +++ b/gnu/packages/geo.scm @@ -131,7 +131,12 @@ topology functions.") (gi-typelib-path (getenv "GI_TYPELIB_PATH")) (goa-path (string-append (assoc-ref inputs "gnome-online-accounts") + "/lib:" + (assoc-ref inputs "gnome-online-accounts:lib") "/lib")) + (geocode-glib-path (string-append + (assoc-ref inputs "geocode-glib") + "/lib")) (webkitgtk-path (string-append (assoc-ref inputs "webkitgtk") "/lib"))) @@ -141,7 +146,8 @@ topology functions.") ;; There seems to be no way to embed the path of ;; libgoa-1.0.so.0, libwebkit2gtk-4.0.so.37 and ;; libjavascriptcoregtk-4.0.so.18. - `("LD_LIBRARY_PATH" ":" prefix (,goa-path ,webkitgtk-path))) + `("LD_LIBRARY_PATH" ":" prefix + (,goa-path ,webkitgtk-path ,geocode-glib-path))) #t)))))) (native-inputs `(("gobject-introspection" ,gobject-introspection) @@ -163,6 +169,7 @@ topology functions.") ("gjs" ,gjs) ("glib" ,glib) ("gnome-online-accounts" ,gnome-online-accounts) + ("gnome-online-accounts:lib" ,gnome-online-accounts "lib") ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) ("rest" ,rest) ("webkitgtk" ,webkitgtk))) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 3f7bbac214..601248b7f5 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -38,6 +38,7 @@ ;;; Copyright © 2019 Florian Pelz <pelzflorian@pelzflorian.de> ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org> +;;; Copyright © 2019 Jonathan Frederickson <jonathan@terracrypt.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -8152,15 +8153,18 @@ advanced image management tool") (inputs `(("cairo" ,cairo) ("gobject-introspection" ,gobject-introspection) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) ("python2-pycairo" ,python2-pycairo) ("python2-pygobject" ,python2-pygobject) ("python2-psutil" ,python2-psutil) ("vte" ,vte))) - (propagated-inputs - ;; Terminator refuses to start when these are not present. - `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas))) (arguments - `(#:python ,python-2 ;Python 3 not supported + `(#:python ,python-2 ; Python 3 isn't supported + #:imported-modules ((guix build glib-or-gtk-build-system) + ,@%python-build-system-modules) + #:modules ((guix build python-build-system) + ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:) + (guix build utils)) #:phases (modify-phases %standard-phases (add-after @@ -8171,10 +8175,60 @@ advanced image management tool") (wrap-program prog `("PYTHONPATH" = (,(getenv "PYTHONPATH"))) `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))) - #t)))))) + #t))) + (add-after 'wrap-program 'glib-or-gtk-wrap + (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))))) (home-page "https://gnometerminator.blogspot.com/") (synopsis "Store and run multiple GNOME terminals in one window") (description "Terminator allows you to run multiple GNOME terminals in a grid and +tabs, and it supports drag and drop re-ordering of terminals.") (license license:gpl2))) + +(define-public libhandy + (package + (name "libhandy") + (version "0.0.10") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://source.puri.sm/Librem5/libhandy") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1702hbdqhfpgw0c4vj2ag08vgl83byiryrbngbq11b9azmj3jhzs")))) + (build-system meson-build-system) + (arguments + `(#:configure-flags + '("-Dglade_catalog=disabled" + "-Dgtk_doc=true") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-broken-test + (lambda _ + ;; This test fails for unknown reasons + (substitute* "tests/meson.build" + (("'test-dialog',") "")) + #t)) + (add-before 'check 'pre-check + (lambda _ + ;; Tests require a running X server. + (system "Xvfb :1 &") + (setenv "DISPLAY" ":1") + #t))))) + (inputs + `(("gtk+" ,gtk+))) + (native-inputs + `(("glib:bin" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) ; for g-ir-scanner + ("vala" ,vala) + ("gtk-doc" ,gtk-doc) + ("pkg-config" ,pkg-config) + ("gettext" ,gettext-minimal) + ("xorg-server" ,xorg-server))) + (home-page "https://source.puri.sm/Librem5/libhandy") + (synopsis "Library full of GTK+ widgets for mobile phones") + (description "The aim of the handy library is to help with developing user +intefaces for mobile devices using GTK+.") + (license license:lgpl2.1+))) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index c6b3eab4e8..5f3cf0ac2c 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -595,9 +595,6 @@ collection of tools for doing simple manipulations of TIFF images.") (arguments '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'autogen - (lambda _ - (invoke "sh" "autobuild"))) (add-after 'unpack 'patch-reg-wrapper (lambda _ (substitute* "prog/reg_wrapper.sh" @@ -1108,14 +1105,14 @@ channels.") (define-public exiv2 (package (name "exiv2") - (version "0.27.1") + (version "0.27.2") (source (origin (method url-fetch) (uri (string-append "https://www.exiv2.org/builds/exiv2-" version "-Source.tar.gz")) (sha256 - (base32 "109hbfk63dh14fz20ivq20gcclb9jj9jmh48w4lcn6zxh1ljh9gi")))) + (base32 "0gqminvj14xm3rgbnydbywf22608js80rp7nmxxk4497j5mzali6")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; no test suite (propagated-inputs @@ -1240,12 +1237,6 @@ ISO/IEC 15444-1).") `(("autoconf" ,autoconf) ("automake" ,automake) ("libtool" ,libtool))) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'autogen - (lambda _ - (invoke "sh" "autogen.sh")))))) (synopsis "Scaling, colorspace conversion, and dithering library") (description "Zimg implements the commonly required image processing basics of scaling, colorspace conversion, and depth conversion. A simple API enables diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm index 7982a12dfd..4898f0a768 100644 --- a/gnu/packages/libevent.scm +++ b/gnu/packages/libevent.scm @@ -41,7 +41,7 @@ (define-public libevent (package (name "libevent") - (version "2.1.10") + (version "2.1.11") (source (origin (method url-fetch) (uri (string-append @@ -49,7 +49,7 @@ version "-stable/libevent-" version "-stable.tar.gz")) (sha256 (base32 - "1c25928gdv495clxk2v1d4gkr5py7ack4gx2n7d13frnld0syr78")))) + "0g988zqm45sj1hlhhz4il5z4dpi5dl74hzjwzl4md37a09iaqnx6")))) (build-system gnu-build-system) (arguments ;; This skips some of the tests which fail on armhf and aarch64. diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 395a06c956..a5b9f6bfed 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -350,42 +350,42 @@ 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.5") +(define-public linux-libre-5.2-version "5.2.7") (define-public linux-libre-5.2-pristine-source (let ((version linux-libre-5.2-version) - (hash (base32 "15ndscsp3yqgas901g6inpmyvinz4cwr5y3md516j2pr8cl40if6"))) + (hash (base32 "1aazhf0v8bv4py0wnqkdmiy80fchnix431l0hda2fkwsdf9njgnv"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.2))) -(define-public linux-libre-4.19-version "4.19.63") +(define-public linux-libre-4.19-version "4.19.65") (define-public linux-libre-4.19-pristine-source (let ((version linux-libre-4.19-version) - (hash (base32 "0pfjwpa6szvdr941y13806hlsgsbslfsvkrd5534p1iip5h8g63m"))) + (hash (base32 "1pyyhr2airxzk4c6n7140yl723dc7yw7igy5i5i2ih0nd4c3k6g5"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.19))) -(define-public linux-libre-4.14-version "4.14.135") +(define-public linux-libre-4.14-version "4.14.137") (define-public linux-libre-4.14-pristine-source (let ((version linux-libre-4.14-version) - (hash (base32 "0x2v0pj4hjb71qkxbqn4ymg6zmyabp91kylyzd270nbig7i234a2"))) + (hash (base32 "0a72pab0zxy28i02glnzj6avzcf0a4gxxnadbdd343rh549yky4k"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.14))) -(define-public linux-libre-4.9-version "4.9.186") +(define-public linux-libre-4.9-version "4.9.188") (define-public linux-libre-4.9-pristine-source (let ((version linux-libre-4.9-version) - (hash (base32 "0sjbp7m6d625rw06wv34a0805d1lgldii4pxiqfpja871m1q8914"))) + (hash (base32 "08p2cfc9982b804vmkapfasgipf6969g625ih7z3062xn99rhlr7"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.9))) -(define-public linux-libre-4.4-version "4.4.186") +(define-public linux-libre-4.4-version "4.4.188") (define-public linux-libre-4.4-pristine-source (let ((version linux-libre-4.4-version) - (hash (base32 "113rjf8842glzi23y1g1yrwncihv2saah6wz0r726r06bk9p64hb"))) + (hash (base32 "1llxamm62kgqd7dig98n8m16qas8dd8rrkmwpfcdgyf8rag216ff"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.4))) @@ -1402,15 +1402,18 @@ Zerofree requires the file system to be unmounted or mounted read-only.") (define-public strace (package (name "strace") - (version "5.1") + (version "5.2") (home-page "https://strace.io") (source (origin (method url-fetch) (uri (string-append home-page "/files/" version "/strace-" version ".tar.xz")) + ;; XXX Remove the 'regenerate-tests' phase below when + ;; "strace-ipc-tests.patch" is no longer applied. + (patches (search-patches "strace-ipc-tests.patch")) (sha256 (base32 - "12wsga1v3rab24gr0mpfip7j7gwr90m8f9h6fviqxa3xgnwl38zm")))) + "1li49i75wrdw91hchyyd8spnzfcmxcfyfb5g9zbaza89aq4bq4ym")))) (build-system gnu-build-system) (arguments '(#:phases @@ -1419,7 +1422,14 @@ Zerofree requires the file system to be unmounted or mounted read-only.") (lambda _ (substitute* "strace.c" (("/bin/sh") (which "sh"))) - #t))) + #t)) + (add-before 'configure 'regenerate-tests + ;; XXX Remove this phase when "strace-ipc-tests.patch" is no longer + ;; applied in the 'source' field above. This phase is needed to + ;; regenerate many other files from tests/gen_tests.in, which is + ;; modified by the aforementioned patch. + (lambda _ + (invoke "tests/gen_tests.sh")))) ;; Don't fail if the architecture doesn't support different personalities. #:configure-flags '("--enable-mpers=check") ;; See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32459>. diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 2dc7dc81ef..e48c91a2cf 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -193,7 +193,7 @@ classification.") (uri (svn-reference (url "http://svn.code.sf.net/p/ghmm/code/trunk") (revision svn-revision))) - (file-name (string-append name "-" version)) + (file-name (string-append name "-" version "-checkout")) (sha256 (base32 "0qbq1rqp94l530f043qzp8aw5lj7dng9wq0miffd7spd1ff638wq")))) @@ -251,10 +251,7 @@ classification.") (string-append indent "@unittest.skip(\"Disabled by Guix\")\n" line))) - #t)) - (add-after 'disable-broken-tests 'autogen - (lambda _ - (invoke "bash" "autogen.sh")))))) + #t))))) (inputs `(("python" ,python-2) ; only Python 2 is supported ("libxml2" ,libxml2))) @@ -821,8 +818,14 @@ computing environments.") (setenv "HOME" "/tmp") (invoke "pytest" "sklearn" "-m" "not network"))) - ;; FIXME: This fails with permission denied - (delete 'reset-gzip-timestamps)))) + (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 `(("openblas" ,openblas))) (native-inputs diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 40fe7d9450..b81b15d80c 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -1051,7 +1051,7 @@ useful features.") (arguments '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'autogen + (replace 'bootstrap (lambda _ (setenv "NOCONFIGURE" "true") (invoke "sh" "autogen.sh")))) @@ -1365,12 +1365,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.") `(#:tests? #f ;No tests exist. #:configure-flags (list (string-append "--with-dovecot=" (assoc-ref %build-inputs "dovecot") - "/lib/dovecot")) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'autogen - (lambda _ - (invoke "sh" "autogen.sh")))))) + "/lib/dovecot")))) (home-page "https://0xacab.org/riseuplabs/trees") (synopsis "NaCL-based Dovecot email storage encryption plugin") (description @@ -1421,12 +1416,7 @@ using libsodium sealed boxes. `(#:tests? #f ;No tests exist. #:configure-flags (list (string-append "--with-dovecot=" (assoc-ref %build-inputs "dovecot") - "/lib/dovecot")) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'autogen - (lambda _ - (invoke "sh" "autogen.sh")))))) + "/lib/dovecot")))) (home-page "https://github.com/LuckyFellow/dovecot-libsodium-plugin") (synopsis "Libsodium password hashing schemes plugin for Dovecot") (description diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index cf9919e451..ab3b4458b2 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -4333,14 +4333,14 @@ are noisy or are discontinuous at the solution.") (define-public r-desolve (package (name "r-desolve") - (version "1.21") + (version "1.24") (source (origin (method url-fetch) (uri (cran-uri "deSolve" version)) (sha256 (base32 - "0qqc4mknw1jblzcmph1dg3k1p6w42yal0k1xjh8pqk7yb3a75hs5")))) + "0hkvspq0fp8j64l9zayab2l2nazazhwfgfym0jllh0xv5a12r99s")))) (properties `((upstream-name . "deSolve"))) (build-system r-build-system) (native-inputs diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm index 99ca4f9007..967e299803 100644 --- a/gnu/packages/mp3.scm +++ b/gnu/packages/mp3.scm @@ -65,7 +65,8 @@ "14460zhacxhswnzb36qfpd1f2wbk10qvksvm6wyq5hpvdgnw7ymv")) (patches (search-patches "libmad-armv7-thumb-pt1.patch" "libmad-armv7-thumb-pt2.patch" - "libmad-frame-length.patch" + "libmad-md_size.patch" + "libmad-length-check.patch" "libmad-mips-newgcc.patch")))) (build-system gnu-build-system) (arguments diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 9b2cce0e8f..ac9ed91722 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -1027,7 +1027,7 @@ the boot loader configuration.") (define-public flatpak (package (name "flatpak") - (version "1.2.4") + (version "1.4.2") (source (origin (method url-fetch) @@ -1035,7 +1035,7 @@ the boot loader configuration.") version "/flatpak-" version ".tar.xz")) (sha256 (base32 - "1qf3ys84fzv11z6f6li59rxjdjbyrv7cyi9539k73r9i9pckjr8v")))) + "08nmpp26mgv0vp3mlwk97rnp0j7i108h4hr9nllja19sjxnrlygj")))) ;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to ;; find the TLS backend in glib-networking. @@ -1063,6 +1063,7 @@ the boot loader configuration.") (inputs `(("appstream-glib" ,appstream-glib) ("bubblewrap" ,bubblewrap) ("dconf" ,dconf) + ("fuse" ,fuse) ("gdk-pixbuf" ,gdk-pixbuf) ("gpgme" ,gpgme) ("json-glib" ,json-glib) diff --git a/gnu/packages/patches/emacs-dired-toggle-sudo-emacs-26.patch b/gnu/packages/patches/emacs-dired-toggle-sudo-emacs-26.patch new file mode 100644 index 0000000000..d979b113d0 --- /dev/null +++ b/gnu/packages/patches/emacs-dired-toggle-sudo-emacs-26.patch @@ -0,0 +1,49 @@ +From 3c0f4b27a079b90dc632f5061a81ce28cef24801 Mon Sep 17 00:00:00 2001 +From: eryx67 <eryx67@gmail.com> +Date: Thu, 29 Nov 2018 10:30:20 +0500 +Subject: [PATCH] fix for latest emacs + +--- + dired-toggle-sudo.el | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/dired-toggle-sudo.el b/dired-toggle-sudo.el +index 386921b..fe5898e 100644 +--- a/dired-toggle-sudo.el ++++ b/dired-toggle-sudo.el +@@ -37,17 +37,20 @@ + unless SUDO-USER is provided." + (let* (;; Handle the case of local files. `tramp-dissect-file-name' does + ;; not raise an error anymore. +- (path (if (tramp-tramp-file-p path) path (concat "/:" path))) ++ ;;(path (if (tramp-tramp-file-p path) path (concat "/-::" path))) + (file-vec (or (ignore-errors (tramp-dissect-file-name + path)) + (tramp-dissect-file-name +- (concat "/:" path) 1))) ++ (concat "/-::" path) 1))) + (method (tramp-file-name-method file-vec)) + (user (tramp-file-name-user file-vec)) + (host (tramp-file-name-host file-vec)) ++ (domain (tramp-file-name-domain file-vec)) ++ (port (tramp-file-name-port file-vec)) + (localname (expand-file-name + (tramp-file-name-localname file-vec)))) +- (when (string= system-name host) ++ (when (or (string= (system-name) host) ++ (string= "-" host)) + (setq host nil)) + (cond + ;; remote directory -> sudo +@@ -67,7 +70,7 @@ unless SUDO-USER is provided." + (setq method "sudo" user sudo-user))) + (replace-regexp-in-string + "^/:/" "/" +- (tramp-make-tramp-file-name method user host localname)))) ++ (tramp-make-tramp-file-name method domain user host port localname)))) + + (defun dired-toggle-sudo-find (fname) + "Create a new buffer for file name FNAME." +-- +2.22.0 + diff --git a/gnu/packages/patches/libmad-frame-length.patch b/gnu/packages/patches/libmad-frame-length.patch deleted file mode 100644 index 3434eba577..0000000000 --- a/gnu/packages/patches/libmad-frame-length.patch +++ /dev/null @@ -1,199 +0,0 @@ -Copied from Debian. - -; You can calculate where the next frame will start depending on things -; like the bitrate. See mad_header_decode(). It seems that when decoding -; the frame you can go past that boundary. This attempts to catch those cases, -; but might not catch all of them. -; For more info see http://bugs.debian.org/508133 -Index: libmad-0.15.1b/layer12.c -=================================================================== ---- libmad-0.15.1b.orig/layer12.c 2008-12-23 21:38:07.000000000 +0100 -+++ libmad-0.15.1b/layer12.c 2008-12-23 21:38:12.000000000 +0100 -@@ -134,6 +134,12 @@ - for (sb = 0; sb < bound; ++sb) { - for (ch = 0; ch < nch; ++ch) { - nb = mad_bit_read(&stream->ptr, 4); -+ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame) -+ { -+ stream->error = MAD_ERROR_LOSTSYNC; -+ stream->sync = 0; -+ return -1; -+ } - - if (nb == 15) { - stream->error = MAD_ERROR_BADBITALLOC; -@@ -146,6 +152,12 @@ - - for (sb = bound; sb < 32; ++sb) { - nb = mad_bit_read(&stream->ptr, 4); -+ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame) -+ { -+ stream->error = MAD_ERROR_LOSTSYNC; -+ stream->sync = 0; -+ return -1; -+ } - - if (nb == 15) { - stream->error = MAD_ERROR_BADBITALLOC; -@@ -162,6 +174,12 @@ - for (ch = 0; ch < nch; ++ch) { - if (allocation[ch][sb]) { - scalefactor[ch][sb] = mad_bit_read(&stream->ptr, 6); -+ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame) -+ { -+ stream->error = MAD_ERROR_LOSTSYNC; -+ stream->sync = 0; -+ return -1; -+ } - - # if defined(OPT_STRICT) - /* -@@ -187,6 +205,12 @@ - frame->sbsample[ch][s][sb] = nb ? - mad_f_mul(I_sample(&stream->ptr, nb), - sf_table[scalefactor[ch][sb]]) : 0; -+ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame) -+ { -+ stream->error = MAD_ERROR_LOSTSYNC; -+ stream->sync = 0; -+ return -1; -+ } - } - } - -@@ -195,6 +219,12 @@ - mad_fixed_t sample; - - sample = I_sample(&stream->ptr, nb); -+ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame) -+ { -+ stream->error = MAD_ERROR_LOSTSYNC; -+ stream->sync = 0; -+ return -1; -+ } - - for (ch = 0; ch < nch; ++ch) { - frame->sbsample[ch][s][sb] = -@@ -403,7 +433,15 @@ - nbal = bitalloc_table[offsets[sb]].nbal; - - for (ch = 0; ch < nch; ++ch) -+ { - allocation[ch][sb] = mad_bit_read(&stream->ptr, nbal); -+ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame) -+ { -+ stream->error = MAD_ERROR_LOSTSYNC; -+ stream->sync = 0; -+ return -1; -+ } -+ } - } - - for (sb = bound; sb < sblimit; ++sb) { -@@ -411,6 +449,13 @@ - - allocation[0][sb] = - allocation[1][sb] = mad_bit_read(&stream->ptr, nbal); -+ -+ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame) -+ { -+ stream->error = MAD_ERROR_LOSTSYNC; -+ stream->sync = 0; -+ return -1; -+ } - } - - /* decode scalefactor selection info */ -@@ -419,6 +464,12 @@ - for (ch = 0; ch < nch; ++ch) { - if (allocation[ch][sb]) - scfsi[ch][sb] = mad_bit_read(&stream->ptr, 2); -+ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame) -+ { -+ stream->error = MAD_ERROR_LOSTSYNC; -+ stream->sync = 0; -+ return -1; -+ } - } - } - -@@ -442,6 +493,12 @@ - for (ch = 0; ch < nch; ++ch) { - if (allocation[ch][sb]) { - scalefactor[ch][sb][0] = mad_bit_read(&stream->ptr, 6); -+ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame) -+ { -+ stream->error = MAD_ERROR_LOSTSYNC; -+ stream->sync = 0; -+ return -1; -+ } - - switch (scfsi[ch][sb]) { - case 2: -@@ -452,11 +509,23 @@ - - case 0: - scalefactor[ch][sb][1] = mad_bit_read(&stream->ptr, 6); -+ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame) -+ { -+ stream->error = MAD_ERROR_LOSTSYNC; -+ stream->sync = 0; -+ return -1; -+ } - /* fall through */ - - case 1: - case 3: - scalefactor[ch][sb][2] = mad_bit_read(&stream->ptr, 6); -+ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame) -+ { -+ stream->error = MAD_ERROR_LOSTSYNC; -+ stream->sync = 0; -+ return -1; -+ } - } - - if (scfsi[ch][sb] & 1) -@@ -488,6 +557,12 @@ - index = offset_table[bitalloc_table[offsets[sb]].offset][index - 1]; - - II_samples(&stream->ptr, &qc_table[index], samples); -+ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame) -+ { -+ stream->error = MAD_ERROR_LOSTSYNC; -+ stream->sync = 0; -+ return -1; -+ } - - for (s = 0; s < 3; ++s) { - frame->sbsample[ch][3 * gr + s][sb] = -@@ -506,6 +581,12 @@ - index = offset_table[bitalloc_table[offsets[sb]].offset][index - 1]; - - II_samples(&stream->ptr, &qc_table[index], samples); -+ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame) -+ { -+ stream->error = MAD_ERROR_LOSTSYNC; -+ stream->sync = 0; -+ return -1; -+ } - - for (ch = 0; ch < nch; ++ch) { - for (s = 0; s < 3; ++s) { -Index: libmad-0.15.1b/layer3.c -=================================================================== ---- libmad-0.15.1b.orig/layer3.c 2008-12-23 21:38:07.000000000 +0100 -+++ libmad-0.15.1b/layer3.c 2008-12-23 21:38:12.000000000 +0100 -@@ -2608,6 +2608,12 @@ - next_md_begin = 0; - - md_len = si.main_data_begin + frame_space - next_md_begin; -+ if (md_len + MAD_BUFFER_GUARD > MAD_BUFFER_MDLEN) -+ { -+ stream->error = MAD_ERROR_LOSTSYNC; -+ stream->sync = 0; -+ return -1; -+ } - - frame_used = 0; - diff --git a/gnu/packages/patches/libmad-length-check.patch b/gnu/packages/patches/libmad-length-check.patch new file mode 100644 index 0000000000..18ca68fd7e --- /dev/null +++ b/gnu/packages/patches/libmad-length-check.patch @@ -0,0 +1,819 @@ +Copied from Debian. + +From: Kurt Roeckx <kurt@roeckx.be> +Date: Sun, 28 Jan 2018 19:26:36 +0100 +Subject: Check the size before reading with mad_bit_read + +There are various cases where it attemps to read past the end of the buffer +using mad_bit_read(). Most functions didn't even know the size of the buffer +they were reading from. + +Index: libmad-0.15.1b/bit.c +=================================================================== +--- libmad-0.15.1b.orig/bit.c ++++ libmad-0.15.1b/bit.c +@@ -138,6 +138,9 @@ unsigned long mad_bit_read(struct mad_bi + { + register unsigned long value; + ++ if (len == 0) ++ return 0; ++ + if (bitptr->left == CHAR_BIT) + bitptr->cache = *bitptr->byte; + +Index: libmad-0.15.1b/frame.c +=================================================================== +--- libmad-0.15.1b.orig/frame.c ++++ libmad-0.15.1b/frame.c +@@ -120,11 +120,18 @@ static + int decode_header(struct mad_header *header, struct mad_stream *stream) + { + unsigned int index; ++ struct mad_bitptr bufend_ptr; + + header->flags = 0; + header->private_bits = 0; + ++ mad_bit_init(&bufend_ptr, stream->bufend); ++ + /* header() */ ++ if (mad_bit_length(&stream->ptr, &bufend_ptr) < 32) { ++ stream->error = MAD_ERROR_BUFLEN; ++ return -1; ++ } + + /* syncword */ + mad_bit_skip(&stream->ptr, 11); +@@ -225,8 +232,13 @@ int decode_header(struct mad_header *hea + /* error_check() */ + + /* crc_check */ +- if (header->flags & MAD_FLAG_PROTECTION) ++ if (header->flags & MAD_FLAG_PROTECTION) { ++ if (mad_bit_length(&stream->ptr, &bufend_ptr) < 16) { ++ stream->error = MAD_ERROR_BUFLEN; ++ return -1; ++ } + header->crc_target = mad_bit_read(&stream->ptr, 16); ++ } + + return 0; + } +@@ -338,7 +350,7 @@ int mad_header_decode(struct mad_header + stream->error = MAD_ERROR_BUFLEN; + goto fail; + } +- else if (!(ptr[0] == 0xff && (ptr[1] & 0xe0) == 0xe0)) { ++ else if ((end - ptr >= 2) && !(ptr[0] == 0xff && (ptr[1] & 0xe0) == 0xe0)) { + /* mark point where frame sync word was expected */ + stream->this_frame = ptr; + stream->next_frame = ptr + 1; +@@ -361,6 +373,8 @@ int mad_header_decode(struct mad_header + ptr = mad_bit_nextbyte(&stream->ptr); + } + ++ stream->error = MAD_ERROR_NONE; ++ + /* begin processing */ + stream->this_frame = ptr; + stream->next_frame = ptr + 1; /* possibly bogus sync word */ +@@ -413,7 +427,7 @@ int mad_header_decode(struct mad_header + /* check that a valid frame header follows this frame */ + + ptr = stream->next_frame; +- if (!(ptr[0] == 0xff && (ptr[1] & 0xe0) == 0xe0)) { ++ if ((end - ptr >= 2) && !(ptr[0] == 0xff && (ptr[1] & 0xe0) == 0xe0)) { + ptr = stream->next_frame = stream->this_frame + 1; + goto sync; + } +Index: libmad-0.15.1b/layer12.c +=================================================================== +--- libmad-0.15.1b.orig/layer12.c ++++ libmad-0.15.1b/layer12.c +@@ -72,10 +72,18 @@ mad_fixed_t const linear_table[14] = { + * DESCRIPTION: decode one requantized Layer I sample from a bitstream + */ + static +-mad_fixed_t I_sample(struct mad_bitptr *ptr, unsigned int nb) ++mad_fixed_t I_sample(struct mad_bitptr *ptr, unsigned int nb, struct mad_stream *stream) + { + mad_fixed_t sample; ++ struct mad_bitptr frameend_ptr; + ++ mad_bit_init(&frameend_ptr, stream->next_frame); ++ ++ if (mad_bit_length(ptr, &frameend_ptr) < nb) { ++ stream->error = MAD_ERROR_LOSTSYNC; ++ stream->sync = 0; ++ return 0; ++ } + sample = mad_bit_read(ptr, nb); + + /* invert most significant bit, extend sign, then scale to fixed format */ +@@ -106,6 +114,10 @@ int mad_layer_I(struct mad_stream *strea + struct mad_header *header = &frame->header; + unsigned int nch, bound, ch, s, sb, nb; + unsigned char allocation[2][32], scalefactor[2][32]; ++ struct mad_bitptr bufend_ptr, frameend_ptr; ++ ++ mad_bit_init(&bufend_ptr, stream->bufend); ++ mad_bit_init(&frameend_ptr, stream->next_frame); + + nch = MAD_NCHANNELS(header); + +@@ -118,6 +130,11 @@ int mad_layer_I(struct mad_stream *strea + /* check CRC word */ + + if (header->flags & MAD_FLAG_PROTECTION) { ++ if (mad_bit_length(&stream->ptr, &bufend_ptr) ++ < 4 * (bound * nch + (32 - bound))) { ++ stream->error = MAD_ERROR_BADCRC; ++ return -1; ++ } + header->crc_check = + mad_bit_crc(stream->ptr, 4 * (bound * nch + (32 - bound)), + header->crc_check); +@@ -133,6 +150,11 @@ int mad_layer_I(struct mad_stream *strea + + for (sb = 0; sb < bound; ++sb) { + for (ch = 0; ch < nch; ++ch) { ++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < 4) { ++ stream->error = MAD_ERROR_LOSTSYNC; ++ stream->sync = 0; ++ return -1; ++ } + nb = mad_bit_read(&stream->ptr, 4); + + if (nb == 15) { +@@ -145,6 +167,11 @@ int mad_layer_I(struct mad_stream *strea + } + + for (sb = bound; sb < 32; ++sb) { ++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < 4) { ++ stream->error = MAD_ERROR_LOSTSYNC; ++ stream->sync = 0; ++ return -1; ++ } + nb = mad_bit_read(&stream->ptr, 4); + + if (nb == 15) { +@@ -161,6 +188,11 @@ int mad_layer_I(struct mad_stream *strea + for (sb = 0; sb < 32; ++sb) { + for (ch = 0; ch < nch; ++ch) { + if (allocation[ch][sb]) { ++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < 6) { ++ stream->error = MAD_ERROR_LOSTSYNC; ++ stream->sync = 0; ++ return -1; ++ } + scalefactor[ch][sb] = mad_bit_read(&stream->ptr, 6); + + # if defined(OPT_STRICT) +@@ -185,8 +217,10 @@ int mad_layer_I(struct mad_stream *strea + for (ch = 0; ch < nch; ++ch) { + nb = allocation[ch][sb]; + frame->sbsample[ch][s][sb] = nb ? +- mad_f_mul(I_sample(&stream->ptr, nb), ++ mad_f_mul(I_sample(&stream->ptr, nb, stream), + sf_table[scalefactor[ch][sb]]) : 0; ++ if (stream->error != 0) ++ return -1; + } + } + +@@ -194,7 +228,14 @@ int mad_layer_I(struct mad_stream *strea + if ((nb = allocation[0][sb])) { + mad_fixed_t sample; + +- sample = I_sample(&stream->ptr, nb); ++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < nb) { ++ stream->error = MAD_ERROR_LOSTSYNC; ++ stream->sync = 0; ++ return -1; ++ } ++ sample = I_sample(&stream->ptr, nb, stream); ++ if (stream->error != 0) ++ return -1; + + for (ch = 0; ch < nch; ++ch) { + frame->sbsample[ch][s][sb] = +@@ -280,13 +321,21 @@ struct quantclass { + static + void II_samples(struct mad_bitptr *ptr, + struct quantclass const *quantclass, +- mad_fixed_t output[3]) ++ mad_fixed_t output[3], struct mad_stream *stream) + { + unsigned int nb, s, sample[3]; ++ struct mad_bitptr frameend_ptr; ++ ++ mad_bit_init(&frameend_ptr, stream->next_frame); + + if ((nb = quantclass->group)) { + unsigned int c, nlevels; + ++ if (mad_bit_length(ptr, &frameend_ptr) < quantclass->bits) { ++ stream->error = MAD_ERROR_LOSTSYNC; ++ stream->sync = 0; ++ return; ++ } + /* degrouping */ + c = mad_bit_read(ptr, quantclass->bits); + nlevels = quantclass->nlevels; +@@ -299,8 +348,14 @@ void II_samples(struct mad_bitptr *ptr, + else { + nb = quantclass->bits; + +- for (s = 0; s < 3; ++s) ++ for (s = 0; s < 3; ++s) { ++ if (mad_bit_length(ptr, &frameend_ptr) < nb) { ++ stream->error = MAD_ERROR_LOSTSYNC; ++ stream->sync = 0; ++ return; ++ } + sample[s] = mad_bit_read(ptr, nb); ++ } + } + + for (s = 0; s < 3; ++s) { +@@ -336,6 +391,9 @@ int mad_layer_II(struct mad_stream *stre + unsigned char const *offsets; + unsigned char allocation[2][32], scfsi[2][32], scalefactor[2][32][3]; + mad_fixed_t samples[3]; ++ struct mad_bitptr frameend_ptr; ++ ++ mad_bit_init(&frameend_ptr, stream->next_frame); + + nch = MAD_NCHANNELS(header); + +@@ -402,13 +460,24 @@ int mad_layer_II(struct mad_stream *stre + for (sb = 0; sb < bound; ++sb) { + nbal = bitalloc_table[offsets[sb]].nbal; + +- for (ch = 0; ch < nch; ++ch) ++ for (ch = 0; ch < nch; ++ch) { ++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < nbal) { ++ stream->error = MAD_ERROR_LOSTSYNC; ++ stream->sync = 0; ++ return -1; ++ } + allocation[ch][sb] = mad_bit_read(&stream->ptr, nbal); ++ } + } + + for (sb = bound; sb < sblimit; ++sb) { + nbal = bitalloc_table[offsets[sb]].nbal; + ++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < nbal) { ++ stream->error = MAD_ERROR_LOSTSYNC; ++ stream->sync = 0; ++ return -1; ++ } + allocation[0][sb] = + allocation[1][sb] = mad_bit_read(&stream->ptr, nbal); + } +@@ -417,8 +486,14 @@ int mad_layer_II(struct mad_stream *stre + + for (sb = 0; sb < sblimit; ++sb) { + for (ch = 0; ch < nch; ++ch) { +- if (allocation[ch][sb]) ++ if (allocation[ch][sb]) { ++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < 2) { ++ stream->error = MAD_ERROR_LOSTSYNC; ++ stream->sync = 0; ++ return -1; ++ } + scfsi[ch][sb] = mad_bit_read(&stream->ptr, 2); ++ } + } + } + +@@ -441,6 +516,11 @@ int mad_layer_II(struct mad_stream *stre + for (sb = 0; sb < sblimit; ++sb) { + for (ch = 0; ch < nch; ++ch) { + if (allocation[ch][sb]) { ++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < 6) { ++ stream->error = MAD_ERROR_LOSTSYNC; ++ stream->sync = 0; ++ return -1; ++ } + scalefactor[ch][sb][0] = mad_bit_read(&stream->ptr, 6); + + switch (scfsi[ch][sb]) { +@@ -451,11 +531,21 @@ int mad_layer_II(struct mad_stream *stre + break; + + case 0: ++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < 6) { ++ stream->error = MAD_ERROR_LOSTSYNC; ++ stream->sync = 0; ++ return -1; ++ } + scalefactor[ch][sb][1] = mad_bit_read(&stream->ptr, 6); + /* fall through */ + + case 1: + case 3: ++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < 6) { ++ stream->error = MAD_ERROR_LOSTSYNC; ++ stream->sync = 0; ++ return -1; ++ } + scalefactor[ch][sb][2] = mad_bit_read(&stream->ptr, 6); + } + +@@ -487,7 +577,9 @@ int mad_layer_II(struct mad_stream *stre + if ((index = allocation[ch][sb])) { + index = offset_table[bitalloc_table[offsets[sb]].offset][index - 1]; + +- II_samples(&stream->ptr, &qc_table[index], samples); ++ II_samples(&stream->ptr, &qc_table[index], samples, stream); ++ if (stream->error != 0) ++ return -1; + + for (s = 0; s < 3; ++s) { + frame->sbsample[ch][3 * gr + s][sb] = +@@ -505,7 +597,9 @@ int mad_layer_II(struct mad_stream *stre + if ((index = allocation[0][sb])) { + index = offset_table[bitalloc_table[offsets[sb]].offset][index - 1]; + +- II_samples(&stream->ptr, &qc_table[index], samples); ++ II_samples(&stream->ptr, &qc_table[index], samples, stream); ++ if (stream->error != 0) ++ return -1; + + for (ch = 0; ch < nch; ++ch) { + for (s = 0; s < 3; ++s) { +Index: libmad-0.15.1b/layer3.c +=================================================================== +--- libmad-0.15.1b.orig/layer3.c ++++ libmad-0.15.1b/layer3.c +@@ -598,7 +598,8 @@ enum mad_error III_sideinfo(struct mad_b + static + unsigned int III_scalefactors_lsf(struct mad_bitptr *ptr, + struct channel *channel, +- struct channel *gr1ch, int mode_extension) ++ struct channel *gr1ch, int mode_extension, ++ unsigned int bits_left, unsigned int *part2_length) + { + struct mad_bitptr start; + unsigned int scalefac_compress, index, slen[4], part, n, i; +@@ -644,8 +645,12 @@ unsigned int III_scalefactors_lsf(struct + + n = 0; + for (part = 0; part < 4; ++part) { +- for (i = 0; i < nsfb[part]; ++i) ++ for (i = 0; i < nsfb[part]; ++i) { ++ if (bits_left < slen[part]) ++ return MAD_ERROR_BADSCFSI; + channel->scalefac[n++] = mad_bit_read(ptr, slen[part]); ++ bits_left -= slen[part]; ++ } + } + + while (n < 39) +@@ -690,7 +695,10 @@ unsigned int III_scalefactors_lsf(struct + max = (1 << slen[part]) - 1; + + for (i = 0; i < nsfb[part]; ++i) { ++ if (bits_left < slen[part]) ++ return MAD_ERROR_BADSCFSI; + is_pos = mad_bit_read(ptr, slen[part]); ++ bits_left -= slen[part]; + + channel->scalefac[n] = is_pos; + gr1ch->scalefac[n++] = (is_pos == max); +@@ -703,7 +711,8 @@ unsigned int III_scalefactors_lsf(struct + } + } + +- return mad_bit_length(&start, ptr); ++ *part2_length = mad_bit_length(&start, ptr); ++ return MAD_ERROR_NONE; + } + + /* +@@ -712,7 +721,8 @@ unsigned int III_scalefactors_lsf(struct + */ + static + unsigned int III_scalefactors(struct mad_bitptr *ptr, struct channel *channel, +- struct channel const *gr0ch, unsigned int scfsi) ++ struct channel const *gr0ch, unsigned int scfsi, ++ unsigned int bits_left, unsigned int *part2_length) + { + struct mad_bitptr start; + unsigned int slen1, slen2, sfbi; +@@ -728,12 +738,20 @@ unsigned int III_scalefactors(struct mad + sfbi = 0; + + nsfb = (channel->flags & mixed_block_flag) ? 8 + 3 * 3 : 6 * 3; +- while (nsfb--) ++ while (nsfb--) { ++ if (bits_left < slen1) ++ return MAD_ERROR_BADSCFSI; + channel->scalefac[sfbi++] = mad_bit_read(ptr, slen1); ++ bits_left -= slen1; ++ } + + nsfb = 6 * 3; +- while (nsfb--) ++ while (nsfb--) { ++ if (bits_left < slen2) ++ return MAD_ERROR_BADSCFSI; + channel->scalefac[sfbi++] = mad_bit_read(ptr, slen2); ++ bits_left -= slen2; ++ } + + nsfb = 1 * 3; + while (nsfb--) +@@ -745,8 +763,12 @@ unsigned int III_scalefactors(struct mad + channel->scalefac[sfbi] = gr0ch->scalefac[sfbi]; + } + else { +- for (sfbi = 0; sfbi < 6; ++sfbi) ++ for (sfbi = 0; sfbi < 6; ++sfbi) { ++ if (bits_left < slen1) ++ return MAD_ERROR_BADSCFSI; + channel->scalefac[sfbi] = mad_bit_read(ptr, slen1); ++ bits_left -= slen1; ++ } + } + + if (scfsi & 0x4) { +@@ -754,8 +776,12 @@ unsigned int III_scalefactors(struct mad + channel->scalefac[sfbi] = gr0ch->scalefac[sfbi]; + } + else { +- for (sfbi = 6; sfbi < 11; ++sfbi) ++ for (sfbi = 6; sfbi < 11; ++sfbi) { ++ if (bits_left < slen1) ++ return MAD_ERROR_BADSCFSI; + channel->scalefac[sfbi] = mad_bit_read(ptr, slen1); ++ bits_left -= slen1; ++ } + } + + if (scfsi & 0x2) { +@@ -763,8 +789,12 @@ unsigned int III_scalefactors(struct mad + channel->scalefac[sfbi] = gr0ch->scalefac[sfbi]; + } + else { +- for (sfbi = 11; sfbi < 16; ++sfbi) ++ for (sfbi = 11; sfbi < 16; ++sfbi) { ++ if (bits_left < slen2) ++ return MAD_ERROR_BADSCFSI; + channel->scalefac[sfbi] = mad_bit_read(ptr, slen2); ++ bits_left -= slen2; ++ } + } + + if (scfsi & 0x1) { +@@ -772,14 +802,19 @@ unsigned int III_scalefactors(struct mad + channel->scalefac[sfbi] = gr0ch->scalefac[sfbi]; + } + else { +- for (sfbi = 16; sfbi < 21; ++sfbi) ++ for (sfbi = 16; sfbi < 21; ++sfbi) { ++ if (bits_left < slen2) ++ return MAD_ERROR_BADSCFSI; + channel->scalefac[sfbi] = mad_bit_read(ptr, slen2); ++ bits_left -= slen2; ++ } + } + + channel->scalefac[21] = 0; + } + +- return mad_bit_length(&start, ptr); ++ *part2_length = mad_bit_length(&start, ptr); ++ return MAD_ERROR_NONE; + } + + /* +@@ -933,19 +968,17 @@ static + enum mad_error III_huffdecode(struct mad_bitptr *ptr, mad_fixed_t xr[576], + struct channel *channel, + unsigned char const *sfbwidth, +- unsigned int part2_length) ++ signed int part3_length) + { + signed int exponents[39], exp; + signed int const *expptr; + struct mad_bitptr peek; +- signed int bits_left, cachesz; ++ signed int bits_left, cachesz, fakebits; + register mad_fixed_t *xrptr; + mad_fixed_t const *sfbound; + register unsigned long bitcache; + +- bits_left = (signed) channel->part2_3_length - (signed) part2_length; +- if (bits_left < 0) +- return MAD_ERROR_BADPART3LEN; ++ bits_left = part3_length; + + III_exponents(channel, sfbwidth, exponents); + +@@ -956,8 +989,12 @@ enum mad_error III_huffdecode(struct mad + cachesz = mad_bit_bitsleft(&peek); + cachesz += ((32 - 1 - 24) + (24 - cachesz)) & ~7; + ++ if (bits_left < cachesz) { ++ cachesz = bits_left; ++ } + bitcache = mad_bit_read(&peek, cachesz); + bits_left -= cachesz; ++ fakebits = 0; + + xrptr = &xr[0]; + +@@ -986,7 +1023,7 @@ enum mad_error III_huffdecode(struct mad + + big_values = channel->big_values; + +- while (big_values-- && cachesz + bits_left > 0) { ++ while (big_values-- && cachesz + bits_left - fakebits > 0) { + union huffpair const *pair; + unsigned int clumpsz, value; + register mad_fixed_t requantized; +@@ -1023,10 +1060,19 @@ enum mad_error III_huffdecode(struct mad + unsigned int bits; + + bits = ((32 - 1 - 21) + (21 - cachesz)) & ~7; ++ if (bits_left < bits) { ++ bits = bits_left; ++ } + bitcache = (bitcache << bits) | mad_bit_read(&peek, bits); + cachesz += bits; + bits_left -= bits; + } ++ if (cachesz < 21) { ++ unsigned int bits = 21 - cachesz; ++ bitcache <<= bits; ++ cachesz += bits; ++ fakebits += bits; ++ } + + /* hcod (0..19) */ + +@@ -1041,6 +1087,8 @@ enum mad_error III_huffdecode(struct mad + } + + cachesz -= pair->value.hlen; ++ if (cachesz < fakebits) ++ return MAD_ERROR_BADHUFFDATA; + + if (linbits) { + /* x (0..14) */ +@@ -1054,10 +1102,15 @@ enum mad_error III_huffdecode(struct mad + + case 15: + if (cachesz < linbits + 2) { +- bitcache = (bitcache << 16) | mad_bit_read(&peek, 16); +- cachesz += 16; +- bits_left -= 16; ++ unsigned int bits = 16; ++ if (bits_left < 16) ++ bits = bits_left; ++ bitcache = (bitcache << bits) | mad_bit_read(&peek, bits); ++ cachesz += bits; ++ bits_left -= bits; + } ++ if (cachesz - fakebits < linbits) ++ return MAD_ERROR_BADHUFFDATA; + + value += MASK(bitcache, cachesz, linbits); + cachesz -= linbits; +@@ -1074,6 +1127,8 @@ enum mad_error III_huffdecode(struct mad + } + + x_final: ++ if (cachesz - fakebits < 1) ++ return MAD_ERROR_BADHUFFDATA; + xrptr[0] = MASK1BIT(bitcache, cachesz--) ? + -requantized : requantized; + } +@@ -1089,10 +1144,15 @@ enum mad_error III_huffdecode(struct mad + + case 15: + if (cachesz < linbits + 1) { +- bitcache = (bitcache << 16) | mad_bit_read(&peek, 16); +- cachesz += 16; +- bits_left -= 16; ++ unsigned int bits = 16; ++ if (bits_left < 16) ++ bits = bits_left; ++ bitcache = (bitcache << bits) | mad_bit_read(&peek, bits); ++ cachesz += bits; ++ bits_left -= bits; + } ++ if (cachesz - fakebits < linbits) ++ return MAD_ERROR_BADHUFFDATA; + + value += MASK(bitcache, cachesz, linbits); + cachesz -= linbits; +@@ -1109,6 +1169,8 @@ enum mad_error III_huffdecode(struct mad + } + + y_final: ++ if (cachesz - fakebits < 1) ++ return MAD_ERROR_BADHUFFDATA; + xrptr[1] = MASK1BIT(bitcache, cachesz--) ? + -requantized : requantized; + } +@@ -1128,6 +1190,8 @@ enum mad_error III_huffdecode(struct mad + requantized = reqcache[value] = III_requantize(value, exp); + } + ++ if (cachesz - fakebits < 1) ++ return MAD_ERROR_BADHUFFDATA; + xrptr[0] = MASK1BIT(bitcache, cachesz--) ? + -requantized : requantized; + } +@@ -1146,6 +1210,8 @@ enum mad_error III_huffdecode(struct mad + requantized = reqcache[value] = III_requantize(value, exp); + } + ++ if (cachesz - fakebits < 1) ++ return MAD_ERROR_BADHUFFDATA; + xrptr[1] = MASK1BIT(bitcache, cachesz--) ? + -requantized : requantized; + } +@@ -1155,9 +1221,6 @@ enum mad_error III_huffdecode(struct mad + } + } + +- if (cachesz + bits_left < 0) +- return MAD_ERROR_BADHUFFDATA; /* big_values overrun */ +- + /* count1 */ + { + union huffquad const *table; +@@ -1167,15 +1230,24 @@ enum mad_error III_huffdecode(struct mad + + requantized = III_requantize(1, exp); + +- while (cachesz + bits_left > 0 && xrptr <= &xr[572]) { ++ while (cachesz + bits_left - fakebits > 0 && xrptr <= &xr[572]) { + union huffquad const *quad; + + /* hcod (1..6) */ + + if (cachesz < 10) { +- bitcache = (bitcache << 16) | mad_bit_read(&peek, 16); +- cachesz += 16; +- bits_left -= 16; ++ unsigned int bits = 16; ++ if (bits_left < 16) ++ bits = bits_left; ++ bitcache = (bitcache << bits) | mad_bit_read(&peek, bits); ++ cachesz += bits; ++ bits_left -= bits; ++ } ++ if (cachesz < 10) { ++ unsigned int bits = 10 - cachesz; ++ bitcache <<= bits; ++ cachesz += bits; ++ fakebits += bits; + } + + quad = &table[MASK(bitcache, cachesz, 4)]; +@@ -1188,6 +1260,11 @@ enum mad_error III_huffdecode(struct mad + MASK(bitcache, cachesz, quad->ptr.bits)]; + } + ++ if (cachesz - fakebits < quad->value.hlen + quad->value.v ++ + quad->value.w + quad->value.x + quad->value.y) ++ /* We don't have enough bits to read one more entry, consider them ++ * stuffing bits. */ ++ break; + cachesz -= quad->value.hlen; + + if (xrptr == sfbound) { +@@ -1236,22 +1313,8 @@ enum mad_error III_huffdecode(struct mad + + xrptr += 2; + } +- +- if (cachesz + bits_left < 0) { +-# if 0 && defined(DEBUG) +- fprintf(stderr, "huffman count1 overrun (%d bits)\n", +- -(cachesz + bits_left)); +-# endif +- +- /* technically the bitstream is misformatted, but apparently +- some encoders are just a bit sloppy with stuffing bits */ +- +- xrptr -= 4; +- } + } + +- assert(-bits_left <= MAD_BUFFER_GUARD * CHAR_BIT); +- + # if 0 && defined(DEBUG) + if (bits_left < 0) + fprintf(stderr, "read %d bits too many\n", -bits_left); +@@ -2348,10 +2411,11 @@ void III_freqinver(mad_fixed_t sample[18 + */ + static + enum mad_error III_decode(struct mad_bitptr *ptr, struct mad_frame *frame, +- struct sideinfo *si, unsigned int nch) ++ struct sideinfo *si, unsigned int nch, unsigned int md_len) + { + struct mad_header *header = &frame->header; + unsigned int sfreqi, ngr, gr; ++ int bits_left = md_len * CHAR_BIT; + + { + unsigned int sfreq; +@@ -2383,6 +2447,7 @@ enum mad_error III_decode(struct mad_bit + for (ch = 0; ch < nch; ++ch) { + struct channel *channel = &granule->ch[ch]; + unsigned int part2_length; ++ unsigned int part3_length; + + sfbwidth[ch] = sfbwidth_table[sfreqi].l; + if (channel->block_type == 2) { +@@ -2391,18 +2456,30 @@ enum mad_error III_decode(struct mad_bit + } + + if (header->flags & MAD_FLAG_LSF_EXT) { +- part2_length = III_scalefactors_lsf(ptr, channel, ++ error = III_scalefactors_lsf(ptr, channel, + ch == 0 ? 0 : &si->gr[1].ch[1], +- header->mode_extension); ++ header->mode_extension, bits_left, &part2_length); + } + else { +- part2_length = III_scalefactors(ptr, channel, &si->gr[0].ch[ch], +- gr == 0 ? 0 : si->scfsi[ch]); ++ error = III_scalefactors(ptr, channel, &si->gr[0].ch[ch], ++ gr == 0 ? 0 : si->scfsi[ch], bits_left, &part2_length); + } ++ if (error) ++ return error; ++ ++ bits_left -= part2_length; + +- error = III_huffdecode(ptr, xr[ch], channel, sfbwidth[ch], part2_length); ++ if (part2_length > channel->part2_3_length) ++ return MAD_ERROR_BADPART3LEN; ++ ++ part3_length = channel->part2_3_length - part2_length; ++ if (part3_length > bits_left) ++ return MAD_ERROR_BADPART3LEN; ++ ++ error = III_huffdecode(ptr, xr[ch], channel, sfbwidth[ch], part3_length); + if (error) + return error; ++ bits_left -= part3_length; + } + + /* joint stereo processing */ +@@ -2519,11 +2596,13 @@ int mad_layer_III(struct mad_stream *str + unsigned int nch, priv_bitlen, next_md_begin = 0; + unsigned int si_len, data_bitlen, md_len; + unsigned int frame_space, frame_used, frame_free; +- struct mad_bitptr ptr; ++ struct mad_bitptr ptr, bufend_ptr; + struct sideinfo si; + enum mad_error error; + int result = 0; + ++ mad_bit_init(&bufend_ptr, stream->bufend); ++ + /* allocate Layer III dynamic structures */ + + if (stream->main_data == 0) { +@@ -2587,14 +2666,15 @@ int mad_layer_III(struct mad_stream *str + unsigned long header; + + mad_bit_init(&peek, stream->next_frame); ++ if (mad_bit_length(&peek, &bufend_ptr) >= 57) { ++ header = mad_bit_read(&peek, 32); ++ if ((header & 0xffe60000L) /* syncword | layer */ == 0xffe20000L) { ++ if (!(header & 0x00010000L)) /* protection_bit */ ++ mad_bit_skip(&peek, 16); /* crc_check */ + +- header = mad_bit_read(&peek, 32); +- if ((header & 0xffe60000L) /* syncword | layer */ == 0xffe20000L) { +- if (!(header & 0x00010000L)) /* protection_bit */ +- mad_bit_skip(&peek, 16); /* crc_check */ +- +- next_md_begin = +- mad_bit_read(&peek, (header & 0x00080000L) /* ID */ ? 9 : 8); ++ next_md_begin = ++ mad_bit_read(&peek, (header & 0x00080000L) /* ID */ ? 9 : 8); ++ } + } + + mad_bit_finish(&peek); +@@ -2653,7 +2733,7 @@ int mad_layer_III(struct mad_stream *str + /* decode main_data */ + + if (result == 0) { +- error = III_decode(&ptr, frame, &si, nch); ++ error = III_decode(&ptr, frame, &si, nch, md_len); + if (error) { + stream->error = error; + result = -1; diff --git a/gnu/packages/patches/libmad-md_size.patch b/gnu/packages/patches/libmad-md_size.patch new file mode 100644 index 0000000000..0eb6844a2a --- /dev/null +++ b/gnu/packages/patches/libmad-md_size.patch @@ -0,0 +1,60 @@ +Copied from Debian. + +From: Kurt Roeckx <kurt@roeckx.be> +Date: Sun, 28 Jan 2018 15:44:08 +0100 +Subject: Check the size of the main data + +The main data to decode a frame can come from the current frame and part of the +previous frame, the so called bit reservoir. si.main_data_begin is the part of +the previous frame we need for this frame. frame_space is the amount of main +data that can be in this frame, and next_md_begin is the part of this frame that +is going to be used for the next frame. + +The maximum amount of data from a previous frame that the format allows is 511 +bytes. The maximum frame size for the defined bitrates is at MPEG 2.5 layer 2 +at 320 kbit/s and 8 kHz sample rate which gives 72 * (320000 / 8000) + 1 = 2881. +So those defines are not large enough: + # define MAD_BUFFER_GUARD 8 + # define MAD_BUFFER_MDLEN (511 + 2048 + MAD_BUFFER_GUARD) + +There is also support for a "free" bitrate which allows you to create any frame +size, which can be larger than the buffer. + +Changing the defines is not an option since it's part of the ABI, so we check +that the main data fits in the bufer. + +The previous frame data is stored in *stream->main_data and contains +stream->md_len bytes. If stream->md_len is larger than the data we +need from the previous frame (si.main_data_begin) it still wouldn't fit +in the buffer, so just keep the data that we need. + +Index: libmad-0.15.1b/layer3.c +=================================================================== +--- libmad-0.15.1b.orig/layer3.c ++++ libmad-0.15.1b/layer3.c +@@ -2608,6 +2608,11 @@ int mad_layer_III(struct mad_stream *str + next_md_begin = 0; + + md_len = si.main_data_begin + frame_space - next_md_begin; ++ if (md_len + MAD_BUFFER_GUARD > MAD_BUFFER_MDLEN) { ++ stream->error = MAD_ERROR_LOSTSYNC; ++ stream->sync = 0; ++ return -1; ++ } + + frame_used = 0; + +@@ -2625,8 +2630,11 @@ int mad_layer_III(struct mad_stream *str + } + } + else { +- mad_bit_init(&ptr, +- *stream->main_data + stream->md_len - si.main_data_begin); ++ memmove(stream->main_data, ++ *stream->main_data + stream->md_len - si.main_data_begin, ++ si.main_data_begin); ++ stream->md_len = si.main_data_begin; ++ mad_bit_init(&ptr, *stream->main_data); + + if (md_len > si.main_data_begin) { + assert(stream->md_len + md_len - diff --git a/gnu/packages/patches/libvirt-remove-ATTRIBUTE_UNUSED.patch b/gnu/packages/patches/libvirt-remove-ATTRIBUTE_UNUSED.patch deleted file mode 100644 index 5bfefa70bb..0000000000 --- a/gnu/packages/patches/libvirt-remove-ATTRIBUTE_UNUSED.patch +++ /dev/null @@ -1,34 +0,0 @@ -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/strace-ipc-tests.patch b/gnu/packages/patches/strace-ipc-tests.patch new file mode 100644 index 0000000000..49341765ca --- /dev/null +++ b/gnu/packages/patches/strace-ipc-tests.patch @@ -0,0 +1,30 @@ +Fix a test failure on some systems. + +Taken from upstream: +https://github.com/strace/strace/commit/4377e3a1535a0ec3a42da8a1366ad6943f4efa0e + +diff --git a/tests/gen_tests.in b/tests/gen_tests.in +index 4a506b94c..4fdf4722c 100644 +--- a/tests/gen_tests.in ++++ b/tests/gen_tests.in +@@ -168,16 +168,16 @@ ipc_msg-Xabbrev +ipc.sh -Xabbrev -a26 + ipc_msg-Xraw +ipc.sh -Xraw -a16 + ipc_msg-Xverbose +ipc.sh -Xverbose -a34 + ipc_msgbuf-Xabbrev +ipc_msgbuf.test -Xabbrev +-ipc_msgbuf-Xraw +ipc_msgbuf.test -Xraw -a22 ++ipc_msgbuf-Xraw +ipc_msgbuf.test -Xraw -a20 + ipc_msgbuf-Xverbose +ipc_msgbuf.test -Xverbose + ipc_sem +ipc.sh -a29 + ipc_sem-Xabbrev +ipc.sh -Xabbrev -a29 + ipc_sem-Xraw +ipc.sh -Xraw -a19 + ipc_sem-Xverbose +ipc.sh -Xverbose -a36 +-ipc_shm +ipc.sh -a29 +-ipc_shm-Xabbrev +ipc.sh -Xabbrev -a29 ++ipc_shm +ipc.sh -a26 ++ipc_shm-Xabbrev +ipc.sh -Xabbrev -a26 + ipc_shm-Xraw +ipc.sh -Xraw -a19 +-ipc_shm-Xverbose +ipc.sh -Xverbose -a36 ++ipc_shm-Xverbose +ipc.sh -Xverbose -a34 + kcmp -a22 + kcmp-y -a22 -y -e trace=kcmp + kern_features -a16 diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index bcc3075548..55d88d07e8 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -4082,7 +4082,7 @@ relic support.") (base32 "0h3wfnpv5d4d3f9xzmwkchay6251nhzngdv3f6xia56mj4hxabs0")))) (build-system perl-build-system) - (inputs + (propagated-inputs `(("perl-clone-choose" ,perl-clone-choose))) (home-page "https://metacpan.org/release/Hash-Merge") (synopsis "Merge arbitrarily deep hashes into a single hash") diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm index b4ea20e387..88bc6b3dc6 100644 --- a/gnu/packages/plotutils.scm +++ b/gnu/packages/plotutils.scm @@ -198,8 +198,7 @@ colors, styles, options and details.") ("perl" ,perl) ("texinfo" ,texinfo) ;For generating documentation ;; For the manual and the tests. - ("texlive" ,(texlive-union (list texlive-fonts-amsfonts - texlive-latex-amsfonts + ("texlive" ,(texlive-union (list texlive-amsfonts texlive-latex-geometry texlive-latex-graphics texlive-latex-oberdiek ; for ifluatex diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index dcf5943231..37a8439350 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -3500,12 +3500,11 @@ color scales, and color space conversion easy. It has support for: ("pkg-config" ,pkg-config) ("python-sphinx" ,python-sphinx) ("python-numpydoc" ,python-numpydoc) - ("texlive" ,(texlive-union (list texlive-fonts-amsfonts - texlive-fonts-cm-super + ("texlive" ,(texlive-union (list texlive-fonts-cm-super texlive-fonts-ec texlive-generic-ifxetex texlive-generic-pdftex - texlive-latex-amsfonts + texlive-amsfonts texlive-latex-capt-of texlive-latex-cmap texlive-latex-environ @@ -3904,7 +3903,7 @@ toolkits.") ("python-ipykernel" ,python-ipykernel) ("python-mock" ,python-mock) ("graphviz" ,graphviz) - ("texlive" ,(texlive-union (list texlive-latex-amsfonts + ("texlive" ,(texlive-union (list texlive-amsfonts texlive-latex-amsmath texlive-latex-enumitem texlive-latex-expdlist @@ -3915,7 +3914,6 @@ toolkits.") texlive-generic-pdftex - texlive-fonts-amsfonts texlive-fonts-ec texlive-fonts-adobe-times texlive-fonts-txfonts))) @@ -5472,11 +5470,10 @@ computing.") `(("python-sphinx" ,python-sphinx) ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme) ;; FIXME: It's possible that a smaller union would work just as well. - ("texlive" ,(texlive-union (list texlive-fonts-amsfonts + ("texlive" ,(texlive-union (list texlive-amsfonts texlive-fonts-ec texlive-generic-ifxetex texlive-generic-pdftex - texlive-latex-amsfonts texlive-latex-capt-of texlive-latex-cmap texlive-latex-environ diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index 812a36ca9a..da4f251ab6 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -153,14 +153,14 @@ anywhere.") (define-public samba (package (name "samba") - (version "4.10.5") + (version "4.10.6") (source (origin (method url-fetch) (uri (string-append "https://download.samba.org/pub/samba/stable/" "samba-" version ".tar.gz")) (sha256 (base32 - "0xb3mz38hcayqxchk0ws9mxn10vswsn97jbxl4gcwi4cbrnjc43c")))) + "0hpgdqlyczj98pkh2ldglvvnkrb1q541r3qikdvxq0qjvd9fpywy")))) (build-system gnu-build-system) (arguments `(#:phases diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index eb5e5b4b76..f27f2229f7 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -75,6 +75,7 @@ #:use-module (gnu packages time) #:use-module (gnu packages tls) #:use-module (gnu packages base) + #:use-module (gnu packages version-control) #:use-module (gnu packages web) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -319,9 +320,8 @@ as.POSIXct(if (\"\" != Sys.getenv(\"SOURCE_DATE_EPOCH\")) {\ ("perl" ,perl) ("pkg-config" ,pkg-config) ("texinfo" ,texinfo) ; for building HTML manuals - ("texlive" ,(texlive-union (list texlive-fonts-amsfonts - texlive-fonts-ec - texlive-latex-amsfonts + ("texlive" ,(texlive-union (list texlive-fonts-ec + texlive-amsfonts texlive-latex-base texlive-latex-fancyvrb texlive-latex-graphics @@ -397,14 +397,14 @@ available, greatly increasing its breadth and scope.") (define-public r-boot (package (name "r-boot") - (version "1.3-22") + (version "1.3-23") (source (origin (method url-fetch) (uri (cran-uri "boot" version)) (sha256 (base32 - "1z2dig1mi76b3b9ck6qlkh07l3hs478gaf70db5nv8x7w2qhq7yg")))) + "0bx07zbb5nfz2xfgnzbspg7r5vxz4bjdz1ry4d1vk434vlcrxj1h")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/boot") (synopsis "Bootstrap functions for R") @@ -502,14 +502,14 @@ code for possible problems.") (define-public r-foreign (package (name "r-foreign") - (version "0.8-71") + (version "0.8-72") (source (origin (method url-fetch) (uri (cran-uri "foreign" version)) (sha256 (base32 - "1mv04w3ycz0ymsszn8aa87k6k5sb8mg8lhf1b8w4zpfrphpkkliv")))) + "124c9229is44p2rv7xyh2q86nsfi7vzyyh5n3c5ihziqrp4ig723")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/foreign") (synopsis "Read data stored by other statistics software") @@ -588,14 +588,14 @@ and operations on them using LAPACK and SuiteSparse.") (define-public r-nlme (package (name "r-nlme") - (version "3.1-140") + (version "3.1-141") (source (origin (method url-fetch) (uri (cran-uri "nlme" version)) (sha256 (base32 - "0k9x5j34fx093a023da9ny3b3101lbwpmfm27mkvfj950l22z88x")))) + "0ml00g79bimjcl0sgn6h55l5b4gfmnsnc1vvmivggn0318k4c04i")))) (build-system r-build-system) (propagated-inputs `(("r-lattice" ,r-lattice))) @@ -804,13 +804,13 @@ effects of different types of color-blindness.") (define-public r-digest (package (name "r-digest") - (version "0.6.19") + (version "0.6.20") (source (origin (method url-fetch) (uri (cran-uri "digest" version)) (sha256 - (base32 "1x6cbj9qvkk7pxv9xdqibazw3x8psjp6x0m0ildx1jwyb2ymkl98")))) + (base32 "1irhk2jaj9cg57cxprgyn1if06x121xwcxh1fzzn3148bl5lnrq5")))) (build-system r-build-system) ;; Vignettes require r-knitr, which requires r-digest, so we have to ;; disable them and the tests. @@ -1603,18 +1603,19 @@ R packages that praise their users.") (define-public r-testthat (package (name "r-testthat") - (version "2.1.1") + (version "2.2.1") (source (origin (method url-fetch) (uri (cran-uri "testthat" version)) (sha256 (base32 - "03jgr0hlr77yp0aib4v30yjyjrjsa8dczr02yk21m93vl25vqvkp")))) + "0y0bvggm4pzkzp6xn7b8cf3ybqp9ijxkhhyp3z49a9iipc90bvk7")))) (build-system r-build-system) (propagated-inputs `(("r-cli" ,r-cli) ("r-crayon" ,r-crayon) ("r-digest" ,r-digest) + ("r-evaluate" ,r-evaluate) ("r-magrittr" ,r-magrittr) ("r-praise" ,r-praise) ("r-r6" ,r-r6) @@ -1696,13 +1697,13 @@ and printing capabilities than traditional data frames.") (define-public r-dplyr (package (name "r-dplyr") - (version "0.8.1") + (version "0.8.3") (source (origin (method url-fetch) (uri (cran-uri "dplyr" version)) (sha256 (base32 - "1nw12hzk1jcac5879nfmf1yp98jpb3i59qkb8sfpk2cd6zqgfgjz")))) + "032c89wa04g9rih9shyvwl3il0bsrv3xk489x6867sk9bb3amd38")))) (build-system r-build-system) (propagated-inputs `(("r-assertthat" ,r-assertthat) @@ -1979,13 +1980,13 @@ inference for statistical models.") (define-public r-coda (package (name "r-coda") - (version "0.19-2") + (version "0.19-3") (source (origin (method url-fetch) (uri (cran-uri "coda" version)) (sha256 (base32 - "03fs3sdrrym3is92dgpa6ydk3m63gaihwy7bva4k0wm2hxm7x2k7")))) + "1mn50bshky968gn4nf6vnkaa768fnvm1xmhkms7szwdw9341zpyk")))) (build-system r-build-system) (propagated-inputs `(("r-lattice" ,r-lattice))) @@ -2021,14 +2022,14 @@ and environmental data in the framework of Euclidean exploratory methods.") (define-public r-xml2 (package (name "r-xml2") - (version "1.2.0") + (version "1.2.1") (source (origin (method url-fetch) (uri (cran-uri "xml2" version)) (sha256 (base32 - "154lmksfiwkhnlmryas25mjhfg6k4mmnnk7bbb29mnn5x5pr2yha")))) + "0186d7r36xw1z9f8ajz35a0dz4ch6hmrjl9536yc7vq78v4vn5an")))) (build-system r-build-system) (inputs `(("libxml2" ,libxml2) @@ -2136,14 +2137,14 @@ R version.") (define-public r-checkmate (package (name "r-checkmate") - (version "1.9.3") + (version "1.9.4") (source (origin (method url-fetch) (uri (cran-uri "checkmate" version)) (sha256 (base32 - "15ccwvmw73c2zz1k10k5zdn8px0rrbnvs1b4nzvlb0iwj7cimhp4")))) + "08ddpgs4mv5d5y4j054pm8drmxkn7yvhfpbghwxlizjpnxa5g8ps")))) (build-system r-build-system) (propagated-inputs `(("r-backports" ,r-backports))) @@ -2333,14 +2334,14 @@ collation, and NAMESPACE files.") (define-public r-openssl (package (name "r-openssl") - (version "1.4") + (version "1.4.1") (source (origin (method url-fetch) (uri (cran-uri "openssl" version)) (sha256 (base32 - "0mh4xwb9wnn5j2n1zzmjldqjqv2nn4wdidiixxciaqrqsi0l9834")))) + "1ihz2qi33lhngl19xdanq0pbmfaacy63794mg8ll7z2lab3yryzp")))) (build-system r-build-system) (inputs `(("libressl" ,libressl))) @@ -2366,13 +2367,13 @@ integers.") (define-public r-httr (package (name "r-httr") - (version "1.4.0") + (version "1.4.1") (source (origin (method url-fetch) (uri (cran-uri "httr" version)) (sha256 (base32 - "0j6vknwyvkjpjsxwch4q02aik4dnm3h4l0wc7dgzc555bm1g2cyn")))) + "0mp1il13q6n49n2hv1p2p8x6avjan6dr5az19ql4hb78pc3pwp37")))) (build-system r-build-system) (propagated-inputs `(("r-curl" ,r-curl) @@ -2392,20 +2393,16 @@ functions make it easy to control additional request components.") (define-public r-git2r (package (name "r-git2r") - (version "0.25.2") + (version "0.26.1") (source (origin (method url-fetch) (uri (cran-uri "git2r" version)) (sha256 (base32 - "15kpvz6ry2r8ii5hzinjwkggc5kgmkbcpsdwzahsf8gha52w80p0")))) + "0dbl845sahv2i641ncaf06w06djravwc5wknp9syzx0ad8l0kmhk")))) (build-system r-build-system) - ;; This R package contains modified sources of libgit2. This modified - ;; version of libgit2 is built as the package is built. Hence libgit2 is - ;; not among the inputs of this package. (inputs - `(("libssh2" ,libssh2) ; for SSH transport - ("openssl" ,openssl) + `(("libgit2" ,libgit2) ("zlib" ,zlib))) (native-inputs `(("pkg-config" ,pkg-config))) @@ -2438,13 +2435,13 @@ informative error messages when it's not available.") (define-public r-devtools (package (name "r-devtools") - (version "2.0.2") + (version "2.1.0") (source (origin (method url-fetch) (uri (cran-uri "devtools" version)) (sha256 (base32 - "028pppj39ng7q17k27531s8k00lmw982vz5krn74n9b8f2azm8lr")))) + "0393v7nr22gr5g9afgrhq4ab3lwbqy6fd3shnmlhdpqam5357xy1")))) (build-system r-build-system) (propagated-inputs `(("r-callr" ,r-callr) @@ -2457,9 +2454,11 @@ informative error messages when it's not available.") ("r-pkgbuild" ,r-pkgbuild) ("r-pkgload" ,r-pkgload) ("r-rcmdcheck" ,r-rcmdcheck) + ("r-roxygen2" ,r-roxygen2) ("r-remotes" ,r-remotes) ("r-rstudioapi" ,r-rstudioapi) ("r-sessioninfo" ,r-sessioninfo) + ("r-testthat" ,r-testthat) ("r-usethis" ,r-usethis) ("r-withr" ,r-withr))) (home-page "https://github.com/hadley/devtools") @@ -2490,18 +2489,19 @@ were originally a part of the r-devtools package.") (define-public r-hms (package (name "r-hms") - (version "0.4.2") + (version "0.5.0") (source (origin (method url-fetch) (uri (cran-uri "hms" version)) (sha256 (base32 - "1g6hslk3z0xga38r71irxq802wskg6nv804mp8y9f7i2wfrj0y55")))) + "06snfqdczr0x0nbp7qnvwhlp2pw0wx9c2y3xb4gr1wrvbik74y58")))) (build-system r-build-system) (propagated-inputs `(("r-rlang" ,r-rlang) - ("r-pkgconfig" ,r-pkgconfig))) + ("r-pkgconfig" ,r-pkgconfig) + ("r-vctrs" ,r-vctrs))) (home-page "https://github.com/rstats-db/hms") (synopsis "Pretty time of day") (description @@ -2597,13 +2597,13 @@ well as additional utilities such as panel and axis annotation functions.") (define-public r-rcpparmadillo (package (name "r-rcpparmadillo") - (version "0.9.500.2.0") + (version "0.9.600.4.0") (source (origin (method url-fetch) (uri (cran-uri "RcppArmadillo" version)) (sha256 (base32 - "1lyvpb7n54ijlqns29qiixqr39334knf67cnixvlic58945glrhv")))) + "07jg2667xyhmp1fbcdi5nnhmkk81da76s9rlswfq4k2sjsmbfmr0")))) (properties `((upstream-name . "RcppArmadillo"))) (build-system r-build-system) ;; All needed for vignettes @@ -2695,14 +2695,14 @@ certain criterion, e.g., it contains a certain regular file.") (define-public r-rmarkdown (package (name "r-rmarkdown") - (version "1.13") + (version "1.14") (source (origin (method url-fetch) (uri (cran-uri "rmarkdown" version)) (sha256 (base32 - "1vv3b8nlw8ra19492rjg3na42lwh3xr5a2jy2ia81fvvs846pywn")))) + "0qfw5rkvwqpgix32g6qy9xrr50awmm146aqbm836xravih2b2dpn")))) (properties `((upstream-name . "rmarkdown"))) (build-system r-build-system) (propagated-inputs @@ -2788,17 +2788,18 @@ that package, other packages are unaffected.") (define-public r-blob (package (name "r-blob") - (version "1.1.1") + (version "1.2.0") (source (origin (method url-fetch) (uri (cran-uri "blob" version)) (sha256 (base32 - "0lsg91hk508dd95ivig2lwg62qafwnarjw68110kx63cfk4zkjxc")))) + "08z071jzac4gasgfgab0y5g3ilfmlw08ln813wphxg07hsiczw8s")))) (build-system r-build-system) (propagated-inputs `(("r-prettyunits" ,r-prettyunits) - ("r-tibble" ,r-tibble))) + ("r-rlang" ,r-rlang) + ("r-vctrs" ,r-vctrs))) (home-page "https://github.com/hadley/blob") (synopsis "Simple S3 Class for representing vectors of binary data") (description "Raw vectors in R are useful for storing a single binary @@ -2810,13 +2811,13 @@ a column in data frame.") (define-public r-rsqlite (package (name "r-rsqlite") - (version "2.1.1") + (version "2.1.2") (source (origin (method url-fetch) (uri (cran-uri "RSQLite" version)) (sha256 (base32 - "1giwk4335sc6yhj3rs8h070g1mwy38kyqyqv6vcfxvskykj7vp6z")))) + "1inrhap5cs0wry2jbw42fx9wwxb3qdzlpy0ba4f6a29bs8jx9nk6")))) (properties `((upstream-name . "RSQLite"))) (build-system r-build-system) (propagated-inputs @@ -3069,14 +3070,14 @@ standard R subsetting and Kronecker products.") (define-public r-iterators (package (name "r-iterators") - (version "1.0.10") + (version "1.0.12") (source (origin (method url-fetch) (uri (cran-uri "iterators" version)) (sha256 (base32 - "1s3iykfvccpnzs73z90rx18qvbvgw2dgl4nfcrvm5m1850qb5qd9")))) + "0jwzxaa3jm1xzgfv5pn0xqkk7rhm0xwvgn85w7xaw8xx1vb33gwn")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/iterators") (synopsis "Iterator construct for R") @@ -3089,14 +3090,14 @@ data.") (define-public r-foreach (package (name "r-foreach") - (version "1.4.4") + (version "1.4.7") (source (origin (method url-fetch) (uri (cran-uri "foreach" version)) (sha256 (base32 - "0j2yj0rn0d5nbzz9nq5rqqgnxhp9pbd92q4klsarl2xpsn8119y0")))) + "0q7iyniw5iri4hl57bhil3r69s5wnaijzn0q0x4h3z42245jqqwm")))) (build-system r-build-system) (propagated-inputs `(("r-codetools" ,r-codetools) @@ -3117,14 +3118,14 @@ parallel.") (define-public r-doparallel (package (name "r-doparallel") - (version "1.0.14") + (version "1.0.15") (source (origin (method url-fetch) (uri (cran-uri "doParallel" version)) (sha256 (base32 - "01qjs4iw9f1kgymcypj0m2s4pvgqhxaycpli0fb8lq3dc0vpzfyb")))) + "0vnqbha3gig3awbfvsfx3ni5jir398md1n7xmsb8jihnjsk7xbbi")))) (properties `((upstream-name . "doParallel"))) (build-system r-build-system) (propagated-inputs @@ -3140,14 +3141,14 @@ using the parallel package.") (define-public r-domc (package (name "r-domc") - (version "1.3.5") + (version "1.3.6") (source (origin (method url-fetch) (uri (cran-uri "doMC" version)) (sha256 (base32 - "1vfrykvfvsyq12mypd266867ml1dcwc3rj5k9c3wrn5bddcm88kr")))) + "1cn9gxavhvjswip8pwvkpi7q6wpzdllcsdjabga8akf55nggqxr9")))) (properties `((upstream-name . "doMC"))) (build-system r-build-system) (propagated-inputs @@ -3163,13 +3164,13 @@ using the multicore functionality of the parallel package.") (define-public r-dt (package (name "r-dt") - (version "0.7") + (version "0.8") (source (origin (method url-fetch) (uri (cran-uri "DT" version)) (sha256 (base32 - "0b6ywgzk9b35y5f69zwfz3vv7qwqqj3xsmy0xymf7nfcvrqg3qqx")))) + "08cfmv3d5awvd9h8648bvidcg2ak5pvl2p6vqwqwy1l82ia506ch")))) (properties `((upstream-name . "DT"))) (build-system r-build-system) @@ -3177,6 +3178,7 @@ using the multicore functionality of the parallel package.") `(("r-crosstalk" ,r-crosstalk) ("r-htmltools" ,r-htmltools) ("r-htmlwidgets" ,r-htmlwidgets) + ("r-jsonlite" ,r-jsonlite) ("r-magrittr" ,r-magrittr) ("r-promises" ,r-promises))) (home-page "http://rstudio.github.io/DT") @@ -3315,14 +3317,14 @@ package registries.") (define-public r-rngtools (package (name "r-rngtools") - (version "1.3.1.1") + (version "1.4") (source (origin (method url-fetch) (uri (cran-uri "rngtools" version)) (sha256 (base32 - "0k1nlcxggflq0043m15dfclnqnzchkpw2ik7jk82h4dqwvysiqcr")))) + "1kivj594bn774lbn29ws2rmzy2km99sza0j3jqvhal6hwmk27a9s")))) (build-system r-build-system) (propagated-inputs `(("r-digest" ,r-digest) @@ -4566,19 +4568,19 @@ Farebrother's algorithm or Liu et al.'s algorithm.") (define-public r-cowplot (package (name "r-cowplot") - (version "0.9.4") + (version "1.0.0") (source (origin (method url-fetch) (uri (cran-uri "cowplot" version)) (sha256 (base32 - "0yvalwalvyddyqk0q66y8361nxlh2cvp3ssazax9g5q89lghjmzv")))) + "19cqdhgfyr1wj0fz0c5ly8f0aiy9sfgzq6lzb78hkx0hdp2agybh")))) (build-system r-build-system) (propagated-inputs `(("r-ggplot2" ,r-ggplot2) ("r-gtable" ,r-gtable) - ("r-plyr" ,r-plyr) + ("r-rlang" ,r-rlang) ("r-scales" ,r-scales))) (home-page "https://github.com/wilkelab/cowplot") (synopsis "Streamlined plot theme and plot annotations for ggplot2") @@ -4640,14 +4642,14 @@ regression.") (define-public r-fastica (package (name "r-fastica") - (version "1.2-1") + (version "1.2-2") (source (origin (method url-fetch) (uri (cran-uri "fastICA" version)) (sha256 (base32 - "108z2ymby5y4h8l4l2krqwm28rya93gq09yylgilnm3afvfrfabg")))) + "1zpijqcipm0aa3rxj0mys06lskqy4dbppjpxr1aby0j16y9ka8ij")))) (properties `((upstream-name . "fastICA"))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/fastICA") @@ -4749,14 +4751,14 @@ models, generalized linear models and model-based clustering.") (define-public r-mclust (package (name "r-mclust") - (version "5.4.4") + (version "5.4.5") (source (origin (method url-fetch) (uri (cran-uri "mclust" version)) (sha256 (base32 - "039ymr57bq5327gypizw0v2qb81j6bkqhjdh8yj23qa5sh51phyc")))) + "0whandnda1fnjn5k3hgxdbp3b0xr7nlzy1j37saqb536h8q9dwkm")))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) @@ -4919,14 +4921,14 @@ generally.") (define-public r-robust (package (name "r-robust") - (version "0.4-18") + (version "0.4-18.1") (source (origin (method url-fetch) (uri (cran-uri "robust" version)) (sha256 (base32 - "1b7qh1aff500nd6dh4y2ipmjgdiq8991shflb63pc39vpc0ny6g4")))) + "0xs098pfw5zdcdk3rsxkylfl6d2pyp566s5v92bzhgl7h8c90cfy")))) (build-system r-build-system) (propagated-inputs `(("r-fit-models" ,r-fit-models) @@ -5025,14 +5027,14 @@ VGLMs can be loosely thought of as multivariate generalised linear models.") (define-public r-pbapply (package (name "r-pbapply") - (version "1.4-0") + (version "1.4-1") (source (origin (method url-fetch) (uri (cran-uri "pbapply" version)) (sha256 (base32 - "0bn7a9ni36xy5acnrl9ky3gd1k8jr5kxgazzh3pzd1q6bri1nx7k")))) + "1bbws9n90cqnnp5k58hp852jwmm6513jnhn4vzhl9f8x314k6qxk")))) (build-system r-build-system) (home-page "https://github.com/psolymos/pbapply") (synopsis "Adding progress bar to apply functions") @@ -5138,14 +5140,14 @@ using modular prediction and response module classes.") (define-public r-quantreg (package (name "r-quantreg") - (version "5.41") + (version "5.42.1") (source (origin (method url-fetch) (uri (cran-uri "quantreg" version)) (sha256 (base32 - "110ax3ngn6i94h7iw7ha67kfsmj94hycp7lk62nmyvkp34vpfykh")))) + "1aycnghci329yqw63kybv7sfjjx5whq3xs7xzic4wsaj7j4b1hjc")))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index df8d1e4b79..9077d295db 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -57,6 +57,7 @@ #:use-module (gnu packages golang) #:use-module (gnu packages gtk) #:use-module (gnu packages image) + #:use-module (gnu packages libcanberra) #:use-module (gnu packages libevent) #:use-module (gnu packages linux) #:use-module (gnu packages ncurses) @@ -954,7 +955,7 @@ tmux.") (define-public kitty (package (name "kitty") - (version "0.14.2") + (version "0.14.3") (home-page "https://sw.kovidgoyal.net/kitty/") (source (origin @@ -965,7 +966,7 @@ tmux.") (file-name (git-file-name name version)) (sha256 (base32 - "15iv3k7iryf10n8n67d37x24pzcarq97a3dr42lbld00k1lx19az")) + "0wi6b6b1nyp16rcpcghk6by62wy6qsamv1xdymyn0zbqgd8h9n6b")) (modules '((guix build utils))) (snippet '(begin @@ -984,6 +985,7 @@ tmux.") `(("python" ,python) ("harfbuzz" ,harfbuzz) ("zlib" ,zlib) + ("libcanberra" ,libcanberra) ("libpng" ,libpng) ("freetype" ,freetype) ("fontconfig" ,fontconfig) diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index ec35315f22..5be86e7d9e 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -66,6 +66,7 @@ #:use-module (gnu packages ruby) #:use-module (gnu packages shells) #:use-module (gnu packages base) + #:use-module (gnu packages gawk) #:use-module (gnu packages web) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -75,6 +76,154 @@ #:use-module (ice-9 match) #:use-module ((srfi srfi-1) #:hide (zip))) +(define* (simple-texlive-package name locations hash + #:key trivial?) + "Return a template for a simple TeX Live package with the given NAME, +downloading from a list of LOCATIONS in the TeX Live repository, and expecting +the provided output HASH. If TRIVIAL? is provided, all files will simply be +copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used." + (define with-documentation? + (and trivial? + (any (lambda (location) + (string-prefix? "/doc" location)) + locations))) + (package + (name name) + (version (number->string %texlive-revision)) + (source (texlive-origin name version + locations hash)) + (outputs (if with-documentation? + '("out" "doc") + '("out"))) + (build-system (if trivial? + gnu-build-system + texlive-build-system)) + (arguments + (let ((copy-files + `(lambda* (#:key outputs inputs #:allow-other-keys) + (let (,@(if with-documentation? + `((doc (string-append (assoc-ref outputs "doc") + "/share/texmf-dist/"))) + '()) + (out (string-append (assoc-ref outputs "out") + "/share/texmf-dist/"))) + ,@(if with-documentation? + '((mkdir-p doc) + (copy-recursively + (string-append (assoc-ref inputs "source") "/doc") + (string-append doc "/doc"))) + '()) + (mkdir-p out) + (copy-recursively (assoc-ref inputs "source") out) + ,@(if with-documentation? + '((delete-file-recursively (string-append out "/doc"))) + '()) + #t)))) + (if trivial? + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'build (const #t)) + (replace 'install ,copy-files))) + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'copy-files ,copy-files)))))) + (home-page #f) + (synopsis #f) + (description #f) + (license #f))) + +(define hyph-utf8-scripts + (origin + (method svn-fetch) + (uri (texlive-ref "generic" "hyph-utf8")) + (file-name (string-append "hyph-utf8-scripts-" + (number->string %texlive-revision) + "-checkout")) + (sha256 + (base32 + "1ix8h637hwhz4vrdhilf84kzzdza0wi8fp26nh7iws0bq08sl517")))) + +(define (texlive-hyphen-package name code locations hash) + (let ((parent (simple-texlive-package + name locations hash #:trivial? #t))) + (package + (inherit parent) + (arguments + (substitute-keyword-arguments (package-arguments parent) + ((#:modules _ '()) + '((guix build gnu-build-system) + (guix build utils) + (ice-9 match))) + ((#:phases phases) + `(modify-phases ,phases + (replace 'build + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (root (string-append out "/share/texmf-dist")) + (patterns + (string-append root "/tex/generic/hyph-utf8/patterns/txt/")) + (loaders + (string-append root "/tex/generic/hyph-utf8/loadhyph")) + (ptex + (string-append root "/tex/generic/hyph-utf8/patterns/ptex")) + (filter-expression + (match ',code + ((? string?) + (format #f "\nlanguages.select!{|l| l.code == \"~a\"}\n" ',code)) + ((a b ...) + (format #f "\nlanguages.select!{|l| [~{\"~a\",~}].include? l.code }\n" ',code))))) + (mkdir "scripts") + (copy-recursively + (assoc-ref inputs "hyph-utf8-scripts") "scripts") + + ;; Prepare target directories + (mkdir-p patterns) + (mkdir-p loaders) + (mkdir-p ptex) + + ;; Generate plain patterns + (with-directory-excursion "scripts" + (substitute* "languages.rb" + (("../../../tex/generic/") "../tex/generic/")) + (substitute* "generate-plain-patterns.rb" + ;; Ruby 2 does not need this. + (("require 'unicode'") "") + (("Unicode.upcase\\(ch\\)") "ch.upcase") + ;; Write directly to the output directory + (("\\$path_root=File.*") + (string-append "$path_root=\"" out "/share/texmf-dist/\"\n")) + ;; Create quote directory when needed + (("f = File.open\\(\"#\\{\\$path_quote\\}" m) + (string-append "require 'fileutils'; FileUtils.mkdir_p $path_quote;" m)) + ;; Only generate patterns for this language. + (("languages =.*" m) + (string-append m filter-expression))) + (invoke "ruby" "generate-plain-patterns.rb") + + ;; Build pattern loaders + (substitute* "generate-pattern-loaders.rb" + (("\\$path_tex_generic=File.*") + (string-append "$path_tex_generic=\"" root "/tex/generic\"\n")) + ;; Only generate loader for this language. + (("languages =.*" m) + (string-append m filter-expression))) + (invoke "ruby" "generate-pattern-loaders.rb") + + ;; Build ptex patterns + (substitute* "generate-ptex-patterns.rb" + (("\\$path_root=File.*") + (string-append "$path_root=\"" root "\"\n")) + ;; Only generate ptex patterns for this language. + (("languages =.*" m) + (string-append m filter-expression))) + (invoke "ruby" "generate-ptex-patterns.rb"))))))))) + (native-inputs + `(("ruby" ,ruby) + ("hyph-utf8-scripts" ,hyph-utf8-scripts))) + (home-page "https://ctan.org/pkg/hyph-utf8")))) + (define texlive-extra-src (origin (method url-fetch) @@ -122,6 +271,20 @@ (build-system gnu-build-system) (inputs `(("texlive-extra-src" ,texlive-extra-src) + ("texlive-scripts" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/scripts/texlive")) + (revision %texlive-revision))) + (file-name (string-append "texlive-scripts-" + (number->string %texlive-revision) + "-checkout")) + (sha256 + (base32 + "0wrjls1y9b4k1z10l9l8w2l3yjcw7v7by2y16kchdpkiyldlkry6")))) ("cairo" ,cairo) ("fontconfig" ,fontconfig) ("fontforge" ,fontforge) @@ -237,6 +400,13 @@ (apply unpack (list #:source texlive-extra)) (apply patch-source-shebangs (list #:source texlive-extra)) (invoke "mv" "tlpkg" share)) + (let ((scripts (string-append share "/texmf-dist/scripts/texlive/"))) + (mkdir-p scripts) + (copy-recursively (assoc-ref inputs "texlive-scripts") scripts) + ;; Make sure that fmtutil can find its Perl modules. + (substitute* (string-append scripts "fmtutil.pl") + (("\\$TEXMFROOT/") (string-append share "/")))) + ;; texlua shebangs are not patched by the patch-source-shebangs ;; phase because the texlua executable does not exist at that ;; time. @@ -263,99 +433,30 @@ This package contains the binaries.") (license (license:fsf-free "https://www.tug.org/texlive/copying.html")) (home-page "https://www.tug.org/texlive/"))) -(define-public texlive-dvips + +(define texlive-docstrip (package - (name "texlive-dvips") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/dvips")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1ky6wc173jhf0b33lhyb4r3bx1d4bmiqkn6y1hxn92kwjdzl42p7")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let* ((root (string-append (assoc-ref %outputs "out") - "/share/texmf-dist")) - (dvips (string-append root "/dvips")) - (maps (string-append root "/fonts/map/dvips")) - (encs (string-append root "/fonts/enc/dvips/base"))) - (mkdir-p dvips) - (copy-recursively (assoc-ref %build-inputs "source") dvips) - (mkdir-p maps) - (copy-recursively (assoc-ref %build-inputs "dvips-font-maps") maps) - (mkdir-p encs) - (copy-recursively (assoc-ref %build-inputs "dvips-base-enc") encs) - #t)))) - (native-inputs - `(("dvips-font-maps" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/map/dvips")) - (revision %texlive-revision))) - (file-name (string-append "dvips-font-maps-" version "-checkout")) - (sha256 - (base32 - "0nxvfbb5vsvakiw0iviicghdc2sxk05cj056ilqnpa62fffc36a6")))) - ("dvips-base-enc" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/enc/dvips/base")) - (revision %texlive-revision))) - (file-name (string-append "dvips-base-enc-" version "-checkout")) - (sha256 - (base32 - "1xnf6ms0h87r55kxik4vicwr1907scj789lhqflqns8svvsli5iy")))))) - (home-page "https://www.ctan.org/pkg/dvips") - (synopsis "DVI to PostScript drivers") - (description "This package provides files needed for converting DVI files -to PostScript.") - ;; Various free software licenses apply to individual files. - (license (list license:lppl1.3c+ - license:expat - license:lgpl3+)))) + (inherit (simple-texlive-package + "texlive-docstrip" + (list "/tex/latex/base/docstrip.tex") + (base32 + "17vdy43d9vknldz7wb69hp33r8awmdvn4xszamvgs5ikcl4cp289") + #:trivial? #t)) + (home-page "https://www.ctan.org/texlive") + (synopsis "Utility to strip documentation from TeX files.") + (description "This package provides the docstrip utility to strip +documentation from TeX files. It is part of the LaTeX base.") + (license license:lppl1.3+))) -(define-public texlive-generic-unicode-data +(define-public texlive-unicode-data (package - (name "texlive-generic-unicode-data") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/generic/unicode-data")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0r1v16jyfpz6dwqsgm6b9jcj4kf2pkzc9hg07s6fx9g8ba8qglih")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/generic/unicode-data"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) + (inherit (simple-texlive-package + "texlive-unicode-data" + (list "/tex/generic/unicode-data/" + "/doc/generic/unicode-data/") + (base32 + "1j63kz29arfiydb8r1a53q1r4zyk1yjbcq0w9i93zddczgqzgbfb") + #:trivial? #t)) (home-page "https://www.ctan.org/pkg/unicode-data") (synopsis "Unicode data and loaders for TeX") (description "This bundle provides generic access to Unicode Consortium @@ -369,68 +470,61 @@ set up and one for initializing XeTeX character classes as has been carried out to date by @code{unicode-letters.tex}. ") (license license:lppl1.3c+))) -(define-public texlive-generic-dehyph-exptl +(define-public texlive-generic-unicode-data + (deprecated-package "texlive-generic-unicode-data" texlive-unicode-data)) + +(define-public texlive-hyphen-base + (package + (inherit (simple-texlive-package + "texlive-hyphen-base" + (list "/tex/generic/config/language.dat" + "/tex/generic/config/language.dat.lua" + "/tex/generic/config/language.def" + "/tex/generic/config/language.us" + "/tex/generic/config/language.us.def" + "/tex/generic/config/language.us.lua" + "/tex/generic/hyphen/dumyhyph.tex" + "/tex/generic/hyphen/hyphen.tex" + "/tex/generic/hyphen/hypht1.tex" + "/tex/generic/hyphen/zerohyph.tex") + (base32 + "002g5zhzbj3ikgg8zidagdp605ac9f4qmfl148mp0mbpz1svk0ni") + #:trivial? #t)) + (home-page "https://tug.org/texlive/") + (synopsis "Core hyphenation support files") + (description "This package includes Knuth's original @file{hyphen.tex}, +@file{zerohyph.tex} to disable hyphenation, @file{language.us} which starts +the autogenerated files @file{language.dat} and @file{language.def} (and +default versions of those), etc.") + (license license:knuth))) + +(define-public texlive-dvips (package - (name "texlive-generic-dehyph-exptl") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/generic/dehyph-exptl")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "03yj1di9py92drp6gpfva6q69vk2iixr79r7cp7ja570s3pr0m33")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/generic/dehyph-exptl"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) - (home-page "http://projekte.dante.de/Trennmuster/WebHome") - (synopsis "Hyphenation patterns for German") - (description "The package provides experimental hyphenation patterns for -the German language, covering both traditional and reformed orthography. The -patterns can be used with packages Babel and hyphsubst from the Oberdiek -bundle.") - ;; Hyphenation patterns are under the Expat license; documentation is - ;; under LPPL. - (license (list license:expat license:lppl)))) + (inherit (simple-texlive-package + "texlive-dvips" + (list "/doc/man/man1/afm2tfm.1" + "/doc/man/man1/dvips.1" + "/dvips/base/" + "/dvips/config/" + "/fonts/enc/dvips/base/" + "/tex/generic/dvips/") + (base32 + "1qr7h0ahycmz5wmpv54glfss9jqdmmyymj6kim626d1c8v9bmg86") + #:trivial? #t)) + (home-page "https://www.ctan.org/pkg/dvips") + (synopsis "DVI to PostScript drivers") + (description "This package provides files needed for converting DVI files +to PostScript.") + (license license:lppl))) -(define-public texlive-generic-tex-ini-files +(define-public texlive-tex-ini-files (package - (name "texlive-generic-tex-ini-files") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/generic/tex-ini-files")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1wh42n1lmzcvi3g6mm31nm3yd5ha5bl260xqc444jg1m9fdp3wz5")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/generic/tex-ini-files"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) + (inherit (simple-texlive-package + "texlive-tex-ini-files" + (list "/tex/generic/tex-ini-files/") + (base32 + "0q1g62jg0qiqslm93ycvm30bw8ydmssjdshzsnzl7n2vpd62qfi2") + #:trivial? #t)) (home-page "https://www.ctan.org/pkg/tex-ini-files") (synopsis "Files for creating TeX formats") (description "This bundle provides a collection of model \".ini\" files @@ -440,62 +534,8 @@ allow existing format source files to be used with newer engines, for example to adapt the plain e-TeX source file to work with XeTeX and LuaTeX.") (license license:public-domain))) -(define-public texlive-generic-hyph-utf8 - (package - (name "texlive-generic-hyph-utf8") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/generic/hyph-utf8")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1alnn9cd60m2c12vym9f9q22ap1ngywxpkjl9dk472why44g1dmy")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/generic/hyph-utf8"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) - (home-page "https://ctan.org/pkg/hyph-utf8") - (synopsis "Hyphenation patterns expressed in UTF-8") - (description "Modern native UTF-8 engines such as XeTeX and LuaTeX need -hyphenation patterns in UTF-8 format, whereas older systems require -hyphenation patterns in the 8-bit encoding of the font in use (such encodings -are codified in the LaTeX scheme with names like OT1, T2A, TS1, OML, LY1, -etc). The present package offers a collection of conversions of existing -patterns to UTF-8 format, together with converters for use with 8-bit fonts in -older systems. Since hyphenation patterns for Knuthian-style TeX systems are -only read at iniTeX time, it is hoped that the UTF-8 patterns, with their -converters, will completely supplant the older patterns.") - ;; Individual files each have their own license. Most of these files are - ;; independent hyphenation patterns. - (license (list license:lppl1.0+ - license:lppl1.2+ - license:lppl1.3 - license:lppl1.3+ - license:lppl1.3a+ - license:lgpl2.1 - license:lgpl2.1+ - license:lgpl3+ - license:gpl2+ - license:gpl3+ - license:mpl1.1 - license:asl2.0 - license:expat - license:bsd-3 - license:cc0 - license:public-domain - license:wtfpl2)))) +(define-public texlive-generic-tex-ini-files + (deprecated-package "texlive-generic-tex-ini-files" texlive-tex-ini-files)) (define-public texlive-metafont-base (package @@ -549,68 +589,108 @@ converters, will completely supplant the older patterns.") build fonts using the Metafont system.") (license license:knuth))) -(define-public texlive-tex-fontinst-base - (package - (name "texlive-tex-fontinst-base") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/fontinst/base")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "12gnb8hc45p47pqn31msvi4mpr3wxbbbf2k4xhmshjqykwzlx508")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/fontinst/base"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) - (home-page "https://www.ctan.org/pkg/fontinst") - (synopsis "Tools for converting and installing fonts for TeX and LaTeX") - (description "This package provides TeX macros for converting Adobe Font +(define-public texlive-fontinst + (let ((template (simple-texlive-package + "texlive-fontinst" + (list "/doc/fonts/fontinst/" + "/doc/man/man1/fontinst.1" + "/doc/man/man1/fontinst.man1.pdf" + + ;; This is used to build parts of + ;; /tex/fontinst/{base,misc}/ and + ;; /tex/latex/fontinst/fontdoc.sty. + "/source/fontinst/base/" + + ;; These are not generated. + "/tex/fontinst/base/bbox.sty" + "/tex/fontinst/base/multislot.sty" + "/tex/fontinst/misc/glyphbox.mtx" + "/tex/fontinst/misc/glyphoff.mtx" + "/tex/fontinst/misc/glyphon.mtx" + "/tex/fontinst/misc/kernoff.mtx" + "/tex/fontinst/misc/kernon.mtx" + + "/tex/fontinst/latinetx/" + "/tex/fontinst/latinmtx/" + "/tex/fontinst/mathmtx/" + "/tex/fontinst/smblmtx/" + + "/scripts/texlive/fontinst.sh") + (base32 + "09drlb0krhnizw92xlm5wxzzpgn3shcxd684xlg0zc5p16l47w6h") + #:trivial? #t))) + (package + (inherit template) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:modules _ '()) + '((guix build gnu-build-system) + (guix build utils) + (ice-9 match))) + ((#:phases phases) + `(modify-phases ,phases + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + (setenv "TEXINPUTS" + (string-append (getcwd) "//:" + (getcwd) "/source/fontinst/base//:" + (assoc-ref inputs "texlive-docstrip") "//")) + (mkdir "build") + (invoke "tex" "-ini" "-interaction=scrollmode" + "-output-directory=build" + "fontinst.ins"))) + ;; Since we're using docstrip without LaTeX we can't set \UseTDS + ;; or \BaseDirectory, so the generated files are just dumped in + ;; the "build" directory. + (add-after 'install 'install-generated-files + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (root (string-append out "/share/texmf-dist"))) + (for-each (match-lambda + ((dir files ...) + (for-each (lambda (file) + (install-file + (string-append "build/" file) + (string-append root dir))) + files))) + '(("/tex/fontinst/base" + "fontinst.sty" + "cfntinst.sty" + "xfntinst.sty" + "finstmsc.sty" + "fontinst.ini") + ("/tex/fontinst/misc" + "csc2x.tex" + "csckrn2x.tex" + "osf2x.tex") + ("/tex/latex/fontinst" + "fontdoc.sty"))) + #t))))))) + (native-inputs + `(("texlive-bin" ,texlive-bin) + ("texlive-docstrip" ,texlive-docstrip))) + (home-page "https://www.ctan.org/pkg/fontinst") + (synopsis "Tools for converting and installing fonts for TeX and LaTeX") + (description "This package provides TeX macros for converting Adobe Font Metric files to TeX metric and virtual font format. Fontinst helps mainly with the number crunching and shovelling parts of font installation. This means in practice that it creates a number of files which give the TeX metrics (and related information) for a font family that TeX needs to do any typesetting in these fonts.") - (license license:lppl1.1+))) + (license license:lppl1.1+)))) + +(define-public texlive-tex-fontinst-base + (deprecated-package "texlive-tex-fontinst-base" texlive-fontinst)) (define-public texlive-fontname (package - (name "texlive-fontname") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/map/fontname")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "05rbn7z30xawd3n6w7c3ijp2yc67ga220jgqmkla9pd9wx185rzq")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/fonts/map/fontname"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) + (inherit (simple-texlive-package + "texlive-fontname" + (list "/doc/fonts/fontname/fontname.texi" + "/fonts/map/fontname/") + (base32 + "0h5im5rnhycrrkd6z10f17m2caa8lv594wf482b68qjmnxfrqnxj") + #:trivial? #t)) (home-page "https://www.ctan.org/pkg/fontname") (synopsis "Scheme for naming fonts in TeX") (description "This is Fontname, a naming scheme for (the base part of) @@ -619,236 +699,134 @@ from (almost) arbitrarily complex font names, thus helping portability of TeX documents.") (license license:public-domain))) -(define-public texlive-fonts-cm - (package - (name "texlive-fonts-cm") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/source/public/cm")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0vfjhidr9pha613h8mfhnpcpvld6ahdfb449918fpsfs93cppkyj")))) - (build-system gnu-build-system) - (arguments - `(#:modules ((guix build gnu-build-system) - (guix build utils) - (srfi srfi-1) - (srfi srfi-26)) - #:tests? #f ; no tests - #:phases - (modify-phases %standard-phases - (delete 'configure) - (replace 'build - (lambda* (#:key inputs #:allow-other-keys) - (let ((mf (assoc-ref inputs "texlive-metafont-base"))) - ;; Tell mf where to find mf.base - (setenv "MFBASES" (string-append mf "/share/texmf-dist/web2c")) - ;; Tell mf where to look for source files - (setenv "MFINPUTS" - (string-append (getcwd) ":" - mf "/share/texmf-dist/metafont/base"))) - (mkdir "build") - (mkdir-p "pk/ljfour/public/cm/dpi600") - (for-each (lambda (font) - (format #t "building font ~a\n" font) - (invoke "mf" "-progname=mf" - "-output-directory=build" - (string-append "\\" - "mode:=ljfour; " - "mag:=1+0/600; " - "batchmode; " - "input " - (basename font ".mf"))) - (invoke "gftopk" - (string-append "build/" - (basename font ".mf") ".600gf") - (string-append "pk/ljfour/public/cm/dpi600/" - (basename font ".mf") ".pk"))) - (find-files "." "cm(.*[0-9]+.*|inch)\\.mf$")) - #t)) - (replace 'install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (fonts (string-append out "/share/texmf-dist/fonts/")) - (pk (string-append fonts "pk")) - (tfm (string-append fonts "tfm/public/cm")) - (mf (string-append fonts "source/public/cm")) - (type1 (string-append fonts "type1/public/amsfonts/cm"))) - (for-each (cut install-file <> tfm) - (find-files "build" "\\.*")) - (for-each (cut install-file <> mf) - (find-files "." "\\.mf")) - (copy-recursively "pk" pk) - (mkdir-p type1) - (copy-recursively (assoc-ref inputs "cm-type1") type1) - #t)))))) - (native-inputs - `(("texlive-bin" ,texlive-bin) - ("texlive-metafont-base" ,texlive-metafont-base) - ("cm-type1" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/type1/public/amsfonts/cm")) - (revision %texlive-revision))) - (file-name (string-append name "-type1-" version "-checkout")) - (sha256 - (base32 - "12jyl9jp3hidifa4l5pmi47p71d5mb5kj5rknxkygilix8yz2iy6")))))) - (home-page "https://www.ctan.org/pkg/cm") - (synopsis "Computer Modern fonts for TeX") - (description "This package provides the Computer Modern fonts by Donald +(define-public texlive-cm + (let ((template (simple-texlive-package + "texlive-cm" + (list "/fonts/source/public/cm/" + "/fonts/map/dvips/cm/cmtext-bsr-interpolated.map" + "/doc/fonts/cm/") + (base32 + "1h0q71paqmg1xjg6k35ni2i6m93kmlq9rdwm913xg9n4qngywl18") + #:trivial? #t))) + (package + (inherit template) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:modules modules '()) + '((guix build gnu-build-system) + (guix build utils) + (srfi srfi-26))) + ((#:phases phases) + `(modify-phases ,phases + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + (let ((mf (assoc-ref inputs "texlive-metafont-base"))) + ;; Tell mf where to find mf.base + (setenv "MFBASES" (string-append mf "/share/texmf-dist/web2c")) + ;; Tell mf where to look for source files + (setenv "MFINPUTS" + (string-append (getcwd) "/fonts/source/public/cm/:" + mf "/share/texmf-dist/metafont/base"))) + (for-each make-file-writable + (cons "fonts/source/public/cm/" + (find-files "fonts/source/public/cm/" ".*"))) + (let ((build (string-append (getcwd) "/build")) + (pkdir (string-append (getcwd) "/pk/ljfour/public/cm/dpi600"))) + (mkdir-p pkdir) + (mkdir-p build) + (with-directory-excursion "fonts/source/public/cm/" + (for-each (lambda (font) + (format #t "building font ~a\n" font) + (invoke "mf" "-progname=mf" + (string-append "-output-directory=" build) + (string-append "\\" + "mode:=ljfour; " + "mag:=1+0/600; " + "scrollmode; " + "input " + (basename font ".mf"))) + (invoke "gftopk" + (string-append build "/" + (basename font ".mf") ".600gf") + (string-append pkdir "/" + (basename font ".mf") ".pk"))) + (find-files "." "cm(.*[0-9]+.*|inch)\\.mf$")))) + #t)) + (add-after 'install 'install-generated-fonts + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (fonts (string-append out "/share/texmf-dist/fonts/")) + (pk (string-append fonts "pk")) + (tfm (string-append fonts "tfm/public/cm"))) + (for-each (cut install-file <> tfm) + (find-files "build" "\\.*")) + (copy-recursively "pk" pk) + #t))))))) + (native-inputs + `(("texlive-bin" ,texlive-bin) + ("texlive-metafont-base" ,texlive-metafont-base))) + (home-page "https://www.ctan.org/pkg/cm") + (synopsis "Computer Modern fonts for TeX") + (description "This package provides the Computer Modern fonts by Donald Knuth. The Computer Modern font family is a large collection of text, display, and mathematical fonts in a range of styles, based on Monotype Modern 8A.") - (license license:knuth))) + (license license:knuth)))) -(define-public texlive-fonts-cm-super - (package - (name "texlive-fonts-cm-super") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/cm-super")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0ybb4gi2rblzpb6wfzm2wk7dj3y2jnmkzsla7mz7g3zc12y4r2b9")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils) - (ice-9 match)) - #:builder - (begin - (use-modules (guix build utils) - (ice-9 match)) - (let ((root (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/")) - (pkgs '(("source" . "tex/latex/cm-super") - ("cm-super-afm" . "fonts/afm/public/cm-super") - ("cm-super-type1" . "fonts/type1/public/cm-super") - ("cm-super-enc" . "fonts/enc/dvips/cm-super") - ("cm-super-map" . "fonts/map/dvips/cm-super") - ("cm-super-vtex" . "fonts/map/vtex/cm-super")))) - (for-each (match-lambda - ((pkg . dir) - (let ((target (string-append root dir))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs pkg) - target)))) - pkgs) - #t)))) - (native-inputs - `(("cm-super-vtex" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/map/vtex/cm-super")) - (revision %texlive-revision))) - (file-name (string-append name "-map-vtex-" version "-checkout")) - (sha256 - (base32 - "14c9allsgfv6za9wznz4cxqxwz5nsmj8rnwvxams8fhs5rvglxqi")))) - ("cm-super-afm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/afm/public/cm-super")) - (revision %texlive-revision))) - (file-name (string-append name "-afm-" version "-checkout")) - (sha256 - (base32 - "048ih65f2nghdabdar2p957c4s2spgllmy2gxdscddwqpnmd26yn")))) - ("cm-super-type1" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/type1/public/cm-super")) - (revision %texlive-revision))) - (file-name (string-append name "-type1-" version "-checkout")) - (sha256 - (base32 - "1140swk3w2ka0y4zdsq6pdifrdanb281q71p5gngbbjxdxjxf4qx")))) - ("cm-super-map" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/map/dvips/cm-super")) - (revision %texlive-revision))) - (file-name (string-append name "-map-" version "-checkout")) - (sha256 - (base32 - "10r6xqbwf9wk3ylg7givwyrw1952zydc6p7fw29zjf8ijl0lndim")))) - ("cm-super-enc" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/enc/dvips/cm-super")) - (revision %texlive-revision))) - (file-name (string-append name "-enc-" version "-checkout")) - (sha256 - (base32 - "1pgksy96gfgyjxfhs2k04bgg7nr7i128y01kjcahr7n38080h4ij")))))) - (home-page "https://www.ctan.org/pkg/cm-super") - (synopsis "Computer Modern Super family of fonts") - (description "The CM-Super family provides Adobe Type 1 fonts that replace +(define-public texlive-fonts-cm + (deprecated-package "texlive-fonts-cm" texlive-cm)) + +(define-public texlive-cm-super + (let ((template (simple-texlive-package + "texlive-cm-super" + (list "/doc/fonts/cm-super/" + "/dvips/cm-super/" + "/fonts/afm/public/cm-super/" + "/fonts/enc/dvips/cm-super/" + "/fonts/map/dvips/cm-super/" + "/fonts/map/vtex/cm-super/" + "/fonts/type1/public/cm-super/" + "/tex/latex/cm-super/") + (base32 + "1k3afl0x0bqbr5mnawbnp7rr2126dwn0vwnxzibm9ggvzqilnkm6") + #:trivial? #t))) + (package + (inherit template) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:phases phases) + `(modify-phases ,phases + (delete 'reset-gzip-timestamps))))) + (home-page "https://www.ctan.org/pkg/cm-super") + (synopsis "Computer Modern Super family of fonts") + (description "The CM-Super family provides Adobe Type 1 fonts that replace the T1/TS1-encoded Computer Modern (EC/TC), T1/TS1-encoded Concrete, T1/TS1-encoded CM bright and LH Cyrillic fonts (thus supporting all European languages except Greek), and bringing many ameliorations in typesetting quality. The fonts exhibit the same metrics as the METAFONT-encoded originals.") - ;; With font exception - (license license:gpl2+))) + ;; With font exception + (license license:gpl2+)))) -(define-public texlive-fonts-lm - (package - (name "texlive-fonts-lm") - (version "2.004") - (source (origin - (method url-fetch) - (uri (string-append "http://www.gust.org.pl/projects/e-foundry/" - "latin-modern/download/lm" version "bas.zip")) - (sha256 - (base32 - "0z2s253y751m2ci5aw8nq0sf2kyg9hpimv2gyixkch9d07m2b9wp")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((root (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/"))) - (mkdir-p root) - (with-directory-excursion root - (invoke (string-append (assoc-ref %build-inputs "unzip") - "/bin/unzip") - (assoc-ref %build-inputs "source"))) - #t)))) - (native-inputs - `(("unzip" ,unzip))) +(define-public texlive-fonts-cm-super + (deprecated-package "texlive-fonts-cm-super" texlive-cm-super)) + +(define-public texlive-lm + (package + (inherit (simple-texlive-package + "texlive-lm" + (list "/doc/fonts/lm/" + "/fonts/afm/public/lm/" + "/fonts/enc/dvips/lm/" + "/fonts/map/dvipdfm/lm/" + "/fonts/map/dvips/lm/" + "/fonts/opentype/public/lm/" + "/fonts/tfm/public/lm/" + "/fonts/type1/public/lm/" + "/tex/latex/lm/") + (base32 + "0i1hwr8rp0jqyvs4qyplrirscd4w7lsgwsncyv3yzy80bsa56jq5") + #:trivial? #t)) (home-page "http://www.gust.org.pl/projects/e-foundry/latin-modern/") (synopsis "Latin Modern family of fonts") (description "The Latin Modern fonts are derived from the famous Computer @@ -859,6 +837,9 @@ Computers & Typesetting series.") ;; additional but not legally binding clause. (license license:lppl1.3c+))) +(define-public texlive-fonts-lm + (deprecated-package "texlive-fonts-lm" texlive-lm)) + (define-public texlive-fonts-knuth-lib (package (name "texlive-fonts-knuth-lib") @@ -961,7 +942,7 @@ fonts.") (setenv "MFINPUTS" (string-append (getcwd) ":" mf "/share/texmf-dist/metafont/base:" - (assoc-ref inputs "texlive-fonts-cm") + (assoc-ref inputs "texlive-cm") "/share/texmf-dist/fonts/source/public/cm"))) (mkdir "build") (for-each (lambda (font) @@ -994,7 +975,7 @@ fonts.") (native-inputs `(("texlive-bin" ,texlive-bin) ("texlive-metafont-base" ,texlive-metafont-base) - ("texlive-fonts-cm" ,texlive-fonts-cm))) + ("texlive-cm" ,texlive-cm))) (home-page "https://www.ctan.org/pkg/latex-fonts") (synopsis "Collection of fonts used in LaTeX distributions") (description "This is a collection of fonts for use with standard LaTeX @@ -1024,67 +1005,17 @@ Knuthian mflogo fonts described in The Metafontbook and to typeset Metafont logos in LaTeX documents.") (license license:lppl))) -(define-public texlive-fonts-mflogo-font +(define-public texlive-mflogo-font (package - (name "texlive-fonts-mflogo-font") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/type1/hoekwater/mflogo-font")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "09fsxfpiyxjljkrb52b197728bjnkcnv3bdwm4hl6hf23mbmqadf")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils) - (ice-9 match)) - #:builder - (begin - (use-modules (guix build utils) - (ice-9 match)) - (let ((root (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/")) - (pkgs '(("source" . "fonts/type1/hoekwater/mflogo-font") - ("afm" . "fonts/afm/hoekwater/mflogo-font") - ("fonts-map" . "fonts/map/dvips/mflogo-font")))) - (for-each (match-lambda - ((pkg . dir) - (let ((target (string-append root dir))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs pkg) - target)))) - pkgs) - #t)))) - (native-inputs - `(("afm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/afm/hoekwater/mflogo-font")) - (revision %texlive-revision))) - (file-name (string-append name "-afm-" version "-checkout")) - (sha256 - (base32 - "0bx1mfhhzsk9gj1pha36q2rk0jd0y285qm62zgvdvzzzlfnk8sdb")))) - ("fonts-map" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/map/dvips/mflogo-font/")) - (revision %texlive-revision))) - (file-name (string-append name "-fonts-map-" version "-checkout")) - (sha256 - (base32 - "044xrrpl8hnvj55cx2ql1ib1bcyr33nzanx5nkwxpai7fb7pg4y6")))))) + (inherit (simple-texlive-package + "texlive-mflogo-font" + (list "/doc/fonts/mflogo-font/README" + "/fonts/afm/hoekwater/mflogo-font/" + "/fonts/map/dvips/mflogo-font/" + "/fonts/type1/hoekwater/mflogo-font/") + (base32 + "094mknjv8ki2pvj1zin0f1z4f1w12g0cfqjiqcsawjsry4yfrmbg") + #:trivial? #t)) (home-page "https://www.ctan.org/pkg/mflogo-font") (synopsis "Metafont logo font") (description @@ -1095,198 +1026,144 @@ source; they have since been autotraced and reissued in Adobe Type 1 format by Taco Hoekwater.") (license license:knuth))) -(define-public texlive-fonts-amsfonts - (package - (name "texlive-fonts-amsfonts") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/source/public/amsfonts")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "07h20rvpbdb4k72hzmjkyb29426zr9wxsfp6yd4ajbbpd3vx8grb")))) - (build-system gnu-build-system) - (arguments - `(#:modules ((guix build gnu-build-system) - (guix build utils) - (ice-9 match) - (srfi srfi-1) - (srfi srfi-26)) - #:tests? #f ; no tests - #:phases - (modify-phases %standard-phases - (delete 'configure) - (replace 'build - (lambda* (#:key inputs #:allow-other-keys) - (let ((mf (assoc-ref inputs "texlive-union")) - (cwd (getcwd))) - ;; Make METAFONT reproducible - (setenv "SOURCE_DATE_EPOCH" "1") - ;; Tell mf where to find mf.base - (setenv "MFBASES" (string-append mf "/share/texmf-dist/web2c")) - ;; Tell mf where to look for source files - (setenv "MFINPUTS" - (string-append cwd ":" - cwd "/cmextra:" - cwd "/cyrillic:" - cwd "/dummy:" - cwd "/symbols:" - mf "/share/texmf-dist/metafont/base:" - (assoc-ref inputs "texlive-fonts-cm") - "/share/texmf-dist/fonts/source/public/cm"))) - (mkdir "build") - (for-each (lambda (font) - (format #t "building font ~a\n" (basename font ".mf")) - (with-directory-excursion (dirname font) - (invoke "mf" "-progname=mf" - "-output-directory=../build" - (string-append "\\" - "mode:=ljfour; " - "mag:=1; " - "nonstopmode; " - "input " - (getcwd) "/" - (basename font ".mf"))))) - (find-files "." "[0-9]+\\.mf$")) - - ;; There are no metafont sources for the Euler fonts, so we - ;; convert the afm files instead. - (mkdir "build/euler") - (for-each (lambda (font) - (format #t "converting afm font ~a\n" (basename font ".afm")) - (invoke "afm2tfm" font - (string-append "build/euler/" - (basename font ".tfm")))) - (find-files (assoc-ref inputs "amsfonts-afm") - "\\.afm$")) - - ;; Frustratingly, not all fonts can be created this way. To - ;; generate eufm8.tfm, for example, we first scale down - ;; eufm10.afm to eufm8.pl, and then generate the tfm file from - ;; the pl file. - (with-directory-excursion "build/euler" - (setenv "TEXINPUTS" - (string-append (getcwd) "//:" - (assoc-ref inputs "amsfonts-afm") "//:" - (assoc-ref inputs "texlive-union") "//")) - (for-each (match-lambda - (((target-base target-size) - (source-base source-size)) - (let ((factor (number->string - (truncate/ (* 1000 target-size) - source-size)))) - (invoke "tex" - "-interaction=scrollmode" - (string-append "\\input fontinst.sty " - "\\transformfont{" target-base "}" - "{\\scalefont{" factor "}" - "{\\fromafm{" source-base "}}} " - "\\bye"))) - (invoke "pltotf" - (string-append target-base ".pl") - (string-append target-base ".tfm")) - (delete-file (string-append target-base ".pl")))) - - '((("eufm8" 8) ("eufm10" 10)) - - (("eufb6" 6) ("eufb7" 7)) - (("eufb8" 8) ("eufb10" 10)) - (("eufb9" 9) ("eufb10" 10)) - - (("eufm6" 6) ("eufb7" 7)) - (("eufm9" 9) ("eufb10" 10)) - - (("eurb6" 6) ("eurb7" 7)) - (("eurb8" 8) ("eurb10" 10)) - (("eurb9" 9) ("eurb10" 10)) - - (("eurm6" 6) ("eurm7" 7)) - (("eurm8" 8) ("eurm10" 10)) - (("eurm9" 9) ("eurm10" 10))))) - #t)) - (replace 'install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (root (string-append out "/share/texmf-dist/fonts/")) - (pkgs '(("amsfonts-afm" . "afm/public/amsfonts") - ("amsfonts-type1" . "type1/public/amsfonts") - ("amsfonts-map" . "map/dvips/amsfonts")))) - (for-each (match-lambda - ((pkg . dir) - (let ((target (string-append root dir))) - (mkdir-p target) - (copy-recursively (assoc-ref inputs pkg) - target)))) - pkgs) - (copy-recursively (assoc-ref inputs "amsfonts-plain") - (string-append out "/share/texmf-dist/tex/plain/amsfonts")) - (let* ((tfm (string-append root "tfm/public/amsfonts")) - (mf (string-append root "source/public/amsfonts"))) - (copy-recursively "build" tfm) - (for-each (cut install-file <> mf) - (find-files "." "\\.mf")) - #t))))))) - (native-inputs - `(("texlive-union" ,(texlive-union (list texlive-tex-fontinst-base - texlive-fonts-cm - texlive-metafont-base))) - ("amsfonts-plain" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/plain/amsfonts")) - (revision %texlive-revision))) - (file-name (string-append name "-plain-" version "-checkout")) - (sha256 - (base32 - "1hi8c9rkfb6395sxf7fhkr91xygfg8am1hqij9g3h2c7qx3714qp")))) - ("amsfonts-map" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/map/dvips/amsfonts")) - (revision %texlive-revision))) - (file-name (string-append name "-map-" version "-checkout")) - (sha256 - (base32 - "1lrj3bd9ybj4aawzlygc6qvakbrwc5s0mc5n9rpic331frv3axfs")))) - ("amsfonts-type1" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/type1/public/amsfonts")) - (revision %texlive-revision))) - (file-name (string-append name "-type1-" version "-checkout")) - (sha256 - (base32 - "1zfz33vn6gm19njy74n8wmn7sljrimfhwns5z8qqhxqfh1g4qip2")))) - ("amsfonts-afm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/afm/public/amsfonts")) - (revision %texlive-revision))) - (file-name (string-append name "-afm-" version "-checkout")) - (sha256 - (base32 - "1fifzkaihmjgchnk7dmw0c23k0cz999dxnc78ivmqvgi1dhx0iv8")))))) - (home-page "https://www.ctan.org/pkg/amsfonts") - (synopsis "TeX fonts from the American Mathematical Society") - (description - "This package provides an extended set of fonts for use in mathematics, +(define-public texlive-fonts-mflogo-font + (deprecated-package "texlive-fonts-mflogo-font" texlive-mflogo-font)) + +(define-public texlive-amsfonts + (let ((template (simple-texlive-package + "texlive-amsfonts" + (list "/source/latex/amsfonts/" + "/fonts/source/public/amsfonts/" + "/fonts/type1/public/amsfonts/" + "/fonts/afm/public/amsfonts/" + "/fonts/map/dvips/amsfonts/" + "/tex/plain/amsfonts/" + "/doc/fonts/amsfonts/") + (base32 + "15q70nkjf8wqzbd5ivcdx3i2sdgqxjb38q0qn9a2qw9i0qcnx6zw")))) + (package + (inherit template) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:build-targets _ #t) + '(list "amsfonts.ins")) + ((#:tex-directory _ #t) + "latex/amsfonts") + ((#:modules modules '()) + `((guix build texlive-build-system) + (guix build utils) + (ice-9 match) + (srfi srfi-1) + (srfi srfi-26))) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'build 'build-fonts + (lambda* (#:key inputs #:allow-other-keys) + (let ((mf (assoc-ref inputs "texlive-union")) + (src (string-append (getcwd) "/fonts/source/public/amsfonts/"))) + ;; Make METAFONT reproducible + (setenv "SOURCE_DATE_EPOCH" "1") + ;; Tell mf where to find mf.base + (setenv "MFBASES" (string-append mf "/share/texmf-dist/web2c")) + ;; Tell mf where to look for source files + (setenv "MFINPUTS" + (string-append src ":" + src "/cmextra:" + src "/cyrillic:" + src "/dummy:" + src "/symbols:" + mf "/share/texmf-dist/metafont/base:" + (assoc-ref inputs "texlive-cm") + "/share/texmf-dist/fonts/source/public/cm"))) + (let ((build (string-append (getcwd) "/build-fonts"))) + (mkdir-p build) + (with-directory-excursion "fonts/source/public/amsfonts" + (for-each (lambda (font) + (format #t "building font ~a\n" (basename font ".mf")) + (with-directory-excursion (dirname font) + (invoke "mf" "-progname=mf" + (string-append "-output-directory=" build) + (string-append "\\" + "mode:=ljfour; " + "mag:=1; " + "nonstopmode; " + "input " + (getcwd) "/" + (basename font ".mf"))))) + (find-files "." "[0-9]+\\.mf$")))) + + ;; There are no metafont sources for the Euler fonts, so we + ;; convert the afm files instead. + (let ((build (string-append (getcwd) "/build-fonts/euler"))) + (mkdir build) + (with-directory-excursion "fonts/afm/public/amsfonts/" + (for-each (lambda (font) + (format #t "converting afm font ~a\n" (basename font ".afm")) + (invoke "afm2tfm" font + (string-append build "/" + (basename font ".tfm")))) + (find-files "." "\\.afm$"))) + + ;; Frustratingly, not all fonts can be created this way. To + ;; generate eufm8.tfm, for example, we first scale down + ;; eufm10.afm to eufm8.pl, and then generate the tfm file from + ;; the pl file. + (setenv "TEXINPUTS" + (string-append build "//:" + (getcwd) "/fonts/afm/public/amsfonts//:" + (getcwd) "/source/latex/amsfonts//:" + (assoc-ref inputs "texlive-union") "//")) + (with-directory-excursion build + (for-each (match-lambda + (((target-base target-size) + (source-base source-size)) + (let ((factor (number->string + (truncate/ (* 1000 target-size) + source-size)))) + (invoke "tex" + "-interaction=scrollmode" + (string-append "\\input fontinst.sty " + "\\transformfont{" target-base "}" + "{\\scalefont{" factor "}" + "{\\fromafm{" source-base "}}} " + "\\bye"))) + (invoke "pltotf" + (string-append target-base ".pl") + (string-append target-base ".tfm")) + (delete-file (string-append target-base ".pl")))) + + '((("eufm8" 8) ("eufm10" 10)) + + (("eufb6" 6) ("eufb7" 7)) + (("eufb8" 8) ("eufb10" 10)) + (("eufb9" 9) ("eufb10" 10)) + + (("eufm6" 6) ("eufb7" 7)) + (("eufm9" 9) ("eufb10" 10)) + + (("eurb6" 6) ("eurb7" 7)) + (("eurb8" 8) ("eurb10" 10)) + (("eurb9" 9) ("eurb10" 10)) + + (("eurm6" 6) ("eurm7" 7)) + (("eurm8" 8) ("eurm10" 10)) + (("eurm9" 9) ("eurm10" 10)))))) + #t)) + (add-after 'install 'install-generated-fonts + (lambda* (#:key inputs outputs #:allow-other-keys) + (copy-recursively "build-fonts" + (string-append + (assoc-ref outputs "out") + "/share/texmf-dist/fonts/tfm/public/amsfonts")) + #t)))))) + (native-inputs + `(("texlive-union" ,(texlive-union (list texlive-tex-fontinst-base + texlive-cm + texlive-metafont-base))))) + (home-page "https://www.ctan.org/pkg/amsfonts") + (synopsis "TeX fonts from the American Mathematical Society") + (description + "This package provides an extended set of fonts for use in mathematics, including: extra mathematical symbols; blackboard bold letters (uppercase only); fraktur letters; subscript sizes of bold math italic and bold Greek letters; subscript sizes of large symbols such as sum and product; added sizes @@ -1296,249 +1173,1549 @@ files, and all except the Euler fonts are provided as Metafont source. The distribution also includes the canonical Type 1 versions of the Computer Modern family of fonts. The Euler fonts are supported by separate packages; details can be found in the documentation.") - (license license:silofl1.1))) + (license license:silofl1.1)))) + +(define-public texlive-fonts-amsfonts + (deprecated-package "texlive-fonts-amsfonts" texlive-amsfonts)) (define-public texlive-latex-amsfonts + (deprecated-package "texlive-latex-amsfonts" texlive-amsfonts)) + +(define-public texlive-mkpattern (package - (name "texlive-latex-amsfonts") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (texlive-ref "latex" "amsfonts")) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0slzfv5h2m03b2xvm2sasznz4azh6rgi069z161dja3l8rln79hm")))) - (build-system texlive-build-system) - (arguments '(#:tex-directory "latex/amsfonts")) - (native-inputs - `(("texlive-fonts-cm" ,texlive-fonts-cm) - ("texlive-metafont-base" ,texlive-metafont-base))) - (home-page "https://www.ctan.org/pkg/amsfonts") - (synopsis "TeX fonts from the American Mathematical Society") - (description - "This package provides basic LaTeX support for the symbol fonts provides -by the amsfonts package. It provides @code{amsfonts.sty}, with names of -individual symbols defined in @code{amssymb.sty}.") - (license license:silofl1.1))) + (inherit (simple-texlive-package + "texlive-mkpattern" + (list "/doc/plain/mkpattern/README" + "/doc/plain/mkpattern/mkpatdoc.tex" + "/doc/plain/mkpattern/mkpatter.pdf" + "/doc/plain/mkpattern/mkpattern-exmpl.tex" + "/tex/plain/mkpattern/mkpatter.tex") + (base32 + "0sxnkbcc802jl3fj56x9hvg978bpv15lhrwj0aykb4syq29l47ga") + #:trivial? #t)) + (home-page "https://ctan.org/pkg/mkpattern") + (synopsis "Utility for making hyphenation patterns") + (description "Mkpattern is a general purpose program for the generation of +hyphenation patterns, with definition of letter sets and template-like +constructions. It also provides an easy way to handle different input and +output encodings, and features generation of clean UTF-8 patterns.") + (license license:lppl))) ;; This provides etex.src which is needed to build various formats, including ;; luatex.fmt and pdflatex.fmt +(define-public texlive-etex + (let ((template (simple-texlive-package + "texlive-etex" + (list "/doc/etex/base/" + "/doc/man/man1/etex.1" + "/doc/man/man1/etex.man1.pdf" + "/tex/plain/etex/" + "/fonts/source/public/etex/") + (base32 + "1qv6vxm5a8pw38gas3i69ivmsn79zj2yq5n5vdmh0rzic5hw2hmc") + #:trivial? #t))) + (package + (inherit template) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:phases phases) + `(modify-phases ,phases + ;; Build tfm font. + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + (let ((mf (assoc-ref inputs "texlive-metafont-base"))) + ;; Tell mf where to find mf.base + (setenv "MFBASES" (string-append mf "/share/texmf-dist/web2c")) + ;; Tell mf where to look for source files + (setenv "MFINPUTS" + (string-append (getcwd) + "/fonts/source/public/etex/:" + mf "/share/texmf-dist/metafont/base:" + (assoc-ref inputs "texlive-cm") + "/share/texmf-dist/fonts/source/public/cm"))) + (invoke "mf" "-progname=mf" + (string-append "\\" + "mode:=ljfour; " + "mag:=1; " + "scrollmode; " + "input xbmc10")) + #t)) + (add-after 'install 'install-font + (lambda* (#:key outputs #:allow-other-keys) + (install-file + "xbmc10.tfm" + (string-append (assoc-ref outputs "out") + "/share/texmf-dist/fonts/tfm/public/etex/")) + #t)))))) + (native-inputs + `(("texlive-bin" ,texlive-bin) + ("texlive-metafont-base" ,texlive-metafont-base) + ("texlive-cm" ,texlive-cm))) + (home-page "https://www.ctan.org/pkg/etex") + (synopsis "Extended version of TeX") + (description + "This package provides an extended version of TeX (which is capable of +running as if it were TeX unmodified). E-TeX has been specified by the LaTeX +team as the engine for the development of LaTeX2e; as a result, LaTeX +programmers may assume e-TeX functionality. The pdftex engine directly +incorporates the e-TeX extensions.") + (license license:knuth)))) + (define-public texlive-tex-plain (package - (name "texlive-tex-plain") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/plain")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1xknlb3gcw6jjqh97bhghxi594bzpj1zfzzfsrr9pvr9s1bx7dnf")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/plain"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) + (inherit (simple-texlive-package + "texlive-tex-plain" + (list "/tex/plain/") + (base32 + "1rrfay4d7lbyj02wlf23mwvbpjd160nwlgryx97hq1vb7dva4swr") + #:trivial? #t)) (home-page "https://www.ctan.org/pkg/plain") (synopsis "Plain TeX format and supporting files") (description - "Contains files used to build the Plain TeX format, as described in the -TeXbook, together with various supporting files (some also discussed in the -book).") + "This package contains files used to build the Plain TeX format, as +described in the TeXbook, together with various supporting files (some also +discussed in the book).") (license license:knuth))) -(define-public texlive-latex-base - (let ((texlive-dir - (lambda (dir hash) - (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - dir)) - (revision %texlive-revision))) - (file-name (string-append "texlive-generic-" - (last (string-split - (string-drop-right dir 1) #\/)) - "-" (number->string %texlive-revision) - "-checkout")) - (sha256 (base32 hash)))))) +(define-public texlive-hyphen-afrikaans + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-afrikaans" "af" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-af.tex") + (base32 + "1vb3jccqnn1pm0680yqx52kvz595fmxnwa0cbf8qman6zglsssiw"))) + (synopsis "Hyphenation patterns for Afrikaans") + (description "The package provides hyphenation patterns for the Afrikaans +language.") + (license license:lppl1.3+))) + +(define-public texlive-hyphen-ancientgreek + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-ancientgreek" "grc" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-grc.tex" + "/tex/generic/hyphen/grahyph5.tex" + "/tex/generic/hyphen/ibyhyph.tex") + (base32 + "0kwrqsz7wdr1d9kylzwp60ka3wfbj8iad029k5h6y94nb86mf7zv"))) + (synopsis "Hyphenation patterns for ancient Greek") + (description "The package provides hyphenation patterns for ancient +Greek.") + (license license:lppl1.3+))) + +(define-public texlive-hyphen-armenian + (let ((template (texlive-hyphen-package + "texlive-hyphen-armenian" "hy" + (list "/source/generic/hyph-utf8/languages/hy/generate_patterns_hy.rb") + (base32 + "0z666y580w1kpxssdanz67ykq257lf11a1mnp1jrn08zijvfrw9c")))) (package - (name "texlive-latex-base") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (texlive-ref "latex" "base")) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "17bqrzzjz16k52sc7ydl4vw7ddy2z3g0p1xsk2c35h1ynq9h3wwm")))) - (build-system gnu-build-system) + (inherit template) (arguments - `(#:modules ((guix build gnu-build-system) - (guix build utils) - (ice-9 match) - (srfi srfi-1) - (srfi srfi-26)) - #:tests? #f ; no tests - #:phases - (modify-phases %standard-phases - (delete 'configure) - (replace 'build - (lambda* (#:key inputs #:allow-other-keys) - ;; Find required fonts - (setenv "TFMFONTS" - (string-append (assoc-ref inputs "texlive-fonts-cm") - "/share/texmf-dist/fonts/tfm/public/cm:" - (assoc-ref inputs "texlive-fonts-latex") - "/share/texmf-dist/fonts/tfm/public/latex-fonts:" - (assoc-ref inputs "texlive-fonts-knuth-lib") - "/share/texmf-dist/fonts/tfm/public/knuth-lib")) - (setenv "TEXINPUTS" - (string-append - (getcwd) ":" - (getcwd) "/build:" - (string-join - (map (match-lambda ((_ . dir) dir)) inputs) - "//:"))) + (substitute-keyword-arguments (package-arguments template) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'build 'build-patterns + (lambda _ + (let ((target (string-append (getcwd) + "/tex/generic/hyph-utf8/patterns/tex"))) + (mkdir-p target) + (with-directory-excursion "source/generic/hyph-utf8/languages/hy/" + (substitute* "generate_patterns_hy.rb" + (("\\$file = File.new.*") + (string-append "$file = File.new(\"" target + "/hyph-hy.tex\",\"w\")\n"))) + (invoke "ruby" "generate_patterns_hy.rb")) + #t))) + (add-after 'install 'install-hyph-hy.tex + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (target (string-append out "/share/texmf-dist/tex"))) + (copy-recursively "tex" target) + #t))))))) + (synopsis "Hyphenation patterns for Armenian") + (description "The package provides hyphenation patterns for the Armenian +language.") + ;; Any version of the LGPL. + (license license:lgpl3+)))) + +(define-public texlive-hyphen-basque + (let ((template (texlive-hyphen-package + "texlive-hyphen-basque" "eu" + (list "/source/generic/hyph-utf8/languages/eu/generate_patterns_eu.rb") + (base32 + "1yhsbzf1g9dm70jfixsz51hsfvn26cwfkfxvhg7xv2piynr4v51l")))) + (package + (inherit template) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'build 'build-patterns + (lambda _ + (let ((target (string-append (getcwd) + "/tex/generic/hyph-utf8/patterns/tex"))) + (mkdir-p target) + (with-directory-excursion "source/generic/hyph-utf8/languages/eu/" + (substitute* "generate_patterns_eu.rb" + (("\\$file = File.new.*") + (string-append "$file = File.new(\"" target + "/hyph-eu.tex\",\"w\")\n"))) + (invoke "ruby" "generate_patterns_eu.rb")) + #t))) + (add-after 'install 'install-hyph-eu.tex + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (target (string-append out "/share/texmf-dist/tex"))) + (copy-recursively "tex" target) + #t))))))) + (synopsis "Hyphenation patterns for Basque") + (description "The package provides hyphenation patterns for the Basque +language.") + ;; "Free for any purpose". + (license (license:fsf-free + "/source/generic/hyph-utf8/languages/eu/generate_patterns_eu.rb"))))) + +(define-public texlive-hyphen-belarusian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-belarusian" "be" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-be.tex") + (base32 + "1xvffph824rg43gi2xs3ny9gzlp708fyxj9zfhckmg8pzh9vv3n6"))) + (synopsis "Hyphenation patterns for Belarusian") + (description "The package provides hyphenation patterns for the Belarusian +language.") + (license license:expat))) + +(define-public texlive-hyphen-bulgarian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-bulgarian" "bg" + (list "/doc/generic/hyph-utf8/bg/azbukaExtended.pdf" + "/doc/generic/hyph-utf8/bg/azbukaExtended.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-bg.tex") + (base32 + "06dxkk9azsggbri04i6g62lswygzadsx3rpqvbyzvbxc5wxz1dj1"))) + (synopsis "Hyphenation patterns for Bulgarian") + (description "The package provides hyphenation patterns for the Bulgarian +language in T2A and UTF-8 encodings.") + (license (license:non-copyleft + "file:///tex/generic/hyph-utf8/patterns/tex/hyph-bg.tex" + "Ancestral BSD variant")))) + +(define-public texlive-hyphen-catalan + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-catalan" "ca" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ca.tex") + (base32 + "0cisx76jpw8kpd3an37m9h8ppiysnizgfzl48y9d9n3fvx8jyykb"))) + (synopsis "Hyphenation patterns for Catalan") + (description "The package provides hyphenation patterns for Catalan in +T1/EC and UTF-8 encodings.") + (license license:lppl1.0+))) - ;; Create an empty texsys.cfg, because latex.ltx wants to include - ;; it. This file must exist and it's fine if it's empty. - (with-output-to-file "texsys.cfg" - (lambda _ (format #t "%"))) +(define-public texlive-hyphen-chinese + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-chinese" "zh-latn-pinyin" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-zh-latn-pinyin.tex") + (base32 + "07gbrn5fcl5d3hyg1zpai3zp1ggl73cmvpalwvh7ah313f57gjkk"))) + (synopsis "Hyphenation patterns for unaccented Chinese pinyin") + (description "The package provides hyphenation patterns for unaccented +Chinese pinyin T1/EC and UTF-8 encodings.") + (license license:gpl2+))) - (mkdir "build") - (mkdir "web2c") - (invoke "luatex" "-ini" "-interaction=batchmode" - "-output-directory=build" "unpack.ins") - (invoke "tex" "-ini" "-interaction=batchmode" - "-output-directory=web2c" "tex.ini") - ;; LaTeX, pdfetex/pdftex, and XeTeX require e-TeX, which - ;; is enabled only in extended mode (activated with a - ;; leading asterisk). We should not use luatex here, - ;; because that would make the generated format files - ;; incompatible with any other TeX engine. - (for-each (lambda (format) - (invoke "latex" "-ini" "-interaction=batchmode" - "-output-directory=web2c" - "-translate-file=cp227.tcx" - (string-append "*" format ".ini"))) - '("latex" - "pdflatex" - "pdfetex")) - (for-each (lambda (format) - (invoke format "-ini" "-interaction=batchmode" - "-output-directory=web2c" - (string-append "*" format ".ini"))) - '("xetex" - "xelatex")) - (for-each (lambda (format) - (invoke "luatex" "-ini" "-interaction=batchmode" - "-output-directory=web2c" - (string-append format ".ini"))) - '("dviluatex" "dvilualatex" "luatex" "lualatex")) - #t)) - (replace 'install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (target (string-append - out "/share/texmf-dist/tex/latex/base")) - (web2c (string-append - out "/share/texmf-dist/web2c")) - (support-files (assoc-ref inputs "texlive-latex-base-support-files"))) - (mkdir-p target) - (mkdir-p web2c) - (for-each delete-file (find-files "." "\\.(log|aux)$")) - (for-each (cut install-file <> target) - (find-files "build" ".*")) - (for-each (cut install-file <> web2c) - (find-files "web2c" ".*")) - ;; pdftex is really just the same as pdfetex, but since it - ;; doesn't have its own format file, we need to copy it. - (copy-file "web2c/pdfetex.fmt" - (string-append web2c "/pdftex.fmt")) - ;; "source" is missing the support files as per doc/latex/base/manifest.txt. - ;; FIXME: We are probably not packaging this right. - (for-each (lambda (file) - (install-file - (string-append support-files "/" file) - target)) - '("ltxguide.cls" "ltnews.cls" "minimal.cls" "idx.tex" - "lablst.tex" "testpage.tex" "ltxcheck.tex")) - ;; Install configurations - (copy-recursively - (assoc-ref inputs "texlive-latex-latexconfig") - (string-append out "/share/texmf-dist/tex/latex/latexconfig")) - (copy-recursively - (assoc-ref inputs "texlive-generic-config") - (string-append out "/share/texmf-dist/tex/generic/config")) - (copy-recursively - (assoc-ref inputs "texlive-generic-hyphen") - (string-append out "/share/texmf-dist/tex/generic/hyphen")) - (copy-recursively - (assoc-ref inputs "texlive-generic-ruhyphen") - (string-append out "/share/texmf-dist/tex/generic/ruhyphen")) - (copy-recursively - (assoc-ref inputs "texlive-generic-ukrhyph") - (string-append out "/share/texmf-dist/tex/generic/ukrhyph")) - #t)))))) +(define-public texlive-hyphen-churchslavonic + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-churchslavonic" "cu" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-cu.tex") + (base32 + "0xkqlz3ixyl4fxsnzrbxqrb82p0n67rhgpddbiyv3qwfnbr2b5a4"))) + (synopsis "Hyphenation patterns for Church Slavonic") + (description "The package provides hyphenation patterns for Church +Slavonic in UTF-8 encoding.") + (license license:expat))) + +(define-public texlive-hyphen-coptic + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-coptic" "cop" + (list "/tex/generic/hyph-utf8/patterns/tex-8bit/copthyph.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-cop.tex") + (base32 + "07i03jpdfy4ip7zbg4gnk4hk8zwj8rlni9dgrb1p8mfw2w19d80c"))) + (synopsis "Hyphenation patterns for Coptic") + (description "The package provides hyphenation patterns for Coptic in +UTF-8 encoding as well as in ASCII-based encoding for 8-bit engines.") + ;; No explicit license declaration, so we use the project license. + (license license:lppl))) + +(define-public texlive-hyphen-croatian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-croatian" "hr" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-hr.tex") + (base32 + "129nz2nqilyq2477n2clx20xfbxh1qxm69zg4n2f6c4d4a8711nc"))) + (synopsis "Hyphenation patterns for Croatian") + (description "The package provides hyphenation patterns for Croatian in +T1/EC and UTF-8 encodings.") + (license license:lppl1.0+))) + +(define-public texlive-hyphen-czech + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-czech" "cs" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-cs.tex") + (base32 + "1k5516gbfp1d5p97j247byag9sdgds5zwc11bwxfk58i6zq1v0m6"))) + (synopsis "Hyphenation patterns for Czech") + (description "The package provides hyphenation patterns for Czech in T1/EC +and UTF-8 encodings.") + (license license:gpl2+))) + +(define-public texlive-hyphen-danish + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-danish" "da" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-da.tex") + (base32 + "0zxzs1b1723mav76i0wiyq4w82x8715cykvwa2bc60ldc2amv0vs"))) + (synopsis "Hyphenation patterns for Danish") + (description "The package provides hyphenation patterns for Danish in +T1/EC and UTF-8 encodings.") + ;; Either LPPL 1.3 or later, or Expat + (license (list license:lppl1.3+ license:expat)))) + +(define-public texlive-hyphen-dutch + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-dutch" "nl" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-nl.tex") + (base32 + "0cq46cmgjc4y2x0xs9b0a5zca3jmszv4rkzmrhgjb5z2nm3xkrpi"))) + (synopsis "Hyphenation patterns for Dutch") + (description "The package provides hyphenation patterns for Dutch in T1/EC +and UTF-8 encodings.") + (license license:lppl1.0+))) + +(define-public texlive-hyphen-english + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-english" '("en-gb" "en-us") + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-en-gb.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-en-us.tex") + (base32 + "08hyih8hn2w2q12gc4zygz0ckbz00mkzzn9898z2bicky02zg3kc"))) + (synopsis "Hyphenation patterns for American and British English") + (description "The package provides additional hyphenation patterns for +American and British English in ASCII encoding.") + (license (license:non-copyleft + "file:///tex/generic/hyph-utf8/patterns/tex/hyph-en-us.tex" + "FSF all permissive license")))) + +(define-public texlive-hyphen-esperanto + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-esperanto" "eo" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-eo.tex") + (base32 + "03xbjbzasznsyf4wd45bya6f4snfmzpdzg5zpvqj5q6gjykdg54k"))) + (synopsis "Hyphenation patterns for Esperanto") + (description "The package provides hyphenation patterns for Esperanto ISO +Latin 3 and UTF-8 encodings.") + (license license:lppl1.0+))) + +(define-public texlive-hyphen-estonian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-estonian" "et" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-et.tex") + (base32 + "0idl6xajkkgxqngjn19jcfd29is5rhfn59v0z8h4sv8yjv6k934m"))) + (synopsis "Hyphenation patterns for Estonian") + (description "The package provides hyphenation patterns for Estonian in +T1/EC and UTF-8 encodings.") + ;; Dual licensed under either license. + (license (list license:lppl1.3+ license:expat)))) + +(define-public texlive-hyphen-ethiopic + (let ((template (texlive-hyphen-package + "texlive-hyphen-ethiopic" "mul-ethi" + (list "/source/generic/hyph-utf8/languages/mul-ethi/generate_patterns_mul-ethi.lua") + (base32 + "1dp5qn1mhv62kj27lqc7s0ca65z9bziyavkvif9ds5ivk7aq9drw")))) + (package + (inherit template) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'build 'build-patterns + (lambda* (#:key inputs #:allow-other-keys) + (let ((tex (string-append (getcwd) + "/tex/generic/hyph-utf8/patterns/tex/"))) + (mkdir-p tex) + (with-directory-excursion "source/generic/hyph-utf8/languages/mul-ethi/" + (substitute* "generate_patterns_mul-ethi.lua" + (("\"UnicodeData.txt\"") + (string-append "\"" + (assoc-ref inputs "UnicodeData.txt") + "\""))) + (invoke "texlua" "generate_patterns_mul-ethi.lua") + (rename-file "hyph-mul-ethi.tex" + (string-append tex "/hyph-mul-ethi.tex")) + #t)))) + (add-after 'install 'install-hyph-mul-ethi.tex + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (target (string-append out "/share/texmf-dist/tex"))) + (copy-recursively "tex" target) + #t))))))) (native-inputs - `(("texlive-bin" ,texlive-bin) - ("texlive-generic-unicode-data" ,texlive-generic-unicode-data) - ("texlive-generic-dehyph-exptl" ,texlive-generic-dehyph-exptl) - ("texlive-generic-tex-ini-files" ,texlive-generic-tex-ini-files) - ("texlive-latex-latexconfig" - ,(texlive-dir "tex/latex/latexconfig/" - "1zb3j49cj8p75yph6c8iysjp7qbdvghwf0mn9j0l7qq3qkbz2xaf")) - ("texlive-generic-hyphen" - ,(texlive-dir "tex/generic/hyphen/" - "0xim36wybw2625yd0zwlp9m2c2xrcybw58gl4rih9nkph0wqwwhd")) - ("texlive-generic-ruhyphen" - ,(texlive-dir "tex/generic/ruhyphen/" - "14rjkpl4zkjqs13rcf9kcd24mn2kx7i1jbdwxq8ds94bi66ylzsd")) - ("texlive-generic-ukrhyph" - ,(texlive-dir "tex/generic/ukrhyph/" - "1cfwdg2rhbayl3w0x1xqd36d45zbc96f029myp13s7cb6kbmbppv")) - ("texlive-generic-config" - ,(texlive-dir "tex/generic/config/" - "1v90iihy112q93zdpblpdk8zv8rf99fgslsg06s1sxm27zjm9nap")) - ("texlive-latex-base-support-files" + `(,@(package-native-inputs template) + ("texlive-bin" ,texlive-bin) + ("UnicodeData.txt" ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/base")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) + (method url-fetch) + (uri (string-append "http://www.unicode.org/Public/10.0.0/ucd/" + "UnicodeData.txt")) (sha256 (base32 - "18wy8dlcw8adl6jzqwbg54pdwlhs8hilnfvqbw6ikj6y3zhqkj7q")))) - ("texlive-tex-plain" ,texlive-tex-plain) - ("texlive-fonts-cm" ,texlive-fonts-cm) - ("texlive-fonts-latex" ,texlive-fonts-latex) - ("texlive-fonts-knuth-lib" ,texlive-fonts-knuth-lib))) - (propagated-inputs - `(("texlive-generic-hyph-utf8" ,texlive-generic-hyph-utf8))) - (home-page "https://www.ctan.org/pkg/latex-base") - (synopsis "Base sources of LaTeX") - (description - "This bundle comprises the source of LaTeX itself, together with several + "1cfak1j753zcrbgixwgppyxhm4w8vda8vxhqymi7n5ljfi6kwhjj")))))) + (synopsis "Hyphenation patterns for Ethiopic scripts") + (description "The package provides hyphenation patterns for languages +written using the Ethiopic script for Unicode engines. They are not supposed +to be linguistically relevant in all cases and should, for proper typography, +be replaced by files tailored to individual languages.") + (license license:lppl)))) + +(define-public texlive-hyphen-finnish + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-finnish" "fi" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-fi.tex") + (base32 + "03n6s8dwwa5vfk9bbyhcdf7p0bc0d1rrr312hpgbz8jfc9fbgd7n"))) + (synopsis "Hyphenation patterns for Finnish") + (description "The package provides hyphenation patterns for Finnish in +T1/EC and UTF-8 encodings.") + (license license:public-domain))) + +(define-public texlive-hyphen-french + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-french" "fr" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-fr.tex") + (base32 + "1q82mmwvy7fdkm42958ajb53w89qkcdwybswxlwcvqngvhpy3zf0"))) + (synopsis "Hyphenation patterns for French") + (description "The package provides hyphenation patterns for French in +T1/EC and UTF-8 encodings.") + (license license:expat))) + +(define-public texlive-hyphen-friulan + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-friulan" "fur" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-fur.tex") + (base32 + "07m975p0ghzs9sjqqgxy7qdkqmgvg4rx4xp08zwm1parqsdlwd5d"))) + (synopsis "Hyphenation patterns for Friulan") + (description "The package provides hyphenation patterns for Friulan in +ASCII encodings.") + (license license:lppl1.3+))) + +(define-public texlive-hyphen-galician + (let ((template (texlive-hyphen-package + "texlive-hyphen-galician" "gl" + (list "/source/generic/hyph-utf8/languages/gl/README" + "/source/generic/hyph-utf8/languages/gl/glhybiox.tex" + "/source/generic/hyph-utf8/languages/gl/glhyextr.tex" + "/source/generic/hyph-utf8/languages/gl/glhymed.tex" + "/source/generic/hyph-utf8/languages/gl/glhyquim.tex" + "/source/generic/hyph-utf8/languages/gl/glhytec.tex" + "/source/generic/hyph-utf8/languages/gl/glhyxeog.tex" + "/source/generic/hyph-utf8/languages/gl/glpatter-utf8.tex") + (base32 + "1yj1gxhkqqlyaand5gd6ij6xwffskryzlbcigdam3871a9p8x18w")))) + (package + (inherit template) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'build 'build-patterns + (lambda* (#:key inputs #:allow-other-keys) + (let ((tex (string-append (getcwd) + "/tex/generic/hyph-utf8/patterns/tex/"))) + (mkdir-p tex) + (with-directory-excursion "source/generic/hyph-utf8/languages/gl/" + (setenv "TEXINPUTS" + (string-append (getcwd) "//:" + (assoc-ref inputs "texlive-mkpattern") "//")) + (invoke "tex" "-ini" "-8bit" "glpatter-utf8.tex") + (rename-file "hyph-gl.tex" + (string-append tex "/hyph-gl.tex")) + #t)))) + (add-after 'install 'install-hyph-gl.tex + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (target (string-append out "/share/texmf-dist/tex"))) + (copy-recursively "tex" target) + #t))))))) + (native-inputs + `(,@(package-native-inputs template) + ("texlive-bin" ,texlive-bin) + ("texlive-mkpattern" ,texlive-mkpattern))) + (synopsis "Hyphenation patterns for Galician") + (description "The package provides hyphenation patterns for Galician in +T1/EC and UTF-8 encodings.") + ;; glhyextr.tex is the only file in the public domain. + (license (list license:lppl1.3 license:public-domain))))) + +(define-public texlive-hyphen-georgian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-georgian" "ka" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ka.tex") + (base32 + "01zhn6mflpiqw4lyi8dx8syiz5mky9jrxm87cgw31hanis5cml4l"))) + (synopsis "Hyphenation patterns for Georgian") + (description "The package provides hyphenation patterns for Georgian in +T8M, T8K, and UTF-8 encodings.") + (license license:lppl1.3+))) + +(define-public texlive-hyphen-german + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-german" '("de-1901" "de-1996" "de-ch-1901") + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-de-1901.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-de-1996.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-de-ch-1901.tex" + "/tex/generic/hyphen/dehyphn.tex" + "/tex/generic/hyphen/dehypht.tex" + "/tex/generic/hyphen/dehyphtex.tex" + "/tex/generic/hyphen/ghyphen.README") + (base32 + "1g0vhpvl2l69rn2lx7lkw0inrjbcxkj2sjgwd2fq7hdi4yb2ms76"))) + (synopsis "Hyphenation patterns for German") + (description "This package provides hyphenation patterns for German in +T1/EC and UTF-8 encodings, for traditional and reformed spelling, including +Swiss German.") + ;; The patterns are released under the Expat license; the dehyph* files + ;; are released under the LPPL version 1 or later. + (license (list license:expat license:lppl1.0+)))) + +(define-public texlive-hyphen-greek + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-greek" '("el-monoton" "el-polyton") + (list "/doc/generic/elhyphen/" + "/tex/generic/hyph-utf8/patterns/tex/hyph-el-monoton.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-el-polyton.tex" + "/tex/generic/hyphen/grmhyph5.tex" + "/tex/generic/hyphen/grphyph5.tex") + (base32 + "04626jhlrv2flgdygm7sfv6xpqhfwiavi16gy2ac04iliyk4rypg"))) + (synopsis "Hyphenation patterns for Greek") + (description "This package provides hyphenation patterns for Modern Greek +in monotonic and polytonic spelling in LGR and UTF-8 encodings.") + (license license:lppl))) + +(define-public texlive-hyphen-hungarian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-hungarian" "hu" + (list "/doc/generic/huhyphen/" + "/doc/generic/hyph-utf8/hu/" + "/tex/generic/hyph-utf8/patterns/tex/hyph-hu.tex") + (base32 + "0c81w2569cqsi4j56azwz0lfx16541zhiqgmn3m4iwh7mpx3rji8"))) + (synopsis "Hyphenation patterns for Hungarian") + (description "This package provides hyphenation patterns for Hungarian in +T1/EC and UTF-8 encodings.") + ;; Any of these licenses + (license (list license:gpl2 license:lgpl2.1+ license:mpl1.1)))) + +(define-public texlive-hyphen-icelandic + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-icelandic" "is" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-is.tex") + (base32 + "1ah1f82lgfhqgid4ngsfiypybx10v8gwxnb12396vfsj3bq6j0ba"))) + (synopsis "Hyphenation patterns for Icelandic") + (description "This package provides hyphenation patterns for Icelandic in +T1/EC and UTF-8 encodings.") + (license license:lppl1.2+))) + +(define-public texlive-hyphen-indic + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-indic" + '("as" "bn" "gu" "hi" "kn" "ml" "mr" "or" "pa" "ta" "te") + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-as.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-bn.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-gu.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-hi.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-kn.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-ml.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-mr.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-or.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-pa.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-ta.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-te.tex") + (base32 + "1v8zc3wdbkhzjrflndmz4gdj11syz8vrcg0vwvm5bwhkx23g91lv"))) + (synopsis "Indic hyphenation patterns") + (description "This package provides hyphenation patterns for Assamese, +Bengali, Gujarati, Hindi, Kannada, Malayalam, Marathi, Oriya, Panjabi, Tamil +and Telugu for Unicode engines.") + (license license:expat))) + +(define-public texlive-hyphen-indonesian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-indonesian" "id" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-id.tex") + (base32 + "0mf0hr9c952kb2hmzid7fqg5whshwpribbyndb3ba092wh02abh5"))) + (synopsis "Indonesian hyphenation patterns") + (description "This package provides hyphenation patterns for +Indonesian (Bahasa Indonesia) in ASCII encoding. They are probably also +usable for Malay (Bahasa Melayu).") + (license license:gpl2))) + +(define-public texlive-hyphen-interlingua + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-interlingua" "ia" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ia.tex") + (base32 + "1aihgma3rix4jkc1z5k1lh6hlfrncn66yj0givd3j6xjqflafr2g"))) + (synopsis "Interlingua hyphenation patterns") + (description "This package provides hyphenation patterns for Interlingua +in ASCII encoding.") + (license license:lppl1.3+))) + +(define-public texlive-hyphen-irish + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-irish" "ga" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ga.tex") + (base32 + "02k1fykgj3xamczjq16i9fsjjsh78pp5ypmh93p64izk2vymfwk0"))) + (synopsis "Irish hyphenation patterns") + (description "This package provides hyphenation patterns for +Irish (Gaeilge) in T1/EC and UTF-8 encodings.") + ;; Either of these licenses + (license (list license:gpl2+ license:expat)))) + +(define-public texlive-hyphen-italian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-italian" "it" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-it.tex") + (base32 + "1a65q3hjn2p212cgv6p7wa0wcn34qnxcz2pl3v3ip0xmb16qqsk5"))) + (synopsis "Italian hyphenation patterns") + (description "This package provides hyphenation patterns for Italian in +ASCII encoding. Compliant with the Recommendation UNI 6461 on hyphenation +issued by the Italian Standards Institution (Ente Nazionale di Unificazione +UNI).") + (license license:lppl1.3+))) + +(define-public texlive-hyphen-kurmanji + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-kurmanji" "kmr" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-kmr.tex") + (base32 + "1145ykfd0b0hgklindlxdgkqmsnj3cai3cwgllz411yqmrhjc6y9"))) + (synopsis "Kurmanji hyphenation patterns") + (description "This package provides hyphenation patterns for +Kurmanji (Northern Kurdish) as spoken in Turkey and by the Kurdish diaspora in +Europe, in T1/EC and UTF-8 encodings.") + (license license:lppl1.3))) + +(define-public texlive-hyphen-latin + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-latin" '("la-x-classic" "la-x-liturgic" "la") + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-la-x-classic.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-la-x-liturgic.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-la.tex") + (base32 + "1d8d6b47r4r000gqgzyl0sy9is0y0dg41jp8fw4gqq8qmcgdxgsg"))) + (synopsis "Liturgical Latin hyphenation patterns") + (description "This package provides hyphenation patterns for Latin in +T1/EC and UTF-8 encodings, mainly in modern spelling (u when u is needed and v +when v is needed), medieval spelling with the ligatures @code{\\ae} and +@code{\\oe} and the (uncial) lowercase 'v' written as a 'u' is also supported. +Apparently there is no conflict between the patterns of modern Latin and those +of medieval Latin. It also includes hyphenation patterns for the Classical +Latin in T1/EC and UTF-8 encodings. Classical Latin hyphenation patterns are +different from those of 'plain' Latin, the latter being more adapted to modern +Latin. It also provides hyphenation patterns for the Liturgical Latin in +T1/EC and UTF-8 encodings.") + ;; Either of these licenses + (license (list license:lppl1.0+ license:expat)))) + +(define-public texlive-hyphen-latvian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-latvian" "lv" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-lv.tex") + (base32 + "1xbh5s6nwfjbv7g4kmcpjkm02a6s767p7jn9qjcnz5ip0ndl5g66"))) + (synopsis "Latvian hyphenation patterns") + (description "This package provides hyphenation patterns for Latvian in +L7X and UTF-8 encodings.") + ;; Either of these licenses. + (license (list license:gpl2 license:lgpl2.1)))) + +(define-public texlive-hyphen-lithuanian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-lithuanian" "lt" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-lt.tex") + (base32 + "0v9spw0qkygkihj5app2immzqqr98w81pz460bcgvj1ah35jdfsl"))) + (synopsis "Lithuanian hyphenation patterns") + (description "This package provides hyphenation patterns for Lithuanian in +L7X and UTF-8 encodings.") + ;; "Do ... whatever ... as long as you respect the copyright"; as part of + ;; the hyph-utf8 package we choose the LPPL license. + (license license:lppl))) + +(define-public texlive-hyphen-mongolian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-mongolian" '("mn-cyrl-x-lmc" "mn-cyrl") + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-mn-cyrl-x-lmc.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-mn-cyrl.tex") + (base32 + "0lqq3jgwgnclb1cn3x99xmk90xra9q51b00ypwy5crssmy023hqc"))) + (synopsis "Mongolian hyphenation patterns in Cyrillic script") + (description "This package provides hyphenation patterns for Mongolian in +T2A, LMC and UTF-8 encodings.") + ;; Either of these licenses + (license (list license:lppl1.3+ license:expat)))) + +(define-public texlive-hyphen-norwegian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-norwegian" '("nb" "nn" "no") + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-nb.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-nn.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-no.tex") + (base32 + "1fxnf671yz0p3lmdkspna7fjh96br1jy6yf7v17yh4fxwry3s4yz"))) + (synopsis "Norwegian Bokmal and Nynorsk hyphenation patterns") + (description "This package provides hyphenation patterns for Norwegian +Bokmal and Nynorsk in T1/EC and UTF-8 encodings.") + (license (license:non-copyleft + "/tex/generic/hyph-utf8/patterns/tex/hyph-no.tex" + "FSF All permissive license")))) + +(define-public texlive-hyphen-occitan + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-occitan" "oc" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-oc.tex") + (base32 + "1y6j6ac9ncn79p7hnp6mdwdsw9ij14zyjby5iwdhpvzzn7yyc7p8"))) + (synopsis "Occitan hyphenation patterns") + (description "This package provides hyphenation patterns for Occitan in +T1/EC and UTF-8 encodings. They are supposed to be valid for all the Occitan +variants spoken and written in the wide area called 'Occitanie' by the French. +It ranges from the Val d'Aran within Catalunya, to the South Western Italian +Alps encompassing the southern half of the French pentagon.") + (license license:lppl1.0+))) + +(define-public texlive-hyphen-piedmontese + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-piedmontese" "pms" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-pms.tex") + (base32 + "00fqzymkg374r3dzf1y82k6b18bqrf688vnjv0vkvw5a45srlb5r"))) + (synopsis "Piedmontese hyphenation patterns") + (description "This package provides hyphenation patterns for Piedmontese +in ASCII encoding. Compliant with 'Gramatica dla lengua piemonteisa' by +Camillo Brero.") + (license license:lppl1.3+))) + +(define-public texlive-hyphen-polish + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-polish" "pl" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-pl.tex") + (base32 + "0dzq8ca96q7m5bslh51x8d30pdb86glh2gn3mmvq5ip813ckwh3s"))) + (synopsis "Polish hyphenation patterns") + (description "This package provides hyphenation patterns for Polish in QX +and UTF-8 encodings.") + ;; No differing license declared, so we choose the project license. + (license license:lppl))) + +(define-public texlive-hyphen-portuguese + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-portuguese" "pt" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-pt.tex") + (base32 + "1waxrmm33fd2qfc4kiaiblg8kwzasrvgq4j3l14z733d0hlg4rfz"))) + (synopsis "Portuguese hyphenation patterns") + (description "This package provides hyphenation patterns for Portuguese in +T1/EC and UTF-8 encodings.") + (license license:bsd-3))) + +(define-public texlive-hyphen-romanian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-romanian" "ro" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ro.tex") + (base32 + "12i1vryl51yhdpj163ahfyiy21rjmf4gkqgslpriirdjmyrwrs65"))) + (synopsis "Romanian hyphenation patterns") + (description "This package provides hyphenation patterns for Romanian in +T1/EC and UTF-8 encodings.") + ;; No differing license declared, so we choose the project license. + (license license:lppl))) + +(define-public texlive-hyphen-romansh + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-romansh" "rm" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-rm.tex") + (base32 + "06wan8i4appc1zfvc0q4cgnfv1nj0qgk02w3sg56zc11hf8sywl9"))) + (synopsis "Romansh hyphenation patterns") + (description "This package provides hyphenation patterns for Romansh in +ASCII encodings. They are supposed to comply with the rules indicated by the +Lia Rumantscha (Romansh language society).") + (license license:lppl1.3+))) + +(define-public texlive-hyphen-russian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-russian" "ru" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ru.tex") + (base32 + "09s4vq23x4vff08ykmf08dvcdradjzzwvyys8p2wk6jxaqp980s3"))) + (synopsis "Russian hyphenation patterns") + (description "This package provides hyphenation patterns for Russian in +T2A and UTF-8 encodings.") + (license license:lppl1.2+))) + +(define-public texlive-hyphen-sanskrit + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-sanskrit" "sa" + (list "/doc/generic/hyph-utf8/sa/hyphenmin.txt" + "/tex/generic/hyph-utf8/patterns/tex/hyph-sa.tex") + (base32 + "0grnn09l4i5yridx10yhm6dg9sbhgc2pmsp1p6hrcy7lzkqwdvs3"))) + (synopsis "Sanskrit hyphenation patterns") + (description "This package provides hyphenation patterns for Sanskrit and +Prakrit in longdesc transliteration, and in Devanagari, Bengali, Kannada, +Malayalam longdesc and Telugu scripts for Unicode engines.") + ;; "You may freely use, copy, modify and/or distribute this file." + (license (license:non-copyleft + "file:///tex/generic/hyph-utf8/patterns/tex/hyph-sa.tex")))) + +(define-public texlive-hyphen-serbian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-serbian" '("sh-cyrl" "sh-latn" "sr-cyrl") + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-sh-cyrl.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-sh-latn.tex" + "/tex/generic/hyph-utf8/patterns/tex/hyph-sr-cyrl.tex") + (base32 + "0fhdfydyaspb8dwirlf24vn7y9dzwmhsld0mmw0fz1lmcfaj252n"))) + (synopsis "Serbian hyphenation patterns") + (description "This package provides hyphenation patterns for Serbian in +T1/EC, T2A and UTF-8 encodings.") + ;; Any version of the GPL. + (license license:gpl3+))) + +(define-public texlive-hyphen-slovak + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-slovak" "sk" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-sk.tex") + (base32 + "1cgw6fmyci3za3vsa49b6m74wqv582w0rpca7s9xva3hqm1m5qdg"))) + (synopsis "Slovak hyphenation patterns") + (description "This package provides hyphenation patterns for Slovak in +T1/EC and UTF-8 encodings.") + (license license:gpl2+))) + +(define-public texlive-hyphen-slovenian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-slovenian" "sl" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-sl.tex") + (base32 + "1ixf2pxir9xf1gggq9k28xxglsq9bwqlghd9cl4amk5vrn5bjbds"))) + (synopsis "Slovenian hyphenation patterns") + (description "This package provides hyphenation patterns for Slovenian in +T1/EC and UTF-8 encodings.") + ;; Either license + (license (list license:lppl1.0+ license:expat)))) + +(define-public texlive-hyphen-spanish + (package + ;; The source files "eshyph-make.lua" and "eshyph.src" are provided to + ;; generate obsolete hyphenation patterns, which aren't included in a + ;; default TeX Live distribution, so we don't include them either. + (inherit (texlive-hyphen-package + "texlive-hyphen-spanish" "es" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-es.tex") + (base32 + "0jgs0zzyk2wwrjbx2hqdh5qggrnik9xmsxygbfhlb7gdrcrs0mbj"))) + (synopsis "Hyphenation patterns for Spanish") + (description "The package provides hyphenation patterns for Spanish in +T1/EC and UTF-8 encodings.") + (license license:expat))) + +(define-public texlive-hyphen-swedish + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-swedish" "sv" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-sv.tex") + (base32 + "12sf9f43zwyzb4cn57yry8r4zmwdc7cfdljn3qwxwrny4m3sw4w8"))) + (synopsis "Swedish hyphenation patterns") + (description "This package provides hyphenation patterns for Swedish in +T1/EC and UTF-8 encodings.") + (license license:lppl1.2+))) + +(define-public texlive-hyphen-thai + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-thai" "th" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-th.tex") + (base32 + "15k1n4xdw8zzd5nrh76s53z4j95gxa4i2h1av5gx5vrjgblzzl97"))) + (synopsis "Thai hyphenation patterns") + (description "This package provides hyphenation patterns for Thai in LTH +and UTF-8 encodings.") + (license license:lppl1.3+))) + +(define-public texlive-hyphen-turkish + (let ((template (texlive-hyphen-package + "texlive-hyphen-turkish" "tr" + (list "/source/generic/hyph-utf8/languages/tr/generate_patterns_tr.rb") + (base32 + "0rvlhs2z2sn312lqsf44bzknid5dry7d2sl2q1whfvr0y4qj1g8f")))) + (package + (inherit template) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'build 'build-patterns + (lambda _ + (let ((target (string-append (getcwd) + "/tex/generic/hyph-utf8/patterns/tex"))) + (mkdir-p target) + (with-directory-excursion "source/generic/hyph-utf8/languages/tr/" + (substitute* "generate_patterns_tr.rb" + (("\\$file = File.new.*") + (string-append "$file = File.new(\"" target + "/hyph-tr.tex\",\"w\")\n"))) + (invoke "ruby" "generate_patterns_tr.rb")) + #t))) + (add-after 'install 'install-hyph-tr.tex + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (target (string-append out "/share/texmf-dist/tex"))) + (copy-recursively "tex" target) + #t))))))) + (synopsis "Hyphenation patterns for Turkish") + (description "The package provides hyphenation patterns for Turkish in +T1/EC and UTF-8 encodings. The patterns for Turkish were first produced for +the Ottoman Texts Project in 1987 and were suitable for both Modern Turkish +and Ottoman Turkish in Latin script, however the required character set didn't +fit into EC encoding, so support for Ottoman Turkish had to be dropped to keep +compatibility with 8-bit engines.") + (license license:lppl1.0+)))) + +(define-public texlive-hyphen-turkmen + (let ((template (texlive-hyphen-package + "texlive-hyphen-turkmen" "tk" + (list "/source/generic/hyph-utf8/languages/tk/generate_patterns_tk.rb") + (base32 + "1wlqx8wb0wsqhdv823brc3i8w1vf4m4bkb2vg917j5dq8p8p71aw")))) + (package + (inherit template) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'build 'build-patterns + (lambda _ + (let ((target (string-append (getcwd) + "/tex/generic/hyph-utf8/patterns/tex"))) + (mkdir-p target) + (with-directory-excursion "source/generic/hyph-utf8/languages/tk/" + (substitute* "generate_patterns_tk.rb" + (("\\$file = File.new.*") + (string-append "$file = File.new(\"" target + "/hyph-tr.tex\",\"w\")\n"))) + (invoke "ruby" "generate_patterns_tk.rb")) + #t))) + (add-after 'install 'install-hyph-tk.tex + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (target (string-append out "/share/texmf-dist/tex"))) + (copy-recursively "tex" target) + #t))))))) + (synopsis "Hyphenation patterns for Turkmen") + (description "The package provides hyphenation patterns for Turkmen in +T1/EC and UTF-8 encodings.") + (license license:public-domain)))) + +(define-public texlive-hyphen-ukrainian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-ukrainian" "uk" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-uk.tex") + (base32 + "17z0gmw5svsf5zlhjkckwk4y21g7prfwj473jlqnwcsr8a941gsf"))) + (synopsis "Ukrainian hyphenation patterns") + (description "This package provides hyphenation patterns for Ukrainian in +T2A and UTF-8 encodings.") + ;; No version specified + (license license:lppl))) + +(define-public texlive-hyphen-uppersorbian + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-uppersorbian" "hsb" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-hsb.tex") + (base32 + "1q42s32cfbynlnzn9hpcldi77fszi5xkn1c85l8xqjmfydqbqdyi"))) + (synopsis "Upper Sorbian hyphenation patterns") + (description "This package provides hyphenation patterns for Upper Sorbian +in T1/EC and UTF-8 encodings.") + (license license:lppl1.3a+))) + +(define-public texlive-hyphen-welsh + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-welsh" "cy" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-cy.tex") + (base32 + "0h8yjj5zdg0hvpb2vx9gi376536nl59hp8w286z1a13diaayg1m2"))) + (synopsis "Welsh hyphenation patterns") + (description "This package provides hyphenation patterns for Welsh in +T1/EC and UTF-8 encodings.") + ;; Either license + (license (list license:lppl1.0+ license:expat)))) + +(define-public texlive-hyph-utf8 + (package + (inherit (simple-texlive-package + "texlive-hyph-utf8" + (list "/source/generic/hyph-utf8/" + "/source/luatex/hyph-utf8/" + "/doc/luatex/hyph-utf8/" + "/tex/luatex/hyph-utf8/etex.src" + ;; Used to extract luatex-hyphen.lua + "/tex/latex/base/docstrip.tex" + + ;; Documentation; we can't use the whole directory because + ;; it includes files from other packages. + "/doc/generic/hyph-utf8/CHANGES" + "/doc/generic/hyph-utf8/HISTORY" + "/doc/generic/hyph-utf8/hyph-utf8.pdf" + "/doc/generic/hyph-utf8/hyph-utf8.tex" + "/doc/generic/hyph-utf8/hyphenation-distribution.pdf" + "/doc/generic/hyph-utf8/hyphenation-distribution.tex" + "/doc/generic/hyph-utf8/img/miktex-languages.png" + "/doc/generic/hyph-utf8/img/texlive-collection.png") + (base32 + "10y8svgk68sivmgzrv8gv137r7kv49cs256cq2wja9ms437pxvbj"))) + (outputs '("out" "doc")) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; there are none + #:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 match)) + #:make-flags + (list "-C" "source/luatex/hyph-utf8/" + (string-append "DO_TEX = tex --interaction=nonstopmode '&tex' $<") + (string-append "RUNDIR =" (assoc-ref %outputs "out") "/share/texmf-dist/tex/luatex/hyph-utf8/") + (string-append "DOCDIR =" (assoc-ref %outputs "doc") "/share/texmf-dist/doc/luatex/hyph-utf8/") + ;; hyphen.cfg is neither included nor generated, so let's only build the lua file. + (string-append "UNPACKED = $(NAME).lua")) + #:phases + (modify-phases %standard-phases + ;; TeX isn't usable at this point, so we first need to generate the + ;; tex.fmt. + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Target directories must exist. + (mkdir-p (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/luatex/hyph-utf8/")) + (mkdir-p (string-append (assoc-ref %outputs "doc") + "/share/texmf-dist/doc/luatex/hyph-utf8/")) + + ;; We cannot build the documentation because that requires a + ;; fully functional pdflatex, which depends on this package. + (substitute* "source/luatex/hyph-utf8/Makefile" + (("all: .*") "all: $(RUNFILES)\n")) + + ;; Find required fonts for building tex.fmt + (setenv "TFMFONTS" + (string-append (assoc-ref inputs "texlive-cm") + "/share/texmf-dist/fonts/tfm/public/cm:" + (assoc-ref inputs "texlive-fonts-knuth-lib") + "/share/texmf-dist/fonts/tfm/public/knuth-lib")) + ;; ...and find all tex files in this environment. + (setenv "TEXINPUTS" + (string-append + (getcwd) ":" + (string-join + (map (match-lambda ((_ . dir) dir)) inputs) + "//:"))) + + ;; Generate tex.fmt. + (let ((where "source/luatex/hyph-utf8")) + (mkdir-p where) + (with-directory-excursion where + (invoke "tex" "-ini" + (string-append (assoc-ref inputs "texlive-tex-plain") + "/share/texmf-dist/tex/plain/config/tex.ini")))))) + (add-before 'build 'build-loaders-and-converters + (lambda* (#:key outputs #:allow-other-keys) + (let* ((root (string-append (assoc-ref outputs "out") + "/share/texmf-dist")) + (conv + (string-append root + "/tex/generic/hyph-utf8/conversions"))) + + ;; Build converters + (mkdir-p conv) + (with-directory-excursion "source/generic/hyph-utf8" + (substitute* "generate-converters.rb" + (("\\$path_root=File.*") + (string-append "$path_root=\"" root "\"\n")) + ;; Avoid error with newer Ruby. + (("#1\\{%") "#1{%%")) + (invoke "ruby" "generate-converters.rb")) + #t))) + (replace 'install + (lambda* (#:key source outputs #:allow-other-keys) + (let ((doc (assoc-ref outputs "doc")) + (out (assoc-ref outputs "out"))) + (mkdir-p doc) + (copy-recursively + (string-append source "/doc") + (string-append doc "/doc")) + (install-file + (string-append source "/tex/luatex/hyph-utf8/etex.src") + (string-append out "/share/texmf-dist/tex/luatex/hyph-utf8/"))) + #t))))) + (native-inputs + `(("ruby" ,ruby) + ("texlive-bin" ,texlive-bin) + ;; The following packages are needed for build "tex.fmt", which we need + ;; for a working "tex". + ("texlive-tex-plain" ,texlive-tex-plain) + ("texlive-cm" ,texlive-cm) + ("texlive-fonts-knuth-lib" ,texlive-fonts-knuth-lib) + ("texlive-hyphen-base" ,texlive-hyphen-base))) + (home-page "https://ctan.org/pkg/hyph-utf8") + (synopsis "Hyphenation patterns expressed in UTF-8") + (description "Modern native UTF-8 engines such as XeTeX and LuaTeX need +hyphenation patterns in UTF-8 format, whereas older systems require +hyphenation patterns in the 8-bit encoding of the font in use (such encodings +are codified in the LaTeX scheme with names like OT1, T2A, TS1, OML, LY1, +etc). The present package offers a collection of conversions of existing +patterns to UTF-8 format, together with converters for use with 8-bit fonts in +older systems. Since hyphenation patterns for Knuthian-style TeX systems are +only read at iniTeX time, it is hoped that the UTF-8 patterns, with their +converters, will completely supplant the older patterns.") + ;; Individual files each have their own license. Most of these files are + ;; independent hyphenation patterns. + (license (list license:lppl1.0+ + license:lppl1.2+ + license:lppl1.3 + license:lppl1.3+ + license:lppl1.3a+ + license:lgpl2.1 + license:lgpl2.1+ + license:lgpl3+ + license:gpl2+ + license:gpl3+ + license:mpl1.1 + license:asl2.0 + license:expat + license:bsd-3 + license:cc0 + license:public-domain + license:wtfpl2)))) + +(define-public texlive-generic-hyph-utf8 + (deprecated-package "texlive-generic-hyph-utf8" texlive-hyph-utf8)) + +(define-public texlive-dehyph-exptl + (package + (inherit (simple-texlive-package + "texlive-dehyph-exptl" + (list "/tex/generic/dehyph-exptl/" + "/doc/generic/dehyph-exptl/") + (base32 + "1w2danvvy2f52hcb4acvjks53kcanwxr9s990fap6mj279hpgmh2") + #:trivial? #t)) + (propagated-inputs + `(("texlive-hyphen-base" ,texlive-hyphen-base) + ("texlive-hyph-utf8" ,texlive-hyph-utf8))) + (home-page "http://projekte.dante.de/Trennmuster/WebHome") + (synopsis "Hyphenation patterns for German") + (description "The package provides experimental hyphenation patterns for +the German language, covering both traditional and reformed orthography. The +patterns can be used with packages Babel and hyphsubst from the Oberdiek +bundle.") + ;; Hyphenation patterns are under the Expat license; documentation is + ;; under LPPL. + (license (list license:expat license:lppl)))) + +(define-public texlive-generic-dehyph-exptl + (deprecated-package "texlive-generic-dehyph-exptl" texlive-dehyph-exptl)) + +(define-public texlive-ukrhyph + (package + (inherit (simple-texlive-package + "texlive-ukrhyph" + (list "/doc/generic/ukrhyph/" + "/tex/generic/ukrhyph/") + (base32 + "01ma274sixcrbpb7fpqkxwfvrnzfj2srv9b4a42rfnph1pdql74z") + #:trivial? #t)) + (home-page "https://www.ctan.org/pkg/ukrhyph") + (synopsis "Hyphenation patterns for Ukrainian") + (description "The package provides a range of hyphenation patterns for +Ukrainian, depending on the encoding of the output font including the standard +T2A.") + (license license:lppl))) + +(define-public texlive-ruhyphen + (let ((template (simple-texlive-package + "texlive-ruhyphen" + (list "/source/generic/ruhyphen/" + "/tex/generic/ruhyphen/") + (base32 + "18n1bqhh8jv765vz3a3fjwffy7m71vhwx9yq8zl0p5j7p72q9qcn") + #:trivial? #t))) + (package + (inherit template) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:phases phases) + `(modify-phases ,phases + (replace 'build + (lambda _ + (let ((cwd (getcwd))) + ;; Remove generated files. + (for-each delete-file + (find-files "tex/generic/ruhyphen/" + "^cyry.*.tex$")) + (substitute* "source/generic/ruhyphen/Makefile" + (("./mkcyryo") (string-append cwd "/source/generic/ruhyphen/mkcyryo"))) + (with-directory-excursion "tex/generic/ruhyphen" + (invoke "make" "-f" + (string-append cwd "/source/generic/ruhyphen/Makefile")))))))))) + (native-inputs + `(("coreutils" ,coreutils) + ("gawk" ,gawk) + ("sed" ,sed) + ("grep" ,grep) + ("perl" ,perl))) + (home-page "https://www.ctan.org/pkg/ruhyphen") + (synopsis "Hyphenation patterns for Russian") + (description "The package provides a collection of Russian hyphenation +patterns supporting a number of Cyrillic font encodings, including T2, +UCY (Omega Unicode Cyrillic), LCY, LWN (OT2), and koi8-r.") + (license license:lppl)))) + +(define-public texlive-kpathsea + (package + (inherit (simple-texlive-package + "texlive-kpathsea" + (list "/web2c/amiga-pl.tcx" + "/web2c/cp1250cs.tcx" + "/web2c/cp1250pl.tcx" + "/web2c/cp1250t1.tcx" + "/web2c/cp227.tcx" + "/web2c/cp852-cs.tcx" + "/web2c/cp852-pl.tcx" + "/web2c/cp8bit.tcx" + "/web2c/empty.tcx" + "/web2c/fmtutil.cnf" + "/web2c/il1-t1.tcx" + "/web2c/il2-cs.tcx" + "/web2c/il2-pl.tcx" + "/web2c/il2-t1.tcx" + "/web2c/kam-cs.tcx" + "/web2c/kam-t1.tcx" + "/web2c/macce-pl.tcx" + "/web2c/macce-t1.tcx" + "/web2c/maz-pl.tcx" + "/web2c/mktex.cnf" + "/web2c/mktex.opt" + "/web2c/mktexdir" + "/web2c/mktexdir.opt" + "/web2c/mktexnam" + "/web2c/mktexnam.opt" + "/web2c/mktexupd" + "/web2c/natural.tcx" + "/web2c/tcvn-t5.tcx" + "/web2c/viscii-t5.tcx") + (base32 + "0ajfp9kr330lcm2ymr3kl9zn6y2xjkrzpa0c0azc4qdm5jllawb9") + #:trivial? #t)) + (home-page "https://www.tug.org/texlive/") + (synopsis "Files related to the path searching library for TeX") + (description "Kpathsea is a library and utility programs which provide +path searching facilities for TeX file types, including the self-locating +feature required for movable installations, layered on top of a general search +mechanism. This package provides supporting files.") + (license license:lgpl3+))) + +(define-public texlive-latexconfig + (package + (inherit (simple-texlive-package + "texlive-latexconfig" + (list "/tex/latex/latexconfig/") + (base32 + "1wa7yhdpnz1nyidwgli68fyr33jn951bnniqrih5lj98k09rqc3h") + #:trivial? #t)) + (home-page "https://www.tug.org/") + (synopsis "Configuration files for LaTeX-related formats") + (description "The package provides configuration files for LaTeX-related +formats.") + (license license:lppl))) + +(define-public texlive-latex-base + (package + (name "texlive-latex-base") + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list "/doc/latex/base/" + "/source/latex/base/" + ;; Almost all files in /tex/latex/base are generated, but + ;; these are not: + "/tex/latex/base/idx.tex" + "/tex/latex/base/lablst.tex" + "/tex/latex/base/lppl.tex" + "/tex/latex/base/ltnews.cls" + "/tex/latex/base/ltxcheck.tex" + "/tex/latex/base/ltxguide.cls" + "/tex/latex/base/minimal.cls" + "/tex/latex/base/sample2e.tex" + "/tex/latex/base/small2e.tex" + "/tex/latex/base/source2e.tex" + "/tex/latex/base/testpage.tex" + "/tex/latex/base/texsys.cfg") + (base32 + "0f8d41wk1gb7i6xq1a10drwhhayc50pg9nwzjkrqnxrv0pcc08w5"))) + (build-system gnu-build-system) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 match) + (srfi srfi-26)) + #:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + ;; Find required fonts + (setenv "TFMFONTS" + (string-join + (map (match-lambda + ((pkg-name . dir) + (string-append + (assoc-ref inputs pkg-name) + "/share/texmf-dist/fonts/tfm/public" + dir))) + '(("texlive-etex" . "/etex") + ("texlive-cm" . "/cm") + ("texlive-fonts-latex" . "/latex-fonts") + ("texlive-fonts-knuth-lib" . "/knuth-lib"))) + ":")) + (let ((cwd (getcwd))) + (setenv "TEXINPUTS" + (string-append + cwd "//:" + cwd "/source/latex/base//:" + cwd "/build:" + (string-join + (map (match-lambda ((_ . dir) dir)) inputs) + "//:")))) + + ;; This is the actual build step. + (mkdir "build") + (invoke "tex" "-ini" "-interaction=scrollmode" + "-output-directory=build" "unpack.ins") + + ;; XXX: We can't build all formats at this point, nor are they + ;; part of the LaTeX base, so we disable them. Actually, we + ;; should be running this all in a profile hook, so that only + ;; selected formats and hyphenation patterns are included, but it + ;; takes long and TeX Live isn't designed to be modular like + ;; that. Everything operates on a shared directory, which we + ;; would only have at profile generation time. + (let ((disabled-formats + '("aleph aleph" "lamed aleph" "uptex uptex" "euptex euptex" + "eptex eptex" "ptex ptex" "pdfxmltex pdftex" "platex eptex" + "csplain pdftex" "mf mf-nowin" "mex pdftex" "pdfmex pdftex" + "cont-en xetex" "cont-en pdftex" "pdfcsplain xetex" + "pdfcsplain pdftex" "pdfcsplain luatex" "cslatex pdftex" + "mptopdf pdftex" "uplatex euptex" "jadetex pdftex" + "amstex pdftex" "pdfcslatex pdftex" "lollipop tex" + "xmltex pdftex" "pdfjadetex pdftex" "eplain pdftex" + "texsis pdftex" "mltex pdftex" "utf8mex pdftex"))) + (mkdir "web2c") + (install-file (string-append + (assoc-ref inputs "texlive-kpathsea") + "/share/texmf-dist/web2c/fmtutil.cnf") + "web2c") + (make-file-writable "web2c/fmtutil.cnf") + (substitute* "web2c/fmtutil.cnf" + (((string-append "^(" (string-join disabled-formats "|") ")") m) + (string-append "#! " m)))) + (invoke "fmtutil-sys" "--all" + "--fmtdir=web2c" + (string-append "--cnffile=web2c/fmtutil.cnf")) + ;; We don't actually want to install it. + (delete-file "web2c/fmtutil.cnf") + #t)) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (root (string-append out "/share/texmf-dist")) + (target (string-append root "/tex/latex/base")) + (web2c (string-append root "/web2c")) + (makeindex (string-append root "/makeindex/latex"))) + (for-each delete-file (find-files "." "\\.(log|aux)$")) + + ;; The usedir directive in docstrip.ins is ignored, so these + ;; two files end up in the wrong place. Move them. + (mkdir-p makeindex) + (for-each (lambda (file) + (install-file file makeindex) + (delete-file file)) + '("build/gglo.ist" + "build/gind.ist")) + (for-each (cut install-file <> target) + (find-files "build" ".*")) + (for-each (cut install-file <> web2c) + (find-files "web2c" ".*")) + #t)))))) + (native-inputs + `(("texlive-bin" ,texlive-bin) + ("texlive-tex-ini-files" ,texlive-tex-ini-files) + ("texlive-tex-plain" ,texlive-tex-plain) + ("texlive-kpathsea" ,texlive-kpathsea) + ("texlive-cm" ,texlive-cm) + ("texlive-fonts-latex" ,texlive-fonts-latex) + ("texlive-fonts-knuth-lib" ,texlive-fonts-knuth-lib) + ("texlive-luatexconfig" + ,(texlive-origin + "texlive-luatexconfig" (number->string %texlive-revision) + (list "/tex/generic/config/luatex-unicode-letters.tex" + "/tex/generic/config/luatexiniconfig.tex" + "/web2c/texmfcnf.lua") + (base32 + "0cs67a8wwh4s5p5gn8l49jyccgy7glw8mfq5klgn3dfsl2fdlhk7"))))) + (propagated-inputs + `(("texlive-dehyph-exptl" ,texlive-dehyph-exptl) + ("texlive-etex" ,texlive-etex) + ("texlive-hyph-utf8" ,texlive-hyph-utf8) + ("texlive-hyphen-base" ,texlive-hyphen-base) + ("texlive-hyphen-afrikaans" ,texlive-hyphen-afrikaans) + ("texlive-hyphen-ancientgreek" ,texlive-hyphen-ancientgreek) + ("texlive-hyphen-armenian" ,texlive-hyphen-armenian) + ("texlive-hyphen-basque" ,texlive-hyphen-basque) + ("texlive-hyphen-belarusian" ,texlive-hyphen-belarusian) + ("texlive-hyphen-bulgarian" ,texlive-hyphen-bulgarian) + ("texlive-hyphen-catalan" ,texlive-hyphen-catalan) + ("texlive-hyphen-chinese" ,texlive-hyphen-chinese) + ("texlive-hyphen-churchslavonic" ,texlive-hyphen-churchslavonic) + ("texlive-hyphen-coptic" ,texlive-hyphen-coptic) + ("texlive-hyphen-croatian" ,texlive-hyphen-croatian) + ("texlive-hyphen-czech" ,texlive-hyphen-czech) + ("texlive-hyphen-danish" ,texlive-hyphen-danish) + ("texlive-hyphen-dutch" ,texlive-hyphen-dutch) + ("texlive-hyphen-english" ,texlive-hyphen-english) + ("texlive-hyphen-esperanto" ,texlive-hyphen-esperanto) + ("texlive-hyphen-estonian" ,texlive-hyphen-estonian) + ("texlive-hyphen-ethiopic" ,texlive-hyphen-ethiopic) + ("texlive-hyphen-finnish" ,texlive-hyphen-finnish) + ("texlive-hyphen-french" ,texlive-hyphen-french) + ("texlive-hyphen-friulan" ,texlive-hyphen-friulan) + ("texlive-hyphen-galician" ,texlive-hyphen-galician) + ("texlive-hyphen-georgian" ,texlive-hyphen-georgian) + ("texlive-hyphen-german" ,texlive-hyphen-german) + ("texlive-hyphen-greek" ,texlive-hyphen-greek) + ("texlive-hyphen-hungarian" ,texlive-hyphen-hungarian) + ("texlive-hyphen-icelandic" ,texlive-hyphen-icelandic) + ("texlive-hyphen-indic" ,texlive-hyphen-indic) + ("texlive-hyphen-indonesian" ,texlive-hyphen-indonesian) + ("texlive-hyphen-interlingua" ,texlive-hyphen-interlingua) + ("texlive-hyphen-irish" ,texlive-hyphen-irish) + ("texlive-hyphen-italian" ,texlive-hyphen-italian) + ("texlive-hyphen-kurmanji" ,texlive-hyphen-kurmanji) + ("texlive-hyphen-latin" ,texlive-hyphen-latin) + ("texlive-hyphen-latvian" ,texlive-hyphen-latvian) + ("texlive-hyphen-lithuanian" ,texlive-hyphen-lithuanian) + ("texlive-hyphen-mongolian" ,texlive-hyphen-mongolian) + ("texlive-hyphen-norwegian" ,texlive-hyphen-norwegian) + ("texlive-hyphen-occitan" ,texlive-hyphen-occitan) + ("texlive-hyphen-piedmontese" ,texlive-hyphen-piedmontese) + ("texlive-hyphen-polish" ,texlive-hyphen-polish) + ("texlive-hyphen-portuguese" ,texlive-hyphen-portuguese) + ("texlive-hyphen-romanian" ,texlive-hyphen-romanian) + ("texlive-hyphen-romansh" ,texlive-hyphen-romansh) + ("texlive-hyphen-russian" ,texlive-hyphen-russian) + ("texlive-hyphen-sanskrit" ,texlive-hyphen-sanskrit) + ("texlive-hyphen-serbian" ,texlive-hyphen-serbian) + ("texlive-hyphen-slovak" ,texlive-hyphen-slovak) + ("texlive-hyphen-slovenian" ,texlive-hyphen-slovenian) + ("texlive-hyphen-spanish" ,texlive-hyphen-spanish) + ("texlive-hyphen-swedish" ,texlive-hyphen-swedish) + ("texlive-hyphen-thai" ,texlive-hyphen-thai) + ("texlive-hyphen-turkish" ,texlive-hyphen-turkish) + ("texlive-hyphen-turkmen" ,texlive-hyphen-turkmen) + ("texlive-hyphen-ukrainian" ,texlive-hyphen-ukrainian) + ("texlive-hyphen-uppersorbian" ,texlive-hyphen-uppersorbian) + ("texlive-hyphen-welsh" ,texlive-hyphen-welsh) + ("texlive-unicode-data" ,texlive-unicode-data) + ("texlive-ukrhyph" ,texlive-ukrhyph) + ("texlive-ruhyphen" ,texlive-ruhyphen) + ("texlive-latexconfig" ,texlive-latexconfig))) + (home-page "https://www.ctan.org/pkg/latex-base") + (synopsis "Base sources of LaTeX") + (description + "This bundle comprises the source of LaTeX itself, together with several packages which are considered \"part of the kernel\". This bundle, together with the required packages, constitutes what every LaTeX distribution should contain.") - (license license:lppl1.3c+)))) + (license license:lppl1.3c+))) (define-public texlive-latex-filecontents (package @@ -1590,32 +2767,15 @@ so that other code can determine that it is running under XeTeX. The package requires the e-TeX extensions to the TeX primitive set.") (license license:lppl1.3c+))) -(define-public texlive-generic-epsf +(define-public texlive-epsf (package - (name "texlive-generic-epsf") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/generic/epsf")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "14w3j81ympyvg8hkk9i1xgr8a0gfnfsb2ki8qqsk5pa051za1xcy")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/generic/epfs"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) + (inherit (simple-texlive-package + "texlive-epsf" + (list "/doc/generic/epsf/" + "/tex/generic/epsf/") + (base32 + "03jcf0kqh47is965d2590miwj7d5kif3c4mgsnvkyl664jzjkh92") + #:trivial? #t)) (home-page "https://www.ctan.org/pkg/epsf") (synopsis "Simple macros for EPS inclusion") (description @@ -1627,6 +2787,9 @@ bundle of packages. (The latex-graphics bundle is also available to Plain TeX users, via its Plain TeX version.)") (license license:public-domain))) +(define-public texlive-generic-epsf + (deprecated-package "texlive-generic-epsf" texlive-epsf)) + (define-public texlive-latex-fancyvrb (package (name "texlive-latex-fancyvrb") @@ -1653,6 +2816,40 @@ verbatim mode; build \"example\" environments (showing both result and verbatim source).") (license license:lppl1.0+))) +(define-public texlive-graphics-def + (package + (inherit (simple-texlive-package + "texlive-graphics-def" + (list "/doc/latex/graphics-def/README.md" + "/tex/latex/graphics-def/") + (base32 + "0zrbn9cwfnnrrl3b2zsd74ldksp9jwpvjh7z93ild1m75crpb39a") + #:trivial? #t)) + (home-page "https://www.ctan.org/pkg/latex-graphics") + (synopsis "Color and graphics option files") + (description + "This bundle is a combined distribution consisting of @file{dvips.def}, +@file{pdftex.def}, @file{luatex.def}, @file{xetex.def}, @file{dvipdfmx.def}, +and @file{dvisvgm.def} driver option files for the LaTeX graphics and color +packages.") + (license license:lppl1.3c+))) + +(define-public texlive-graphics-cfg + (package + (inherit (simple-texlive-package + "texlive-graphics-cfg" + (list "/doc/latex/graphics-cfg/README.md" + "/tex/latex/graphics-cfg/") + (base32 + "00n63adb2laf43lzix39xl68aq0k5k80mmrw602w99w5n7f96gsf") + #:trivial? #t)) + (home-page "https://www.ctan.org/pkg/latex-graphics") + (synopsis "Sample configuration files for LaTeX color and graphics") + (description + "This bundle includes @file{color.cfg} and @file{graphics.cfg} files that +set default \"driver\" options for the color and graphics packages.") + (license license:public-domain))) + (define-public texlive-latex-graphics (package (name "texlive-latex-graphics") @@ -1665,54 +2862,10 @@ verbatim source).") (base32 "0nlfhn55ax89rcvpkrl9570671b62kcr4c9l5ch3w5zw9vmi00dz")))) (build-system texlive-build-system) - (arguments - '(#:tex-directory "latex/graphics" - #:phases - (modify-phases %standard-phases - (add-after 'install 'install-config - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((cfg (assoc-ref inputs "graphics-cfg")) - (target (string-append (assoc-ref outputs "out") - "/share/texmf-dist/tex/latex/graphics-cfg"))) - (mkdir-p target) - (install-file (string-append cfg "/graphics.cfg") target) - (install-file (string-append cfg "/color.cfg") target) - #t))) - (add-after 'install 'install-defs - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((def (assoc-ref inputs "graphics-def")) - (target (string-append (assoc-ref outputs "out") - "/share/texmf-dist/tex/latex/graphics-def"))) - (mkdir-p target) - (copy-recursively def target) - #t)))))) - (native-inputs - `(("graphics-cfg" - ,(origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/latex3/graphics-cfg.git") - (commit "19d1238af17df376cd46333b229579b0f7f3a41f"))) - (file-name (string-append "graphics-cfg-" - (number->string %texlive-revision) - "-checkout")) - (sha256 - (base32 - "12kbgbm52gmmgn8zajb74s8n5rvnxcfdvs3iyj8vcw5vrsw5i6mh")))) - ("graphics-def" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/graphics-def")) - (revision %texlive-revision))) - (file-name (string-append "graphics-def-" - (number->string %texlive-revision) - "-checkout")) - (sha256 - (base32 - "17zpcgrfsr29g1dkz9np1qi63kjv7gb12rg979c6dai6qksbr3vq")))))) + (arguments '(#:tex-directory "latex/graphics")) + (propagated-inputs + `(("texlive-graphics-cfg" ,texlive-graphics-cfg) + ("texlive-graphics-def" ,texlive-graphics-def))) (home-page "https://www.ctan.org/pkg/latex-graphics") (synopsis "LaTeX standard graphics bundle") (description @@ -1720,9 +2873,7 @@ verbatim source).") graphics (e.g. PostScript) files, and rotation and scaling of text in LaTeX documents. It comprises the packages color, graphics, graphicx, trig, epsfig, keyval, and lscape.") - ;; The configuration files are released under CC0. - (license (list license:lppl1.3c+ - license:cc0)))) + (license license:lppl1.3c+))) (define-public texlive-latex-xcolor (package @@ -1840,32 +2991,15 @@ rawfonts, showkeys, somedefs, tabularx, theorem, trace, varioref, verbatim, xr, and xspace.") (license license:lppl1.3+))) -(define-public texlive-latex-url +(define-public texlive-url (package - (name "texlive-latex-url") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/url")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "184s2543cwia5l7iibhlkl1ffbncfhjpv5p56zq0c15by5sghlac")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/latex/url"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) + (inherit (simple-texlive-package + "texlive-url" + (list "/doc/latex/url/" + "/tex/latex/url/") + (base32 + "184m40wgnx939ky2hbxnj0v9aak023ldrhgffp0lgyk9wdqpxlqg") + #:trivial? #t)) (home-page "https://www.ctan.org/pkg/url") (synopsis "Verbatim with URL-sensitive line breaks") (description "The command @code{\\url} is a form of verbatim command that @@ -1880,6 +3014,26 @@ of file names.") ;; the latest version is 1.3c. (license license:lppl1.3c+))) +(define-public texlive-latex-url + (deprecated-package "texlive-latex-url" texlive-url)) + +(define-public texlive-tetex + (package + (inherit (simple-texlive-package + "texlive-tetex" + (list "/dvips/tetex/" + "/fonts/enc/dvips/tetex/" + "/fonts/map/dvips/tetex/") + (base32 + "1si3as8mwi8837965djlw6jhwwzsp3r1hkflvdxv2avx9vb45hjb") + #:trivial? #t)) + (home-page "https://www.ctan.org/pkg/tetex") + (synopsis "Font maps originally from teTeX") + (description "This package provides font maps that were originally part of +the now obsolete teTeX distributions but are still used at the core of the TeX +Live distribution.") + (license license:public-domain))) + (define-public texlive-latex-l3kernel (package (name "texlive-latex-l3kernel") @@ -2329,7 +3483,7 @@ packages.") (list texlive-bin texlive-dvips texlive-fontname - texlive-fonts-cm + texlive-cm texlive-fonts-latex texlive-metafont-base texlive-latex-base @@ -2341,7 +3495,8 @@ packages.") texlive-latex-cyrillic texlive-latex-graphics texlive-latex-psnfss - texlive-latex-tools))) + texlive-latex-tools + texlive-tetex))) (package (name "texlive-base") (version (number->string %texlive-revision)) @@ -2387,16 +3542,18 @@ standard LaTeX packages." #:builder (begin (use-modules (ice-9 match) + (ice-9 popen) (srfi srfi-26) (guix build union) (guix build utils) (guix build texlive-build-system)) (let* ((out (assoc-ref %outputs "out")) (texmf.cnf (string-append out "/share/texmf-dist/web2c/texmf.cnf"))) - ;; Build a modifiable union of all inputs (but exclude bash) + ;; Build a modifiable union of all inputs (but exclude bash and + ;; the updmap.cfg file) (match (filter (match-lambda ((name . _) - (not (string=? "bash" name)))) + (not (member name '("bash" "updmap.cfg"))))) %build-inputs) (((names . directories) ...) (union-build (assoc-ref %outputs "out") @@ -2413,19 +3570,47 @@ standard LaTeX packages." (string-append "TEXMFROOT = " out "/share\n")) (("^TEXMF = .*") "TEXMF = $TEXMFROOT/share/texmf-dist\n")) - (setenv "PATH" (string-append (assoc-ref %build-inputs "bash") - "/bin")) + (setenv "PATH" (string-append + (assoc-ref %build-inputs "bash") "/bin:" + (assoc-ref %build-inputs "coreutils") "/bin:" + (string-append out "/bin"))) (for-each (cut wrap-program <> `("TEXMFCNF" ":" suffix (,(dirname texmf.cnf))) `("TEXMF" ":" suffix (,(string-append out "/share/texmf-dist")))) (find-files (string-append out "/bin") ".*")) + + ;; Remove invalid maps from config file. + (let ((port (open-pipe* OPEN_WRITE "updmap-sys" + "--syncwithtrees" + "--nohash" + (assoc-ref %build-inputs "updmap.cfg")))) + (display "Y\n" port) + (when (not (zero? (status:exit-val (close-pipe port)))) + (error "failed to filter updmap.cfg"))) + ;; Generate maps. + (invoke "updmap-sys" "--force" + (string-append out "/share/texmf-config/web2c/updmap.cfg")) #t)))) (inputs `(("bash" ,bash) ,@(map (lambda (package) (list (package-name package) package)) (append default-packages packages)))) + (native-inputs + `(("coreutils" ,coreutils) + ("sed" ,sed) + ("updmap.cfg" + ,(origin + (method url-fetch) + (uri (string-append "https://tug.org/svn/texlive/tags/" + %texlive-tag "/Master/texmf-dist/web2c/updmap.cfg" + "?revision=" (number->string %texlive-revision))) + (file-name (string-append "updmap.cfg-" + (number->string %texlive-revision))) + (sha256 + (base32 + "06mwpy5i218g5k3sf4gba0fmxgas82hkzx9fhwn67z5ik37d8apq")))))) (home-page (package-home-page texlive-bin)) (synopsis "Union of TeX Live packages") (description "This package provides a subset of the TeX Live @@ -2674,32 +3859,16 @@ without affecting the structure of the list (this works for @code{itemize} and @code{enumerate} lists, and numbered lists remain in sequence).") (license license:lppl))) -(define-public texlive-latex-filemod +(define-public texlive-filemod (package - (name "texlive-latex-filemod") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/filemod")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0vpxilfw69xv78f03g0j0zw0bw4qcn36whqp8phcq48qk1ax2kr2")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/latex/filemod"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) + (inherit (simple-texlive-package + "texlive-filemod" + (list "/doc/latex/filemod/" + "/tex/latex/filemod/" + "/tex/generic/filemod/") + (base32 + "1snsj7kblkj1ig3x3845lsypz7ab04lf0dcpdh946xakgjnz4fb5") + #:trivial? #t)) (home-page "https://www.ctan.org/pkg/filemod") (synopsis "Provide file modification times, and compare them") (description @@ -2713,6 +3882,9 @@ mode. The functionality is provided by purely expandable macros or by faster but non-expandable ones.") (license license:lppl1.3+))) +(define-public texlive-latex-filemod + (deprecated-package "texlive-latex-filemod" texlive-filemod)) + (define-public texlive-latex-ifplatform (package (name "texlive-latex-ifplatform") @@ -2812,32 +3984,15 @@ package options. A specialized system for setting @code{PSTricks} keys is provided by the @code{pst-xkey} package.") (license license:lppl1.3+))) -(define-public texlive-latex-pstool +(define-public texlive-pstool (package - (name "texlive-latex-pstool") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/pstool")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1h816jain8c9nky75kk8pmmwj5b4yf9dpqvdvi2l6jhfj5iqkzr8")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/latex/pstool"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) + (inherit (simple-texlive-package + "texlive-pstool" + (list "/doc/latex/pstool/" + "/tex/latex/pstool/") + (base32 + "12clzcw2cl7g2chr2phgmmiwxw4859cln1gbx1wgp8bl9iw590nc") + #:trivial? #t)) (propagated-inputs `(("texlive-latex-bigfoot" ,texlive-latex-bigfoot) ; for suffix ("texlive-latex-filemod" ,texlive-latex-filemod) @@ -2858,32 +4013,18 @@ drastically speeding up compilation time when only a single figure needs re-processing.") (license license:lppl))) -(define-public texlive-latex-seminar +(define-public texlive-latex-pstool + (deprecated-package "texlive-latex-pstool" texlive-pstool)) + +(define-public texlive-seminar (package - (name "texlive-latex-seminar") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/seminar")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0y4i651b75y6006n03x8n86bsqvjsailvvz9bhzy51dzsznqidq0")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/latex/seminar"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) + (inherit (simple-texlive-package + "texlive-seminar" + (list "/doc/latex/seminar/" + "/tex/latex/seminar/") + (base32 + "1clgw5xy867khzfn8d210rc5hsw5s7r0pznhk84niybvw4zc7r3f") + #:trivial? #t)) (home-page "https://www.ctan.org/pkg/seminar") (synopsis "Make overhead slides") ;; TODO: This package may need fancybox and xcomment at runtime. @@ -2895,6 +4036,9 @@ recent classes such as powerdot or beamer, both of which are tuned to 21st-century presentation styles.") (license license:lppl1.2+))) +(define-public texlive-latex-seminar + (deprecated-package "texlive-latex-seminar" texlive-seminar)) + (define-public texlive-latex-trimspaces (package (name "texlive-latex-trimspaces") @@ -2962,32 +4106,15 @@ space-stripped macros.") to something that's not a float.") (license license:lppl))) -(define-public texlive-latex-doi +(define-public texlive-doi (package - (name "texlive-latex-doi") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/doi")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0378rdmrgr2lzbfi4qqy4dfpj5im20diyd8z8b9m4mlg05r7wgnb")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/latex/doi"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) + (inherit (simple-texlive-package + "texlive-doi" + (list "/doc/latex/doi/README" + "/tex/latex/doi/") + (base32 + "17lnnhfmb8g4nh4fnyc9616h8xg3vjrzmlvfmlfqwwlfpma9xnnw") + #:trivial? #t)) (home-page "https://www.ctan.org/pkg/doi") (synopsis "Create correct hyperlinks for DOI numbers") (description @@ -3000,32 +4127,18 @@ hyperlink to the target of the DOI.") ;; Any version of the LPPL. (license license:lppl1.3+))) -(define-public texlive-latex-etoolbox +(define-public texlive-latex-doi + (deprecated-package "texlive-latex-doi" texlive-doi)) + +(define-public texlive-etoolbox (package - (name "texlive-latex-etoolbox") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/etoolbox")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1agmq6bf8wzcd77n20ng8bl4kh69cg5f6sjniii7bcw4llhd3nc8")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/latex/etoolbox"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) + (inherit (simple-texlive-package + "texlive-etoolbox" + (list "/doc/latex/etoolbox/" + "/tex/latex/etoolbox/") + (base32 + "1qg4x5r4ibinl6zy5lq70lv4zcrjsn54n6hwv31k5kl7mwv0mvr3") + #:trivial? #t)) (home-page "https://www.ctan.org/pkg/etoolbox") (synopsis "e-TeX tools for LaTeX") (description @@ -3038,6 +4151,9 @@ some LaTeX kernel commands; nevertheless, the package will not modify any part of the LaTeX kernel.") (license license:lppl1.3+))) +(define-public texlive-latex-etoolbox + (deprecated-package "texlive-latex-etoolbox" texlive-etoolbox)) + (define-public texlive-latex-fncychap (package (name "texlive-latex-fncychap") @@ -3691,7 +4807,7 @@ in SGML; use maths minus in text as appropriate; simple Young tableaux.") (setenv "MFINPUTS" (string-append (getcwd) ":" mf "/share/texmf-dist/metafont/base:" - (assoc-ref inputs "texlive-fonts-cm") + (assoc-ref inputs "texlive-cm") "/share/texmf-dist/fonts/source/public/cm"))) (mkdir "build") (for-each (lambda (font) @@ -3720,7 +4836,7 @@ in SGML; use maths minus in text as appropriate; simple Young tableaux.") (native-inputs `(("texlive-bin" ,texlive-bin) ("texlive-metafont-base" ,texlive-metafont-base) - ("texlive-fonts-cm" ,texlive-fonts-cm))) + ("texlive-cm" ,texlive-cm))) (home-page "https://www.ctan.org/pkg/ec") (synopsis "Computer modern fonts in T1 and TS1 encodings") (description @@ -3738,163 +4854,50 @@ fonts are available in (traced) Adobe Type 1 format, as part of the set, Latin Modern, is not actually a direct development of the EC set, and differs from the EC in a number of particulars.") (license (license:fsf-free "https://www.tug.org/svn/texlive/tags/\ -texlive-2017.1/Master/texmf-dist/doc/fonts/ec/copyrite.txt")))) - -(define-public texlive-fonts-adobe-times - (package - (name "texlive-fonts-adobe-times") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/type1/urw/times/")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "15vzyr7favkv1mj00qxr03s89kw78nd066fh69by93272g8p5sgd")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils) - (ice-9 match)) - #:builder - (begin - (use-modules (guix build utils) - (ice-9 match)) - (let ((root (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/")) - (pkgs '(("source" . "fonts/type1/urw/times") - - ("times-afm" . "fonts/afm/adobe/times") - ("times-tfm" . "fonts/tfm/adobe/times") - ("times-vf" . "fonts/vf/adobe/times") - - ("urw-afm" . "fonts/afm/urw/times") - ("urw35vf-tfm" . "fonts/tfm/urw35vf/times") - ("urw35vf-vf" . "fonts/vf/urw35vf/times") +texlive-2018.2/Master/texmf-dist/doc/fonts/ec/copyrite.txt")))) + +;; FIXME: the fonts should be built from source, but running "tex aefonts.tex" +;; fails with obscure TeX-typical error messages. +(define-public texlive-ae + (package + (inherit (simple-texlive-package + "texlive-ae" + (list "/doc/fonts/ae/" + "/source/fonts/ae/" + "/fonts/tfm/public/ae/" + "/fonts/vf/public/ae/" + "/tex/latex/ae/") + (base32 + "1xkzg381y0avdq381r2m990wp27czkdff0qkvsp2n5q62yc0bdsw") + #:trivial? #t)) + (home-page "https://www.ctan.org/pkg/ae") + (synopsis "Virtual fonts for T1 encoded CMR-fonts") + (description + "This package provides a set of virtual fonts which emulates T1 coded +fonts using the standard CM fonts. The package name, AE fonts, supposedly +stands for \"Almost European\". The main use of the package was to produce +PDF files using Adobe Type 1 versions of the CM fonts instead of bitmapped EC +fonts. Note that direct substitutes for the bitmapped EC fonts are available, +via the CM-super, Latin Modern and (in a restricted way) CM-LGC font sets.") + (license license:lppl1.3+))) - ("times-tex" . "tex/latex/times") - ("dvips" . "dvips/times") - ("fonts-map" . "fonts/map/dvips/times")))) - (for-each (match-lambda - ((pkg . dir) - (let ((target (string-append root dir))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs pkg) - target)))) - pkgs) - #t)))) - (native-inputs - `(("times-afm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/afm/adobe/times")) - (revision %texlive-revision))) - (file-name (string-append name "-afm-" version "-checkout")) - (sha256 - (base32 - "1k7h6vihfc6ri2lq9ggnq2g4zq3qcgq1vd0hr486g9cqrdpys6cy")))) - ("times-tfm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/tfm/adobe/times")) - (revision %texlive-revision))) - (file-name (string-append name "-tfm-" version "-checkout")) - (sha256 - (base32 - "1hbgkjnf5xyganbznwpwszvr3iyk4bzb0ys4hd8ybawp60paadrr")))) - ("times-vf" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/vf/adobe/times")) - (revision %texlive-revision))) - (file-name (string-append name "-vf-" version "-checkout")) - (sha256 - (base32 - "18rfspnwdw9r81dy18lb4w96d09b6c4g7y80azwylalkhwdf2lfp")))) - ("urw-afm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/afm/urw/times")) - (revision %texlive-revision))) - (file-name (string-append name "-urw-afm-" version "-checkout")) - (sha256 - (base32 - "0g0xpsyn6634g0b4rpd420v7i4gkz3zr12vcy2b8csbcscjvwri5")))) - ("urw35vf-tfm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/tfm/urw35vf/times")) - (revision %texlive-revision))) - (file-name (string-append name "-urw35vf-tfm-" version "-checkout")) - (sha256 - (base32 - "0a4idlvpaqd0ypqgy1xw0rpx8q23bvssg8xq757zzn3zikj0w7pr")))) - ("urw35vf-vf" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/vf/urw35vf/times")) - (revision %texlive-revision))) - (file-name (string-append name "-urw35vf-vf-" version "-checkout")) - (sha256 - (base32 - "05mppwxd4c5x0yw50gca726f0ylc1rk8jf0jjkrriixq6rnw03di")))) - ("times-tex" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/times")) - (revision %texlive-revision))) - (file-name (string-append name "-tex-" version "-checkout")) - (sha256 - (base32 - "1gmd0x7c3vkvfzgmrsp4866rcdbyimfk3bjr91zaadc41r1i8xrp")))) - ("dvips" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/dvips/times/")) - (revision %texlive-revision))) - (file-name (string-append name "-dvips-" version "-checkout")) - (sha256 - (base32 - "1fvqpgqi7bp2q76nf5kmlhsdijxw65arqfy3ax3djwih3yg12mp0")))) - ("fonts-map" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/map/dvips/times/")) - (revision %texlive-revision))) - (file-name (string-append name "-fonts-map-" version "-checkout")) - (sha256 - (base32 - "12f00gzs2zgllkm59qdhw2xxj7lvg3p256232f1l275z3pldfqqi")))))) +(define-public texlive-times + (package + (inherit (simple-texlive-package + "texlive-times" + (list "/dvips/times/" + "/fonts/afm/adobe/times/" + "/fonts/afm/urw/times/" + "/fonts/tfm/adobe/times/" + "/fonts/tfm/urw35vf/times/" + "/fonts/type1/urw/times/" + "/fonts/vf/adobe/times/" + "/fonts/vf/urw35vf/times/" + "/fonts/map/dvips/times/" + "/tex/latex/times/") + (base32 + "13g41a7vbkvsf7ki9dgl7qm100w382mnlqkcngwgl3axp6s5s8l0") + #:trivial? #t)) (home-page "https://ctan.org/pkg/urw-base35") (synopsis "URW Base 35 font pack for LaTeX") (description @@ -3903,161 +4906,27 @@ Adobe's basic set.") ;; No license version specified. (license license:gpl3+))) -(define-public texlive-fonts-adobe-palatino - (package - (name "texlive-fonts-adobe-palatino") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/type1/urw/palatino/")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "18dw5260c6fy7acxaqwrg3hw04kg63ijq4lkn56q5pa2g6nyylrp")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils) - (ice-9 match)) - #:builder - (begin - (use-modules (guix build utils) - (ice-9 match)) - (let ((root (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/")) - (pkgs '(("source" . "fonts/type1/urw/palatino") - - ("palatino-afm" . "fonts/afm/adobe/palatino") - ("palatino-tfm" . "fonts/tfm/adobe/palatino") - ("palatino-vf" . "fonts/vf/adobe/palatino") - - ("urw-afm" . "fonts/afm/urw/palatino") - ("urw35vf-tfm" . "fonts/tfm/urw35vf/palatino") - ("urw35vf-vf" . "fonts/vf/urw35vf/palatino") - - ("palatino-tex" . "tex/latex/palatino") - ("dvips" . "dvips/palatino") - ("fonts-map" . "fonts/map/dvips/palatino")))) - (for-each (match-lambda - ((pkg . dir) - (let ((target (string-append root dir))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs pkg) - target)))) - pkgs) - #t)))) - (native-inputs - `(("palatino-afm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/afm/adobe/palatino")) - (revision %texlive-revision))) - (file-name (string-append name "-afm-" version "-checkout")) - (sha256 - (base32 - "0pxizay730cx7rb9y5bqq9dn1zxx3arc33rmdsn7l29pc51flmmi")))) - ("palatino-tfm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/tfm/adobe/palatino")) - (revision %texlive-revision))) - (file-name (string-append name "-tfm-" version "-checkout")) - (sha256 - (base32 - "1w1vm0sk9kpsy14yhyf1v1q3c6b97cgbba74g578bcwjlh810mg0")))) - ("palatino-vf" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/vf/adobe/palatino")) - (revision %texlive-revision))) - (file-name (string-append name "-vf-" version "-checkout")) - (sha256 - (base32 - "1maqfis8hpybcn9lmm8r2b1g56620lfpsncg0742c3kkjd6dh97h")))) - ("urw-afm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/afm/urw/palatino")) - (revision %texlive-revision))) - (file-name (string-append name "-urw-afm-" version "-checkout")) - (sha256 - (base32 - "0gk0xwy1fs2si5kb1j3dzgm52c8sagv32gd9dmw88m7sgh5qkd87")))) - ("urw35vf-tfm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/tfm/urw35vf/palatino")) - (revision %texlive-revision))) - (file-name (string-append name "-urw35vf-tfm-" version "-checkout")) - (sha256 - (base32 - "19aq3xwfg7vkf1qzjdxgcvcdqwpvpavq3l25y64xni72qx0kmppz")))) - ("urw35vf-vf" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/vf/urw35vf/palatino")) - (revision %texlive-revision))) - (file-name (string-append name "-urw35vf-vf-" version "-checkout")) - (sha256 - (base32 - "1lkn4p6zimrs0ah6mxsang4bicp8j7xzl016529a3f168an7mdmj")))) - ("palatino-tex" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/palatino")) - (revision %texlive-revision))) - (file-name (string-append name "-tex-" version "-checkout")) - (sha256 - (base32 - "0ng9w7i0p1nb51amla32jj86vx6p84m6qc7asam3g4x8w5jf7s27")))) - ("dvips" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/dvips/palatino/")) - (revision %texlive-revision))) - (file-name (string-append name "-dvips-" version "-checkout")) - (sha256 - (base32 - "1pdbkfmhx4kk3brh5lg6fyl9ad2kbjmkrhgcx84klnlhq01mfdhb")))) - ("fonts-map" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/map/dvips/palatino/")) - (revision %texlive-revision))) - (file-name (string-append name "-fonts-map-" version "-checkout")) - (sha256 - (base32 - "0rg13hyp652hp3gnrj5pbyb84zkqmyi1qnm8c6spcyaq8pm06l0d")))))) +(define-public texlive-fonts-adobe-times + (deprecated-package "texlive-fonts-adobe-times" texlive-times)) + +(define-public texlive-palatino + (package + (inherit (simple-texlive-package + "texlive-palatino" + (list "/dvips/palatino/" + "/fonts/afm/adobe/palatino/" + "/fonts/afm/urw/palatino/" + "/fonts/tfm/adobe/palatino/" + "/fonts/tfm/urw35vf/palatino/" + "/fonts/type1/urw/palatino/" + "/fonts/vf/adobe/palatino/" + "/fonts/vf/urw35vf/palatino/" + + "/fonts/map/dvips/palatino/" + "/tex/latex/palatino/") + (base32 + "12jc0av7v99857jigmva47qaxyllhpzsnqis10n0qya2kz44xf22") + #:trivial? #t)) (home-page "https://ctan.org/pkg/urw-base35") (synopsis "URW Base 35 font pack for LaTeX") (description @@ -4066,133 +4935,24 @@ Adobe's basic set.") ;; No license version specified. (license license:gpl3+))) -(define-public texlive-fonts-adobe-zapfding - (package - (name "texlive-fonts-adobe-zapfding") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/type1/urw/zapfding/")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1sp3jblg3khp0yj121blvhph6ib09919kyrsk5x2lg258yypqyis")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils) - (ice-9 match)) - #:builder - (begin - (use-modules (guix build utils) - (ice-9 match)) - (let ((root (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/")) - (pkgs '(("source" . "fonts/type1/urw/zapfding") - ("zapf-afm" . "fonts/afm/adobe/zapfding") - ("zapf-tfm" . "fonts/tfm/adobe/zapfding") - ("urw-afm" . "fonts/afm/urw/zapfding") - ("urw35vf-tfm" . "fonts/tfm/urw35vf/zapfding") - - ("zapf-tex" . "tex/latex/zapfding") - ("dvips" . "dvips/zapfding") - ("fonts-map" . "fonts/map/dvips/zapfding")))) - (for-each (match-lambda - ((pkg . dir) - (let ((target (string-append root dir))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs pkg) - target)))) - pkgs) - #t)))) - (native-inputs - `(("zapf-afm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/afm/adobe/zapfding")) - (revision %texlive-revision))) - (file-name (string-append name "-afm-" version "-checkout")) - (sha256 - (base32 - "0qvl4w1bfcpiakkd8rvkism46qnvzj9w7x4r8z9m0y7mspbkblyr")))) - ("zapf-tfm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/tfm/adobe/zapfding")) - (revision %texlive-revision))) - (file-name (string-append name "-tfm-" version "-checkout")) - (sha256 - (base32 - "1i8mh9xsl8l4cgsg3nl4ha9q6m55j122riclaxsvkc5ka83432qm")))) - ("urw-afm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/afm/urw/zapfding")) - (revision %texlive-revision))) - (file-name (string-append name "-urw-afm-" version "-checkout")) - (sha256 - (base32 - "0m4qndqh7ji723ff82c5c1q8ziqvblbaip7vx05vnl15fqbsnfx1")))) - ("urw35vf-tfm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/tfm/urw35vf/zapfding")) - (revision %texlive-revision))) - (file-name (string-append name "-urw35vf-tfm-" version "-checkout")) - (sha256 - (base32 - "167g2x6mpjfqh0w1fhjbw14qcx6ridrj2zm1bd8bi0l2d7phj28m")))) - ("zapf-tex" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/zapfding")) - (revision %texlive-revision))) - (file-name (string-append name "-tex-" version "-checkout")) - (sha256 - (base32 - "0hp7i8f6nbrg7irrwc8fd7n1hrzjysa84d6iyivwlc65v9p7lmd0")))) - ("dvips" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/dvips/zapfding/")) - (revision %texlive-revision))) - (file-name (string-append name "-dvips-" version "-checkout")) - (sha256 - (base32 - "1f18sc4qwxykd786zhn6szcrycqvpvfhlcim71aamxmwghakd7fa")))) - ("fonts-map" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/map/dvips/zapfding/")) - (revision %texlive-revision))) - (file-name (string-append name "-fonts-map-" version "-checkout")) - (sha256 - (base32 - "17kwxmdrgz2fb072hx57a3pidcrhbgayphx11zyld2hv9149pkyl")))))) +(define-public texlive-fonts-adobe-palatino + (deprecated-package "texlive-fonts-adobe-palatino" texlive-palatino)) + +(define-public texlive-zapfding + (package + (inherit (simple-texlive-package + "texlive-zapfding" + (list "/dvips/zapfding/" + "/fonts/afm/adobe/zapfding/" + "/fonts/afm/urw/zapfding/" + "/fonts/tfm/adobe/zapfding/" + "/fonts/tfm/urw35vf/zapfding/" + "/fonts/type1/urw/zapfding/" + "/fonts/map/dvips/zapfding/" + "/tex/latex/zapfding/") + (base32 + "17mls8wilz9api9ivsbcczpiqp1f39qy8wa6ajssi8zhnc5lq7zn") + #:trivial? #t)) (home-page "https://ctan.org/pkg/urw-base35") (synopsis "URW Base 35 font pack for LaTeX") (description @@ -4201,6 +4961,9 @@ Adobe's basic set.") ;; No license version specified. (license license:gpl3+))) +(define-public texlive-fonts-adobe-zapfding + (deprecated-package "texlive-fonts-adobe-zapfding" texlive-zapfding)) + (define-public texlive-fonts-rsfs (package (name "texlive-fonts-rsfs") @@ -4235,7 +4998,7 @@ Adobe's basic set.") (setenv "MFINPUTS" (string-append (getcwd) ":" mf "/share/texmf-dist/metafont/base:" - (assoc-ref inputs "texlive-fonts-cm") + (assoc-ref inputs "texlive-cm") "/share/texmf-dist/fonts/source/public/cm"))) (mkdir "build") (for-each (lambda (font) @@ -4264,7 +5027,7 @@ Adobe's basic set.") (native-inputs `(("texlive-bin" ,texlive-bin) ("texlive-metafont-base" ,texlive-metafont-base) - ("texlive-fonts-cm" ,texlive-fonts-cm))) + ("texlive-cm" ,texlive-cm))) (home-page "https://www.ctan.org/pkg/rsfs") (synopsis "Ralph Smith's Formal Script font") (description @@ -4606,120 +5369,24 @@ float, but you can put it in a @code{table} or a @code{table*} or some other environment.") (license (license:fsf-free "file://threeparttable.sty")))) -(define-public texlive-fonts-txfonts +(define-public texlive-txfonts (package - (name "texlive-fonts-txfonts") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/txfonts")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0jl921qdphg8i7bkfprackn3xd4gmvxckc526nmzqsmahqkavgg2")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils) - (ice-9 match)) - #:builder - (begin - (use-modules (guix build utils) - (ice-9 match)) - (let ((root (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/")) - (pkgs '(("source" . "tex/latex/txfonts") - ("txfonts-vf" . "fonts/tfm/public/txfonts") - ("txfonts-afm" . "fonts/afm/public/txfonts") - ("txfonts-tfm" . "fonts/tfm/public/txfonts") - ("txfonts-type1" . "fonts/type1/public/txfonts") - ("txfonts-enc" . "fonts/enc/dvips/txfonts") - ("txfonts-map" . "fonts/map/dvips/txfonts")))) - (for-each (match-lambda - ((pkg . dir) - (let ((target (string-append root dir))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs pkg) - target)))) - pkgs) - #t)))) - (native-inputs - `(("txfonts-tfm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/tfm/public/txfonts")) - (revision %texlive-revision))) - (file-name (string-append name "-tfm-" version "-checkout")) - (sha256 - (base32 - "12ffmbrp48ap35qa3b4mi6ckif9q2vf7972jxh5dc1yzykhla2xv")))) - ("txfonts-vf" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/vf/public/txfonts")) - (revision %texlive-revision))) - (file-name (string-append name "-vf-" version "-checkout")) - (sha256 - (base32 - "04acyfdwvxpfx4l2xh2bpzdmpvwdf2pzbs7a236b0xckz2jvc1ci")))) - ("txfonts-afm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/afm/public/txfonts")) - (revision %texlive-revision))) - (file-name (string-append name "-afm-" version "-checkout")) - (sha256 - (base32 - "1705klz51pnqzcs89s3521b84b6c89wlczflsh0vci66nl155yis")))) - ("txfonts-type1" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/type1/public/txfonts")) - (revision %texlive-revision))) - (file-name (string-append name "-type1-" version "-checkout")) - (sha256 - (base32 - "0ajwr7zb6ch3gxd0g8p2i4llhy2wr9a9saz6jq6hm6fxf4pgl5h3")))) - ("txfonts-map" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/map/dvips/txfonts")) - (revision %texlive-revision))) - (file-name (string-append name "-map-" version "-checkout")) - (sha256 - (base32 - "0kamr8a9x24jakas3v09dgv7kkpybj3i7qv4vz1iyypqr6kk1raj")))) - ("txfonts-enc" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/enc/dvips/txfonts")) - (revision %texlive-revision))) - (file-name (string-append name "-enc-" version "-checkout")) - (sha256 - (base32 - "1bal5fhw0xlhl37ayv8vlnqnsn1y82kadzfjhbgr223blspp4zsj")))))) - (home-page "https://www.ctan.org/pkg/threeparttable") + (inherit (simple-texlive-package + "texlive-txfonts" + (list "/doc/fonts/txfonts/" + + "/fonts/afm/public/txfonts/" + "/fonts/tfm/public/txfonts/" + "/fonts/type1/public/txfonts/" + "/fonts/vf/public/txfonts/" + + "/fonts/map/dvips/txfonts/" + "/fonts/enc/dvips/txfonts/" + "/tex/latex/txfonts/") + (base32 + "017zjas5y1zlyq0iy4x6mv1qbz23xcy3y5xs0crj6zdnfvnccqgp") + #:trivial? #t)) + (home-page "https://www.ctan.org/pkg/txfonts") (synopsis "Times-like fonts in support of mathematics") (description "Txfonts supplies virtual text roman fonts using Adobe Times (or URW @@ -4737,6 +5404,9 @@ TeX metrics (VF and TFM files) and macros for use with LaTeX.") ;; Any version of the GPL with font exception. (license license:gpl3+))) +(define-public texlive-fonts-txfonts + (deprecated-package "texlive-fonts-txfonts" texlive-txfonts)) + (define-public texlive-fonts-iwona (package (name "texlive-fonts-iwona") @@ -5523,8 +6193,7 @@ develop documents with LaTeX, in a single application.") (delete-file "book.pdf") #t))))) (native-inputs - `(("texlive" ,(texlive-union (list texlive-latex-amsfonts - texlive-fonts-amsfonts + `(("texlive" ,(texlive-union (list texlive-amsfonts texlive-fonts-adobe-palatino texlive-fonts-adobe-zapfding texlive-fonts-knuth-lib @@ -6146,119 +6815,45 @@ titles.") ;; No version of the GPL is specified. (license license:gpl3+))) -(define-public texlive-generic-xypic - (package - (name "texlive-generic-xypic") - (version (number->string %texlive-revision)) - (source - (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/generic/xypic")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1g5cyxwdfznq4lk9zl6fkjkapmhmwd2cm4m5aibxj20qgwnaggfz")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/generic/xypic"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) - (home-page "https://www.ctan.org/pkg/xypic") - (synopsis "Flexible diagramming macros for TeX") - (description - "A package for typesetting a variety of graphs and diagrams with TeX. -Xy-pic works with most formats (including LaTeX, AMS-LaTeX, AMS-TeX, and plain -TeX).") - (license license:gpl3+))) +(define-public texlive-xypic + (let ((template (simple-texlive-package + "texlive-xypic" + (list "/doc/generic/xypic/" + "/dvips/xypic/xy389dict.pro" + "/fonts/enc/dvips/xypic/" + "/fonts/map/dvips/xypic/xypic.map" + + "/fonts/source/public/xypic/" + "/fonts/afm/public/xypic/" + "/fonts/tfm/public/xypic/" + "/fonts/type1/public/xypic/" + + ;;"/tex/generic/xypic/" ; I guess these are generated + ) + (base32 + "0sqkkvjzzsiazvh8803qqyrcv4is3m1qs9x9v2m35jjikbqc08y8")))) + (package + (inherit template) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ #t) + "tex/generic/xypic") + ((#:phases phases) + `(modify-phases ,phases + (delete 'reset-gzip-timestamps))))) + (home-page "https://www.ctan.org/pkg/xypic") + (synopsis "Flexible diagramming macros") + (description "This is a package for typesetting a variety of graphs and +diagrams with TeX. Xy-pic works with most formats (including LaTeX, +AMS-LaTeX, AMS-TeX, and plain TeX). The distribution includes Michael Barr's +@code{diag} package, which was previously distributed stand-alone.") + (license license:gpl3+)))) (define-public texlive-fonts-xypic - (package - (name "texlive-fonts-xypic") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/source/public/xypic")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0p20v1257kwsqnrk98cdhhiz2viv8l3ly4xay4by0an3j37m9xs3")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils) - (ice-9 match)) - #:builder - (begin - (use-modules (guix build utils) - (ice-9 match)) - (let ((root (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/")) - (pkgs '(("source" . "fonts/source/public/xypic") - ("xypic-afm" . "fonts/afm/public/xypic") - ("xypic-type1" . "fonts/type1/public/xypic") - ("xypic-enc" . "fonts/enc/dvips/xypic")))) - (for-each (match-lambda - ((pkg . dir) - (let ((target (string-append root dir))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs pkg) - target)))) - pkgs) - #t)))) - (native-inputs - `(("xypic-afm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/afm/public/xypic")) - (revision %texlive-revision))) - (file-name (string-append name "-afm-" version "-checkout")) - (sha256 - (base32 - "149xdijxp8lw3s0qv2aqxxxyyn748z57dpr596rjvkqdffpnsddh")))) - ("xypic-type1" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/type1/public/xypic")) - (revision %texlive-revision))) - (file-name (string-append name "-type1-" version "-checkout")) - (sha256 - (base32 - "1bln89wib7g3hcv2jny3qi6jb73k9d2vbgx3wnnjwp3ryg0846if")))) - ("xypic-enc" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/enc/dvips/xypic")) - (revision %texlive-revision))) - (file-name (string-append name "-enc-" version "-checkout")) - (sha256 - (base32 - "0yi8vms3203l3p5slnhrrlzzp0f0jw77fkcvcaicrz2vmw9z99x7")))))) - (home-page "https://www.ctan.org/pkg/xypic") - (synopsis "Fonts for XY-pic") - (description "This package provides the XY-pic fonts.") - (license license:gpl3+))) + (deprecated-package "texlive-fonts-xypic" texlive-xypic)) + +(define-public texlive-generic-xypic + (deprecated-package "texblive-generic-xypic" texlive-xypic)) (define-public texlive-bibtex (package @@ -6296,74 +6891,29 @@ be specified in the document itself (one often needs a LaTeX citation-style package, such as @command{natbib} as well).") (license license:knuth))) -(define-public texlive-fonts-charter +(define-public texlive-charter (package - (name "texlive-fonts-charter") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/type1/bitstrea/charter")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0yvib45xxff3jm5270zij4q888pivbc18cqs7lz4pqfhn1am4wnv")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils) - (ice-9 match)) - #:builder - (begin - (use-modules (guix build utils) - (ice-9 match)) - (let ((root (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/")) - (pkgs '(("source" . "fonts/type1/bitstrea/charter") - ("charter-afm" . "fonts/afm/bitstrea/charter") - ("charter-tfm" . "fonts/tfm/bitstrea/charter")))) - (for-each (match-lambda - ((pkg . dir) - (let ((target (string-append root dir))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs pkg) - target)))) - pkgs) - #t)))) - (native-inputs - `(("charter-afm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/afm/bitstrea/charter")) - (revision %texlive-revision))) - (file-name (string-append name "-afm-" version "-checkout")) - (sha256 - (base32 - "02nbkqrlr3vypnzslmr7dxg1353mmc0rl4ynx0s6qbvf313fq76a")))) - ("charter-tfm" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/fonts/tfm/bitstrea/charter")) - (revision %texlive-revision))) - (file-name (string-append name "-tfm-" version "-checkout")) - (sha256 - (base32 - "0j7ci9vprivbhac70aq0z7m23hqcpx1g0i3wp1k0h8ilhimj80xk")))))) + (inherit (simple-texlive-package + "texlive-charter" + (list "/doc/fonts/charter/readme.charter" + "/fonts/afm/bitstrea/charter/" + "/fonts/tfm/bitstrea/charter/" + "/fonts/type1/bitstrea/charter/" + "/fonts/vf/bitstrea/charter/") + (base32 + "09l5ymgz48s3hyn776l01g3isk3dnhrj1vdavdw4qq4kfxxpqdn9") + #:trivial? #t)) (home-page "https://www.ctan.org/pkg/charter") (synopsis "Charter fonts for TeX") - (description "A commercial text font donated for the common good. Support -for use with LaTeX is available in @code{freenfss}, part of + (description "This package provides a copy of the Charter Type-1 fonts +which Bitstream contributed to the X consortium, renamed for use with TeX. +Support for use with LaTeX is available in @code{freenfss}, part of @command{psnfss}. ") - (license (license:non-copyleft (string-append "http://mirrors.ctan.org/" - "fonts/charter/readme.charter"))))) + (license (license:non-copyleft + "http://mirrors.ctan.org/fonts/charter/readme.charter")))) + +(define-public texlive-fonts-charter + (deprecated-package "texlive-fonts-charter" texlive-charter)) (define-public texlive-context-base (package @@ -6398,56 +6948,20 @@ supports advanced interactive documents. See the ConTeXt garden for a wealth of support information.") (license license:gpl2+))) -(define-public texlive-latex-beamer +(define-public texlive-beamer (package - (name "texlive-latex-beamer") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/beamer")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "09y3qwbj0nckshvg9afgwcv9v3zdif1d7bnpzrggsa1fbr80mgk2")))) - (build-system trivial-build-system) - (outputs '("out" "doc")) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/latex/beamer")) - (docs (string-append (assoc-ref %outputs "doc") - "/share/texmf-dist/doc/latex/beamer/"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - - (mkdir-p docs) - (copy-recursively (assoc-ref %build-inputs "docs") docs) - #t)))) + (inherit (simple-texlive-package + "texlive-beamer" + (list "/doc/latex/beamer/" + "/tex/latex/beamer/") + (base32 + "00z1a32wkz1ffif7dc8h3ar2fn2hlvfnljgim2szjam2k14l82x3") + #:trivial? #t)) (propagated-inputs `(("texlive-latex-hyperref" ,texlive-latex-hyperref) ("texlive-latex-oberdiek" ,texlive-latex-oberdiek) ("texlive-latex-etoolbox" ,texlive-latex-etoolbox) ("texlive-latex-pgf" ,texlive-latex-pgf))) - (native-inputs - `(("docs" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/doc/latex/beamer")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "102b18b9nw9dicqqgjwx0srh1mav8vh9wdvwayn741niza9hac23")))))) (home-page "https://www.ctan.org/pkg/beamer") (synopsis "LaTeX class for producing presentations and slides") (description "The beamer LaTeX class can be used for producing slides. @@ -6463,6 +6977,9 @@ effects, varying slide transitions and animations.") ;; dual-licensed under either FDLv1.3+ or LPPL1.3c+. (license (list license:lppl1.3c+ license:gpl2+ license:fdl1.3+)))) +(define-public texlive-latex-beamer + (deprecated-package "texlive-latex-beamer" texlive-beamer)) + (define-public texlive-latex-xmpincl (package (name "texlive-latex-xmpincl") diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index e46984e9ab..1ebeb41aff 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -473,16 +473,18 @@ and creating Matroska files from other media files (@code{mkvmerge}).") (define-public x265 (package (name "x265") - (version "3.1.1") + (version "3.1.2") (outputs '("out" "static")) (source (origin (method url-fetch) - (uri (string-append "https://download.videolan.org/videolan/x265/" - "x265_" version ".tar.gz")) + (uri (list (string-append "https://bitbucket.org/multicoreware/x265" + "/downloads/x265_" version ".tar.gz") + (string-append "https://download.videolan.org/videolan/x265/" + "x265_" version ".tar.gz"))) (sha256 (base32 - "1l68lgdbsi4wjz5vad98ggx7mf92rnvzlq34m6w0a08ark3h0yc2")) + "1ajr59gjj47gnczfb2qhmzclj746pdiq9a1d81b0mq22k8f5yy3g")) (patches (search-patches "x265-arm-flags.patch")) (modules '((guix build utils))) (snippet '(begin @@ -790,17 +792,18 @@ operate properly.") (define-public ffmpeg (package (name "ffmpeg") - (version "4.1.4") + (version "4.2") (source (origin (method url-fetch) (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" version ".tar.xz")) (sha256 (base32 - "1qd7a10gs12ifcp31gramcgqjl77swskjfp7cijibgyg5yl4kw7i")))) + "1mgcxm7sqkajx35px05szsmn9mawwm03cfpmk3br7bcp3a1i0gq2")))) (build-system gnu-build-system) (inputs - `(("fontconfig" ,fontconfig) + `(("dav1d" ,dav1d) + ("fontconfig" ,fontconfig) ("freetype" ,freetype) ("frei0r-plugins" ,frei0r-plugins) ("gnutls" ,gnutls) @@ -899,6 +902,7 @@ operate properly.") "--enable-libbluray" "--enable-libcaca" "--enable-libcdio" + "--enable-libdav1d" "--enable-libfreetype" "--enable-libmp3lame" "--enable-libopus" @@ -981,9 +985,10 @@ audio/video codec library.") (arguments (substitute-keyword-arguments (package-arguments ffmpeg) ((#:configure-flags flags) - `(delete "--enable-libaom" ,flags)))) - (inputs (alist-delete "libaom" - (package-inputs ffmpeg))))) + `(delete "--enable-libdav1d" (delete "--enable-libaom" + ,flags))))) + (inputs (alist-delete "dav1d" (alist-delete "libaom" + (package-inputs ffmpeg)))))) (define-public ffmpeg-for-stepmania (hidden-package @@ -2061,12 +2066,6 @@ capabilities.") ("libass" ,libass) ("tesseract-ocr" ,tesseract-ocr) ("zimg" ,zimg))) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'autogen - (lambda _ - (invoke "sh" "autogen.sh")))))) (home-page "http://www.vapoursynth.com/") (synopsis "Video processing framework") (description "VapourSynth is a C++ library and Python module for video @@ -2509,12 +2508,6 @@ Other features include a live preview and live streaming.") (base32 "18yfkr70lr1x1hc8snn2ldnbzdcc7b64xmkqrfk8w59gpg7sl1xn")))) (build-system gnu-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'autogen.sh - (lambda _ - (invoke "sh" "autogen.sh")))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake))) @@ -2894,10 +2887,7 @@ practically any type of media.") (add-after 'unpack 'change-to-build-dir (lambda _ (chdir "Project/GNU/Library") - #t)) - (add-after 'change-to-build-dir 'autogen - (lambda _ - (invoke "sh" "autogen.sh")))))) + #t))))) (home-page "https://mediaarea.net/en/MediaInfo") (synopsis "Library for retrieving media metadata") (description "MediaInfo is a library used for retrieving technical diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index 7c69f7b60e..26477714e4 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -390,16 +390,14 @@ manage system or application containers.") (define-public libvirt (package (name "libvirt") - (version "5.5.0") + (version "5.6.0") (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")))) + (base32 "1d5rmcx5fgb024hw8chbiv886n3jal5wp2yajjk5l4qh9s9gkx35")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -523,15 +521,15 @@ three libraries: (define-public python-libvirt (package (name "python-libvirt") - (version "5.5.0") + (version "5.6.0") (source (origin (method url-fetch) - ;; The latest version hosted on PyPI at 5.5.0 release time was 5.3.0. + ;; The latest version hosted on PyPI at 5.6.0 release time was 5.5.0. (uri (string-append "https://libvirt.org/sources/python/libvirt-python-" version ".tar.gz")) (sha256 - (base32 "00x6idyw9xrrr21vrnsyw37q2sd8yh4n6pwh0l28hh9yp3nsy72n")))) + (base32 "11i440aibykxw22fzyavmrvn67s8rmnijw5bag0yx9r8jpnkzwad")))) (build-system python-build-system) (arguments `(#:phases diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm index c7046b7f50..d1a7248536 100644 --- a/gnu/packages/vpn.scm +++ b/gnu/packages/vpn.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2013, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Jeff Mickey <j@codemac.net> -;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com> @@ -227,11 +227,6 @@ the entire VPN in a network namespace accessible only through SSH.") ("automake" ,automake))) (inputs `(("libevent" ,libevent))) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'autogen - (lambda _ (invoke "sh" "autogen.sh")))))) (home-page "https://github.com/cernekee/ocproxy") (synopsis "OpenConnect proxy") (description @@ -252,11 +247,12 @@ the user specifically asks to proxy, so the @dfn{VPN} interface no longer (sha256 (base32 "1wlypi68kqqg2mdck8wvf6aanhrmf9i7z6lngyxvcrp23jdzz34h")))) (build-system gnu-build-system) - (inputs + (propagated-inputs `(("libxml2" ,libxml2) ("gnutls" ,gnutls) - ("vpnc-scripts" ,vpnc-scripts) ("zlib" ,zlib))) + (inputs + `(("vpnc-scripts" ,vpnc-scripts))) (native-inputs `(("gettext" ,gettext-minimal) ("pkg-config" ,pkg-config))) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 8fe94e28b4..160c267882 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -131,20 +131,19 @@ the leaves of a full binary tree.") (define-public i3status (package (name "i3status") - (version "2.12") + (version "2.13") (source (origin (method url-fetch) (uri (string-append "https://i3wm.org/i3status/i3status-" version ".tar.bz2")) (sha256 (base32 - "06krpbijv4yi33nypg6qcn4hilcrdyarsdpd9fmr2cq46qaqiikg")))) + "0rhlzb96mw64z2jnhwz9nibc7pxg549626lz5642xxk5hpzwk2ff")))) (build-system gnu-build-system) (arguments - `(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output)) - #:phases - (modify-phases %standard-phases - (delete 'configure)) + `(;; XXX: Do an "out of source" build to work around + ;; <https://github.com/i3/i3status/issues/339>. + #:out-of-source? #t #:tests? #f)) ; no test suite (inputs `(("openlibm" ,openlibm) @@ -156,7 +155,10 @@ the leaves of a full binary tree.") ("libcap" ,libcap) ("asciidoc" ,asciidoc))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config) + ("docbook-xsl" ,docbook-xsl) + ("libxml2" ,libxml2) ;for XML_CATALOG_FILES + ("xmlto" ,xmlto))) (home-page "https://i3wm.org/i3status/") (synopsis "Status bar for i3bar, dzen2, xmobar or similar programs") (description "i3status is a small program for generating a status bar for @@ -171,14 +173,14 @@ commands would.") (define-public i3-wm (package (name "i3-wm") - (version "4.16.1") + (version "4.17") (source (origin (method url-fetch) (uri (string-append "https://i3wm.org/downloads/i3-" version ".tar.bz2")) (sha256 (base32 - "0xl56y196vxv001gvx35xwfr25zah8m3xwizp9ycdgdc0rfc4rdb")))) + "1z8qmkkq9dhqmqy8sjw3rnpnmnb8v7lr456bs0qzp23bgpj17gjf")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -288,8 +290,6 @@ Despite the name it should work with any X11 window manager.") (arguments `(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases - (add-after 'unpack 'autogen - (lambda _ (invoke "sh" "autogen.sh"))) (add-after 'install 'install-doc (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 7f1ae9d9e6..926fb746b0 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -2909,8 +2909,8 @@ X server.") (define-public xf86-video-intel - (let ((commit "6afed33b2d673d88674f0c76efe500ae414e8e1b") - (revision "13")) + (let ((commit "6f4972d5c368c30e971a23c1dc370d3e43761282") + (revision "14")) (package (name "xf86-video-intel") (version (git-version "2.99.917" revision commit)) @@ -2923,7 +2923,7 @@ X server.") (commit commit))) (sha256 (base32 - "1s3fqlqzmql7s15m7qy21vai93n6q9f0ccpv0p353rwfx16mmf35")) + "0bc46qqglzfm4g9q4c2vgynvps2ng0xvlxnjpm9d6z4q6scdhz59")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (inputs `(("mesa" ,mesa) diff --git a/gnu/tests/reconfigure.scm b/gnu/tests/reconfigure.scm index 3a2f0a2e53..fb11e6164e 100644 --- a/gnu/tests/reconfigure.scm +++ b/gnu/tests/reconfigure.scm @@ -19,8 +19,10 @@ (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 system accounts) + #:use-module (gnu system shadow) + #:use-module (gnu system vm) #:use-module (gnu tests) #:use-module (guix derivations) #:use-module (guix gexp) @@ -43,7 +45,13 @@ generation of the system profile." (define os (marionette-operating-system - (simple-operating-system) + (operating-system + (inherit (simple-operating-system)) + (users (cons (user-account + (name "jakob") + (group "users") + (home-directory "/home/jakob")) + %base-user-accounts))) #:imported-modules '((gnu services herd) (guix combinators)))) @@ -84,7 +92,25 @@ generation of the system profile." (test-equal "script created new generation" (length (system-generations marionette)) - (1+ (length generations-prior)))) + (1+ (length generations-prior))) + + (test-assert "script activated the new generation" + (and (eqv? 'symlink + (marionette-eval + '(stat:type (lstat "/run/current-system")) + marionette)) + (string= #$os + (marionette-eval + '(readlink "/run/current-system") + marionette)))) + + (test-assert "script activated user accounts" + (marionette-eval + '(string-contains (call-with-input-file "/etc/passwd" + (lambda (port) + (get-string-all port))) + "jakob") + marionette))) (test-end) (exit (= (test-runner-fail-count (test-runner-current)) 0))))) diff --git a/guix/build-system/texlive.scm b/guix/build-system/texlive.scm index b6a86a1c62..ad99d1e2d0 100644 --- a/guix/build-system/texlive.scm +++ b/guix/build-system/texlive.scm @@ -30,6 +30,7 @@ texlive-build texlive-build-system texlive-ref + texlive-origin %texlive-tag %texlive-revision)) @@ -44,6 +45,20 @@ (define %texlive-tag "texlive-2018.2") (define %texlive-revision 49435) +(define (texlive-origin name version locations hash) + "Return an <origin> object for a TeX Live package consisting of multiple +LOCATIONS with a provided HASH. Use NAME and VERSION to compute a prettier +name for the checkout directory." + (origin + (method svn-multi-fetch) + (uri (svn-multi-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/")) + (locations locations) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 hash))) + (define (texlive-ref component id) "Return a <svn-reference> object for the package ID, which is part of the given Texlive COMPONENT." diff --git a/guix/build/svn.scm b/guix/build/svn.scm index 913f89471b..e3188add3e 100644 --- a/guix/build/svn.scm +++ b/guix/build/svn.scm @@ -36,7 +36,7 @@ "Fetch REVISION from URL into DIRECTORY. REVISION must be an integer, and a valid Subversion revision. Return #t on success, #f otherwise." (apply invoke svn-command - "checkout" "--non-interactive" + "export" "--non-interactive" ;; Trust the server certificate. This is OK as we ;; verify the checksum later. This can be removed when ;; ca-certificates package is added. @@ -46,13 +46,6 @@ valid Subversion revision. Return #t on success, #f otherwise." (string-append "--password=" password)) '()) ,url ,directory)) - - ;; The contents of '.svn' vary as a function of the current status - ;; of the repo. Since we want a fixed output, this directory needs - ;; to be taken out. - (with-directory-excursion directory - (for-each delete-file-recursively (find-files "." "^\\.svn$" #:directories? #t))) - #t) ;;; svn.scm ends here diff --git a/guix/scripts/deploy.scm b/guix/scripts/deploy.scm index 52bba3f3bf..ebc99e52cc 100644 --- a/guix/scripts/deploy.scm +++ b/guix/scripts/deploy.scm @@ -19,6 +19,7 @@ (define-module (guix scripts deploy) #:use-module (gnu machine) + #:use-module (guix discovery) #:use-module (guix scripts) #:use-module (guix scripts build) #:use-module (guix store) @@ -74,7 +75,10 @@ Perform the deployment specified by FILE.\n")) (define (load-source-file file) "Load FILE as a user module." - (let ((module (make-user-module '((gnu) (gnu machine) (gnu machine ssh))))) + (let* ((guix-path (dirname (search-path %load-path "guix.scm"))) + (environment-modules (scheme-modules* guix-path "gnu/machine")) + (module (make-user-module (append '((gnu) (gnu machine)) + environment-modules)))) (load* file module))) (define (guix-deploy . args) diff --git a/guix/scripts/system/reconfigure.scm b/guix/scripts/system/reconfigure.scm index dee0c24bd2..579b7fffbe 100644 --- a/guix/scripts/system/reconfigure.scm +++ b/guix/scripts/system/reconfigure.scm @@ -195,21 +195,31 @@ BOOTLOADER-PACKAGE." (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) + (new-gc-root (string-append gc-root ".new"))) + ;; #$bootcfg has dependencies. + ;; The bootloader magically loads the configuration from + ;; (string-append #$target #$bootcfg-file) (for example + ;; "/boot/grub/grub.cfg"). + ;; If we didn't do something special, the garbage collector + ;; would remove the dependencies of #$bootcfg. + ;; Register #$bootcfg as a GC root. ;; 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. + (switch-symlinks new-gc-root #$bootcfg) + (install-boot-config #$bootcfg #$bootcfg-file #$target) (when #$installer (catch #t (lambda () (#$installer #$bootloader-package #$device #$target)) (lambda args - (delete-file temp-gc-root) + (delete-file new-gc-root) (apply throw args)))) - (rename-file temp-gc-root gc-root))))))) + ;; We are sure that the installation of the bootloader + ;; succeeded, so we can replace the old GC root by the new + ;; GC root now. + (rename-file new-gc-root gc-root))))))) (define* (install-bootloader eval configuration bootcfg #:key diff --git a/guix/svn-download.scm b/guix/svn-download.scm index c118869af1..5c25437059 100644 --- a/guix/svn-download.scm +++ b/guix/svn-download.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in> -;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,7 +32,14 @@ svn-reference-url svn-reference-revision svn-fetch - download-svn-to-store)) + download-svn-to-store + + svn-multi-reference + svn-multi-reference? + svn-multi-reference-url + svn-multi-reference-revision + svn-multi-reference-locations + svn-multi-fetch)) ;;; Commentary: ;;; @@ -83,6 +90,54 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." #:guile-for-build guile #:local-build? #t))) +(define-record-type* <svn-multi-reference> + svn-multi-reference make-svn-multi-reference + svn-multi-reference? + (url svn-multi-reference-url) ; string + (revision svn-multi-reference-revision) ; number + (locations svn-multi-reference-locations) ; list of strings + (user-name svn-multi-reference-user-name (default #f)) + (password svn-multi-reference-password (default #f))) + +(define* (svn-multi-fetch ref hash-algo hash + #:optional name + #:key (system (%current-system)) (guile (default-guile)) + (svn (subversion-package))) + "Return a fixed-output derivation that fetches REF, a <svn-multi-reference> +object. The output is expected to have recursive hash HASH of type +HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." + (define build + (with-imported-modules '((guix build svn) + (guix build utils)) + #~(begin + (use-modules (guix build svn) + (guix build utils) + (srfi srfi-1)) + (every (lambda (location) + ;; The directory must exist if we are to fetch only a + ;; single file. + (unless (string-suffix? "/" location) + (mkdir-p (string-append #$output "/" (dirname location)))) + (svn-fetch (string-append '#$(svn-multi-reference-url ref) + "/" location) + '#$(svn-multi-reference-revision ref) + (if (string-suffix? "/" location) + (string-append #$output "/" location) + (string-append #$output "/" (dirname location))) + #:svn-command (string-append #+svn "/bin/svn") + #:user-name #$(svn-multi-reference-user-name ref) + #:password #$(svn-multi-reference-password ref))) + '#$(svn-multi-reference-locations ref))))) + + (mlet %store-monad ((guile (package->derivation guile system))) + (gexp->derivation (or name "svn-checkout") build + #:system system + #:hash-algo hash-algo + #:hash hash + #:recursive? #t + #:guile-for-build guile + #:local-build? #t))) + (define* (download-svn-to-store store ref #:optional (name (basename (svn-reference-url ref))) #:key (log (current-error-port))) |