guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

03/418: guix: import: Update texlive importer according to new build sys


From: guix-commits
Subject: 03/418: guix: import: Update texlive importer according to new build system.
Date: Fri, 2 Jun 2023 17:23:47 -0400 (EDT)

ngz pushed a commit to branch tex-team-next
in repository guix.

commit b1e5136dfde6c2b1067f43a574e838e434e241a1
Author: Nicolas Goaziou <mail@nicolasgoaziou.fr>
AuthorDate: Fri May 5 17:22:03 2023 +0200

    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.
---
 guix/import/texlive.scm | 42 +++++++++++++-----------
 guix/import/utils.scm   |  3 --
 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]