Subject: [bug#53257] [PATCH] gnu: foot: expose terminfo dirs via native-search-paths

From: Maxime Devos <[email-masked]>
Date: Sun, 23 Jan 2022 22:26:58 +0100

Florian schreef op za 15-01-2022 om 18:46 [+0000]:
> to me, the functionality of search-paths seemed exactly communicating
> paths *beyond* a single profile. 

Search paths can be used for that (though that's rather fragile), but I
don't quite see what this has to do with foot, which can be patched or
wrapped to set TERMINFO_DIR or TERMINFO_DIRS as appropriate.

>  It would make more sense to set
> them with the package that installs the decisive files to me, at least
> as a thumb-of-rule. Your examples don't really counter that, though, i
> think ;)

It would seem to me that adding:

  * LIBRARY_PATH, CROSS_LIBRARY_PATH, C_INCLUDE_PATH, etc.
    to every C library package
  * INFOPATH to every package with an info manual
  * MANPATH to every package with man pages
  * EMACSLOADPATH to every emacs package
  * GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH to every Guile library
    or package with Guile bindings
  * GUIX_PYTHONPATH to every Python package or package with Python
    bindings
  * PKG_CONFIG_PATH to every package with pkg-config files
  * GI_TYPELIB_PATH for ... I'm not sure exactly
  * similar things for R, Haskell, Minetest, OCaml, Tcl, Lua, Coq ...

would be rather tedious and it easy to forget.

How about keeping things simple and not creating much more work,
by instead adding these search paths to consumers

  * GCC for LIBRARY_PATH etc.
  * info-reader and emacs for INFOPATH
  * man-db for MANPATH
  * emacs for EMACSLOADPATH
  * guile for GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH
  * etc.

like we're doing currently?  The number of packages in the list below
is much smaller than the number of packages in the list above

> In other words, what next?

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22138 would help, but
doesn't address the cross-profile issue.  If 22138 is considered
notabug, then

>  2. modify 'nano', 'emacs', ... to add a "TERMINFO_DIRS" search path.
> 
>     A benefit of this approach above adding it to terminal emulators,
>     is that this how search paths are supposed to be used AFAIK
>     (adding an INFOPATH, LIBRARY_PATH, CROSS_LIBRARY_PATH, CPATH, ...
>     search path to every C library that has 'info' documentation is
>     rather cumbersome, instead INFOPATH ‘belongs’ to info readers,
>     LIBRARY_PATH etc. to compilers, ...).
> 
>     A downside is that setting it here can be ‘too late’.
>     E.g., in the "guix shell terminal" then "guix shell editor"
>     example, the editor and terminal application are in separate
> profiles
>     so guix doesn't set TERMINFO_DIRS
> 

For addressing the cross-profile issue:

>  1. patch the source code of 'foot' to set "TERMINFO_DIRS" or
> "TERMINFO"
>     appropriately (I'm not sure about the exact difference) (or use
> wrap-program
>     in 'foot').
> 
>     The benefit of this above adding search paths, is that running
> 'foot'
>     directly from the store could work (somewhat niche though).
> 
>     It would need to be investigated whether this works for your use
> case of
>     setting 'foot-direct' instead of 'foot-xterm'.
> 

There was some terminal emulator setting TERMINFO_DIR (!=
TERMINFO_DIRS) I think, maybe that would be worth investigating as
well.

Greetings,
Maxime.