diff options
Diffstat (limited to 'Master/tlpkg/doc/cstug08/talk-bacho08.tex')
-rw-r--r-- | Master/tlpkg/doc/cstug08/talk-bacho08.tex | 493 |
1 files changed, 493 insertions, 0 deletions
diff --git a/Master/tlpkg/doc/cstug08/talk-bacho08.tex b/Master/tlpkg/doc/cstug08/talk-bacho08.tex new file mode 100644 index 00000000000..8ff80e1e270 --- /dev/null +++ b/Master/tlpkg/doc/cstug08/talk-bacho08.tex @@ -0,0 +1,493 @@ +\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{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 Bachotek~2008} + \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{Bachotek~2008} + +Bachotek, Poland \hspace{\bigskipamount} 30~April 2008} + +\begin{document} + +\frame{\titlepage} + + +\begin{frame} + \frametitle{The \tl\ distribution} + + \begin{itemize} + \item includes all the free stuff from \textsc{ctan} + \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 central \texttt{texlive.tlpdb}} + One installation or media is now completely described by one file, + the \TeX~Live Database: + \begin{itemize} + \item simple text file -- easily parseable + \item revision number for the single packages + \item generated from static content (the tlpsrc files) + \item enriched with information from the \TeX~Catalogue + \item format documented in detail (\textsc{pod} documentation in the + respective perl module) + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{How does \texttt{texlive.tlpdb} look like} + \begin{lstlisting}[title={texlive.tlpdb}] +name abbr +... + +name memoir +... + +\end{lstlisting} + \begin{itemize} + \item sequence of \texttt{key value} pairs + \item separated by an empty line (or more) + \item one group per package + \item some `meta'-packages for configuration options and special + purpose packages + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{The single package: \tlpobj\ by example I} + \begin{lstlisting}[basicstyle=\ttfamily\tiny,title={a0poster.tlpobj},label=a0poster] +name a0poster +category Package +revision 7340 +shortdesc Support for designing posters on large paper. +longdesc Provides fonts in sizes of 12pt up to 107pt and also makes sure +longdesc that in math formulas the symbols appear in the right size. Can +longdesc also create a PostScript header file for dvips which ensures +longdesc that the poster will be printed in the right size. Supported +longdesc sizes are DIN A0, DIN A1, DIN A2 and DIN A3. +docfiles size=47 + texmf-dist/doc/latex/a0poster/a0.pdf details="Package documentation (German)" language="de" + texmf-dist/doc/latex/a0poster/a0.tex + texmf-dist/doc/latex/a0poster/a0_eng.pdf details="Package documentation (English)" language="en" + texmf-dist/doc/latex/a0poster/a0_eng.tex +runfiles size=4 + texmf-dist/tex/latex/a0poster/a0poster.cls + texmf-dist/tex/latex/a0poster/a0size.sty +catalogue-version 1.22b +catalogue-date 2006-11-28 22:38:04 +0100 +catalogue-ctan /macros/latex/contrib/a0poster +catalogue-license lppl +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{The origin of this \texttt{a0poster.tlpobj}} + \begin{lstlisting}[basicstyle=\ttfamily\small,title={a0poster.tlpsrc},label=a0poster.tlpsrc] +name a0poster +category Package +\end{lstlisting} + \begin{itemize} + \item minimal input file with static data + \item rest is generated from actual svn repository (revision, size) + \item enriched with information from the \TeX\ Catalogue + (catalogue-*, specification of the documentation files) + \item tagged documentation files (details, language), information + again from the Catalogue + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{The single packages: \tlpobj\ by example II} + \begin{lstlisting}[basicstyle=\ttfamily\tiny,title={bin-bibtex8 and friends},label=bibtex8] +name bin-bibtex8 +category TLCore +revision 7340 +depend bin-bibtex8.ARCH +docfiles size=15 + texmf/doc/bibtex8/00readme.txt + texmf/doc/bibtex8/HISTORY + texmf/doc/bibtex8/csfile.txt + texmf/doc/bibtex8/file_id.diz +runfiles size=10 + texmf-dist/bibtex/csf/base/88592pl.csf + texmf-dist/bibtex/csf/base/cp1250pl.csf + texmf-dist/bibtex/csf/base/cp852pl.csf + texmf-dist/bibtex/csf/base/iso8859-7.csf + +name bin-bibtex8.alpha-linux +category TLCore +revision 7340 +shortdesc binary files of bin-bibtex8 for alpha-linux +binfiles arch=alpha-linux size=62 + bin/alpha-linux/bibtex8 + +... +name bin-bibtex8.win32 +category TLCore +revision 7340 +shortdesc binary files of bin-bibtex8 for win32 +binfiles arch=win32 size=25 + bin/win32/bibtex8.exe +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{The origin of the above \texttt{bin-bibtex8}} + \begin{lstlisting}[basicstyle=\ttfamily\small,title={bin-bibtex8.tlpsrc},label=bin-dvipsk.tlpsrc] +name bin-bibtex8 +category TLCore +runpattern d texmf-dist/bibtex/csf/base +docpattern f texmf/doc/bibtex8/* +binpattern f bin/${ARCH}/bibtex8 +\end{lstlisting} % for stupid emacs: $ + \begin{itemize} + \item various patterns for capturing files + \item tricks to capture binaries on unix and windows + \item separate objects for the binary files of the package + \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|\\ % for stupid emacs $ + 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/texlua for win32] + For |binpatterns| of the form |f bin/win32/foobar| files + |foobar.bat|, |foobar.dll|, |foobar.exe|, and |foobar.texlua| are + also matched. + \end{description} + \pause + \begin{block}{Effects of auto generation and tricks} + total number of tlpsrc files: 1644\\ + total number of tlpsrc files with patterns: 172\\ + number of bin- and hyphen- tlpsrc files with patterns: 123\\ + number of `normal' packages with patterns: 49 + \end{block} +\end{frame} + + +\begin{frame}[fragile] + \frametitle{Allowed fields for \tlpobj} + \begin{itemize} + \item name: identifies the package + \item category: one of (currently) |Collection|, |Scheme|, |TLCore|, + |Documentation|, |Package| + \item shortdesc, longdesc: description of the package + \item depend: |Name| (multiple entries possible) + \item execute: activating maps, formats, hyphenation patterns + \item runfiles, docfiles, srcfiles, binfiles\\ + 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} +\end{frame} + +\begin{frame} + \frametitle{Some special packages} + Some packages do not relate to actual files but are used to save + options and configurations into the database by putting them into a + depend line. + \begin{itemize} + \item \texttt{00texlive.config} general configuration (release, + src/doc container split) + \item \texttt{00texlive-installation.config} only present in a final + installation and contains the choices the admin made when doing + the installation (paper a4/letter, pre-generate formats, + installation location, \ldots) + \item \texttt{00texlive.core} actually contains files, but those are + never installed and this package is only here to collect files + which are not contained in any package, thus making the coverage + check squeak + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Perl programming \textsc{api}} + Important for `users' or integrators + \begin{description} + \item[TeXLive::TLPOBJ] for \tlpobj\ files, basic + functionality like read, write, and member access and change + functions, etc. + \item[TeXLive::TLPDB] access to the \tl\ database. + \item[TeXLive::TLPostInstall] collects post installation actions + \end{description} + + \pause + Important for `us' as developer: + \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 reade, write, etc + \item[TeXLive::TLUtils] some handy functions + \item[TeXLive::TLMedia] abstracts an arbitrary installation media + \end{description} +\end{frame} + +\begin{frame} + \frametitle{Other (planned/wished) \textsc{api}s} + \begin{description} + \item[texlua] next on the list to be done, would really help us a lot + \item[python] minimal code present (by Jim Hefferon) + \item[C] some code present, was a \textsc{GSoC} project, but no slot + available (code by Jjgod Jiang) + \item[bash] maybe, some code present (by the author) + \item[\ldots] no idea what else \ldots + \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 article in Ars\TeX nica, 2007:4, 69--73, and in proceedings of + this conference (hopefully) + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{What to do with this stuff} + \begin{itemize} + \item installer: more or less done, see other talk + \item distribution inclusion: will hopefully work well + \item texdoctk++: tagged documentation files could be used to write + a better texdoctk, but depends on the information of the authors + in the \TeX~Catalogue + \item `\TeX\ Live Manager' \texttt{tlmgr} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{\TeX\ Live Manager \texttt{tlmgr}} + New program collection several scripts under one hood, currently + supports: + \begin{itemize} + \item installation of additional packages or collections, with or + without automatic dependency installation + \item same with removal + \item update all packages to the newest versions available + \item paper configuration like texconfig, but also for Windows + \item listing of available and installed architectures, and adding + new architectures to the installation + \item searching the installed and all available packages + \item list all schemes, collections, packages + \item setting some default values like the installation location + \item regenerate fmtutil.cnf, language.dat, and updmap.cfg from the + information stored in the database and local additions + \item uninstall the whole installation + \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} +\end{frame} +\end{document} |