Subject: bug#27217: texlive is too big

From: Pierre Neidhardt <[email-masked]>
Date: Thu, 10 Jan 2019 17:01:48 +0100

> What I find most troubling is that sources are littered across the SVN
> repository.  Sometimes we’ve got simple .ins and .dtx files, but very
> often we have a stray .sty or .tex file in some seemingly arbitary
> directory and one needs to manually take care of adding these extra
> source files to the native-inputs.

I was puzzled like you, but last time I investigated it became a bit clearer:
there is simply no general recipe for building TeXlive packages.

TeXlive packages are provided "ready to use", they are not meant to be built.
The .ins/.dtx are only here for potential package contributors or as a source of
documentation, but when it comes to TeXlive, they are not used to build the
resulting package.  The .sty is (I think) always parachuted into the SVN
repository as well.

(Actually, sometimes there is no .ins/.dtx, just a .sty.)

More worrisome: some fonts don't provide their source.  In fact, some of them
have confusing licenses, and since the source is missing, I wouldn't call that
"free software".  But TeXlive is.  That's not very consistent and a lot of FOSS
TeXlive packages effectively depend on closed-source fonts.

What shall do then?

> I don’t see this file in the texlive SVN repository.  Where is it
> hosted?

It's in Master/tlpkg/texlive.tlpdb.
Or from CTAN:
http://mirror.ctan.org/tex-archive/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz.

> So, it’s a map of packages to file names?  That would probably simplify
> the importer.  I don’t think it would help with the build system.  Am I
> missing something?

I believe the tlpdb might actually be necessary to build every package reliably.

As I said above, TeXlive packages are not meant to be built, they are meant to
be copy/pasted, so it seems.  (Correct me if I'm wrong.)

Sure we can rebuild the .dtx/.ins, but that only works for some packages and it
does not suffice, we still need to include the extra files (e.g. fonts) if any.
We can only know this file list from the tlpdb.

So here is what I suggest: the texlive-build-system looks up the file list in
the tlpdb and copies everything.  If some of those files include .dtx/.ins,
it could build them (but that should not change anything since the .sty is
always provided).

Question: that would produce another <package>.sty file beside the one existing
in the SVN.  Should we replace it?  Should we print a warning if it does not
match?

With such a build system, the only thing the importer would have to do is get
the synopsys/license information from the tlpdb.

Does that make sense?