How to package executables

Karl Berry karl at freefriends.org
Mon Jul 20 00:54:34 CEST 2020


Hi Louis,

    I hope I am posting this to the right mailing list.

Indeed you are.

    [1] https://www.ctan.org/pkg/spix

    The only documentation about releasing executables on texlive I found is
    here [2], but I found no precise instructions.
    [2] https://tug.org/texlive/pkgcontrib.html#exec

Inded, that is all I've written about it. Well done finding it :).

I can think of a few things that I should add, but too-precise
instructions have the downside of often not fitting a given case. I try
to adapt to whatever is presented.

    My question is: how can I get my python executable on texlive? 

Good question. Thanks for asking. I don't know a lot about Python, so
I bet you can help.

The key point with TL is that we distribute scripts that users just
run. That is, users (=people who have installed TL) cannot run
setup.py. We need to distribute a script named "spix" (in your case)
that will just work. (I don't think it's a factor in your case, but in
general an implication is that it needs to use argv[0] find any and all
external files that are installed along with the script, and not
hardwire any paths to config files and the like.)

What I saw in your spix-1.0.0.tar.gz was the usual Python setup.py ,
__main__.py, and __init__.py. Is there a way to tell setup.py to
produce a standalone "spix" executable that I install in the TL bin/*
dirs?  That is what I have never been able to discern, I expect through
ignorance.

Also, in many cases (though not yours, I realize, which is all to the
good), there are numerous Python dependencies. In those cases I cannot
run setup.py at all (my build machine won't have all the
dependencies). We can still install the script, and leave it to users to
install the dependencies in their Python installation (as we do for Perl
and everything else), but only if the script, just as TL should install
it, is provided as part of the CTAN upload.

So, I guess the direct answer to your question is, if you provide a
"spix" executable in the CTAN upload, I will install it in TL. And my
question in return is, is there a way to coax a provided setup.py to
produce that executable, at least in non-dependency cases like yours?

A separate (non-crucial) point: it would be good to provide a man page
(however short). Ultimately most everything in TL ends up in /usr/bin or
whatever when repackaged by distros, and it's good to have man pages for
installed programs.

Another minor point: it is simpler to deal with an unpacked distribution
on CTAN, that is, instead of one spix-1.0.0.tar.gz file, upload the
contents as individual files. People often include a VERSION_1_0_0 or
similar file to be able to identify the version just from a file
listing, if that's desired.

Hope this clarifies the situation to some extent. Feel free to ask
further or tell me where I've gone astray ... --thanks, karl.


More information about the tex-live mailing list.