diff options
author | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2023-05-27 21:39:26 +0200 |
---|---|---|
committer | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2023-07-18 18:12:47 +0200 |
commit | d62b35bbe922b94baffe1ffcf810ad5f29669e5d (patch) | |
tree | 516c15b1d212ab96782fe6d31f9212bab28ecc46 /guix | |
parent | 293abb4c4e72617de2e83ccb271fce4792988492 (diff) |
guix: import: Improve importing texlive meta packages.
* guix/import/texlive.scm (tlpdb->package): Generate more appropriate source,
home page and license fields when importing meta packages, i.e., TeX Live
collections and schemes.
* tests/texlive.scm (%fake-tlpdb): Add test data.
("texlive->guix-package, meta-package"): New test.
Diffstat (limited to 'guix')
-rw-r--r-- | guix/import/texlive.scm | 112 |
1 files changed, 59 insertions, 53 deletions
diff --git a/guix/import/texlive.scm b/guix/import/texlive.scm index 46680a0b6b..da58c8d13f 100644 --- a/guix/import/texlive.scm +++ b/guix/import/texlive.scm @@ -300,59 +300,65 @@ of those files are returned that are unexpectedly installed." (source (with-store store (download-multi-svn-to-store store ref (string-append name "-svn-multi-checkout"))))) - (values - `(package - (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) - ;; 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 - `((propagated-inputs - (list ,@(map - (lambda (tex-name) - (let ((name (guix-name tex-name))) - (string->symbol name))) - ;; Sort inputs alphabetically. - (reverse inputs))))))) - (home-page - ,(or (and=> (or (assoc-ref data 'catalogue) - (assoc-ref data 'name)) - (lambda (name) - (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) - string->license))) - filtered-depends))) + (let ((meta-package? (null? locs))) + (values + `(package + (name ,name) + (version (number->string %texlive-revision)) + (source ,(and (not meta-package?) + `(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) + ;; 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 + `((propagated-inputs + (list ,@(filter-map + (lambda (tex-name) + (let ((name (guix-name tex-name))) + (string->symbol name))) + ;; Sort inputs alphabetically. + (reverse inputs))))))) + (home-page + ,(cond + (meta-package? "https://www.tug.org/texlive/") + ((or (assoc-ref data 'catalogue) (assoc-ref data 'name)) => + (cut string-append "https://ctan.org/pkg/" <>)) + (else "https://www.tug.org/texlive/"))) + (synopsis ,(assoc-ref data 'shortdesc)) + (description ,(and=> (assoc-ref data 'longdesc) beautify-description)) + (license + ,(cond + (meta-package? + '(license:fsf-free "https://www.tug.org/texlive/copying.html")) + ((assoc-ref data 'catalogue-license) => string->license) + (else #f)))) + filtered-depends)))) (define texlive->guix-package (memoize |