gnu: Add texlive-amsfonts.

* gnu/packages/tex.scm (texlive-fonts-amsfonts, texlive-latex-amsfonts):
Deprecate and merge...
(texlive-amsfonts): ...to this new package.
master
Ricardo Wurmus 2019-07-15 19:16:00 +02:00
parent e976d3618d
commit 82ff725df9
No known key found for this signature in database
GPG Key ID: 197A5888235FACAC
1 changed files with 130 additions and 208 deletions

View File

@ -1039,198 +1039,138 @@ Taco Hoekwater.")
(define-public texlive-fonts-mflogo-font (define-public texlive-fonts-mflogo-font
(deprecated-package "texlive-fonts-mflogo-font" texlive-mflogo-font)) (deprecated-package "texlive-fonts-mflogo-font" texlive-mflogo-font))
(define-public texlive-fonts-amsfonts (define-public texlive-amsfonts
(package (let ((template (simple-texlive-package
(name "texlive-fonts-amsfonts") "texlive-amsfonts"
(version (number->string %texlive-revision)) (list "/source/latex/amsfonts/"
(source (origin "/fonts/source/public/amsfonts/"
(method svn-fetch) "/fonts/type1/public/amsfonts/"
(uri (svn-reference "/fonts/afm/public/amsfonts/"
(url (string-append "svn://www.tug.org/texlive/tags/" "/fonts/map/dvips/amsfonts/"
%texlive-tag "/Master/texmf-dist/" "/tex/plain/amsfonts/"
"/fonts/source/public/amsfonts")) "/doc/fonts/amsfonts/")
(revision %texlive-revision))) (base32
(file-name (string-append name "-" version "-checkout")) "15q70nkjf8wqzbd5ivcdx3i2sdgqxjb38q0qn9a2qw9i0qcnx6zw"))))
(sha256 (package
(base32 (inherit template)
"07h20rvpbdb4k72hzmjkyb29426zr9wxsfp6yd4ajbbpd3vx8grb")))) (arguments
(build-system gnu-build-system) (substitute-keyword-arguments (package-arguments template)
(arguments ((#:tex-directory _ #t)
`(#:modules ((guix build gnu-build-system) "latex/amsfonts")
(guix build utils) ((#:modules modules '())
(ice-9 match) `((guix build texlive-build-system)
(srfi srfi-1) (guix build utils)
(srfi srfi-26)) (ice-9 match)
#:tests? #f ; no tests (srfi srfi-1)
#:phases (srfi srfi-26)))
(modify-phases %standard-phases ((#:phases phases)
(delete 'configure) `(modify-phases ,phases
(replace 'build (add-before 'build 'build-fonts
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(let ((mf (assoc-ref inputs "texlive-union")) (let ((mf (assoc-ref inputs "texlive-union"))
(cwd (getcwd))) (src (string-append (getcwd) "/fonts/source/public/amsfonts/")))
;; Make METAFONT reproducible ;; Make METAFONT reproducible
(setenv "SOURCE_DATE_EPOCH" "1") (setenv "SOURCE_DATE_EPOCH" "1")
;; Tell mf where to find mf.base ;; Tell mf where to find mf.base
(setenv "MFBASES" (string-append mf "/share/texmf-dist/web2c")) (setenv "MFBASES" (string-append mf "/share/texmf-dist/web2c"))
;; Tell mf where to look for source files ;; Tell mf where to look for source files
(setenv "MFINPUTS" (setenv "MFINPUTS"
(string-append cwd ":" (string-append src ":"
cwd "/cmextra:" src "/cmextra:"
cwd "/cyrillic:" src "/cyrillic:"
cwd "/dummy:" src "/dummy:"
cwd "/symbols:" src "/symbols:"
mf "/share/texmf-dist/metafont/base:" mf "/share/texmf-dist/metafont/base:"
(assoc-ref inputs "texlive-fonts-cm") (assoc-ref inputs "texlive-fonts-cm")
"/share/texmf-dist/fonts/source/public/cm"))) "/share/texmf-dist/fonts/source/public/cm")))
(mkdir "build") (let ((build (string-append (getcwd) "/build")))
(for-each (lambda (font) (mkdir-p build)
(format #t "building font ~a\n" (basename font ".mf")) (with-directory-excursion "fonts/source/public/amsfonts"
(with-directory-excursion (dirname font) (for-each (lambda (font)
(invoke "mf" "-progname=mf" (format #t "building font ~a\n" (basename font ".mf"))
"-output-directory=../build" (with-directory-excursion (dirname font)
(string-append "\\" (invoke "mf" "-progname=mf"
"mode:=ljfour; " (string-append "-output-directory=" build)
"mag:=1; " (string-append "\\"
"nonstopmode; " "mode:=ljfour; "
"input " "mag:=1; "
(getcwd) "/" "nonstopmode; "
(basename font ".mf"))))) "input "
(find-files "." "[0-9]+\\.mf$")) (getcwd) "/"
(basename font ".mf")))))
(find-files "." "[0-9]+\\.mf$"))))
;; There are no metafont sources for the Euler fonts, so we ;; There are no metafont sources for the Euler fonts, so we
;; convert the afm files instead. ;; convert the afm files instead.
(mkdir "build/euler") (let ((build (string-append (getcwd) "/build/euler")))
(for-each (lambda (font) (mkdir build)
(format #t "converting afm font ~a\n" (basename font ".afm")) (with-directory-excursion "fonts/afm/public/amsfonts/"
(invoke "afm2tfm" font (for-each (lambda (font)
(string-append "build/euler/" (format #t "converting afm font ~a\n" (basename font ".afm"))
(basename font ".tfm")))) (invoke "afm2tfm" font
(find-files (assoc-ref inputs "amsfonts-afm") (string-append build "/"
"\\.afm$")) (basename font ".tfm"))))
(find-files "." "\\.afm$")))
;; Frustratingly, not all fonts can be created this way. To ;; Frustratingly, not all fonts can be created this way. To
;; generate eufm8.tfm, for example, we first scale down ;; generate eufm8.tfm, for example, we first scale down
;; eufm10.afm to eufm8.pl, and then generate the tfm file from ;; eufm10.afm to eufm8.pl, and then generate the tfm file from
;; the pl file. ;; the pl file.
(with-directory-excursion "build/euler" (setenv "TEXINPUTS"
(setenv "TEXINPUTS" (string-append build "//:"
(string-append (getcwd) "//:" (getcwd) "/fonts/afm/public/amsfonts//:"
(assoc-ref inputs "amsfonts-afm") "//:" (assoc-ref inputs "texlive-union") "//"))
(assoc-ref inputs "texlive-union") "//")) (with-directory-excursion build
(for-each (match-lambda (for-each (match-lambda
(((target-base target-size) (((target-base target-size)
(source-base source-size)) (source-base source-size))
(let ((factor (number->string (let ((factor (number->string
(truncate/ (* 1000 target-size) (truncate/ (* 1000 target-size)
source-size)))) source-size))))
(invoke "tex" (invoke "tex"
"-interaction=scrollmode" "-interaction=scrollmode"
(string-append "\\input fontinst.sty " (string-append "\\input fontinst.sty "
"\\transformfont{" target-base "}" "\\transformfont{" target-base "}"
"{\\scalefont{" factor "}" "{\\scalefont{" factor "}"
"{\\fromafm{" source-base "}}} " "{\\fromafm{" source-base "}}} "
"\\bye"))) "\\bye")))
(invoke "pltotf" (invoke "pltotf"
(string-append target-base ".pl") (string-append target-base ".pl")
(string-append target-base ".tfm")) (string-append target-base ".tfm"))
(delete-file (string-append target-base ".pl")))) (delete-file (string-append target-base ".pl"))))
'((("eufm8" 8) ("eufm10" 10)) '((("eufm8" 8) ("eufm10" 10))
(("eufb6" 6) ("eufb7" 7)) (("eufb6" 6) ("eufb7" 7))
(("eufb8" 8) ("eufb10" 10)) (("eufb8" 8) ("eufb10" 10))
(("eufb9" 9) ("eufb10" 10)) (("eufb9" 9) ("eufb10" 10))
(("eufm6" 6) ("eufb7" 7)) (("eufm6" 6) ("eufb7" 7))
(("eufm9" 9) ("eufb10" 10)) (("eufm9" 9) ("eufb10" 10))
(("eurb6" 6) ("eurb7" 7)) (("eurb6" 6) ("eurb7" 7))
(("eurb8" 8) ("eurb10" 10)) (("eurb8" 8) ("eurb10" 10))
(("eurb9" 9) ("eurb10" 10)) (("eurb9" 9) ("eurb10" 10))
(("eurm6" 6) ("eurm7" 7)) (("eurm6" 6) ("eurm7" 7))
(("eurm8" 8) ("eurm10" 10)) (("eurm8" 8) ("eurm10" 10))
(("eurm9" 9) ("eurm10" 10))))) (("eurm9" 9) ("eurm10" 10))))))
#t)) #t))
(replace 'install (add-after 'install 'install-generated-fonts
(lambda* (#:key inputs outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (copy-recursively "build"
(root (string-append out "/share/texmf-dist/fonts/")) (string-append
(pkgs '(("amsfonts-afm" . "afm/public/amsfonts") (assoc-ref outputs "out")
("amsfonts-type1" . "type1/public/amsfonts") "/share/texmf-dist/fonts/tfm/public/amsfonts"))
("amsfonts-map" . "map/dvips/amsfonts")))) #t))))))
(for-each (match-lambda (native-inputs
((pkg . dir) `(("texlive-union" ,(texlive-union (list texlive-tex-fontinst-base
(let ((target (string-append root dir))) texlive-fonts-cm
(mkdir-p target) texlive-metafont-base)))))
(copy-recursively (assoc-ref inputs pkg) (home-page "https://www.ctan.org/pkg/amsfonts")
target)))) (synopsis "TeX fonts from the American Mathematical Society")
pkgs) (description
(copy-recursively (assoc-ref inputs "amsfonts-plain") "This package provides an extended set of fonts for use in mathematics,
(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,
including: extra mathematical symbols; blackboard bold letters (uppercase including: extra mathematical symbols; blackboard bold letters (uppercase
only); fraktur letters; subscript sizes of bold math italic and bold Greek 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 letters; subscript sizes of large symbols such as sum and product; added sizes
@ -1240,31 +1180,13 @@ files, and all except the Euler fonts are provided as Metafont source. The
distribution also includes the canonical Type 1 versions of the Computer distribution also includes the canonical Type 1 versions of the Computer
Modern family of fonts. The Euler fonts are supported by separate packages; Modern family of fonts. The Euler fonts are supported by separate packages;
details can be found in the documentation.") 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 (define-public texlive-latex-amsfonts
(package (deprecated-package "texlive-latex-amsfonts" texlive-amsfonts))
(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)))
(define-public texlive-mkpattern (define-public texlive-mkpattern
(package (package