summaryrefslogtreecommitdiff
path: root/Master/tlpkg/doc/packages.txt
blob: 72d72213dfa77e6a2e8534beb4b510fb3ea33e0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
$Id$
Public domain. Information on package maintenance in TeX Live.

Related:
- See http://tug.org/texlive/pkgupdate.html (and scripts) for information
  on the CTAN-to-TL update process.
- See ./releng.txt for info about setting up the pretest and doing a release.


To add a new platform:
- check that the config.guess output maps to our architecture name
  in the `platform_name' routine in TeXLive/TLUtils.pm.
- add the abbreviation to the full-name mapping in `platform_desc'.
- create directory in Master/bin and add at least one file,
  more likely the whole set.
- if windows-ish (.exe extension),
  update regexps in TLTREE.pm and tlmgr.pl and ctan2tds.
- add xz, maybe lz4, maybe wget binaries in Master/tlpkg/installer,
  update texlive.infra.tlpsrc if no wget or otherwise provided,
  update 00texlive.installer.tlpsrc if needed.
- update .tlpsrc files if necessary: most likely asymptote, biber, xindy.
- consider adding to prune= list in tl-update-images.
- regenerate tlpdb if desired.
- commit bin/NEWDIR/ tlpkg/
- update web texlive/build.html (and texlive-en.tex, at some point).
- if desired, put binaries into texlive/files and link on custom-bin.html.
- ask builder for entry in source/README.

To remove a platform:
- remove directory in Master/bin.
- remove xz, maybe wget, maybe lz4, binaries in Master/tlpkg/installer.
- remove any special cases in Master/tlpkg/tlpsrc.
- remove from prune list in tl-update-images, if present.
- remove entry in Build/source/README, if there is one.


 To check tlpsrc changes without committing:
 tl-update-tlpdb --save-anyway
 tlmgr check --use-svn files   # or whatever
Do not fail to revert the tlpdb, or it will create an svn conflict.


 To remake tlcritical from scratch:
 cd /home/ftp/texlive
 rm -rf tlcritical
 mkdir tlcritical
 tl-update-tlcritical --recreate


 To branch before a release,
   in the unlikely event of separate development work before switching trunk:
svn copy -r 12205 -m'texlive-2009-dev tag based on r12205' \
  svn://tug.org/texlive/trunk svn://tug.org/texlive/tags/texlive-2009-dev
svn copy -r 12205 -m'branch2009-dev branch based on r12205' \
  svn://tug.org/texlive/trunk svn://tug.org/texlive/branches/branch2009-dev 

(Use -dev instead of .something because - will sort first, keeping the
listings in a nice chronological order.)


 To build tlnet in a separate location,
   e.g., if making changes to its structure.
   (e.g., in Oct 2019 we changed to versioned containers .rNNN.tar.xz.)

# First we build the test repository and test installation from scratch.
# Do it with no (significant) changes from the current source, for sanity.
# 
# Use subdir of /home/ftp/texlive or another dir ignored for backups
# (see /etc/rsnapshot.conf).
destdir=/home/ftp/texlive/test-tlnet
#
# since we're building into a new hierarchy for testing, have to touch tlpdb.
rm -rf $destdir
mkdir -p $destdir/tlpkg
touch !$/texlive.tlpdb

# Update (populate, the first time) the new repo.
# should take about 15 minutes; updating with the full scheme (which
# should be done at least once) instead of infraonly takes about 35 min.
tl-update-tlnet --critical --scheme infraonly --dest $destdir

# if there are errors, the build hierarchy will not be moved to the
# destination; can do it by hand if desired:
cd /home/ftp
rm -rf texlive/test-tlnet/ # just removing the empty file we created
mv tlnet-trial-*/tlsrc.try texlive/test-tlnet/
rmdir tlnet-trial-*

# If ever desired, could recreate every package from scratch.
# This will take hours.
#tl-update-tlnet --critical --recreate --scheme infraonly --dest $destdir

# Now we can test the new repo: do an installation into /tmp/ki (hardwired).
# The default scheme here is again infraonly.
tl-try-install --repo $destdir

# We'll want to test network, local disk, and from-development repositories.
# So move /tmp/ki, set the repository, and do it again.
mv /tmp/ki /tmp/tldsk
tl-try-install --repo $destdir
/tmp/tldsk/bin/x86_64-linux/tlmgr option repo $destdir
#
# For ftp access, want to use ftpmirror to log in, since anonymous ftp
# will often fail. See tug.org:~karl/.netrc or the ftpd setup on tug.
mv /tmp/ki /tmp/tlftp
/tmp/tlftp/bin/x86_64-linux/tlmgr option repo ftp://fm.tug.org/texlive/test-tlnet
#
# Create test installation from development tree.
# This exercises yet another code path.
Master=...
$Master/install-tl --profile=$Master/tlpkg/dev/profiles/TLinfra.pro 
mv /tmp/ki /tmp/tldev

# Now, from those repos, initial check with current tlmgr;
# update list should be empty at first.
/tmp/tldsk/bin/x86_64-linux/tlmgr update --list
/tmp/tlftp/bin/x86_64-linux/tlmgr update --list
/tmp/tldev/bin/x86_64-linux/tlmgr update --list

# So much for the setup and sanity checks. Now it's time to test
# whatever the real changes are. Make the changes (without
# committing), and update our test repo just as above (no need to recreate):
tl-update-tlnet --critical --scheme infraonly --dest $destdir

# Then re-update the installations:
/tmp/tldsk/bin/x86_64-linux/tlmgr update --self --all
/tmp/tlftp/bin/x86_64-linux/tlmgr update --self --all
/tmp/tldev/bin/x86_64-linux/tlmgr update --self --all

# Also try an older tlmgr against the test repo (readonly, don't want to
# update /usr/local/texlive/2019):
env PATH=/usr/local/texlive/2019/bin/x86_64-linux:/usr/bin \
  tlmgr -repo $destdir update --list | head
#
# Also must try creating and updating a 2019 install from the test-
# repo; best to do a full install here for complete testing.
rm -rf /tmp/ki
pro=--profile=/home/texlive/trunk/Master/tlpkg/dev/profiles/TLfull.pro
env PATH=/usr/bin \
  /usr/local/texlive/2019/install-tl $pro
test19=/tmp/tlt19
mv /tmp/ki $test19 # so we don't accidentally lose it with rm /tmp/ki
#
env PATH=$test19/bin/x86_64-linux:/usr/bin \
  tlmgr -repo $destdir update --self --all

# To create the disaster recovery scripts in the test repo:
tl-update-tlcritical --tlcrit $destdir --no-containers

# Repeat until satisfied: all changes are in test-tlnet and
# installations and working as intended. For the Nov 2019 update, that
# means symlinks pointing to new files for updated packages, old
# versioned containers removed, backups made, etc.

# The tlpkg/bin/tltestnet script has minimal support for some of the
# above in the November 2019 change - moving the dev files (to and
# back), creating a 2019-original-release installation, etc. Take a look
# for ideas and hacking; don't take it too seriously.

# If you need to make changes to files without a nightly build
# intervening, as will usually be the case, it is necessary to manually
# edit the Master/tlpkg/texlive.tlpdb in the test- repo to
# increment the "revision" number for texlive.infra, or whatever
# packages need to be updated. Otherwise tl-update-containers will think
# that nothing needs to be updated.