diff options
author | Norbert Preining <preining@logic.at> | 2008-09-08 10:35:20 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2008-09-08 10:35:20 +0000 |
commit | 533923f1e1a463522368b7deb6116361ecb22bd1 (patch) | |
tree | 8c71ecaa393cb9a8aae92b5ebe4795f7dc1581f2 | |
parent | 88ea4b7a0b06408aa13a15f28e8181abcbedbb0b (diff) |
add a document describing the planned multi-source support
git-svn-id: svn://tug.org/texlive/trunk@10485 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/tlpkg/doc/multi-support.txt | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/Master/tlpkg/doc/multi-support.txt b/Master/tlpkg/doc/multi-support.txt new file mode 100644 index 00000000000..e163ba9f4cc --- /dev/null +++ b/Master/tlpkg/doc/multi-support.txt @@ -0,0 +1,74 @@ + +Multi source support in TeX Live +-------------------------------- +(Work in progress) + +(completely independent from generalized revisions) + +1) extension of the location part in 00texlive-installation.config +------------------------------------------------------------------ + +Every line can contain an aditional tag ([a-z0-9,]+) after the actual location, +examples: + depend location:http://mirror.ctan.org/systems/texlive/tlnet/2008 ctan + depend location:http://server.local.uni/texlive/packages department + + +2) invocation of tlmgr/installation +----------------------------------- + +Normally tlmgr will install the candidate with the highest revision number. +That will be achieved by + tlmgr install package + +If you want to install a package from a specific mirror you can do + tlmgr install package/TAG + tlmgr install package/SOURCE +where TAG is the tag given above, and SOURCE is the full source address. +So continuing the above example we could call + tlmgr install package/department +or + tlmgr install package/http://server.local.uni/texlive/packages +(maybe we don't allow the later form ...?) + +3) pinning +---------- + +tlmgr will evaluate an additional config file + ROOT/tlpkg/pinning +or the one given via cmdline + tlmgr -pins /path/to/pinning/file + +That file contains lines + package:tag:pin +where package is a package name or * (or regexp? or glob context* eg?) +and tag is [a-z0-9,]+ as for tags above, or *, +and pin is an integer between 0 and 1000. + +Now the evaluation *which* package will be installed will be done as follows: + +1) create the list of candidates, i.e., all tlpobj from different sources + where the name matches the one to be installed + +2) compute the pins of all the candidates + +3) if there are different pins cancel those candidates with a non-maximal pin + (i.e., let pin_max = max { pin(candidate) : candidate in candidates }, + and new candidates are those with pin(candidate) = pin_max) + +4) within all the remaining candidates choose the one with the highest + revision number + + +======================================== + +Consequences of the above: +- no source: part necessary in the revisions +- packages can be pinned to a specific source, and will not be updated + even if another source ships a higher version number +- no changes to the general server infrastructure are needed +- default installations continue as before +- normal installations with multiple sources but without pinning will + simply *do*the*right*thing*, namely install the highest revision number. + + |