guix-devel
[Top][All Lists]
Advanced

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

Re: documentation in TeX Live collections


From: Nicolas Goaziou
Subject: Re: documentation in TeX Live collections
Date: Sun, 27 Aug 2023 12:13:31 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)

Hello,

Thanks for that detailed report!

Emmanuel Beffara <manu@beffara.org> writes:

> There has been a lot of movement around TeX Live recently and it is very nice
> to see. We now have a usable modular installation and a great number of
> available packages and collections. However, I don't understand what is the
> proper way to reach documentation in the current system.
>
> I installed `texlive-scheme-medium` in my home profile managed by `guix home`,
> everything works including `texdoc` (although it always says « Info: Running
> Texdoc not installed in the current TEXMFMAIN. » for some reason), but there
> is essentially no documentation installed:
>
>     $ texdoc inputenc
>     Info: Running Texdoc not installed in the current TEXMFMAIN.
>     You don't appear to have any local documentation installed.
>
>     There may be online documentation available for "inputenc" at
>       https://texdoc.org/serve/inputenc/0
>     This documentation may be for a different version than you have installed.
>
>     Would you like to search online? (y/N)
>
> Indeed the `doc` folder is nearly empty:
>
>     $ ls $GUIX_TEXMF/doc
>     bibtex8/  bibtexu/  chktex/
>
> Apparently, all individual packages have a specific "doc" output but
> collections and schemes do not and they don't have them as inputs either. So
> we end up with an installation with no documentation

It sounds like a good default to me. I doubt anyone reads all
documentation for every TeX Live package they install.

> (apart from the three above, which is surprising).

They are brought by `texlive-bin', which has no "doc" output.

> I tried to explicity include documentation in a sub-shell but this changes
> nothing:
>
>     $ guix shell texlive-latex:doc -- texdoc inputenc

Note that you also need to install texlive-texdoc (or some collection/scheme 
including it).

>     Info: Running Texdoc not installed in the current TEXMFMAIN.
>     You don't appear to have any local documentation installed.
>
>     There may be online documentation available for "inputenc" at
>       https://texdoc.org/serve/inputenc/0
>     This documentation may be for a different version than you have installed.
>
>     Would you like to search online? (y/N)
>
> Including the TeX Live scheme in the same shell makes things worse:
>
>     $ guix shell texlive-scheme-medium texlive-latex:doc -- texdoc inputenc
>     Info: Running Texdoc not installed in the current TEXMFMAIN.
>     texdoc error: No texlive.tlpdb nor shipped tlpdb data found.
>
> Inspecting GUIX_TEXMF in this shell reveals that it now contains two paths,
> one of which does contain the right documentation:
>
>     $ guix shell texlive-scheme-medium texlive-latex:doc
>     $ env | grep TEX
>     
> GUIX_TEXMF=/gnu/store/fg1z0jgkj0r4v8i3rmpg0c1vfirbg1ac-profile/share/texmf-dist:/home/manu/.guix-home/profile/share/texmf-dist
>     $ ls 
> /gnu/store/fg1z0jgkj0r4v8i3rmpg0c1vfirbg1ac-profile/share/texmf-dist/doc
>     bibtex8  bibtexu  chktex  latex
>     $ export GUIX_TEXMF=${GUIX_TEXMF%:*}
>     $ texdoc inputenc
>     ... inputenc.pdf is displayed! ...
>
> Apparently the fact that this GUIX_TEXMF variable contains several paths is
> problematic for texdoc.

Would the following definition for texlive-texdoc solve both issues
mentioned above? (the warning and the error.)

--8<---------------cut here---------------start------------->8---
(define-public texlive-texdoc
  (package
    (name "texlive-texdoc")
    (version (number->string %texlive-revision))
    (source (texlive-origin
             name version
             (list "doc/man/man1/texdoc.1"
                   "doc/man/man1/texdoc.man1.pdf"
                   "doc/support/texdoc/" "scripts/texdoc/"
                   "texdoc/")
             (base32
              "19mvh7pm2332f6c8nzgcbscm9vcz0apwfgm0m55ycibssc2fb3ww")))
    (outputs '("out" "doc"))
    (build-system texlive-build-system)
    (arguments
     (list #:link-scripts #~(list "texdoc.tlu")
           #:phases
           #~(modify-phases %standard-phases
               ;; Prevent "Info: Running Texdoc not installed in the current
               ;; TEXMFMAIN" warning by skipping an unnecessary test.
               (add-after 'unpack 'fix-script
                 (lambda _
                   (substitute* "scripts/texdoc/texdoc.tlu"
                     (("if texmf ~= nil") "if false"))))
               ;; Teach `texdoc' how to handle multiple directories in
               ;; GUIX_TEXMF environment variable.
               (add-after 'link-scripts 'wrap-programs
                 (lambda _
                   (wrap-program (string-append #$output "/bin/texdoc")
                     '("GUIX_TEXMF" = ("${GUIX_TEXMF%:*}"))))))))
    (propagated-inputs (list texlive-kpathsea))
    (home-page "https://ctan.org/pkg/texdoc";)
    (synopsis "Documentation access for TeX Live")
    (description
     "@command{texdoc} is a Lua script providing easy access to the
documentation in TeX Live: PDF, DVI, plain text files, and more.  Viewing and
other configuration can be extensively customized.")
    (license license:gpl3+)))
--8<---------------cut here---------------end--------------->8---

> As an attempt to work around this, I tried to add texlive-latex:doc to my home
> profile definition and it did make that documentation available to texdoc.
> Moreover, for some reason, ALL documentation was downloaded:
>
>     $ guix home reconfigure home.scm
>     ...
>      texlive-cm-66594-doc  2KiB
>      texlive-etex-66594-doc  189KiB
>      texlive-hyphen-complete-66594-doc  783KiB
>      texlive-kpathsea-66594-doc  1022KiB
>      texlive-pdftex-66594  4.2MiB
>     ...
>     $ ls -d /gnu/store/*-texlive-*-doc/ | wc
>        1105    1105   82506
>
> Apparently something has triggered the download of documentation for all
> packages `texlive-scheme-medium` depends on but only the one I explicitly
> requested is made available in the profile (which is expected). All these
> other documentation were downloaded but not used and `guix gc` actually
> deletes them all!

I noticed that, too, but I don't have any explanation for it at the
moment.

For example,

  ./pre-inst-env guix shell texlive-scheme-basic texlive-texdoc 
texlive-babel:doc

is enough to trigger a massive download of "doc" outputs.

> So what would be the proper way to install `texlive-scheme-medium` in a home
> profile with the documentation of the packages it includes ?

If that's a common request, we could add a `texlive-collection-foo-doc'
package that would propagate all "doc" outputs from all packages
included in `texlive-collection-foo'.

However, I'm a bit reluctant to add more artificial packages (i.e., not
known to TeX Live distribution). Also, it might be as simple to do it in
one's own manifest.

I'm Cc'ing guix-devel ML.

Regards,
-- 
Nicolas Goaziou



reply via email to

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