diff options
author | Karl Berry <karl@freefriends.org> | 2009-01-01 01:55:30 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-01-01 01:55:30 +0000 |
commit | bd36ab79b831cabded89ff0328c7c0e410872997 (patch) | |
tree | b152de091ec0fe4e689110136143d6187d266c39 /Master/tlpkg/bin | |
parent | a477b52f73704eea5cc4af4652969b00329cbfa6 (diff) |
move place and ctan2tds to libexec, since they should never be called directly in the current world
git-svn-id: svn://tug.org/texlive/trunk@11774 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/bin')
-rwxr-xr-x | Master/tlpkg/bin/ctan2tds | 3658 | ||||
-rwxr-xr-x | Master/tlpkg/bin/ctan2tl | 5 | ||||
-rwxr-xr-x | Master/tlpkg/bin/place | 301 |
3 files changed, 3 insertions, 3961 deletions
diff --git a/Master/tlpkg/bin/ctan2tds b/Master/tlpkg/bin/ctan2tds deleted file mode 100755 index 30651acf2b4..00000000000 --- a/Master/tlpkg/bin/ctan2tds +++ /dev/null @@ -1,3658 +0,0 @@ -#!/usr/bin/env perl -# $Id$ -# Public domain. -# Originally written by Sebastian Rahtz. Comments to tex-live@tug.org. -# -# A script to TL-install a package from CTAN. -# For a higher-level invocation, see ctan2tl. -# -# Its default actions, given a "raw" directory copied from CTAN (the -# current directory on invocation), are -# 1. copy everything to texmf-dist/doc/<format>/<package> -# 2. run any .ins files -# 3. run any .mf files through mktextfm -# 4. move .sty/.cls etc files to texmf-dist/tex/<format>/<package> -# 5. move other files to appropriate places in the hierarchy. -# -# All the patterns for what to move or run can be overridden per-package. - -use English; -use Getopt::Long; -use File::Basename; -use Cwd; - -# programs used; must all be on the path -$MV = "mv"; -$CP = "cp -p"; -$RM = "rm -vf"; # just to get feedback from GNU rm on removals -$INSTALL = "install -D"; - -$| = 1; -select ((select (STDERR), $| = 1)[0]); - -$startdir = getcwd(); # where we start from (raw dir) -chdir "../tmp.cooked" || die "chdir(../tmp.cooked) failed: $!"; -$TDS = getcwd(); # locate destination dir -chdir $startdir || die "chdir($startdir) failed: $!"; # back to raw - -# -# packages to treat entirely on their own, or not at all. -# the code here is evaluated by Perl, so special packages -# can have their own subroutine. -# -%special = ( - 'Catalogue', "&MAKECatalogue", - 'FAQ-en', "&MAKEFAQen", - 'HA-prosper', '&MAKEhaprosper', - 'IEEEtran', "&MAKEIEEEtran", - 'LingTrees', "die 'skipping, requires python'", - 'SIstyle', '&MAKEflatten', - 'a4', "die 'skipping, just a pointer to ntgclass'", - 'aastex', "&MAKEflatten", - 'aeb_pro', "die 'skipping, requires new acrobat + complicated'", - 'amscls', "die 'skipping, ams situation confused'", - 'arabxetex', '&MAKEflatten', - 'ae', "&MAKEae", - 'AkkTeX', "&MAKEflatten", - 'algorithmicx',"&MAKEnosymlinks", - 'allrunes', "&MAKEflatten", - 'alphabib', "die 'skipping, shell script, and no doc source?'", - 'ams', "die 'skipping, update manually to preserve ams fonts'", - 'amsldoc-vn', "&MAKEflatten", - 'analogclock', "die 'skipping, requires system font installation", - 'antomega', "&MAKEflatten", - 'antt', "&MAKEcopy", - #'antp', "&MAKEflatten", # not sure about config.antp yet - 'apacite', "&MAKEflatten", - 'arabi', "&MAKEarabi", - 'arabtex', "&MAKEarabtex", - 'archaic', "&MAKEwilson", - 'arphic', "&MAKEarphic", - 'arev', "&MAKEcopy", - 'ascii', "&MAKEflatten", - 'astron', "die 'skipping, nonfree license'", - 'augie', "&MAKEaugie", - 'aurical', "&MAKEaurical", - 'aurora', "die 'skipping, nocommercial license'", - 'bangtex', "&MAKEflatten", - 'bardiag', "&MAKEbardiag", -# bbm is split into bbm (fonts) and bbm-macros (macros) -# 'bbm', "&MAKEbbm", - 'beamer', "&MAKEbeamer", - 'beamer-contrib',"&MAKEflatten", - 'beebe', "die 'skipping, MAKEbeebe needs work, sorry'", - 'bengali', '&MAKEflatten', - 'bengali-omega', "die 'skipping, duplicates odev.sty et al.'", - 'bera', "&MAKEunzipandflatten", - 'biblatex', "die 'skipping, still experimental'", - 'biblatex-dw', "die 'skipping, depends on experimental biblatex'", - 'biblatex-mla',"die 'skipping, depends on experimental biblatex'", - 'bibtopicprefix', "&MAKEflatten", - 'bin-cjkutils',"&MAKEbin_cjkutils", - 'bitfield', "die 'skipping, obsolete on CTAN'", - 'blanks', "die 'skipping, unknown license (and c.1992)'", - 'blockdraw_mp',"&MAKEflatten", - 'bnf-plain', "die 'skipping, unknown license (and c.1992)'", - 'bookhands', "&MAKEwilson", - 'borceux', "&MAKEborceux", - 'burmese', "&MAKEflatten", - 'c90', "&MAKEc90", - 'calendar', "die 'skipping, nosell license'", - 'camel', "die 'skipping, nosell license'", - 'cbfonts', "&MAKEflatten", - 'cbcoptic', "&MAKEcbcoptic", - 'cellular', "die 'skipping, license noinfo, author deceased'", - 'cfr-lm', "die 'skipping, experimental per author'", - 'changebar', "&MAKEchangebar", - #'chemarrow', "&MAKEflatten", # check about Arrow.vfb - 'chemsym', "die 'skipping, nonfree'", - 'cheq', "die 'skipping, nosell license'", - 'china2e', "die 'skipping, nosell license'", - 'circuit_macros', "die 'skipping, needs m4'", - 'cirth', "die 'skipping, nosell license'", - 'cjhebrew', "&MAKEflatten", - 'cjk', "&MAKEcjk", - 'clock', "&MAKEflatten", - 'cm-lgc', '&MAKEcmlgc', - 'cm-super', "&MAKEflatten", - 'cmastro', "die 'skipping, noinfo license, author unknown'", - 'cmbright', "&MAKEflatten", - 'cmcyr', "&MAKEflatten", - 'cmll', "&MAKEflatten", - 'colortab', "die 'skipping, nosell license'", - 'comicsans', "die 'skipping, Comic Sans is nonfree'", - 'concmath', "&MAKEconcmath", - 'context', "&MAKEcontext", - 'context-account', "&MAKEcopy", - 'context-bnf', "&MAKEcopy", - 'context-chromato', "&MAKEcopy", - 'context-construction-plan', "&MAKEcopy", - 'context-degrade', "&MAKEcopy", - 'context-french', "&MAKEcopy", - 'context-gnuplot', "&MAKEcopy", - 'context-letter', "&MAKEcopy", - 'context-lettrine', "&MAKEcopy", - 'context-lilypond', "&MAKEcopy", - 'context-mathsets', "&MAKEcopy", - 'context-taspresent',"&MAKEcopy", - 'context-typearea', "&MAKEcopy", - 'context-vim', "&MAKEcopy", - 'coptic', "die 'skipping, it has been replaced by cbcoptic'", - 'corridx', "die 'skipping, Pascal source'", - 'csplain', "die 'skipping, too hard to automate'", - 'csvtools', "&MAKEflatten", - 'ctable', "&MAKEflatten", - 'ctib', "&MAKEflatten", - 'cweb', "die 'skipping, programs'", - 'cyklop', "&MAKEcopy", - 'deleq', "die 'skipping, nosell license'", - 'deproc', "die 'skipping, for latex 2.09'", - 'devanagr', "&MAKEdevanagr", - 'diagnose', "&MAKEflatten", - 'dictsym', "&MAKEunzipandflatten", - 'disser', "&MAKEdisser", - 'dmfonts', "die 'skipping, needs work'", - 'dnp', "&MAKEdnp", - 'dogma', "die 'skipping, requires nonfree font'", - 'dot2tex', "die 'skipping, only useful with supporting programs'", - 'dot2texi', "die 'skipping, only useful with supporting programs'", - 'dps', "die 'skipping, requires acrotex'", - 'dropping', "die 'skipping, nosell license'", - 'dtk', "&MAKEflatten", - 'dtxtut', "&setup", # straight copy - 'easy', "&MAKEeasy", - 'ean13isbn', "&MAKEcopy", - 'ebib', "die 'skipping, as it is Emacs'", - 'ebong', "&MAKEebong", - 'ecc', "&MAKEflatten", - 'eco', "&MAKEeco", - 'edmac', "die 'skipping, needs work (unzip xx)'", - 'ednotes', "&MAKEnosymlinks", - 'elhyphen', "die 'incorporated in hyph-utf8'", - 'encxvlna', "&MAKEcopy", - 'enpassant', "die 'skipping, license unknown'", - 'epic', "die 'skipping, license unknown and replaced by eepic'", - 'epigrafica', "&MAKEflatten", - 'epiolmec', "&MAKEflatten", - 'epix', "die 'skipping, needs C++'", - 'eplain', "&MAKEcopy", - 'epstopdf', "die 'skipping, needs .pl vs. noext + man help, sorry'", - 'eqnarray', "die 'skipping, nonfree'", - 'esindex', "die 'skipping, use bezos instead'", - 'eskdx', "&MAKEeskdx", - 'esvect', "&MAKEflatten", - 'ethiop', "&MAKEflatten", - 'euclide', "&MAKEpst", - 'eulervm', "&MAKEcopy", - 'eurosym', "&MAKEflatten", - #'euenc', "&MAKEflatten", - 'expressgx', "&MAKEexpressg", - 'fancyvrb', "&MAKEfancyvrb", - 'faq-fr', "die 'skipping, nonfree'", - 'fax', "die 'skipping, nosell license'", - 'fc', "&MAKEflatten", - 'featpost', "&MAKEfeatpost", - 'feynmf', "&MAKEfeynmf", - 'floatflt', "die 'skipping, nosell license'", - 'foiltex', "die 'skipping, nosell license'", - 'flowfram', "&MAKEflatten", - 'fontinst', "&MAKEfontinst", - 'footnpag', "&MAKEfootnpag", - 'fourier', "&MAKEflatten", - 'fouriernc', "&MAKEflatten", - 'fp', "&MAKEfp", - 'fpl', "&MAKEflatten", - 'frcursive', "&MAKEflatten", - 'futhark', "die 'skipping, nonfree license'", - 'futurans', "die 'skipping, requires nonfree font'", - 'galley', "die 'skipping, will be included in xpackages later'", - 'garuda-c90', "&MAKEgaruda_c90", - 'gene', "die 'skipping, complicated, some have sources, sorry'", - 'genmisc', "die 'too complicated, sorry'", - 'germbib', "&MAKEgermbib", - 'gfsartemisia',"&MAKEflatten", - 'gfsbaskerville',"&MAKEflatten", - 'gfsbodoni', "&MAKEflatten", - 'gfsdidot', "&MAKEflatten", - 'gfscomplutum',"&MAKEflatten", - 'gfsneohellenic', "&MAKEflatten", - 'gfsporson', "&MAKEflatten", - 'gfssolomos', "&MAKEflatten", - 'glhyph', "die 'merged into hyph-utf8'", - 'graphicxsp', "die 'skipping, requires adobe distiller'", - 'grnumalt', "die 'skipping, nonfree'", - 'grtimes', "die 'skipping, requires nonfree monotype times'", - 'guitbeamer', "die 'skipping, nonfree'", - 'hfbright', "&MAKEflatten", - 'hfoldsty', "&MAKEflatten", - 'hilowres', "die 'skipping, nonfree'", - 'hyph-utf8', "&MAKEcopy", - 'hyphen-german',"die 'skipping, part of hyph-utf8'", - 'ibycus-babel',"&MAKEibycusbabel", - 'ibygrk', "&MAKEflatten", - 'ifacmtg', "die 'skipping, nonfree license'", - 'indxcite', "die 'skipping, too old, license suboptimal'", - 'induni-om', "die 'skipping, for omega, use of pua?'", - 'invoice', "&MAKEflatten", - 'ipa', "die 'skipping, part of wsuipa'", - 'iwona', "&MAKEcopy", - 'jadetex', "&MAKEjadetex", - 'japanese', "die 'skipping, requires ptex'", - 'jasthesis', "die 'skipping, license is unknown'", - 'javadoc', "die 'skipping, requires java and no source'", - 'jj_game', "die 'skipping, requires acrotex'", - 'jsclasses', "die 'skipping, requires nonfree ptex/platex'", - 'kerkis', "&MAKEflatten", - 'kurier', "&MAKEcopy", - 'kuvio', "die 'skipping, nonfree license'", - 'l2a', "die 'skipping, another old detex, requires compilation'", - 'latex-veryshortguide', "die 'skipping, nosell license'", - 'latexmp', "&MAKEflatten", - 'lcircuit', "die 'skipping, license unknown, too old to investigate'", - 'leawood', "&MAKEflatten", - 'lettre', "&MAKEflatten", - 'levy', "die 'skipping, levy not ready, sorry'", - 'lexitex', "die 'skipping, camel has replaced'", - 'lfb', "&MAKElfb", - 'lh', "&MAKEcopy", - 'libertine', "&MAKEcopy", - 'lifia-th', "die 'skipping, '", - 'linearA', "&MAKEflatten", - 'lineno', "&MAKEnosymlinks", - 'literat', "&MAKEliterat", - 'lithuanian', "&MAKEflatten", - 'lm', "&MAKEcopy", - 'lms', "die 'skipping, nonfree license'", - 'lshort-bulgarian', '&MAKElshort', - 'lshort-chinese', '&MAKElshort', - 'lshort-english', '&MAKElshort', - 'lshort-finnish', '&MAKElshort', - 'lshort-korean', '&MAKElshort', - 'lshort-portuguese', '&MAKElshort', - 'lshort-slovenian', '&MAKElshort', - 'lshort-turkish', '&MAKElshort', - 'lshort-vietnamese', '&MAKElshort', - 'ltt', "&MAKEltt", - 'ltxbase', "&MAKEbase", - 'ltxmisc', "die 'skipping, too complicated, sorry'", - 'lxfonts', "&MAKEcopy", - 'lucida', "&MAKElucida", - 'magyar', "die 'skipping, conflicts with regular babel'", - 'makebarcode', "&MAKEcopy", - 'makecell', "&MAKEnosymlinks", - 'makedtx', "&MAKEflatten", - 'makor', "&MAKEbase", - 'manjutex', "die 'skipping, obsolete on CTAN'", #"&MAKEflatten", - 'manpage', "die 'skipping, nonfree license'", - 'mathabx', "&MAKEflatten", - 'marvosym', "&MAKEnosymlinks", - 'mathdesign', "&MAKEmathdesign", - 'mathexam', "&MAKEflatten", - 'mathmode', "&setup", - 'mathpazo', "&MAKEmathpazo", - 'matlab', "die 'skipping, requires nonfree matlab'", - 'mdwfonts', "die 'skipping, too many tfm duplicates'", - 'metaobj', "&MAKEflatten", - 'metauml', "&MAKEmetauml", - 'mflogo', "&MAKEmflogo", - 'mfpic', "&MAKEflatten", - 'minionpro', "die 'skipping, requires nonfree minion'", - 'misc', "&MAKEmisc", - 'mkbangtex', "die 'skipping, no copyright (and python)'", - 'mlbib', "die 'skipping, bib file names are too generic'", - 'mnhyphn', "&MAKEmnhyphn", - 'mnsymbol', "&MAKEflatten", - 'montex', "&MAKEflatten", - 'morehelp', "die 'skipping, nonfree license'", - 'morse', "die 'skipping, nosell license'", - 'movie15', "&MAKEflatten", - 'mpattern', "&MAKEmpattern", - 'mpdinbrief', "die 'skipping, nosell license'", - 'multido', "&MAKEpst", - 'mwrite', "die 'skipping, nonfree license", - 'mx' , "die 'skipping, author does not recommend system install'", - 'mxd', "&MAKEflatten", - 'mxedruli', "&MAKEflatten", - 'nbaskerv', "die 'skipping, requires nonfree font'", - 'ncctools', "&MAKEflatten", - 'newsletr', "&MAKEnewsletr", - 'newthm', "die 'skipping, obsolete, no longer on ctan'", - 'niceframe', "die 'skipping, nosell license'", - 'nohyph', "die 'skipping, nohyph must be done by hand'", - 'norasi-c90', "&MAKEnorasi_c90", - 'notes', "&MAKEnotes", - 'numline', "die 'skipping, obsolete'", - 'oca', "die 'skipping, nosell license'", - 'occam', "die 'skipping, too old and strange'", - 'ocherokee', "&MAKEflatten", - 'ocr-a', "die 'skipping, nosell license'", - 'oesch', "die 'skipping, nosell license'", - 'ofs', "&MAKEflatten", - 'omegajapanese',"&MAKEflatten", - 'osa', "die 'skipping, relies on endfloat.cfg and non-unique filenames'", - 'ot2cyr', "die 'skipping, nonfree font support", - 'otibet', "&MAKEflatten", - 'oxford', "die 'skipping, nosell license'", - 'pageno', "die 'skipping, nosell license'", - 'pandora', "&MAKEflatten", - 'pb-diagram', "&MAKEpbdiagram", - 'pclnfss', "&MAKEpclnfss", - 'pdcmac', "die 'skipping, needs work'", - 'pdf-forms-tutorial', "die 'use pdf-forms-tutorial-de or -en'", - 'pdf-forms-tutorial-de', "&MAKEpdf_forms_tutorial", - 'pdf-forms-tutorial-en', "&MAKEpdf_forms_tutorial", - 'pdfrack', "die 'skipping until someone asks for it'", - 'pdfx', "&MAKEflatten", - 'pgf', "&MAKEcopy", - 'pgfplots', "&MAKEcopy", - 'phaistos', "&MAKEflatten", - 'phonetic', "&MAKEphonetic", - 'pict2e', "&MAKEpict2e", - 'pictex', "&MAKEpictex", - 'pigpen', "&MAKEflatten", - 'pinlabel', "&MAKEnosymlinks", - 'pl-qx', "&MAKEplqx", - 'poster', "die 'skipping, nonfree license'", - 'powerdot', '&MAKEflatten', - 'prerex', "die 'skipping, needs compilation'", - 'progkeys', "die 'skipping, noinfo license, author unfindable'", - 'proofs', "die 'skipping, nosell license'", - 'prosper', '&MAKEflatten', - 'ps4pdf', "die 'skipping, obsolete'", - 'psfig', "die 'skipping, nosell license'", - 'psfragx', "&MAKEflatten", - 'pslatex', "&MAKEpslatex", - 'psnfss', "&MAKEpsnfss", - 'psnfss-addons', "die 'skipping, ?'", - 'psnfssx', "&MAKEflatten", - 'pst-2dplot', "&MAKEpst", - 'pst-3d', "&MAKEpst", - 'pst-3dplot', "&MAKEpst", - 'pst-asr', "&MAKEpst", - 'pst-bar', "&MAKEpst", - 'pst-barcode', "&MAKEpst", - 'pst-blur', "&MAKEpst", - 'pst-bspline', "&MAKEpst", - 'pst-circ', "&MAKEpst", - 'pst-coil', "&MAKEpst", - 'pst-cox', "&MAKEflatten", - 'pst-dbicons', "&MAKEpst", - 'pst-diffraction', "&MAKEpst", - 'pst-eps', "&MAKEpst", - 'pst-eucl', "&MAKEpst", - 'pst-fill', "&MAKEpst", - 'pst-fr3d', "&MAKEpst", - 'pst-fractal', "&MAKEpst", - 'pst-fun', "&MAKEpst", - 'pst-func', "&MAKEpst", - 'pst-geo', "&MAKEpstgeo", - 'pst-ghsb', "&MAKEpst", - 'pst-gr3d', "&MAKEpst", - 'pst-grad', "&MAKEpst", - 'pst-infixplot',"&MAKEpst", - 'pst-jftree', "&MAKEpst", - 'pst-jtree', "&MAKEpst", - 'pst-labo', "&MAKEpst", - 'pst-lens', "&MAKEpst", - 'pst-light3d', "&MAKEpst", - 'pst-math', "&MAKEpst", - 'pst-optexp', "&MAKEpst", - 'pst-ob3d', "&MAKEpst", - 'pst-optic', "&MAKEpst", - 'pst-osci', "&MAKEpst", - 'pst-pad', "&MAKEpst", - 'pst-pdgr', "&MAKEpst", - 'pst-poly', "&MAKEpst", - 'pst-qtree', "&MAKEpst", - 'pst-slpe', "&MAKEpst", - 'pst-solides3d',"&MAKEpst", - 'pst-soroban', "&MAKEpst", - 'pst-spectra', "&MAKEpst", - 'pst-stru', "&MAKEpst", - 'pst-text', "&MAKEpst", - 'pst-uml', "&MAKEpst", - 'pst-vue3d', "&MAKEpst", - 'pstricks', "&MAKEpstricks", - 'pstricks-add',"&MAKEpst", - 'pxfonts', "&MAKEflatten", - 'realcalc', "die 'skipping, nosell license'", - 'references', "die 'skipping, requires binary'", - 'refstyle', "&MAKEcopy", - 'revnum', "die 'skipping, obsolete'", - 'revtex', "&MAKEflatten", - 'rsfs', "&MAKEflatten", - 'sae', "die 'skipping, nosell license'", - 'seminar', "&MAKEseminar", - 'shipunov', "&MAKEcopy", - 'shortlst', "die 'skipping, nosell license'", - 'showexpl', "&MAKEflatten", - 'siam', "&MAKEsiam", - 'skak', "&MAKEflatten", - 'slidenotes', "die 'skipping, nonfree'", - 'songs', "die 'skipping, requires binary'", - 'staves', "&MAKEflatten", - 'stellenbosch',"&MAKEcopy", - 'stex', "&MAKEflatten", - 'symbolindex', "die 'skipping, requires binary'", - 't2', "&MAKEt2", - 'tamethebeast',"&MAKEtamethebeast", - 'tamil-omega', "die 'skipping, supports nonfree ISM fonts'", #"&MAKEflatten", - 'taylor', "die 'skipping, nonfree license'", - 'template', "die 'already part of xpackages'", - 'tengwarscript',"&MAKEflatten", - 'tex-gyre', "&MAKEcopy", - 'tex-refs', "die 'skipping, needs work'", - 'texdraw', "&MAKEtexdraw", - 'texpower', "&MAKEnosymlinks", - 'texsis', "&MAKEtexsis", - 'thaifonts-scalable', "die 'Thai, fontforge format only, skip'", - 'thailatex', "die 'Thai, requires preprocessor (?), skip'", - 'thsmc', "die 'skipping, requires nonfree font'", - 'ticket', "&MAKEflatten", - 'tipa', "&MAKEtipa", - 'titlepage-uni-dortmund', "die 'needs graphics (too short names) in .'", - 'tksbrief', "die 'skipping, LaTeX 2.09'", - 'tpcmfont', "die 'skipping, ?'", - 'translator', "&MAKEflatten", - 'turnstile', "&MAKEflatten", - 'tpx', "die 'skipping, nosource, Windows'", - 'txfonts', "&MAKEflatten", - 'ucs', "&MAKEucs", - 'uebungsblatt',"&MAKEflatten", - 'ukrhyph', "&MAKEukrhyph", - 'umrand', "die 'skipping, nonfree'", - 'unitsdef', "&MAKEflatten", - 'velthuis', "&MAKEcopy", - 'venturisadf', "&MAKEcopy", - 'vhistory', "&MAKEflatten", - 'vicentino', "die 'skipping, nonfree license'", - 'voss-de', "&MAKEvossde", - 'vrsion', "die 'skipping, nonfree license'", - 'wadalab', "&MAKEwadalab", - 'wasy2', "&MAKEflatten", - 'wntamil', "die 'skipping, nonfree license'", - 'wordcount', "&MAKEwordcount", - 'xbase', "die 'renamed to xpackages'", - 'xecjk', "&MAKEcopy", - 'xecyr', "&MAKEcopy", - 'xepersian', "&MAKEflatten", - 'xetex-pstricks',"&MAKEcopy", - 'xfrac', "die 'skipping, still experimental'", #&MAKEflatten", - 'xinitials', "die 'will be in xpackages when ready (Morten says)'", - 'xkeyval', "&MAKExkeyval", - 'xmltex', "&MAKExmltex", - 'xor', "die 'will be in xpackages when ready (Morten says)'", - 'xparse', "die 'already in xpackages'", - 'xtheorem', "die 'will be in xpackages when ready (Morten says)'", - 'xymtex', "&MAKExymtex", - 'xypic', "&MAKExypic", - 'yi4latex', "die 'skipping, nosell license'", - 'yplan', "&MAKEnosymlinks", - 'zefonts', "&MAKEflatten", - 'zwgetfdate', "&MAKEcopy", -); - - -%prehook = ( - 'cm-super' => '&PREHOOK_cm_super', - 'ibygrk' => '&PREHOOK_ibygrk', - 'wsuipa' => '&PREHOOK_wsuipa', -); - -%specialpostaction = ( - 'bibleref' => '&POSTlatex2html', - 'context-lilypond' => '&POSTcontext_lilypond', - 'datetime' => '&POSTlatex2html', - 'doipubmed' => '&POSTlatex2html', - 'elsarticle' => '&POSTelsarticle', - 'fpl' => '&POSTfpl', - 'glossaries' => '&POSTglossaries', - 'ibygrk' => '&POSTibygrk', - 'impatient' => '&POSTimpatient', - 'interactiveworkbook' => '&POSTinteractiveworkbook', - 'knuth' => '&POSTknuth', - 'koma-script' => '&POSTkoma', - 'latex2man' => '&POSTlatex2man', - 'libertine' => '&POSTlibertine', - 'lithuanian' => '&POSTlithuanian', - 'pgf' => '&POSTpgf', - 'pst-cox' => '&POSTpstcox', - 'xecjk' => '&POSTxecjk', - 'xecyr' => '&POSTxecyr', - 'xetex-pstricks' => '&POSTxetex_pstricks', - 'xstring' => '&POSTxstring', -); - - -$standardsource='\.fdd|\.dtx|\.ins|\.c$|Makefile|configure.*|install-sh|\.drv'; -%specialsource= ( - 'FAQ-en', 'NULL', - 'ae', '\.mtx|\.etx|\.tex|clean|go|install|makepl', - 'amsldoc-vn', 'NULL', - 'apl', ".*", # just get everything, seems simplest - 'arabxetex', 'NULL', # keep dtx with others, why not - 'bbold', "$standardsource|fonttabl.sty", - 'blacklettert1', '\.dtx|\.ins|\.pl|Makefile', - 'carlisle', '\.dtx|\.ins|ltxtable\.tex', - 'epsf', 'NULL', - 'epslatex-fr', 'NULL', - 'eskdx', 'NULL', # leave makefiles - 'feynmf', 'feynmf\.pl' . $standardsource, - 'mff', '\.mfj|\.bat|\.diz', - 'fpl', 'Add|\.sfd|\.pe|\.ps' . $standardsource, - 'hyphenex', ".*", - 'impatient', 'NULL', # doc package - 'intro-scientific', 'NULL', # doc package - 'latex2e-help-texinfo','NULL', # doc package - 'latex2man', 'NULL', # leave Makefile - 'mpman-ru', 'NULL', # doc package - 'ot2cyr', '\.afm|\.etx|' . $standardsource, - 'pdfx', 'rvdtx\.sty|' . $standardsource, - 'patch', '\.doc', - 'pgfplots', 'NULL', # keep manual.install.tex in doc/ - 'rcs', 'rcs.el|src|' . $standardsource, - 'xlop', 'manual.sty|' . $standardsource, -); - -%specialfoundry = ( - 'fc', 'jknappen', - 'mfpic', 'metafont', -); -$standardfoundry='public'; - - -%specialdest = ( - 'MemoirChapStyles', 'texmf-doc', - 'Type1fonts', 'texmf-doc', - 'a2ping', 'texmf', - 'amsldoc-it', 'texmf-doc', - 'amsldoc-vn', 'texmf-doc', - 'amsthdoc-it', 'texmf-doc', - 'beamer-tut-pt', 'texmf-doc', - 'bin-cjkutils', 'texmf', - 'catalogue', 'texmf-doc', - 'comprehensive', 'texmf-doc', - 'cursolatex', 'texmf-doc', - 'dtxtut', 'texmf-doc', - 'elhyphen', 'texmf', - 'epslatex-fr', 'texmf-doc', - 'es-tex-faq', 'texmf-doc', - 'free-math-font-survey', 'texmf-doc', - 'hyphenex', 'texmf-dist', - 'knuth', 'texmf-doc', - 'l2picfaq', 'texmf-doc', - 'l2tabu-english', 'texmf-doc', - 'lshort-bulgarian', 'texmf-doc', - 'lshort-english', 'texmf-doc', - 'lshort-finnish', 'texmf-doc', - 'lshort-portuguese', 'texmf-doc', - 'lshort-turkish', 'texmf-doc', - 'lshort-vietnamese', 'texmf-doc', - 'lshort-korean', 'texmf-doc', - 'makingtexwork', 'texmf-doc', - 'mathmode', 'texmf-doc', - 'mnhyphn', 'texmf', - 'ntheorem-vn', 'texmf-doc', - 'tamethebeast', 'texmf-doc', - 'tds', 'texmf-doc', - 'tex-refs', 'texmf-doc', - 'visualfaq', 'texmf-doc', - 'voss-de', 'texmf-doc', - 'xypic-tut-pt', 'texmf-doc', - 'wp-conv', 'texmf-doc', - 'xetexref', 'texmf-doc', -); -$standarddest = "texmf-dist"; - -# -%specialsourcefmt = ( - 'antomega', 'omega', - 'apl', 'fonts', - 'arabxetex', 'xelatex', - 'archaic', 'fonts', - 'arev', 'fonts', - 'arrayjob', 'generic', - 'bidi', 'xelatex', - 'blacklettert1','fonts', - 'blockdraw_mp','metapost', - 'cb', 'fonts', - 'cirth', 'fonts', - 'cirth', 'generic', - 'cjhebrew', 'fonts', - 'cmpica', 'fonts', - 'cryst', 'fonts', - 'dozenal', 'fonts', - 'eplain', 'eplain', - 'epsf', 'generic', - 'eurosym', 'fonts', - 'expressg', 'metapost', - 'fc', 'fonts', - 'feyn', 'fonts', - 'fge', 'fonts', - 'fltpoint', 'generic', - 'fourier', 'fonts', - 'fouriernc', 'fonts', - 'fpl', 'fonts', - 'frcursive', 'fonts', - 'genmisc', 'generic', - 'germbib', 'bibtex', - 'gost', 'bibtex', - 'greenpoint', 'fonts', - 'hfoldsty', 'fonts', - 'hyphenex', 'generic', - 'jadetex', 'jadetex', - 'kixfont', 'fonts', - 'latexmp', 'metapost', - 'leawood', 'fonts', - 'lfb', 'fonts', - 'latexmp', 'metapost', - 'mathdots', 'generic', - 'mkjobtexmf', 'generic', - 'mnhyphn', 'generic', - 'mfpic', 'generic', - 'multido', 'generic', - 'ofs', 'generic', - 'ot2cyr', 'fonts', - 'patch', 'generic', - 'pdcmac', 'plain', - 'philokalia', 'xelatex', - 'pictex', 'generic', - 'pstricks', 'generic', - 'ruhyphen', 'generic', - 'skaknew', 'metapost', - 'splines', 'metapost', - 't2', 'generic', - 'trajan', 'fonts', - 'universa', 'fonts', - 'variations', 'generic', - 'velthuis', 'fonts', - 'wasy2', 'fonts', - 'xltxtra', 'xelatex', -); -$standardsourcefmt='latex'; - - -%specialfmt = ( - 'abbr', 'generic', - 'abstyles', 'generic', - 'antomega', 'omega', - 'arabxetex', 'xelatex', - 'arrayjob', 'generic', - 'barr', 'generic', - 'bghyphen', 'generic', - 'bidi', 'xelatex', - 'cirth', 'generic', - 'dehyph-exptl','generic', - 'dratex', 'generic', - 'edmac', 'generic', - 'eijkhout', 'generic', - 'eplain', 'eplain', - 'epsf', 'generic', - 'esint-type1', 'plain', - 'fenixpar', 'generic', - 'fltpoint', 'generic', - 'fontch', 'plain', - 'genmisc', 'generic', - 'hyplain', 'plain', - 'ibygrk', 'generic', - 'ifxetex', 'generic', - 'jadetex', 'jadetex', - 'mathabx', 'generic', - 'mathdots', 'generic', - 'metatex', 'plain', - 'mfpic', 'generic', - 'midnight', 'generic', - 'mkpattern', 'plain', - 'ocherokee', 'lambda', - 'ofs', 'generic', - 'passivetex', 'xmltex', - 'pdcmac', 'plain', - 'pdf-trans', 'generic', - 'philokalia', 'xelatex', - 'pictex', 'generic', - 'plnfss', 'plain', - 'pstricks', 'generic', - 'pst-cox', 'generic', - 'rsfs', 'plain', - 'ruhyphen', 'generic', - 'shapepar', 'generic', - 'texsis', 'texsis', - 'tugboat-plain','plain', - 'variations', 'generic', - 'vaucanson-g', 'generic', - 'vertex', 'plain', - 'wasy2', 'plain', - 'xetex-def', 'xelatex', - 'xetexfontinfo','xetex', - 'xltxtra', 'xelatex', - 'xmlplay', 'xmltex', - 'xstring', 'generic', - 'xunicode', 'xelatex', -); -$standardfmt='latex'; - - -# packages which need special .tex/.sty files installed -$standardtex='\.(cfg|sty|clo|ldf|cls|def|fd|cmap|4ht)$'; -%specialtex= ( - 'FAQ-en', 'NULL', - 'abbr', '\.tex', - 'abstyles', 'apreambl.tex', # not a4c.sty - 'ae', '\.fd$|\.sty', - 'apa', '\.apa|\.cls', # not endfloat.cfg - 'apacite', '\.apc|' . $standardtex, - 'arabtex', '\.tex|' . $standardtex, - 'babelbib', '\.bdf|\.sty', - 'bangtex', 'bangfont\.tex|' . $standardtex, - 'bardiag', '\.bar|\.sty|\.cfg', - 'barr', 'diagxy.tex', - 'base', 'idx.tex|lablst.tex|latexbug.tex|lablst.tex|docstrip.tex|nfssfont.tex|sample2e.tex|small2e.tex|testpage.tex|ltxcheck.tex|\.cfg|\.fd$|\.cls|\.clo|\.ltx|\.sty|\.def|^\.', - 'bbold', 'bbold.sty|\.fd', # no fonttabl.sty - 'bclogo', '[^c]\.tex|\.eps|' . $standardtex, # not bclogo-doc.tex - 'bghyphen', '\.tex', - 'blockdraw_mp','NULL', # skip .sty's - 'breqn', '\.sty|\.sym', - 'calxxxx', 'cal.*\.tex', - 'captcont', '\.sty|[^c]\.cfg', # omit ltxdoc.cfg, would be system-wide - 'carlisle', '\.sty|\.ltx', - 'chemstyle', '\.jdf|' . $standardtex, - 'cirth', 'num\.tex', - 'cjw', '\.tex|' . $standardtex, - 'clock', '\.sty|clock\.tex', - 'cmap', '\.cmap|' . $standardtex, - 'codepage', '\.sty|\.tex', - 'contour', '\.cfg|\.sty|\.cnt', - 'ctib', '\.sty|\.clo|\.ldf|\.cls|\.def|\.fd$|ctib\.tex', - 'custbib', '\.mbs|\.tex', - 'custom-bib', '\.mbs|\.tex', - 'cyrillic', '\.tex|\.sty|\.fd$|\.def', - 'dehyph-exptl','de.*\.tex|\.pat', - 'dialogl', '\.sty|listouti\.tex', - 'din1505', 'NULL', # no tex files, only natbib.cfg, would be system-wide - 'disser', '\.rtx|' . $standardtex, - 'dlfltxb', '\.sty', # no sample.cfg - 'ean', 'ean[0-9]*\.tex', - 'easy', 'easy.*\.sty', # no mydoc.sty - 'ecv', '\.sty|\.cls|\.ldf', # no docstrip.cfg, else system-wide - 'edmac', 'edmac.tex|edstanza.tex|\.sty', - 'eijkhout', '\.tex', - 'epsf', 'epsf.(tex|sty)', - 'epslatex-fr', 'NULL', - 'esint-type1', 'esint.tex', - 'europecv', 'EuropeFlag|europasslogo|\.cls|\.def', - 'fancytooltips','fancytipmark\..*|' . $standardtex, - 'fltpoint', '\.sty|\.tex', - 'fontch', '\.tex', - 'footnpag', 'footnpag\.sty', - 'fragments', '\.tex|' . $standardtex, - 'frankenstein','\.(sto|stq)|' . $standardtex, - 'genmisc', '\.sty|\.tex', - 'geometry', '\.sty|\.clo|\.ldf|\.cls|\.def|\.fd$', # not cfg - 'ginpenc', '\.gie|\.sty', - 'harvmac', 'mac\.tex', - 'hfoldsty', '\.sty|\.fd|\.cpa', - 'hyper', '\.sty|\.hyp', - 'hyplain', '(hyrules|hy.*plain|hylang)\..*', - 'ibygrk', 'iby4extr.tex|ibycus4.tex|ibycusps.tex|pssetiby.tex|setiby4.tex|tlgsqq.tex|version4.tex|' . $standardtex, - 'insbox', 'insbox.tex', - 'interactiveworkbook', 'NULL', # done in POSTinteractiveworkbook - 'iso10303', 'a.*tex|b.*tex|e.*tex|stp.*tex|\.sty|\.4ht', - 'isodate', '\.idf|\.sty', - 'isodoc', 'iso.*\.sty', # not mystyle.sty, etc. - 'jadetex', '\.ltx|\.def|\.tex|\.ini|\.sty|\.fd', - 'karnaugh', 'kvmacros.tex', - 'kastrup', 'binhex.tex|' . $standardtex, - 'keystroke', 'keystroke_.*|\.sty', - 'kuvio', '\.tex|\.sty', - 'latex-course','NULL', # keep doc together - 'lettre', '\.ins|\.cls', - 'manjutex', '\.sty|\.clo|\.ldf|\.cls|\.def|\.fd$|manju.tex', - 'mathdots', 'mathdots\.tex|' . $standardtex, - 'metatex', 'metatex.tex', - 'mff', '\.sty|mf[^f].*\.tex', - 'mfpic', 'mfpic.tex|mfpic.sty|mfppatch.tex', - 'midnight', '\.tex', - 'mathabx', 'mathabx\.(dcl|tex)|' . $standardtex, - 'mathdots', '\.mld|' . $standardtex, - 'misc', '\.sty|\.ltx|\.cls', - 'mkpattern', 'mkpatter.tex', - 'mpman-ru', 'NULL', # doc package - 'msg', "-msg\.tex" . $standardtex, - 'nag', '\.nag|' . $standardtex, - 'nddiss', '\.sty|\.clo|\.ldf|\.cls|\.def|\.fd$', - 'notes', '[^s]\.(eps|pdf|png)|' . $standardtex, # not notes.pdf - 'ntheorem', '\.sty|\.std', - 'ofs', '^ofs\.tex|ofsdef\.tex|ofs-.*\.tex|\.sty|a.*\.tex|.*fn\.tex', - 'patch', '\.tex', - 'pdf-trans', 'pdf-trans.tex', - 'pdfcprot', '\.cpa|\.sty', - 'pdfscreen', 'overlay.*pdf|but.*pdf|left.*pdf|right\.pdf|pdfscreen.sty', - 'pdfslide', '\.jpg|\.sty|\.clo|\.cfg|meta.*\.pdf', - 'pdfx', '\.xmp$|glyph.*tex|pdfx\.sty', - 'petri-nets', 'pnets\.tex|pntext\.tex|\.sty|pndraw\.tex|pnversion\.tex|\.sty|pndraw\.tex', - 'pictex', '\.sty|\.tex', - 'pigpen', 'pigpen\.tex|' . $standardtex, - 'plgraph', '\.tex', - 'plnfss', '\.tex|\.pfd', - 'powerdot', '\.ps|' . $standardtex, - 'ppchtex', 'm.*tex|m.*sty', - 'prosper', '\.ps|\.eps|\.sty|\.cls', - 'pstricks', 'pst-*\.tex', - 'pst-bspline', 'pst-bspline\.(tex|sty)', - 'pst-cox', 'pst-cox(coor|eterp)\.tex', - 'pst-geo', 'pst-map.*\.tex|pst-map.*\.sty', - 'pst-infixplot', 'infix-RPN\.tex|pst-infixplot\.tex', - 'pst-text', 'pst-(char|text)\.(tex|sty)', - 'qobitree', 'qobitree.tex', - 'r_und_s', '\.tex|\.sty', - 'realcalc', 'realcalc.tex', - 'resumemac', 'resumemac.tex', - 'revtex', '\.sty|\.cls|\.rtx', - 'rlepsf', 'rlepsf.tex', - 'rsfs', 'scrload\.tex|' . $standardtex, - 'seminar', '\.bug|\.bg2|\.cls|\.sty|2up.tex', - 'shapepar', '\.sty', # not def - 'showexpl', '\.sty|\.clo|\.ldf|\.cls|\.def|\.fd$', # not cfg - 'splitindex', 'splitindex\.tex|' . $standardtex, - 'spotcolor', 'spotcolor.*\.tex|' . $standardtex, - 'startex', '\.tex', - 'subfig', '\.sty|[^c]\.cfg', # omit ltxdoc.cfg, would be system-wide - 'subfigure', '\.sty|[^c]\.cfg', # omit ltxdoc.cfg, would be system-wide - 'syntax', 'syntax\.tex', - 'taylor', 'diagrams.tex', - 'tex-ewd', 'dotnot.tex', - 'texsis', '\.txs|TXS.*tex|texsis.tex', - 'ticket', '\.tdf|' . $standardtex, - 'tools', '\.cfg|\.sty|\.clo|\.cls|\.def|\.fd$|.?\.tex|^\.tex$', - 'translator', '\.dict|translator-language-mappings.tex|' . $standardtex, - 'tugboat-plain','\.cmn|' . $standardtex, - 'universa', '\.fd|uni\.sty', # not unidoc.sty - 'variations', '^variations\.tex|' . $standardtex, # not docvariations.tex - 'varisize', '\.tex', - 'vaucanson-g', '\.(def|tex)|' . $standardtex, - 'vertex', 'vertex\.tex|' . $standardtex, - 'vhistory', '\.sty', # not hyperref.cfg - 'wasy2', 'wasyfont\.tex', - 'wordcount', '\.tex', - 'xepersian', 'xepersian-mathsdigitspec\.tex|' . $standardtex, - 'xetexfontinfo','\.tex', - 'xlop', 'xlop\.(tex|sty)', # no manual.sty - 'xstring', 'xstring\.tex|' . $standardtex, - 'zefonts', '\.sty|\.fd', -); - - -%specialdocfmt = ( - 'abbr', 'generic', - 'abstyles', 'bibtex', - 'accfonts', 'fonts', - 'amsldoc-it', 'italian', - 'amsldoc-vn', 'vietnamese', - 'amsthdoc-it', 'italian', - 'antomega', 'omega', - 'arabxetex', 'xelatex', - 'archaic', 'fonts', - 'arev', 'fonts', - 'arrayjob', 'generic', - 'astro', 'fonts', - 'aurical', 'fonts', - 'automata', 'metapost', - 'ascii', 'fonts', - 'barr', 'generic', - 'bbm', 'fonts', - 'beamer-tut-pt','portuguese', - 'bera', 'fonts', - 'bghyphen', 'generic', - 'bibhtml', 'bibtex', - 'bidi', 'xelatex', - 'blacklettert1','fonts', - 'cbfonts', 'fonts', - 'cirth', 'fonts', - 'cjhebrew', 'fonts', - 'cm-super', 'fonts', - 'cmarrows', 'metapost', - 'cursolatex', 'portuguese', - 'dehyph-exptl','generic', - 'devanagr', 'fonts', - 'dictsym', 'fonts', - 'dingbat', 'fonts', - 'dinat', 'bibtex', - 'doublestroke','fonts', - 'dozenal', 'fonts', - 'dratex', 'generic', - 'economic', 'bibtex', - 'edmac', 'generic', - 'elhyphen', 'generic', - 'elsevier-bib','bibtex', - 'elvish', 'fonts', - 'encxvlna', 'generic', - 'eplain', 'eplain', - 'epsf', 'generic', - 'epslatex-fr', 'french', - 'es-tex-faq', 'spanish', - 'eurosym', 'fonts', - 'expressg', 'metapost', - 'exteps', 'metapost', - 'fc', 'fonts', - 'featpost', 'metapost', - 'fenixpar', 'generic', - 'feyn', 'fonts', - 'fge', 'fonts', - 'fltpoint', 'generic', - 'fontch', 'plain', - 'fourier', 'fonts', - 'fouriernc', 'fonts', - 'fpl', 'fonts', - 'frcursive', 'fonts', - 'genmisc', 'generic', - 'germbib', 'bibtex', - 'gost', 'bibtex', - 'greepoint', 'fonts', - 'hfoldsty', 'fonts', - 'hieroglf', 'fonts', - 'hyplain', 'plain', - 'ibygrk', 'fonts', - 'ifxetex', 'generic', - 'ijqc', 'bibtex', - 'impatient-fr','french', - 'iopart-num', 'bibtex', - 'jadetex', 'jadetex', - 'kixfont', 'fonts', - 'l2picfaq', 'german', - 'l2tabu-it', 'italian', - 'l2tabu-spanish', 'spanish', - 'latex2man', 'support', - 'latexmk', 'support', - 'latexmp', 'metapost', - 'leawood', 'fonts', - 'lfb', 'fonts', - 'lnotes', 'chinese', - 'lshort-portuguese', 'portuguese', - 'lshort-spanish', 'spanish', - 'marvosym', 'fonts', - 'mathabx', 'fonts', - 'mathdots', 'generic', - 'metatex', 'plain', - 'metauml', 'metapost', - 'mfpic', 'generic', - 'midnight', 'generic', - 'mkpattern', 'plain', - 'mkjobtexmf', 'generic', - 'mpattern', 'metapost', - 'mpman-ru', 'russian', - 'ntheorem-vn', 'vietnamese', - 'ofs', 'generic', - 'ot2cyr', 'fonts', - 'pacioli', 'fonts', - 'pdcmac', 'plain', - 'pdf-trans', 'generic', - 'pdfcrop', 'support', - 'phaistos', 'fonts', - 'philokalia', 'xelatex', - 'phonetic', 'fonts', - 'pictex', 'generic', - 'plnfss', 'plain', - 'psfrag-italian', 'italian', - 'pst-cox', 'generic', - 'pxfonts', 'fonts', - 'rsfs', 'fonts', - 'shapepar', 'generic', - 'skak', 'latex', - 'splines', 'metapost', - 'staves', 'fonts', - 'tamil-omega', 'omega', - 'templates-fenn', 'german', - 'templates-sommer', 'german', - 'texcount', 'support', - 'texsis', 'texsis', - 'textpath', 'metapost', - 'trajan', 'fonts', - 'tugboat-plain','plain', - 'txfonts', 'fonts', - 'universa', 'fonts', - 'vancouver', 'bibtex', - 'variations', 'generic', - 'vaucanson-g', 'generic', - 'velthuis', 'generic', - 'vertex', 'plain', - 'voss-de', 'german', - 'wasy2', 'fonts', - 'wsuipa', 'generic', - 'xetexfontinfo','xetex', - 'xltxtra', 'xelatex', - 'xq', 'fonts', - 'xstring', 'generic', - 'xunicode', 'xelatex', - 'xypic-tut-pt','portuguese', -); -$standarddocfmt='latex'; - - -# special cases of which .ins files to run; used to remove -# normal choices, and get the most general. -%specialins = ( - 'aastex', 'NULL', # everything is pregenerated - 'base', 'NULL', - 'bbold', 'bbold.dtx', - 'blacklettert1','NULL', # don't try to do fontinst - 'bosisio', '.*\.dtx', - 'carlisle', '\.ins|ltxtable.tex', - 'ccfonts', 'ccfonts.ins', - 'dotseqn', 'dotseqn.dtx', - 'feynmf', 'feynmf.ins', - 'floatrow', 'floatrow.ins', - 'geometry', 'geometry.dtx', - 'lettre', 'NULL', - 'localloc', 'localloc.dtx', - 'makecell', 'makecell.dtx', - 'namespc', 'namespc.dtx', - 'paper', 'install', - 'parrun', 'parrun.ins', - 'stmaryrd', 'stmaryrd.dtx', - 'tablists', 'tablists.dtx', - 'thesis', 'install.01|install.ndx', - 'turnstile', 'turnstile-en.ins', # skip pt -); -$standardins='\.ins'; - -%specialinsrunner = ( - 'bullcntr', 'latex', # requires interaction - 'ctable', 'latex', # requires interaction - 'geometry', 'tex', - 'polski', 'latex', # requires interaction - 'psfragx', 'latex', # requires interaction -); -$standardinsrunner="latex -interaction=nonstopmode"; - -%specialmakeindex= ( - 'mpman-ru' => 'NULL', # doc -); -$standardmakeindex='\.ist'; - - -# needs special TeX program to run the doc. -%specialTEX = ( - 'arabtex', 'tex', - 'barr', 'latex', - 'beamer', 'pdflatex', - 'bytefield', 'pdflatex', - 'esint-type1', 'pdftex', - 'euro-ce', 'tex', - 'floatrow', 'latex', - 'genealogy', 'tex', - 'insbox', 'tex', - 'iso10303', 'pdflatex', - 'mfpic', 'tex', - 'mpattern', 'true', # requires running mpp, but it's not executable and - # anyway it's just a test file. ignore it. - 'ofs', 'csplain', - 'pdfscreen', 'pdflatex', - 'pdfslide', 'pdflatex', - 'pl-qx', 'platex', - 'subfig', 'pdflatex', - 'texsis', 'tex', - 'typespec', 'tex', - 'wasy2', 'tex', - 'webeq', 'pdflatex', -); - - -# packages which need special documentation files run -%oldspecialdvi= ( - 'barcode2', 'eandoc.tex', - 'bardiag', 'bar.*tex', - 'base', '.*info.tex|.*guide.*tex|.*news.*tex', - 'blacklettert1','\.dtx', - 'calendar', 'demo.*\.tex|calguide\.tex', - 'carlisle', '\.dtx|ltxtable.tex', - 'chess', '\.ltx', - 'circ', '\.dtx', - 'cirth', 'cirth\.tex', - 'codepage', 'codepage\.drv', - 'crop', 'crop.dtx', - 'ctib', 'ctib4tex.tex', - 'custbib', '\.dtx', - 'custom-bib', '\.dtx', - 'dialogl', 'dia-driv\.tex|codialog\.tex', - 'directory', '\.tex', - 'eepic', 'eepic.tex', - 'ethiop', 'ethiodoc\.tex', - 'euro', 'euro.dtx', - 'fancynum', 'examples.tex', - 'fp', 'example.tex', - 'frcursive', '.*\.dtx', - 'gatech-thesis', 'gatech-thesis.tex|jules-verne.tex', - 'german', 'germdoc\.tex', - 'insbox', 'demo.tex', - 'isostds', 'isosty.tex', - 'jurabib', 'jbtest.tex', - 'karnaugh', 'kvdoc\.tex', - 'manjutex', 'manjutex.tex', - 'mapcodes', 'mapcode\.drv', - 'mff', 'mffdoc.tex', - 'minutes', 'Sample.tex', - 'ofs', 'ofsdoc-e\.tex|ofsdoc\.tex|ofs-slt\.tex', - 'ogonek', 'togonek\.ltx|\.tex', - 'othello', 'othello\.tex', - 'paper', 'paper.drv', - 'parrun', 'parrun.dtx', - 'petri-nets', 'pndoc\.tex', - 'prosper', 'pros.*tex', - 'pst-3dplot', '.*-e\.tex|doc-.*.tex|pst-3dplot-doc', - 'pst-bar', '.*-e\.tex|doc-.*.tex|pst-bar-doc.tex', - 'pst-blur', '.*-e\.tex|doc-.*.tex|pst-blur-doc.tex', - 'pst-circ', '.*-e\.tex|doc-.*.tex|pst-circ-doc.tex', - 'pst-fr3d', 'doc-.*.tex|pst-fr3d-doc', - 'pst-func', '.*-e\.tex|doc-.*.tex|pst-func-doc', - 'pst-geo', '.*-e\.tex|doc-.*.tex|pst-geo-doc.tex', - 'pst-ghsb', '.*-e\.tex|doc-.*.tex|pst-ghsb-doc.tex', - 'pst-gr3d', '.*-e\.tex|doc-.*.tex|pst-gr3d-doc.tex', - 'pst-jftree', '.*-e\.tex|doc-.*.tex|pst-jftree-doc.tex', - 'pst-lens', '.*-e\.tex|doc-.*.tex|pst-lens-doc.tex', - 'pst-light3d', '.*-e\.tex|doc-.*.tex|pst-light3d-doc', - 'pst-math', '.*-e\.tex|doc-.*.tex|pst-math-doc.tex', - 'pst-optic', '.*-e\.tex|doc-.*.tex|pst-optic-doc.tex', - 'pst-osci', '.*-e\.tex|doc-.*.tex|pst-osci-doc.tex', - 'pst-poly', '.*-e\.tex|doc-.*.tex|pst-poly-doc.tex', - 'pst-slpe', '.*-e\.tex|doc-.*.tex|pst-slpe-doc.tex', - 'pst-uml', '.*-e\.tex|doc[-_].*.tex|pst-uml-doc.tex', - 'pst-vue3d', '.*-e\.tex|doc-.*.tex|pst-vue3d-doc.tex', - 'qobitree', 'example\.tex', - 'rcsinfo', 'rcsinfo2html.tex', - 'refman', 'layout.tex|\.dtx', - 'soul', 'soul.dtx', - 'syntax', 'syntax[a-z].*\.tex', - 'texsis', 'Manual.tex', - 'textmerg', 'tmexamp[[0-9]\.tex', - 'thesis', '\.drv', - 'timing', 'timing.tex', - 'tipa', 'tipaman\.tex|tipatug\.tex', - 'tools', '\.dtx', - 'umrand', 'umrand\.tex', - 'ulsy', '\.dtx', - 'velthuis', 'manual.tex', - 'wasy2', 'wasydoc\.tex', - 'xymtex', 'xymtx200.tex', - 'zefonts', 'zefonts.tex', -); - -#$standarddvi='\.tex|\.ltx'; -%specialdvi = (); -$standarddvi = 'NULL'; # rely on authors/CTAN making pdf's. - - -# packages which need special MetaPost files -$standardmp = '\.mp$'; -%specialmp = ( - 'automata', 'automata.mp', # skip example.mp - 'bpolynomial', 'bpolynomial.mp', # skip examples.mp - 'dviincl', 'fix.*mp', # skip test-bop.mp - 'epsincl', 'eps.*mp', # skip testincl.mp - 'feynmp', 'feynmp.mp', - 'latexmp', 'latexmp.mp', - 'mpattern', 'mpattern.mp', # don't install test.mp - 'mpman-ru', 'NULL', # doc package - 'polski', 'NULL', # no sample-*.mp - 'semioneside', 'NULL', # don't install figure*.mp - 'textpath', 'textpath.mp', # don't install textpathfigs.mp -); - -# packages which need special BibTeX styles installed -%specialcsf= (); -$standardcsf='\.csf'; - -$standardbst='\.bst'; -%specialbst= ( - 'umthesis', 'NULL', -); - -# packages which need special BibTeX data files (not) installed. -$standardbib='\.bib$'; # $ so we don't find README.bibtex in IEEEtran -%specialbib= ( - 'acmconf', 'NULL', - 'aguplus', 'NULL', - 'amsrefs', 'ams.*bib', # not jr.bib - 'apa', 'NULL', - 'arsclassica', 'NULL', - 'babelbib', 'NULL', - 'classicthesis','NULL', - 'dehyph-exptl','NULL', - 'dlfltxb', 'NULL', # don't install doc. - 'doipubmed', 'NULL', - 'economic', 'NULL', - 'eplain', 'NULL', - 'epslatex-fr', 'NULL', - 'gcite', 'NULL', # bib is for doc - 'germbib', 'NULL', # no second xampl.bib, test bibs, etc. - 'ijqc', 'NULL', - 'imtekda', 'NULL', - 'iopart-num', 'NULL', - 'jurarsp', 'NULL', - 'mslapa', 'NULL', - 'munich', 'NULL', - 'pgfplots', 'NULL', # no manual.bib - 'pgf-soroban', 'NULL', - 'pst-labo', 'NULL', - 'si', 'NULL', - 'ucthesis', 'NULL', - 'umthesis', 'NULL', - 'uwthesis', 'NULL', -); - -# packages which have Metafont sources to run. -$standardmf='[0-9]\.mf'; -%specialmf= ( - 'astro', 'astrosym.mf', - 'backgammon', 'bg\.mf', - 'cherokee', 'cherokee.mf', - 'circ', 'csybimos\.mf|csycirc\.mf|csydiod\.mf|csyrest\.mf|csywidko\.mf|csysym\.mf|optic\.mf', - 'cirth', 'cir.*\.mf', - 'clock', 'clock.mf', - 'cmcyr', 'NULL', # already made - 'cmpica', 'cmpic.*\.mf', - 'dancers', 'dancers\.mf', - 'dice', 'dice3d\.mf', - 'dingbat', '\.mf', - 'eiad', 'e.*10\.mf', - 'engwar', 'engwar\.mf', - 'euro-ce', 'eu.*\.mf|ce.*\.mf', - 'feynmf', 'feynmf\.mf', - 'greenpoint', 'greenpoint\.mf', - 'hands', 'hands\.mf', - 'ibygrk', 'NULL', - 'ifsym', '\.mf|\.gen', - 'logic', 'milstd\.mf', - 'mfpic', 'grafbase\.mf', - 'morse', 'morse10.mf|morse.def', - 'ogham', 'ogham\.mf', - 'skak', 'skak.*[0-9].*\.mf', - 'tengwar', 'tengwar\.mf', - 'umrand', 'umrand[ab]\.mf', - 'xq', 'xq(normal|large)\.mf', -); - -# additional mf files to be installed but not run. -%specialmfinstall = ( - 'astro' => 'astrosym.(cal|cmn|mac|uni|xtr)', - 'cmcyr' => '\.mf', - 'ibygrk' => 'ibycus4\.map', # tex|mf source -); - -# packages which have dvips header files -$standardpro='\.pro$'; -%specialpro= ( - 'cm-super', 'config.cm-super|cm-super.GS', - 'dvipsconfig', '.*', # addpsctrl should be in bin, but ... - 'esint-type1', 'config.esint', - 'initials', 'config.*', - 'pspicture', 'pspicture.ps', - 'zefonts', 'slantcm.cfg', -); - -$standardmap='\.(map|tec)$'; -%specialmap = ( - 'kerntest' => 'NULL', # skip test map file - 'ibygrk' => 'iby\.map', # not ibycus4.map, which is tex|mf -); -$standardmapdest = "fonts/map/dvips"; -%specialmapdest = ( - 'arabxetex' => "fonts/misc/xetex/fontmapping", - 'xepersian' => "fonts/misc/xetex/fontmapping", -); - -$standardvmap='\.ali$'; -%specialvmap = (); - -$standardenc='\.enc'; -%specialenc = (); - -$standardafm='\.afm'; -%specialafm = (); - -$standardpfm='\.pfm'; -%specialpfm = (); - -$standardpfb = '\.pfb|\.inf$'; -%specialpfb = ( - 'dviincl' => 'NULL', # skip 0dviincl.inf, is a README - 'pigpen' => 'pigpen.pfa', -); - -$standardttf='\.ttf'; -%specialttf= (); - -$standardotf='\.otf'; -%specialotf= (); - -$standardovf='\.ovf'; -%specialovf= (); - -$standardofm='\.ofm'; -%specialofm= (); - -$standardovp='\.ovp'; -%specialovp= ( 'psfragx', 'NULL', ); - -$standardotp='\.otp'; -%specialotp= (); - -$standardocp='\.ocp'; -%specialocp= (); - -# packages which have xmltex files -%specialxmt= ( - # 'passivetex', '\.xmt|fotex.sty', -); -$standardxmt='\.xmt'; - -# packages which have executable scripts -%specialscripts = ( - 'a2ping' => '\.pl$', - 'dviasm' => '\.py$', - 'epstopdf' => 'epstopdf', - 'latex2man' => 'latex2man$', - 'latexmk' => '\.pl$', - 'mkjobtexmf' => '\.pl$', - 'pdfcrop' => '\.pl$', - 'perltex' => '\.pl$', - 'pst2pdf' => '\.pl$', - 'texcount' => '\.pl$', - 'vpe' => '\.pl$', -); - -# too painful to install in multiple trees just now. -## packages which have man pages to install. Assume section 1 for now. -#%specialmans = ( -# 'mkjobtexmf' => 'mkjobtexmf.man', -#); - - -# which suffixes to remove after building. Checked after runins and at -# the end, in the doc directory. -$standardclean = '\.head|\.tmp|\.dvi|\.log|\.out|\.aux|\.toc|\.lof|\.lot' - . '|\.bbl|\.blg|\.idx|\.ind|\.ilg|\.glo|\.gls|\.loa'; -%specialclean = ( - 'a2ping' => 'README', # not worth whole separate doc subdir - 'accfonts' => $standardclean . '|dvips.enc', # dup enc - 'achemso' => "$standardclean|jawltxdoc.sty", # temp file for doc - 'acmconf' => "$standardclean|flushend.sty", # dup with sttools - 'bbm-macros' => $standardclean . '|^bbm$', # symlink - 'chemscheme' => "$standardclean|jawltxdoc.sty", # temp file for doc - 'chemstyle' => "$standardclean|jawltxdoc.sty", # temp file for doc - 'elvish' => '\.pk3', # no pk files - 'gentle' => 'gentle.ps.gz', # pdf is enough - 'hyph-utf8' => 'README', - 'jadetex' => $standardclean # these sty files are in passivetex - . '|(dummyels|mlnames|ucharacters|unicode)\.sty', - 'latex2e-help-texinfo' => '\.info', # must move .info by hand, sigh - 'lshort-spanish'=>'lshort-a5book.pdf', # a4 is enough - 'mathexam' => 'sample.tex~', - 'notes2bib' => "$standardclean|jawltxdoc.sty", # temp file for doc - 'rsc' => $standardclean . '|jawltxdoc.sty', # temp file for doc - 'wsuipa' => $standardclean . '|.*pk$', # premade pk files -); - -# if a hash entry is matched here, README.TEXLIVE is created mentioning -# that the files were removed. These are checked after runins. -%moreclean = ( - 'AkkTeX' => 'still to do, sorry', - 'bbcard' => 'bbcard.tpm', - 'chessboard' => 'chessboard.pdf', - 'chessfss' => 'chessfonts_gallery.pdf|chessfss.pdf', - 'dateiliste' => 'dateiliste.README*', # already in dist - 'dcpic' => '.*\.pdf', # no source - 'din1505' => 'leitbild3.pdf|normpatsoft.pdf', # no source - 'ecclesiastic' => 'ecclesiastic-sample.pdf', # no source - 'ednotes' => 'perpage.sty', # copy from bigfoot - 'epslatex-fr' => 'R?Danger.eps', - 'flacards' => 'flacards.pdf', - 'gfsartemisia' => 'A*Specimen.pdf', # nonfree - 'gfsbaskerville'=>'B*Specimen.pdf', # nonfree - 'gfsbodoni' => 'B*Specimen.pdf', # nonfree - 'gfscomplutum' => 'C*Specimen.pdf', # nonfree - 'gfsdidot' => '[DO]*Specimen.pdf', # nonfree - 'gfsneohellenic'=>'N*Specimen.pdf', # nonfree - 'guitbeamer' => 'guitbeamer-de.pdf', - 'jknapltx' => 'ubbold.fd', # clashes bbold's Ubbold.fd; sauter bbold fails - 'linguex' => 'cgloss4e.sty', # symlink - 'piechartmp' => 'piechartmp.pdf', - 'pst-3dplot' => 'tb72voss3d.pdf', # no source - 'ptptex' => 'overcite.sty|cite.sty|wrapfig.sty', # duplicated - 'stubs' => 'stubs.pdf', - 'susy' => 'susy.pdf', # no source - 'xelibertine' => 'xelibertineDoku.pdf', # no source - 'xskak' => 'xskak.pdf', # no source -); - -# -# Read from config file to make local adjustments to above. -readconfig(); - -# command line options -$opt_debug = 1; # verbosity is good -exit 2 unless Getopt::Long::GetOptions ( - "ctan-dir=s", - "debug!", - "help", - "test|n!", - "version", -); - -for (@ARGV) { - $packagedir = $_; - if (! -d $packagedir) { - warn "$0: $packagedir not a directory, skipping.\n"; - next; - } - - &set_dir_defaults ($opt_ctan_dir); - - @x = split(/\//,$packagedir); - $package = pop (@x); - $DEST_TREE = $specialdest{$package} || $standarddest; - - $TOPDEST = "$TDS/$package"; - $DEST = "$TOPDEST/$DEST_TREE"; - - $insrunner = $specialinsrunner{$package} || $standardinsrunner; - - $whichformat = $specialfmt{$package} || $standardfmt; - $whichdocformat = $specialdocfmt{$package} - || ($DEST_TREE eq "texmf-doc" ? "english" : $standarddocfmt); - - print "pkg=$package (fmt=$whichformat docfmt=$whichdocformat) -> $DEST\n"; - if (exists $special{$package}) { - if ($special{$package} =~ s/^die //) { - # avoid repeating the die message. - die "$package failed: $special{$package}\n"; - } else { - print "special: $special{$package}...\n"; - eval $special{$package}; - die "$package failed in $special{$package}: $@" if $@; - } - } else { - &donormal; - } - - &xchdir ($startdir); -} - - - -# Override our default guess of "latex" if we can intuit from the CTAN -# path, which ctan2tl kindly passes us. -# -sub set_dir_defaults -{ - my ($ctan_dir) = @_; - my $guess = ""; - - if ($ctan_dir =~ m!/graphics/metapost/!) { - $standarddocfmt = $standardsourcefmt = "metapost"; - $guess = "$standarddocfmt for docfmt/srcfmt"; - - } elsif ($ctan_dir =~ m!/macros/xetex/latex/!) { - $standarddocfmt = $standardsourcefmt = $standardfmt = "xelatex"; - $guess = "$standarddocfmt for fmt/docfmt/srcfmt"; - - } elsif ($ctan_dir =~ m!/macros/plain/!) { - $standarddocfmt = $standardsourcefmt = $standardfmt = "plain"; - $guess = "$standarddocfmt for fmt/docfmt/srcfmt"; - - } elsif ($ctan_dir =~ m!/macros/generic/!) { - $standarddocfmt = $standardsourcefmt = $standardfmt = "generic"; - $guess = "$standarddocfmt for fmt/docfmt/srcfmt"; - - } elsif ($ctan_dir =~ m!/(info|help)/!) { - $standarddest = "texmf-doc"; - $guess = "$standarddest for dest"; - } - - print "\t guessed $guess (based on $ctan_dir)\n" if $guess; -} - - - -sub xchdir -{ - my ($dir) = @_; - chdir ($dir) || die "chdir($dir) failed: $!"; - chomp (my $pwd = `pwd`); - print "\t CHDIR $dir (now $pwd)\n"; -} - -sub xmkdir -{ - my (@dirs) = @_; - &SYSTEM ("mkdir -p @dirs"); -} - - - -# some packages need to intervene at the beginning. -sub run_prehook -{ - my $prehook = $prehook{$package}; - if ($prehook) { - print "\t PREHOOK: running $prehook\n"; - eval $prehook; - die "$package failed in $prehook: $@" if $@; - } -} - - - -# some packages (e.g., vntex) are tl-ready (or near enough). -# -sub MAKEcopy -{ - my $dest = $_[0] || $DEST; - my $pdir = $packagedir; - - chomp (my $abspackagedir = `cd $pdir && pwd`); - print "\t COPY from $abspackagedir to $dest\n"; - - &xchdir ($pdir); - &SYSTEM ("mkdir -p $dest"); - - # do the copy. - &SYSTEM ("$CP -r * $dest"); - - # for arev et al., remove symlinks. - &SYSTEM ("find $dest -type l | xargs --no-run-if-empty rm"); - - # ditto assorted other for lm (files are in doc subtree already). - -r "$dest/MANIFEST.txt" - && &SYSTEM ("cd $dest && $RM GUST*.txt MANIFEST.txt README.eng"); - - # move README for encxvlna and others - -r "$dest/README" - && &SYSTEM ("$MV $dest/README $dest/doc/$whichdocformat/$package/"); - - # move CHANGELOG for stellenbosch. - -r "$dest/CHANGELOG" - && &SYSTEM ("$MV $dest/CHANGELOG $dest/doc/$whichdocformat/$package/"); - - # move README.eulervm for eulervm. - -r "$dest/README.eulervm" - && &SYSTEM ("$MV $dest/README.eulervm $dest/doc/$whichdocformat/$package/"); - - # for tex-gyre, rename context subdir. (shouldn't be needed next time.) - if (-d "$dest/fonts/map/pdftex/context") { - print "$package: rename context map dir.\n"; - &SYSTEM ("$MV $dest/fonts/map/pdftex/context $dest/fonts/map/pdftex/tex-gyre"); - } - - # for eplain, move info file (with warning). - if (-r "$dest/doc/$package/doc/eplain.info") { - warn "WARNING: moving eplain.info to /tmp\n"; - warn " -- YOU must put it in texmf/doc/info!\n"; - &SYSTEM ("$MV $dest/doc/$package/doc/eplain.info /tmp"); - } - - # for velthuis, remove bin dir (with warning). - if ($package eq "velthuis" && -d "$dest/bin") { - warn "WARNING: removing bin/ dir in $dest\n"; - warn " -- YOU must deal with it!\n"; - &SYSTEM ("rm -rf $dest/bin"); - } - - # preserve the lm sources. - if ($package eq "lm") { - my $srcdir = " $dest/source/$whichdocformat/$package/"; - &SYSTEM ("mkdir -p $srcdir"); - &SYSTEM ("$MV $dest/lm*mt1.zip $srcdir/"); - } - - &xchdir ($DEST); - &killfiles ($specialclean{$package} || $standardclean); - &killfiles ($moreclean{$package}, "more") if $moreclean{$package}; - - my $postaction = $specialpostaction{$package}; - eval ($postaction) if $postaction; -} - - -# -# For most packages, this is the first thing called. It copies -# everything from $packagedir to the doc directory of the package. -# -sub setup -{ - my ($ctl) = @_; - - print "doing setup($ctl)...\n"; - # precreate the directories we might need - $DOCDIR = "$DEST/doc/$whichdocformat/$package"; - &SYSTEM ("mkdir -p $DOCDIR"); - &SYSTEM ("mkdir -p $DEST/tex/$whichformat/$package"); - &SYSTEM ("mkdir -p $DEST/source/$whichdocformat/$package"); - - # remove README symlinks. - &SYSTEM ("test -h $packagedir/README && $RM $packagedir/README"); - - return if $ctl eq "nocopytodoc"; - # copy everything to the doc directory - # and work in there. - &SYSTEM ("$CP -r $packagedir/* $DEST/doc/$whichdocformat/$package"); -} - -sub donormal -{ - my ($ctrl) = @_; - - print "doing donormal($ctrl)...\n"; - - # check for tds-ready packages - if ( -e "$startdir/$packagedir/TDS_READY" ) { - print "using TDS_READY tree\n"; - &SYSTEM ("$RM $startdir/$packagedir/TDS_READY"); - &SYSTEM ("mkdir -p $DEST"); - &xchdir ($DEST); - &SYSTEM ("$CP -r $startdir/$packagedir/* ."); - } else { - #use the normal procedure - - &setup unless $ctrl eq "nosetup"; - &xchdir ("$DEST/doc/$whichdocformat/$package"); - &run_prehook ($package); - - &buildfilelist; - - # run the .ins files (if any) supplied - $inspatt = $specialins{$package} || $standardins; - $Foundry = $specialfoundry{$package} || $standardfoundry; - &runins($inspatt); - - &killfiles ($moreclean{$package}, "more") if $moreclean{$package}; - - # rebuild the list of files in the directory - &buildfilelist; - - if ($Foundry eq "metafont") { - &dosimplemf; - } else { - &domf; - } - - &dodvi; - # rebuild again, as we have .dvi files now - &buildfilelist; - &dobst; - &domp; - &dobib; - &doxmt; - &dotex; - &runfonts; - &domakeindex; - &doomega; - &dosource; - &dotype1; - &doscripts; - - # remove empty directories that we never used. - &SYSTEM ("rmdir $DEST/*/$whichformat/$package 2>/dev/null"); - - &killfiles ($specialclean{$package} || $standardclean); - } - - # do the postaction in any case (we need to adapt some tds zips) - my $postaction = $specialpostaction{$package}; - eval ($postaction) if $postaction; -} - -sub runins -{ - my ($thispatt) = @_; - print "\t RUNINS $thispatt\n"; - for (grep (/$thispatt/, @filenames)) { - # do not infinite loop on docstrip "output directory", e.g., fltpoint. - &runjob ("yes | sed 5q | $insrunner $_"); - } - - &killfiles ($specialclean{$package} || $standardclean); -} - -sub install -{ - my ($destdir,$thispatt) = @_; - return unless $thispatt; - - my @files = grep (/$thispatt/, @filenames); # ugh, @filenames global - return unless @files; # avoid lots of useless output - - print "\t INSTALL $thispatt to $destdir\n"; - &xmkdir ($destdir) unless -d $destdir; - - for my $file (@files) { - next if $file eq "dtx-style.sty"; # this should never be in runtime - &SYSTEM ("$MV $file $destdir"); - } -} - -# build the documentation files -sub dodvi -{ - # packages which are doc themselves rarely rebuild cleanly, - # and aren't worth it. - return if $DEST_TREE eq "texmf-doc"; - $dvipatt = $specialdvi{$package} || $standarddvi; - unless ( "$dvipatt" eq "$standarddvi" ) { - warn "$0: Building doc: shouldn't need do to that. Please check."; - &rundvi ($dvipatt); - } -} - -# move the runtime files -sub dotex -{ - my $texpatt = $specialtex{$package} || $standardtex; - &install("$DEST/tex/$whichformat/$package", $texpatt); -} - -# move the makeindex runtime files -sub domakeindex -{ - $makeindexpatt = $specialmakeindex{$package}; - if ($makeindexpatt eq "") { $makeindexpatt=$standardmakeindex; } - &install("$DEST/makeindex/$package",$makeindexpatt); -} - -# BibTeX style files: -sub dobst -{ - $csfpatt = $specialcsf{$package}; - if ($csfpatt eq "") { $csfpatt=$standardcsf; } - &install("$DEST/bibtex/csf/$package",$csfpatt); - $bstpatt = $specialbst{$package}; - if ($bstpatt eq "") { $bstpatt=$standardbst; } - &install("$DEST/bibtex/bst/$package",$bstpatt); -} - -# simple MF files, e.g., if specialfoundry eq "metafont". -sub dosimplemf { - my $mfpatt = $specialmf{$package} || $standardmf; - &install ("$DEST/metafont/$package", $mfpatt); -} - -# MetaPost files: -sub domp { - $mppatt = $specialmp{$package} || $standardmp; - &install("$DEST/metapost/$package", $mppatt); -} - -# BibTeX bibliography files: -sub dobib -{ - return if ! $specialbib{$package} && $DEST_TREE eq "texmf-doc"; - $bibpatt = $specialbib{$package} || $standardbib; - &install("$DEST/bibtex/bib/$package", $bibpatt); -} - -# source files: -sub dosource -{ - $sourceformat = $specialsourcefmt{$package} || $standardsourcefmt; - # default to using specialdocfmt, as we do in setup? - $sourcepatt = $specialsource{$package} || $standardsource; - &install("$DEST/source/$sourceformat/$package", $sourcepatt); -} - - -sub doomega -{ - $ovfpatt = $specialovf{$package}; - if ($ovfpatt eq "") { $ovfpatt=$standardovf; } - &install("$DEST/fonts/ovf/public/$package",$ovfpatt); - $ofmpatt = $specialofm{$package}; - if ($ofmpatt eq "") { $ofmpatt=$standardofm; } - &install("$DEST/fonts/ofm/public/$package",$ofmpatt); - $ovppatt = $specialovp{$package}; - if ($ovppatt eq "") { $ovppatt=$standardovp; } - &install("$DEST/fonts/ovp/public/$package",$ovppatt); - $otppatt = $specialotp{$package}; - if ($otppatt eq "") { $otppatt=$standardotp; } - &install("$DEST/omega/otp/$package",$otppatt); - $ocppatt = $specialocp{$package}; - if ($ocppatt eq "") { $ocppatt=$standardocp; } - &install("$DEST/omega/ocp/$package",$ocppatt); -} - -# the dvips and font mapping files: -sub dotype1{ - my $encpatt = $specialenc{$package} || $standardenc; - &install("$DEST/fonts/enc/dvips/$package", $encpatt); - - my $mappatt = $specialmap{$package} || $standardmap; - my $mapdest = $specialmapdest{$package} || $standardmapdest; - &install ("$DEST/$mapdest/$package", $mappatt); - - my $vmappatt = $specialvmap{$package} || $standardvmap; - &install("$DEST/fonts/map/vtex/$package", $vmappatt); - - my $propatt = $specialpro{$package} || $standardpro; - &install("$DEST/dvips/$package", $propatt); - - my $pfbpatt = $specialpfb{$package} || $standardpfb; - &install("$DEST/fonts/type1/public/$package", $pfbpatt); - - my $afmpatt = $specialafm{$package} || $standardafm; - &install("$DEST/fonts/afm/public/$package", $afmpatt); - - my $pfmpatt = $specialpfm{$package} || $standardpfm; - &install("$DEST/fonts/type1/public/$package", $pfmpatt); - - my $otfpatt = $specialotf{$package} || $standardotf; - &install("$DEST/fonts/opentype/public/$package", $otfpatt); - - my $ttfpatt = $specialttf{$package} || $standardttf; - &install("$DEST/fonts/truetype/public/$package", $ttfpatt); -} - -# scripts. Build/source/tex/texlive/Makefile.in installs symlinks -# in the bin directories where appropriate. Just for simplicitly, let's -# try keeping DEST as texmf when symlinks get installed; otherwise -# (if it gets called as a subprogram) texmf-dist is ok. -# -sub doscripts -{ - my $scriptpatt = $specialscripts{$package}; - return unless $scriptpatt; - &install ("$DEST/scripts/$package", $scriptpatt); - &SYSTEM ("chmod a+x $DEST/scripts/$package/*"); -} - -# xmltex files -sub doxmt{ - my $xmtpatt = $specialxmt{$package} || $standardxmt; - &install ("$DEST/tex/xmltex/$package", $xmtpatt); -} - -# build the font files -sub domf { - $mfpatt = $specialmf{$package} || $standardmf; - &runmf ($mfpatt); - - my $mfdir = "$DEST/fonts/source/$Foundry/$package"; - # - # don't use $mfpatt since that's only the tfm-able mf files; just - # install all the .mf files. - &install ($mfdir, '\.mf$'); - if (exists $specialmfinstall{$package}) { - &install ($mfdir, $specialmfinstall{$package}); - } -} - -sub rundvi { - local($thispatt) = @_; - $TEX = $specialTEX{$package}; - if ($TEX eq "") { - if ($whichformat eq 'latex') { $TEX="pdflatex"; } - else { $TEX=$whichformat; } - } - if ($TEX eq "generic") { $TEX="pdflatex"; } - print "\t MAKEDVI $thispatt using $TEX (@filenames)\n"; - for (grep(/$thispatt/,@filenames)) { - ($FileBase,$Filepath,$Filesuffix) = fileparse($_,"\.[A-z]*"); - print "found $FileBase\n"; - if (-r "$FileBase.drv" && $Filesuffix eq ".dtx" ) - { $Filesuffix=".drv" ; } - print "\t DOC: run $TEX on $FileBase$Filesuffix\n"; - open(TMP,">$FileBase.aux"); - close(TMP); - &runjob("TEXMFLOCAL=. $TEX '\\nonstopmode\\input $FileBase$Filesuffix'"); - &runjob("bibtex $FileBase"); - &runjob("TEXMFLOCAL=. $TEX '\\nonstopmode\\input $FileBase$Filesuffix'"); - if ($Filesuffix eq ".drv" || $Filesuffix eq ".dtx" ) { - &runjob("$CP $startdir/gind.ist ."); - &runjob("makeindex -s gind.ist $FileBase"); - unlink "gind.ist"; - } else { - &runjob("makeindex $FileBase"); - } - &runjob("$TEX '\\nonstopmode\\input $FileBase$Filesuffix'"); - } - print "\t MAKEDVI done\n"; -} - -# run a &SYSTEM job, and append stderr output to log file -# -sub runjob -{ - my ($job) = @_; - - if ($opt_test) { - print "WOULDRUNJOB $job\n"; - } else { - my $Jobid = "_$$"; - &SYSTEM ("$job >$Jobid.log 2>&1"); - local *TMP; - open (TMP, "$Jobid.log") || die "open($Jobid.log) failed: $!"; - my @output = (<TMP>); - if ($job =~ /^mktextfm/) { - print $output[$#output-1]; # successfully generated line - } else { - print `cat $Jobid.log`; - } - close (TMP); - unlink ("$Jobid.log"); - } -} - -# remove all files matching something in $KILLPATT. -# also remove .ps files for which we have a .pdf. -# -# if MORE is true, remove additional files matching something in -# $moreclean and create a README.TEXLIVE which lists the removed files. -# -# This only deletes files in the current directory. Should fix. -# -sub killfiles -{ - my ($killpatt,$more) = @_; - - local *DOT; - opendir (DOT, ".") || die "opendir(.) failed: $! in " . `pwd`; - - my @delfiles = (); - for (grep (/$killpatt/, readdir (DOT))) { - print "\t Removing $_\n"; - if (unlink ($_)) { - push (@delfiles, $_); - } else { - warn "unlink($_) failed: $!"; - } - } - - for (grep (/\.ps$/, @filenames)) { - (my $pdf = $_) =~ s/ps$/pdf/; - next unless grep (/$pdf/, @filenames); - print "\t Remove ps $_ (since have $pdf)\n"; - unlink ($_) && push (@delfiles, $_); - } - - if ($more && @delfiles) { - # create/update README.TEXLIVE. - open (RTL, ">README.TEXLIVE") || warn "open(>README.TEXLIVE) failed: $!"; - print RTL <<'EOF'; -The following files have been removed in the TeX Live installation of -the current package, typically due to duplication, lack of space, or -missing source code. You can find these files on CTAN. If questions or -concerns, email tex-live@tug.org. - -EOF - foreach my $f (@delfiles) { - print RTL "\t$f\n"; - } - close RTL; - } - &buildfilelist(); -} - -# rebuild list of input files, e.g., after flattening -sub buildfilelist -{ - print "doing buildfilelist()...\n"; - opendir (DIR ,'.') || die "opendir(.) failed: $!"; - @filenames = grep (!/^\.\.?$/, readdir (DIR)); - closedir (DIR); -} - -sub runmf -{ - my ($mfpatt) = @_; - print "\t doing runmf for $package ($mfpatt)\n"; - for my $file (grep (/$mfpatt/, @filenames)) { - ($FileBase,$Filepath,$Filesuffix) = fileparse ($file, "\.[A-z]*"); - if (! -e "$FileBase.tfm") { - print "\t\t Make TFM from $file\n"; - &runjob ("mktextfm --destdir=`pwd` $FileBase.tfm"); - &SYSTEM ("$RM *pk"); # not worth the space - } - } -} - -sub runfonts { - $Foundry = $specialfoundry{$package} || $standardfoundry; - for (grep(/.vf/,@filenames)) { - $needdir=1; - print "\t\t install VF $_\n"; -($FileBase,$Filepath,$Filesuffix) = fileparse($_,"\.[A-z]*"); - if ($needdir) { - &SYSTEM("mkdir -p $DEST/fonts/vf/$Foundry/$package"); - $needdir=0; - } - &SYSTEM("$MV $FileBase.vf $DEST/fonts/vf/$Foundry/$package "); - } - for (grep(/.tfm/,@filenames)) { - $needdir=1; - print "\t\t INSTALL tfm $_\n"; -($FileBase,$Filepath,$Filesuffix) = fileparse($_,"\.[A-z]*"); - if ($needdir) { - &SYSTEM("mkdir -p $DEST/fonts/tfm/$Foundry/$package"); - $needdir=0; - } - &SYSTEM("$MV $FileBase.tfm $DEST/fonts/tfm/$Foundry/$package "); - } -} - - -sub SYSTEM -{ - local ($job) = @_; - if ($opt_test) { - print "\t SYSTEM $job\n"; - } else { - print "\t SYSTEM $job\n" if $opt_debug; - system($job); - } -} - - -sub MAKEflatten -{ - &setup; - &xchdir ("$DEST/doc/$whichdocformat/$package"); - - print "\t SPECIAL flatten $package\n"; - - # cm-super et al. need to intervene at this point. - &run_prehook ($package); - - # I don't think flattened packages ever want symlinks. - &SYSTEM ("find . -type l | xargs --no-run-if-empty $RM"); - - # mv foo/README to README.foo. README.txt is for psfragx. - # Obviously should be generalized to non-README files. - my $findcmd = "find . -mindepth 2 '(' -name README -o -name README.txt ')'"; - &SYSTEM ("for r in `$findcmd`; do" - . ' mv $r $r.`basename \`dirname $r\``; done'); - - # move all non-directories to top level, but don't accidentally - # overwrite one with another. - &SYSTEM ("yes n | find . -mindepth 2 -not -type d -exec mv -i '\{\}' . \\;"); - - # remove newly empty directories. - &SYSTEM ("find -depth -type d -print | xargs rmdir 2>/dev/null"); - - # do the usual. - &buildfilelist; - &donormal ("nosetup"); -} - -sub MAKEunzipandflatten { - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &SYSTEM("unzip -q -o -a $package.zip; rm $package.zip"); - &SYSTEM("$MV */*/*/*/* .; rmdir */*/*/*"); - &SYSTEM("$MV */*/*/* .; rmdir */*/*"); - &SYSTEM("$MV */*/*/* .; rmdir */*/*"); - &SYSTEM("$MV */*/* .; rmdir */*"); - &SYSTEM("$MV */*/* .; rmdir */*"); - &SYSTEM("$MV */* .; rmdir *"); - &buildfilelist; - &donormal; -} - -sub MAKEnosymlinks -{ - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - - print "\t SPECIAL nosymlinks $package\n"; - &SYSTEM("find . -type l | xargs --no-run-if-empty rm"); - - &buildfilelist; - &donormal ("nosetup"); -} - -# do some stuff for simple packages with hyphenation files, like -# cbcoptic and ibycus-babel. The arguments are: -# LANGNAME - full language name, like "coptic" (first arg of .dat line) -# LANGABBREV - abbreviated language name, like "cop" (in .dat filename) -# HYPHFILE - hyphenation .tex file name, like "copthyph.tex" -# -# General procedure is: -# -# create: tlpkg/tlpsrc/hyphen-language.tlpsrc -# (must be done by hand) -# create: texmf/tex/generic/config/language.ll.dat -# (done here, unless it already exists) -# install pattern file from ctan: texmf/tex/generic/hyphen/langhyph.tex -# (done here) -# add in: tlpkg/tlpsrc/collection-langwhatever.tlpsrc -# (must be done by hand) -# -sub GENMAKEhyphenation -{ - my ($langname,$langabbrev,$hyphfile) = @_; - &setup; - &buildfilelist; - &donormal; - print "\t SPECIAL $package: install $hyphfile\n"; - my $generichyphdir = "$TOPDEST/texmf/tex/generic/hyphen"; - &SYSTEM("mkdir -p $generichyphdir"); - &SYSTEM("$MV $hyphfile $generichyphdir"); - - my $genericconfigdir = "$TOPDEST/texmf/tex/generic/config"; - my $configfile = "$genericconfigdir/language.$langabbrev.dat"; - if (! -r $configfile) { - print "\t SPECIAL $package: create $configfile\n"; - &SYSTEM("mkdir -p $genericconfigdir"); - &SYSTEM("echo $langname $hyphfile >$configfile"); - } - - print "YOU-MUST-DO! $package: create hyphen-$langname.tlpsrc\n"; - print "YOU-MUST-DO! $package: add to collection-langwhatever.tpm\n"; -} - -sub MAKEcbcoptic -{ - &GENMAKEhyphenation ("coptic", "cop", "copthyph.tex"); -} - -sub MAKEibycusbabel -{ - &GENMAKEhyphenation ("ibycus", "iby", "ibyhyph.tex"); -} - -# since existing mongolian is written in a different encoding, -# seems best to keep both? -sub MAKEmnhyphn -{ - &GENMAKEhyphenation ("mongolian2a", "mn2a", "mnhyphn.tex"); -} - -# we don't want a package named nohyph. Hmm. -#sub MAKEnohyph -#{ -# &GENMAKEhyphenation ("norsk", "no", "nohyphbx.tex"); -# &GENMAKEhyphenation ("nynorsk", "no", "nnhyph.tex"); -# &GENMAKEhyphenation ("bokmal", "no", "nbhyph.tex"); -#} - -sub MAKEarabi { - &xchdir ("$packagedir/arabi/texmf"); # author will remove these next time - # - print "\t SPECIAL $package - removing microsoft and nonfree\n"; - &SYSTEM('find -name microsoft -o -name nonfree | xargs rm -rf'); - # - print "\t SPECIAL $package - rearranging for tds\n"; - &SYSTEM ("mkdir -p tex; mv latex tex"); - &SYSTEM ("$RM tex/latex/arabi/updmap.cfg"); - &SYSTEM ("$MV tex/latex/arabi/bblopts.cfg doc/latex/arabi"); - &SYSTEM ("rm -rf dvips"); - # - print "\t SPECIAL $package - copying to $DEST\n"; - &SYSTEM ("mkdir -p $DEST"); - &SYSTEM ("$CP -r * $DEST/"); -} - -sub MAKEarabtex { - &xchdir ($packagedir); - # - print "\t SPECIAL $package: removing top-level links\n"; - &SYSTEM('for f in apatch.sty arabtex.tex hebtex.tex hepatch.sty; do test -h $f && rm -v $f; done'); - # - print "\t SPECIAL $package: removing top-level tgz's\n"; - &SYSTEM('for f in *.tgz; do rm -v $f; done'); - # - print "\t SPECIAL $package: renaming arabtex.htm\n"; - &SYSTEM('mv doc/html/arabtex.htm arabtex1.htm'); - &SYSTEM('mv doc/txt/arabtex.htm arabtex2.htm'); - # - print "\t SPECIAL $package: flatten\n"; - &xchdir (".."); - &MAKEflatten (); -} - -sub MAKEarphic { - &xchdir ($packagedir); - # tds-ready tarballs with a top-level dir name. copy all into new/. - &SYSTEM ("mkdir -p new"); - for my $tar (<*.tar.*>) { - (my $tarbase = $tar) =~ s/\.tar.*//; - &SYSTEM ("tar xf $tar " - . "&& (cd $tarbase && cp -arf * ../new)" - . "&& rm -rf $tar $tarbase"); - } - # move everything from new to the top level. - &SYSTEM ("mv new/* . && rmdir new"); - # - # move docs to subdir. - &SYSTEM ("mv arphic-sampler* doc/fonts/arphic"); - # - # copy to dest. - &xchdir (".."); - &MAKEcopy (); -} - -sub MAKEaurical { - &xchdir ($packagedir); - # - # basically have a tds hier to unzip, with some cleanups. - &SYSTEM ("unzip -q aurical_texmf.zip"); - &SYSTEM ("mkdir -p fonts/source/public/aurical/"); - &SYSTEM ("$MV $DEST/README doc/latex/aurical/"); - &SYSTEM ("$MV aurical_source.zip fonts/source/public/aurical/"); - &SYSTEM ("$RM aurical.pdf aurical_texmf.zip"); - # - &xchdir (".."); - &MAKEcopy (); -} - -sub MAKEeskdx { - &setup; - &xchdir ("$DEST/doc/$whichdocformat/$package"); - print "\t SPECIAL $package: flatten unpacked/ dir (only)\n"; - &SYSTEM ("$MV unpacked/Makefile Makefile.unpacked"); - &SYSTEM ("$MV unpacked/* ."); - &SYSTEM ("rmdir unpacked"); - &buildfilelist; - &donormal; -} - -sub MAKEmathdesign { - &setup (); - &xchdir ($DOCDIR); - # - # basically have several tds hiers to unzip, with some cleanups. - print "\t SPECIAL $package: unzip etc.\n"; - for my $zip (<*.zip>) { - &SYSTEM ("cd $DEST && unzip -q -o $DOCDIR/$zip; $RM $DOCDIR/zip"); - } - &SYSTEM ("rm -rf commercialfonts"); - &SYSTEM ("mv $DEST/dvips/config $DEST/dvips/mathdesign"); -} - -sub MAKEmetauml { - &setup; - &xchdir ("$DEST/doc/$whichdocformat/$package"); - &SYSTEM ("$MV doc/* examples/* inputs/* ."); - &SYSTEM ("rmdir doc examples inputs"); - &buildfilelist; - &donormal; -} - -sub MAKEmflogo{ - &setup; - chdir("$DEST"); - &runjob("tar xvf $DEST/doc/latex/$package/logofont.tar"); - chdir("$DEST/doc/latex/$package"); - &donormal; - } - -sub MAKEfp { - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &runjob("mkdir -p $DEST/tex/plain/fp; $CP fp.tex $DEST/tex/plain/fp"); - &donormal; -} - -sub MAKEgermbib { - &xchdir ($packagedir); - # - print "\t SPECIAL $package remove symlinks\n"; - &SYSTEM ("find . -type l | xargs --no-run-if-empty rm"); - # - # we can't conflict with standard apalike.sty. - print "\t SPECIAL $package rename second apalike.sty\n"; - &SYSTEM ("$MV styles/apalike.sty styles/apalike.germbib_sty"); - # - # spurious ^M's. - &SYSTEM ("perl -pie 'tr/\r//' document/btxdoc.tex"); - # - &xchdir (".."); - &MAKEflatten (); -} - -sub MAKExkeyval { - # needs files in both latex and generic. - &MAKEflatten (); - print "\t SPECIAL $package moving .tex\n"; - my $generic = "$DEST/tex/generic/$package/"; - &SYSTEM ("mkdir -p $generic; mv *.tex $generic"); -} - -sub MAKExymtex { - &setup; - chdir("$DEST/doc/latex/$package"); - &SYSTEM("$MV doc200/* ."); - &SYSTEM("rmdir doc"); - &buildfilelist; - &donormal; -} - -sub MAKEnewsletr { - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &SYSTEM ("$MV newsletr.tex $DEST/tex/$whichformat/$package"); - &SYSTEM ("$RM *.dvi"); -} - -sub MAKEnotes -{ - &setup; - &xchdir ($DOCDIR); - &SYSTEM ("make eps png pdf"); - &donormal; -} - -sub MAKEpbdiagram { - &setup; - chdir("$DEST/doc/latex/$package"); - &SYSTEM("rm -rf mf tfm"); - &buildfilelist; - &donormal; -} - -# copy seminar files. -sub MAKEseminar { - &SYSTEM("mkdir -p $DEST/tex/latex/$package"); - &SYSTEM("$CP $packagedir/inputs/* $DEST/tex/latex/$package"); - # - &SYSTEM("mkdir -p $DEST/source/latex/$package"); - &SYSTEM("$CP $packagedir/src/* $DEST/doc/latex/$package"); - # - &SYSTEM("mkdir -p $DEST/doc/latex/$package"); - &SYSTEM("$CP $packagedir/*read* $packagedir/doc/* $DEST/doc/latex/$package"); -} - -sub MAKExypic { -# this simply copies source files as per INSTALL instructions - chdir($packagedir) || die ("ERROR: cannot open directory"); - &runjob("mkdir -p $DEST/fonts/source/$Foundry/xypic"); - &runjob("mkdir -p $DEST/fonts/type1/$Foundry/xypic"); - &runjob("mkdir -p $DEST/fonts/tfm/$Foundry/xypic"); - &runjob("mkdir -p $DEST/fonts/pk/cx/$Foundry/xypic"); - &runjob("mkdir -p $DEST/tex/generic/xypic"); - &runjob("mkdir -p $DEST/dvips/xypic"); - &runjob("mkdir -p $DEST/doc/generic/xypic"); - &runjob("mkdir -p $DEST/source/generic/xypic"); - &runjob("$CP texinputs/* $DEST/tex/generic/xypic"); - &runjob("$CP texfonts/* $DEST/fonts/tfm/$Foundry/xypic"); - &runjob("$CP mfinputs/* $DEST/fonts/source/$Foundry/xypic"); - &runjob("$CP src/* $DEST/doc/generic/xypic"); - &runjob("$CP type1/* $DEST/fonts/type1/$Foundry/xypic"); - &runjob("$CP ps/* $DEST/dvips/xypic"); - &runjob("$CP doc/*.* $DEST/doc/generic/xypic"); - &runjob("$CP [A-Z]* $DEST/doc/generic/xypic"); - open (TMP,">$DEST/texmf-dist/dvips/xypic/config.xyp"); - print TMP "p +xypic.map"; - close(TMP); -# do the PK files - chdir("pkfonts"); - &buildfilelist; - for (@filenames) { - if (-d $_) { - chdir $_; - s/cx([0-9]*)//; - $dpi=$1; - opendir(DIR,'.'); - @ffontnames =grep(!/^\.\.?$/,readdir(DIR)); - closedir(DIR); - for (@ffontnames) { -($FileBase,$Filepath,$Filesuffix) = fileparse($_,"\.[A-z0-9]*"); - &SYSTEM("mkdir -p $DEST/fonts/pk/cx/$Foundry/xypic/dpi$dpi"); - &SYSTEM("$MV $_ $DEST/fonts/pk/cx/$Foundry/xypic/dpi$dpi/$FileBase.pk"); - } - chdir '..'; - } - } -} - - -sub MAKEborceux { - &setup; - chdir("$DEST/doc/$whichdocformat/$package/user-guides"); - &SYSTEM("$MV -f * $DEST/doc/$whichdocformat/$package"); - chdir("$DEST/doc/$whichdocformat/$package/diagram"); - &SYSTEM("$MV -f * $DEST/tex/$whichformat/$package"); -} - -sub MAKEconcmath { - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &SYSTEM("$MV fonts/*/* ."); - &buildfilelist; - &domf; - &dodvi; -# rebuild again, as we have .dvi files now - &buildfilelist; - &domakeindex; - &dotex; - &dosource; -} - -sub MAKEplqx { - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &SYSTEM("$MV tex/* ."); - &SYSTEM("$MV doc/* ."); - &SYSTEM("rmdir doc tex"); - &buildfilelist; - &donormal; -} - -sub MAKEaugie { - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &SYSTEM("$MV dvips/* ."); - &SYSTEM("$MV tfm/* ."); - &SYSTEM("$MV afm/* ."); - &SYSTEM("$MV doc/* ."); - &SYSTEM("$MV vf/* ."); - &SYSTEM("$MV tex/* ."); - &SYSTEM("$MV type1/* ."); - &SYSTEM("rmdir type1 tex vf afm dvips doc tfm"); - &buildfilelist; - &donormal; -} - -sub MAKEae { - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &SYSTEM("$MV tfm/* ."); - &SYSTEM("$MV vf/* ."); - &SYSTEM("$MV src/* ."); - &SYSTEM("$MV tex/* ."); - &SYSTEM("rmdir tex vf src tfm"); - &buildfilelist; - &dosource; - &dotex; - &domakeindex; - &runfonts; -} - -sub MAKEdevanagr { - &xchdir ($packagedir); - # - print "\t SPECIAL $package: renaming README files\n"; - &SYSTEM('for f in *; do test -r $f/README && mv $f/README README.$f; done'); - # - print "\t SPECIAL $package: moving .c and .exe to /tmp\n"; - &SYSTEM('mv bin/devnag.c bin/devnag.exe /tmp'); - # - print "\t SPECIAL $package: flatten\n"; - &xchdir (".."); - &MAKEflatten; - print "YOU-MUST-DO! update /tmp/devnag.c and devnag.exe into Build\n"; -} - -# We don't want to flatten the templates, only the source. -# -sub MAKEdisser -{ - &setup; - &xchdir ("$DEST/doc/$whichdocformat/$package"); - print "\t SPECIAL $package\n"; - &SYSTEM ("$MV -f src/* ."); - &buildfilelist; - &donormal ("nosetup"); -} - -sub MAKEeasy { - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &SYSTEM("rm doc/*.ps"); - &SYSTEM("$MV doc/* $DEST/doc/$whichdocformat/$package"); - &buildfilelist; - &dodvi; -# rebuild again, as we have .dvi files now - &buildfilelist; - &dotex; - &domakeindex; - &dosource; -} - -sub MAKEebong { - &xchdir ($packagedir); - # - print "\t SPECIAL $package: moving .py to /tmp\n"; - &SYSTEM('mv -v *.py /tmp'); - # - print "\t SPECIAL $package: flatten\n"; - &xchdir (".."); - &MAKEflatten; - print "YOU-MUST-DO! update /tmp/ebong.py into Build\n"; -} - -sub MAKEfootnpag { - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &SYSTEM("$MV src/* ."); - &buildfilelist; - &dodvi; -# rebuild again, as we have .dvi files now - &buildfilelist; - &dotex; - &domakeindex; - &dosource; -} - - -sub MAKEeplain { - print "\t SPECIAL $package\n"; - &setup; - &xchdir ($DEST); - rename ("tex/eplain/eplain", "tex/eplain/base"); - &SYSTEM ("$MV $DOCDIR/eplain.tex tex/eplain/base"); - &SYSTEM ("$MV $DOCDIR/btxmac.tex tex/eplain/base"); - &SYSTEM ("$MV $DOCDIR/arrow.tex tex/eplain/base"); - - &SYSTEM ("$MV $DOCDIR/doc doc/eplain/base"); - &SYSTEM ("$MV $DOCDIR/[A-L]* $DOCDIR/[M-Z]* doc/eplain/base/"); - unlink ("doc/eplain/base/texinfo.tex"); - - rename ("source/eplain/eplain", "source/eplain/base"); - &SYSTEM ("$MV $DOCDIR/* source/eplain/base"); - -} - -sub MAKEfeynmf -{ - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &SYSTEM("gunzip manual.ps"); - &buildfilelist; - &runins('feynmf.ins'); - &buildfilelist; - &dosimplemf; - &dodvi; - &buildfilelist; - &domp; - &dotex; - &domakeindex; - &dosource; - killfiles($standardclean); -} - -sub MAKEchangebar { - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &buildfilelist; - &donormal; -} - -sub MAKEsiam -{ - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &buildfilelist; - &dodvi; - &buildfilelist; - &dobst; - &dotex; - &domakeindex; - &dosource; - &SYSTEM("mkdir -p $DEST/doc/plain/siam"); - &SYSTEM("mkdir -p $DEST/doc/amstex/siam"); - &SYSTEM("mkdir -p $DEST/tex/plain/siam"); - &SYSTEM("mkdir -p $DEST/tex/plain/amstex"); - &SYSTEM("$MV plain/*doc* $DEST/doc/plain/siam"); - &SYSTEM("$MV plain/* $DEST/tex/plain/siam"); - &SYSTEM("$MV amstex/*doc* $DEST/doc/amstex/siam"); - &SYSTEM("$MV amstex/* $DEST/tex/amstex/siam"); - killfiles($standardclean); -} - -sub MAKEmisc { - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &buildfilelist; - &dotex; - &domakeindex; - killfiles($standardclean); -} - -sub MAKEtamethebeast { - my $destdir = "$DEST/doc/english/$package"; - &SYSTEM("mkdir -p $destdir"); - &SYSTEM("$CP -r $packagedir/* $destdir"); -} - -sub MAKEtexdraw { - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &buildfilelist; - &dotex; - &domakeindex; - &SYSTEM("mkdir -p $DEST/doc/generic/texdraw"); - &SYSTEM("$MV manual/* $DEST/doc/generic/texdraw"); - killfiles($standardclean); -} - -sub MAKEexpressg { - &setup; -chdir("$DEST/doc/$whichdocformat/$package"); -&buildfilelist; - $inspatt = $specialins{$package}; - &buildfilelist; - if ($inspatt eq "") { - $inspatt=$standardins; - } -&runins($inspatt); - &SYSTEM("mpost expeg.mp"); -# rebuild the list of files in the directory - &buildfilelist; - &dodvi; -# rebuild again, as we have .dvi files now - &buildfilelist; - &runfonts; -&dobst; - &dobib; -&dotex; - &domakeindex; - &dosource; - &dotype1; -# -# this is a bit weird, but its an easy way to remove -# empty directories that we never used. -# - &SYSTEM("rmdir $DEST/tex/$whichformat/$package 2> /dev/null"); - &SYSTEM("rmdir $DEST/doc/$whichdocformat/$package 2> /dev/null"); - &SYSTEM("rmdir $DEST/source/$whichformat/$package 2> /dev/null"); - killfiles($standardclean); -} - -sub MAKEtipa { -# this simply copies source files - chdir($packagedir) || die ("ERROR: cannot open directory"); - &runjob("mkdir -p $DEST/fonts/source/$Foundry/tipa"); - &runjob("mkdir -p $DEST/fonts/type1/$Foundry/tipa"); - &runjob("mkdir -p $DEST/fonts/tfm/$Foundry/tipa"); - &runjob("mkdir -p $DEST/fonts/map/dvips/tipa"); - &runjob("mkdir -p $DEST/tex/latex/tipa"); - &runjob("mkdir -p $DEST/doc/fonts/tipa"); - &runjob("mkdir -p $DEST/source/latex/tipa"); - &runjob("$CP dvips/* $DEST/fonts/map/dvips/tipa"); - &runjob("$CP sty/* $DEST/tex/latex/tipa"); - &runjob("$CP tfm/* $DEST/fonts/tfm/$Foundry/tipa"); - &runjob("$CP type1/* $DEST/fonts/type1/$Foundry/tipa"); - &runjob("$CP mf/* $DEST/fonts/source/$Foundry/tipa"); - &runjob("$CP doc/* $DEST/doc/fonts/tipa"); -} - -sub MAKEpslatex -{ - &xchdir ($packagedir); - $Foundry = $specialfoundry{$package} || $standardfoundry; - # - &runjob("mkdir -p $DEST/tex/latex/pslatex"); - &runjob("$CP latex/* $DEST/tex/latex/pslatex"); - # - &runjob("mkdir -p $DEST/fonts/tfm/$Foundry/pslatex"); - &runjob("$CP tfm/* $DEST/fonts/tfm/$Foundry/pslatex"); - # - &runjob("mkdir -p $DEST/fonts/vf/$Foundry/pslatex"); - &runjob("$CP vf/* $DEST/fonts/vf/$Foundry/pslatex"); - # - &runjob("mkdir -p $DEST/fonts/map/dvips/pslatex"); - &runjob("$CP dvips/* $DEST/fonts/map/dvips/pslatex"); - # - &runjob("mkdir -p $DEST/source/latex/pslatex"); - &runjob("$CP -r fontinst $DEST/source/latex/pslatex"); - &runjob("$CP -r shell $DEST/source/latex/pslatex"); -} - -sub MAKEeco { -# this simply copies source files - chdir($packagedir) || die ("ERROR: cannot open directory"); - &runjob("mkdir -p $DEST/fonts/tfm/$Foundry/eco"); - &runjob("mkdir -p $DEST/fonts/vf/$Foundry/eco"); - &runjob("mkdir -p $DEST/tex/latex/eco"); - &runjob("mkdir -p $DEST/dvips/eco"); - &runjob("mkdir -p $DEST/doc/latex/eco"); - &runjob("$CP src/*sty $DEST/tex/latex/eco"); - &runjob("$CP fd/* $DEST/tex/latex/eco"); - &runjob("$CP tfm/* $DEST/fonts/tfm/$Foundry/eco"); - &runjob("$CP vf/* $DEST/fonts/vf/$Foundry/eco"); - &runjob("$CP -r src/*tex src/*x src/*sh $DEST/doc/latex/eco"); - &runjob("$CP -r [A-Z]* $DEST/doc/latex/eco"); - } - -sub MAKEelhyphen { - &setup; - &buildfilelist; - &donormal; - - print "\t SPECIAL $package: lowercase names\n"; - &SYSTEM('for f in GR*hyph*.tex; do mv $f `echo $f | tr A-Z a-z`; done'); - - print "\t SPECIAL $package: install gr*hyph.tex files\n"; - my $generichyphdir = "$TOPDEST/texmf/tex/generic/hyphen"; - &SYSTEM("mkdir -p $generichyphdir"); - &SYSTEM("$MV gr*hyph*.tex $generichyphdir"); - - print "YOU-MUST-DO! $package: update texmf/tex/generic/config/language.gr.dat\n"; - print "YOU-MUST-DO! $package: update texmf/tpm/hyphen-greek.tpm\n"; - print "YOU-MUST-DO! $package: add to texmf/tpm/collection-langgreek.tpm\n"; -} - -sub MAKECatalogue { -# this simply copies source files - $DEST="$TDS/catalogue/texmf-doc"; - chdir($packagedir) || die ("ERROR: cannot open directory"); - &runjob("mkdir -p $DEST/doc/english/catalogue"); - &runjob("$CP -r * $DEST/doc/english/catalogue"); - chdir("$DEST/doc/html/catalogue/entries") || die ("ERROR cannot chdir $DEST/doc/english/catalogue/entries"); - &buildfilelist; - foreach $File (grep(/.html$/,@filenames)) { - print "process $File\n"; - open FOO,">$File.new"; - open BAR,"$File"; - while (<BAR>) { - s|\.\./\.\./\.\.|http://theory.uwinnipeg.ca/scripts/CTAN|g; - print FOO ; - } - close FOO; - close BAR; - &SYSTEM("$MV $File.new $File"); - } - } - -sub MAKEFAQen -{ - &donormal (); - &SYSTEM ("tar xzf FAQ-html.tar.gz && rm FAQ-html.tar.gz"); -} - -# all the lshort translations are pretty similar. -sub MAKElshort -{ - print "MAKElshort $package\n"; - (my $lang = $package) =~ s,.*-,,; # lshort-english -> english - my $destdir = "$DEST/doc/$lang/$package"; - &SYSTEM ("mkdir -p $destdir"); - &SYSTEM ("$CP -r $packagedir/* $destdir"); - # keep only pdf's to save space. - &SYSTEM ("cd $destdir && $RM lshort*.ps *lshort*.ps.*z* lshort*.dvi* lshort-*-book.zip"); - # remove symlinks such as README. - &SYSTEM ("cd $destdir && find -type l | xargs --no-run-if-empty rm"); -} - -sub MAKEltt { -# this simply copies source files - chdir($packagedir) || die ("ERROR: cannot open directory"); - &runjob("mkdir -p $DEST/doc/ltt"); - &runjob("$CP * $DEST/doc/ltt"); - } - -sub MAKEpstricks -{ - # move the directories around. - &xchdir ($packagedir); - &xmkdir ("$DEST/doc/generic"); - # - my $docdir = "$DEST/doc/generic/pstricks"; - &SYSTEM ("$MV doc $docdir"); - # - # move multiple Changes files out of runtime. - &runjob("$MV generic/Changes $docdir/Changes.generic"); - &runjob("$MV latex/Changes $docdir/Changes.latex"); - &runjob("$MV dvips/Changes $docdir/Changes.dvips"); - # - &xmkdir ("$DEST/dvips"); - &SYSTEM ("$MV dvips $DEST/dvips/pstricks"); - # - &xmkdir ("$DEST/tex/generic"); - &SYSTEM ("$MV generic $DEST/tex/generic/pstricks"); - # - &xmkdir ("$DEST/tex/latex"); - &SYSTEM ("$MV latex $DEST/tex/latex/pstricks"); -} - -sub MAKEwilson -{ - &setup; - - my $docdir = "$DEST/doc/$whichdocformat/$package"; - &xchdir ($docdir); - - my $mapdir = "$DEST/fonts/map/dvips/$package"; - -d $mapdir || &SYSTEM ("mkdir -p $mapdir"); - &SYSTEM ("$MV *.map $mapdir"); # archaicprw.map - - opendir (DIR, '.') || die "opendir(.) failed: $!"; - @dirnames = grep (!/^\.\.?$/, readdir (DIR)); - closedir (DIR); - - for my $d (@dirnames) { - if ($d =~ /\.zip$/) { - unlink ("$docdir/$d"); - next; - } - - # phaistos and linearA are nothing to do with Wilson's archaic, but - # are separate packages created by AS. - if ($d =~ /^(phaistos|linearA)$/) { - &SYSTEM ("rm -rf $d $docdir/$d"); - next; - } - - my $target = "$docdir/$d"; - next if ! -d $target; # samples/readme files - print "\t PROCESS Wilson subdir $d\n"; - &xchdir ($target); - - if ($d) { - for my $f (glob ("try*"), glob ("*.pdf"), "README") { - my $dest = "$docdir/"; - $dest .= "$d-" if $f !~ /$d/; - $dest .= $f; - &runjob("$MV $f $dest"); - } - } - - &buildfilelist; - # run the .ins files (if any) supplied - $inspatt = $specialins{$package}; - &buildfilelist; - &runins($inspatt || $standardins); - &dodvi; - &domf; - &dodvi; -# rebuild again, as we have .dvi files now - &buildfilelist; - &runfonts; - &dobst; - &dobib; - &dotex; - &domakeindex; - &dosource; - &dotype1; - killfiles($standardclean); - } - killfiles($standardclean); -} - -sub MAKEt2 -{ - &xchdir ($packagedir); - &xmkdir ("$DEST/tex/plain"); - &runjob ("$MV cyrplain $DEST/tex/plain"); - # - &xmkdir ("$DEST/tex/generic/t2"); - &runjob ("$MV cyrfinst $DEST/tex/generic/t2"); - # - &xmkdir ("$DEST/fonts/enc/t2"); - &runjob ("$CP enc-maps/encfiles/* $DEST/fonts/enc/t2"); - # - &xmkdir ("$DEST/doc/generic/t2"); - &runjob ("$MV enc-maps/*.* enc-maps/[MR]* $DEST/doc/generic/t2"); - &runjob ("$MV etc examples $DEST/doc/generic/t2"); - # - &xchdir ("$DEST/doc/generic/t2/etc"); - &xmkdir ("$DEST/tex/latex/t2"); - &runjob ("latex mathtext.ins"); - &runjob ("rm *log; mv *sty $DEST/tex/latex/t2"); - } - -# docs in two languages. The English one is in a separate package, -# mathmode. Just remove it from the copy when building the German one. -# -sub MAKEvossde { - my $docdir = "$DEST/doc/german/$package"; - &SYSTEM("mkdir -p $docdir"); - &SYSTEM("$CP -r $packagedir/* $docdir"); - &SYSTEM("rm -r $docdir/mathmode"); -} - - -# wadalab provides nearly TDS-ready .tar.gz with additional stuff -# -sub MAKEwadalab -{ - print "MAKEwadalab $package - munge tds-ready tarballs\n"; - &setup; - &xchdir ("$DEST/doc/$whichdocformat/$package"); - - # each XX.tar.gz contains a tds-ready tree under XX/texmf: use it - opendir (HERE, ".") || die "opendir(.) failed: $!"; - my @tarfiles = grep /\.tar\.gz$/, readdir HERE; - closedir (HERE); - # - my $destfonts = "$DEST/fonts"; - &SYSTEM ("mkdir -p $destfonts"); - foreach my $tarfile (@tarfiles) { - &SYSTEM ("tar xzf $tarfile && rm $tarfile"); - $tarfile =~ s/\.tar\.gz$//; - &SYSTEM ("cp -r $tarfile/texmf/* $DEST"); - &SYSTEM ("rm -r $tarfile/texmf && rmdir $tarfile"); - } - # - # except the mincho-1-8-* tarball misses the doc/fonts level. - &SYSTEM ("$MV $DEST/doc/wadalab/* $DEST/doc/fonts/wadalab/"); - # - # wadalab has a dir of xdelta from the original fonts. Remove it. - -d "xdelta" && &SYSTEM ("rm -rf xdelta"); - # - # rm unused directories. - &SYSTEM ("rmdir $DEST/*/$whichformat/$package 2>/dev/null"); -} - - -sub MAKEwordcount -{ - &xchdir ($packagedir); - # - print "\t SPECIAL $package: moving wordcount.sh to /tmp\n"; - &SYSTEM('mv wordcount.sh /tmp/'); - # - &xchdir (".."); - &donormal (); - # - print "YOU-MUST-DO! update /tmp/wordcount.sh to source/texk/texlive\n"; -} - -sub MAKEukrhyph { - chdir($packagedir) || die ("ERROR: cannot open directory"); - &runjob("mkdir -p $DEST/tex/generic/ukrhyph"); - &runjob("mkdir -p $DEST/doc/generic/ukrhyph"); - &runjob("$CP README $DEST/doc/generic/ukrhyph"); - &runjob("$CP *.* $DEST/tex/generic/ukrhyph"); - &runjob("$MV $DEST/tex/generic/ukrhyph/*.pdf $DEST/doc/generic/ukrhyph"); - &runjob("rm $DEST/tex/generic/ukrhyph/*.ps"); - } - -# The jadetex distribution is a mess. Last updated in 2003, so no point in -# trying to push changes upstream that I can see, though. -sub MAKEjadetex -{ - # Unpack the tarball. - &SYSTEM ("cd $packagedir && tar xf jadetex*.tar.gz && mv jadetex-*/* ."); - &SYSTEM ("cd $packagedir && (rm -rf jadetex-3* doc/.cvsignore)"); - - # Get rid of the useless doc/ dir. - &MAKEflatten (); - - # Rename resulting jadetex/jadetex dirs to jadetex/base. - &xchdir ($DEST); - for my $dir ("doc", "source", "tex") { - &SYSTEM ("$MV $dir/jadetex/jadetex $dir/jadetex/base"); - } - - # This didn't get flattened since there's a name clash. - &SYSTEM ("$MV doc/jadetex/base/doc/Makefile doc/jadetex/base"); - - # Their pdfjadetex.ini predates pdftexconfig.tex. - my $pdfini = "tex/jadetex/base/pdfjadetex.ini"; - &SYSTEM ("(echo '\\input pdftexconfig.tex'; cat $pdfini) >/tmp/pj$$; - mv /tmp/pj$$ $pdfini"); -} - -sub MAKElfb -{ - # remove pregenerated pk files. - &MAKEflatten (); - print "\t SPECIAL removing lfb PK files\n"; - &SYSTEM("rm *pk"); -} - -sub MAKEliterat { - &xchdir($packagedir); - &runjob("mkdir -p $DEST/fonts/tfm/paragrap/literat"); - &runjob("mkdir -p $DEST/fonts/vf/paragrap/literat"); - &runjob("mkdir -p $DEST/fonts/type1/paragrap/literat"); - &runjob("mkdir -p $DEST/fonts/afm/paragrap/literat"); - &runjob("mkdir -p $DEST/tex/latex/literat"); - &runjob("mkdir -p $DEST/dvips/literat"); - &runjob("mkdir -p $DEST/doc/fonts/literat"); - - &runjob("$CP dvips/* $DEST/dvips/literat"); - &runjob("$CP tex/*tex $DEST/doc/fonts/literat"); - &runjob("$CP psfonts/*pfb $DEST/fonts/type1/paragrap/literat"); - &runjob("$CP psfonts/*inf $DEST/fonts/type1/paragrap/literat"); - &runjob("$CP psfonts/*afm $DEST/fonts/afm/paragrap/literat"); - &runjob("$CP tex/*sty tex/*fd $DEST/tex/latex/literat"); - &runjob("$CP tfm/* $DEST/fonts/tfm/paragrap/literat"); - &runjob("$CP tfm-raw/* $DEST/fonts/tfm/paragrap/literat"); - &runjob("$CP vf/* $DEST/fonts/vf/paragrap/literat"); - &runjob("$CP [A-Z]* insta* license $DEST/doc/fonts/literat"); - } - - -sub MAKExmltex -{ - &xchdir($packagedir); - &runjob("mkdir -p $DEST/tex/xmltex/config"); - &runjob("mkdir -p $DEST/tex/xmltex/base"); - &runjob("mkdir -p $DEST/doc/xmltex/base"); - - &runjob("$CP *.ini $DEST/tex/xmltex/config"); - &runjob("$CP xmltex.tex *xmt xmltex.cfg $DEST/tex/xmltex/base"); - &runjob("$CP manual* *xml test* *txt $DEST/doc/xmltex/base"); - } - -sub MAKEbase { - &SYSTEM("mkdir -p $DEST/tex/latex/base"); - &SYSTEM("mkdir -p $DEST/doc/latex/base"); - &SYSTEM("mkdir -p $DEST/doc/latex/base"); - if (-f "$packagedir/00Contents" ) { unlink "$packagedir/00Contents" ; } - &SYSTEM("$CP -r $packagedir/* $DEST/doc/latex/base"); - chdir($packagedir) || die ("ERROR: cannot open directory"); - $package="base"; - $DEST="$TDS/ltxbase/texmf-dist"; - print "!$whichformat $packagedir ($package) -> $DEST\n"; - &donormal; - } - -sub MAKEfancyvrb { - &setup; - chdir("$DEST/doc/latex/$package"); - print "\t SPECIAL $package: move contrib\n"; - &SYSTEM("$MV contrib/README README.contrib"); - &SYSTEM("$MV contrib/* .; rmdir contrib"); - &buildfilelist; - &donormal("nosetup"); -} - -sub MAKEfeatpost { - &setup; - chdir("$DEST/doc/metapost/$package") - || die "chdir($DEST/doc/metapost/$package) failed: $!"; - print "\t SPECIAL $package, leaving most in doc\n"; - @filenames = glob("macro/*.mp"); - &install("$DEST/metapost/featpost", ".mp"); - &SYSTEM("rm -rf system"); # seeing his texmf.cnf will only confuse people -} - -sub MAKEucs { - &setup; - chdir("$DEST/doc/latex/$package"); - &SYSTEM("$MV data $DEST/tex/latex/ucs"); - &SYSTEM("$MV *def *sty $DEST/tex/latex/ucs"); - &SYSTEM("$MV contrib/* $DEST/tex/latex/ucs"); -} - -sub MAKEtexsis { - &setup; - chdir("$DEST/doc/texsis/$package"); - &SYSTEM("make TXSsite.tex"); - &buildfilelist; - &donormal; - &SYSTEM("rm *.ps"); -} - - -sub MAKEIEEEtran { - print "\t SPECIAL renaming README files, then flatten\n"; - chdir ($packagedir) || die "chdir($packagedir) failed: $!"; - &SYSTEM('for f in *; do test -r $f/README && mv $f/README README.$f; done'); - chdir (".."); - &MAKEflatten; - # let's not worry about the fact that the tex run on testflow fails (it - # wants a paper size); we still get the distributed pdf, which is good enough. -} - -sub MAKEbardiag { - &setup; - chdir("$DEST/doc/latex/$package"); - &SYSTEM("$MV doc/* ."); - &buildfilelist; - &donormal; -} - - -sub MAKEmathpazo { - &setup; - chdir("$DEST/doc/latex/$package"); - &SYSTEM("$MV latex/* type1/* afm/* vf/* tfm/* dvips/* .; rmdir latex type1 afm vf tfm dvips"); - &buildfilelist; - &donormal; -} - -sub MAKEhaprosper { - &setup ("nocopytodoc"); # create dirs but that's all - chdir("$packagedir"); - &SYSTEM("mkdir -p $DEST"); - print "\t SPECIAL copying HA-prosper\n"; - &SYSTEM("$CP -r README Doc/* $DEST/doc/latex/HA-prosper"); - &SYSTEM("$CP -r Run/* $DEST/tex/latex/HA-prosper"); - &SYSTEM("$CP -r Source/* $DEST/source/latex/HA-prosper"); -} - -sub MAKEpclnfss { - chdir("$packagedir"); - &SYSTEM("mkdir -p $DEST/source/fonts/pclnfss"); - &SYSTEM("mkdir -p $DEST/doc/fonts/pclnfss"); - &SYSTEM("$CP -r [A-Z]* $DEST/doc/fonts/pclnfss"); - &SYSTEM("$CP -r fonts $DEST"); - &SYSTEM("$CP -r tex $DEST"); - &SYSTEM("$CP -r src/* tests $DEST/source/fonts/pclnfss"); - -} - -sub MAKEpdf_forms_tutorial -{ - # called for both the en and de versions. both are the same catalogue - # entry, which is rather excruciating for us. - &xchdir ($packagedir); - - my $lang; - my $ll = substr ($package, -2); # en or de - if ($ll eq "en") { - $lang = "english"; - } elsif ($ll eq "de") { - $lang = "german"; - } else { - die "unexpected language code for $package: $ll"; - } - - my $dest_lang = "$DEST/doc/$lang"; - my $dest_pkg = "$dest_lang/pdf-forms-tutorial-$ll"; - &SYSTEM ("mkdir -p $dest_lang"); - &SYSTEM ("$CP -r $ll $dest_pkg"); - &SYSTEM ("$CP README fdl.txt $dest_pkg"); -} - -sub MAKEbeamer { - &xchdir ($packagedir); - my $destdoc = "$DEST/doc/latex/beamer"; - &SYSTEM ("mkdir -p $destdoc"); - &SYSTEM ("$CP -r * $destdoc"); - &xchdir ($destdoc); - - my $desttex = "$DEST/tex/latex/beamer"; - &SYSTEM("mkdir -p $desttex"); - &SYSTEM("$MV base/* themes emulation extensions/multimedia $desttex"); -} - - -# this doesn't work. -sub MAKEbeebe { - &setup; - print "\t SPECIAL moving beebe .bib and .bst\n"; - chdir ("$DEST/doc/latex/$package") || die; - &SYSTEM("mkdir -p $DEST/bibtex/bib/beebe $DEST/bibtex/bst/beebe"); - &SYSTEM("$MV tex*.bib tug*.bib $DEST/bibtex/bib/beebe"); -#xx ugh, they aren't there &SYSTEM("$MV *.bst $DEST/bibtex/bst/beebe"); - &SYSTEM("rm *"); - -} -# pstricks packages usually support both plain and latex. -# -sub MAKEpst -{ - print "\t SPECIAL pst $package starts\n"; - $standardtex = qq{^$package(Obj)?\.(tex|sty)}; # for pst-laboObj.tex - $whichformat='generic'; - $whichdocformat='generic'; - $specialsourcefmt{$package}='generic'; - $specialsource{$package} = "Makefile|$standardsource"; - &setup; - &xchdir("$DEST/doc/$whichdocformat/$package"); - &buildfilelist; - - $inspatt=$standardins if ! $inspatt; - &runins($inspatt); - &buildfilelist; - &dosource; - &dotex; - &dotype1; - killfiles($standardclean); - &killfiles ($moreclean{$package}, "more") if $moreclean{$package}; - &SYSTEM("mkdir -p $DEST/tex/latex/$package"); - &SYSTEM("mv $DEST/tex/generic/$package/*sty $DEST/tex/latex/$package"); - &SYSTEM("mv $DEST/doc/generic/$package/*cfg $DEST/tex/latex/$package"); -} - -sub MAKEpstgeo -{ - print "\t SPECIAL pst-geo $package starts\n"; - $standardtex = qq{^$package(Obj)?\.(tex|sty)}; # for pst-laboObj.tex - $whichformat='generic'; - $whichdocformat='generic'; - $specialsourcefmt{$package}='generic'; - &setup; - &xchdir("$DEST/doc/$whichdocformat/$package"); - -d <*/*/*/*/*/.> && &SYSTEM("$MV -f */*/*/*/* ."); - -d <*/*/*/*/.> && &SYSTEM("$MV -f */*/*/* ."); - -d <*/*/*/.> && &SYSTEM("$MV -f */*/* ."); - -d <*/*/.> && &SYSTEM("$MV -f */*/* ."); - -d <*/.> && &SYSTEM("$MV -f */* ."); - &SYSTEM("find -type d -print | xargs rmdir 2>/dev/null"); - &SYSTEM("find -type f -print >/tmp/find"); - &buildfilelist; - - $inspatt=$standardins if ! $inspatt; - &runins($inspatt); - &buildfilelist; - &dosource; - &dotex; - &dotype1; - killfiles($standardclean); - &SYSTEM("mkdir -p $DEST/tex/latex/$package"); - &SYSTEM("mv $DEST/tex/generic/$package/*sty $DEST/tex/latex/$package"); - &SYSTEM("mv $DEST/doc/generic/$package/*sty $DEST/tex/latex/$package"); - &SYSTEM("mv $DEST/doc/generic/$package/*cfg $DEST/tex/latex/$package"); -} - - -sub MAKEfontinst -{ - &xchdir ($packagedir); - &runjob("mkdir -p $DEST/tex/latex/fontinst"); - &runjob("mkdir -p $DEST/tex/fontinst"); - &runjob("mkdir -p $DEST/source/fontinst"); - &runjob("mkdir -p $DEST/doc/fontinst/base"); - &runjob("$CP -r examples test $DEST/doc/fontinst/base"); - &runjob("$CP -r doc/* README test $DEST/doc/fontinst/base"); - &runjob("$CP -r source $DEST/source/fontinst/base"); - &runjob("$CP -r latex/* $DEST/tex/latex/fontinst"); - &runjob("$CP -r inputs/* $DEST/tex/fontinst"); - print "\t YOU-MUST-DO $package copy fontinst.bat to bin/win32\n"; -} - -sub MAKEpsnfss { - # we use the psnfss.zip from the latex-tds project. - # But we don't want the actual tfm/vf; TL has many more tfm's (in - # different packages), and we don't want to mess with that. So just - # remove the fonts subdir -- except for the map files, which we do want. - # - print "\t SPECIAL $package omit fonts from latex-tds version\n"; - - # Start with the usual straight copy. - &MAKEcopy (); - - # Then remove the entire fonts tree. - &xchdir ("$DEST/fonts"); - &SYSTEM ("rm -rf enc tfm vf"); -} - - -# CJK - -sub I -{ - my ($s, $d) = @_; - &SYSTEM ("$INSTALL $s $DEST/$d"); -} - -sub MAKEcjk_common -{ - print "\t SPECIAL $package wholesale rearranging for cjk\n"; - - &xchdir ($packagedir); - # also need cjk doc tarball. should move in next release. - my $cjkdoc = "/home/ftp/tex-archive/language/chinese/cjk-4.8.1-doc.tar.gz"; - &SYSTEM ("tar -C ?.?.? -xf $cjkdoc --strip-components=1"); - - # remove the version number top-level directory. - &SYSTEM ("$RM *.zip && $MV ?.?.?/* . && rmdir ?.?.?"); -} - -sub MAKEcjk -{ - &MAKEcjk_common (); - #require "/home/karl/c/cjk.pl"; -} - -sub MAKEbin_cjkutils -{ - &MAKEcjk_common (); - #require "/home/karl/c/bin-cjkutils.pl"; -} - -sub MAKEc90 -{ - &MAKEcjk_common (); - #require "/home/karl/c/c90.pl"; -} - -sub MAKEdnp -{ - &MAKEcjk_common (); - #require "/home/karl/c/dnp.pl"; - # have to mv texmf/fonts/sfd to texmf-dist/fonts/sfd/ttf2tpk and rm DNP.sfd -} - -sub MAKEgaruda_c90 -{ - &MAKEcjk_common (); - #require "/home/karl/c/garuda-c90.pl"; - # have to figure out how to get existing garuda/norasi files from - # /home/ftp/tex-archive/language/thai/thailatex/fonts/ -} - -sub MAKEnorasi_c90 -{ - &MAKEcjk_common (); - #require "/home/karl/c/norasi-c90.pl"; -} - -sub MAKEkarlcjk -{ - print "\t SPECIAL $package wholesale rearranging\n"; - # - &setup (); - # - # start by removing the version number top-level directory. - &xchdir ($DOCDIR); - &SYSTEM ("$RM *.zip && $MV 4.8.?/* . && rmdir 4.8.?"); - # - &xchdir ($DEST); - # - # move contrib into source subdir. - &SYSTEM ("$MV $DOCDIR/contrib source/latex/cjk/"); - # - # rename texinput to tex/latex/cjk. - &SYSTEM ("rmdir tex/latex/cjk; $MV $DOCDIR/texinput tex/latex/cjk"); - # - # rename texlive, contains modified KS/HLaTeX .fd files. - my $ksl_dest = "tex/latex/cjk/contrib/hlatex-texlive"; - &xmkdir ($ksl_dest); - &SYSTEM ("$MV $DOCDIR/texlive $ksl_dest"); - # - # move utils into source subdir too, wht we have in - # Build/source/texk/cjkutils is a tiny subset. - &SYSTEM ("$MV $DOCDIR/utils source/latex/cjk/"); - # - # remove the thaifont runtime files which we painfully package separately. - # but leave other thaifont files here, not worth dealing. - &SYSTEM ("rm -rf source/latex/cjk/utils/thaifont/texmf"); - # - # We need the wadalab fd files. - my $wada_dest = "tex/latex/cjk/contrib/wadalab"; - &xmkdir ($wada_dest); - &SYSTEM ("$MV source/latex/cjk/contrib/wadalab/*.fd* $wada_dest/"); -} - -sub MAKEcmlgc -{ - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &SYSTEM("rm -rf vtex"); - &MAKEflatten; -} - -sub MAKEphonetic -{ - &setup; - &xchdir ("$DEST/doc/$whichdocformat/$package"); - - print "\t SPECIAL MAKE$package\n"; - &SYSTEM ("$MV Doc/2e/* ."); - - # do the usual. - &buildfilelist; - &donormal ("nosetup"); -} - -sub MAKEpict2e -{ - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &setup; - chdir("$DEST/doc/$whichdocformat/$package"); - &buildfilelist; -# run the .ins files (if any) supplied - $inspatt = $specialins{$package} || $standardins; - $Foundry = $specialfoundry{$package} || $standardfoundry; - &runins($inspatt); -# rebuild the list of files in the directory - &SYSTEM("$MV pict2e-example.cfg pict2e.cfg"); - &buildfilelist; - &dodvi; -# rebuild again, as we have .dvi files now - &buildfilelist; - &dotex; - &dosource; - &SYSTEM("rmdir $DEST/tex/$whichformat/$package 2> /dev/null"); - &SYSTEM("rmdir $DEST/source/$whichformat/$package 2> /dev/null"); - &SYSTEM("rmdir $DEST/doc/$whichdocformat/$package 2> /dev/null"); - killfiles($standardclean); -} - - -sub MAKEpictex -{ - &setup; - chdir ($DOCDIR) || die "chdir($DOCDIR) failed: $!"; - &SYSTEM("rm -rf mathspic"); # separate package - &SYSTEM("$MV addon/* .; rmdir addon"); - &donormal; -} - - - -sub PREHOOK_cm_super -{ - print "PREHOOK_$package - remove dvipdfm map files\n"; - # We generate our own dvipdfm (not to mention pdftex) map files. - &SYSTEM ("$RM -rf dvipdfm"); -} - -sub PREHOOK_ibygrk -{ - print "PREHOOK_$package - handle ibycus4.map\n"; - # ibygrk has two instances of the same file ibycus4.map; it is - # both tex source and mf source. the usual method cannot deal, of course. - &SYSTEM ("$MV fonts/source/public/ibycus4/ibycus4.map ."); - &SYSTEM ("$RM tex/generic/ibycus4/ibycus4.map"); -} - -sub PREHOOK_wsuipa -{ - print "PREHOOK_$package - rearrange directories, except for doc\n"; - # we can't use flatten because we want to preserve the subdirs inside doc. - # annoyingly, the same filenames are repeated. - &SYSTEM ("$MV changes/* doc/* macros/* mf/* pk/* tfm/* ."); -} - - - -sub POSTcontext_lilypond { - print "POST$package - creating package-level sunbdirectories\n"; - mkdir ("$DEST/doc/context/third/lilypond"); - &SYSTEM ("$MV $DEST/doc/context/third/t-lilypond.pdf " - . "$DEST/doc/context/third/lilypond"); - mkdir ("$DEST/tex/context/third/lilypond"); - &SYSTEM ("$MV $DEST/tex/context/third/t-lilypond.tex " - . "$DEST/tex/context/third/lilypond"); -} - -sub POSTelsarticle -{ - print "POST$package - move contrib and src/* to source\n"; - &xchdir ("$DEST/doc/$whichdocformat/$package"); - warn `pwd`; - warn `vdir`; - my $dest = "$DEST/source/latex/$package"; - &xmkdir ($dest); - # we don't need two copies of that file - &SYSTEM ("rm contrib/elsdoc.pdf"); - &SYSTEM ("mv contrib $dest"); - &SYSTEM ("mv src/* $dest"); - &SYSTEM ("mv elsdoc.tex $dest"); - &SYSTEM ("rmdir src"); -} - -sub POSTfpl -{ - print "POST$package - rename README.source\n"; - &SYSTEM ("$MV README.source $DEST/source/fonts/fpl/README"); -} - -sub POSTglossaries -{ - print "POST$package - move .bat\n"; - my $wdir = "$TOPDEST/bin/win32"; - &SYSTEM ("mkdir -p $wdir"); - &SYSTEM ("$CP $DEST/scripts/glossaries/makeglossaries.bat $wdir/"); -} - -sub POSTibygrk -{ - print "POST$package - second copy of ibycus4.map\n"; - # after the ibygrk structure has been set up, copy ibycus4.map to the - # tex dir. - &SYSTEM ("cd $DEST && $CP fonts/source/public/ibygrk/ibycus4.map " - . "tex/generic/ibygrk/ibycus4.map"); -} - -sub POSTimpatient -{ - print "POST$package - remove fr subdirectory\n"; - &SYSTEM ("$RM -r fr"); -} - -sub POSTinteractiveworkbook -{ - print "POST$package - mv .sty directory\n"; - my $dest = "$DEST/tex/latex/$package"; - &SYSTEM ("mkdir -p $dest"); - &SYSTEM ("$MV interactiveworkbook.sty/* $dest/"); - &SYSTEM ("rmdir interactiveworkbook.sty"); -} - -sub POSTknuth -{ - print "POST$package - rearranging for texmf-doc\n"; - &xchdir ("$DEST/doc"); - &xmkdir ("english"); - &SYSTEM ("$MV knuth english"); - &SYSTEM ("$MV ../source/knuth english/knuth/source"); - &xchdir ("english/knuth"); - # - # remove nonfree. - &SYSTEM ("$RM tex/texbook.tex mf/mfbook.tex"); - # - # remove sources that are in build tree. - &xchdir ("source"); - &SYSTEM ("rm -rf etc mf mfware tex/tex.web tex/trip* texware web/*.web"); -} - -sub POSTkoma -{ - print "POST$package - removing symlinks\n"; - &SYSTEM ("find $DEST -type l | xargs --no-run-if-empty rm"); -} - -sub POSTlatex2html -{ - print "POST$package - moving $package.perl to doc\n"; - my $dest = "$DEST/doc/latex/$package"; - &SYSTEM ("mkdir -p $dest"); - &SYSTEM ("$MV $DEST/scripts/latex2html/styles/$package.perl $dest"); -} - -sub POSTlatex2man -{ - print "POST$package\n"; - &SYSTEM ("$MV $package.info /tmp"); - print "YOU-MUST-DO! update /tmp/$package.info into texmf/doc/info\n"; -} - -sub POSTlibertine -{ - print "POST$package - remove duplicates, nosource docs"; - # has to be a post routine instead of moreclean because we have to - # remove a file in a non-doc directory. - # - # no source for doku.pdf. - &SYSTEM ("$RM doc/fonts/libertine/libertinedoku.pdf"); - # - # these files are in babel and/or ibyhyph. - &SYSTEM ("$RM -rf tex/latex/libertine/babel"); -} - -sub POSTlithuanian -{ - print "\t SPECIAL $package remove old language support\n"; - # - # these files are no longer used in TL. - &SYSTEM ("$RM language.lt.dat $DEST/tex/latex/lithuanian/language.lt.def"); -} - -sub POSTpgf -{ - print "POST$package - mv generic+latex directories\n"; - &SYSTEM ("cd $DEST && mkdir tex && mv context generic latex plain tex"); -} - -sub POSTpstcox -{ - print "POST$package - mv latex .sty, doc Gallery\n"; - &SYSTEM ("mkdir -p $DEST/tex/latex/$package"); - &SYSTEM ("mv -v $DEST/doc/generic/$package/*sty $DEST/tex/latex/$package"); - &xchdir ("$DEST/doc/generic/$package"); - &SYSTEM ("mkdir pst-coxeterp/"); - # oops, depends on find order - &SYSTEM ("mv -v Gallery.tex pst-coxeterp?* pst-coxeterp/"); - &SYSTEM ("mv -v doc/pst-coxcoor/ pst-coxcoor"); - &SYSTEM ("mv -v pst-coxcoor?* pst-coxcoor"); -} - -sub POSTxecjk -{ - print "POST$package - capitalization, moving non-TDS\n"; - - &xmkdir ("$DEST/source/xelatex"); - &SYSTEM ("$MV $DEST/utils/xeCJK $DEST/source/xelatex/xecjk"); - - &SYSTEM ("$MV $DEST/tex/xelatex/xeCJK $DEST/tex/xelatex/xecjk"); - &SYSTEM ("$MV $DEST/doc/xelatex/xeCJK $DEST/doc/xelatex/xecjk"); - - # the one in MAKEcopy doesn't get it because .../xecjk doesn't exist - # yet. Not worth a prehook, author should fix. - &SYSTEM ("$MV $DEST/README $DEST/doc/xelatex/xecjk/README"); -} - -sub POSTxecyr -{ - print "POST$package - handling bat, moving language.dat.add from runtime\n"; - &SYSTEM ("$MV $DEST/tex/generic/xecyr/language.dat.add" - . " $DEST/doc/xelatex/xecyr"); - - my $wdir = "$TOPDEST/bin/win32"; - &xmkdir ($wdir); - &SYSTEM ("$MV $DEST/bin/xecyr/*.bat $wdir/"); -} - -sub POSTxetex_pstricks -{ - print "POST$package - need tex/ level\n"; - &xchdir ($DEST); - &xmkdir ("tex", "doc/generic/$package"); - &SYSTEM ("$MV README doc/generic/$package"); - &SYSTEM ("$MV generic xelatex xetex tex"); -} - -sub POSTxstring -{ - print "POST$package - xstring.sty under latex\n"; - &xchdir ($DEST); - &xmkdir ("tex/latex/$package"); - &SYSTEM ("$MV tex/$whichformat/$package/xstring.sty tex/latex/$package/"); -} - - -# Allow overrides. In particular, CTAN can change some hashes to make -# packages with licenses that TL doesn't allow. -# -# Put the config file "ctan2tds-config.pl" in the dir from which you -# run this script, or better, set the environment variable "CTAN2TDS_CONFIG". -# -sub readconfig -{ - my ($base,$dir,$ext) = fileparse ($0,'\.pl'); - - my $configFileName = "$dir/$base-config.pl"; - $configFileName = $ENV{"CTAN2TDS_CONFIG"} || $configFileName; - - my $result; - if (-f $configFileName) { - my $err = "Error: CTAN config file $configFileName"; - $result = eval `cat $configFileName`; # like require, but no look in INC - die "$err; evaluation in file failed: $@" - if $@; - die "$err; yielded result that is false" - unless $result; - } else { - $result=1; - } - return $result; -} - -# vim: set tabstop=8 shiftwidth=2 expandtab: diff --git a/Master/tlpkg/bin/ctan2tl b/Master/tlpkg/bin/ctan2tl index fec77eac587..c5ccd3046e1 100755 --- a/Master/tlpkg/bin/ctan2tl +++ b/Master/tlpkg/bin/ctan2tl @@ -7,8 +7,9 @@ unset CDPATH # avoid extraneous output LC_ALL=C; export LC_ALL # avoid problems with diff, comm, etc -mydir=`cd \`dirname $0\` && pwd` # Master/tlpkg/bin -PATH=$mydir:$PATH # we call lots of our other tools +mydir=`cd \`dirname $0\` && pwd` # Master/tlpkg/bin +libexec=`cd $mydir/../libexec && pwd` # Master/tlpkg/libexec +PATH=$mydir:$libexec:$PATH # we call lots of our other tools Build=`cd $mydir/../../../Build && pwd` raw=$Build/tmp.raw diff --git a/Master/tlpkg/bin/place b/Master/tlpkg/bin/place deleted file mode 100755 index b977cf6b914..00000000000 --- a/Master/tlpkg/bin/place +++ /dev/null @@ -1,301 +0,0 @@ -#!/usr/bin/env perl -# $Id$ -# Public domain. Originally written by Sebastian Rahtz. -# -# Process a "cooked" tree directory (probably created by ctan2tds in -# Build/tmp.cooked), and integrate into the main texmf trees. -# -# Basic usage: place PKG -# to process ./PKG. Best invoked from ctan2tl, not directly. - -BEGIN { - chomp ($mydir = `dirname $0`); # we are in Master/tlpkg/bin - unshift (@INC, "$mydir/.."); -} - -use File::Basename; -use File::Find; -use Cwd; -use TeXLive::TLConfig qw/$InfraLocation $DatabaseName/; -use TeXLive::TLPSRC; -use TeXLive::TLPOBJ; -use TeXLive::TLPDB; -use TeXLive::TLTREE; - -if ($ARGV[0] eq "-n") { - $chicken = 1; - shift; -} else { - $chicken = 0; -} -print "place: chicken mode = $chicken\n"; - -die "usage: $0 PKGNAME\n" unless @ARGV == 1; -$package = $ARGV[0]; - -$newpackage = 0; -%dirs = (); # dirs we make changes in -$TMP = $ENV{"TMPDIR"} || "/tmp"; -$tmpfile = "$TMP/$>.tlplace"; # use effective uid in temp file names - -$cooked = getcwd(); # ctan2tl invokes us in the cooked dire --d "$cooked/$package" || die "$0: No such package in $cooked: $package\n"; - -&xchdir ("$mydir/../.."); -$M = getcwd(); - -xchdir ("$cooked/$package"); -if (-d "texmf-dist") {$Root="texmf-dist"; } -elsif (-d "texmf-doc") {$Root="texmf-doc"; } -elsif (-d "texmf") {$Root="texmf"; } -else { die ("no top level texmf in " . `pwd`); } - -if ($Root eq 'texmf-doc') { - $Type = 'Documentation'; -} elsif ($Root eq 'texmf-dist') { - $Type = 'Package'; -} elsif ($Root eq 'texmf') { - # can't handle binary stuff yet, but can do some hyphenations. - $Type = 'TLCore'; -} else { - die "cannot handle Root=$Root"; -} - -die "top-level README in $Root, that can't be right" if -e "$Root/README"; - -# initialize TLPDB -my $tlpdb = new TeXLive::TLPDB ('root' => $M); -# create TLTREE from stuff in cooked/$pkg -my $tltree = TeXLive::TLTREE->new ('svnroot' => "$cooked/$package"); -$tltree->init_from_files; - -# get package from TLPDB; -my $tlpold = $tlpdb->get_package ($package); -if (defined($tlpold)) { - foreach ($tlpold->all_files) { - $Old{$_} = 1; - } -} else { - $newpackage = 1; -} - -# create new tlpsrc and tlpobj -my $tlpsrc = TeXLive::TLPSRC; -my $tlpsrcfile = "$M/tlpkg/tlpsrc/$package.tlpsrc"; -if (! -r $tlpsrcfile) { - $tlpsrc->name($package); - $tlpsrc->category($Type); - if (!$chicken) { - local *TLPSRC; - $TLPSRC = ">$tlpsrcfile"; - open (TLPSRC) || die "open($TLPSRC) failed: $!"; - $tlpsrc->writeout(\*TLPSRC); - close TLPSRC; - } -} else { - $tlpsrc->from_file($tlpsrcfile); -} - -# make the new tlpobj. -my $tlpnew = $tlpsrc->make_tlpobj($tltree, $M); - -# we took over the comparison of files from the ctan2tl script since -# we are here in perl world, which makes it easier ... -print "\n\f "; -if (!defined($tlpold)) { - print "place: $package not present in $M/$InfraLocation/$DatabaseName\n\n"; -} else { - print "new vs. present $package (present is indented)\n"; - my @oldfiles = $tlpold->all_files; - `rm -f $tmpfile.old`; - foreach (sort @oldfiles) { - `echo $_ >>$tmpfile.old`; - } - my @newfiles = $tlpnew->all_files; - `rm -f $tmpfile.new`; - foreach (sort @newfiles) { - `echo $_ >>$tmpfile.new`; - } - print `comm -3 $tmpfile.new $tmpfile.old`; - my @difffiles = `comm -12 $tmpfile.new $tmpfile.old`; - chomp (@difffiles); - my $sum = 0; - my $identical = 0; - # - my $diff_file = "$tmpfile.diff"; - unlink ($diff_file); - my $diff_cmd = "diff --text --strip-trailing-cr --ignore-all-space -U 0 -s"; - # - for my $f (@difffiles) { - my $master_file = "$M/$f"; - my $cooked_file = "$cooked/$package/$f"; - # diff has no options for handling Mac line endings; the above - # don't suffice. So use our own script for the initial comparison. - if (system ("cmp-textfiles '$master_file' '$cooked_file'") == 0) { - $identical++; - } else { - my @diff_out = `$diff_cmd $master_file $cooked_file | tee -a $diff_file`; - $sum += $#diff_out - 2; # zero-based, so first line doesn't count. - # subtract another two lines for the heading - # and at least one hunk marker. - } - } - my $nrcommfiles = @difffiles; - # - my $changed = $nrcommfiles - $identical; - print "$nrcommfiles common files, $changed changed, ~$sum lines different ($diff_file)\n\n\f\n"; - #`rm -f $tmpfile.*` -} - -&xchdir ("$cooked/$package"); - -print "place: checking for case-insensitive clashes\n"; -print `find . '(' -name .svn ')' -prune -o -print | sort | uniq -i -d`; -print "\n"; - -find (\&files, "."); -foreach $file (sort keys %Old) { - my $status = $New{$file} ? "retained" : "removed"; - print "* $file\t[$status]\n"; - - # if the old file does not exist, don't try to remove it -- we - # probably did so by hand and didn't bother to update. - next unless -e "$M/$file"; - - # remove old files. - if (! $New{$file}) { - &xsystem ("svn remove $M/$file"); - } - - my $dname = dirname ("$M/$file"); - $dirs{$dname}++; -} - -# copy files -my $job = "tar cf - . | (cd $M && tar xf - )"; -&xsystem ($job); - -# sort so dirs will be added before subdirs. -foreach $file (sort keys %New) { - if (! $Old{$file}) { - &add_file ("$M/$file"); - } -} - -&xchdir ($cooked); -&xsystem ("mv $package $package.done"); - - -if ($newpackage) { - &add_file ("$M/tlpkg/tlpsrc/$package.tlpsrc"); -} - -# this file will often change, so be sure and include it. -$dirs{"$M/tlpkg/tlpsrc/$package.tlpsrc"}++; - -# print dirs with changed files, for svn commit purposes. -# if other files have been modified in those same dirs, though, this -# won't detect it. It would be better to list exactly the *files* which -# should be committed, but ... lazy. -# -# also write dir list to a separate file, for easy passing to a commit. -# -my $dirlist_file = "$tmpfile.dirs"; -$DIRLIST = ">$dirlist_file"; -open (DIRLIST) || die "open($DIRLIST) failed: $!"; -# -print "place: directories are:\n"; -for my $dir (sort keys %dirs) { - print "$dir\n"; - print DIRLIST "$dir\n"; -} -# -close (DIRLIST) || warn "close($DIRLIST) failed: $!"; - -# Always run svn update, even without --place. This will let a user -# detect that a particular package update has already been done by -# someone else. -print ("\nsvn update of those directories:\n"); -system ("svn update `cat $dirlist_file`"); - -exit (0); - - - -#-------------------------------------- -sub dirs -{ - local @filenames; - if (-d) { - @filenames=&buildfilelist($File::Find::name); - if (!@filenames) { rmdir $File::Find::name;} - }} - -sub buildfilelist -{ - my($me) = @_; - my @files; - opendir(DIR,$me) || cleanup ("cannot open directory $me"); - @files =grep(!/^\.\.?/,readdir(DIR)); - closedir(DIR); - return @files; -} - - -sub files -{ - if (-f || -l) { # consider files or symlinks - $This = $File::Find::name; - $This =~ s/^\.\///; - $New{$This} = 1; - } -} - - -# add a file to the repository. for svn, we also have to add the -# containing dir, and the parent of that dir, if they are new. -# (Should really just traverse ) -# -sub add_file -{ - my ($newfile) = @_; - - # when it's needed, (grand)parents must come first, else have svn "not - # working copy". - my $newdir = $dir = dirname ($newfile); - my $needed_dirs = ""; - until (-d "$dir/.svn") { - $needed_dirs = "$dir $needed_dirs"; # parents first - $dirs{$dir}++; - $dir = dirname ($dir); - } - &xsystem ("svn add -N $needed_dirs") if $needed_dirs; - - &xsystem ("svn add $newfile"); - - # remember that we changed this directory. - $dirs{$newdir}++; -} - - -sub xchdir -{ - my ($dir) = @_; - chomp (my $pwd = `pwd`); - chdir ($dir) || die "chdir($dir) failed: $!\n(cwd=$pwd)"; - print "place: chdir($dir)\n"; -} - - -sub xsystem -{ - my ($cmd) = @_; - - print "place: SYSTEM $cmd\n"; - - unless ($chicken) { - my $ret = system ($cmd); - $ret /= 256; - die "`$cmd' failed, status=$ret, goodbye\n" if $ret != 0; - } -} |