guix: import: Update texlive importer according to new build system.

* guix/import/texlive.scm (tlpdb->package): Generate a package that doesn't
need SIMPLE-TEXLIVE-PACKAGE.
* guix/import/utils.scm (package->definition): Remove special case for
`simple-texlive-package'.
* tests/texlive.scm (%fake-tlpdb): Add test data.
("texlive->guix-package"): Update test.
("texlive->guix-package, no docfiles"): New test.
This commit is contained in:
Nicolas Goaziou 2023-05-05 17:22:03 +02:00
parent bc3384923e
commit 4a245129ff
No known key found for this signature in database
GPG key ID: DA00B4F048E92F2D
3 changed files with 89 additions and 42 deletions

View file

@ -275,33 +275,37 @@ (define (tlpdb->package name version package-database)
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)

View file

@ -436,10 +436,7 @@ (define* (package->definition guix-package #:optional append-version?/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)

View file

@ -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 @@ (define-module (test-texlive)
(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 @@ (define %fake-tlpdb
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 @@ (define %fake-tlpdb
"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 @@ (define %fake-tlpdb
#: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