summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2008-09-08 10:35:20 +0000
committerNorbert Preining <preining@logic.at>2008-09-08 10:35:20 +0000
commit533923f1e1a463522368b7deb6116361ecb22bd1 (patch)
tree8c71ecaa393cb9a8aae92b5ebe4795f7dc1581f2
parent88ea4b7a0b06408aa13a15f28e8181abcbedbb0b (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.txt74
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.
+
+