[tex-live] Matching TL package setups to my own

Gerben Wierda Gerben.Wierda at rna.nl
Sun Aug 26 23:12:22 CEST 2007


On Aug 25, 2007, at 01:59 , Karl Berry wrote:

>     Another circular dependency: bin-wordcount and wordcount
>
> Strange though it is, I'm not sure circular dependencies are an error.
> I don't see any other way to express it.

package foo:
	depend foo-bin
	depend foo-run

Of course if foo-bin below again has dependencies you still can have  
circular dependencies.

It is therefore I think better to have items (which may not have  
dependencies but also cannot be installed/selected separately) and  
sets (which may depend on other sets and items)

set foo:
	depend item foo-bin
	depend item foo-run
set bar:
	depend set foo
	depend item bar-run
and then not allow circular dependencies in of sets. Anyway, that way  
you cannot get foo-bin without foo-run and v.v. but you also do not  
have nasty circular dependencies.

Anyway, I think one should better have leafs (stuff below which you  
do not *allow* dependencies) and which are the only ones who may  
contain files.

In simple cases this would mean you will have sets of one item. E.g.

set trivfloat
	depend item trivfloat-files

Stuff like execute should then only exist at set level (you only *do*  
things if you have everything needed.

> The better fix would be to have one package "wordcount" that includes
> the bin-wordcount stuff, but like I said, that is something that
> requires experimentation and work.

[snip]

> All names are supposed to be unique now!  Independent of category.
>
>     Categories are now used for two things I think:
>     - where should stuff go (texmf, texmf-doc, etc)
>     - how is it to be presented to the user (packages or schemes or
>     collections)
>
> That is true, and I agree they are not orthogonal ideas.  I don't  
> think
> the current situation does any great harm once the above is  
> understood,
> though.

Maybe I should explain what I am trying to do and what this (imo)  
means for this stuff in TL

My current redistribution packs up a part of TL's Master tree  
in .tar.bz2 files to be downloaded by i-Installer (chunks). These  
chunks can be rather large. E.g. a subset of TL's texmf-dist  
corresponing to the former teTeX texmf tree + what I used to add to  
that from TL. To make it possible for the user to minimize the  
download/footprint I do not pack the texmf*/source stuff and I split  
the texmf-dist tree in a chunk containing the  selections from texmf- 
dist/doc, texmf-dist/tex, texmf-dist/ftonts and the rest of my  
selection from texmf-dist. I do this so that if only a package in tex/ 
latex changes, the whole fonts business does not need to be  
downloaded again when the i-Package is updated. I also separate doc  
for the rest as you do not need doc to run TeX.

This is rather coarse and I have been wanting to make this far more  
finegrained. For that I only have one source I could possibly use:  
TLP. That means that my chunks should become based on the tlp's in  
TL, so I need to write a (perl) program to take TLP as input and  
produce the basics of an i-Package.

I still want the user to be able to select something high-level, like  
scheme-tetex.
I want the use to be able to select collections and packages
I want the user to be able to choose to not install doc or source  
until needed (which is almost never)
And most certainly I want the build process from TLP to i-Package to  
be automatic. If too much hand fiddling is required there is no way I  
can keep that up.

So, in the end the TLP structure must have enough information to  
create the behaviour of the installer. The whole setup then becomes  
data-driven, which is the important point. install.sh can do  
installation on that basis, but so can the i-Package (and others) and  
it is both based on the same information in TLP.

Circular dependencies are problematic for that kind of automation  
because they make parsing the stuff too complex. It is also not  
needed. Multiple texmf trees is OK (I am in favour of splitting the  
stuff that is generated by make world in Build (which should go into  
texmf) from the stuff that is maintained otherwise (which goes into  
texmf-dist and texmf-doc).

(I had to stop writing this message and could only come back to it  
after a day or two, so the whole thing is not very coherent).

G


More information about the tex-live mailing list