summaryrefslogtreecommitdiff
path: root/Master/tlpkg/doc/guit08/talk.tex
blob: 837e59b7cd9ed71985607b7a8726084457b87bb3 (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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
\documentclass{beamer}
\usefonttheme{serif}
\usefonttheme{professionalfonts}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{hhline,bm,xspace,url}
\usepackage[expert,seriftt]{lucidabr}
\renewcommand{\rmdefault}{hlhj}
\usepackage{fancyvrb}
\usepackage{url,xcolor}
\usepackage{marvosym}
\usepackage[color]{guit}
\usepackage{listings}
\lstset{frame=lines,basicstyle=\ttfamily,showspaces=true,prebreak={\Righttorque},postbreak={\Lefttorque},breaklines}
\newcommand{\tl}{\TeX~Live}
\newcommand{\ctan}{CTAN}
\newcommand{\tpm}{\texttt{tpm}}
\newcommand{\tpms}{\tpm{}s}
\newcommand{\tlpsrc}{\texttt{tlpsrc}}
\newcommand{\tlpsrcs}{\tlpsrc{}s}
\newcommand{\tlpobj}{\texttt{tlpobj}}
\newcommand{\tlpobjs}{\tlpobj{}s}
\newcommand{\tlpdb}{\texttt{tlpdb}}
\newcommand{\tlpdbs}{\tlpdb{}s}

\hyphenation{infra-struc-ture}
\DefineShortVerb{\|}

\usetheme[headheight=10pt,footheight=10pt]{boxes}
\setbeamercolor*{black on white}{bg=white,fg=black}
%\setbeamerfont*{black on white}{series=\scshape}
\addfootbox{black on white}{\hbox{\vbox to 10pt{\hspace{3em}Norbert 
Preining, \tl's new infrastructure -- {\normalfont\guitmeeting 2007}
 \hfill \insertframenumber\hspace{3em}~~\vfill}}}
\addheadbox{black on white}{\hbox{\vbox to 10pt{~~~\hfill\leavevmode\vfill}}}
\setbeamertemplate{navigation symbols}{}

\setlength{\parskip}{\medskipamount}

\def\cred#1{{\color{red}#1}}
\def\prog#1{\texttt{#1}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% here begins the stuff
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{\tl's new infrastructure}
\author{Norbert Preining}
\institute{Vienna University of Technology, Austria}
\date{\textsc{{\normalfont\guitmeeting*}~2007}

Pisa, Ialia \hspace{\bigskipamount} 13~October 2007}

\begin{document}

\frame{\titlepage}


\begin{frame}
  \frametitle{Properties of the \tl\ distribution}

  \begin{itemize}
  \item includes all the free stuff from \textsc{ctan}
  \item ready for ``consumption'', i.e., runs from \textsc{dvd}, but
    can also installed into the file system
  \item available for a wide range of platform--operating system
    combinations
  \item currently is replacing te\TeX\ in many (Unix) distributions as
    default \TeX\ system
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Upstream organization}
  \begin{itemize}
  \item \textsc{svn} repository where many people have write permissions
  \item loads of supporting scripts doing a variety of jobs:
    \begin{itemize}
    \item preparing the installation for mastering
    \item installation from various media
    \item installation of packages from \textsc{ctan} into the
      \textsc{svn} repository
    \item performing various checks on the whole archive (coverage,
      double inclusion, etc.)
    \end{itemize}
  \end{itemize}

  \pause
  \begin{block}{Problems}
    \begin{itemize}
    \item hand-crafted, hard to read
    \item not easily extensible
    \item no documentation
    \end{itemize}
  \end{block}
\end{frame}


\begin{frame}
  \frametitle{Previous infrastructure: tpms}
  \TeX\ Package Manage[r/ment] files collected a variety of
  information into on \textsc{xml} file:
  \begin{itemize}
  \item file patterns and file lists
  \item title, description, license, versions
  \item activation of map files, formats, hyphenation patterns
  \end{itemize}
  \pause
  \begin{block}{Problems with tpms}
    \begin{itemize}
    \item mixture of generated and static information
    \item duplicated information (version, license, descriptions,
      \ldots) which were outdated
    \item hard to parse, thus the necessity to generate another set of
      files for the installer
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Aims of the new infrastructure}
  \begin{itemize}
  \item Separation of static from generated content\\
    Going from a `source' to the `object' should include automatically
    data from various other sources (mainly the Catalogue and the
    repository) \pause
  \item Getting rid of any `additional' files (list files)\\
    any additional files tend to be outdated, all the necessary
    information should be present in \emph{one} place and be easily
    parseable. \pause
  \item Single package updates via the web\\
    updates to single packages (e.g., a new beamer release)\pause
  \item Better documentation\\
    since \tl\ is replacing te\TeX\ we want to give people
    incorporating \tl\ into distributions a better documented and
    easier to handle system
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{The new infrastructure -- the basics}
  Three types of objects/files:
  \begin{itemize}
  \item \tlpsrc: provides only the minimal information
  \item \tlpobj: the extension/compilation of a \tlpsrc\ file which
    includes the complete file lists and all the additional
    information derived from other sources
  \item \tlpdb: the collection of all available/installed/upgradeable
    \tlpobj{}s
  \end{itemize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{\tlpsrc\ format by example}
  \begin{lstlisting}[title={beamer.tlpsrc}]
name beamer
category Package
depend Package/pgf
\end{lstlisting}
\pause
\begin{lstlisting}[title={bin-cweb.tlpsrc}]
name bin-cweb
category TLCore
docpattern f texmf/doc/man/man1/ctangle.1
docpattern f texmf/doc/man/man1/cweave.1
docpattern f texmf/doc/man/man1/cweb.1
binpattern f bin/${ARCH}/ctangle
binpattern f bin/${ARCH}/cweave
\end{lstlisting}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Allowed fields for \tlpsrc}
  \begin{itemize}
  \item name: identifies the package
  \item category: one of (currently) |Collection|, |Scheme|, |TLCore|,
    |Documentation|, |Package|
  \item catalogue: link to the \TeX\ Catalogue
  \item shortdesc, longdesc: description of the package
  \item depend: |Category/Name| (multiple entries possible)
  \item execute: activating maps, formats, hyphenation patterns
  \item srcpatterns, \ldots: selecting member files of the package via patterns
  \end{itemize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{The pattern language}
  patterns are of the form
  \begin{center}
    |[PREFIX]TYPE PAT|
  \end{center}
  where |PREFIX| can be |+|, |!+|, or |!|,\pause and |TYPE PAT| can be:
  \begin{description}
  \item[f path]
    includes all files which match |path| where \emph{only} the last
    component of |path| can contain the usual glob characters * and ?
    (but no others!).\pause
  \item[d path]
    includes all the files in and below the directory specified as
    |path|. \pause
  \item[t word1 ... wordN wordL]
    includes all the files in and below all directories of the form
    \begin{center}
      \path{word1/word2/.../wordN/.../any/dirs/.../wordL/}
    \end{center}\pause
  \item[r regexp]
    includes all files matching the Perl regexp \verb+/^regexp$/+
  \end{description}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Example patterns}
  \begin{itemize}
  \item |runpattern f texmf/chktex/*|\\
    includes all files \emph{in} Master/texmf/chktex/\pause
  \item |binpattern f bin/${ARCH}/bibtex|\\
    includes the bibtex binaries into the bin-bibtex package,
    depending on the architecture\pause
  \item |runpattern d texmf/tex/lambda/base|\\
    includes all files in and under the above path\pause
  \item |runpattern t texmf-dist omega uni2char|\\
    includes all files in texmf-dist/omega/\ldots/uni2char/\pause
  \item |runpattern r .*/foobar|\\
    includes the files matching the regexp
  \end{itemize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Autogenerated patterns}
  To keep \tlpsrc\ files small, if a pattern section is empty or all
  patterns are prefixed with |+|, the following patterns are
  automatically generated:
  \begin{itemize}
  \item runpatterns in category Package:
    \begin{center}
      |t texmf-dist topdir name|
    \end{center}
  \item docpatterns in category Package:
    \begin{center}
      |t texmf-dist doc name|
    \end{center}
  \item docpatterns in category Documentation:
    \begin{center}
      |t texmf-doc doc name|
    \end{center}
  \item srcpatterns in category Package:
    \begin{center}
      |t texmf-dist source name|
    \end{center}
  \item srcpatterns in category Documentation:
    \begin{center}
      |t texmf-doc source name|
    \end{center}
  \end{itemize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Additional tricks}
  \begin{description}
  \item[arch expansion]
    In case the string \verb+${ARCH}+ occurs in one |binpattern| it is 
    automatically expanded to the respective architecture.
  \item[bat/exe/dll for win32]
    For |binpatterns| of the form |f bin/win32/foobar| files
    |foobar.bat|, |foobar.dll|, and |foobar.exe| are also matched.
  \end{description}
  \pause
  \begin{block}{Effects of auto generation and tricks}
    total number of tlpsrc files: 1561\\
    total number of tlpsrc files with patterns: 168\\
    number of bin- and hyphen- tlpsrc files with patterns: 125\\
    number of `normal' packages with patterns: 43
  \end{block}
\end{frame}

\begin{frame}[fragile]
\frametitle{\tlpobj\ format by example}
\begin{lstlisting}[basicstyle=\ttfamily\small,title={Excerpt from bin-dvipsk.tlpobj},label=dvipsk]
name bin-dvipsk
category TLCore
revision 4427
docfiles size=959434
 texmf/doc/dvips/dvips.html
 ...
runfiles size=1702468
 texmf/dvips/base/color.pro
 ...
 texmf/scripts/pkfix/pkfix.pl
binfiles arch=i386-solaris size=329700
 bin/i386-solaris/afm2tfm
 bin/i386-solaris/dvips
 bin/i386-solaris/pkfix
binfiles arch=win32 size=161280
 bin/win32/afm2tfm.exe
...
\end{lstlisting}
\end{frame}

\begin{frame}
  \frametitle{Allowed fields in \tlpobj\ files}
  \begin{itemize}
  \item XXXfiles take the place of XXXpatterns\\
    every files section has a size attribute, and the
    binfiles section can occur more then once with different
    arch tags (see above)
  \item revision: maximum svn revision number of the 
    contained files, since version numbers are not
    parseable, trustworthy, or not even present
  \item catalogue-* keys: stuff taken from the catalogue\\
    for example catalogue-version, catalogue-authors, 
    catalogue-license
  \end{itemize}
  \begin{block}{\tlpdb\ format}
    concatenation of \tlpobj
  \end{block}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Perl programming \textsc{api}}
  \begin{description}
  \item[TeXLive::TLTREE] properties of the subversion 
    repository, in principle it is |svn status -v| 
  \item[TeXLive::TeXCatalogue] simple interface to the \TeX\
    Catalogue
  \item[TeXLive::TLPSRC] for \tlpsrc\ files, basic
    functionality like reading in, writing out, and member 
    access functions. Generation of  a |TLPOBJ| object from
    a |TLPSRC| object using an instance of |TLTREE|. 
  \item[TeXLive::TLPOBJ] for \tlpobj\ files, basic
    functionality like reading in, writing out, and member 
    access functions. Generation of zip files for web 
    updates and installation media.
  \item[TeXLive::TLPDB] access to the \tl\ database. 
  \item[TeXLive::TLPUtils] some handy functions used in all the
    other modules.
  \end{description}
\end{frame}

\begin{frame}
  \frametitle{Documentation}
  \begin{itemize}
  \item all modules contain a full documentation in pod format
  \item additional text \textsc{api} document
  \item the article accompanying this talk
  \end{itemize}

  \pause
  \begin{block}{Additional \textsc{api}s}
    \begin{itemize}
    \item shell \textsc{api} at a very basic level
    \item python \textsc{api}
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Integration into \tl}
  \begin{itemize}
  \item ctan2tl: installs packages from \textsc{ctan} into
    \tl\ repository -- updated
  \item installer: work has started
  \item various cron jobs (updating the database): ready
  \item consistency checks: missing
  \item all tpm stuff has been removed from the repository,
    everything new will be written using these modules
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Resources}
  \begin{itemize}
    \item \url{tex-live@tug.org} -- main contact point
  \item \path{www.tug.org/texlive} -- the main entry point, with
  links to developers' resources, documentation
\item \path{www.tug.org/svn/texlive/trunk/} -- web view onto the
  subversion repository;
\item \path{svn://tug.org/texlive/trunk} -- svn repository, anonymous
  access
\item \path{www.tug.org/texlive/pkgupdate.html} -- an
  explanation how updates from \ctan\ to \tl\ are done.
  \end{itemize}

  \pause
  \begin{center}
    Thanks a lot, and hope to see you around
  \end{center}
\end{frame}
\end{document}