summaryrefslogtreecommitdiff
path: root/Build/tools
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-11-17 00:37:37 +0000
committerKarl Berry <karl@freefriends.org>2007-11-17 00:37:37 +0000
commit88f1c8ae3f0fbefc9e6f8ecc22ae865b79cc75d5 (patch)
treed84f6e8f9494ebd1a7bb17a6f78a904eabb300f4 /Build/tools
parent592684346d4d6d8f019e49fe72ae3fa9c88a85da (diff)
now in tlpkg/bin
git-svn-id: svn://tug.org/texlive/trunk@5474 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/tools')
-rwxr-xr-xBuild/tools/tpm-ctan-check376
1 files changed, 0 insertions, 376 deletions
diff --git a/Build/tools/tpm-ctan-check b/Build/tools/tpm-ctan-check
deleted file mode 100755
index 23a96a181c7..00000000000
--- a/Build/tools/tpm-ctan-check
+++ /dev/null
@@ -1,376 +0,0 @@
-#!/usr/bin/env perl
-# $Id$
-# Public domain. Originally written 2005, Karl Berry.
-# Check if a package in TL has any changes on CTAN. Just the beginnings.
-
-use File::Basename;
-
-# euenc
-my @WorkingTPM = qw(
- 12many
- a0poster aastex abbr abc abstract abstyles accfonts achemso
- acmtrans acronym
- active-conf addlines adrconv ae aguplus algorithm2e
- algorithmicx algorithms
- alnumsec altfont ametsoc ams amsaddr amsldoc-it amsrefs
- amsthdoc-it animate ANUfinalexam anyfontsize apacite appendix apl
- arabi arabtex arabxetex archaic arcs arev
- armenian arrayjob arydshln Asana-Math ascii assignment astro
- attachfile aurical authorindex auto-pst-pdf automata
- babelbib barcodes bbold
- beamer beamer-contrib beamer-tut-pt begriff bera betababel
- bezos bghyphen bibhtml bibleref bibtopic bibunits bigfoot
- binomexp bitfield blacklettert1 blindtext blockdraw_mp boldtensors
- bookest booklet bophook
- boxhandler breakurl bullcntr bussproofs bytefield
- captcont caption carlisle carolmin-ps
- cbcoptic ccaption cclicenses cdpbundl cellspace
- changebar changes chappg chem-journal chemcompounds chemscheme
- chemstyle cherokee circ
- citeref cjhebrew classicthesis
- clefval cleveref
- clock clrscode cmap cmastro cmdstring cmdtrack cmll colorinfo
- colortbl colorwav commath compactbib complexity comprehensive
- computational-complexity confproc
- cooking cool coollist coolstr cooltooltips
- coordsys courier-scaled courseoutline coursepaper coverpage
- crop crossreference csquotes csvtools ctable
- cursolatex cursor cuisine
- currvita curve curve2e curves
- custom-bib cweb-latex cyrillic
- dancers dashbox datatool
- dateiliste datetime dcpic decimal delimtxt digiconfigs
- dinat dingbat directory disser dk-bib dlfltxb doi doipubmed dottex
- doublestroke dpfloat
- draftwatermark dramatist dtxgallery
- dtxtut dvdcoll dvipsconfig dyntree
- easy ebong ebsthesis eCards ecc economic
- ecv edmac ednotes eemeir egameps
- egplot eijkhout elatex
- ellipsis elpres elsevier elsevier-bib emulateapj endfloat endheads
- engrec enumitem envbig environ epigrafica epiolmec eplain epsdice
- epsf epslatex-fr epspdfconversion eqlist eqparbox errata es-tex-faq
- ESIEEcv esint esint-type1 eskd eskdx eso-pic etaremune
- ethiop ethiop-t1 etoolbox
- eulervm euproposal euro europecv eurosans everypage exam
- examdesign examplep exercise expl3 expressg extarrows exteps
- extpfeil extract extsizes
- faktor fancybox fancyhdr fancynum fancyref fancytooltips fax featpost
- fge filecontents fink fixme
- flagderiv flippdf float floatflt floatrow flowfram fltpoint
- fmtcount fnbreak
- fncychap foekfont fontch fontspec footbib forloop formular
- fourier fouriernc
- fp fpl frankenstein free-math-font-survey
- frenchle fribrief frletter fullpict functan
- galois gastex gatech-thesis gcard gcite
- genmisc genmpage germbib ginpenc
- glossaries gmdoc gmeometric
- gmiflink gmutils gmverb gnuplottex gost graphics
- graphicx-psmin greenpoint
- grnumalt gu GuIT
- HA-prosper hands harmony hepthesis hepunits hhtensor histogr hitec
- hrlatex hvfloat
- hyperref hyperxmp hyphen-base hyphen-basque
- hyphen-french hyphen-german
- hyphen-greek hyphen-italian hyphen-latin hyphen-mongolian
- hyphen-norwegian hyphen-ukenglish
- hyphen-usorbian hyplain
- ibygrk icsv IEEEconf IEEEtran ifxetex ijmart ijqc image-gallery
- inlinebib interactiveworkbook inversepath invoice
- iopart-num isodoc isorot isotope itnumpar iwona
- japanese jeopardy jknapltx jneurosci jpsj jurabib juramisc
- kalender kerkis kerntest keystroke koma-script kpfonts
- l2picfaq l2tabu-english labelcas labels latex latex-tds latexmp
- layouts lcd lcg leading leaflet ledmac leftidx lewis lfb lgreek lh
- libertine limap linearA lineno lipsum listings listliketab lkproof lm
- logpap lps lsc lshort-bulgarian lshort-dutch lshort-english
- lshort-finnish lshort-french lshort-german lshort-italian
- lshort-japanese lshort-korean lshort-mongolian
- lshort-polish lshort-portuguese lshort-slovak
- lshort-spanish lshort-thai lshort-turkish lshort-ukr
- lshort-vietnamese ltablex ltabptch ltxindex ltxmisc
- mafr magyar mailing makebox makecell makecirc makeglos
- makeplot maple marginnote marvosym mathdots mathexam
- mathmode maybemath
- mcaption mceinleger mdwtools memoir MemoirChapStyles mentis
- menu metaobj metaplot metatex metauml mff mfpic mftinc mhchem
- mhs microtype minipage-marginpar minitoc minutes mkpattern
- mla-paper mlist mnsymbol
- moderncv mongolian-babel moreverb movie15 ms msg multicap
- munich muthesis mwcls mwrite
- nag namespc natbib nath nature ncclatex ncctools newlfm nih noitcrul
- nomencl nomentbl notes2bib
- ntgclass ntheorem-vn numline numname numprint
- oberdiek ocr-latex octavo ofs ogham oldstyle onlyamsmath opcit
- ordinalpt osa
- papercdcase papertex parallel paresse parrun pauldoc
- pdf-forms-tutorial-de pdf-forms-tutorial-en pdf-trans pdfcprot
- pdfpages pdfscreen pdfsync pdftex-def perception perltex permute
- pgf phaistos philosophersimprint
- pict2e pictex pictex2 pittetd placeins plari plates play
- poemscol polynom polynomial polytable powerdot ppr-prv
- pracjourn preprint
- prettyref preview probsoln procIAGssymp program protocol pseudocode
- psfrag psfrag-italian psnfss pspicture
- pst-2dplot pst-3d pst-3dplot pst-bar
- pst-barcode pst-blur pst-circ pst-dbicons pst-diffraction
- pst-eps pst-eucl pst-fill
- pst-fr3d pst-fractal pst-func
- pst-geo pst-grad pst-infixplot pst-labo
- pst-lens pst-math pst-ob3d pst-optexp pst-optic
- pst-osci pst-pdf pst-pdgr pst-qtree pst-soroban pst-spectra
- pst-slpe pst-uml pst-vue3d
- pstricks pstricks-add
- qcm qstest qtree
- randbild rccol rcs rcsinfo
- refstyle regcount register resume robustcommand
- robustindex rsc rtkinenc rtklage
- sae sauerj sauterfonts savefnmark savesym savetrees scale
- scalebar schedule scientificpaper sciposter screenplay script
- sdrt sectionbox sectsty semantic semaphor seminar semioneside
- seqsplit setspace sf298 sffms sfg sfmath sgame shadbox shapepar
- shorttoc showdim showexpl showlabels sidecap sides siggraph
- simplecv
- SIstyle SIunits skaknew slideshow smalltableof smartref
- snapshot songbook sort-by-letters soul sparklines spie
- splines splitbib splitindex spotcolor sprite srcltx sseq
- ssqquote stack stage stdclsdv stdpage stellenbosch struktex
- sttools subdepth subeqn subeqnarray
- subfig subfigure subfloat substr sudoku
- sudokubundle sugconf supertabular svgcolor svn svn-multi svninfo
- swebib syntax synproof syntrace synttree
- t-angles Tabbing tableaux tabulary tabvar talk tamethebeast
- templates-fenn templates-sommer tengwarscript
- tensor teubner tex-gyre texilikecover texmate
- texpower texshade
- textcase textfit textopo textpath textpos thesis-titlepage-fhac
- thumb thumbpdf ticket titlefoot titlesec titling tocbibind
- tocloft todo tokenizer toolbox tools toptesi totpages tracking
- trajan trfsigns trivfloat
- trsym tugboat tugboat-plain turnstile twoup Type1fonts
- typedref typogrid
- ucthesis uhrzeit uiucthesis ulsy umich-thesis uml umlaute
- umthesis underlin undertilde units unitsdef unroman
- upmethodology upquote ushort
- vancouver variations varindex vector velthuis verse versions
- vhistory visualfaq vmargin vntex volumes vpe
- wallpaper warning warpcol williams wordcount wordlike wrapfig
- xargs xbase xcolor xdoc xetexref xfor xfrac xgreek xifthen
- xkeyval xltxtra xnewcommand xoptarg
- xq xtab xtcapts xunicode xyling xypic-tut-pt xytree
- york-thesis
- );
-#abstyles not updated but too old to matter
-#amscls amsltx2 amsmath - AMS packages come from tds zips, all very weird
-#beebe needs more work
-#euenc - xetex people don't keep ctan up to date
-#logic/gn-logic14 conflicts with logic font
-#lshort-russian # only zip files on CTAN
-#malayalam # missing C sources on CTAN wrote author 5jun05.
-#mathspic # inside pictex later
-#mpattern # not up-to-date on CTAN wrote author 28may05.
-#plnfss # only a zip file on CTAN
-#slidenotes # non-free: ALl rights reserved, nothing else!
-#shortlst # works, but license: no profit! needs catalogue update
-#sae # works, no profit license!
-#xltxtra - xetex people don't keep ctan up to date
-
-chomp (my $mydir = `dirname $0`);
-chomp ($mydir = `cd $mydir && pwd`);
-chomp ($TL = `cd $mydir/../../Master && pwd`);
-chdir ($TL) || die "chdir($TL) failed: $!";
-
-exit (&main ());
-
-sub main
-{
- $OPT{"verbose"} = 1;
-
- if ($ARGV[0] eq "--list-not-treated-tpm") {
- @AllTPM = glob("{texmf-dist,texmf-doc,texmf}/tpm/*.tpm");
- my @nottreatedtpm=();
- foreach (@AllTPM) {
- my $b = basename($_,".tpm");
- my @foo = grep(/^$b$/, @WorkingTPM);
- if ($#foo < 0) { push @nottreatedtpm, $_ ; }
- }
- print "List of tpms which are not in ctan-tpm-check:\n";
- foreach (@nottreatedtpm) {
- print "$_\n";
- }
- exit 0;
- }
- # xx read FILES.last7days, determine CTAN changes, map to TL packages
- # xx alternatively, check all tpm's
- if ($ARGV[0] eq "--check") {
- $OPT{"verbose"} = 0;
-
- # xx but for now, just check the few packages we have worked with.
- # xx don't check babel, heiko patched it.
- @ARGV = @WorkingTPM;
- }
-
- my $errcount = 0;
- for my $tpm (@ARGV) {
-
- # look in our various hierarchies.
- my $found = "";
- for my $dir ("texmf-dist", "texmf-doc", "texmf") {
- my $try = "$dir/tpm/$tpm.tpm";
- if (-r $try) {
- $found = $try;
- last;
- }
- }
-
- if ($found) {
- print "checking $tpm..." if $OPT{"verbose"};
- $errcount += &do_tpm ($found);
- } else {
- warn "$0: cannot find tpm file $tpm\n";
- $errcount++;
- }
- }
- return $errcount;
-}
-
-
-
-# Return 1 if TPM needs updating, 0 if ok.
-#
-sub do_tpm
-{
- my ($tpm) = @_;
- my $needed = 0;
-
- my %tpm = &read_tpm ($tpm);
- return 1 unless keys %tpm;
- my @tpm_files = @{$tpm{"files"}};
-
- my @compared = ();
- for my $file (@tpm_files) {
-#warn "checking file $file\n";
- my $tl_file = "$TL/$file";
- if (! -e $tl_file) {
- warn "$tl_file: TL file missing\n";
- next;
- }
-
- (my $basefile = $file) =~ s,^.*/,,;
- chomp (my @ctan_files = `find $tpm{CTANdir}/ -name $basefile`);
-#warn "ctan find $basefile: @ctan_files\n";
- # the trailing / is so if we happen to hit a symlink on CTAN, it'll
- # go through.
- next if @ctan_files > 1; # if more than one file by same name, skip
-
- my $ctan_file = $ctan_files[0];
-#warn "ctan file is $ctan_file\n";
- if (! -e $ctan_file) {
- # maybe it'll be there with a case change in the name
- chomp (@ctan_files = `find $tpm{CTANdir}/ -iname $basefile`);
- next if @ctan_files > 1; # if more than one file by same name, skip
- $ctan_file = $ctan_files[0];
-
- if (! -e $ctan_file) {
- # we generate lots of files, eg perlmacros.sty, so might skip.
- warn "$ctan_file: CTAN file missing\n"
- if $ctan_file && $ctan_file !~ /(cfg|dvi|sty|tex)$/;
- next;
- }
- }
-
- push (@compared, $basefile);
- if (&files_differ ($tl_file, $ctan_file)) {
- # we sometimes regenerate pdf's for TL, so we don't complain if
- # they are different. On the other hand, we don't always
- # regenerate them, so might as well check first.
- next if $tl_file =~ /\.pdf$/;
-
- print "# $tpm\ndiff $ctan_file $tl_file\n";
- $needed = 1;
- last;
- }
- }
-
- # xx check ctan dir for new files
-
- if (@compared == 0) {
- warn "\n$tpm: no files to compare in $tpm{CTANdir}, fixme!\n";
- warn "(tpm_files = @tpm_files)\n";
- } elsif ($needed == 0) {
- print "ok, " . (@compared + 0) . " compared (@compared)\n"
- if $OPT{"verbose"};
- }
-
- return $needed;
-}
-
-
-
-# Return useful information from a TPM.
-#
-sub read_tpm
-{
- my ($tpm) = @_;
- my %ret;
-
- local *TPM;
- open (TPM, $tpm) || die "open($tpm) failed: $!\n";
-
- my @files = ();
- while (<TPM>) {
- if (m!</TPM:.*Files!) { # might be on same line
- $collecting = 0;
- } elsif (/<TPM:.*Files/) {
- $collecting = 1;
- next;
- }
- if ($collecting) {
- chomp;
- next if m,plain/tugboat,; # have to rely on latex tugboat,
- # plain tugboat README conflicts
- next if m,active-header-2006.tex,; # ctan example conflicts with
- # dtx-generated file
- push (@files, $_) if $_ !~ /\.tpm$/;
- }
- }
- close (TPM) || warn "close($tpm) failed: $!\n";
-
- warn "$tpm: no files found\n" if ! @files; # probably misparsed the tpm
- $ret{"files"} = \@files;
-
- (my $me = $tpm) =~ s,.*/,,;
- $me =~ s/\.tpm$//;
- chomp (my $ctan_dir = `$mydir/tlpkginfo --ctan-dir '$me'`);
-
- if (! $ctan_dir) {
- warn "$0: oops, no CTAN directory for $me, fix fix\n";
- return ();
- }
- $ret{"CTANdir"} = $ctan_dir;
-
- return %ret;
-}
-
-
-
-# 0 if files are the same, 1 if they are different.
-#
-sub files_differ
-{
- my ($tl_file,$ctan_file) = @_;
-#warn "comparing $tl_file $ctan_file\n";
-
- my $different = 0;
- if (-s $tl_file != -s $ctan_file) {
- # sometimes what's checked into CTAN vs. TL differs in the eol
- # conventions. Don't worry about that.
- if (system ("diff -q --strip-trailing-cr $tl_file $ctan_file >/dev/null")
- != 0) {
- $different = 1;
- }
- }
-
- return $different;
-}