From 31cd9a50402ac64e83fce35a7c789613d6ad156a Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Fri, 19 May 2023 23:27:38 +0200 Subject: [PATCH] guix: import: Handle native inputs in texlive importer. * guix/import/texlive.scm (tlpdb->package): Add TEXLIVE-METAFONT as a native input whenever font metrics are to be generated. * tests/texlive.scm (%fake-tlpdb): Add test data. ("texlive->guix-package, with METAFONT files"): New test. --- guix/import/texlive.scm | 15 ++++++++++++ tests/texlive.scm | 53 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/guix/import/texlive.scm b/guix/import/texlive.scm index 33a0e7d1d9..fd772d3133 100644 --- a/guix/import/texlive.scm +++ b/guix/import/texlive.scm @@ -315,6 +315,21 @@ of those files are returned that are unexpectedly installed." '((outputs '("out" "doc"))) '()) (build-system texlive-build-system) + ;; Texlive build system generates font metrics whenever a font metrics + ;; file has the same base name as a Metafont file. + ,@(or (and-let* ((runfiles (assoc-ref data 'runfiles)) + (metrics + (filter-map (lambda (f) + (and (string-suffix? ".tfm" f) + (basename f ".tfm"))) + runfiles)) + ((not (null? metrics))) + ((any (lambda (f) + (and (string-suffix? ".mf" f) + (member (basename f ".mf") metrics))) + runfiles))) + '((native-inputs (list texlive-metafont)))) + '()) ,@(match filtered-depends (() '()) (inputs diff --git a/tests/texlive.scm b/tests/texlive.scm index 9f4c965139..704c86e24a 100644 --- a/tests/texlive.scm +++ b/tests/texlive.scm @@ -195,7 +195,24 @@ completely compatible with Plain TeX.") "texmf-dist/tex/texsis/base/thesis.txs" "texmf-dist/tex/texsis/base/twin.txs" "texmf-dist/tex/texsis/config/texsis.ini")) - (catalogue-license . "lppl"))))) + (catalogue-license . "lppl"))) + ("trsym" + (name . "trsym") + (shortdesc . "Symbols for transformations") + (longdesc . "The bundle provides Metafont...") + (docfiles "texmf-dist/doc/latex/trsym/README" + "texmf-dist/doc/latex/trsym/manifest.txt" + "texmf-dist/doc/latex/trsym/trsym.pdf") + (srcfiles "texmf-dist/source/latex/trsym/trsym.dtx" + "texmf-dist/source/latex/trsym/trsym.ins") + (runfiles "texmf-dist/fonts/source/public/trsym/trsy.mf" + "texmf-dist/fonts/source/public/trsym/trsy10.mf" + "texmf-dist/fonts/source/public/trsym/trsy12.mf" + "texmf-dist/fonts/tfm/public/trsym/trsy10.tfm" + "texmf-dist/fonts/tfm/public/trsym/trsy12.tfm" + "texmf-dist/tex/latex/trsym/trsym.sty" + "texmf-dist/tex/latex/trsym/utrsy.fd") + (catalogue-license . "lppl")))) (test-assert "texlive->guix-package, no docfiles" ;; Replace network resources with sample data. @@ -277,6 +294,40 @@ completely compatible with Plain TeX.") (format #t "~s~%" result) (pk 'fail result #f))))))) +(test-assert "texlive->guix-package, with METAFONT files" + ;; Replace network resources with sample data. + (mock ((guix build svn) svn-fetch + (lambda* (url revision directory + #:key (svn-command "svn") + (user-name #f) + (password #f) + (recursive? #t)) + (mkdir-p directory) + (with-output-to-file (string-append directory "/foo") + (lambda () + (display "source"))))) + (let ((result (texlive->guix-package "trsym" + #:package-database + (lambda _ %fake-tlpdb)))) + (match result + (('package + ('name _) + ('version _) + ('source _) + ('outputs _) + ('build-system _) + ('native-inputs + ('list 'texlive-metafont)) + ('home-page (? string?)) + ('synopsis (? string?)) + ('description (? string?)) + ('license _)) + #true) + (_ + (begin + (format #t "~s~%" result) + (pk 'fail result #f))))))) + (test-assert "texlive->guix-package, with catalogue entry, no inputs" ;; Replace network resources with sample data. (mock ((guix build svn) svn-fetch