diff options
-rw-r--r-- | guix/import/texlive.scm | 42 | ||||
-rw-r--r-- | guix/import/utils.scm | 3 | ||||
-rw-r--r-- | tests/texlive.scm | 86 |
3 files changed, 89 insertions, 42 deletions
diff --git a/guix/import/texlive.scm b/guix/import/texlive.scm index 086cd363a9..e5fcb7adf8 100644 --- a/guix/import/texlive.scm +++ b/guix/import/texlive.scm @@ -275,33 +275,37 @@ of those files are returned that are unexpectedly installed." store ref (string-append name "-svn-multi-checkout"))))) (values `(package - (inherit (simple-texlive-package - ,name - (list ,@dirs) - (base32 - ,(bytevector->nix-base32-string - (let-values (((port get-hash) (open-sha256-port))) - (write-file source port) - (force-output port) - (get-hash)))) - ,@(if (assoc-ref data 'srcfiles) '() '(#:trivial? #true)))) - ;; package->definition in (guix import utils) expects to see a - ;; version field. - (version ,version) + (name ,name) + (version (number->string %texlive-revision)) + (source (texlive-origin + name version + (list ,@(sort locs string<)) + (base32 + ,(bytevector->nix-base32-string + (let-values (((port get-hash) (open-sha256-port))) + (write-file source port) + (force-output port) + (get-hash)))))) + ,@(if (assoc-ref data 'docfiles) + '((outputs '("out" "doc"))) + '()) + (build-system texlive-build-system) ,@(match filtered-depends (() '()) (inputs `((propagated-inputs - (list ,@(map + (list ,@(map-in-order (lambda (tex-name) (let ((name (guix-name tex-name))) (string->symbol name))) - inputs)))))) - ,@(or (and=> (assoc-ref data 'name) + ;; Sort inputs alphabetically. + (reverse inputs))))))) + (home-page + ,(or (and=> (or (assoc-ref data 'catalogue) + (assoc-ref data 'name)) (lambda (name) - `((home-page ,(string-append "https://ctan.org/pkg/" - name))))) - '((home-page "https://www.tug.org/texlive/"))) + (string-append "https://ctan.org/pkg/" name))) + "https://www.tug.org/texlive/")) (synopsis ,(assoc-ref data 'shortdesc)) (description ,(and=> (assoc-ref data 'longdesc) beautify-description)) (license ,(and=> (assoc-ref data 'catalogue-license) diff --git a/guix/import/utils.scm b/guix/import/utils.scm index e9a0a7ecd7..5176f12a31 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -436,10 +436,7 @@ APPEND-VERSION?/string is a string, append this string." (match guix-package ((or ('package ('name name) ('version version) . rest) - ('package ('inherit ('simple-texlive-package name . _)) - ('version version) . rest) ('let _ ('package ('name name) ('version version) . rest))) - `(define-public ,(string->symbol (cond ((string? append-version?/string) diff --git a/tests/texlive.scm b/tests/texlive.scm index 7d7ad332b4..1493fc87bb 100644 --- a/tests/texlive.scm +++ b/tests/texlive.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017, 2022 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2023 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,7 +32,15 @@ (test-begin "texlive") (define %fake-tlpdb - '(("stricttex" + '(("example" + . ((name . "example") + (shortdesc . "Typeset examples...") + (longdesc . "The package makes it easier...") + (runfiles + . + ("texmf-dist/tex/latex/example/example.sty")) + (catalogue-license . "gpl"))) + ("stricttex" . ((name . "stricttex") (shortdesc @@ -69,7 +78,7 @@ theorems and proofs, centered or non-justified text, and listing computer code; Specialized macros for easily constructing ruled tables. TeXsis was originally developed for physicists, but others may also find it useful. It is completely compatible with Plain TeX.") - (depend . ("cm" "hyphen-base" "knuth-lib" "plain" "tex")) + (depend . ("tex" "plain" "knuth-lib" "hyphen-base" "cm")) (docfiles . ("texmf-dist/doc/man/man1/texsis.1" "texmf-dist/doc/man/man1/texsis.man1.pdf" @@ -158,6 +167,40 @@ completely compatible with Plain TeX.") "texmf-dist/tex/texsis/config/texsis.ini")) (catalogue-license . "lppl"))))) +(test-assert "texlive->guix-package, no docfiles" + ;; 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 "example" + #:package-database + (lambda _ %fake-tlpdb)))) + (match result + (('package + ('name "texlive-example") + ('version _) + ('source ('texlive-origin + 'name 'version + ('list "tex/latex/example/") + ('base32 (? string? hash)))) + ('build-system 'texlive-build-system) + ('home-page (? string?)) + ('synopsis (? string?)) + ('description (? string?)) + ('license _)) + #true) + (_ + (begin + (format #t "~s~%" result) + (pk 'fail result #f))))))) + (test-assert "texlive->guix-package" ;; Replace network resources with sample data. (mock ((guix build svn) svn-fetch @@ -174,27 +217,30 @@ completely compatible with Plain TeX.") #:package-database (lambda _ %fake-tlpdb)))) (match result - (`(package - (inherit (simple-texlive-package - "texlive-texsis" - (list "bibtex/bst/texsis/" - "doc/man/man1/" + (('package + ('name "texlive-texsis") + ('version _) + ('source ('texlive-origin + 'name 'version + ('list "bibtex/bst/texsis/" + "doc/man/man1/texsis.1" + "doc/man/man1/texsis.man1.pdf" "doc/otherformats/texsis/base/" "tex/texsis/base/" "tex/texsis/config/") - (base32 ,(? string? hash)) - #:trivial? #t)) - (version ,_) - (propagated-inputs - (list texlive-cm - texlive-hyphen-base - texlive-knuth-lib - texlive-plain - texlive-tex)) - (home-page ,(? string?)) - (synopsis ,(? string?)) - (description ,(? string?)) - (license lppl)) + ('base32 (? string? hash)))) + ('outputs ''("out" "doc")) + ('build-system 'texlive-build-system) + ('propagated-inputs + ('list 'texlive-cm + 'texlive-hyphen-base + 'texlive-knuth-lib + 'texlive-plain + 'texlive-tex)) + ('home-page (? string?)) + ('synopsis (? string?)) + ('description (? string?)) + ('license 'lppl)) #true) (_ (begin |