Hello, The TeX Live importer doesn't appear to be functional: $ guix import texlive lh following redirection to `https://ctan.org/xml/1.2/pkg/lh'... command "svn" "export" "--non-interactive" "--trust-server-cert" "-r" "51265" "svn://www.tug.org/texlive/tags/texlive-2019.3/Master/texmf-dist/source/latex/lh" "/tmp/guix-directory.vfSCcU/svn" failed with signal 11 Backtrace: In ice-9/boot-9.scm: 1736:10 15 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _) In unknown file: 14 (apply-smob/0 #<thunk 7fb1a712a4a0>) In ice-9/boot-9.scm: 718:2 13 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>) In ice-9/eval.scm: 619:8 12 (_ #(#(#<directory (guile-user) 7fb1a6d67f00>))) In guix/ui.scm: 2118:12 11 (run-guix-command _ . _) In guix/scripts/import.scm: 120:11 10 (guix-import . _) In guix/scripts/import/texlive.scm: 91:19 9 (guix-import-texlive . _) In guix/memoization.scm: 98:0 8 (mproc "lh" "latex") In unknown file: 7 (_ #<procedure 7fb1a4c85a20 at guix/memoization.scm:179:32 ()> #<procedure list _> ("lh" …)) In ice-9/boot-9.scm: 1736:10 6 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _) In guix/store.scm: 632:37 5 (thunk) In guix/import/texlive.scm: 162:25 4 (_ _) In guix/serialization.scm: 324:6 3 (dump #f) 257:34 2 (_ _) In unknown file: 1 (lstat #f) In ice-9/boot-9.scm: 1669:16 0 (raise-exception _ #:continuable? _) ice-9/boot-9.scm:1669:16: In procedure raise-exception: Wrong type (expecting string): #f The same happens with other packages, such as 'ec'. Thanks, Maxim
Hello,
Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:
> Hello,
>
> The TeX Live importer doesn't appear to be functional:
>
> $ guix import texlive lh
> following redirection to `https://ctan.org/xml/1.2/pkg/lh'...
> command "svn" "export" "--non-interactive" "--trust-server-cert" "-r" "51265" "svn://www.tug.org/texlive/tags/texlive-2019.3/Master/texmf-dist/source/latex/lh" "/tmp/guix-directory.vfSCcU/svn" failed with signal 11
> Backtrace:
> In ice-9/boot-9.scm:
> 1736:10 15 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
> In unknown file:
> 14 (apply-smob/0 #<thunk 7fb1a712a4a0>)
> In ice-9/boot-9.scm:
> 718:2 13 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>)
> In ice-9/eval.scm:
> 619:8 12 (_ #(#(#<directory (guile-user) 7fb1a6d67f00>)))
> In guix/ui.scm:
> 2118:12 11 (run-guix-command _ . _)
> In guix/scripts/import.scm:
> 120:11 10 (guix-import . _)
> In guix/scripts/import/texlive.scm:
> 91:19 9 (guix-import-texlive . _)
> In guix/memoization.scm:
> 98:0 8 (mproc "lh" "latex")
> In unknown file:
> 7 (_ #<procedure 7fb1a4c85a20 at guix/memoization.scm:179:32 ()> #<procedure list _> ("lh" …))
> In ice-9/boot-9.scm:
> 1736:10 6 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
> In guix/store.scm:
> 632:37 5 (thunk)
> In guix/import/texlive.scm:
> 162:25 4 (_ _)
> In guix/serialization.scm:
> 324:6 3 (dump #f)
> 257:34 2 (_ _)
> In unknown file:
> 1 (lstat #f)
> In ice-9/boot-9.scm:
> 1669:16 0 (raise-exception _ #:continuable? _)
>
> ice-9/boot-9.scm:1669:16: In procedure raise-exception:
> Wrong type (expecting string): #f
>
> The same happens with other packages, such as 'ec'.
The reason appears to be that the svn reference URL is wrong;
unfortunately this information is not present in the SXML metadata
retrieved; it seems the best option when such an URL does not exist
would be to fallback to a SVN multi-fetch (perhaps using the
simple-texlive-package procedure to derive a template) of the components
found in the texlive.tlpdb listing found in the output of our
texlive-bin package.
TODO!
Maxim
Hi Maxim,
> The TeX Live importer doesn't appear to be functional:
Yes, sadly, it’s not very useful any more.
The next iteration of the importer should use texlive.tlpdb instead of
CTAN *and* the SVN repository.
--
Ricardo
[-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset=yes, Size: 3042 bytes --] This is a small improvement awaiting a definitive fix for <https://issues.guix.gnu.org/45656>. * guix/import/texlive.scm (sxml->package): Produce a warning when the SVN checkout failed. Rather than crashing on the unexpected #f value, return a partial package definition with the source field set to #f. --- guix/import/texlive.scm | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/guix/import/texlive.scm b/guix/import/texlive.scm index a84683ef6f..ba04a74d0f 100644 --- a/guix/import/texlive.scm +++ b/guix/import/texlive.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,6 +26,8 @@ #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (web uri) + #:use-module (guix diagnostics) + #:use-module (guix i18n) #:use-module (guix http-client) #:use-module (gcrypt hash) #:use-module (guix memoization) @@ -147,21 +150,26 @@ expression describing it." ((license) (string->license license)) ((lst ...) (map string->license lst)))) (home-page (string-append "http://www.ctan.org/pkg/" id)) - (ref (texlive-ref component id)) - (checkout (download-svn-to-store store ref))) + (ref (pk (texlive-ref (pk 'component component) (pk 'id id)))) + (checkout (pk 'download (download-svn-to-store store ref)))) + (unless checkout + (warning (G_ "Could not determine source location. \ +Please manually specify the source field.~%"))) `(package (name ,(guix-name component id)) (version ,version) - (source (origin - (method svn-fetch) - (uri (texlive-ref ,component ,id)) - (sha256 - (base32 - ,(bytevector->nix-base32-string - (let-values (((port get-hash) (open-sha256-port))) - (write-file checkout port) - (force-output port) - (get-hash))))))) + (source ,(if checkout + `(origin + (method svn-fetch) + (uri (texlive-ref ,component ,id)) + (sha256 + (base32 + ,(bytevector->nix-base32-string + (let-values (((port get-hash) (open-sha256-port))) + (write-file checkout port) + (force-output port) + (get-hash)))))) + #f)) (build-system texlive-build-system) (arguments ,`(,'quote (#:tex-directory ,(string-join (list component id) "/")))) (home-page ,home-page) -- 2.29.2
[-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset=yes, Size: 2750 bytes --] This is a small improvement awaiting a definitive fix for <https://issues.guix.gnu.org/45656>. * guix/import/texlive.scm (sxml->package): Produce a warning when the SVN checkout failed. Rather than crashing on the unexpected #f value, return a partial package definition with the source field set to #f. --- guix/import/texlive.scm | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/guix/import/texlive.scm b/guix/import/texlive.scm index a84683ef6f..18d8b95ee0 100644 --- a/guix/import/texlive.scm +++ b/guix/import/texlive.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,6 +26,8 @@ #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (web uri) + #:use-module (guix diagnostics) + #:use-module (guix i18n) #:use-module (guix http-client) #:use-module (gcrypt hash) #:use-module (guix memoization) @@ -149,19 +152,24 @@ expression describing it." (home-page (string-append "http://www.ctan.org/pkg/" id)) (ref (texlive-ref component id)) (checkout (download-svn-to-store store ref))) + (unless checkout + (warning (G_ "Could not determine source location. \ +Please manually specify the source field.~%"))) `(package (name ,(guix-name component id)) (version ,version) - (source (origin - (method svn-fetch) - (uri (texlive-ref ,component ,id)) - (sha256 - (base32 - ,(bytevector->nix-base32-string - (let-values (((port get-hash) (open-sha256-port))) - (write-file checkout port) - (force-output port) - (get-hash))))))) + (source ,(if checkout + `(origin + (method svn-fetch) + (uri (texlive-ref ,component ,id)) + (sha256 + (base32 + ,(bytevector->nix-base32-string + (let-values (((port get-hash) (open-sha256-port))) + (write-file checkout port) + (force-output port) + (get-hash)))))) + #f)) (build-system texlive-build-system) (arguments ,`(,'quote (#:tex-directory ,(string-join (list component id) "/")))) (home-page ,home-page) -- 2.29.2
We now have a new importer that uses the texlive.tlpdb. It still needs a lot of work, but it should already be more useful than the previous importer. Closing. -- Ricardo